@strapi/admin 5.0.0-alpha.3 → 5.0.0-alpha.4

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.
Files changed (208) hide show
  1. package/dist/admin/{AdminSeatInfo-RaHBmrod.mjs → AdminSeatInfo-G8sTB4TN.mjs} +2 -2
  2. package/dist/admin/{AdminSeatInfo-RaHBmrod.mjs.map → AdminSeatInfo-G8sTB4TN.mjs.map} +1 -1
  3. package/dist/admin/{AdminSeatInfo-TsCaWOLV.js → AdminSeatInfo-jHCKfvy4.js} +2 -2
  4. package/dist/admin/{AdminSeatInfo-TsCaWOLV.js.map → AdminSeatInfo-jHCKfvy4.js.map} +1 -1
  5. package/dist/admin/{ApplicationInfoPage-ma8gBkmC.js → ApplicationInfoPage-DPcd8u-E.js} +3 -3
  6. package/dist/admin/{ApplicationInfoPage-ma8gBkmC.js.map → ApplicationInfoPage-DPcd8u-E.js.map} +1 -1
  7. package/dist/admin/{ApplicationInfoPage-Q9wPZ3rv.mjs → ApplicationInfoPage-rYJxaeKG.mjs} +3 -3
  8. package/dist/admin/{ApplicationInfoPage-Q9wPZ3rv.mjs.map → ApplicationInfoPage-rYJxaeKG.mjs.map} +1 -1
  9. package/dist/admin/{AuthenticatedLayout-xBpE8NA-.js → AuthenticatedLayout-C4p6uMXy.js} +12 -12
  10. package/dist/admin/{AuthenticatedLayout-xBpE8NA-.js.map → AuthenticatedLayout-C4p6uMXy.js.map} +1 -1
  11. package/dist/admin/{AuthenticatedLayout--yP2CRIf.mjs → AuthenticatedLayout-FJd0k59k.mjs} +12 -12
  12. package/dist/admin/{AuthenticatedLayout--yP2CRIf.mjs.map → AuthenticatedLayout-FJd0k59k.mjs.map} +1 -1
  13. package/dist/admin/{ComponentConfigurationPage-hY2EaAYj.js → ComponentConfigurationPage-5UqUF73x.js} +2 -2
  14. package/dist/admin/{ComponentConfigurationPage-hY2EaAYj.js.map → ComponentConfigurationPage-5UqUF73x.js.map} +1 -1
  15. package/dist/admin/{ComponentConfigurationPage-KnpNn9te.mjs → ComponentConfigurationPage-aH3eivWq.mjs} +2 -2
  16. package/dist/admin/{ComponentConfigurationPage-KnpNn9te.mjs.map → ComponentConfigurationPage-aH3eivWq.mjs.map} +1 -1
  17. package/dist/admin/{CreateActionEE-MO4CwmTg.js → CreateActionEE-FShadq9j.js} +2 -2
  18. package/dist/admin/{CreateActionEE-MO4CwmTg.js.map → CreateActionEE-FShadq9j.js.map} +1 -1
  19. package/dist/admin/{CreateActionEE-MS5BO87T.mjs → CreateActionEE-PeDYp0gX.mjs} +2 -2
  20. package/dist/admin/{CreateActionEE-MS5BO87T.mjs.map → CreateActionEE-PeDYp0gX.mjs.map} +1 -1
  21. package/dist/admin/{CreatePage-nXCKqLfv.js → CreatePage--AtUMCaU.js} +2 -2
  22. package/dist/admin/{CreatePage-nXCKqLfv.js.map → CreatePage--AtUMCaU.js.map} +1 -1
  23. package/dist/admin/{CreatePage-TuxqMr0o.mjs → CreatePage-XuobAWJK.mjs} +6 -6
  24. package/dist/admin/{CreatePage-TuxqMr0o.mjs.map → CreatePage-XuobAWJK.mjs.map} +1 -1
  25. package/dist/admin/{CreatePage-qT-aQZxS.mjs → CreatePage-ZExp8rHA.mjs} +2 -2
  26. package/dist/admin/{CreatePage-qT-aQZxS.mjs.map → CreatePage-ZExp8rHA.mjs.map} +1 -1
  27. package/dist/admin/{CreatePage-rPWvvWs7.js → CreatePage-btStJe_p.js} +2 -2
  28. package/dist/admin/{CreatePage-rPWvvWs7.js.map → CreatePage-btStJe_p.js.map} +1 -1
  29. package/dist/admin/{CreatePage-WpCjH5Y_.js → CreatePage-dQ2vPAka.js} +6 -6
  30. package/dist/admin/{CreatePage-WpCjH5Y_.js.map → CreatePage-dQ2vPAka.js.map} +1 -1
  31. package/dist/admin/{CreatePage-atcxK0nv.mjs → CreatePage-vUR8c8Wi.mjs} +2 -2
  32. package/dist/admin/{CreatePage-atcxK0nv.mjs.map → CreatePage-vUR8c8Wi.mjs.map} +1 -1
  33. package/dist/admin/{CreateView-Tdx1lvOB.js → CreateView-L98QJ908.js} +2 -2
  34. package/dist/admin/{CreateView-Tdx1lvOB.js.map → CreateView-L98QJ908.js.map} +1 -1
  35. package/dist/admin/{CreateView-2p_vypXq.js → CreateView-Ry0jxIm8.js} +2 -2
  36. package/dist/admin/{CreateView-2p_vypXq.js.map → CreateView-Ry0jxIm8.js.map} +1 -1
  37. package/dist/admin/{CreateView-e7AQd7tP.mjs → CreateView-UAXKJ1XB.mjs} +2 -2
  38. package/dist/admin/{CreateView-e7AQd7tP.mjs.map → CreateView-UAXKJ1XB.mjs.map} +1 -1
  39. package/dist/admin/{CreateView-C1q22Lvk.mjs → CreateView-n-X-ip9A.mjs} +2 -2
  40. package/dist/admin/{CreateView-C1q22Lvk.mjs.map → CreateView-n-X-ip9A.mjs.map} +1 -1
  41. package/dist/admin/{EditConfigurationPage-elMqHM_A.mjs → EditConfigurationPage-7aqUfM-_.mjs} +2 -2
  42. package/dist/admin/{EditConfigurationPage-elMqHM_A.mjs.map → EditConfigurationPage-7aqUfM-_.mjs.map} +1 -1
  43. package/dist/admin/{EditConfigurationPage-lf0uG4_2.js → EditConfigurationPage-9hpFgyVd.js} +2 -2
  44. package/dist/admin/{EditConfigurationPage-lf0uG4_2.js.map → EditConfigurationPage-9hpFgyVd.js.map} +1 -1
  45. package/dist/admin/{EditPage-erGEYjBw.mjs → EditPage-5_mPjbp1.mjs} +4 -4
  46. package/dist/admin/{EditPage-erGEYjBw.mjs.map → EditPage-5_mPjbp1.mjs.map} +1 -1
  47. package/dist/admin/{EditPage-Ef0Fslnn.js → EditPage-7p0wMhRr.js} +4 -4
  48. package/dist/admin/{EditPage-Ef0Fslnn.js.map → EditPage-7p0wMhRr.js.map} +1 -1
  49. package/dist/admin/{EditPage-Pve0dLk9.js → EditPage-FfXtsX6I.js} +6 -6
  50. package/dist/admin/{EditPage-Pve0dLk9.js.map → EditPage-FfXtsX6I.js.map} +1 -1
  51. package/dist/admin/{EditPage-OeI53g45.mjs → EditPage-NIhP9MDK.mjs} +3 -3
  52. package/dist/admin/{EditPage-OeI53g45.mjs.map → EditPage-NIhP9MDK.mjs.map} +1 -1
  53. package/dist/admin/{EditPage-UJJ2TqBc.js → EditPage-PKgsIJsU.js} +3 -3
  54. package/dist/admin/{EditPage-UJJ2TqBc.js.map → EditPage-PKgsIJsU.js.map} +1 -1
  55. package/dist/admin/{EditPage-eR-YN8hj.mjs → EditPage-T3344ZeF.mjs} +3 -3
  56. package/dist/admin/{EditPage-eR-YN8hj.mjs.map → EditPage-T3344ZeF.mjs.map} +1 -1
  57. package/dist/admin/{EditPage-tC47Sw_P.js → EditPage-icpAlX0U.js} +3 -3
  58. package/dist/admin/{EditPage-tC47Sw_P.js.map → EditPage-icpAlX0U.js.map} +1 -1
  59. package/dist/admin/{EditPage-h8lmVUEA.mjs → EditPage-zuPfy7bP.mjs} +6 -6
  60. package/dist/admin/{EditPage-h8lmVUEA.mjs.map → EditPage-zuPfy7bP.mjs.map} +1 -1
  61. package/dist/admin/{EditView-eySlKWYf.js → EditView-6orvVYcs.js} +2 -2
  62. package/dist/admin/{EditView-eySlKWYf.js.map → EditView-6orvVYcs.js.map} +1 -1
  63. package/dist/admin/{EditView-x1qgWntY.mjs → EditView-Py-98_8F.mjs} +2 -2
  64. package/dist/admin/{EditView-x1qgWntY.mjs.map → EditView-Py-98_8F.mjs.map} +1 -1
  65. package/dist/admin/{EditViewPage-_9OVPk8U.js → EditViewPage-b8B7crGF.js} +2 -2
  66. package/dist/admin/{EditViewPage-_9OVPk8U.js.map → EditViewPage-b8B7crGF.js.map} +1 -1
  67. package/dist/admin/{EditViewPage-MF0jfabM.js → EditViewPage-bvSm02vo.js} +2 -2
  68. package/dist/admin/{EditViewPage-MF0jfabM.js.map → EditViewPage-bvSm02vo.js.map} +1 -1
  69. package/dist/admin/{EditViewPage--KlNP7xz.mjs → EditViewPage-m8eq8b5B.mjs} +2 -2
  70. package/dist/admin/{EditViewPage--KlNP7xz.mjs.map → EditViewPage-m8eq8b5B.mjs.map} +1 -1
  71. package/dist/admin/{EditViewPage-NC42P37Y.mjs → EditViewPage-taqlSy8-.mjs} +2 -2
  72. package/dist/admin/{EditViewPage-NC42P37Y.mjs.map → EditViewPage-taqlSy8-.mjs.map} +1 -1
  73. package/dist/admin/{EventsTable-FclswYEC.js → EventsTable-PkxRHECw.js} +2 -2
  74. package/dist/admin/{EventsTable-FclswYEC.js.map → EventsTable-PkxRHECw.js.map} +1 -1
  75. package/dist/admin/{EventsTable-sl9Ii-zk.mjs → EventsTable-nHKCiGbY.mjs} +2 -2
  76. package/dist/admin/{EventsTable-sl9Ii-zk.mjs.map → EventsTable-nHKCiGbY.mjs.map} +1 -1
  77. package/dist/admin/{Filters-WmczcUjA.mjs → Filters-8DH_AqD9.mjs} +2 -2
  78. package/dist/admin/{Filters-WmczcUjA.mjs.map → Filters-8DH_AqD9.mjs.map} +1 -1
  79. package/dist/admin/{Filters-xCY3Scq4.js → Filters-ogIU7Q6e.js} +2 -2
  80. package/dist/admin/{Filters-xCY3Scq4.js.map → Filters-ogIU7Q6e.js.map} +1 -1
  81. package/dist/admin/{Form-4WnSgaHv.mjs → Form-qYMSW-OI.mjs} +2 -2
  82. package/dist/admin/{Form-4WnSgaHv.mjs.map → Form-qYMSW-OI.mjs.map} +1 -1
  83. package/dist/admin/{Form-KkSKnRfU.js → Form-ykqsO6fm.js} +2 -2
  84. package/dist/admin/{Form-KkSKnRfU.js.map → Form-ykqsO6fm.js.map} +1 -1
  85. package/dist/admin/{HomePage-c066MxgP.mjs → HomePage-1pjv0BI8.mjs} +3 -3
  86. package/dist/admin/{HomePage-c066MxgP.mjs.map → HomePage-1pjv0BI8.mjs.map} +1 -1
  87. package/dist/admin/{HomePage-rnxrKLBm.js → HomePage-3V4WbE7J.js} +3 -3
  88. package/dist/admin/{HomePage-rnxrKLBm.js.map → HomePage-3V4WbE7J.js.map} +1 -1
  89. package/dist/admin/{HomePage-ruRmxUmi.mjs → HomePage-Kc_uEvV-.mjs} +3 -3
  90. package/dist/admin/{HomePage-ruRmxUmi.mjs.map → HomePage-Kc_uEvV-.mjs.map} +1 -1
  91. package/dist/admin/{HomePage-lw1r2If1.js → HomePage-OlYV50mz.js} +3 -3
  92. package/dist/admin/{HomePage-lw1r2If1.js.map → HomePage-OlYV50mz.js.map} +1 -1
  93. package/dist/admin/{Layout-IkzS-9jW.mjs → Layout-DpiBAhal.mjs} +3 -3
  94. package/dist/admin/{Layout-IkzS-9jW.mjs.map → Layout-DpiBAhal.mjs.map} +1 -1
  95. package/dist/admin/{Layout--4O1STTS.js → Layout-Drko3mHh.js} +3 -3
  96. package/dist/admin/{Layout--4O1STTS.js.map → Layout-Drko3mHh.js.map} +1 -1
  97. package/dist/admin/{Layout-LPeuunW1.js → Layout-G57F6Yr1.js} +2 -2
  98. package/dist/admin/{Layout-LPeuunW1.js.map → Layout-G57F6Yr1.js.map} +1 -1
  99. package/dist/admin/{Layout-12gUdjvi.mjs → Layout-ipua3uHy.mjs} +2 -2
  100. package/dist/admin/{Layout-12gUdjvi.mjs.map → Layout-ipua3uHy.mjs.map} +1 -1
  101. package/dist/admin/{ListConfigurationPage-Sj0Fbune.js → ListConfigurationPage-fR6bfJTF.js} +2 -2
  102. package/dist/admin/{ListConfigurationPage-Sj0Fbune.js.map → ListConfigurationPage-fR6bfJTF.js.map} +1 -1
  103. package/dist/admin/{ListConfigurationPage-aVwnEajq.mjs → ListConfigurationPage-vJzC-kba.mjs} +2 -2
  104. package/dist/admin/{ListConfigurationPage-aVwnEajq.mjs.map → ListConfigurationPage-vJzC-kba.mjs.map} +1 -1
  105. package/dist/admin/{ListPage-fgcVicZB.mjs → ListPage-0ZSyBi8x.mjs} +3 -3
  106. package/dist/admin/{ListPage-fgcVicZB.mjs.map → ListPage-0ZSyBi8x.mjs.map} +1 -1
  107. package/dist/admin/{ListPage-pbpYBzDZ.mjs → ListPage-9heSiDbD.mjs} +3 -3
  108. package/dist/admin/{ListPage-pbpYBzDZ.mjs.map → ListPage-9heSiDbD.mjs.map} +1 -1
  109. package/dist/admin/{ListPage-cjKaeLgt.mjs → ListPage-FY6b3WdF.mjs} +2 -2
  110. package/dist/admin/{ListPage-cjKaeLgt.mjs.map → ListPage-FY6b3WdF.mjs.map} +1 -1
  111. package/dist/admin/{ListPage-pcklRUos.js → ListPage-LLm7jeMJ.js} +4 -4
  112. package/dist/admin/{ListPage-pcklRUos.js.map → ListPage-LLm7jeMJ.js.map} +1 -1
  113. package/dist/admin/{ListPage-Umx66wz5.js → ListPage-NfgDLiTv.js} +7 -7
  114. package/dist/admin/{ListPage-Umx66wz5.js.map → ListPage-NfgDLiTv.js.map} +1 -1
  115. package/dist/admin/{ListPage-udzDwGlH.js → ListPage-PF-K0vRV.js} +3 -3
  116. package/dist/admin/{ListPage-udzDwGlH.js.map → ListPage-PF-K0vRV.js.map} +1 -1
  117. package/dist/admin/{ListPage-pvhgqLCH.js → ListPage-YhzdUuPY.js} +3 -3
  118. package/dist/admin/{ListPage-pvhgqLCH.js.map → ListPage-YhzdUuPY.js.map} +1 -1
  119. package/dist/admin/{ListPage-5Mv-pB4C.js → ListPage-eBRwQOBq.js} +3 -3
  120. package/dist/admin/{ListPage-5Mv-pB4C.js.map → ListPage-eBRwQOBq.js.map} +1 -1
  121. package/dist/admin/{ListPage-4-8fscdP.js → ListPage-hyHTGust.js} +2 -2
  122. package/dist/admin/{ListPage-4-8fscdP.js.map → ListPage-hyHTGust.js.map} +1 -1
  123. package/dist/admin/{ListPage-J7j1MewO.mjs → ListPage-k7Cm8qlS.mjs} +7 -7
  124. package/dist/admin/{ListPage-J7j1MewO.mjs.map → ListPage-k7Cm8qlS.mjs.map} +1 -1
  125. package/dist/admin/{ListPage-w59EHkU5.mjs → ListPage-q5CzNEts.mjs} +3 -3
  126. package/dist/admin/{ListPage-w59EHkU5.mjs.map → ListPage-q5CzNEts.mjs.map} +1 -1
  127. package/dist/admin/{ListPage-YQEYg_px.mjs → ListPage-u0H0CObE.mjs} +4 -4
  128. package/dist/admin/{ListPage-YQEYg_px.mjs.map → ListPage-u0H0CObE.mjs.map} +1 -1
  129. package/dist/admin/{ListView-n1aKpVDI.js → ListView-5cUHtatI.js} +2 -2
  130. package/dist/admin/{ListView-n1aKpVDI.js.map → ListView-5cUHtatI.js.map} +1 -1
  131. package/dist/admin/{ListView-j2r_9ISi.js → ListView-ZrssEOAH.js} +2 -2
  132. package/dist/admin/{ListView-j2r_9ISi.js.map → ListView-ZrssEOAH.js.map} +1 -1
  133. package/dist/admin/{ListView-r5ixmUC5.mjs → ListView-he-cDEr8.mjs} +2 -2
  134. package/dist/admin/{ListView-r5ixmUC5.mjs.map → ListView-he-cDEr8.mjs.map} +1 -1
  135. package/dist/admin/{ListView-kGivEizN.mjs → ListView-wtrnAeIs.mjs} +2 -2
  136. package/dist/admin/{ListView-kGivEizN.mjs.map → ListView-wtrnAeIs.mjs.map} +1 -1
  137. package/dist/admin/{ListViewPage-P945_1O5.js → ListViewPage--usbPNMW.js} +6 -6
  138. package/dist/admin/{ListViewPage-P945_1O5.js.map → ListViewPage--usbPNMW.js.map} +1 -1
  139. package/dist/admin/{ListViewPage-TJbHzMdV.mjs → ListViewPage-fcwyHB4o.mjs} +6 -6
  140. package/dist/admin/{ListViewPage-TJbHzMdV.mjs.map → ListViewPage-fcwyHB4o.mjs.map} +1 -1
  141. package/dist/admin/{Login-0X6MwipF.mjs → Login-JhiQkX0g.mjs} +2 -2
  142. package/dist/admin/{Login-0X6MwipF.mjs.map → Login-JhiQkX0g.mjs.map} +1 -1
  143. package/dist/admin/{Login-z6SxPtlF.js → Login-ge1q7Ao9.js} +2 -2
  144. package/dist/admin/{Login-z6SxPtlF.js.map → Login-ge1q7Ao9.js.map} +1 -1
  145. package/dist/admin/{MagicLinkEE-OoAnOb7G.mjs → MagicLinkEE-6fksiP2N.mjs} +3 -3
  146. package/dist/admin/{MagicLinkEE-OoAnOb7G.mjs.map → MagicLinkEE-6fksiP2N.mjs.map} +1 -1
  147. package/dist/admin/{MagicLinkEE-Y6HYUQfj.js → MagicLinkEE-HZRvA15-.js} +3 -3
  148. package/dist/admin/{MagicLinkEE-Y6HYUQfj.js.map → MagicLinkEE-HZRvA15-.js.map} +1 -1
  149. package/dist/admin/{MarketplacePage-PYAB5VYz.mjs → MarketplacePage-BhzDMBT-.mjs} +2 -2
  150. package/dist/admin/{MarketplacePage-PYAB5VYz.mjs.map → MarketplacePage-BhzDMBT-.mjs.map} +1 -1
  151. package/dist/admin/{MarketplacePage-7fNWKnG0.js → MarketplacePage-jeaqEHfo.js} +2 -2
  152. package/dist/admin/{MarketplacePage-7fNWKnG0.js.map → MarketplacePage-jeaqEHfo.js.map} +1 -1
  153. package/dist/admin/{ReviewWorkflowsColumn-6zZJluSU.mjs → ReviewWorkflowsColumn-BdkHPnDo.mjs} +2 -2
  154. package/dist/admin/{ReviewWorkflowsColumn-6zZJluSU.mjs.map → ReviewWorkflowsColumn-BdkHPnDo.mjs.map} +1 -1
  155. package/dist/admin/{ReviewWorkflowsColumn-NVi2rQul.js → ReviewWorkflowsColumn-xNjqgu-L.js} +2 -2
  156. package/dist/admin/{ReviewWorkflowsColumn-NVi2rQul.js.map → ReviewWorkflowsColumn-xNjqgu-L.js.map} +1 -1
  157. package/dist/admin/{SelectRoles-cVDrVL5d.mjs → SelectRoles--7dfmawm.mjs} +3 -3
  158. package/dist/admin/{SelectRoles-cVDrVL5d.mjs.map → SelectRoles--7dfmawm.mjs.map} +1 -1
  159. package/dist/admin/{SelectRoles-x4F6UwAi.js → SelectRoles-JxYKvga9.js} +3 -3
  160. package/dist/admin/{SelectRoles-x4F6UwAi.js.map → SelectRoles-JxYKvga9.js.map} +1 -1
  161. package/dist/admin/{SingleSignOnPage-MXM2dl1r.js → SingleSignOnPage-APC1hAX2.js} +2 -2
  162. package/dist/admin/{SingleSignOnPage-MXM2dl1r.js.map → SingleSignOnPage-APC1hAX2.js.map} +1 -1
  163. package/dist/admin/{SingleSignOnPage-qyob98fd.mjs → SingleSignOnPage-rKeiHpGS.mjs} +2 -2
  164. package/dist/admin/{SingleSignOnPage-qyob98fd.mjs.map → SingleSignOnPage-rKeiHpGS.mjs.map} +1 -1
  165. package/dist/admin/{Table-L9ox45fi.js → Table-BKVants3.js} +2 -2
  166. package/dist/admin/{Table-L9ox45fi.js.map → Table-BKVants3.js.map} +1 -1
  167. package/dist/admin/{Table-GO4n7QXV.mjs → Table-idNir8r9.mjs} +2 -2
  168. package/dist/admin/{Table-GO4n7QXV.mjs.map → Table-idNir8r9.mjs.map} +1 -1
  169. package/dist/admin/{TokenTypeSelect-mlkqk9MH.js → TokenTypeSelect-Y6C3wEJm.js} +2 -2
  170. package/dist/admin/{TokenTypeSelect-mlkqk9MH.js.map → TokenTypeSelect-Y6C3wEJm.js.map} +1 -1
  171. package/dist/admin/{TokenTypeSelect-IMMoVNb1.mjs → TokenTypeSelect-k_R6xVFw.mjs} +2 -2
  172. package/dist/admin/{TokenTypeSelect-IMMoVNb1.mjs.map → TokenTypeSelect-k_R6xVFw.mjs.map} +1 -1
  173. package/dist/admin/{UseCasePage-iGGqfq7-.js → UseCasePage-63kprMhe.js} +2 -2
  174. package/dist/admin/{UseCasePage-iGGqfq7-.js.map → UseCasePage-63kprMhe.js.map} +1 -1
  175. package/dist/admin/{UseCasePage-QSUB-KqK.mjs → UseCasePage-eOIMEIRP.mjs} +2 -2
  176. package/dist/admin/{UseCasePage-QSUB-KqK.mjs.map → UseCasePage-eOIMEIRP.mjs.map} +1 -1
  177. package/dist/admin/{constants-ePjaxS4h.js → constants-GzcRsyWk.js} +2 -2
  178. package/dist/admin/{constants-ePjaxS4h.js.map → constants-GzcRsyWk.js.map} +1 -1
  179. package/dist/admin/{constants-VMWcn5Dg.mjs → constants-OqgYP6sX.mjs} +3 -3
  180. package/dist/admin/{constants-VMWcn5Dg.mjs.map → constants-OqgYP6sX.mjs.map} +1 -1
  181. package/dist/admin/{constants-7TD-JFW-.mjs → constants-X5ozLqHT.mjs} +2 -2
  182. package/dist/admin/{constants-7TD-JFW-.mjs.map → constants-X5ozLqHT.mjs.map} +1 -1
  183. package/dist/admin/{constants-eV26e_2a.js → constants-zUoXz50h.js} +3 -3
  184. package/dist/admin/{constants-eV26e_2a.js.map → constants-zUoXz50h.js.map} +1 -1
  185. package/dist/admin/{index--h1ljeG8.mjs → index-Sd8uo7mE.mjs} +36 -36
  186. package/dist/admin/{index--h1ljeG8.mjs.map → index-Sd8uo7mE.mjs.map} +1 -1
  187. package/dist/admin/{index-Xcv2DEB8.js → index-_fZT3TVe.js} +36 -36
  188. package/dist/admin/{index-Xcv2DEB8.js.map → index-_fZT3TVe.js.map} +1 -1
  189. package/dist/admin/index.js +1 -1
  190. package/dist/admin/index.mjs +1 -1
  191. package/dist/admin/{useAdminRoles-gR2hyMNd.mjs → useAdminRoles-YT1f2LGL.mjs} +2 -2
  192. package/dist/admin/{useAdminRoles-gR2hyMNd.mjs.map → useAdminRoles-YT1f2LGL.mjs.map} +1 -1
  193. package/dist/admin/{useAdminRoles-2R5oKMoO.js → useAdminRoles-pS_ZatAB.js} +2 -2
  194. package/dist/admin/{useAdminRoles-2R5oKMoO.js.map → useAdminRoles-pS_ZatAB.js.map} +1 -1
  195. package/dist/admin/{useLicenseLimitNotification-SSUn-Y_I.mjs → useLicenseLimitNotification-EXzXTEr3.mjs} +2 -2
  196. package/dist/admin/{useLicenseLimitNotification-SSUn-Y_I.mjs.map → useLicenseLimitNotification-EXzXTEr3.mjs.map} +1 -1
  197. package/dist/admin/{useLicenseLimitNotification-wFWLFjgU.js → useLicenseLimitNotification-KDK7jUFG.js} +2 -2
  198. package/dist/admin/{useLicenseLimitNotification-wFWLFjgU.js.map → useLicenseLimitNotification-KDK7jUFG.js.map} +1 -1
  199. package/dist/admin/{useReviewWorkflows-b64v93dC.js → useReviewWorkflows-2ubos26m.js} +2 -2
  200. package/dist/admin/{useReviewWorkflows-b64v93dC.js.map → useReviewWorkflows-2ubos26m.js.map} +1 -1
  201. package/dist/admin/{useReviewWorkflows-5xeAwxah.mjs → useReviewWorkflows-vIYhJ1WA.mjs} +2 -2
  202. package/dist/admin/{useReviewWorkflows-5xeAwxah.mjs.map → useReviewWorkflows-vIYhJ1WA.mjs.map} +1 -1
  203. package/dist/admin/{validateWorkflow-nIbqjAha.mjs → validateWorkflow-KQMhiXda.mjs} +2 -2
  204. package/dist/admin/{validateWorkflow-nIbqjAha.mjs.map → validateWorkflow-KQMhiXda.mjs.map} +1 -1
  205. package/dist/admin/{validateWorkflow-28G5p4rG.js → validateWorkflow-dAaScNrW.js} +2 -2
  206. package/dist/admin/{validateWorkflow-28G5p4rG.js.map → validateWorkflow-dAaScNrW.js.map} +1 -1
  207. package/dist/package.json.d.ts +10 -10
  208. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"Filters-WmczcUjA.mjs","sources":["../../admin/src/constants/filters.ts","../../admin/src/components/Filters.tsx"],"sourcesContent":["import type { EntityService } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\n/**\n * @description designed to be parsed by formatMessage from react-intl\n * then passed to a Select component.\n */\ninterface FilterOption {\n value: EntityService.Params.Filters.Operator.Where;\n label: MessageDescriptor;\n}\n\n/**\n * @description these are shared by everyone\n */\nconst BASE_FILTERS = [\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$null',\n defaultMessage: 'is null',\n },\n value: '$null',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notNull',\n defaultMessage: 'is not null',\n },\n value: '$notNull',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are numerical incl. dates.\n */\nconst NUMERIC_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gt',\n defaultMessage: 'is greater than',\n },\n value: '$gt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gte',\n defaultMessage: 'is greater than or equal to',\n },\n value: '$gte',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lt',\n defaultMessage: 'is less than',\n },\n value: '$lt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lte',\n defaultMessage: 'is less than or equal to',\n },\n value: '$lte',\n },\n] satisfies FilterOption[];\n\nconst IS_SENSITIVE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$eqi',\n defaultMessage: 'is (case insensitive)',\n },\n value: '$eqi',\n },\n\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$nei',\n defaultMessage: 'is not (case insensitive)',\n },\n value: '$nei',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are strings for partial looking.\n */\nconst CONTAINS_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$contains',\n defaultMessage: 'contains',\n },\n value: '$contains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$containsi',\n defaultMessage: 'contains (case insensitive)',\n },\n value: '$containsi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContains',\n defaultMessage: 'not contains',\n },\n value: '$notContains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContainsi',\n defaultMessage: 'not contains (case insensitive)',\n },\n value: '$notContainsi',\n },\n] satisfies FilterOption[];\n\n/**\n * @description only used on string attributes.\n */\nconst STRING_PARSE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWith',\n defaultMessage: 'starts with',\n },\n value: '$startsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWithi',\n defaultMessage: 'starts with (case insensitive)',\n },\n value: '$startsWithi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWith',\n defaultMessage: 'ends with',\n },\n value: '$endsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWithi',\n defaultMessage: 'ends with (case insensitive)',\n },\n value: '$endsWithi',\n },\n] satisfies FilterOption[];\n\nexport {\n BASE_FILTERS,\n NUMERIC_FILTERS,\n IS_SENSITIVE_FILTERS,\n CONTAINS_FILTERS,\n STRING_PARSE_FILTERS,\n};\nexport type { FilterOption };\n","import * as React from 'react';\n\nimport { Button, Flex, PopoverPrimitives, Tag, useComposedRefs } from '@strapi/design-system';\nimport { Plus, Filter as FilterIcon, Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport {\n BASE_FILTERS,\n CONTAINS_FILTERS,\n FilterOption,\n IS_SENSITIVE_FILTERS,\n NUMERIC_FILTERS,\n STRING_PARSE_FILTERS,\n} from '../constants/filters';\nimport { MainField } from '../content-manager/utils/attributes';\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\nimport { Form, InputProps } from './Form';\nimport { InputRenderer } from './FormInputs/Renderer';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterFormData {\n name: string;\n filter: string;\n value?: string;\n}\n\ninterface FitlersContextValue {\n disabled: boolean;\n onChange: (data: FilterFormData) => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\n triggerNode: HTMLButtonElement | null;\n options: Filters.Filter[];\n}\n\nconst [FiltersProvider, useFilters] = createContext<FitlersContextValue>('Filters');\n\ninterface RootProps\n extends Partial<Pick<FitlersContextValue, 'disabled' | 'onChange' | 'options' | 'open'>> {\n children: React.ReactNode;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst Root = ({\n children,\n disabled = false,\n onChange,\n onOpenChange,\n open: openProp,\n defaultOpen,\n options = [],\n}: RootProps) => {\n const [triggerNode, setTriggerNode] = React.useState<FitlersContextValue['triggerNode']>(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleChange = (data: FilterFormData) => {\n if (onChange) {\n onChange(data);\n }\n };\n\n return (\n <FiltersProvider\n disabled={disabled}\n onChange={handleChange}\n open={open}\n options={options}\n setOpen={setOpen}\n setTriggerNode={setTriggerNode}\n triggerNode={triggerNode}\n >\n {children}\n </FiltersProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst Trigger = React.forwardRef<HTMLButtonElement, Filters.TriggerProps>(\n ({ label }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { setTriggerNode, setOpen } = useFilters('Trigger', ({ setTriggerNode, setOpen }) => ({\n setTriggerNode,\n setOpen,\n }));\n const disabled = useFilters('Trigger', ({ disabled }) => disabled);\n const open = useFilters('Trigger', ({ open }) => open);\n\n const composedRefs = useComposedRefs(forwardedRef, setTriggerNode);\n\n const handleClick = () => setOpen(!open);\n\n return (\n <Button\n variant=\"tertiary\"\n ref={composedRefs}\n startIcon={<FilterIcon />}\n onClick={handleClick}\n size=\"S\"\n disabled={disabled}\n >\n {label || formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nconst PopoverImpl = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n const { formatMessage } = useIntl();\n const open = useFilters('Popover', ({ open }) => open);\n const options = useFilters('Popover', ({ options }) => options);\n const triggerNode = useFilters('Popover', ({ triggerNode }) => triggerNode);\n const setOpen = useFilters('Popover', ({ setOpen }) => setOpen);\n const onChange = useFilters('Popover', ({ onChange }) => onChange);\n\n if (!open || options.length === 0 || !triggerNode) {\n return null;\n }\n\n const handleSubmit = (data: FilterFormData) => {\n if (!data.value) {\n return;\n }\n\n if (onChange) {\n onChange(data);\n }\n\n /**\n * There will ALWAYS be an option because we use the options to create the form data.\n */\n const filterType = options.find((filter) => filter.name === data.name)!.type;\n\n /**\n * If the filter is a relation, we need to nest the filter object,\n * we always use ids to filter relations. But the nested object is\n * the operator & value pair. This value _could_ look like:\n * ```json\n * {\n * \"$eq\": \"1\",\n * }\n * ```\n */\n const operatorValuePairing = {\n [data.filter]: data.value,\n };\n\n const newFilterQuery = {\n ...query.filters,\n $and: [\n ...(query.filters?.$and ?? []),\n {\n [data.name]:\n filterType === 'relation'\n ? {\n id: operatorValuePairing,\n }\n : operatorValuePairing,\n },\n ],\n };\n\n setQuery({ filters: newFilterQuery, page: 1 });\n setOpen(false);\n };\n\n return (\n <PopoverPrimitives.Content\n source={{ current: triggerNode }}\n onDismiss={() => setOpen(false)}\n padding={3}\n spacing={4}\n maxHeight=\"unset\"\n >\n <Form\n method=\"POST\"\n initialValues={\n {\n name: options[0]?.name,\n filter: BASE_FILTERS[0].value,\n } satisfies FilterFormData\n }\n onSubmit={handleSubmit}\n >\n {({ values: formValues, modified, isSubmitting }) => {\n const filter = options.find((filter) => filter.name === formValues.name);\n const Input = filter?.input || InputRenderer;\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2} style={{ minWidth: 184 }}>\n {[\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n name: 'name',\n options: options.map((filter) => ({\n label: filter.label,\n value: filter.name,\n })),\n placholder: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n type: 'enumeration' as const,\n },\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n name: 'filter',\n options:\n filter?.operators ||\n getFilterList(filter).map((opt) => ({\n label: formatMessage(opt.label),\n value: opt.value,\n })),\n placeholder: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n type: 'enumeration' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n {filter &&\n formValues.filter &&\n formValues.filter !== '$null' &&\n formValues.filter !== '$notNull' ? (\n <Input\n {...filter}\n label={null}\n aria-label={filter.label}\n name=\"value\"\n // @ts-expect-error – if type is `custom` then `Input` will be a custom component.\n type={filter.mainField?.type ?? filter.type}\n />\n ) : null}\n <Button\n disabled={!modified || isSubmitting}\n size=\"L\"\n variant=\"secondary\"\n startIcon={<Plus />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Flex>\n );\n }}\n </Form>\n </PopoverPrimitives.Content>\n );\n};\n\n/**\n * Depending on the selected field find the possible filters to apply\n */\nconst getFilterList = (filter?: Filters.Filter): FilterOption[] => {\n if (!filter) {\n return [];\n }\n\n const type = filter.mainField?.type ? filter.mainField.type : filter.type;\n\n switch (type) {\n case 'email':\n case 'text':\n case 'enumeration':\n case 'string': {\n return [\n ...BASE_FILTERS,\n ...IS_SENSITIVE_FILTERS,\n ...CONTAINS_FILTERS,\n ...STRING_PARSE_FILTERS,\n ];\n }\n\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n case 'time':\n case 'date': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS, ...CONTAINS_FILTERS];\n }\n\n case 'datetime': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n\n default:\n return [...BASE_FILTERS, ...IS_SENSITIVE_FILTERS];\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * List\n * -----------------------------------------------------------------------------------------------*/\n\nconst List = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n\n const options = useFilters('List', ({ options }) => options);\n\n const handleClick = (data: FilterFormData) => {\n /**\n * Check the name, operator and value to see if it already exists in the query\n * if it does, remove it.\n */\n const nextFilters = (query?.filters?.$and ?? []).filter((filter) => {\n const [attributeName] = Object.keys(filter);\n if (attributeName !== data.name) {\n return true;\n }\n\n const { type, mainField } = options.find(({ name }) => name === attributeName)!;\n\n if (type === 'relation') {\n const filterObj = filter[attributeName][mainField?.name ?? 'id'];\n\n if (typeof filterObj === 'object') {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n\n return true;\n } else {\n const filterObj = filter[attributeName];\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n });\n\n setQuery({ filters: { $and: nextFilters }, page: 1 });\n };\n\n if (!query?.filters?.$and?.length) {\n return null;\n }\n\n return (\n <>\n {query?.filters?.$and?.map((queryFilter) => {\n const [attributeName] = Object.keys(queryFilter);\n const filter = options.find(({ name }) => name === attributeName);\n const filterObj = queryFilter[attributeName];\n\n if (!filter || typeof filterObj !== 'object' || filterObj === null) {\n return null;\n }\n\n if (filter.type === 'relation') {\n const modelFilter = filterObj[filter.mainField?.name ?? 'id'];\n\n if (typeof modelFilter === 'object') {\n const [operator] = Object.keys(modelFilter);\n const value = modelFilter[operator];\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n\n return null;\n } else {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n /**\n * Something has gone wrong here, because the attribute is not a relation\n * but we have a nested filter object.\n */\n if (typeof value === 'object') {\n return null;\n }\n\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n })}\n </>\n );\n};\n\ninterface AttributeTagProps extends Filters.Filter {\n onClick: (data: FilterFormData) => void;\n operator: string;\n value: string;\n}\n\nconst AttributeTag = ({\n input,\n label,\n mainField,\n name,\n onClick,\n operator,\n options,\n value,\n ...filter\n}: AttributeTagProps) => {\n const { formatMessage, formatDate, formatTime, formatNumber } = useIntl();\n\n const handleClick = () => {\n onClick({ name, value, filter: operator });\n };\n\n const type = mainField?.type ? mainField.type : filter.type;\n\n let formattedValue: string = value;\n\n switch (type) {\n case 'date':\n formattedValue = formatDate(value, { dateStyle: 'full' });\n break;\n case 'datetime':\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n break;\n case 'time':\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n break;\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal':\n formattedValue = formatNumber(Number(value));\n break;\n }\n\n // Handle custom input\n if (input && options) {\n // If the custom input has an options array, find the option with a customValue matching the query value\n const selectedOption = options.find((option) => {\n return (typeof option === 'string' ? option : option.value) === value;\n });\n\n formattedValue = selectedOption\n ? typeof selectedOption === 'string'\n ? selectedOption\n : selectedOption.label ?? selectedOption.value\n : value;\n }\n\n const content = `${label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${operator !== '$null' && operator !== '$notNull' ? formattedValue : ''}`;\n\n return (\n <Tag padding={1} onClick={handleClick} icon={<Cross />}>\n {content}\n </Tag>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst Filters = {\n List,\n Popover: PopoverImpl,\n Root,\n Trigger,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Filters {\n export interface Filter {\n input?: React.ComponentType<ValueInputProps>;\n label: string;\n /**\n * the name of the attribute we use to display the actual name e.g. relations\n * are just ids, so we use the mainField to display something meaninginful by\n * looking at the target's schema\n */\n mainField?: MainField;\n name: string;\n operators?: Array<{\n label: string;\n value: string;\n }>;\n options?: Array<{ label?: string; value: string }> | string[];\n type: InputProps['type'] | 'relation' | 'custom';\n }\n\n export interface ValueInputProps extends Omit<Filter, 'label'> {\n ['aria-label']: string;\n }\n\n export type Props = RootProps;\n\n export interface TriggerProps {\n label?: string;\n }\n\n export interface Query {\n filters?: {\n /**\n * Typically, a filter will be:\n * ```ts\n * {\n * [attributeName]: {\n * [operator]: value\n * }\n * }\n * ```\n * However, for relation items it becomes more nested.\n * ```ts\n * {\n * [attributeName]: {\n * [relationTargetAttribute]: {\n * [operator]: value\n * }\n * }\n * }\n */\n $and?: Array<Record<string, Record<string, string | Record<string, string>>>>;\n };\n page?: number;\n }\n}\n\nexport { Filters };\n"],"names":["setTriggerNode","setOpen","disabled","open","FilterIcon","options","triggerNode","onChange","filter"],"mappings":";;;;;;;;;AAeA,MAAM,YAAe,GAAA;AAAA,EACnB;AAAA,IACE,KAAO,EAAA,EAAE,EAAI,EAAA,2CAAA,EAA6C,gBAAgB,IAAK,EAAA;AAAA,IAC/E,KAAO,EAAA,KAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA,EAAE,EAAI,EAAA,2CAAA,EAA6C,gBAAgB,QAAS,EAAA;AAAA,IACnF,KAAO,EAAA,KAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,6CAAA;AAAA,MACJ,cAAgB,EAAA,SAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,OAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,gDAAA;AAAA,MACJ,cAAgB,EAAA,aAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,UAAA;AAAA,GACT;AACF,CAAA,CAAA;AAKA,MAAM,eAAkB,GAAA;AAAA,EACtB;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,2CAAA;AAAA,MACJ,cAAgB,EAAA,iBAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,KAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,4CAAA;AAAA,MACJ,cAAgB,EAAA,6BAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,MAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,2CAAA;AAAA,MACJ,cAAgB,EAAA,cAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,KAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,4CAAA;AAAA,MACJ,cAAgB,EAAA,0BAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,MAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,MAAM,oBAAuB,GAAA;AAAA,EAC3B;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,4CAAA;AAAA,MACJ,cAAgB,EAAA,uBAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,MAAA;AAAA,GACT;AAAA,EAEA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,4CAAA;AAAA,MACJ,cAAgB,EAAA,2BAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,MAAA;AAAA,GACT;AACF,CAAA,CAAA;AAKA,MAAM,gBAAmB,GAAA;AAAA,EACvB;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,iDAAA;AAAA,MACJ,cAAgB,EAAA,UAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,WAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,kDAAA;AAAA,MACJ,cAAgB,EAAA,6BAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,YAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,oDAAA;AAAA,MACJ,cAAgB,EAAA,cAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,cAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,qDAAA;AAAA,MACJ,cAAgB,EAAA,iCAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,eAAA;AAAA,GACT;AACF,CAAA,CAAA;AAKA,MAAM,oBAAuB,GAAA;AAAA,EAC3B;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,mDAAA;AAAA,MACJ,cAAgB,EAAA,aAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,aAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,oDAAA;AAAA,MACJ,cAAgB,EAAA,gCAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,cAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,iDAAA;AAAA,MACJ,cAAgB,EAAA,WAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,WAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,kDAAA;AAAA,MACJ,cAAgB,EAAA,8BAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,YAAA;AAAA,GACT;AACF,CAAA;;ACpHA,MAAM,CAAC,eAAA,EAAiB,UAAU,CAAA,GAAI,cAAmC,SAAS,CAAA,CAAA;AASlF,MAAM,OAAO,CAAC;AAAA,EACZ,QAAA;AAAA,EACA,QAAW,GAAA,KAAA;AAAA,EACX,QAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAM,EAAA,QAAA;AAAA,EACN,WAAA;AAAA,EACA,UAAU,EAAC;AACb,CAAiB,KAAA;AACf,EAAA,MAAM,CAAC,WAAa,EAAA,cAAc,CAAI,GAAA,KAAA,CAAM,SAA6C,IAAI,CAAA,CAAA;AAC7F,EAAA,MAAM,CAAC,IAAA,GAAO,KAAO,EAAA,OAAO,IAAI,oBAAqB,CAAA;AAAA,IACnD,IAAM,EAAA,QAAA;AAAA,IACN,WAAa,EAAA,WAAA;AAAA,IACb,QAAU,EAAA,YAAA;AAAA,GACX,CAAA,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,CAAC,IAAyB,KAAA;AAC7C,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAAA,KACf;AAAA,GACF,CAAA;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,QAAU,EAAA,YAAA;AAAA,MACV,IAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MAEC,QAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ,CAAA,CAAA;AAMA,MAAM,UAAU,KAAM,CAAA,UAAA;AAAA,EACpB,CAAC,EAAE,KAAM,EAAA,EAAG,YAAiB,KAAA;AAC3B,IAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAClC,IAAA,MAAM,EAAE,cAAA,EAAgB,OAAQ,EAAA,GAAI,UAAW,CAAA,SAAA,EAAW,CAAC,EAAE,cAAAA,EAAAA,eAAAA,EAAgB,OAAAC,EAAAA,QAAAA,EAAe,MAAA;AAAA,MAC1F,cAAAD,EAAAA,eAAAA;AAAA,MACA,OAAAC,EAAAA,QAAAA;AAAA,KACA,CAAA,CAAA,CAAA;AACF,IAAM,MAAA,QAAA,GAAW,WAAW,SAAW,EAAA,CAAC,EAAE,QAAAC,EAAAA,SAAAA,OAAeA,SAAQ,CAAA,CAAA;AACjE,IAAM,MAAA,IAAA,GAAO,WAAW,SAAW,EAAA,CAAC,EAAE,IAAAC,EAAAA,KAAAA,OAAWA,KAAI,CAAA,CAAA;AAErD,IAAM,MAAA,YAAA,GAAe,eAAgB,CAAA,YAAA,EAAc,cAAc,CAAA,CAAA;AAEjE,IAAA,MAAM,WAAc,GAAA,MAAM,OAAQ,CAAA,CAAC,IAAI,CAAA,CAAA;AAEvC,IACE,uBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,UAAA;AAAA,QACR,GAAK,EAAA,YAAA;AAAA,QACL,SAAA,sBAAYC,MAAW,EAAA,EAAA,CAAA;AAAA,QACvB,OAAS,EAAA,WAAA;AAAA,QACT,IAAK,EAAA,GAAA;AAAA,QACL,QAAA;AAAA,QAEC,mBAAS,aAAc,CAAA,EAAE,IAAI,mBAAqB,EAAA,cAAA,EAAgB,WAAW,CAAA;AAAA,OAAA;AAAA,KAChF,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAMA,MAAM,cAAc,MAAM;AACxB,EAAA,MAAM,CAAC,EAAE,KAAA,EAAS,EAAA,QAAQ,IAAI,cAA8B,EAAA,CAAA;AAC5D,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,OAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,IAAA,GAAO,WAAW,SAAW,EAAA,CAAC,EAAE,IAAAD,EAAAA,KAAAA,OAAWA,KAAI,CAAA,CAAA;AACrD,EAAM,MAAA,OAAA,GAAU,WAAW,SAAW,EAAA,CAAC,EAAE,OAAAE,EAAAA,QAAAA,OAAcA,QAAO,CAAA,CAAA;AAC9D,EAAM,MAAA,WAAA,GAAc,WAAW,SAAW,EAAA,CAAC,EAAE,WAAAC,EAAAA,YAAAA,OAAkBA,YAAW,CAAA,CAAA;AAC1E,EAAM,MAAA,OAAA,GAAU,WAAW,SAAW,EAAA,CAAC,EAAE,OAAAL,EAAAA,QAAAA,OAAcA,QAAO,CAAA,CAAA;AAC9D,EAAM,MAAA,QAAA,GAAW,WAAW,SAAW,EAAA,CAAC,EAAE,QAAAM,EAAAA,SAAAA,OAAeA,SAAQ,CAAA,CAAA;AAEjE,EAAA,IAAI,CAAC,IAAQ,IAAA,OAAA,CAAQ,MAAW,KAAA,CAAA,IAAK,CAAC,WAAa,EAAA;AACjD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAM,MAAA,YAAA,GAAe,CAAC,IAAyB,KAAA;AAC7C,IAAI,IAAA,CAAC,KAAK,KAAO,EAAA;AACf,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAAA,KACf;AAKA,IAAM,MAAA,UAAA,GAAa,QAAQ,IAAK,CAAA,CAAC,WAAW,MAAO,CAAA,IAAA,KAAS,IAAK,CAAA,IAAI,CAAG,CAAA,IAAA,CAAA;AAYxE,IAAA,MAAM,oBAAuB,GAAA;AAAA,MAC3B,CAAC,IAAA,CAAK,MAAM,GAAG,IAAK,CAAA,KAAA;AAAA,KACtB,CAAA;AAEA,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,GAAG,KAAM,CAAA,OAAA;AAAA,MACT,IAAM,EAAA;AAAA,QACJ,GAAI,KAAA,CAAM,OAAS,EAAA,IAAA,IAAQ,EAAC;AAAA,QAC5B;AAAA,UACE,CAAC,IAAA,CAAK,IAAI,GACR,eAAe,UACX,GAAA;AAAA,YACE,EAAI,EAAA,oBAAA;AAAA,WAEN,GAAA,oBAAA;AAAA,SACR;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAA,QAAA,CAAS,EAAE,OAAA,EAAS,cAAgB,EAAA,IAAA,EAAM,GAAG,CAAA,CAAA;AAC7C,IAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAAA,GACf,CAAA;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,iBAAkB,CAAA,OAAA;AAAA,IAAlB;AAAA,MACC,MAAA,EAAQ,EAAE,OAAA,EAAS,WAAY,EAAA;AAAA,MAC/B,SAAA,EAAW,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,MAC9B,OAAS,EAAA,CAAA;AAAA,MACT,OAAS,EAAA,CAAA;AAAA,MACT,SAAU,EAAA,OAAA;AAAA,MAEV,QAAA,kBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,MAAO,EAAA,MAAA;AAAA,UACP,aACE,EAAA;AAAA,YACE,IAAA,EAAM,OAAQ,CAAA,CAAC,CAAG,EAAA,IAAA;AAAA,YAClB,MAAA,EAAQ,YAAa,CAAA,CAAC,CAAE,CAAA,KAAA;AAAA,WAC1B;AAAA,UAEF,QAAU,EAAA,YAAA;AAAA,UAET,WAAC,EAAE,MAAA,EAAQ,UAAY,EAAA,QAAA,EAAU,cAAmB,KAAA;AACnD,YAAM,MAAA,MAAA,GAAS,QAAQ,IAAK,CAAA,CAACC,YAAWA,OAAO,CAAA,IAAA,KAAS,WAAW,IAAI,CAAA,CAAA;AACvE,YAAM,MAAA,KAAA,GAAQ,QAAQ,KAAS,IAAA,aAAA,CAAA;AAC/B,YAAA,uBACG,IAAA,CAAA,IAAA,EAAA,EAAK,SAAU,EAAA,QAAA,EAAS,UAAW,EAAA,SAAA,EAAU,GAAK,EAAA,CAAA,EAAG,KAAO,EAAA,EAAE,QAAU,EAAA,GAAA,EACtE,EAAA,QAAA,EAAA;AAAA,cAAA;AAAA,gBACC;AAAA,kBACE,CAAC,YAAY,GAAG,aAAc,CAAA;AAAA,oBAC5B,EAAI,EAAA,wBAAA;AAAA,oBACJ,cAAgB,EAAA,cAAA;AAAA,mBACjB,CAAA;AAAA,kBACD,IAAM,EAAA,MAAA;AAAA,kBACN,OAAS,EAAA,OAAA,CAAQ,GAAI,CAAA,CAACA,OAAY,MAAA;AAAA,oBAChC,OAAOA,OAAO,CAAA,KAAA;AAAA,oBACd,OAAOA,OAAO,CAAA,IAAA;AAAA,mBACd,CAAA,CAAA;AAAA,kBACF,YAAY,aAAc,CAAA;AAAA,oBACxB,EAAI,EAAA,wBAAA;AAAA,oBACJ,cAAgB,EAAA,cAAA;AAAA,mBACjB,CAAA;AAAA,kBACD,IAAM,EAAA,aAAA;AAAA,iBACR;AAAA,gBACA;AAAA,kBACE,CAAC,YAAY,GAAG,aAAc,CAAA;AAAA,oBAC5B,EAAI,EAAA,yBAAA;AAAA,oBACJ,cAAgB,EAAA,eAAA;AAAA,mBACjB,CAAA;AAAA,kBACD,IAAM,EAAA,QAAA;AAAA,kBACN,OAAA,EACE,QAAQ,SACR,IAAA,aAAA,CAAc,MAAM,CAAE,CAAA,GAAA,CAAI,CAAC,GAAS,MAAA;AAAA,oBAClC,KAAA,EAAO,aAAc,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA,oBAC9B,OAAO,GAAI,CAAA,KAAA;AAAA,mBACX,CAAA,CAAA;AAAA,kBACJ,aAAa,aAAc,CAAA;AAAA,oBACzB,EAAI,EAAA,yBAAA;AAAA,oBACJ,cAAgB,EAAA,eAAA;AAAA,mBACjB,CAAA;AAAA,kBACD,IAAM,EAAA,aAAA;AAAA,iBACR;AAAA,eACF,CAAE,GAAI,CAAA,CAAC,KACL,qBAAA,GAAA,CAAC,iBAAgC,GAAG,KAAA,EAAA,EAAhB,KAAM,CAAA,IAAiB,CAC5C,CAAA;AAAA,cACA,MAAA,IACD,WAAW,MACX,IAAA,UAAA,CAAW,WAAW,OACtB,IAAA,UAAA,CAAW,WAAW,UACpB,mBAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAA;AAAA,kBACJ,KAAO,EAAA,IAAA;AAAA,kBACP,cAAY,MAAO,CAAA,KAAA;AAAA,kBACnB,IAAK,EAAA,OAAA;AAAA,kBAEL,IAAM,EAAA,MAAA,CAAO,SAAW,EAAA,IAAA,IAAQ,MAAO,CAAA,IAAA;AAAA,iBAAA;AAAA,eAEvC,GAAA,IAAA;AAAA,8BACJ,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,QAAA,EAAU,CAAC,QAAY,IAAA,YAAA;AAAA,kBACvB,IAAK,EAAA,GAAA;AAAA,kBACL,OAAQ,EAAA,WAAA;AAAA,kBACR,SAAA,sBAAY,IAAK,EAAA,EAAA,CAAA;AAAA,kBACjB,IAAK,EAAA,QAAA;AAAA,kBACL,SAAS,EAAA,IAAA;AAAA,kBAER,wBAAc,EAAE,EAAA,EAAI,sBAAwB,EAAA,cAAA,EAAgB,cAAc,CAAA;AAAA,iBAAA;AAAA,eAC7E;AAAA,aACF,EAAA,CAAA,CAAA;AAAA,WAEJ;AAAA,SAAA;AAAA,OACF;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA,CAAA;AAKA,MAAM,aAAA,GAAgB,CAAC,MAA4C,KAAA;AACjE,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAEA,EAAA,MAAM,OAAO,MAAO,CAAA,SAAA,EAAW,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,MAAO,CAAA,IAAA,CAAA;AAErE,EAAA,QAAQ,IAAM;AAAA,IACZ,KAAK,OAAA,CAAA;AAAA,IACL,KAAK,MAAA,CAAA;AAAA,IACL,KAAK,aAAA,CAAA;AAAA,IACL,KAAK,QAAU,EAAA;AACb,MAAO,OAAA;AAAA,QACL,GAAG,YAAA;AAAA,QACH,GAAG,oBAAA;AAAA,QACH,GAAG,gBAAA;AAAA,QACH,GAAG,oBAAA;AAAA,OACL,CAAA;AAAA,KACF;AAAA,IAEA,KAAK,OAAA,CAAA;AAAA,IACL,KAAK,SAAA,CAAA;AAAA,IACL,KAAK,YAAA,CAAA;AAAA,IACL,KAAK,SAAW,EAAA;AACd,MAAA,OAAO,CAAC,GAAG,YAAc,EAAA,GAAG,eAAe,CAAA,CAAA;AAAA,KAC7C;AAAA,IACA,KAAK,MAAA,CAAA;AAAA,IACL,KAAK,MAAQ,EAAA;AACX,MAAA,OAAO,CAAC,GAAG,YAAA,EAAc,GAAG,eAAA,EAAiB,GAAG,gBAAgB,CAAA,CAAA;AAAA,KAClE;AAAA,IAEA,KAAK,UAAY,EAAA;AACf,MAAA,OAAO,CAAC,GAAG,YAAc,EAAA,GAAG,eAAe,CAAA,CAAA;AAAA,KAC7C;AAAA,IAEA;AACE,MAAA,OAAO,CAAC,GAAG,YAAc,EAAA,GAAG,oBAAoB,CAAA,CAAA;AAAA,GACpD;AACF,CAAA,CAAA;AAMA,MAAM,OAAO,MAAM;AACjB,EAAA,MAAM,CAAC,EAAE,KAAA,EAAS,EAAA,QAAQ,IAAI,cAA8B,EAAA,CAAA;AAE5D,EAAM,MAAA,OAAA,GAAU,WAAW,MAAQ,EAAA,CAAC,EAAE,OAAAH,EAAAA,QAAAA,OAAcA,QAAO,CAAA,CAAA;AAE3D,EAAM,MAAA,WAAA,GAAc,CAAC,IAAyB,KAAA;AAK5C,IAAM,MAAA,WAAA,GAAA,CAAe,OAAO,OAAS,EAAA,IAAA,IAAQ,EAAI,EAAA,MAAA,CAAO,CAAC,MAAW,KAAA;AAClE,MAAA,MAAM,CAAC,aAAa,CAAI,GAAA,MAAA,CAAO,KAAK,MAAM,CAAA,CAAA;AAC1C,MAAI,IAAA,aAAA,KAAkB,KAAK,IAAM,EAAA;AAC/B,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAEA,MAAM,MAAA,EAAE,IAAM,EAAA,SAAA,EAAc,GAAA,OAAA,CAAQ,IAAK,CAAA,CAAC,EAAE,IAAA,EAAW,KAAA,IAAA,KAAS,aAAa,CAAA,CAAA;AAE7E,MAAA,IAAI,SAAS,UAAY,EAAA;AACvB,QAAA,MAAM,YAAY,MAAO,CAAA,aAAa,CAAE,CAAA,SAAA,EAAW,QAAQ,IAAI,CAAA,CAAA;AAE/D,QAAI,IAAA,OAAO,cAAc,QAAU,EAAA;AACjC,UAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,MAAA,CAAO,KAAK,SAAS,CAAA,CAAA;AACxC,UAAM,MAAA,KAAA,GAAQ,UAAU,QAAQ,CAAA,CAAA;AAEhC,UAAA,OAAO,EAAE,QAAA,KAAa,IAAK,CAAA,MAAA,IAAU,UAAU,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,SACtD;AAEA,QAAO,OAAA,IAAA,CAAA;AAAA,OACF,MAAA;AACL,QAAM,MAAA,SAAA,GAAY,OAAO,aAAa,CAAA,CAAA;AACtC,QAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,MAAA,CAAO,KAAK,SAAS,CAAA,CAAA;AACxC,QAAM,MAAA,KAAA,GAAQ,UAAU,QAAQ,CAAA,CAAA;AAEhC,QAAA,OAAO,EAAE,QAAA,KAAa,IAAK,CAAA,MAAA,IAAU,UAAU,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,OACtD;AAAA,KACD,CAAA,CAAA;AAED,IAAS,QAAA,CAAA,EAAE,SAAS,EAAE,IAAA,EAAM,aAAe,EAAA,IAAA,EAAM,GAAG,CAAA,CAAA;AAAA,GACtD,CAAA;AAEA,EAAA,IAAI,CAAC,KAAA,EAAO,OAAS,EAAA,IAAA,EAAM,MAAQ,EAAA;AACjC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uCAEK,QAAO,EAAA,KAAA,EAAA,OAAA,EAAS,IAAM,EAAA,GAAA,CAAI,CAAC,WAAgB,KAAA;AAC1C,IAAA,MAAM,CAAC,aAAa,CAAI,GAAA,MAAA,CAAO,KAAK,WAAW,CAAA,CAAA;AAC/C,IAAM,MAAA,MAAA,GAAS,QAAQ,IAAK,CAAA,CAAC,EAAE,IAAK,EAAA,KAAM,SAAS,aAAa,CAAA,CAAA;AAChE,IAAM,MAAA,SAAA,GAAY,YAAY,aAAa,CAAA,CAAA;AAE3C,IAAA,IAAI,CAAC,MAAU,IAAA,OAAO,SAAc,KAAA,QAAA,IAAY,cAAc,IAAM,EAAA;AAClE,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAI,IAAA,MAAA,CAAO,SAAS,UAAY,EAAA;AAC9B,MAAA,MAAM,WAAc,GAAA,SAAA,CAAU,MAAO,CAAA,SAAA,EAAW,QAAQ,IAAI,CAAA,CAAA;AAE5D,MAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AACnC,QAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,MAAA,CAAO,KAAK,WAAW,CAAA,CAAA;AAC1C,QAAM,MAAA,KAAA,GAAQ,YAAY,QAAQ,CAAA,CAAA;AAClC,QACE,uBAAA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YAEE,GAAG,MAAA;AAAA,YACJ,OAAS,EAAA,WAAA;AAAA,YACT,QAAA;AAAA,YACA,KAAA;AAAA,WAAA;AAAA,UAJK,CAAG,EAAA,aAAa,CAAI,CAAA,EAAA,QAAQ,IAAI,KAAK,CAAA,CAAA;AAAA,SAK5C,CAAA;AAAA,OAEJ;AAEA,MAAO,OAAA,IAAA,CAAA;AAAA,KACF,MAAA;AACL,MAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,MAAA,CAAO,KAAK,SAAS,CAAA,CAAA;AACxC,MAAM,MAAA,KAAA,GAAQ,UAAU,QAAQ,CAAA,CAAA;AAMhC,MAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAEA,MACE,uBAAA,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UAEE,GAAG,MAAA;AAAA,UACJ,OAAS,EAAA,WAAA;AAAA,UACT,QAAA;AAAA,UACA,KAAA;AAAA,SAAA;AAAA,QAJK,CAAG,EAAA,aAAa,CAAI,CAAA,EAAA,QAAQ,IAAI,KAAK,CAAA,CAAA;AAAA,OAK5C,CAAA;AAAA,KAEJ;AAAA,GACD,CACH,EAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAQA,MAAM,eAAe,CAAC;AAAA,EACpB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG,MAAA;AACL,CAAyB,KAAA;AACvB,EAAA,MAAM,EAAE,aAAe,EAAA,UAAA,EAAY,UAAY,EAAA,YAAA,KAAiB,OAAQ,EAAA,CAAA;AAExE,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,OAAA,CAAQ,EAAE,IAAA,EAAM,KAAO,EAAA,MAAA,EAAQ,UAAU,CAAA,CAAA;AAAA,GAC3C,CAAA;AAEA,EAAA,MAAM,IAAO,GAAA,SAAA,EAAW,IAAO,GAAA,SAAA,CAAU,OAAO,MAAO,CAAA,IAAA,CAAA;AAEvD,EAAA,IAAI,cAAyB,GAAA,KAAA,CAAA;AAE7B,EAAA,QAAQ,IAAM;AAAA,IACZ,KAAK,MAAA;AACH,MAAA,cAAA,GAAiB,UAAW,CAAA,KAAA,EAAO,EAAE,SAAA,EAAW,QAAQ,CAAA,CAAA;AACxD,MAAA,MAAA;AAAA,IACF,KAAK,UAAA;AACH,MAAA,cAAA,GAAiB,WAAW,KAAO,EAAA,EAAE,WAAW,MAAQ,EAAA,SAAA,EAAW,SAAS,CAAA,CAAA;AAC5E,MAAA,MAAA;AAAA,IACF,KAAK,MAAA;AACH,MAAA,MAAM,CAAC,IAAM,EAAA,MAAM,CAAI,GAAA,KAAA,CAAM,MAAM,GAAG,CAAA,CAAA;AACtC,MAAM,MAAA,IAAA,uBAAW,IAAK,EAAA,CAAA;AACtB,MAAK,IAAA,CAAA,QAAA,CAAS,MAAO,CAAA,IAAI,CAAC,CAAA,CAAA;AAC1B,MAAK,IAAA,CAAA,UAAA,CAAW,MAAO,CAAA,MAAM,CAAC,CAAA,CAAA;AAE9B,MAAA,cAAA,GAAiB,WAAW,IAAM,EAAA;AAAA,QAChC,IAAM,EAAA,SAAA;AAAA,QACN,MAAQ,EAAA,SAAA;AAAA,OACT,CAAA,CAAA;AACD,MAAA,MAAA;AAAA,IACF,KAAK,OAAA,CAAA;AAAA,IACL,KAAK,SAAA,CAAA;AAAA,IACL,KAAK,YAAA,CAAA;AAAA,IACL,KAAK,SAAA;AACH,MAAiB,cAAA,GAAA,YAAA,CAAa,MAAO,CAAA,KAAK,CAAC,CAAA,CAAA;AAC3C,MAAA,MAAA;AAAA,GACJ;AAGA,EAAA,IAAI,SAAS,OAAS,EAAA;AAEpB,IAAA,MAAM,cAAiB,GAAA,OAAA,CAAQ,IAAK,CAAA,CAAC,MAAW,KAAA;AAC9C,MAAA,OAAA,CAAQ,OAAO,MAAA,KAAW,QAAW,GAAA,MAAA,GAAS,OAAO,KAAW,MAAA,KAAA,CAAA;AAAA,KACjE,CAAA,CAAA;AAED,IAAiB,cAAA,GAAA,cAAA,GACb,OAAO,cAAmB,KAAA,QAAA,GACxB,iBACA,cAAe,CAAA,KAAA,IAAS,eAAe,KACzC,GAAA,KAAA,CAAA;AAAA,GACN;AAEA,EAAA,MAAM,OAAU,GAAA,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,aAAc,CAAA;AAAA,IACxC,EAAA,EAAI,yCAAyC,QAAQ,CAAA,CAAA;AAAA,IACrD,cAAgB,EAAA,QAAA;AAAA,GACjB,CAAC,CAAI,CAAA,EAAA,QAAA,KAAa,WAAW,QAAa,KAAA,UAAA,GAAa,iBAAiB,EAAE,CAAA,CAAA,CAAA;AAE3E,EACE,uBAAA,GAAA,CAAC,GAAI,EAAA,EAAA,OAAA,EAAS,CAAG,EAAA,OAAA,EAAS,aAAa,IAAM,kBAAA,GAAA,CAAC,KAAM,EAAA,EAAA,CAAA,EACjD,QACH,EAAA,OAAA,EAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAMA,MAAM,OAAU,GAAA;AAAA,EACd,IAAA;AAAA,EACA,OAAS,EAAA,WAAA;AAAA,EACT,IAAA;AAAA,EACA,OAAA;AACF;;;;"}
1
+ {"version":3,"file":"Filters-8DH_AqD9.mjs","sources":["../../admin/src/constants/filters.ts","../../admin/src/components/Filters.tsx"],"sourcesContent":["import type { EntityService } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\n/**\n * @description designed to be parsed by formatMessage from react-intl\n * then passed to a Select component.\n */\ninterface FilterOption {\n value: EntityService.Params.Filters.Operator.Where;\n label: MessageDescriptor;\n}\n\n/**\n * @description these are shared by everyone\n */\nconst BASE_FILTERS = [\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$null',\n defaultMessage: 'is null',\n },\n value: '$null',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notNull',\n defaultMessage: 'is not null',\n },\n value: '$notNull',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are numerical incl. dates.\n */\nconst NUMERIC_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gt',\n defaultMessage: 'is greater than',\n },\n value: '$gt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gte',\n defaultMessage: 'is greater than or equal to',\n },\n value: '$gte',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lt',\n defaultMessage: 'is less than',\n },\n value: '$lt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lte',\n defaultMessage: 'is less than or equal to',\n },\n value: '$lte',\n },\n] satisfies FilterOption[];\n\nconst IS_SENSITIVE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$eqi',\n defaultMessage: 'is (case insensitive)',\n },\n value: '$eqi',\n },\n\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$nei',\n defaultMessage: 'is not (case insensitive)',\n },\n value: '$nei',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are strings for partial looking.\n */\nconst CONTAINS_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$contains',\n defaultMessage: 'contains',\n },\n value: '$contains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$containsi',\n defaultMessage: 'contains (case insensitive)',\n },\n value: '$containsi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContains',\n defaultMessage: 'not contains',\n },\n value: '$notContains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContainsi',\n defaultMessage: 'not contains (case insensitive)',\n },\n value: '$notContainsi',\n },\n] satisfies FilterOption[];\n\n/**\n * @description only used on string attributes.\n */\nconst STRING_PARSE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWith',\n defaultMessage: 'starts with',\n },\n value: '$startsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWithi',\n defaultMessage: 'starts with (case insensitive)',\n },\n value: '$startsWithi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWith',\n defaultMessage: 'ends with',\n },\n value: '$endsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWithi',\n defaultMessage: 'ends with (case insensitive)',\n },\n value: '$endsWithi',\n },\n] satisfies FilterOption[];\n\nexport {\n BASE_FILTERS,\n NUMERIC_FILTERS,\n IS_SENSITIVE_FILTERS,\n CONTAINS_FILTERS,\n STRING_PARSE_FILTERS,\n};\nexport type { FilterOption };\n","import * as React from 'react';\n\nimport { Button, Flex, PopoverPrimitives, Tag, useComposedRefs } from '@strapi/design-system';\nimport { Plus, Filter as FilterIcon, Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport {\n BASE_FILTERS,\n CONTAINS_FILTERS,\n FilterOption,\n IS_SENSITIVE_FILTERS,\n NUMERIC_FILTERS,\n STRING_PARSE_FILTERS,\n} from '../constants/filters';\nimport { MainField } from '../content-manager/utils/attributes';\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\nimport { Form, InputProps } from './Form';\nimport { InputRenderer } from './FormInputs/Renderer';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterFormData {\n name: string;\n filter: string;\n value?: string;\n}\n\ninterface FitlersContextValue {\n disabled: boolean;\n onChange: (data: FilterFormData) => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\n triggerNode: HTMLButtonElement | null;\n options: Filters.Filter[];\n}\n\nconst [FiltersProvider, useFilters] = createContext<FitlersContextValue>('Filters');\n\ninterface RootProps\n extends Partial<Pick<FitlersContextValue, 'disabled' | 'onChange' | 'options' | 'open'>> {\n children: React.ReactNode;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst Root = ({\n children,\n disabled = false,\n onChange,\n onOpenChange,\n open: openProp,\n defaultOpen,\n options = [],\n}: RootProps) => {\n const [triggerNode, setTriggerNode] = React.useState<FitlersContextValue['triggerNode']>(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleChange = (data: FilterFormData) => {\n if (onChange) {\n onChange(data);\n }\n };\n\n return (\n <FiltersProvider\n disabled={disabled}\n onChange={handleChange}\n open={open}\n options={options}\n setOpen={setOpen}\n setTriggerNode={setTriggerNode}\n triggerNode={triggerNode}\n >\n {children}\n </FiltersProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst Trigger = React.forwardRef<HTMLButtonElement, Filters.TriggerProps>(\n ({ label }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { setTriggerNode, setOpen } = useFilters('Trigger', ({ setTriggerNode, setOpen }) => ({\n setTriggerNode,\n setOpen,\n }));\n const disabled = useFilters('Trigger', ({ disabled }) => disabled);\n const open = useFilters('Trigger', ({ open }) => open);\n\n const composedRefs = useComposedRefs(forwardedRef, setTriggerNode);\n\n const handleClick = () => setOpen(!open);\n\n return (\n <Button\n variant=\"tertiary\"\n ref={composedRefs}\n startIcon={<FilterIcon />}\n onClick={handleClick}\n size=\"S\"\n disabled={disabled}\n >\n {label || formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nconst PopoverImpl = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n const { formatMessage } = useIntl();\n const open = useFilters('Popover', ({ open }) => open);\n const options = useFilters('Popover', ({ options }) => options);\n const triggerNode = useFilters('Popover', ({ triggerNode }) => triggerNode);\n const setOpen = useFilters('Popover', ({ setOpen }) => setOpen);\n const onChange = useFilters('Popover', ({ onChange }) => onChange);\n\n if (!open || options.length === 0 || !triggerNode) {\n return null;\n }\n\n const handleSubmit = (data: FilterFormData) => {\n if (!data.value) {\n return;\n }\n\n if (onChange) {\n onChange(data);\n }\n\n /**\n * There will ALWAYS be an option because we use the options to create the form data.\n */\n const filterType = options.find((filter) => filter.name === data.name)!.type;\n\n /**\n * If the filter is a relation, we need to nest the filter object,\n * we always use ids to filter relations. But the nested object is\n * the operator & value pair. This value _could_ look like:\n * ```json\n * {\n * \"$eq\": \"1\",\n * }\n * ```\n */\n const operatorValuePairing = {\n [data.filter]: data.value,\n };\n\n const newFilterQuery = {\n ...query.filters,\n $and: [\n ...(query.filters?.$and ?? []),\n {\n [data.name]:\n filterType === 'relation'\n ? {\n id: operatorValuePairing,\n }\n : operatorValuePairing,\n },\n ],\n };\n\n setQuery({ filters: newFilterQuery, page: 1 });\n setOpen(false);\n };\n\n return (\n <PopoverPrimitives.Content\n source={{ current: triggerNode }}\n onDismiss={() => setOpen(false)}\n padding={3}\n spacing={4}\n maxHeight=\"unset\"\n >\n <Form\n method=\"POST\"\n initialValues={\n {\n name: options[0]?.name,\n filter: BASE_FILTERS[0].value,\n } satisfies FilterFormData\n }\n onSubmit={handleSubmit}\n >\n {({ values: formValues, modified, isSubmitting }) => {\n const filter = options.find((filter) => filter.name === formValues.name);\n const Input = filter?.input || InputRenderer;\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2} style={{ minWidth: 184 }}>\n {[\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n name: 'name',\n options: options.map((filter) => ({\n label: filter.label,\n value: filter.name,\n })),\n placholder: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n type: 'enumeration' as const,\n },\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n name: 'filter',\n options:\n filter?.operators ||\n getFilterList(filter).map((opt) => ({\n label: formatMessage(opt.label),\n value: opt.value,\n })),\n placeholder: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n type: 'enumeration' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n {filter &&\n formValues.filter &&\n formValues.filter !== '$null' &&\n formValues.filter !== '$notNull' ? (\n <Input\n {...filter}\n label={null}\n aria-label={filter.label}\n name=\"value\"\n // @ts-expect-error – if type is `custom` then `Input` will be a custom component.\n type={filter.mainField?.type ?? filter.type}\n />\n ) : null}\n <Button\n disabled={!modified || isSubmitting}\n size=\"L\"\n variant=\"secondary\"\n startIcon={<Plus />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Flex>\n );\n }}\n </Form>\n </PopoverPrimitives.Content>\n );\n};\n\n/**\n * Depending on the selected field find the possible filters to apply\n */\nconst getFilterList = (filter?: Filters.Filter): FilterOption[] => {\n if (!filter) {\n return [];\n }\n\n const type = filter.mainField?.type ? filter.mainField.type : filter.type;\n\n switch (type) {\n case 'email':\n case 'text':\n case 'enumeration':\n case 'string': {\n return [\n ...BASE_FILTERS,\n ...IS_SENSITIVE_FILTERS,\n ...CONTAINS_FILTERS,\n ...STRING_PARSE_FILTERS,\n ];\n }\n\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n case 'time':\n case 'date': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS, ...CONTAINS_FILTERS];\n }\n\n case 'datetime': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n\n default:\n return [...BASE_FILTERS, ...IS_SENSITIVE_FILTERS];\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * List\n * -----------------------------------------------------------------------------------------------*/\n\nconst List = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n\n const options = useFilters('List', ({ options }) => options);\n\n const handleClick = (data: FilterFormData) => {\n /**\n * Check the name, operator and value to see if it already exists in the query\n * if it does, remove it.\n */\n const nextFilters = (query?.filters?.$and ?? []).filter((filter) => {\n const [attributeName] = Object.keys(filter);\n if (attributeName !== data.name) {\n return true;\n }\n\n const { type, mainField } = options.find(({ name }) => name === attributeName)!;\n\n if (type === 'relation') {\n const filterObj = filter[attributeName][mainField?.name ?? 'id'];\n\n if (typeof filterObj === 'object') {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n\n return true;\n } else {\n const filterObj = filter[attributeName];\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n });\n\n setQuery({ filters: { $and: nextFilters }, page: 1 });\n };\n\n if (!query?.filters?.$and?.length) {\n return null;\n }\n\n return (\n <>\n {query?.filters?.$and?.map((queryFilter) => {\n const [attributeName] = Object.keys(queryFilter);\n const filter = options.find(({ name }) => name === attributeName);\n const filterObj = queryFilter[attributeName];\n\n if (!filter || typeof filterObj !== 'object' || filterObj === null) {\n return null;\n }\n\n if (filter.type === 'relation') {\n const modelFilter = filterObj[filter.mainField?.name ?? 'id'];\n\n if (typeof modelFilter === 'object') {\n const [operator] = Object.keys(modelFilter);\n const value = modelFilter[operator];\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n\n return null;\n } else {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n /**\n * Something has gone wrong here, because the attribute is not a relation\n * but we have a nested filter object.\n */\n if (typeof value === 'object') {\n return null;\n }\n\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n })}\n </>\n );\n};\n\ninterface AttributeTagProps extends Filters.Filter {\n onClick: (data: FilterFormData) => void;\n operator: string;\n value: string;\n}\n\nconst AttributeTag = ({\n input,\n label,\n mainField,\n name,\n onClick,\n operator,\n options,\n value,\n ...filter\n}: AttributeTagProps) => {\n const { formatMessage, formatDate, formatTime, formatNumber } = useIntl();\n\n const handleClick = () => {\n onClick({ name, value, filter: operator });\n };\n\n const type = mainField?.type ? mainField.type : filter.type;\n\n let formattedValue: string = value;\n\n switch (type) {\n case 'date':\n formattedValue = formatDate(value, { dateStyle: 'full' });\n break;\n case 'datetime':\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n break;\n case 'time':\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n break;\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal':\n formattedValue = formatNumber(Number(value));\n break;\n }\n\n // Handle custom input\n if (input && options) {\n // If the custom input has an options array, find the option with a customValue matching the query value\n const selectedOption = options.find((option) => {\n return (typeof option === 'string' ? option : option.value) === value;\n });\n\n formattedValue = selectedOption\n ? typeof selectedOption === 'string'\n ? selectedOption\n : selectedOption.label ?? selectedOption.value\n : value;\n }\n\n const content = `${label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${operator !== '$null' && operator !== '$notNull' ? formattedValue : ''}`;\n\n return (\n <Tag padding={1} onClick={handleClick} icon={<Cross />}>\n {content}\n </Tag>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst Filters = {\n List,\n Popover: PopoverImpl,\n Root,\n Trigger,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Filters {\n export interface Filter {\n input?: React.ComponentType<ValueInputProps>;\n label: string;\n /**\n * the name of the attribute we use to display the actual name e.g. relations\n * are just ids, so we use the mainField to display something meaninginful by\n * looking at the target's schema\n */\n mainField?: MainField;\n name: string;\n operators?: Array<{\n label: string;\n value: string;\n }>;\n options?: Array<{ label?: string; value: string }> | string[];\n type: InputProps['type'] | 'relation' | 'custom';\n }\n\n export interface ValueInputProps extends Omit<Filter, 'label'> {\n ['aria-label']: string;\n }\n\n export type Props = RootProps;\n\n export interface TriggerProps {\n label?: string;\n }\n\n export interface Query {\n filters?: {\n /**\n * Typically, a filter will be:\n * ```ts\n * {\n * [attributeName]: {\n * [operator]: value\n * }\n * }\n * ```\n * However, for relation items it becomes more nested.\n * ```ts\n * {\n * [attributeName]: {\n * [relationTargetAttribute]: {\n * [operator]: value\n * }\n * }\n * }\n */\n $and?: Array<Record<string, Record<string, string | Record<string, string>>>>;\n };\n page?: number;\n }\n}\n\nexport { Filters };\n"],"names":["setTriggerNode","setOpen","disabled","open","FilterIcon","options","triggerNode","onChange","filter"],"mappings":"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"}
@@ -5,7 +5,7 @@ const React = require('react');
5
5
  const designSystem = require('@strapi/design-system');
6
6
  const Icons = require('@strapi/icons');
7
7
  const reactIntl = require('react-intl');
8
- const index = require('./index-Xcv2DEB8.js');
8
+ const index = require('./index-_fZT3TVe.js');
9
9
  const layout = require('./reducers-uDxSALD_.js');
10
10
  const useDocumentLayout = require('./useDocumentLayout-wBQQmFJL.js');
11
11
 
@@ -508,4 +508,4 @@ const Filters = {
508
508
  };
509
509
 
510
510
  exports.Filters = Filters;
511
- //# sourceMappingURL=Filters-xCY3Scq4.js.map
511
+ //# sourceMappingURL=Filters-ogIU7Q6e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Filters-xCY3Scq4.js","sources":["../../admin/src/constants/filters.ts","../../admin/src/components/Filters.tsx"],"sourcesContent":["import type { EntityService } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\n/**\n * @description designed to be parsed by formatMessage from react-intl\n * then passed to a Select component.\n */\ninterface FilterOption {\n value: EntityService.Params.Filters.Operator.Where;\n label: MessageDescriptor;\n}\n\n/**\n * @description these are shared by everyone\n */\nconst BASE_FILTERS = [\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$null',\n defaultMessage: 'is null',\n },\n value: '$null',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notNull',\n defaultMessage: 'is not null',\n },\n value: '$notNull',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are numerical incl. dates.\n */\nconst NUMERIC_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gt',\n defaultMessage: 'is greater than',\n },\n value: '$gt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gte',\n defaultMessage: 'is greater than or equal to',\n },\n value: '$gte',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lt',\n defaultMessage: 'is less than',\n },\n value: '$lt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lte',\n defaultMessage: 'is less than or equal to',\n },\n value: '$lte',\n },\n] satisfies FilterOption[];\n\nconst IS_SENSITIVE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$eqi',\n defaultMessage: 'is (case insensitive)',\n },\n value: '$eqi',\n },\n\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$nei',\n defaultMessage: 'is not (case insensitive)',\n },\n value: '$nei',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are strings for partial looking.\n */\nconst CONTAINS_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$contains',\n defaultMessage: 'contains',\n },\n value: '$contains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$containsi',\n defaultMessage: 'contains (case insensitive)',\n },\n value: '$containsi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContains',\n defaultMessage: 'not contains',\n },\n value: '$notContains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContainsi',\n defaultMessage: 'not contains (case insensitive)',\n },\n value: '$notContainsi',\n },\n] satisfies FilterOption[];\n\n/**\n * @description only used on string attributes.\n */\nconst STRING_PARSE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWith',\n defaultMessage: 'starts with',\n },\n value: '$startsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWithi',\n defaultMessage: 'starts with (case insensitive)',\n },\n value: '$startsWithi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWith',\n defaultMessage: 'ends with',\n },\n value: '$endsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWithi',\n defaultMessage: 'ends with (case insensitive)',\n },\n value: '$endsWithi',\n },\n] satisfies FilterOption[];\n\nexport {\n BASE_FILTERS,\n NUMERIC_FILTERS,\n IS_SENSITIVE_FILTERS,\n CONTAINS_FILTERS,\n STRING_PARSE_FILTERS,\n};\nexport type { FilterOption };\n","import * as React from 'react';\n\nimport { Button, Flex, PopoverPrimitives, Tag, useComposedRefs } from '@strapi/design-system';\nimport { Plus, Filter as FilterIcon, Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport {\n BASE_FILTERS,\n CONTAINS_FILTERS,\n FilterOption,\n IS_SENSITIVE_FILTERS,\n NUMERIC_FILTERS,\n STRING_PARSE_FILTERS,\n} from '../constants/filters';\nimport { MainField } from '../content-manager/utils/attributes';\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\nimport { Form, InputProps } from './Form';\nimport { InputRenderer } from './FormInputs/Renderer';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterFormData {\n name: string;\n filter: string;\n value?: string;\n}\n\ninterface FitlersContextValue {\n disabled: boolean;\n onChange: (data: FilterFormData) => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\n triggerNode: HTMLButtonElement | null;\n options: Filters.Filter[];\n}\n\nconst [FiltersProvider, useFilters] = createContext<FitlersContextValue>('Filters');\n\ninterface RootProps\n extends Partial<Pick<FitlersContextValue, 'disabled' | 'onChange' | 'options' | 'open'>> {\n children: React.ReactNode;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst Root = ({\n children,\n disabled = false,\n onChange,\n onOpenChange,\n open: openProp,\n defaultOpen,\n options = [],\n}: RootProps) => {\n const [triggerNode, setTriggerNode] = React.useState<FitlersContextValue['triggerNode']>(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleChange = (data: FilterFormData) => {\n if (onChange) {\n onChange(data);\n }\n };\n\n return (\n <FiltersProvider\n disabled={disabled}\n onChange={handleChange}\n open={open}\n options={options}\n setOpen={setOpen}\n setTriggerNode={setTriggerNode}\n triggerNode={triggerNode}\n >\n {children}\n </FiltersProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst Trigger = React.forwardRef<HTMLButtonElement, Filters.TriggerProps>(\n ({ label }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { setTriggerNode, setOpen } = useFilters('Trigger', ({ setTriggerNode, setOpen }) => ({\n setTriggerNode,\n setOpen,\n }));\n const disabled = useFilters('Trigger', ({ disabled }) => disabled);\n const open = useFilters('Trigger', ({ open }) => open);\n\n const composedRefs = useComposedRefs(forwardedRef, setTriggerNode);\n\n const handleClick = () => setOpen(!open);\n\n return (\n <Button\n variant=\"tertiary\"\n ref={composedRefs}\n startIcon={<FilterIcon />}\n onClick={handleClick}\n size=\"S\"\n disabled={disabled}\n >\n {label || formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nconst PopoverImpl = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n const { formatMessage } = useIntl();\n const open = useFilters('Popover', ({ open }) => open);\n const options = useFilters('Popover', ({ options }) => options);\n const triggerNode = useFilters('Popover', ({ triggerNode }) => triggerNode);\n const setOpen = useFilters('Popover', ({ setOpen }) => setOpen);\n const onChange = useFilters('Popover', ({ onChange }) => onChange);\n\n if (!open || options.length === 0 || !triggerNode) {\n return null;\n }\n\n const handleSubmit = (data: FilterFormData) => {\n if (!data.value) {\n return;\n }\n\n if (onChange) {\n onChange(data);\n }\n\n /**\n * There will ALWAYS be an option because we use the options to create the form data.\n */\n const filterType = options.find((filter) => filter.name === data.name)!.type;\n\n /**\n * If the filter is a relation, we need to nest the filter object,\n * we always use ids to filter relations. But the nested object is\n * the operator & value pair. This value _could_ look like:\n * ```json\n * {\n * \"$eq\": \"1\",\n * }\n * ```\n */\n const operatorValuePairing = {\n [data.filter]: data.value,\n };\n\n const newFilterQuery = {\n ...query.filters,\n $and: [\n ...(query.filters?.$and ?? []),\n {\n [data.name]:\n filterType === 'relation'\n ? {\n id: operatorValuePairing,\n }\n : operatorValuePairing,\n },\n ],\n };\n\n setQuery({ filters: newFilterQuery, page: 1 });\n setOpen(false);\n };\n\n return (\n <PopoverPrimitives.Content\n source={{ current: triggerNode }}\n onDismiss={() => setOpen(false)}\n padding={3}\n spacing={4}\n maxHeight=\"unset\"\n >\n <Form\n method=\"POST\"\n initialValues={\n {\n name: options[0]?.name,\n filter: BASE_FILTERS[0].value,\n } satisfies FilterFormData\n }\n onSubmit={handleSubmit}\n >\n {({ values: formValues, modified, isSubmitting }) => {\n const filter = options.find((filter) => filter.name === formValues.name);\n const Input = filter?.input || InputRenderer;\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2} style={{ minWidth: 184 }}>\n {[\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n name: 'name',\n options: options.map((filter) => ({\n label: filter.label,\n value: filter.name,\n })),\n placholder: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n type: 'enumeration' as const,\n },\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n name: 'filter',\n options:\n filter?.operators ||\n getFilterList(filter).map((opt) => ({\n label: formatMessage(opt.label),\n value: opt.value,\n })),\n placeholder: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n type: 'enumeration' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n {filter &&\n formValues.filter &&\n formValues.filter !== '$null' &&\n formValues.filter !== '$notNull' ? (\n <Input\n {...filter}\n label={null}\n aria-label={filter.label}\n name=\"value\"\n // @ts-expect-error – if type is `custom` then `Input` will be a custom component.\n type={filter.mainField?.type ?? filter.type}\n />\n ) : null}\n <Button\n disabled={!modified || isSubmitting}\n size=\"L\"\n variant=\"secondary\"\n startIcon={<Plus />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Flex>\n );\n }}\n </Form>\n </PopoverPrimitives.Content>\n );\n};\n\n/**\n * Depending on the selected field find the possible filters to apply\n */\nconst getFilterList = (filter?: Filters.Filter): FilterOption[] => {\n if (!filter) {\n return [];\n }\n\n const type = filter.mainField?.type ? filter.mainField.type : filter.type;\n\n switch (type) {\n case 'email':\n case 'text':\n case 'enumeration':\n case 'string': {\n return [\n ...BASE_FILTERS,\n ...IS_SENSITIVE_FILTERS,\n ...CONTAINS_FILTERS,\n ...STRING_PARSE_FILTERS,\n ];\n }\n\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n case 'time':\n case 'date': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS, ...CONTAINS_FILTERS];\n }\n\n case 'datetime': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n\n default:\n return [...BASE_FILTERS, ...IS_SENSITIVE_FILTERS];\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * List\n * -----------------------------------------------------------------------------------------------*/\n\nconst List = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n\n const options = useFilters('List', ({ options }) => options);\n\n const handleClick = (data: FilterFormData) => {\n /**\n * Check the name, operator and value to see if it already exists in the query\n * if it does, remove it.\n */\n const nextFilters = (query?.filters?.$and ?? []).filter((filter) => {\n const [attributeName] = Object.keys(filter);\n if (attributeName !== data.name) {\n return true;\n }\n\n const { type, mainField } = options.find(({ name }) => name === attributeName)!;\n\n if (type === 'relation') {\n const filterObj = filter[attributeName][mainField?.name ?? 'id'];\n\n if (typeof filterObj === 'object') {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n\n return true;\n } else {\n const filterObj = filter[attributeName];\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n });\n\n setQuery({ filters: { $and: nextFilters }, page: 1 });\n };\n\n if (!query?.filters?.$and?.length) {\n return null;\n }\n\n return (\n <>\n {query?.filters?.$and?.map((queryFilter) => {\n const [attributeName] = Object.keys(queryFilter);\n const filter = options.find(({ name }) => name === attributeName);\n const filterObj = queryFilter[attributeName];\n\n if (!filter || typeof filterObj !== 'object' || filterObj === null) {\n return null;\n }\n\n if (filter.type === 'relation') {\n const modelFilter = filterObj[filter.mainField?.name ?? 'id'];\n\n if (typeof modelFilter === 'object') {\n const [operator] = Object.keys(modelFilter);\n const value = modelFilter[operator];\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n\n return null;\n } else {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n /**\n * Something has gone wrong here, because the attribute is not a relation\n * but we have a nested filter object.\n */\n if (typeof value === 'object') {\n return null;\n }\n\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n })}\n </>\n );\n};\n\ninterface AttributeTagProps extends Filters.Filter {\n onClick: (data: FilterFormData) => void;\n operator: string;\n value: string;\n}\n\nconst AttributeTag = ({\n input,\n label,\n mainField,\n name,\n onClick,\n operator,\n options,\n value,\n ...filter\n}: AttributeTagProps) => {\n const { formatMessage, formatDate, formatTime, formatNumber } = useIntl();\n\n const handleClick = () => {\n onClick({ name, value, filter: operator });\n };\n\n const type = mainField?.type ? mainField.type : filter.type;\n\n let formattedValue: string = value;\n\n switch (type) {\n case 'date':\n formattedValue = formatDate(value, { dateStyle: 'full' });\n break;\n case 'datetime':\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n break;\n case 'time':\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n break;\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal':\n formattedValue = formatNumber(Number(value));\n break;\n }\n\n // Handle custom input\n if (input && options) {\n // If the custom input has an options array, find the option with a customValue matching the query value\n const selectedOption = options.find((option) => {\n return (typeof option === 'string' ? option : option.value) === value;\n });\n\n formattedValue = selectedOption\n ? typeof selectedOption === 'string'\n ? selectedOption\n : selectedOption.label ?? selectedOption.value\n : value;\n }\n\n const content = `${label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${operator !== '$null' && operator !== '$notNull' ? formattedValue : ''}`;\n\n return (\n <Tag padding={1} onClick={handleClick} icon={<Cross />}>\n {content}\n </Tag>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst Filters = {\n List,\n Popover: PopoverImpl,\n Root,\n Trigger,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Filters {\n export interface Filter {\n input?: React.ComponentType<ValueInputProps>;\n label: string;\n /**\n * the name of the attribute we use to display the actual name e.g. relations\n * are just ids, so we use the mainField to display something meaninginful by\n * looking at the target's schema\n */\n mainField?: MainField;\n name: string;\n operators?: Array<{\n label: string;\n value: string;\n }>;\n options?: Array<{ label?: string; value: string }> | string[];\n type: InputProps['type'] | 'relation' | 'custom';\n }\n\n export interface ValueInputProps extends Omit<Filter, 'label'> {\n ['aria-label']: string;\n }\n\n export type Props = RootProps;\n\n export interface TriggerProps {\n label?: string;\n }\n\n export interface Query {\n filters?: {\n /**\n * Typically, a filter will be:\n * ```ts\n * {\n * [attributeName]: {\n * [operator]: value\n * }\n * }\n * ```\n * However, for relation items it becomes more nested.\n * ```ts\n * {\n * [attributeName]: {\n * [relationTargetAttribute]: {\n * [operator]: value\n * }\n * }\n * }\n */\n $and?: Array<Record<string, Record<string, string | Record<string, string>>>>;\n };\n page?: number;\n }\n}\n\nexport { Filters };\n"],"names":["createContext","React","useControllableState","jsx","useIntl","setTriggerNode","setOpen","disabled","open","useComposedRefs","Button","FilterIcon","useQueryParams","options","triggerNode","onChange","PopoverPrimitives","Form","filter","InputRenderer","jsxs","Flex","Plus","Tag","Cross"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAM,YAAe,GAAA;AAAA,EACnB;AAAA,IACE,KAAO,EAAA,EAAE,EAAI,EAAA,2CAAA,EAA6C,gBAAgB,IAAK,EAAA;AAAA,IAC/E,KAAO,EAAA,KAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA,EAAE,EAAI,EAAA,2CAAA,EAA6C,gBAAgB,QAAS,EAAA;AAAA,IACnF,KAAO,EAAA,KAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,6CAAA;AAAA,MACJ,cAAgB,EAAA,SAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,OAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,gDAAA;AAAA,MACJ,cAAgB,EAAA,aAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,UAAA;AAAA,GACT;AACF,CAAA,CAAA;AAKA,MAAM,eAAkB,GAAA;AAAA,EACtB;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,2CAAA;AAAA,MACJ,cAAgB,EAAA,iBAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,KAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,4CAAA;AAAA,MACJ,cAAgB,EAAA,6BAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,MAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,2CAAA;AAAA,MACJ,cAAgB,EAAA,cAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,KAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,4CAAA;AAAA,MACJ,cAAgB,EAAA,0BAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,MAAA;AAAA,GACT;AACF,CAAA,CAAA;AAEA,MAAM,oBAAuB,GAAA;AAAA,EAC3B;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,4CAAA;AAAA,MACJ,cAAgB,EAAA,uBAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,MAAA;AAAA,GACT;AAAA,EAEA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,4CAAA;AAAA,MACJ,cAAgB,EAAA,2BAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,MAAA;AAAA,GACT;AACF,CAAA,CAAA;AAKA,MAAM,gBAAmB,GAAA;AAAA,EACvB;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,iDAAA;AAAA,MACJ,cAAgB,EAAA,UAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,WAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,kDAAA;AAAA,MACJ,cAAgB,EAAA,6BAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,YAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,oDAAA;AAAA,MACJ,cAAgB,EAAA,cAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,cAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,qDAAA;AAAA,MACJ,cAAgB,EAAA,iCAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,eAAA;AAAA,GACT;AACF,CAAA,CAAA;AAKA,MAAM,oBAAuB,GAAA;AAAA,EAC3B;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,mDAAA;AAAA,MACJ,cAAgB,EAAA,aAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,aAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,oDAAA;AAAA,MACJ,cAAgB,EAAA,gCAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,cAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,iDAAA;AAAA,MACJ,cAAgB,EAAA,WAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,WAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,kDAAA;AAAA,MACJ,cAAgB,EAAA,8BAAA;AAAA,KAClB;AAAA,IACA,KAAO,EAAA,YAAA;AAAA,GACT;AACF,CAAA;;ACpHA,MAAM,CAAC,eAAA,EAAiB,UAAU,CAAA,GAAIA,qBAAmC,SAAS,CAAA,CAAA;AASlF,MAAM,OAAO,CAAC;AAAA,EACZ,QAAA;AAAA,EACA,QAAW,GAAA,KAAA;AAAA,EACX,QAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAM,EAAA,QAAA;AAAA,EACN,WAAA;AAAA,EACA,UAAU,EAAC;AACb,CAAiB,KAAA;AACf,EAAA,MAAM,CAAC,WAAa,EAAA,cAAc,CAAI,GAAAC,gBAAA,CAAM,SAA6C,IAAI,CAAA,CAAA;AAC7F,EAAA,MAAM,CAAC,IAAA,GAAO,KAAO,EAAA,OAAO,IAAIC,0BAAqB,CAAA;AAAA,IACnD,IAAM,EAAA,QAAA;AAAA,IACN,WAAa,EAAA,WAAA;AAAA,IACb,QAAU,EAAA,YAAA;AAAA,GACX,CAAA,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,CAAC,IAAyB,KAAA;AAC7C,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAAA,KACf;AAAA,GACF,CAAA;AAEA,EACE,uBAAAC,cAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,QAAA;AAAA,MACA,QAAU,EAAA,YAAA;AAAA,MACV,IAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MAEC,QAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ,CAAA,CAAA;AAMA,MAAM,UAAUF,gBAAM,CAAA,UAAA;AAAA,EACpB,CAAC,EAAE,KAAM,EAAA,EAAG,YAAiB,KAAA;AAC3B,IAAM,MAAA,EAAE,aAAc,EAAA,GAAIG,iBAAQ,EAAA,CAAA;AAClC,IAAA,MAAM,EAAE,cAAA,EAAgB,OAAQ,EAAA,GAAI,UAAW,CAAA,SAAA,EAAW,CAAC,EAAE,cAAAC,EAAAA,eAAAA,EAAgB,OAAAC,EAAAA,QAAAA,EAAe,MAAA;AAAA,MAC1F,cAAAD,EAAAA,eAAAA;AAAA,MACA,OAAAC,EAAAA,QAAAA;AAAA,KACA,CAAA,CAAA,CAAA;AACF,IAAM,MAAA,QAAA,GAAW,WAAW,SAAW,EAAA,CAAC,EAAE,QAAAC,EAAAA,SAAAA,OAAeA,SAAQ,CAAA,CAAA;AACjE,IAAM,MAAA,IAAA,GAAO,WAAW,SAAW,EAAA,CAAC,EAAE,IAAAC,EAAAA,KAAAA,OAAWA,KAAI,CAAA,CAAA;AAErD,IAAM,MAAA,YAAA,GAAeC,4BAAgB,CAAA,YAAA,EAAc,cAAc,CAAA,CAAA;AAEjE,IAAA,MAAM,WAAc,GAAA,MAAM,OAAQ,CAAA,CAAC,IAAI,CAAA,CAAA;AAEvC,IACE,uBAAAN,cAAA;AAAA,MAACO,mBAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,UAAA;AAAA,QACR,GAAK,EAAA,YAAA;AAAA,QACL,SAAA,iCAAYC,YAAW,EAAA,EAAA,CAAA;AAAA,QACvB,OAAS,EAAA,WAAA;AAAA,QACT,IAAK,EAAA,GAAA;AAAA,QACL,QAAA;AAAA,QAEC,mBAAS,aAAc,CAAA,EAAE,IAAI,mBAAqB,EAAA,cAAA,EAAgB,WAAW,CAAA;AAAA,OAAA;AAAA,KAChF,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAMA,MAAM,cAAc,MAAM;AACxB,EAAA,MAAM,CAAC,EAAE,KAAA,EAAS,EAAA,QAAQ,IAAIC,qBAA8B,EAAA,CAAA;AAC5D,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIR,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,IAAA,GAAO,WAAW,SAAW,EAAA,CAAC,EAAE,IAAAI,EAAAA,KAAAA,OAAWA,KAAI,CAAA,CAAA;AACrD,EAAM,MAAA,OAAA,GAAU,WAAW,SAAW,EAAA,CAAC,EAAE,OAAAK,EAAAA,QAAAA,OAAcA,QAAO,CAAA,CAAA;AAC9D,EAAM,MAAA,WAAA,GAAc,WAAW,SAAW,EAAA,CAAC,EAAE,WAAAC,EAAAA,YAAAA,OAAkBA,YAAW,CAAA,CAAA;AAC1E,EAAM,MAAA,OAAA,GAAU,WAAW,SAAW,EAAA,CAAC,EAAE,OAAAR,EAAAA,QAAAA,OAAcA,QAAO,CAAA,CAAA;AAC9D,EAAM,MAAA,QAAA,GAAW,WAAW,SAAW,EAAA,CAAC,EAAE,QAAAS,EAAAA,SAAAA,OAAeA,SAAQ,CAAA,CAAA;AAEjE,EAAA,IAAI,CAAC,IAAQ,IAAA,OAAA,CAAQ,MAAW,KAAA,CAAA,IAAK,CAAC,WAAa,EAAA;AACjD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAM,MAAA,YAAA,GAAe,CAAC,IAAyB,KAAA;AAC7C,IAAI,IAAA,CAAC,KAAK,KAAO,EAAA;AACf,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAAA,KACf;AAKA,IAAM,MAAA,UAAA,GAAa,QAAQ,IAAK,CAAA,CAAC,WAAW,MAAO,CAAA,IAAA,KAAS,IAAK,CAAA,IAAI,CAAG,CAAA,IAAA,CAAA;AAYxE,IAAA,MAAM,oBAAuB,GAAA;AAAA,MAC3B,CAAC,IAAA,CAAK,MAAM,GAAG,IAAK,CAAA,KAAA;AAAA,KACtB,CAAA;AAEA,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,GAAG,KAAM,CAAA,OAAA;AAAA,MACT,IAAM,EAAA;AAAA,QACJ,GAAI,KAAA,CAAM,OAAS,EAAA,IAAA,IAAQ,EAAC;AAAA,QAC5B;AAAA,UACE,CAAC,IAAA,CAAK,IAAI,GACR,eAAe,UACX,GAAA;AAAA,YACE,EAAI,EAAA,oBAAA;AAAA,WAEN,GAAA,oBAAA;AAAA,SACR;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAA,QAAA,CAAS,EAAE,OAAA,EAAS,cAAgB,EAAA,IAAA,EAAM,GAAG,CAAA,CAAA;AAC7C,IAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAAA,GACf,CAAA;AAEA,EACE,uBAAAZ,cAAA;AAAA,IAACa,8BAAkB,CAAA,OAAA;AAAA,IAAlB;AAAA,MACC,MAAA,EAAQ,EAAE,OAAA,EAAS,WAAY,EAAA;AAAA,MAC/B,SAAA,EAAW,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,MAC9B,OAAS,EAAA,CAAA;AAAA,MACT,OAAS,EAAA,CAAA;AAAA,MACT,SAAU,EAAA,OAAA;AAAA,MAEV,QAAA,kBAAAb,cAAA;AAAA,QAACc,WAAA;AAAA,QAAA;AAAA,UACC,MAAO,EAAA,MAAA;AAAA,UACP,aACE,EAAA;AAAA,YACE,IAAA,EAAM,OAAQ,CAAA,CAAC,CAAG,EAAA,IAAA;AAAA,YAClB,MAAA,EAAQ,YAAa,CAAA,CAAC,CAAE,CAAA,KAAA;AAAA,WAC1B;AAAA,UAEF,QAAU,EAAA,YAAA;AAAA,UAET,WAAC,EAAE,MAAA,EAAQ,UAAY,EAAA,QAAA,EAAU,cAAmB,KAAA;AACnD,YAAM,MAAA,MAAA,GAAS,QAAQ,IAAK,CAAA,CAACC,YAAWA,OAAO,CAAA,IAAA,KAAS,WAAW,IAAI,CAAA,CAAA;AACvE,YAAM,MAAA,KAAA,GAAQ,QAAQ,KAAS,IAAAC,+BAAA,CAAA;AAC/B,YAAA,uBACGC,eAAA,CAAAC,iBAAA,EAAA,EAAK,SAAU,EAAA,QAAA,EAAS,UAAW,EAAA,SAAA,EAAU,GAAK,EAAA,CAAA,EAAG,KAAO,EAAA,EAAE,QAAU,EAAA,GAAA,EACtE,EAAA,QAAA,EAAA;AAAA,cAAA;AAAA,gBACC;AAAA,kBACE,CAAC,YAAY,GAAG,aAAc,CAAA;AAAA,oBAC5B,EAAI,EAAA,wBAAA;AAAA,oBACJ,cAAgB,EAAA,cAAA;AAAA,mBACjB,CAAA;AAAA,kBACD,IAAM,EAAA,MAAA;AAAA,kBACN,OAAS,EAAA,OAAA,CAAQ,GAAI,CAAA,CAACH,OAAY,MAAA;AAAA,oBAChC,OAAOA,OAAO,CAAA,KAAA;AAAA,oBACd,OAAOA,OAAO,CAAA,IAAA;AAAA,mBACd,CAAA,CAAA;AAAA,kBACF,YAAY,aAAc,CAAA;AAAA,oBACxB,EAAI,EAAA,wBAAA;AAAA,oBACJ,cAAgB,EAAA,cAAA;AAAA,mBACjB,CAAA;AAAA,kBACD,IAAM,EAAA,aAAA;AAAA,iBACR;AAAA,gBACA;AAAA,kBACE,CAAC,YAAY,GAAG,aAAc,CAAA;AAAA,oBAC5B,EAAI,EAAA,yBAAA;AAAA,oBACJ,cAAgB,EAAA,eAAA;AAAA,mBACjB,CAAA;AAAA,kBACD,IAAM,EAAA,QAAA;AAAA,kBACN,OAAA,EACE,QAAQ,SACR,IAAA,aAAA,CAAc,MAAM,CAAE,CAAA,GAAA,CAAI,CAAC,GAAS,MAAA;AAAA,oBAClC,KAAA,EAAO,aAAc,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA,oBAC9B,OAAO,GAAI,CAAA,KAAA;AAAA,mBACX,CAAA,CAAA;AAAA,kBACJ,aAAa,aAAc,CAAA;AAAA,oBACzB,EAAI,EAAA,yBAAA;AAAA,oBACJ,cAAgB,EAAA,eAAA;AAAA,mBACjB,CAAA;AAAA,kBACD,IAAM,EAAA,aAAA;AAAA,iBACR;AAAA,eACF,CAAE,GAAI,CAAA,CAAC,KACL,qBAAAf,cAAA,CAACgB,mCAAgC,GAAG,KAAA,EAAA,EAAhB,KAAM,CAAA,IAAiB,CAC5C,CAAA;AAAA,cACA,MAAA,IACD,WAAW,MACX,IAAA,UAAA,CAAW,WAAW,OACtB,IAAA,UAAA,CAAW,WAAW,UACpB,mBAAAhB,cAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,MAAA;AAAA,kBACJ,KAAO,EAAA,IAAA;AAAA,kBACP,cAAY,MAAO,CAAA,KAAA;AAAA,kBACnB,IAAK,EAAA,OAAA;AAAA,kBAEL,IAAM,EAAA,MAAA,CAAO,SAAW,EAAA,IAAA,IAAQ,MAAO,CAAA,IAAA;AAAA,iBAAA;AAAA,eAEvC,GAAA,IAAA;AAAA,8BACJA,cAAA;AAAA,gBAACO,mBAAA;AAAA,gBAAA;AAAA,kBACC,QAAA,EAAU,CAAC,QAAY,IAAA,YAAA;AAAA,kBACvB,IAAK,EAAA,GAAA;AAAA,kBACL,OAAQ,EAAA,WAAA;AAAA,kBACR,SAAA,iCAAYY,UAAK,EAAA,EAAA,CAAA;AAAA,kBACjB,IAAK,EAAA,QAAA;AAAA,kBACL,SAAS,EAAA,IAAA;AAAA,kBAER,wBAAc,EAAE,EAAA,EAAI,sBAAwB,EAAA,cAAA,EAAgB,cAAc,CAAA;AAAA,iBAAA;AAAA,eAC7E;AAAA,aACF,EAAA,CAAA,CAAA;AAAA,WAEJ;AAAA,SAAA;AAAA,OACF;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA,CAAA;AAKA,MAAM,aAAA,GAAgB,CAAC,MAA4C,KAAA;AACjE,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAEA,EAAA,MAAM,OAAO,MAAO,CAAA,SAAA,EAAW,OAAO,MAAO,CAAA,SAAA,CAAU,OAAO,MAAO,CAAA,IAAA,CAAA;AAErE,EAAA,QAAQ,IAAM;AAAA,IACZ,KAAK,OAAA,CAAA;AAAA,IACL,KAAK,MAAA,CAAA;AAAA,IACL,KAAK,aAAA,CAAA;AAAA,IACL,KAAK,QAAU,EAAA;AACb,MAAO,OAAA;AAAA,QACL,GAAG,YAAA;AAAA,QACH,GAAG,oBAAA;AAAA,QACH,GAAG,gBAAA;AAAA,QACH,GAAG,oBAAA;AAAA,OACL,CAAA;AAAA,KACF;AAAA,IAEA,KAAK,OAAA,CAAA;AAAA,IACL,KAAK,SAAA,CAAA;AAAA,IACL,KAAK,YAAA,CAAA;AAAA,IACL,KAAK,SAAW,EAAA;AACd,MAAA,OAAO,CAAC,GAAG,YAAc,EAAA,GAAG,eAAe,CAAA,CAAA;AAAA,KAC7C;AAAA,IACA,KAAK,MAAA,CAAA;AAAA,IACL,KAAK,MAAQ,EAAA;AACX,MAAA,OAAO,CAAC,GAAG,YAAA,EAAc,GAAG,eAAA,EAAiB,GAAG,gBAAgB,CAAA,CAAA;AAAA,KAClE;AAAA,IAEA,KAAK,UAAY,EAAA;AACf,MAAA,OAAO,CAAC,GAAG,YAAc,EAAA,GAAG,eAAe,CAAA,CAAA;AAAA,KAC7C;AAAA,IAEA;AACE,MAAA,OAAO,CAAC,GAAG,YAAc,EAAA,GAAG,oBAAoB,CAAA,CAAA;AAAA,GACpD;AACF,CAAA,CAAA;AAMA,MAAM,OAAO,MAAM;AACjB,EAAA,MAAM,CAAC,EAAE,KAAA,EAAS,EAAA,QAAQ,IAAIV,qBAA8B,EAAA,CAAA;AAE5D,EAAM,MAAA,OAAA,GAAU,WAAW,MAAQ,EAAA,CAAC,EAAE,OAAAC,EAAAA,QAAAA,OAAcA,QAAO,CAAA,CAAA;AAE3D,EAAM,MAAA,WAAA,GAAc,CAAC,IAAyB,KAAA;AAK5C,IAAM,MAAA,WAAA,GAAA,CAAe,OAAO,OAAS,EAAA,IAAA,IAAQ,EAAI,EAAA,MAAA,CAAO,CAAC,MAAW,KAAA;AAClE,MAAA,MAAM,CAAC,aAAa,CAAI,GAAA,MAAA,CAAO,KAAK,MAAM,CAAA,CAAA;AAC1C,MAAI,IAAA,aAAA,KAAkB,KAAK,IAAM,EAAA;AAC/B,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAEA,MAAM,MAAA,EAAE,IAAM,EAAA,SAAA,EAAc,GAAA,OAAA,CAAQ,IAAK,CAAA,CAAC,EAAE,IAAA,EAAW,KAAA,IAAA,KAAS,aAAa,CAAA,CAAA;AAE7E,MAAA,IAAI,SAAS,UAAY,EAAA;AACvB,QAAA,MAAM,YAAY,MAAO,CAAA,aAAa,CAAE,CAAA,SAAA,EAAW,QAAQ,IAAI,CAAA,CAAA;AAE/D,QAAI,IAAA,OAAO,cAAc,QAAU,EAAA;AACjC,UAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,MAAA,CAAO,KAAK,SAAS,CAAA,CAAA;AACxC,UAAM,MAAA,KAAA,GAAQ,UAAU,QAAQ,CAAA,CAAA;AAEhC,UAAA,OAAO,EAAE,QAAA,KAAa,IAAK,CAAA,MAAA,IAAU,UAAU,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,SACtD;AAEA,QAAO,OAAA,IAAA,CAAA;AAAA,OACF,MAAA;AACL,QAAM,MAAA,SAAA,GAAY,OAAO,aAAa,CAAA,CAAA;AACtC,QAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,MAAA,CAAO,KAAK,SAAS,CAAA,CAAA;AACxC,QAAM,MAAA,KAAA,GAAQ,UAAU,QAAQ,CAAA,CAAA;AAEhC,QAAA,OAAO,EAAE,QAAA,KAAa,IAAK,CAAA,MAAA,IAAU,UAAU,IAAK,CAAA,KAAA,CAAA,CAAA;AAAA,OACtD;AAAA,KACD,CAAA,CAAA;AAED,IAAS,QAAA,CAAA,EAAE,SAAS,EAAE,IAAA,EAAM,aAAe,EAAA,IAAA,EAAM,GAAG,CAAA,CAAA;AAAA,GACtD,CAAA;AAEA,EAAA,IAAI,CAAC,KAAA,EAAO,OAAS,EAAA,IAAA,EAAM,MAAQ,EAAA;AACjC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,6DAEK,QAAO,EAAA,KAAA,EAAA,OAAA,EAAS,IAAM,EAAA,GAAA,CAAI,CAAC,WAAgB,KAAA;AAC1C,IAAA,MAAM,CAAC,aAAa,CAAI,GAAA,MAAA,CAAO,KAAK,WAAW,CAAA,CAAA;AAC/C,IAAM,MAAA,MAAA,GAAS,QAAQ,IAAK,CAAA,CAAC,EAAE,IAAK,EAAA,KAAM,SAAS,aAAa,CAAA,CAAA;AAChE,IAAM,MAAA,SAAA,GAAY,YAAY,aAAa,CAAA,CAAA;AAE3C,IAAA,IAAI,CAAC,MAAU,IAAA,OAAO,SAAc,KAAA,QAAA,IAAY,cAAc,IAAM,EAAA;AAClE,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAI,IAAA,MAAA,CAAO,SAAS,UAAY,EAAA;AAC9B,MAAA,MAAM,WAAc,GAAA,SAAA,CAAU,MAAO,CAAA,SAAA,EAAW,QAAQ,IAAI,CAAA,CAAA;AAE5D,MAAI,IAAA,OAAO,gBAAgB,QAAU,EAAA;AACnC,QAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,MAAA,CAAO,KAAK,WAAW,CAAA,CAAA;AAC1C,QAAM,MAAA,KAAA,GAAQ,YAAY,QAAQ,CAAA,CAAA;AAClC,QACE,uBAAAV,cAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YAEE,GAAG,MAAA;AAAA,YACJ,OAAS,EAAA,WAAA;AAAA,YACT,QAAA;AAAA,YACA,KAAA;AAAA,WAAA;AAAA,UAJK,CAAG,EAAA,aAAa,CAAI,CAAA,EAAA,QAAQ,IAAI,KAAK,CAAA,CAAA;AAAA,SAK5C,CAAA;AAAA,OAEJ;AAEA,MAAO,OAAA,IAAA,CAAA;AAAA,KACF,MAAA;AACL,MAAA,MAAM,CAAC,QAAQ,CAAI,GAAA,MAAA,CAAO,KAAK,SAAS,CAAA,CAAA;AACxC,MAAM,MAAA,KAAA,GAAQ,UAAU,QAAQ,CAAA,CAAA;AAMhC,MAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAEA,MACE,uBAAAA,cAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UAEE,GAAG,MAAA;AAAA,UACJ,OAAS,EAAA,WAAA;AAAA,UACT,QAAA;AAAA,UACA,KAAA;AAAA,SAAA;AAAA,QAJK,CAAG,EAAA,aAAa,CAAI,CAAA,EAAA,QAAQ,IAAI,KAAK,CAAA,CAAA;AAAA,OAK5C,CAAA;AAAA,KAEJ;AAAA,GACD,CACH,EAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAQA,MAAM,eAAe,CAAC;AAAA,EACpB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG,MAAA;AACL,CAAyB,KAAA;AACvB,EAAA,MAAM,EAAE,aAAe,EAAA,UAAA,EAAY,UAAY,EAAA,YAAA,KAAiBC,iBAAQ,EAAA,CAAA;AAExE,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,OAAA,CAAQ,EAAE,IAAA,EAAM,KAAO,EAAA,MAAA,EAAQ,UAAU,CAAA,CAAA;AAAA,GAC3C,CAAA;AAEA,EAAA,MAAM,IAAO,GAAA,SAAA,EAAW,IAAO,GAAA,SAAA,CAAU,OAAO,MAAO,CAAA,IAAA,CAAA;AAEvD,EAAA,IAAI,cAAyB,GAAA,KAAA,CAAA;AAE7B,EAAA,QAAQ,IAAM;AAAA,IACZ,KAAK,MAAA;AACH,MAAA,cAAA,GAAiB,UAAW,CAAA,KAAA,EAAO,EAAE,SAAA,EAAW,QAAQ,CAAA,CAAA;AACxD,MAAA,MAAA;AAAA,IACF,KAAK,UAAA;AACH,MAAA,cAAA,GAAiB,WAAW,KAAO,EAAA,EAAE,WAAW,MAAQ,EAAA,SAAA,EAAW,SAAS,CAAA,CAAA;AAC5E,MAAA,MAAA;AAAA,IACF,KAAK,MAAA;AACH,MAAA,MAAM,CAAC,IAAM,EAAA,MAAM,CAAI,GAAA,KAAA,CAAM,MAAM,GAAG,CAAA,CAAA;AACtC,MAAM,MAAA,IAAA,uBAAW,IAAK,EAAA,CAAA;AACtB,MAAK,IAAA,CAAA,QAAA,CAAS,MAAO,CAAA,IAAI,CAAC,CAAA,CAAA;AAC1B,MAAK,IAAA,CAAA,UAAA,CAAW,MAAO,CAAA,MAAM,CAAC,CAAA,CAAA;AAE9B,MAAA,cAAA,GAAiB,WAAW,IAAM,EAAA;AAAA,QAChC,IAAM,EAAA,SAAA;AAAA,QACN,MAAQ,EAAA,SAAA;AAAA,OACT,CAAA,CAAA;AACD,MAAA,MAAA;AAAA,IACF,KAAK,OAAA,CAAA;AAAA,IACL,KAAK,SAAA,CAAA;AAAA,IACL,KAAK,YAAA,CAAA;AAAA,IACL,KAAK,SAAA;AACH,MAAiB,cAAA,GAAA,YAAA,CAAa,MAAO,CAAA,KAAK,CAAC,CAAA,CAAA;AAC3C,MAAA,MAAA;AAAA,GACJ;AAGA,EAAA,IAAI,SAAS,OAAS,EAAA;AAEpB,IAAA,MAAM,cAAiB,GAAA,OAAA,CAAQ,IAAK,CAAA,CAAC,MAAW,KAAA;AAC9C,MAAA,OAAA,CAAQ,OAAO,MAAA,KAAW,QAAW,GAAA,MAAA,GAAS,OAAO,KAAW,MAAA,KAAA,CAAA;AAAA,KACjE,CAAA,CAAA;AAED,IAAiB,cAAA,GAAA,cAAA,GACb,OAAO,cAAmB,KAAA,QAAA,GACxB,iBACA,cAAe,CAAA,KAAA,IAAS,eAAe,KACzC,GAAA,KAAA,CAAA;AAAA,GACN;AAEA,EAAA,MAAM,OAAU,GAAA,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,aAAc,CAAA;AAAA,IACxC,EAAA,EAAI,yCAAyC,QAAQ,CAAA,CAAA;AAAA,IACrD,cAAgB,EAAA,QAAA;AAAA,GACjB,CAAC,CAAI,CAAA,EAAA,QAAA,KAAa,WAAW,QAAa,KAAA,UAAA,GAAa,iBAAiB,EAAE,CAAA,CAAA,CAAA;AAE3E,EACE,uBAAAD,cAAA,CAACoB,gBAAI,EAAA,EAAA,OAAA,EAAS,CAAG,EAAA,OAAA,EAAS,aAAa,IAAM,kBAAApB,cAAA,CAACqB,WAAM,EAAA,EAAA,CAAA,EACjD,QACH,EAAA,OAAA,EAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAMA,MAAM,OAAU,GAAA;AAAA,EACd,IAAA;AAAA,EACA,OAAS,EAAA,WAAA;AAAA,EACT,IAAA;AAAA,EACA,OAAA;AACF;;;;"}
1
+ {"version":3,"file":"Filters-ogIU7Q6e.js","sources":["../../admin/src/constants/filters.ts","../../admin/src/components/Filters.tsx"],"sourcesContent":["import type { EntityService } from '@strapi/types';\nimport type { MessageDescriptor } from 'react-intl';\n\n/**\n * @description designed to be parsed by formatMessage from react-intl\n * then passed to a Select component.\n */\ninterface FilterOption {\n value: EntityService.Params.Filters.Operator.Where;\n label: MessageDescriptor;\n}\n\n/**\n * @description these are shared by everyone\n */\nconst BASE_FILTERS = [\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n label: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$null',\n defaultMessage: 'is null',\n },\n value: '$null',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notNull',\n defaultMessage: 'is not null',\n },\n value: '$notNull',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are numerical incl. dates.\n */\nconst NUMERIC_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gt',\n defaultMessage: 'is greater than',\n },\n value: '$gt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$gte',\n defaultMessage: 'is greater than or equal to',\n },\n value: '$gte',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lt',\n defaultMessage: 'is less than',\n },\n value: '$lt',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$lte',\n defaultMessage: 'is less than or equal to',\n },\n value: '$lte',\n },\n] satisfies FilterOption[];\n\nconst IS_SENSITIVE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$eqi',\n defaultMessage: 'is (case insensitive)',\n },\n value: '$eqi',\n },\n\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$nei',\n defaultMessage: 'is not (case insensitive)',\n },\n value: '$nei',\n },\n] satisfies FilterOption[];\n\n/**\n * @description typically performed on attributes that are strings for partial looking.\n */\nconst CONTAINS_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$contains',\n defaultMessage: 'contains',\n },\n value: '$contains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$containsi',\n defaultMessage: 'contains (case insensitive)',\n },\n value: '$containsi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContains',\n defaultMessage: 'not contains',\n },\n value: '$notContains',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$notContainsi',\n defaultMessage: 'not contains (case insensitive)',\n },\n value: '$notContainsi',\n },\n] satisfies FilterOption[];\n\n/**\n * @description only used on string attributes.\n */\nconst STRING_PARSE_FILTERS = [\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWith',\n defaultMessage: 'starts with',\n },\n value: '$startsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$startsWithi',\n defaultMessage: 'starts with (case insensitive)',\n },\n value: '$startsWithi',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWith',\n defaultMessage: 'ends with',\n },\n value: '$endsWith',\n },\n {\n label: {\n id: 'components.FilterOptions.FILTER_TYPES.$endsWithi',\n defaultMessage: 'ends with (case insensitive)',\n },\n value: '$endsWithi',\n },\n] satisfies FilterOption[];\n\nexport {\n BASE_FILTERS,\n NUMERIC_FILTERS,\n IS_SENSITIVE_FILTERS,\n CONTAINS_FILTERS,\n STRING_PARSE_FILTERS,\n};\nexport type { FilterOption };\n","import * as React from 'react';\n\nimport { Button, Flex, PopoverPrimitives, Tag, useComposedRefs } from '@strapi/design-system';\nimport { Plus, Filter as FilterIcon, Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport {\n BASE_FILTERS,\n CONTAINS_FILTERS,\n FilterOption,\n IS_SENSITIVE_FILTERS,\n NUMERIC_FILTERS,\n STRING_PARSE_FILTERS,\n} from '../constants/filters';\nimport { MainField } from '../content-manager/utils/attributes';\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\nimport { Form, InputProps } from './Form';\nimport { InputRenderer } from './FormInputs/Renderer';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FilterFormData {\n name: string;\n filter: string;\n value?: string;\n}\n\ninterface FitlersContextValue {\n disabled: boolean;\n onChange: (data: FilterFormData) => void;\n open: boolean;\n setOpen: (open: boolean) => void;\n setTriggerNode: (node: HTMLButtonElement | null) => void;\n triggerNode: HTMLButtonElement | null;\n options: Filters.Filter[];\n}\n\nconst [FiltersProvider, useFilters] = createContext<FitlersContextValue>('Filters');\n\ninterface RootProps\n extends Partial<Pick<FitlersContextValue, 'disabled' | 'onChange' | 'options' | 'open'>> {\n children: React.ReactNode;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst Root = ({\n children,\n disabled = false,\n onChange,\n onOpenChange,\n open: openProp,\n defaultOpen,\n options = [],\n}: RootProps) => {\n const [triggerNode, setTriggerNode] = React.useState<FitlersContextValue['triggerNode']>(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const handleChange = (data: FilterFormData) => {\n if (onChange) {\n onChange(data);\n }\n };\n\n return (\n <FiltersProvider\n disabled={disabled}\n onChange={handleChange}\n open={open}\n options={options}\n setOpen={setOpen}\n setTriggerNode={setTriggerNode}\n triggerNode={triggerNode}\n >\n {children}\n </FiltersProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Trigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst Trigger = React.forwardRef<HTMLButtonElement, Filters.TriggerProps>(\n ({ label }, forwardedRef) => {\n const { formatMessage } = useIntl();\n const { setTriggerNode, setOpen } = useFilters('Trigger', ({ setTriggerNode, setOpen }) => ({\n setTriggerNode,\n setOpen,\n }));\n const disabled = useFilters('Trigger', ({ disabled }) => disabled);\n const open = useFilters('Trigger', ({ open }) => open);\n\n const composedRefs = useComposedRefs(forwardedRef, setTriggerNode);\n\n const handleClick = () => setOpen(!open);\n\n return (\n <Button\n variant=\"tertiary\"\n ref={composedRefs}\n startIcon={<FilterIcon />}\n onClick={handleClick}\n size=\"S\"\n disabled={disabled}\n >\n {label || formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Popover\n * -----------------------------------------------------------------------------------------------*/\n\nconst PopoverImpl = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n const { formatMessage } = useIntl();\n const open = useFilters('Popover', ({ open }) => open);\n const options = useFilters('Popover', ({ options }) => options);\n const triggerNode = useFilters('Popover', ({ triggerNode }) => triggerNode);\n const setOpen = useFilters('Popover', ({ setOpen }) => setOpen);\n const onChange = useFilters('Popover', ({ onChange }) => onChange);\n\n if (!open || options.length === 0 || !triggerNode) {\n return null;\n }\n\n const handleSubmit = (data: FilterFormData) => {\n if (!data.value) {\n return;\n }\n\n if (onChange) {\n onChange(data);\n }\n\n /**\n * There will ALWAYS be an option because we use the options to create the form data.\n */\n const filterType = options.find((filter) => filter.name === data.name)!.type;\n\n /**\n * If the filter is a relation, we need to nest the filter object,\n * we always use ids to filter relations. But the nested object is\n * the operator & value pair. This value _could_ look like:\n * ```json\n * {\n * \"$eq\": \"1\",\n * }\n * ```\n */\n const operatorValuePairing = {\n [data.filter]: data.value,\n };\n\n const newFilterQuery = {\n ...query.filters,\n $and: [\n ...(query.filters?.$and ?? []),\n {\n [data.name]:\n filterType === 'relation'\n ? {\n id: operatorValuePairing,\n }\n : operatorValuePairing,\n },\n ],\n };\n\n setQuery({ filters: newFilterQuery, page: 1 });\n setOpen(false);\n };\n\n return (\n <PopoverPrimitives.Content\n source={{ current: triggerNode }}\n onDismiss={() => setOpen(false)}\n padding={3}\n spacing={4}\n maxHeight=\"unset\"\n >\n <Form\n method=\"POST\"\n initialValues={\n {\n name: options[0]?.name,\n filter: BASE_FILTERS[0].value,\n } satisfies FilterFormData\n }\n onSubmit={handleSubmit}\n >\n {({ values: formValues, modified, isSubmitting }) => {\n const filter = options.find((filter) => filter.name === formValues.name);\n const Input = filter?.input || InputRenderer;\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2} style={{ minWidth: 184 }}>\n {[\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n name: 'name',\n options: options.map((filter) => ({\n label: filter.label,\n value: filter.name,\n })),\n placholder: formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n }),\n type: 'enumeration' as const,\n },\n {\n ['aria-label']: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n name: 'filter',\n options:\n filter?.operators ||\n getFilterList(filter).map((opt) => ({\n label: formatMessage(opt.label),\n value: opt.value,\n })),\n placeholder: formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n }),\n type: 'enumeration' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n {filter &&\n formValues.filter &&\n formValues.filter !== '$null' &&\n formValues.filter !== '$notNull' ? (\n <Input\n {...filter}\n label={null}\n aria-label={filter.label}\n name=\"value\"\n // @ts-expect-error – if type is `custom` then `Input` will be a custom component.\n type={filter.mainField?.type ?? filter.type}\n />\n ) : null}\n <Button\n disabled={!modified || isSubmitting}\n size=\"L\"\n variant=\"secondary\"\n startIcon={<Plus />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Flex>\n );\n }}\n </Form>\n </PopoverPrimitives.Content>\n );\n};\n\n/**\n * Depending on the selected field find the possible filters to apply\n */\nconst getFilterList = (filter?: Filters.Filter): FilterOption[] => {\n if (!filter) {\n return [];\n }\n\n const type = filter.mainField?.type ? filter.mainField.type : filter.type;\n\n switch (type) {\n case 'email':\n case 'text':\n case 'enumeration':\n case 'string': {\n return [\n ...BASE_FILTERS,\n ...IS_SENSITIVE_FILTERS,\n ...CONTAINS_FILTERS,\n ...STRING_PARSE_FILTERS,\n ];\n }\n\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n case 'time':\n case 'date': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS, ...CONTAINS_FILTERS];\n }\n\n case 'datetime': {\n return [...BASE_FILTERS, ...NUMERIC_FILTERS];\n }\n\n default:\n return [...BASE_FILTERS, ...IS_SENSITIVE_FILTERS];\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * List\n * -----------------------------------------------------------------------------------------------*/\n\nconst List = () => {\n const [{ query }, setQuery] = useQueryParams<Filters.Query>();\n\n const options = useFilters('List', ({ options }) => options);\n\n const handleClick = (data: FilterFormData) => {\n /**\n * Check the name, operator and value to see if it already exists in the query\n * if it does, remove it.\n */\n const nextFilters = (query?.filters?.$and ?? []).filter((filter) => {\n const [attributeName] = Object.keys(filter);\n if (attributeName !== data.name) {\n return true;\n }\n\n const { type, mainField } = options.find(({ name }) => name === attributeName)!;\n\n if (type === 'relation') {\n const filterObj = filter[attributeName][mainField?.name ?? 'id'];\n\n if (typeof filterObj === 'object') {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n\n return true;\n } else {\n const filterObj = filter[attributeName];\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n return !(operator === data.filter && value === data.value);\n }\n });\n\n setQuery({ filters: { $and: nextFilters }, page: 1 });\n };\n\n if (!query?.filters?.$and?.length) {\n return null;\n }\n\n return (\n <>\n {query?.filters?.$and?.map((queryFilter) => {\n const [attributeName] = Object.keys(queryFilter);\n const filter = options.find(({ name }) => name === attributeName);\n const filterObj = queryFilter[attributeName];\n\n if (!filter || typeof filterObj !== 'object' || filterObj === null) {\n return null;\n }\n\n if (filter.type === 'relation') {\n const modelFilter = filterObj[filter.mainField?.name ?? 'id'];\n\n if (typeof modelFilter === 'object') {\n const [operator] = Object.keys(modelFilter);\n const value = modelFilter[operator];\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n\n return null;\n } else {\n const [operator] = Object.keys(filterObj);\n const value = filterObj[operator];\n\n /**\n * Something has gone wrong here, because the attribute is not a relation\n * but we have a nested filter object.\n */\n if (typeof value === 'object') {\n return null;\n }\n\n return (\n <AttributeTag\n key={`${attributeName}-${operator}-${value}`}\n {...filter}\n onClick={handleClick}\n operator={operator}\n value={value}\n />\n );\n }\n })}\n </>\n );\n};\n\ninterface AttributeTagProps extends Filters.Filter {\n onClick: (data: FilterFormData) => void;\n operator: string;\n value: string;\n}\n\nconst AttributeTag = ({\n input,\n label,\n mainField,\n name,\n onClick,\n operator,\n options,\n value,\n ...filter\n}: AttributeTagProps) => {\n const { formatMessage, formatDate, formatTime, formatNumber } = useIntl();\n\n const handleClick = () => {\n onClick({ name, value, filter: operator });\n };\n\n const type = mainField?.type ? mainField.type : filter.type;\n\n let formattedValue: string = value;\n\n switch (type) {\n case 'date':\n formattedValue = formatDate(value, { dateStyle: 'full' });\n break;\n case 'datetime':\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n break;\n case 'time':\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n break;\n case 'float':\n case 'integer':\n case 'biginteger':\n case 'decimal':\n formattedValue = formatNumber(Number(value));\n break;\n }\n\n // Handle custom input\n if (input && options) {\n // If the custom input has an options array, find the option with a customValue matching the query value\n const selectedOption = options.find((option) => {\n return (typeof option === 'string' ? option : option.value) === value;\n });\n\n formattedValue = selectedOption\n ? typeof selectedOption === 'string'\n ? selectedOption\n : selectedOption.label ?? selectedOption.value\n : value;\n }\n\n const content = `${label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${operator !== '$null' && operator !== '$notNull' ? formattedValue : ''}`;\n\n return (\n <Tag padding={1} onClick={handleClick} icon={<Cross />}>\n {content}\n </Tag>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EXPORTS\n * -----------------------------------------------------------------------------------------------*/\n\nconst Filters = {\n List,\n Popover: PopoverImpl,\n Root,\n Trigger,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Filters {\n export interface Filter {\n input?: React.ComponentType<ValueInputProps>;\n label: string;\n /**\n * the name of the attribute we use to display the actual name e.g. relations\n * are just ids, so we use the mainField to display something meaninginful by\n * looking at the target's schema\n */\n mainField?: MainField;\n name: string;\n operators?: Array<{\n label: string;\n value: string;\n }>;\n options?: Array<{ label?: string; value: string }> | string[];\n type: InputProps['type'] | 'relation' | 'custom';\n }\n\n export interface ValueInputProps extends Omit<Filter, 'label'> {\n ['aria-label']: string;\n }\n\n export type Props = RootProps;\n\n export interface TriggerProps {\n label?: string;\n }\n\n export interface Query {\n filters?: {\n /**\n * Typically, a filter will be:\n * ```ts\n * {\n * [attributeName]: {\n * [operator]: value\n * }\n * }\n * ```\n * However, for relation items it becomes more nested.\n * ```ts\n * {\n * [attributeName]: {\n * [relationTargetAttribute]: {\n * [operator]: value\n * }\n * }\n * }\n */\n $and?: Array<Record<string, Record<string, string | Record<string, string>>>>;\n };\n page?: number;\n }\n}\n\nexport { Filters };\n"],"names":["createContext","React","useControllableState","jsx","useIntl","setTriggerNode","setOpen","disabled","open","useComposedRefs","Button","FilterIcon","useQueryParams","options","triggerNode","onChange","PopoverPrimitives","Form","filter","InputRenderer","jsxs","Flex","Plus","Tag","Cross"],"mappings":"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"}
@@ -6,7 +6,7 @@ import pipe from 'lodash/fp/pipe';
6
6
  import { useIntl } from 'react-intl';
7
7
  import { j as useNotification, l as useField, aR as useGetInitialDataQuery, aT as ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD, a0 as Form, aN as capitalise, q as getTranslation, E as useForm, au as useDragAndDrop, aA as ItemTypes } from './reducers-TOuLOGw_.mjs';
8
8
  import { I as InputRenderer } from './useDocumentLayout-5UQF9Yls.mjs';
9
- import { B as BackButton } from './index--h1ljeG8.mjs';
9
+ import { B as BackButton } from './index-Sd8uo7mE.mjs';
10
10
  import { Menu, Link } from '@strapi/design-system/v2';
11
11
  import { Plus, Drag, Pencil, Cross, Cog } from '@strapi/icons';
12
12
  import { getEmptyImage } from 'react-dnd-html5-backend';
@@ -736,4 +736,4 @@ const Header = ({ name }) => {
736
736
  };
737
737
 
738
738
  export { ConfigurationForm as C, TEMP_FIELD_NAME as T };
739
- //# sourceMappingURL=Form-4WnSgaHv.mjs.map
739
+ //# sourceMappingURL=Form-qYMSW-OI.mjs.map