@shapio/cms 0.2.1 → 0.3.0

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 (302) hide show
  1. package/dist/admin/assets/{AssistError-hVUWpP3F.js → AssistError-BITJ_tpg.js} +2 -2
  2. package/dist/admin/assets/{AssistError-hVUWpP3F.js.map → AssistError-BITJ_tpg.js.map} +1 -1
  3. package/dist/admin/assets/{BlockMenuItems-B0g93m6M.js → BlockMenuItems-CcluK965.js} +2 -2
  4. package/dist/admin/assets/{BlockMenuItems-B0g93m6M.js.map → BlockMenuItems-CcluK965.js.map} +1 -1
  5. package/dist/admin/assets/Body-BXa9DhtH.js +2 -0
  6. package/dist/admin/assets/{Body-CFQKONK4.js.map → Body-BXa9DhtH.js.map} +1 -1
  7. package/dist/admin/assets/Builder-DcpRfXuc.js +2 -0
  8. package/dist/admin/assets/Builder-DcpRfXuc.js.map +1 -0
  9. package/dist/admin/assets/{ConfirmDialog-D6rs75TP.js → ConfirmDialog-B9nWhIIz.js} +2 -2
  10. package/dist/admin/assets/{ConfirmDialog-D6rs75TP.js.map → ConfirmDialog-B9nWhIIz.js.map} +1 -1
  11. package/dist/admin/assets/{CopyButton-Bc7crFDE.js → CopyButton-BoWb-xi1.js} +2 -2
  12. package/dist/admin/assets/{CopyButton-Bc7crFDE.js.map → CopyButton-BoWb-xi1.js.map} +1 -1
  13. package/dist/admin/assets/{CursorPager-BFPD_adV.js → CursorPager-BnxmTk47.js} +2 -2
  14. package/dist/admin/assets/{CursorPager-BFPD_adV.js.map → CursorPager-BnxmTk47.js.map} +1 -1
  15. package/dist/admin/assets/{ExternalLink-Cdfcyyed.js → ExternalLink-Eeb9mONJ.js} +2 -2
  16. package/dist/admin/assets/{ExternalLink-Cdfcyyed.js.map → ExternalLink-Eeb9mONJ.js.map} +1 -1
  17. package/dist/admin/assets/Form-DZRLD3vH.js +2 -0
  18. package/dist/admin/assets/Form-DZRLD3vH.js.map +1 -0
  19. package/dist/admin/assets/{FormCheckboxGroup-Bicl1CBP.js → FormCheckboxGroup-uIC2XQIL.js} +2 -2
  20. package/dist/admin/assets/{FormCheckboxGroup-Bicl1CBP.js.map → FormCheckboxGroup-uIC2XQIL.js.map} +1 -1
  21. package/dist/admin/assets/{FormRadioGroup-34iVSV4L.js → FormRadioGroup-hd95vPOu.js} +2 -2
  22. package/dist/admin/assets/{FormRadioGroup-34iVSV4L.js.map → FormRadioGroup-hd95vPOu.js.map} +1 -1
  23. package/dist/admin/assets/{FormSelectField-Ba4fIu-8.js → FormSelectField-D7VHmnx5.js} +2 -2
  24. package/dist/admin/assets/{FormSelectField-Ba4fIu-8.js.map → FormSelectField-D7VHmnx5.js.map} +1 -1
  25. package/dist/admin/assets/{FormSwitchField-DN6bfPC0.js → FormSwitchField-ft8Jbe6E.js} +2 -2
  26. package/dist/admin/assets/{FormSwitchField-DN6bfPC0.js.map → FormSwitchField-ft8Jbe6E.js.map} +1 -1
  27. package/dist/admin/assets/{FormTextareaField-WsNjLm32.js → FormTextareaField-DzyOzfZb.js} +2 -2
  28. package/dist/admin/assets/{FormTextareaField-WsNjLm32.js.map → FormTextareaField-DzyOzfZb.js.map} +1 -1
  29. package/dist/admin/assets/{HintedLabel-jKLM0ETt.js → HintedLabel-CvC46uy_.js} +2 -2
  30. package/dist/admin/assets/{HintedLabel-jKLM0ETt.js.map → HintedLabel-CvC46uy_.js.map} +1 -1
  31. package/dist/admin/assets/{InfoHint-DBqcrmZ3.js → InfoHint-GJLRVumb.js} +2 -2
  32. package/dist/admin/assets/{InfoHint-DBqcrmZ3.js.map → InfoHint-GJLRVumb.js.map} +1 -1
  33. package/dist/admin/assets/{InsertMenuItem-CRKXblK5.js → InsertMenuItem-D976G0Rj.js} +2 -2
  34. package/dist/admin/assets/{InsertMenuItem-CRKXblK5.js.map → InsertMenuItem-D976G0Rj.js.map} +1 -1
  35. package/dist/admin/assets/LinkTabs-BZSlA57U.js +2 -0
  36. package/dist/admin/assets/{LinkTabs-Bn2JVqOL.js.map → LinkTabs-BZSlA57U.js.map} +1 -1
  37. package/dist/admin/assets/Match-DdxTHHM4.js +2 -0
  38. package/dist/admin/assets/{Match-DaYgKrk7.js.map → Match-DdxTHHM4.js.map} +1 -1
  39. package/dist/admin/assets/{Panel-6wFe96Gr.js → Panel-iIKjEURi.js} +2 -2
  40. package/dist/admin/assets/{Panel-6wFe96Gr.js.map → Panel-iIKjEURi.js.map} +1 -1
  41. package/dist/admin/assets/{QueryView-DFZtm0fn.js → QueryView-D6aZQJRN.js} +2 -2
  42. package/dist/admin/assets/{QueryView-DFZtm0fn.js.map → QueryView-D6aZQJRN.js.map} +1 -1
  43. package/dist/admin/assets/{RadioTile-DsTyz7ml.js → RadioTile-BpB79rIK.js} +2 -2
  44. package/dist/admin/assets/{RadioTile-DsTyz7ml.js.map → RadioTile-BpB79rIK.js.map} +1 -1
  45. package/dist/admin/assets/{RichTextField-BGkH403g.js → RichTextField-BuHCONPu.js} +2 -2
  46. package/dist/admin/assets/{RichTextField-BGkH403g.js.map → RichTextField-BuHCONPu.js.map} +1 -1
  47. package/dist/admin/assets/{RowTitle-sFt6NjO4.js → RowTitle--uFCpx8n.js} +2 -2
  48. package/dist/admin/assets/{RowTitle-sFt6NjO4.js.map → RowTitle--uFCpx8n.js.map} +1 -1
  49. package/dist/admin/assets/{SecretReveal-Z6MOFdcL.js → SecretReveal-DFpzeNE0.js} +2 -2
  50. package/dist/admin/assets/{SecretReveal-Z6MOFdcL.js.map → SecretReveal-DFpzeNE0.js.map} +1 -1
  51. package/dist/admin/assets/SharedGlyph-Cqkx30tn.js +2 -0
  52. package/dist/admin/assets/SharedGlyph-Cqkx30tn.js.map +1 -0
  53. package/dist/admin/assets/{StepList-BTP_EMzx.js → StepList-BY5MuJPJ.js} +2 -2
  54. package/dist/admin/assets/{StepList-BTP_EMzx.js.map → StepList-BY5MuJPJ.js.map} +1 -1
  55. package/dist/admin/assets/Structure-CqRa2t7z.js +2 -0
  56. package/dist/admin/assets/{Structure-D5-hCUuF.js.map → Structure-CqRa2t7z.js.map} +1 -1
  57. package/dist/admin/assets/SubNavLink-B2o4kSZ9.js +2 -0
  58. package/dist/admin/assets/{SubNavLink-C5oN5mzB.js.map → SubNavLink-B2o4kSZ9.js.map} +1 -1
  59. package/dist/admin/assets/{SuggestAltButton-BuN35BBL.js → SuggestAltButton-4rf2xhEJ.js} +2 -2
  60. package/dist/admin/assets/{SuggestAltButton-BuN35BBL.js.map → SuggestAltButton-4rf2xhEJ.js.map} +1 -1
  61. package/dist/admin/assets/TextLink-D15oyXlc.js +2 -0
  62. package/dist/admin/assets/{TextLink-B4a6j3r6.js.map → TextLink-D15oyXlc.js.map} +1 -1
  63. package/dist/admin/assets/{Thumbnail-u8NE5NhQ.js → Thumbnail-CP5mfgNY.js} +2 -2
  64. package/dist/admin/assets/{Thumbnail-u8NE5NhQ.js.map → Thumbnail-CP5mfgNY.js.map} +1 -1
  65. package/dist/admin/assets/UnsavedChangesGuard-DgOASh0p.js +2 -0
  66. package/dist/admin/assets/{UnsavedChangesGuard-BYwMTDsE.js.map → UnsavedChangesGuard-DgOASh0p.js.map} +1 -1
  67. package/dist/admin/assets/{UserAvatar-D-yX0ozh.js → UserAvatar-BocvNVL-.js} +2 -2
  68. package/dist/admin/assets/{UserAvatar-D-yX0ozh.js.map → UserAvatar-BocvNVL-.js.map} +1 -1
  69. package/dist/admin/assets/{arrow-up-Ws7W9KsZ.js → arrow-up-gf_j6SVQ.js} +2 -2
  70. package/dist/admin/assets/{arrow-up-Ws7W9KsZ.js.map → arrow-up-gf_j6SVQ.js.map} +1 -1
  71. package/dist/admin/assets/auth-pcS9CCXu.js +2 -0
  72. package/dist/admin/assets/auth-pcS9CCXu.js.map +1 -0
  73. package/dist/admin/assets/badge-DD0mE96i.js +2 -0
  74. package/dist/admin/assets/{badge-CMox6-v3.js.map → badge-DD0mE96i.js.map} +1 -1
  75. package/dist/admin/assets/boxes-DcK-kaSa.js +2 -0
  76. package/dist/admin/assets/boxes-DcK-kaSa.js.map +1 -0
  77. package/dist/admin/assets/{calendar-clock-9W0Lkt89.js → calendar-clock-DEwACe0M.js} +2 -2
  78. package/dist/admin/assets/{calendar-clock-9W0Lkt89.js.map → calendar-clock-DEwACe0M.js.map} +1 -1
  79. package/dist/admin/assets/{changeSets-CO7JdILW.js → changeSets-BjUEfYbj.js} +2 -2
  80. package/dist/admin/assets/{changeSets-CO7JdILW.js.map → changeSets-BjUEfYbj.js.map} +1 -1
  81. package/dist/admin/assets/chevron-left-BsQYDUEC.js +2 -0
  82. package/dist/admin/assets/{chevron-left-DyqYjcMB.js.map → chevron-left-BsQYDUEC.js.map} +1 -1
  83. package/dist/admin/assets/{circle-check-aJ2DW5t4.js → circle-check-Dq1owihe.js} +2 -2
  84. package/dist/admin/assets/{circle-check-aJ2DW5t4.js.map → circle-check-Dq1owihe.js.map} +1 -1
  85. package/dist/admin/assets/{circle-x-BnRBht9z.js → circle-x-Dx6zIZko.js} +2 -2
  86. package/dist/admin/assets/{circle-x-BnRBht9z.js.map → circle-x-Dx6zIZko.js.map} +1 -1
  87. package/dist/admin/assets/{clock-DRtFQbTs.js → clock-DQvkffqQ.js} +2 -2
  88. package/dist/admin/assets/{clock-DRtFQbTs.js.map → clock-DQvkffqQ.js.map} +1 -1
  89. package/dist/admin/assets/cn-BQ3voEft.js +2 -0
  90. package/dist/admin/assets/cn-BQ3voEft.js.map +1 -0
  91. package/dist/admin/assets/coerce-OsqQRj19.js +2 -0
  92. package/dist/admin/assets/{coerce-COM3rk1i.js.map → coerce-OsqQRj19.js.map} +1 -1
  93. package/dist/admin/assets/constants-SrImR6C3.js +2 -0
  94. package/dist/admin/assets/constants-SrImR6C3.js.map +1 -0
  95. package/dist/admin/assets/content-_SLbbnfX.js +3 -0
  96. package/dist/admin/assets/content-_SLbbnfX.js.map +1 -0
  97. package/dist/admin/assets/{contentCounts-Ct0tYgHD.js → contentCounts-Ch3uMXVU.js} +2 -2
  98. package/dist/admin/assets/{contentCounts-Ct0tYgHD.js.map → contentCounts-Ch3uMXVU.js.map} +1 -1
  99. package/dist/admin/assets/contentTypes-BCOdUK_Z.js +2 -0
  100. package/dist/admin/assets/contentTypes-BCOdUK_Z.js.map +1 -0
  101. package/dist/admin/assets/{copy-B5B8RjV0.js → copy-BDc3r0fO.js} +2 -2
  102. package/dist/admin/assets/{copy-B5B8RjV0.js.map → copy-BDc3r0fO.js.map} +1 -1
  103. package/dist/admin/assets/{dateTimeLocal-BuBv3it2.js → dateTimeLocal-C92tyKwz.js} +2 -2
  104. package/dist/admin/assets/{dateTimeLocal-BuBv3it2.js.map → dateTimeLocal-C92tyKwz.js.map} +1 -1
  105. package/dist/admin/assets/develop-DS9TlDmv.js +11 -0
  106. package/dist/admin/assets/develop-DS9TlDmv.js.map +1 -0
  107. package/dist/admin/assets/{dropdown-menu-CW3fabv5.js → dropdown-menu-gmP2Rp3n.js} +2 -2
  108. package/dist/admin/assets/{dropdown-menu-CW3fabv5.js.map → dropdown-menu-gmP2Rp3n.js.map} +1 -1
  109. package/dist/admin/assets/{ellipsis-DNdmromA.js → ellipsis-NK0pWgqU.js} +2 -2
  110. package/dist/admin/assets/{ellipsis-DNdmromA.js.map → ellipsis-NK0pWgqU.js.map} +1 -1
  111. package/dist/admin/assets/{external-link-YnuWXDBk.js → external-link-D3Aoi2yX.js} +2 -2
  112. package/dist/admin/assets/{external-link-YnuWXDBk.js.map → external-link-D3Aoi2yX.js.map} +1 -1
  113. package/dist/admin/assets/{file-text-CB7Bc0GA.js → file-text-DxXAmmxL.js} +2 -2
  114. package/dist/admin/assets/{file-text-CB7Bc0GA.js.map → file-text-DxXAmmxL.js.map} +1 -1
  115. package/dist/admin/assets/fileRoute-C2tOrKhO.js +2 -0
  116. package/dist/admin/assets/{fileRoute-BYwireXG.js.map → fileRoute-C2tOrKhO.js.map} +1 -1
  117. package/dist/admin/assets/followPlural-CN6cQfNk.js +2 -0
  118. package/dist/admin/assets/followPlural-CN6cQfNk.js.map +1 -0
  119. package/dist/admin/assets/{globe-Bvs3UC3V.js → globe-CuElSilX.js} +2 -2
  120. package/dist/admin/assets/{globe-Bvs3UC3V.js.map → globe-CuElSilX.js.map} +1 -1
  121. package/dist/admin/assets/{image-CeoxwJeM.js → image-CsH8dZve.js} +2 -2
  122. package/dist/admin/assets/{image-CeoxwJeM.js.map → image-CsH8dZve.js.map} +1 -1
  123. package/dist/admin/assets/{image-off-iVqYw2Zc.js → image-off-B_uBCsYu.js} +2 -2
  124. package/dist/admin/assets/{image-off-iVqYw2Zc.js.map → image-off-B_uBCsYu.js.map} +1 -1
  125. package/dist/admin/assets/{inbox-DYbEOpaQ.js → inbox-3iAHL3pC.js} +2 -2
  126. package/dist/admin/assets/{inbox-DYbEOpaQ.js.map → inbox-3iAHL3pC.js.map} +1 -1
  127. package/dist/admin/assets/inbox-DsuXNaKE.js +2 -0
  128. package/dist/admin/assets/{inbox-wDoqym--.js.map → inbox-DsuXNaKE.js.map} +1 -1
  129. package/dist/admin/assets/index-BSzXA60W.js +4 -0
  130. package/dist/admin/assets/index-BSzXA60W.js.map +1 -0
  131. package/dist/admin/assets/{key-round-Bcw6qqcb.js → key-round-B17HiT3K.js} +2 -2
  132. package/dist/admin/assets/{key-round-Bcw6qqcb.js.map → key-round-B17HiT3K.js.map} +1 -1
  133. package/dist/admin/assets/link-2-off-hWGS8LW6.js +2 -0
  134. package/dist/admin/assets/link-2-off-hWGS8LW6.js.map +1 -0
  135. package/dist/admin/assets/{link-CKr_uUfb.js → link-bhHmG4Tc.js} +2 -2
  136. package/dist/admin/assets/{link-CKr_uUfb.js.map → link-bhHmG4Tc.js.map} +1 -1
  137. package/dist/admin/assets/{list-BElvKZw_.js → list-DRtRdjBC.js} +2 -2
  138. package/dist/admin/assets/{list-BElvKZw_.js.map → list-DRtRdjBC.js.map} +1 -1
  139. package/dist/admin/assets/{locales-Bnv3qcdZ.js → locales-BzPbz8FF.js} +2 -2
  140. package/dist/admin/assets/{locales-Bnv3qcdZ.js.map → locales-BzPbz8FF.js.map} +1 -1
  141. package/dist/admin/assets/media-WLnWaL7U.js +2 -0
  142. package/dist/admin/assets/{media-DjK3xGFN.js.map → media-WLnWaL7U.js.map} +1 -1
  143. package/dist/admin/assets/{media-BfDqe_2P.js → media-Xzot1ueY.js} +2 -2
  144. package/dist/admin/assets/{media-BfDqe_2P.js.map → media-Xzot1ueY.js.map} +1 -1
  145. package/dist/admin/assets/network-DHGqLwji.js +2 -0
  146. package/dist/admin/assets/network-DHGqLwji.js.map +1 -0
  147. package/dist/admin/assets/{pencil-Zd05MDs2.js → pencil-Bdp2z9D_.js} +2 -2
  148. package/dist/admin/assets/{pencil-Zd05MDs2.js.map → pencil-Bdp2z9D_.js.map} +1 -1
  149. package/dist/admin/assets/{plus-B0gd63Da.js → plus-BN_iSsnp.js} +2 -2
  150. package/dist/admin/assets/{plus-B0gd63Da.js.map → plus-BN_iSsnp.js.map} +1 -1
  151. package/dist/admin/assets/{preload-helper-CJKHb_rG.js → preload-helper-DAbCfXID.js} +2 -2
  152. package/dist/admin/assets/{preload-helper-CJKHb_rG.js.map → preload-helper-DAbCfXID.js.map} +1 -1
  153. package/dist/admin/assets/publishing-d9yhMwgA.js +2 -0
  154. package/dist/admin/assets/{publishing-vCVjaSGF.js.map → publishing-d9yhMwgA.js.map} +1 -1
  155. package/dist/admin/assets/{radio-group-DVR0mTpo.js → radio-group-DHIxK-IU.js} +2 -2
  156. package/dist/admin/assets/{radio-group-DVR0mTpo.js.map → radio-group-DHIxK-IU.js.map} +1 -1
  157. package/dist/admin/assets/{rotate-ccw-BOTDOdHf.js → rotate-ccw-CBoZle-b.js} +2 -2
  158. package/dist/admin/assets/{rotate-ccw-BOTDOdHf.js.map → rotate-ccw-CBoZle-b.js.map} +1 -1
  159. package/dist/admin/assets/{schedules-CG-ZphRK.js → schedules-Dy89Nm6P.js} +2 -2
  160. package/dist/admin/assets/{schedules-CG-ZphRK.js.map → schedules-Dy89Nm6P.js.map} +1 -1
  161. package/dist/admin/assets/schema-B4smPFcR.js +2 -0
  162. package/dist/admin/assets/schema-B4smPFcR.js.map +1 -0
  163. package/dist/admin/assets/{scroll-text-D-gHqYwR.js → scroll-text-UbyzpWh-.js} +2 -2
  164. package/dist/admin/assets/{scroll-text-D-gHqYwR.js.map → scroll-text-UbyzpWh-.js.map} +1 -1
  165. package/dist/admin/assets/{search-BcPL1qyc.js → search-_YlNpPvU.js} +2 -2
  166. package/dist/admin/assets/{search-BcPL1qyc.js.map → search-_YlNpPvU.js.map} +1 -1
  167. package/dist/admin/assets/searchSchema-CvOhn4FV.js +2 -0
  168. package/dist/admin/assets/{searchSchema-BGrRDBL_.js.map → searchSchema-CvOhn4FV.js.map} +1 -1
  169. package/dist/admin/assets/searchSchemas-BxRnxenn.js +2 -0
  170. package/dist/admin/assets/searchSchemas-BxRnxenn.js.map +1 -0
  171. package/dist/admin/assets/{sections-i9TeeK-h.js → sections-Bb3Q4bcY.js} +2 -2
  172. package/dist/admin/assets/{sections-i9TeeK-h.js.map → sections-Bb3Q4bcY.js.map} +1 -1
  173. package/dist/admin/assets/{sections-BrGcWOnw.js → sections-DiySZZHb.js} +2 -2
  174. package/dist/admin/assets/{sections-BrGcWOnw.js.map → sections-DiySZZHb.js.map} +1 -1
  175. package/dist/admin/assets/{select--nGB4WjU.js → select-tHVWX85X.js} +2 -2
  176. package/dist/admin/assets/{select--nGB4WjU.js.map → select-tHVWX85X.js.map} +1 -1
  177. package/dist/admin/assets/{send-Bu3RRfdI.js → send-BqECHYi6.js} +2 -2
  178. package/dist/admin/assets/{send-Bu3RRfdI.js.map → send-BqECHYi6.js.map} +1 -1
  179. package/dist/admin/assets/settings-D-v8gL8F.js +2 -0
  180. package/dist/admin/assets/settings-D-v8gL8F.js.map +1 -0
  181. package/dist/admin/assets/skeleton-C3QLIh7W.js +42 -0
  182. package/dist/admin/assets/skeleton-C3QLIh7W.js.map +1 -0
  183. package/dist/admin/assets/snapshots-BQrhsCmC.js +2 -0
  184. package/dist/admin/assets/{snapshots-CKjK-vkL.js.map → snapshots-BQrhsCmC.js.map} +1 -1
  185. package/dist/admin/assets/{sparkles-B_NX7PAY.js → sparkles-BW4CbD6W.js} +2 -2
  186. package/dist/admin/assets/{sparkles-B_NX7PAY.js.map → sparkles-BW4CbD6W.js.map} +1 -1
  187. package/dist/admin/assets/src-XaU0N8C-.js +4 -0
  188. package/dist/admin/assets/src-XaU0N8C-.js.map +1 -0
  189. package/dist/admin/assets/{stableId-Dmr2Afn_.js → stableId-C9Yq5iUw.js} +2 -2
  190. package/dist/admin/assets/{stableId-Dmr2Afn_.js.map → stableId-C9Yq5iUw.js.map} +1 -1
  191. package/dist/admin/assets/{store-B5xrQ1Ex.js → store-BphwUzV5.js} +2 -2
  192. package/dist/admin/assets/{store-B5xrQ1Ex.js.map → store-BphwUzV5.js.map} +1 -1
  193. package/dist/admin/assets/{switch-B-FbT-l8.js → switch-BVy02Vc8.js} +2 -2
  194. package/dist/admin/assets/{switch-B-FbT-l8.js.map → switch-BVy02Vc8.js.map} +1 -1
  195. package/dist/admin/assets/{table-DQzCPm7J.js → table-CZYtdoHn.js} +2 -2
  196. package/dist/admin/assets/{table-DQzCPm7J.js.map → table-CZYtdoHn.js.map} +1 -1
  197. package/dist/admin/assets/tabs-quHbeVxA.js +5 -0
  198. package/dist/admin/assets/{tabs-YThoOiE3.js.map → tabs-quHbeVxA.js.map} +1 -1
  199. package/dist/admin/assets/{textarea-_wcx8Mn1.js → textarea-B8Vl5gJ1.js} +2 -2
  200. package/dist/admin/assets/{textarea-_wcx8Mn1.js.map → textarea-B8Vl5gJ1.js.map} +1 -1
  201. package/dist/admin/assets/titles-B2z5ckxG.js +2 -0
  202. package/dist/admin/assets/{titles-DyCBLXue.js.map → titles-B2z5ckxG.js.map} +1 -1
  203. package/dist/admin/assets/{tokens-CqsxrApC.js → tokens-Fh_OeIlf.js} +2 -2
  204. package/dist/admin/assets/{tokens-CqsxrApC.js.map → tokens-Fh_OeIlf.js.map} +1 -1
  205. package/dist/admin/assets/{tooltip-BMe4HylJ.js → tooltip-DwqM3opE.js} +2 -2
  206. package/dist/admin/assets/{tooltip-BMe4HylJ.js.map → tooltip-DwqM3opE.js.map} +1 -1
  207. package/dist/admin/assets/{undo-2-DMOHOH6w.js → undo-2-D4Fz4JMZ.js} +2 -2
  208. package/dist/admin/assets/{undo-2-DMOHOH6w.js.map → undo-2-D4Fz4JMZ.js.map} +1 -1
  209. package/dist/admin/assets/{useAuditLabels-CSw_kwLs.js → useAuditLabels-DKrsrciQ.js} +2 -2
  210. package/dist/admin/assets/{useAuditLabels-CSw_kwLs.js.map → useAuditLabels-DKrsrciQ.js.map} +1 -1
  211. package/dist/admin/assets/useConfirmTarget-Dp8mCulm.js +2 -0
  212. package/dist/admin/assets/useConfirmTarget-Dp8mCulm.js.map +1 -0
  213. package/dist/admin/assets/{useContentSchema-CS5QQcRk.js → useContentSchema-Bv4_6VJR.js} +2 -2
  214. package/dist/admin/assets/{useContentSchema-CS5QQcRk.js.map → useContentSchema-Bv4_6VJR.js.map} +1 -1
  215. package/dist/admin/assets/{useCursorPager-Dt_axwd1.js → useCursorPager-B1upg5EU.js} +2 -2
  216. package/dist/admin/assets/{useCursorPager-Dt_axwd1.js.map → useCursorPager-B1upg5EU.js.map} +1 -1
  217. package/dist/admin/assets/{useDiscardGuard-7rRGpd4q.js → useDiscardGuard-34ynGJIk.js} +2 -2
  218. package/dist/admin/assets/{useDiscardGuard-7rRGpd4q.js.map → useDiscardGuard-34ynGJIk.js.map} +1 -1
  219. package/dist/admin/assets/{useMediaUploader-CBUcNW6d.js → useMediaUploader-QXSjZStv.js} +2 -2
  220. package/dist/admin/assets/{useMediaUploader-CBUcNW6d.js.map → useMediaUploader-QXSjZStv.js.map} +1 -1
  221. package/dist/admin/assets/{usePaletteItems-bbTIqpPu.js → usePaletteItems-62-TZhy7.js} +2 -2
  222. package/dist/admin/assets/{usePaletteItems-bbTIqpPu.js.map → usePaletteItems-62-TZhy7.js.map} +1 -1
  223. package/dist/admin/assets/usePlaces-CY6f2DmI.js +2 -0
  224. package/dist/admin/assets/usePlaces-CY6f2DmI.js.map +1 -0
  225. package/dist/admin/assets/{useQueries-DKGIdq6A.js → useQueries-BuKJBA0M.js} +2 -2
  226. package/dist/admin/assets/{useQueries-DKGIdq6A.js.map → useQueries-BuKJBA0M.js.map} +1 -1
  227. package/dist/admin/assets/useSchemaScopeAccess-DUBeS9kU.js +2 -0
  228. package/dist/admin/assets/useSchemaScopeAccess-DUBeS9kU.js.map +1 -0
  229. package/dist/admin/assets/{users-C1ZSee3N.js → users-BOn2ohJQ.js} +2 -2
  230. package/dist/admin/assets/{users-C1ZSee3N.js.map → users-BOn2ohJQ.js.map} +1 -1
  231. package/dist/admin/assets/{users-DMfQL0s4.js → users-BkKc4MNB.js} +2 -2
  232. package/dist/admin/assets/{users-DMfQL0s4.js.map → users-BkKc4MNB.js.map} +1 -1
  233. package/dist/admin/assets/{zod-Pf5A-ax4.js → zod-BHAd1wTC.js} +2 -2
  234. package/dist/admin/assets/{zod-Pf5A-ax4.js.map → zod-BHAd1wTC.js.map} +1 -1
  235. package/dist/admin/index.html +56 -55
  236. package/dist/cli.js +383 -163
  237. package/dist/cli.js.map +1 -1
  238. package/dist/config.d.ts +1 -1
  239. package/dist/config.js.map +1 -1
  240. package/dist/index.d.ts +6 -1
  241. package/dist/index.js +1 -1
  242. package/dist/{public-CKU0Gkfq.d.ts → public-CGO8RBn3.d.ts} +10 -2
  243. package/dist/{worker-C-MSYr4l.js → worker-BLXy8aRW.js} +2307 -1220
  244. package/dist/worker-BLXy8aRW.js.map +1 -0
  245. package/package.json +5 -6
  246. package/dist/admin/assets/Body-CFQKONK4.js +0 -2
  247. package/dist/admin/assets/Builder-Do5KVHV9.js +0 -2
  248. package/dist/admin/assets/Builder-Do5KVHV9.js.map +0 -1
  249. package/dist/admin/assets/LinkTabs-Bn2JVqOL.js +0 -2
  250. package/dist/admin/assets/Match-DaYgKrk7.js +0 -2
  251. package/dist/admin/assets/Structure-D5-hCUuF.js +0 -2
  252. package/dist/admin/assets/SubNavLink-C5oN5mzB.js +0 -2
  253. package/dist/admin/assets/TextLink-B4a6j3r6.js +0 -2
  254. package/dist/admin/assets/UnsavedChangesGuard-BYwMTDsE.js +0 -2
  255. package/dist/admin/assets/auth-b3_9QbtL.js +0 -2
  256. package/dist/admin/assets/auth-b3_9QbtL.js.map +0 -1
  257. package/dist/admin/assets/badge-CMox6-v3.js +0 -2
  258. package/dist/admin/assets/chevron-left-DyqYjcMB.js +0 -2
  259. package/dist/admin/assets/cn-DnXL75B0.js +0 -2
  260. package/dist/admin/assets/cn-DnXL75B0.js.map +0 -1
  261. package/dist/admin/assets/coerce-COM3rk1i.js +0 -2
  262. package/dist/admin/assets/constants-CS1ziZO0.js +0 -2
  263. package/dist/admin/assets/constants-CS1ziZO0.js.map +0 -1
  264. package/dist/admin/assets/content-Dic2fof_.js +0 -3
  265. package/dist/admin/assets/content-Dic2fof_.js.map +0 -1
  266. package/dist/admin/assets/contentTypes-D4_Ax9rb.js +0 -2
  267. package/dist/admin/assets/contentTypes-D4_Ax9rb.js.map +0 -1
  268. package/dist/admin/assets/develop-Brnb5YPC.js +0 -11
  269. package/dist/admin/assets/develop-Brnb5YPC.js.map +0 -1
  270. package/dist/admin/assets/errors-DfoXUVDI.js +0 -2
  271. package/dist/admin/assets/errors-DfoXUVDI.js.map +0 -1
  272. package/dist/admin/assets/fileRoute-BYwireXG.js +0 -2
  273. package/dist/admin/assets/inbox-wDoqym--.js +0 -2
  274. package/dist/admin/assets/index-57Mn6XLO.js +0 -4
  275. package/dist/admin/assets/index-57Mn6XLO.js.map +0 -1
  276. package/dist/admin/assets/link-2-DhM2vi4v.js +0 -2
  277. package/dist/admin/assets/link-2-DhM2vi4v.js.map +0 -1
  278. package/dist/admin/assets/link-2-off-DpDOMsa-.js +0 -2
  279. package/dist/admin/assets/link-2-off-DpDOMsa-.js.map +0 -1
  280. package/dist/admin/assets/media-DjK3xGFN.js +0 -2
  281. package/dist/admin/assets/network-CAJ76ILr.js +0 -2
  282. package/dist/admin/assets/network-CAJ76ILr.js.map +0 -1
  283. package/dist/admin/assets/publishing-vCVjaSGF.js +0 -2
  284. package/dist/admin/assets/schema-KXXSPVJn.js +0 -2
  285. package/dist/admin/assets/schema-KXXSPVJn.js.map +0 -1
  286. package/dist/admin/assets/searchSchema-BGrRDBL_.js +0 -2
  287. package/dist/admin/assets/searchSchemas-ChN9hhuQ.js +0 -2
  288. package/dist/admin/assets/searchSchemas-ChN9hhuQ.js.map +0 -1
  289. package/dist/admin/assets/settings-68BAxrPM.js +0 -2
  290. package/dist/admin/assets/settings-68BAxrPM.js.map +0 -1
  291. package/dist/admin/assets/skeleton-DUvclBAr.js +0 -42
  292. package/dist/admin/assets/skeleton-DUvclBAr.js.map +0 -1
  293. package/dist/admin/assets/snapshots-CKjK-vkL.js +0 -2
  294. package/dist/admin/assets/src-D6DABe5J.js +0 -4
  295. package/dist/admin/assets/src-D6DABe5J.js.map +0 -1
  296. package/dist/admin/assets/tabs-YThoOiE3.js +0 -5
  297. package/dist/admin/assets/titles-DyCBLXue.js +0 -2
  298. package/dist/admin/assets/useConfirmTarget-9JmfiY2X.js +0 -2
  299. package/dist/admin/assets/useConfirmTarget-9JmfiY2X.js.map +0 -1
  300. package/dist/admin/assets/usePlaces-D1raoQ2s.js +0 -2
  301. package/dist/admin/assets/usePlaces-D1raoQ2s.js.map +0 -1
  302. package/dist/worker-C-MSYr4l.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{t as r}from"./cn-DnXL75B0.js";t();var i=e(n(),1);function a({className:e,...t}){return(0,i.jsx)(`textarea`,{"data-slot":`textarea`,className:r(`flex field-sizing-content min-h-20 w-full rounded-lg border border-input bg-card px-3 py-2 text-base text-foreground transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/20 dark:aria-invalid:ring-destructive/40`,e),...t})}export{a as t};
2
- //# sourceMappingURL=textarea-_wcx8Mn1.js.map
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{t as r}from"./cn-BQ3voEft.js";t();var i=e(n(),1);function a({className:e,...t}){return(0,i.jsx)(`textarea`,{"data-slot":`textarea`,className:r(`flex field-sizing-content min-h-20 w-full rounded-lg border border-input bg-card px-3 py-2 text-base text-foreground transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/20 dark:aria-invalid:ring-destructive/40`,e),...t})}export{a as t};
2
+ //# sourceMappingURL=textarea-B8Vl5gJ1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textarea-_wcx8Mn1.js","names":["__toESM","require_jsx_runtime","cn","require_react","import_jsx_runtime","Textarea","props","className"],"sources":["../../src/components/ui/textarea.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '@/helpers/cn';\n\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'flex field-sizing-content min-h-20 w-full rounded-lg border border-input bg-card px-3 py-2 text-base text-foreground transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/20 dark:aria-invalid:ring-destructive/40',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n"],"mappings":"4LAGA,SAASK,EAAS,CAAE,YAAW,GAAGC,GAA2C,CAC3E,OACE,EAAAF,EAAA,IAAA,CAAC,WAAD,CACE,YAAU,WACV,UAAWF,EACT,qcACAK,CACF,EACA,GAAID,CACL,CAAA,CAEL"}
1
+ {"version":3,"file":"textarea-B8Vl5gJ1.js","names":["__toESM","require_jsx_runtime","cn","require_react","import_jsx_runtime","Textarea","props","className"],"sources":["../../src/components/ui/textarea.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '@/helpers/cn';\n\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'flex field-sizing-content min-h-20 w-full rounded-lg border border-input bg-card px-3 py-2 text-base text-foreground transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/20 dark:aria-invalid:ring-destructive/40',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n"],"mappings":"4LAGA,SAASK,EAAS,CAAE,YAAW,GAAGC,GAA2C,CAC3E,OACE,EAAAF,EAAA,IAAA,CAAC,WAAD,CACE,YAAU,WACV,UAAWF,EACT,qcACAK,CACF,EACA,GAAID,CACL,CAAA,CAEL"}
@@ -0,0 +1,2 @@
1
+ import{H as e,P as t,V as n,bt as r,l as i,s as a,ut as o}from"./cn-BQ3voEft.js";import{et as s}from"./auth-pcS9CCXu.js";import{C as c,S as l}from"./src-XaU0N8C-.js";var u={silent:!0},d=(e,n)=>s({queryKey:t.content.list(e,n),queryFn:()=>i.content.list(e,n),placeholderData:o,meta:u}),f=(t,n,r=!0)=>e({...d(t,n),enabled:r}),p=(e,n,r)=>s({queryKey:t.content.entry(e,n,r),queryFn:()=>i.content.get(e,n,r?{locale:r}:{}),staleTime:1/0,meta:u}),m=(t,n,r,i=!0)=>e({...p(t,n,r),enabled:i}),h=(e,n,r)=>(e.setQueryData(t.content.entry(n,r.id,r.locale),r),e.invalidateQueries({predicate:e=>e.queryKey[0]===`content`&&e.queryKey[1]===n&&(e.queryKey[2]===`list`||e.queryKey[2]===`revisions`)})),g=e=>{let t=r();return n({mutationKey:[`content`,e,`create`],meta:u,mutationFn:t=>a(()=>i.content.create(e,t)),onSuccess:n=>h(t,e,n)})},_=e=>{let t=r();return n({mutationKey:[`content`,e,`save`],meta:u,mutationFn:({id:t,input:n})=>a(()=>i.content.update(e,t,n)),onSuccess:n=>h(t,e,n)})},v=e=>e&&e.length>0?{locales:e}:{},y=e=>{let t=r();return n({mutationKey:[`content`,e,`publish`],meta:u,mutationFn:({id:t,locales:n})=>a(()=>i.content.publish(e,t,v(n))),onSuccess:n=>h(t,e,n)})},b=e=>{let t=r();return n({mutationKey:[`content`,e,`unpublish`],meta:u,mutationFn:({id:t,locales:n})=>a(()=>i.content.unpublish(e,t,v(n))),onSuccess:n=>h(t,e,n)})},x=e=>{let t=r();return n({mutationKey:[`content`,e,`duplicate`],mutationFn:t=>a(()=>i.content.duplicate(e,t)),onSuccess:n=>h(t,e,n)})},S=e=>{let o=r();return n({mutationKey:[`content`,e,`delete`],meta:u,mutationFn:t=>a(()=>i.content.remove(e,t)),onSuccess:()=>o.invalidateQueries({queryKey:t.content.model(e)})})},C=(n,r,a,o)=>e({queryKey:t.content.revisions(n,r,a),queryFn:()=>i.content.revisions(n,r,a?{locale:a}:{}),enabled:o,staleTime:0,meta:u}),w=(n,r,a)=>e({queryKey:t.content.revision(n,r,a??``),queryFn:()=>i.content.revision(n,r,a??``),enabled:a!==void 0,staleTime:1/0,meta:u}),T=e=>{let t=r();return n({mutationKey:[`content`,e,`restore`],meta:u,mutationFn:({id:t,revisionId:n,expectedVersion:r})=>a(()=>i.content.restore(e,t,n,r)),onSuccess:n=>h(t,e,n)})},E=e=>c(e),D=e=>{let t=E(e);return t!==void 0&&l.has(t.type)},O=(e,t)=>{let n=E(e),r=n?t[n.apiKey]:void 0;return typeof r==`string`&&r.trim()!==``?r:typeof r==`number`?String(r):void 0},k=e=>e.slice(0,8),A=(e,t,n)=>O(e,t.data)??`${n} · ${k(t.id)}`;export{_,E as a,g as c,m as d,f,C as g,w as h,k as i,S as l,T as m,D as n,d as o,y as p,A as r,p as s,O as t,x as u,b as v};
2
+ //# sourceMappingURL=titles-B2z5ckxG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"titles-DyCBLXue.js","names":["useQuery","queryKeys","useMutation","useQueryClient","adminApi","withCsrf","keepPreviousData","queryOptions","effectiveTitleField","TEXT_TITLE_FIELD_TYPES","silent","entryListQueryOptions","modelKey","query","useEntryList","entryQueryOptions","id","locale","useEntry","rememberEntry","queryClient","entry","useCreateEntry","input","useSaveEntry","localesBody","locales","usePublishEntry","useUnpublishEntry","useDuplicateEntry","useDeleteEntry","useRevisions","useRevision","revisionId","useRestoreRevision","expectedVersion","titleFieldOf","model","isSearchable","title","entryTitle","value","data","shortId","labelOf","item","untitled"],"sources":["../../src/api/content.ts","../../src/fields/helpers/titles.ts"],"sourcesContent":["import type { AdminEntry, ContentListQuery, CreateEntryInput, UpdateEntryInput } from '@shapio/client';\nimport {\n keepPreviousData,\n queryOptions,\n useMutation,\n useQuery,\n useQueryClient,\n type QueryClient,\n} from '@tanstack/react-query';\nimport { adminApi } from './client';\nimport { withCsrf } from './csrf';\nimport { queryKeys } from './queryKeys';\n\n/**\n * Content of any model (`/api/admin/content/:modelKey`). Mutations are silent: the entry form and list\n * show failures themselves (inline issues, the conflict dialog, the \"still referenced\" explanation).\n */\nconst silent = { silent: true } as const;\n\nexport const entryListQueryOptions = (modelKey: string, query: ContentListQuery) =>\n queryOptions({\n queryKey: queryKeys.content.list(modelKey, query),\n queryFn: () => adminApi.content.list(modelKey, query),\n placeholderData: keepPreviousData,\n meta: silent,\n });\n\nexport const useEntryList = (modelKey: string, query: ContentListQuery, enabled = true) =>\n useQuery({ ...entryListQueryOptions(modelKey, query), enabled });\n\nexport const entryQueryOptions = (modelKey: string, id: string, locale: string | undefined) =>\n queryOptions({\n queryKey: queryKeys.content.entry(modelKey, id, locale),\n queryFn: () => adminApi.content.get(modelKey, id, locale ? { locale } : {}),\n // The form owns the values once loaded; it is refreshed explicitly (conflicts, restores, locales).\n staleTime: Infinity,\n meta: silent,\n });\n\nexport const useEntry = (modelKey: string, id: string, locale: string | undefined, enabled = true) =>\n useQuery({ ...entryQueryOptions(modelKey, id, locale), enabled });\n\n/** Remembers a write's result as the entry's latest state and refreshes that model's lists. */\nconst rememberEntry = (queryClient: QueryClient, modelKey: string, entry: AdminEntry) => {\n queryClient.setQueryData(queryKeys.content.entry(modelKey, entry.id, entry.locale), entry);\n return queryClient.invalidateQueries({\n predicate: (query) =>\n query.queryKey[0] === 'content' &&\n query.queryKey[1] === modelKey &&\n (query.queryKey[2] === 'list' || query.queryKey[2] === 'revisions'),\n });\n};\n\nexport const useCreateEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'create'],\n meta: silent,\n mutationFn: (input: CreateEntryInput) => withCsrf(() => adminApi.content.create(modelKey, input)),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n\nexport const useSaveEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'save'],\n meta: silent,\n mutationFn: ({ id, input }: { id: string; input: UpdateEntryInput }) =>\n withCsrf(() => adminApi.content.update(modelKey, id, input)),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n\n/** Omitting `locales` targets the request's default locale; it is the only form a non-localized model accepts. */\ntype LocalesVariables = { id: string; locales?: string[] };\n\n/** The body never carries an empty `locales` array: the API requires at least one locale when it is sent. */\nconst localesBody = (locales?: string[]) => (locales && locales.length > 0 ? { locales } : {});\n\nexport const usePublishEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'publish'],\n meta: silent,\n mutationFn: ({ id, locales }: LocalesVariables) =>\n withCsrf(() => adminApi.content.publish(modelKey, id, localesBody(locales))),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n\nexport const useUnpublishEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'unpublish'],\n meta: silent,\n mutationFn: ({ id, locales }: LocalesVariables) =>\n withCsrf(() => adminApi.content.unpublish(modelKey, id, localesBody(locales))),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n\nexport const useDuplicateEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'duplicate'],\n mutationFn: (id: string) => withCsrf(() => adminApi.content.duplicate(modelKey, id)),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n\n/** 409 ENTRY_REFERENCED comes back to the caller, which explains what still points at the entry. */\nexport const useDeleteEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'delete'],\n meta: silent,\n mutationFn: (id: string) => withCsrf(() => adminApi.content.remove(modelKey, id)),\n onSuccess: () => queryClient.invalidateQueries({ queryKey: queryKeys.content.model(modelKey) }),\n });\n};\n\nexport const useRevisions = (modelKey: string, id: string, locale: string | undefined, enabled: boolean) =>\n useQuery({\n queryKey: queryKeys.content.revisions(modelKey, id, locale),\n queryFn: () => adminApi.content.revisions(modelKey, id, locale ? { locale } : {}),\n enabled,\n staleTime: 0,\n meta: silent,\n });\n\nexport const useRevision = (modelKey: string, id: string, revisionId: string | undefined) =>\n useQuery({\n queryKey: queryKeys.content.revision(modelKey, id, revisionId ?? ''),\n queryFn: () => adminApi.content.revision(modelKey, id, revisionId ?? ''),\n enabled: revisionId !== undefined,\n staleTime: Infinity,\n meta: silent,\n });\n\nexport const useRestoreRevision = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'restore'],\n meta: silent,\n mutationFn: ({\n id,\n revisionId,\n expectedVersion,\n }: {\n id: string;\n revisionId: string;\n expectedVersion: number;\n }) => withCsrf(() => adminApi.content.restore(modelKey, id, revisionId, expectedVersion)),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n","import type { AdminEntryListItem } from '@shapio/client';\nimport {\n effectiveTitleField,\n TEXT_TITLE_FIELD_TYPES,\n type FieldDefinition,\n type ModelDefinition,\n} from '@shapio/schema';\n\n/**\n * The field that labels a model's entries in lists, pickers and relation summaries: the configured title\n * field, or the first text field when none is set (the same rule the API's `q` search uses).\n */\nexport const titleFieldOf = (model: ModelDefinition): FieldDefinition | undefined =>\n effectiveTitleField(model);\n\n/** Whether the list API's `q` search works for this model (it searches the title field, if it is text). */\nexport const isSearchable = (model: ModelDefinition): boolean => {\n const title = titleFieldOf(model);\n return title !== undefined && TEXT_TITLE_FIELD_TYPES.has(title.type);\n};\n\n/** An entry's label: its title field's text, or undefined (callers show \"Untitled\"). */\nexport const entryTitle = (\n model: ModelDefinition,\n data: Readonly<Record<string, unknown>>,\n): string | undefined => {\n const title = titleFieldOf(model);\n const value = title ? data[title.apiKey] : undefined;\n return typeof value === 'string' && value.trim() !== ''\n ? value\n : typeof value === 'number'\n ? String(value)\n : undefined;\n};\n\nexport const shortId = (id: string) => id.slice(0, 8);\n\nexport const labelOf = (\n model: ModelDefinition,\n item: Pick<AdminEntryListItem, 'id' | 'data'>,\n untitled: string,\n) => entryTitle(model, item.data) ?? `${untitled} · ${shortId(item.id)}`;\n"],"mappings":"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"}
1
+ {"version":3,"file":"titles-B2z5ckxG.js","names":["useQuery","queryKeys","useMutation","useQueryClient","adminApi","withCsrf","keepPreviousData","queryOptions","effectiveTitleField","TEXT_TITLE_FIELD_TYPES","silent","entryListQueryOptions","modelKey","query","useEntryList","entryQueryOptions","id","locale","useEntry","rememberEntry","queryClient","entry","useCreateEntry","input","useSaveEntry","localesBody","locales","usePublishEntry","useUnpublishEntry","useDuplicateEntry","useDeleteEntry","useRevisions","useRevision","revisionId","useRestoreRevision","expectedVersion","titleFieldOf","model","isSearchable","title","entryTitle","value","data","shortId","labelOf","item","untitled"],"sources":["../../src/api/content.ts","../../src/fields/helpers/titles.ts"],"sourcesContent":["import type { AdminEntry, ContentListQuery, CreateEntryInput, UpdateEntryInput } from '@shapio/client';\nimport {\n keepPreviousData,\n queryOptions,\n useMutation,\n useQuery,\n useQueryClient,\n type QueryClient,\n} from '@tanstack/react-query';\nimport { adminApi } from './client';\nimport { withCsrf } from './csrf';\nimport { queryKeys } from './queryKeys';\n\n/**\n * Content of any model (`/api/admin/content/:modelKey`). Mutations are silent: the entry form and list\n * show failures themselves (inline issues, the conflict dialog, the \"still referenced\" explanation).\n */\nconst silent = { silent: true } as const;\n\nexport const entryListQueryOptions = (modelKey: string, query: ContentListQuery) =>\n queryOptions({\n queryKey: queryKeys.content.list(modelKey, query),\n queryFn: () => adminApi.content.list(modelKey, query),\n placeholderData: keepPreviousData,\n meta: silent,\n });\n\nexport const useEntryList = (modelKey: string, query: ContentListQuery, enabled = true) =>\n useQuery({ ...entryListQueryOptions(modelKey, query), enabled });\n\nexport const entryQueryOptions = (modelKey: string, id: string, locale: string | undefined) =>\n queryOptions({\n queryKey: queryKeys.content.entry(modelKey, id, locale),\n queryFn: () => adminApi.content.get(modelKey, id, locale ? { locale } : {}),\n // The form owns the values once loaded; it is refreshed explicitly (conflicts, restores, locales).\n staleTime: Infinity,\n meta: silent,\n });\n\nexport const useEntry = (modelKey: string, id: string, locale: string | undefined, enabled = true) =>\n useQuery({ ...entryQueryOptions(modelKey, id, locale), enabled });\n\n/** Remembers a write's result as the entry's latest state and refreshes that model's lists. */\nconst rememberEntry = (queryClient: QueryClient, modelKey: string, entry: AdminEntry) => {\n queryClient.setQueryData(queryKeys.content.entry(modelKey, entry.id, entry.locale), entry);\n return queryClient.invalidateQueries({\n predicate: (query) =>\n query.queryKey[0] === 'content' &&\n query.queryKey[1] === modelKey &&\n (query.queryKey[2] === 'list' || query.queryKey[2] === 'revisions'),\n });\n};\n\nexport const useCreateEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'create'],\n meta: silent,\n mutationFn: (input: CreateEntryInput) => withCsrf(() => adminApi.content.create(modelKey, input)),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n\nexport const useSaveEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'save'],\n meta: silent,\n mutationFn: ({ id, input }: { id: string; input: UpdateEntryInput }) =>\n withCsrf(() => adminApi.content.update(modelKey, id, input)),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n\n/** Omitting `locales` targets the request's default locale; it is the only form a non-localized model accepts. */\ntype LocalesVariables = { id: string; locales?: string[] };\n\n/** The body never carries an empty `locales` array: the API requires at least one locale when it is sent. */\nconst localesBody = (locales?: string[]) => (locales && locales.length > 0 ? { locales } : {});\n\nexport const usePublishEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'publish'],\n meta: silent,\n mutationFn: ({ id, locales }: LocalesVariables) =>\n withCsrf(() => adminApi.content.publish(modelKey, id, localesBody(locales))),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n\nexport const useUnpublishEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'unpublish'],\n meta: silent,\n mutationFn: ({ id, locales }: LocalesVariables) =>\n withCsrf(() => adminApi.content.unpublish(modelKey, id, localesBody(locales))),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n\nexport const useDuplicateEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'duplicate'],\n mutationFn: (id: string) => withCsrf(() => adminApi.content.duplicate(modelKey, id)),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n\n/** 409 ENTRY_REFERENCED comes back to the caller, which explains what still points at the entry. */\nexport const useDeleteEntry = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'delete'],\n meta: silent,\n mutationFn: (id: string) => withCsrf(() => adminApi.content.remove(modelKey, id)),\n onSuccess: () => queryClient.invalidateQueries({ queryKey: queryKeys.content.model(modelKey) }),\n });\n};\n\nexport const useRevisions = (modelKey: string, id: string, locale: string | undefined, enabled: boolean) =>\n useQuery({\n queryKey: queryKeys.content.revisions(modelKey, id, locale),\n queryFn: () => adminApi.content.revisions(modelKey, id, locale ? { locale } : {}),\n enabled,\n staleTime: 0,\n meta: silent,\n });\n\nexport const useRevision = (modelKey: string, id: string, revisionId: string | undefined) =>\n useQuery({\n queryKey: queryKeys.content.revision(modelKey, id, revisionId ?? ''),\n queryFn: () => adminApi.content.revision(modelKey, id, revisionId ?? ''),\n enabled: revisionId !== undefined,\n staleTime: Infinity,\n meta: silent,\n });\n\nexport const useRestoreRevision = (modelKey: string) => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['content', modelKey, 'restore'],\n meta: silent,\n mutationFn: ({\n id,\n revisionId,\n expectedVersion,\n }: {\n id: string;\n revisionId: string;\n expectedVersion: number;\n }) => withCsrf(() => adminApi.content.restore(modelKey, id, revisionId, expectedVersion)),\n onSuccess: (entry) => rememberEntry(queryClient, modelKey, entry),\n });\n};\n","import type { AdminEntryListItem } from '@shapio/client';\nimport {\n effectiveTitleField,\n TEXT_TITLE_FIELD_TYPES,\n type FieldDefinition,\n type ModelDefinition,\n} from '@shapio/schema';\n\n/**\n * The field that labels a model's entries in lists, pickers and relation summaries: the configured title\n * field, or the first text field when none is set (the same rule the API's `q` search uses).\n */\nexport const titleFieldOf = (model: ModelDefinition): FieldDefinition | undefined =>\n effectiveTitleField(model);\n\n/** Whether the list API's `q` search works for this model (it searches the title field, if it is text). */\nexport const isSearchable = (model: ModelDefinition): boolean => {\n const title = titleFieldOf(model);\n return title !== undefined && TEXT_TITLE_FIELD_TYPES.has(title.type);\n};\n\n/** An entry's label: its title field's text, or undefined (callers show \"Untitled\"). */\nexport const entryTitle = (\n model: ModelDefinition,\n data: Readonly<Record<string, unknown>>,\n): string | undefined => {\n const title = titleFieldOf(model);\n const value = title ? data[title.apiKey] : undefined;\n return typeof value === 'string' && value.trim() !== ''\n ? value\n : typeof value === 'number'\n ? String(value)\n : undefined;\n};\n\nexport const shortId = (id: string) => id.slice(0, 8);\n\nexport const labelOf = (\n model: ModelDefinition,\n item: Pick<AdminEntryListItem, 'id' | 'data'>,\n untitled: string,\n) => entryTitle(model, item.data) ?? `${untitled} · ${shortId(item.id)}`;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{H as e,P as t,V as n,bt as r,l as i,s as a}from"./cn-DnXL75B0.js";var o=()=>e({queryKey:t.tokens,queryFn:()=>i.tokens.list(),meta:{silent:!0}}),s=()=>{let e=r();return n({mutationKey:[`tokens`,`create`],meta:{silent:!0},mutationFn:e=>a(()=>i.tokens.create(e)),onSuccess:()=>e.invalidateQueries({queryKey:t.tokens})})},c=()=>{let e=r();return n({mutationKey:[`tokens`,`revoke`],mutationFn:e=>a(()=>i.tokens.revoke(e)),onSettled:()=>e.invalidateQueries({queryKey:t.tokens})})};export{s as n,c as r,o as t};
2
- //# sourceMappingURL=tokens-CqsxrApC.js.map
1
+ import{H as e,P as t,V as n,bt as r,l as i,s as a}from"./cn-BQ3voEft.js";var o=()=>e({queryKey:t.tokens,queryFn:()=>i.tokens.list(),meta:{silent:!0}}),s=()=>{let e=r();return n({mutationKey:[`tokens`,`create`],meta:{silent:!0},mutationFn:e=>a(()=>i.tokens.create(e)),onSuccess:()=>e.invalidateQueries({queryKey:t.tokens})})},c=()=>{let e=r();return n({mutationKey:[`tokens`,`revoke`],mutationFn:e=>a(()=>i.tokens.revoke(e)),onSettled:()=>e.invalidateQueries({queryKey:t.tokens})})};export{s as n,c as r,o as t};
2
+ //# sourceMappingURL=tokens-Fh_OeIlf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens-CqsxrApC.js","names":["useQuery","queryKeys","useMutation","useQueryClient","adminApi","withCsrf","useApiTokens","useCreateApiToken","queryClient","input","useRevokeApiToken","id"],"sources":["../../src/api/tokens.ts"],"sourcesContent":["import type { CreateApiTokenInput } from '@shapio/client';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { adminApi } from './client';\nimport { withCsrf } from './csrf';\nimport { queryKeys } from './queryKeys';\n\nexport const useApiTokens = () =>\n useQuery({ queryKey: queryKeys.tokens, queryFn: () => adminApi.tokens.list(), meta: { silent: true } });\n\nexport const useCreateApiToken = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['tokens', 'create'],\n meta: { silent: true },\n mutationFn: (input: CreateApiTokenInput) => withCsrf(() => adminApi.tokens.create(input)),\n onSuccess: () => queryClient.invalidateQueries({ queryKey: queryKeys.tokens }),\n });\n};\n\nexport const useRevokeApiToken = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['tokens', 'revoke'],\n mutationFn: (id: string) => withCsrf(() => adminApi.tokens.revoke(id)),\n onSettled: () => queryClient.invalidateQueries({ queryKey: queryKeys.tokens }),\n });\n};\n"],"mappings":"yEAMA,IAAaM,MACXN,EAAS,CAAE,SAAUC,EAAU,OAAQ,YAAeG,EAAS,OAAO,KAAK,EAAG,KAAM,CAAE,OAAQ,EAAK,CAAE,CAAC,EAE3FG,MAA0B,CACrC,IAAMC,EAAcL,EAAe,EACnC,OAAOD,EAAY,CACjB,YAAa,CAAC,SAAU,QAAQ,EAChC,KAAM,CAAE,OAAQ,EAAK,EACrB,WAAa,GAA+BG,MAAeD,EAAS,OAAO,OAAOK,CAAK,CAAC,EACxF,cAAiBD,EAAY,kBAAkB,CAAE,SAAUP,EAAU,MAAO,CAAC,CAC/E,CAAC,CACH,EAEaS,MAA0B,CACrC,IAAMF,EAAcL,EAAe,EACnC,OAAOD,EAAY,CACjB,YAAa,CAAC,SAAU,QAAQ,EAChC,WAAa,GAAeG,MAAeD,EAAS,OAAO,OAAOO,CAAE,CAAC,EACrE,cAAiBH,EAAY,kBAAkB,CAAE,SAAUP,EAAU,MAAO,CAAC,CAC/E,CAAC,CACH"}
1
+ {"version":3,"file":"tokens-Fh_OeIlf.js","names":["useQuery","queryKeys","useMutation","useQueryClient","adminApi","withCsrf","useApiTokens","useCreateApiToken","queryClient","input","useRevokeApiToken","id"],"sources":["../../src/api/tokens.ts"],"sourcesContent":["import type { CreateApiTokenInput } from '@shapio/client';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { adminApi } from './client';\nimport { withCsrf } from './csrf';\nimport { queryKeys } from './queryKeys';\n\nexport const useApiTokens = () =>\n useQuery({ queryKey: queryKeys.tokens, queryFn: () => adminApi.tokens.list(), meta: { silent: true } });\n\nexport const useCreateApiToken = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['tokens', 'create'],\n meta: { silent: true },\n mutationFn: (input: CreateApiTokenInput) => withCsrf(() => adminApi.tokens.create(input)),\n onSuccess: () => queryClient.invalidateQueries({ queryKey: queryKeys.tokens }),\n });\n};\n\nexport const useRevokeApiToken = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['tokens', 'revoke'],\n mutationFn: (id: string) => withCsrf(() => adminApi.tokens.revoke(id)),\n onSettled: () => queryClient.invalidateQueries({ queryKey: queryKeys.tokens }),\n });\n};\n"],"mappings":"yEAMA,IAAaM,MACXN,EAAS,CAAE,SAAUC,EAAU,OAAQ,YAAeG,EAAS,OAAO,KAAK,EAAG,KAAM,CAAE,OAAQ,EAAK,CAAE,CAAC,EAE3FG,MAA0B,CACrC,IAAMC,EAAcL,EAAe,EACnC,OAAOD,EAAY,CACjB,YAAa,CAAC,SAAU,QAAQ,EAChC,KAAM,CAAE,OAAQ,EAAK,EACrB,WAAa,GAA+BG,MAAeD,EAAS,OAAO,OAAOK,CAAK,CAAC,EACxF,cAAiBD,EAAY,kBAAkB,CAAE,SAAUP,EAAU,MAAO,CAAC,CAC/E,CAAC,CACH,EAEaS,MAA0B,CACrC,IAAMF,EAAcL,EAAe,EACnC,OAAOD,EAAY,CACjB,YAAa,CAAC,SAAU,QAAQ,EAChC,WAAa,GAAeG,MAAeD,EAAS,OAAO,OAAOO,CAAE,CAAC,EACrE,cAAiBH,EAAY,kBAAkB,CAAE,SAAUP,EAAU,MAAO,CAAC,CAC/E,CAAC,CACH"}
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{t as r}from"./cn-DnXL75B0.js";import{I as i,S as a,b as o,v as s,x as c,y as l}from"./InfoHint-DBqcrmZ3.js";import{T as u,_ as d,b as f,d as p,g as m,h,l as g,m as _,v,w as y,y as b}from"./skeleton-DUvclBAr.js";var x=e(t(),1),S=e(n(),1),C=Object.defineProperty,w=(e,t)=>C(e,`name`,{value:t,configurable:!0}),[T,E]=b(`Tooltip`,[a]),D=a(),O=`TooltipProvider`,k=700,A=`tooltip.open`,[j,M]=T(O),N=w(e=>{let{__scopeTooltip:t,delayDuration:n=k,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=x.useRef(!0),s=x.useRef(!1),c=x.useRef(0);return x.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,S.jsx)(j,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:x.useCallback(()=>{r<=0||(window.clearTimeout(c.current),o.current=!1)},[r]),onClose:x.useCallback(()=>{r<=0||(window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r))},[r]),isPointerInTransitRef:s,onPointerInTransitChange:x.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})},`TooltipProvider`),P=`Tooltip`,[ee,F]=T(P),I=w(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,l=M(P,e.__scopeTooltip),u=D(t),[d,f]=x.useState(null),[p,h]=x.useState(void 0),g=_(),v=x.useRef(0),y=o??l.disableHoverableContent,b=s??l.delayDuration,C=x.useRef(!1),[T,E]=m({prop:r,defaultProp:i??!1,onChange:w(e=>{e?(l.onOpen(),document.dispatchEvent(new CustomEvent(A))):l.onClose(),a?.(e)},`onChange`),caller:P}),O=x.useMemo(()=>T?C.current?`delayed-open`:`instant-open`:`closed`,[T]),k=x.useCallback(()=>{window.clearTimeout(v.current),v.current=0,C.current=!1,E(!0)},[E]),j=x.useCallback(()=>{window.clearTimeout(v.current),v.current=0,E(!1)},[E]),N=x.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{C.current=!0,E(!0),v.current=0},b)},[b,E]);x.useEffect(()=>()=>{v.current&&=(window.clearTimeout(v.current),0)},[]);let F=p??g;return(0,S.jsx)(c,{...u,children:(0,S.jsx)(ee,{scope:t,contentId:F,setContentId:h,open:T,stateAttribute:O,trigger:d,onTriggerChange:f,onTriggerEnter:x.useCallback(()=>{l.isOpenDelayedRef.current?N():k()},[l.isOpenDelayedRef,N,k]),onTriggerLeave:x.useCallback(()=>{y?j():(window.clearTimeout(v.current),v.current=0)},[j,y]),onOpen:k,onClose:j,disableHoverableContent:y,children:n})})},`Tooltip`),L=`TooltipTrigger`,R=x.forwardRef(w(function(e,t){let{__scopeTooltip:n,...r}=e,i=F(L,n),a=M(L,n),o=D(n),c=x.useRef(null),l=u(t,c,i.onTriggerChange),d=x.useRef(!1),p=x.useRef(!1),m=x.useCallback(()=>d.current=!1,[]);return x.useEffect(()=>()=>document.removeEventListener(`pointerup`,m),[m]),(0,S.jsx)(s,{asChild:!0,...o,children:(0,S.jsx)(f.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:l,onPointerMove:v(e.onPointerMove,e=>{e.pointerType!==`touch`&&!p.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),p.current=!0)}),onPointerLeave:v(e.onPointerLeave,()=>{i.onTriggerLeave(),p.current=!1}),onPointerDown:v(e.onPointerDown,()=>{i.open&&i.onClose(),d.current=!0,document.addEventListener(`pointerup`,m,{once:!0})}),onFocus:v(e.onFocus,()=>{d.current||i.onOpen()}),onBlur:v(e.onBlur,i.onClose),onClick:v(e.onClick,i.onClose)})})},`TooltipTrigger`)),z=`TooltipPortal`,[B,V]=T(z,{forceMount:void 0}),H=w(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=F(z,t);return(0,S.jsx)(B,{scope:t,forceMount:n,children:(0,S.jsx)(h,{present:n||a.open,children:(0,S.jsx)(g,{asChild:!0,container:i,children:r})})})},`TooltipPortal`),U=`TooltipContent`,te=x.forwardRef(w(function(e,t){let n=V(U,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=F(U,e.__scopeTooltip);return(0,S.jsx)(h,{present:r||o.open,children:o.disableHoverableContent?(0,S.jsx)(K,{side:i,...a,ref:t}):(0,S.jsx)(W,{side:i,...a,ref:t})})},`TooltipContent`)),W=x.forwardRef(w(function(e,t){let n=F(U,e.__scopeTooltip),r=M(U,e.__scopeTooltip),i=x.useRef(null),a=u(t,i),[o,s]=x.useState(null),{trigger:c,onClose:l}=n,d=i.current,{onPointerInTransitChange:f}=r,p=x.useCallback(()=>{s(null),f(!1)},[f]),m=x.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Y(r,J(r,n.getBoundingClientRect())),a=X(t.getBoundingClientRect()),o=Q([...i,...a]);s(o),f(!0)},[f]);return x.useEffect(()=>()=>p(),[p]),x.useEffect(()=>{if(c&&d){let e=w(e=>m(e,d),`handleTriggerLeave`),t=w(e=>m(e,c),`handleContentLeave`);return c.addEventListener(`pointerleave`,e),d.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),d.removeEventListener(`pointerleave`,t)}}},[c,d,m,p]),x.useEffect(()=>{if(o){let e=w(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||d?.contains(t),i=!Z(n,o);r?p():i&&(p(),l())},`handleTrackPointerGrace`);return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,d,o,l,p]),(0,S.jsx)(K,{...e,ref:a})},`TooltipContentHoverable`)),G=y(`TooltipContent`),K=x.forwardRef(w(function(e,t){let{__scopeTooltip:n,children:r,"aria-label":a,id:s,onEscapeKeyDown:c,onPointerDownOutside:l,...u}=e,f=F(U,n),m=D(n),{onClose:h}=f;x.useEffect(()=>(document.addEventListener(A,h),()=>document.removeEventListener(A,h)),[h]),x.useEffect(()=>{if(f.trigger){let e=w(e=>{e.target instanceof Node&&e.target.contains(f.trigger)&&h()},`handleScroll`);return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[f.trigger,h]);let{setContentId:g}=f;return d(()=>(g(s),()=>{g(void 0)}),[s,g]),(0,S.jsx)(p,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:e=>e.preventDefault(),onDismiss:h,children:(0,S.jsxs)(o,{"data-state":f.stateAttribute,role:a?void 0:`tooltip`,id:a?void 0:f.contentId,...m,...u,ref:t,style:{...u.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,S.jsx)(G,{children:r}),a?(0,S.jsx)(i,{id:f.contentId,role:`tooltip`,children:a}):null]})})},`TooltipContentImpl`)),q=x.forwardRef(w(function(e,t){let{__scopeTooltip:n,...r}=e,i=D(n);return(0,S.jsx)(l,{...i,...r,ref:t})},`TooltipArrow`));function J(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}w(J,`getExitSideFromRect`);function Y(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}w(Y,`getPaddedExitPoints`);function X(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}w(X,`getPointsFromRect`);function Z(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}w(Z,`isPointInPolygon`);function Q(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+(e.y>t.y)),$(t)}w(Q,`getHull`);function $(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}w($,`getHullPresorted`);var ne=N,re=I,ie=R,ae=H,oe=te,se=q;function ce({delayDuration:e=0,...t}){return(0,S.jsx)(ne,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function le({...e}){return(0,S.jsx)(re,{"data-slot":`tooltip`,...e})}function ue({...e}){return(0,S.jsx)(ie,{"data-slot":`tooltip-trigger`,...e})}function de({className:e,sideOffset:t=0,children:n,...i}){return(0,S.jsx)(ae,{children:(0,S.jsxs)(oe,{"data-slot":`tooltip-content`,sideOffset:t,className:r(`z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-2.5 py-1.5 text-xs font-medium text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,e),...i,children:[n,(0,S.jsx)(se,{className:`z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground`})]})})}export{ue as i,de as n,ce as r,le as t};
2
- //# sourceMappingURL=tooltip-BMe4HylJ.js.map
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{t as r}from"./cn-BQ3voEft.js";import{I as i,S as a,b as o,v as s,x as c,y as l}from"./InfoHint-GJLRVumb.js";import{T as u,_ as d,b as f,d as p,g as m,h,l as g,m as _,v,w as y,y as b}from"./skeleton-C3QLIh7W.js";var x=e(t(),1),S=e(n(),1),C=Object.defineProperty,w=(e,t)=>C(e,`name`,{value:t,configurable:!0}),[T,E]=b(`Tooltip`,[a]),D=a(),O=`TooltipProvider`,k=700,A=`tooltip.open`,[j,M]=T(O),N=w(e=>{let{__scopeTooltip:t,delayDuration:n=k,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=x.useRef(!0),s=x.useRef(!1),c=x.useRef(0);return x.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,S.jsx)(j,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:x.useCallback(()=>{r<=0||(window.clearTimeout(c.current),o.current=!1)},[r]),onClose:x.useCallback(()=>{r<=0||(window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r))},[r]),isPointerInTransitRef:s,onPointerInTransitChange:x.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})},`TooltipProvider`),P=`Tooltip`,[ee,F]=T(P),I=w(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,l=M(P,e.__scopeTooltip),u=D(t),[d,f]=x.useState(null),[p,h]=x.useState(void 0),g=_(),v=x.useRef(0),y=o??l.disableHoverableContent,b=s??l.delayDuration,C=x.useRef(!1),[T,E]=m({prop:r,defaultProp:i??!1,onChange:w(e=>{e?(l.onOpen(),document.dispatchEvent(new CustomEvent(A))):l.onClose(),a?.(e)},`onChange`),caller:P}),O=x.useMemo(()=>T?C.current?`delayed-open`:`instant-open`:`closed`,[T]),k=x.useCallback(()=>{window.clearTimeout(v.current),v.current=0,C.current=!1,E(!0)},[E]),j=x.useCallback(()=>{window.clearTimeout(v.current),v.current=0,E(!1)},[E]),N=x.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{C.current=!0,E(!0),v.current=0},b)},[b,E]);x.useEffect(()=>()=>{v.current&&=(window.clearTimeout(v.current),0)},[]);let F=p??g;return(0,S.jsx)(c,{...u,children:(0,S.jsx)(ee,{scope:t,contentId:F,setContentId:h,open:T,stateAttribute:O,trigger:d,onTriggerChange:f,onTriggerEnter:x.useCallback(()=>{l.isOpenDelayedRef.current?N():k()},[l.isOpenDelayedRef,N,k]),onTriggerLeave:x.useCallback(()=>{y?j():(window.clearTimeout(v.current),v.current=0)},[j,y]),onOpen:k,onClose:j,disableHoverableContent:y,children:n})})},`Tooltip`),L=`TooltipTrigger`,R=x.forwardRef(w(function(e,t){let{__scopeTooltip:n,...r}=e,i=F(L,n),a=M(L,n),o=D(n),c=x.useRef(null),l=u(t,c,i.onTriggerChange),d=x.useRef(!1),p=x.useRef(!1),m=x.useCallback(()=>d.current=!1,[]);return x.useEffect(()=>()=>document.removeEventListener(`pointerup`,m),[m]),(0,S.jsx)(s,{asChild:!0,...o,children:(0,S.jsx)(f.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:l,onPointerMove:v(e.onPointerMove,e=>{e.pointerType!==`touch`&&!p.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),p.current=!0)}),onPointerLeave:v(e.onPointerLeave,()=>{i.onTriggerLeave(),p.current=!1}),onPointerDown:v(e.onPointerDown,()=>{i.open&&i.onClose(),d.current=!0,document.addEventListener(`pointerup`,m,{once:!0})}),onFocus:v(e.onFocus,()=>{d.current||i.onOpen()}),onBlur:v(e.onBlur,i.onClose),onClick:v(e.onClick,i.onClose)})})},`TooltipTrigger`)),z=`TooltipPortal`,[B,V]=T(z,{forceMount:void 0}),H=w(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=F(z,t);return(0,S.jsx)(B,{scope:t,forceMount:n,children:(0,S.jsx)(h,{present:n||a.open,children:(0,S.jsx)(g,{asChild:!0,container:i,children:r})})})},`TooltipPortal`),U=`TooltipContent`,te=x.forwardRef(w(function(e,t){let n=V(U,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=F(U,e.__scopeTooltip);return(0,S.jsx)(h,{present:r||o.open,children:o.disableHoverableContent?(0,S.jsx)(K,{side:i,...a,ref:t}):(0,S.jsx)(W,{side:i,...a,ref:t})})},`TooltipContent`)),W=x.forwardRef(w(function(e,t){let n=F(U,e.__scopeTooltip),r=M(U,e.__scopeTooltip),i=x.useRef(null),a=u(t,i),[o,s]=x.useState(null),{trigger:c,onClose:l}=n,d=i.current,{onPointerInTransitChange:f}=r,p=x.useCallback(()=>{s(null),f(!1)},[f]),m=x.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Y(r,J(r,n.getBoundingClientRect())),a=X(t.getBoundingClientRect()),o=Q([...i,...a]);s(o),f(!0)},[f]);return x.useEffect(()=>()=>p(),[p]),x.useEffect(()=>{if(c&&d){let e=w(e=>m(e,d),`handleTriggerLeave`),t=w(e=>m(e,c),`handleContentLeave`);return c.addEventListener(`pointerleave`,e),d.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),d.removeEventListener(`pointerleave`,t)}}},[c,d,m,p]),x.useEffect(()=>{if(o){let e=w(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||d?.contains(t),i=!Z(n,o);r?p():i&&(p(),l())},`handleTrackPointerGrace`);return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,d,o,l,p]),(0,S.jsx)(K,{...e,ref:a})},`TooltipContentHoverable`)),G=y(`TooltipContent`),K=x.forwardRef(w(function(e,t){let{__scopeTooltip:n,children:r,"aria-label":a,id:s,onEscapeKeyDown:c,onPointerDownOutside:l,...u}=e,f=F(U,n),m=D(n),{onClose:h}=f;x.useEffect(()=>(document.addEventListener(A,h),()=>document.removeEventListener(A,h)),[h]),x.useEffect(()=>{if(f.trigger){let e=w(e=>{e.target instanceof Node&&e.target.contains(f.trigger)&&h()},`handleScroll`);return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[f.trigger,h]);let{setContentId:g}=f;return d(()=>(g(s),()=>{g(void 0)}),[s,g]),(0,S.jsx)(p,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:e=>e.preventDefault(),onDismiss:h,children:(0,S.jsxs)(o,{"data-state":f.stateAttribute,role:a?void 0:`tooltip`,id:a?void 0:f.contentId,...m,...u,ref:t,style:{...u.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,S.jsx)(G,{children:r}),a?(0,S.jsx)(i,{id:f.contentId,role:`tooltip`,children:a}):null]})})},`TooltipContentImpl`)),q=x.forwardRef(w(function(e,t){let{__scopeTooltip:n,...r}=e,i=D(n);return(0,S.jsx)(l,{...i,...r,ref:t})},`TooltipArrow`));function J(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}w(J,`getExitSideFromRect`);function Y(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}w(Y,`getPaddedExitPoints`);function X(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}w(X,`getPointsFromRect`);function Z(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}w(Z,`isPointInPolygon`);function Q(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+(e.y>t.y)),$(t)}w(Q,`getHull`);function $(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}w($,`getHullPresorted`);var ne=N,re=I,ie=R,ae=H,oe=te,se=q;function ce({delayDuration:e=0,...t}){return(0,S.jsx)(ne,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function le({...e}){return(0,S.jsx)(re,{"data-slot":`tooltip`,...e})}function ue({...e}){return(0,S.jsx)(ie,{"data-slot":`tooltip-trigger`,...e})}function de({className:e,sideOffset:t=0,children:n,...i}){return(0,S.jsx)(ae,{children:(0,S.jsxs)(oe,{"data-slot":`tooltip-content`,sideOffset:t,className:r(`z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-2.5 py-1.5 text-xs font-medium text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,e),...i,children:[n,(0,S.jsx)(se,{className:`z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground`})]})})}export{ue as i,de as n,ce as r,le as t};
2
+ //# sourceMappingURL=tooltip-DwqM3opE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-BMe4HylJ.js","names":["TooltipProvider","Tooltip","PopperPrimitive.Root","TooltipTrigger","PopperPrimitive.Anchor","PortalPrimitive","TooltipContent","PopperPrimitive.Content","VisuallyHiddenPrimitive.Root","PopperPrimitive.Arrow","TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","TooltipPrimitive.Portal","TooltipPrimitive.Content","TooltipPrimitive.Arrow","__toESM","require_jsx_runtime","cn","Root","createPopperScope","Content","Anchor","Root2","Arrow","useComposedRefs","useLayoutEffect2","Primitive","DismissableLayer","useControllableState","Portal$1","useId","createSlottable","createContextScope","import_react","require_react","import_jsx_runtime","__defProp","__name","target","createTooltipContext","createTooltipScope","usePopperScope","PROVIDER_NAME","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider$1","props","isOpenDelayedRef","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","__scopeTooltip","skipDelayDuration","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","Tooltip$1","openProp","disableHoverableContentProp","delayDurationProp","providerContext","popperScope","trigger","setTrigger","contentIdState","setContentId","generatedContentId","openTimerRef","disableHoverableContent","delayDuration","wasOpenDelayedRef","open","setOpen","defaultOpen","open2","onOpenChange","stateAttribute","handleOpen","handleClose","handleDelayedOpen","contentId","TRIGGER_NAME","TooltipTrigger$1","triggerProps","context","ref","composedRefs","forwardedRef","isPointerDownRef","hasPointerMoveOpenedRef","handlePointerUp","composeEventHandlers","event","PORTAL_NAME","PortalProvider","usePortalContext","TooltipPortal","Presence","forceMount","CONTENT_NAME","TooltipContent$1","portalContext","contentProps","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","content","handleRemoveGraceArea","onPointerInTransitChange","handleCreateGraceArea","currentTarget","exitPoint","paddedExitPoints","getPaddedExitPoints","getExitSideFromRect","hoverTargetPoints","getPointsFromRect","hoverTarget","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isPointInPolygon","onClose","Slottable","ariaLabel","idProp","handleScroll","TooltipArrow","arrowProps","top","rect","point","bottom","right","left","exitSide","padding","inside","i","j","polygon","ii","jj","xi","yi","xj","yj","y","x","newPoints","points","a","b","getHullPresorted","upperHull","p","q","r","lowerHull","Provider","Root3","Trigger","Portal","Content2","Arrow2","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","className","children"],"sources":["../../../../node_modules/.pnpm/@radix-ui+react-tooltip@1.2.16_@types+react-dom@19.3.0_@types+react@19.3.0__@types+reac_410793db862c85b741943c612cdfda62/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../../src/components/ui/tooltip.tsx"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = /* @__PURE__ */ __name((props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n if (skipDelayDuration <= 0) return;\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, [skipDelayDuration]),\n onClose: React.useCallback(() => {\n if (skipDelayDuration <= 0) return;\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n}, \"TooltipProvider\");\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = /* @__PURE__ */ __name((props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const [contentIdState, setContentId] = React.useState(void 0);\n const generatedContentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: /* @__PURE__ */ __name((open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n }, \"onChange\"),\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n const contentId = contentIdState ?? generatedContentId;\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n setContentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n}, \"Tooltip\");\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function TooltipTrigger2(props, forwardedRef) {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }, \"TooltipTrigger\")\n);\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = /* @__PURE__ */ __name((props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n}, \"TooltipPortal\");\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function TooltipContent2(props, forwardedRef) {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }, \"TooltipContent\")\n);\nvar TooltipContentHoverable = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function TooltipContentHoverable2(props, forwardedRef) {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = /* @__PURE__ */ __name((event) => handleCreateGraceArea(event, content), \"handleTriggerLeave\");\n const handleContentLeave = /* @__PURE__ */ __name((event) => handleCreateGraceArea(event, trigger), \"handleContentLeave\");\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = /* @__PURE__ */ __name((event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n }, \"handleTrackPointerGrace\");\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n}, \"TooltipContentHoverable\"));\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function TooltipContentImpl2(props, forwardedRef) {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n id: idProp,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = /* @__PURE__ */ __name((event) => {\n if (event.target instanceof Node && event.target.contains(context.trigger)) {\n onClose();\n }\n }, \"handleScroll\");\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n const { setContentId } = context;\n useLayoutEffect(() => {\n setContentId(idProp);\n return () => {\n setContentId(void 0);\n };\n }, [idProp, setContentId]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n role: ariaLabel ? void 0 : \"tooltip\",\n id: ariaLabel ? void 0 : context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n ariaLabel ? /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel }) : null\n ]\n }\n )\n }\n );\n }, \"TooltipContentImpl\")\n);\nvar TooltipArrow = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function TooltipArrow2(props, forwardedRef) {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }, \"TooltipArrow\")\n);\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\n__name(getExitSideFromRect, \"getExitSideFromRect\");\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\n__name(getPaddedExitPoints, \"getPaddedExitPoints\");\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\n__name(getPointsFromRect, \"getPointsFromRect\");\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\n__name(isPointInPolygon, \"isPointInPolygon\");\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\n__name(getHull, \"getHull\");\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\n__name(getHullPresorted, \"getHullPresorted\");\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { Tooltip as TooltipPrimitive } from 'radix-ui';\nimport * as React from 'react';\nimport { cn } from '@/helpers/cn';\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />;\n}\n\nfunction Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-2.5 py-1.5 text-xs font-medium text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"],"ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"tooltip-DwqM3opE.js","names":["TooltipProvider","Tooltip","PopperPrimitive.Root","TooltipTrigger","PopperPrimitive.Anchor","PortalPrimitive","TooltipContent","PopperPrimitive.Content","VisuallyHiddenPrimitive.Root","PopperPrimitive.Arrow","TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","TooltipPrimitive.Portal","TooltipPrimitive.Content","TooltipPrimitive.Arrow","__toESM","require_jsx_runtime","cn","Root","createPopperScope","Content","Anchor","Root2","Arrow","useComposedRefs","useLayoutEffect2","Primitive","DismissableLayer","useControllableState","Portal$1","useId","createSlottable","createContextScope","import_react","require_react","import_jsx_runtime","__defProp","__name","target","createTooltipContext","createTooltipScope","usePopperScope","PROVIDER_NAME","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider$1","props","isOpenDelayedRef","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","__scopeTooltip","skipDelayDuration","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","Tooltip$1","openProp","disableHoverableContentProp","delayDurationProp","providerContext","popperScope","trigger","setTrigger","contentIdState","setContentId","generatedContentId","openTimerRef","disableHoverableContent","delayDuration","wasOpenDelayedRef","open","setOpen","defaultOpen","open2","onOpenChange","stateAttribute","handleOpen","handleClose","handleDelayedOpen","contentId","TRIGGER_NAME","TooltipTrigger$1","triggerProps","context","ref","composedRefs","forwardedRef","isPointerDownRef","hasPointerMoveOpenedRef","handlePointerUp","composeEventHandlers","event","PORTAL_NAME","PortalProvider","usePortalContext","TooltipPortal","Presence","forceMount","CONTENT_NAME","TooltipContent$1","portalContext","contentProps","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","content","handleRemoveGraceArea","onPointerInTransitChange","handleCreateGraceArea","currentTarget","exitPoint","paddedExitPoints","getPaddedExitPoints","getExitSideFromRect","hoverTargetPoints","getPointsFromRect","hoverTarget","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isPointInPolygon","onClose","Slottable","ariaLabel","idProp","handleScroll","TooltipArrow","arrowProps","top","rect","point","bottom","right","left","exitSide","padding","inside","i","j","polygon","ii","jj","xi","yi","xj","yj","y","x","newPoints","points","a","b","getHullPresorted","upperHull","p","q","r","lowerHull","Provider","Root3","Trigger","Portal","Content2","Arrow2","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","className","children"],"sources":["../../../../node_modules/.pnpm/@radix-ui+react-tooltip@1.2.16_@types+react-dom@19.3.0_@types+react@19.3.0__@types+reac_410793db862c85b741943c612cdfda62/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../../src/components/ui/tooltip.tsx"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = /* @__PURE__ */ __name((props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n if (skipDelayDuration <= 0) return;\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, [skipDelayDuration]),\n onClose: React.useCallback(() => {\n if (skipDelayDuration <= 0) return;\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n}, \"TooltipProvider\");\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = /* @__PURE__ */ __name((props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const [contentIdState, setContentId] = React.useState(void 0);\n const generatedContentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: /* @__PURE__ */ __name((open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n }, \"onChange\"),\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n const contentId = contentIdState ?? generatedContentId;\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n setContentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n}, \"Tooltip\");\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function TooltipTrigger2(props, forwardedRef) {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }, \"TooltipTrigger\")\n);\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = /* @__PURE__ */ __name((props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n}, \"TooltipPortal\");\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function TooltipContent2(props, forwardedRef) {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }, \"TooltipContent\")\n);\nvar TooltipContentHoverable = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function TooltipContentHoverable2(props, forwardedRef) {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = /* @__PURE__ */ __name((event) => handleCreateGraceArea(event, content), \"handleTriggerLeave\");\n const handleContentLeave = /* @__PURE__ */ __name((event) => handleCreateGraceArea(event, trigger), \"handleContentLeave\");\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = /* @__PURE__ */ __name((event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n }, \"handleTrackPointerGrace\");\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n}, \"TooltipContentHoverable\"));\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function TooltipContentImpl2(props, forwardedRef) {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n id: idProp,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = /* @__PURE__ */ __name((event) => {\n if (event.target instanceof Node && event.target.contains(context.trigger)) {\n onClose();\n }\n }, \"handleScroll\");\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n const { setContentId } = context;\n useLayoutEffect(() => {\n setContentId(idProp);\n return () => {\n setContentId(void 0);\n };\n }, [idProp, setContentId]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n role: ariaLabel ? void 0 : \"tooltip\",\n id: ariaLabel ? void 0 : context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n ariaLabel ? /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel }) : null\n ]\n }\n )\n }\n );\n }, \"TooltipContentImpl\")\n);\nvar TooltipArrow = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function TooltipArrow2(props, forwardedRef) {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }, \"TooltipArrow\")\n);\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\n__name(getExitSideFromRect, \"getExitSideFromRect\");\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\n__name(getPaddedExitPoints, \"getPaddedExitPoints\");\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\n__name(getPointsFromRect, \"getPointsFromRect\");\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\n__name(isPointInPolygon, \"isPointInPolygon\");\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\n__name(getHull, \"getHull\");\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\n__name(getHullPresorted, \"getHullPresorted\");\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { Tooltip as TooltipPrimitive } from 'radix-ui';\nimport * as React from 'react';\nimport { cn } from '@/helpers/cn';\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />;\n}\n\nfunction Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-2.5 py-1.5 text-xs font-medium text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"],"ignoreList":[0],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{i as e}from"./cn-DnXL75B0.js";var t={name:`undo-2`,size:24,node:[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]};t.node;var n=e(t);export{n as t};
2
- //# sourceMappingURL=undo-2-DMOHOH6w.js.map
1
+ import{i as e}from"./cn-BQ3voEft.js";var t={name:`undo-2`,size:24,node:[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]};t.node;var n=e(t);export{n as t};
2
+ //# sourceMappingURL=undo-2-D4Fz4JMZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"undo-2-DMOHOH6w.js","names":["createLucideIcon","__iconData","Undo2"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/undo-2.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"undo-2\",\n size: 24,\n node: [\n [\"path\", { d: \"M9 14 4 9l5-5\", key: \"102s5s\" }],\n [\"path\", { d: \"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11\", key: \"f3b9sd\" }]\n ]\n};\n__iconData.node;\nconst Undo2 = createLucideIcon(__iconData);\n\nexport { __iconData, Undo2 as default };\n//# sourceMappingURL=undo-2.mjs.map\n"],"ignoreList":[0],"mappings":"qCASA,IAAMC,EAAa,CACjB,KAAM,SACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAS,CAAC,EAC9C,CAAC,OAAQ,CAAE,EAAG,2DAA4D,IAAK,QAAS,CAAC,CAC3F,CACF,EACAA,EAAW,KACX,IAAMC,EAAQF,EAAiBC,CAAU"}
1
+ {"version":3,"file":"undo-2-D4Fz4JMZ.js","names":["createLucideIcon","__iconData","Undo2"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/undo-2.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"undo-2\",\n size: 24,\n node: [\n [\"path\", { d: \"M9 14 4 9l5-5\", key: \"102s5s\" }],\n [\"path\", { d: \"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11\", key: \"f3b9sd\" }]\n ]\n};\n__iconData.node;\nconst Undo2 = createLucideIcon(__iconData);\n\nexport { __iconData, Undo2 as default };\n//# sourceMappingURL=undo-2.mjs.map\n"],"ignoreList":[0],"mappings":"qCASA,IAAMC,EAAa,CACjB,KAAM,SACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAS,CAAC,EAC9C,CAAC,OAAQ,CAAE,EAAG,2DAA4D,IAAK,QAAS,CAAC,CAC3F,CACF,EACAA,EAAW,KACX,IAAMC,EAAQF,EAAiBC,CAAU"}
@@ -1,2 +1,2 @@
1
- import{H as e,P as t,i as n,j as r,l as i,ut as a}from"./cn-DnXL75B0.js";var o={name:`user-plus`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]};o.node;var s=n(o),c=n=>e({queryKey:t.audit.list(n),queryFn:()=>i.audit.list(n),placeholderData:a,meta:{silent:!0}}),l=[`name`,`title`,`label`,`email`,`filename`,`apiKey`],u=e=>{if(typeof e!=`object`||!e)return;let t=e;for(let e of l){let n=t[e];if(typeof n==`string`&&n.trim()!==``)return n}},d={"admin_user.create":`audit.actions.adminUserCreate`,"admin_user.delete":`audit.actions.adminUserDelete`,"admin_user.password_change":`audit.actions.adminUserPasswordChange`,"admin_user.update":`audit.actions.adminUserUpdate`,"api_token.create":`audit.actions.apiTokenCreate`,"api_token.revoke":`audit.actions.apiTokenRevoke`,"app_auth.refresh_reuse":`audit.actions.appAuthRefreshReuse`,"app_role.create":`audit.actions.appRoleCreate`,"app_role.delete":`audit.actions.appRoleDelete`,"app_role.update":`audit.actions.appRoleUpdate`,"app_user.block":`audit.actions.appUserBlock`,"app_user.unblock":`audit.actions.appUserUnblock`,"app_user.confirm_email":`audit.actions.appUserConfirmEmail`,"app_user.confirmation_resend":`audit.actions.appUserConfirmationResend`,"app_user.delete":`audit.actions.appUserDelete`,"app_user.oauth_link":`audit.actions.appUserOauthLink`,"app_user.password_change":`audit.actions.appUserPasswordChange`,"app_user.password_reset":`audit.actions.appUserPasswordReset`,"app_user.password_reset_request":`audit.actions.appUserPasswordResetRequest`,"app_user.register":`audit.actions.appUserRegister`,"app_user.roles_change":`audit.actions.appUserRolesChange`,"app_user.update":`audit.actions.appUserUpdate`,"assist.alt_text":`audit.actions.assistAltText`,"assist.content_ops":`audit.actions.assistContentOps`,"assist.rewrite":`audit.actions.assistRewrite`,"assist.schema_draft":`audit.actions.assistSchemaDraft`,"assist.summarize":`audit.actions.assistSummarize`,"assist.translate":`audit.actions.assistTranslate`,"auth.login":`audit.actions.authLogin`,"auth.logout":`audit.actions.authLogout`,"auth.password_reset":`audit.actions.authPasswordReset`,"auth.password_reset_request":`audit.actions.authPasswordResetRequest`,"change_set.create":`audit.actions.changeSetCreate`,"change_set.discard":`audit.actions.changeSetDiscard`,"change_set.item_add":`audit.actions.changeSetItemAdd`,"change_set.item_changed_after_review":`audit.actions.changeSetItemChangedAfterReview`,"change_set.item_remove":`audit.actions.changeSetItemRemove`,"change_set.schedule":`audit.actions.changeSetSchedule`,"change_set.schema_draft":`audit.actions.changeSetSchemaDraft`,"change_set.schema_draft_remove":`audit.actions.changeSetSchemaDraftRemove`,"change_set.ship":`audit.actions.changeSetShip`,"change_set.shipping":`audit.actions.changeSetShipping`,"change_set.unschedule":`audit.actions.changeSetUnschedule`,"change_set.update":`audit.actions.changeSetUpdate`,"content.delete":`audit.actions.contentDelete`,"content.publish":`audit.actions.contentPublish`,"content.restore":`audit.actions.contentRestore`,"content.unpublish":`audit.actions.contentUnpublish`,"deployment.retry":`audit.actions.deploymentRetry`,"deployment.trigger":`audit.actions.deploymentTrigger`,"deployment_connection.create":`audit.actions.deploymentConnectionCreate`,"deployment_connection.delete":`audit.actions.deploymentConnectionDelete`,"deployment_connection.update":`audit.actions.deploymentConnectionUpdate`,"invitation.accept":`audit.actions.invitationAccept`,"invitation.create":`audit.actions.invitationCreate`,"invitation.link":`audit.actions.invitationLink`,"invitation.revoke":`audit.actions.invitationRevoke`,"job.retry":`audit.actions.jobRetry`,"locale.create":`audit.actions.localeCreate`,"locale.delete":`audit.actions.localeDelete`,"locale.update":`audit.actions.localeUpdate`,"media.delete":`audit.actions.mediaDelete`,"media.folder.delete":`audit.actions.mediaFolderDelete`,"media.replace":`audit.actions.mediaReplace`,"media.upload":`audit.actions.mediaUpload`,"media.visibility.change":`audit.actions.mediaVisibilityChange`,"preview_token.create":`audit.actions.previewTokenCreate`,"preview_token.revoke":`audit.actions.previewTokenRevoke`,"publishing.schedule":`audit.actions.publishingSchedule`,"publishing.schedule.publish":`audit.actions.publishingSchedulePublish`,"publishing.schedule.unpublish":`audit.actions.publishingScheduleUnpublish`,"publishing.schedule.cancel":`audit.actions.publishingScheduleCancel`,"publishing.schedule.execute":`audit.actions.publishingScheduleExecute`,"role.create":`audit.actions.roleCreate`,"role.delete":`audit.actions.roleDelete`,"role.update":`audit.actions.roleUpdate`,"schema.activate":`audit.actions.schemaActivate`,"schema.change.request":`audit.actions.schemaChangeRequest`,"schema.create":`audit.actions.schemaCreate`,"schema.delete":`audit.actions.schemaDelete`,"schema.settings.update":`audit.actions.schemaSettingsUpdate`,"session.revoke":`audit.actions.sessionRevoke`,"session.revoke_all":`audit.actions.sessionRevokeAll`,"setup.complete":`audit.actions.setupComplete`,"transfer.import":`audit.actions.transferImport`,"webhook.create":`audit.actions.webhookCreate`,"webhook.delete":`audit.actions.webhookDelete`,"webhook.redeliver":`audit.actions.webhookRedeliver`,"webhook.rotate_secret":`audit.actions.webhookRotateSecret`,"webhook.test":`audit.actions.webhookTest`,"webhook.update":`audit.actions.webhookUpdate`},f={admin_invitation:`audit.targets.adminInvitation`,admin_role:`audit.targets.adminRole`,admin_session:`audit.targets.adminSession`,admin_user:`audit.targets.adminUser`,api_token:`audit.targets.apiToken`,app_role:`audit.targets.appRole`,app_user:`audit.targets.appUser`,change_set:`audit.targets.changeSet`,component:`audit.targets.component`,deployment_connection:`audit.targets.deploymentConnection`,entry:`audit.targets.entry`,job:`audit.targets.job`,locale:`audit.targets.locale`,media_asset:`audit.targets.mediaAsset`,media_folder:`audit.targets.mediaFolder`,model:`audit.targets.model`,preview_token:`audit.targets.previewToken`,schemaSettings:`audit.targets.schemaSettings`,webhook:`audit.targets.webhook`},p=e=>Object.hasOwn(d,e),m=e=>Object.hasOwn(f,e),h=()=>{let{t:e}=r();return{actionLabel:t=>p(t)?e(d[t]):void 0,targetLabel:t=>m(t)?e(f[t]):void 0}};export{s as i,u as n,c as r,h as t};
2
- //# sourceMappingURL=useAuditLabels-CSw_kwLs.js.map
1
+ import{H as e,P as t,i as n,j as r,l as i,ut as a}from"./cn-BQ3voEft.js";var o={name:`user-plus`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]};o.node;var s=n(o),c=n=>e({queryKey:t.audit.list(n),queryFn:()=>i.audit.list(n),placeholderData:a,meta:{silent:!0}}),l=[`name`,`title`,`label`,`email`,`filename`,`apiKey`],u=e=>{if(typeof e!=`object`||!e)return;let t=e;for(let e of l){let n=t[e];if(typeof n==`string`&&n.trim()!==``)return n}},d={"admin_user.create":`audit.actions.adminUserCreate`,"admin_user.delete":`audit.actions.adminUserDelete`,"admin_user.password_change":`audit.actions.adminUserPasswordChange`,"admin_user.update":`audit.actions.adminUserUpdate`,"api_token.create":`audit.actions.apiTokenCreate`,"api_token.revoke":`audit.actions.apiTokenRevoke`,"app_auth.refresh_reuse":`audit.actions.appAuthRefreshReuse`,"app_role.create":`audit.actions.appRoleCreate`,"app_role.delete":`audit.actions.appRoleDelete`,"app_role.update":`audit.actions.appRoleUpdate`,"app_user.block":`audit.actions.appUserBlock`,"app_user.unblock":`audit.actions.appUserUnblock`,"app_user.confirm_email":`audit.actions.appUserConfirmEmail`,"app_user.confirmation_resend":`audit.actions.appUserConfirmationResend`,"app_user.delete":`audit.actions.appUserDelete`,"app_user.oauth_link":`audit.actions.appUserOauthLink`,"app_user.password_change":`audit.actions.appUserPasswordChange`,"app_user.password_reset":`audit.actions.appUserPasswordReset`,"app_user.password_reset_request":`audit.actions.appUserPasswordResetRequest`,"app_user.register":`audit.actions.appUserRegister`,"app_user.roles_change":`audit.actions.appUserRolesChange`,"app_user.update":`audit.actions.appUserUpdate`,"assist.alt_text":`audit.actions.assistAltText`,"assist.content_ops":`audit.actions.assistContentOps`,"assist.rewrite":`audit.actions.assistRewrite`,"assist.schema_draft":`audit.actions.assistSchemaDraft`,"assist.summarize":`audit.actions.assistSummarize`,"assist.translate":`audit.actions.assistTranslate`,"auth.login":`audit.actions.authLogin`,"auth.logout":`audit.actions.authLogout`,"auth.password_reset":`audit.actions.authPasswordReset`,"auth.password_reset_request":`audit.actions.authPasswordResetRequest`,"change_set.create":`audit.actions.changeSetCreate`,"change_set.discard":`audit.actions.changeSetDiscard`,"change_set.item_add":`audit.actions.changeSetItemAdd`,"change_set.item_changed_after_review":`audit.actions.changeSetItemChangedAfterReview`,"change_set.item_remove":`audit.actions.changeSetItemRemove`,"change_set.schedule":`audit.actions.changeSetSchedule`,"change_set.schema_draft":`audit.actions.changeSetSchemaDraft`,"change_set.schema_draft_remove":`audit.actions.changeSetSchemaDraftRemove`,"change_set.ship":`audit.actions.changeSetShip`,"change_set.shipping":`audit.actions.changeSetShipping`,"change_set.unschedule":`audit.actions.changeSetUnschedule`,"change_set.update":`audit.actions.changeSetUpdate`,"content.delete":`audit.actions.contentDelete`,"content.publish":`audit.actions.contentPublish`,"content.restore":`audit.actions.contentRestore`,"content.unpublish":`audit.actions.contentUnpublish`,"deployment.retry":`audit.actions.deploymentRetry`,"deployment.trigger":`audit.actions.deploymentTrigger`,"deployment_connection.create":`audit.actions.deploymentConnectionCreate`,"deployment_connection.delete":`audit.actions.deploymentConnectionDelete`,"deployment_connection.update":`audit.actions.deploymentConnectionUpdate`,"invitation.accept":`audit.actions.invitationAccept`,"invitation.create":`audit.actions.invitationCreate`,"invitation.link":`audit.actions.invitationLink`,"invitation.revoke":`audit.actions.invitationRevoke`,"job.retry":`audit.actions.jobRetry`,"locale.create":`audit.actions.localeCreate`,"locale.delete":`audit.actions.localeDelete`,"locale.update":`audit.actions.localeUpdate`,"media.delete":`audit.actions.mediaDelete`,"media.folder.delete":`audit.actions.mediaFolderDelete`,"media.replace":`audit.actions.mediaReplace`,"media.upload":`audit.actions.mediaUpload`,"media.visibility.change":`audit.actions.mediaVisibilityChange`,"preview_token.create":`audit.actions.previewTokenCreate`,"preview_token.revoke":`audit.actions.previewTokenRevoke`,"publishing.schedule":`audit.actions.publishingSchedule`,"publishing.schedule.publish":`audit.actions.publishingSchedulePublish`,"publishing.schedule.unpublish":`audit.actions.publishingScheduleUnpublish`,"publishing.schedule.cancel":`audit.actions.publishingScheduleCancel`,"publishing.schedule.execute":`audit.actions.publishingScheduleExecute`,"role.create":`audit.actions.roleCreate`,"role.delete":`audit.actions.roleDelete`,"role.update":`audit.actions.roleUpdate`,"schema.activate":`audit.actions.schemaActivate`,"schema.change.request":`audit.actions.schemaChangeRequest`,"schema.create":`audit.actions.schemaCreate`,"schema.delete":`audit.actions.schemaDelete`,"schema.scope":`audit.actions.schemaScope`,"schema.settings.update":`audit.actions.schemaSettingsUpdate`,"session.revoke":`audit.actions.sessionRevoke`,"session.revoke_all":`audit.actions.sessionRevokeAll`,"setup.complete":`audit.actions.setupComplete`,"transfer.import":`audit.actions.transferImport`,"webhook.create":`audit.actions.webhookCreate`,"webhook.delete":`audit.actions.webhookDelete`,"webhook.redeliver":`audit.actions.webhookRedeliver`,"webhook.rotate_secret":`audit.actions.webhookRotateSecret`,"webhook.test":`audit.actions.webhookTest`,"webhook.update":`audit.actions.webhookUpdate`},f={admin_invitation:`audit.targets.adminInvitation`,admin_role:`audit.targets.adminRole`,admin_session:`audit.targets.adminSession`,admin_user:`audit.targets.adminUser`,api_token:`audit.targets.apiToken`,app_role:`audit.targets.appRole`,app_user:`audit.targets.appUser`,change_set:`audit.targets.changeSet`,component:`audit.targets.component`,deployment_connection:`audit.targets.deploymentConnection`,entry:`audit.targets.entry`,job:`audit.targets.job`,locale:`audit.targets.locale`,media_asset:`audit.targets.mediaAsset`,media_folder:`audit.targets.mediaFolder`,model:`audit.targets.model`,preview_token:`audit.targets.previewToken`,schemaSettings:`audit.targets.schemaSettings`,webhook:`audit.targets.webhook`},p=e=>Object.hasOwn(d,e),m=e=>Object.hasOwn(f,e),h=()=>{let{t:e}=r();return{actionLabel:t=>p(t)?e(d[t]):void 0,targetLabel:t=>m(t)?e(f[t]):void 0}};export{s as i,u as n,c as r,h as t};
2
+ //# sourceMappingURL=useAuditLabels-DKrsrciQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAuditLabels-CSw_kwLs.js","names":["useQuery","queryKeys","createLucideIcon","useTranslation","adminApi","keepPreviousData","__iconData","UserPlus","useAuditEvents","query","NAME_FIELDS","auditTargetName","metadata","record","field","value","AUDIT_ACTION_LABEL_KEYS","AUDIT_TARGET_LABEL_KEYS","isActionCode","code","isTargetType","type","useAuditLabels","t"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/user-plus.mjs","../../src/api/audit.ts","../../src/helpers/auditTargetName.ts","../../src/constants/auditLabels.ts","../../src/hooks/useAuditLabels.ts"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"user-plus\",\n size: 24,\n node: [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"line\", { x1: \"19\", x2: \"19\", y1: \"8\", y2: \"14\", key: \"1bvyxn\" }],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"11\", y2: \"11\", key: \"1shjgl\" }]\n ]\n};\n__iconData.node;\nconst UserPlus = createLucideIcon(__iconData);\n\nexport { __iconData, UserPlus as default };\n//# sourceMappingURL=user-plus.mjs.map\n","import type { AuditQuery } from '@shapio/client';\nimport { keepPreviousData, useQuery } from '@tanstack/react-query';\nimport { adminApi } from './client';\nimport { queryKeys } from './queryKeys';\n\nexport const useAuditEvents = (query: AuditQuery) =>\n useQuery({\n queryKey: queryKeys.audit.list(query),\n queryFn: () => adminApi.audit.list(query),\n placeholderData: keepPreviousData,\n meta: { silent: true },\n });\n","/** Metadata fields that name an audit event's target, in order of preference. */\nconst NAME_FIELDS = ['name', 'title', 'label', 'email', 'filename', 'apiKey'] as const;\n\n/** The target's name as the server recorded it in the event's metadata, if it did. */\nexport const auditTargetName = (metadata: unknown): string | undefined => {\n if (typeof metadata !== 'object' || metadata === null) {\n return undefined;\n }\n const record = metadata as Record<string, unknown>;\n for (const field of NAME_FIELDS) {\n const value = record[field];\n if (typeof value === 'string' && value.trim() !== '') {\n return value;\n }\n }\n return undefined;\n};\n","/**\n * Translation keys for the audit action codes and target types the API records (apps/api: `recordAudit` and\n * route `config.audit` declarations). Codes contain dots, which i18next reads as nesting, hence the maps.\n * A code missing here is shown raw.\n */\nexport const AUDIT_ACTION_LABEL_KEYS = {\n 'admin_user.create': 'audit.actions.adminUserCreate',\n 'admin_user.delete': 'audit.actions.adminUserDelete',\n 'admin_user.password_change': 'audit.actions.adminUserPasswordChange',\n 'admin_user.update': 'audit.actions.adminUserUpdate',\n 'api_token.create': 'audit.actions.apiTokenCreate',\n 'api_token.revoke': 'audit.actions.apiTokenRevoke',\n 'app_auth.refresh_reuse': 'audit.actions.appAuthRefreshReuse',\n 'app_role.create': 'audit.actions.appRoleCreate',\n 'app_role.delete': 'audit.actions.appRoleDelete',\n 'app_role.update': 'audit.actions.appRoleUpdate',\n 'app_user.block': 'audit.actions.appUserBlock',\n 'app_user.unblock': 'audit.actions.appUserUnblock',\n 'app_user.confirm_email': 'audit.actions.appUserConfirmEmail',\n 'app_user.confirmation_resend': 'audit.actions.appUserConfirmationResend',\n 'app_user.delete': 'audit.actions.appUserDelete',\n 'app_user.oauth_link': 'audit.actions.appUserOauthLink',\n 'app_user.password_change': 'audit.actions.appUserPasswordChange',\n 'app_user.password_reset': 'audit.actions.appUserPasswordReset',\n 'app_user.password_reset_request': 'audit.actions.appUserPasswordResetRequest',\n 'app_user.register': 'audit.actions.appUserRegister',\n 'app_user.roles_change': 'audit.actions.appUserRolesChange',\n 'app_user.update': 'audit.actions.appUserUpdate',\n 'assist.alt_text': 'audit.actions.assistAltText',\n 'assist.content_ops': 'audit.actions.assistContentOps',\n 'assist.rewrite': 'audit.actions.assistRewrite',\n 'assist.schema_draft': 'audit.actions.assistSchemaDraft',\n 'assist.summarize': 'audit.actions.assistSummarize',\n 'assist.translate': 'audit.actions.assistTranslate',\n 'auth.login': 'audit.actions.authLogin',\n 'auth.logout': 'audit.actions.authLogout',\n 'auth.password_reset': 'audit.actions.authPasswordReset',\n 'auth.password_reset_request': 'audit.actions.authPasswordResetRequest',\n 'change_set.create': 'audit.actions.changeSetCreate',\n 'change_set.discard': 'audit.actions.changeSetDiscard',\n 'change_set.item_add': 'audit.actions.changeSetItemAdd',\n 'change_set.item_changed_after_review': 'audit.actions.changeSetItemChangedAfterReview',\n 'change_set.item_remove': 'audit.actions.changeSetItemRemove',\n 'change_set.schedule': 'audit.actions.changeSetSchedule',\n 'change_set.schema_draft': 'audit.actions.changeSetSchemaDraft',\n 'change_set.schema_draft_remove': 'audit.actions.changeSetSchemaDraftRemove',\n 'change_set.ship': 'audit.actions.changeSetShip',\n 'change_set.shipping': 'audit.actions.changeSetShipping',\n 'change_set.unschedule': 'audit.actions.changeSetUnschedule',\n 'change_set.update': 'audit.actions.changeSetUpdate',\n 'content.delete': 'audit.actions.contentDelete',\n 'content.publish': 'audit.actions.contentPublish',\n 'content.restore': 'audit.actions.contentRestore',\n 'content.unpublish': 'audit.actions.contentUnpublish',\n 'deployment.retry': 'audit.actions.deploymentRetry',\n 'deployment.trigger': 'audit.actions.deploymentTrigger',\n 'deployment_connection.create': 'audit.actions.deploymentConnectionCreate',\n 'deployment_connection.delete': 'audit.actions.deploymentConnectionDelete',\n 'deployment_connection.update': 'audit.actions.deploymentConnectionUpdate',\n 'invitation.accept': 'audit.actions.invitationAccept',\n 'invitation.create': 'audit.actions.invitationCreate',\n 'invitation.link': 'audit.actions.invitationLink',\n 'invitation.revoke': 'audit.actions.invitationRevoke',\n 'job.retry': 'audit.actions.jobRetry',\n 'locale.create': 'audit.actions.localeCreate',\n 'locale.delete': 'audit.actions.localeDelete',\n 'locale.update': 'audit.actions.localeUpdate',\n 'media.delete': 'audit.actions.mediaDelete',\n 'media.folder.delete': 'audit.actions.mediaFolderDelete',\n 'media.replace': 'audit.actions.mediaReplace',\n 'media.upload': 'audit.actions.mediaUpload',\n 'media.visibility.change': 'audit.actions.mediaVisibilityChange',\n 'preview_token.create': 'audit.actions.previewTokenCreate',\n 'preview_token.revoke': 'audit.actions.previewTokenRevoke',\n 'publishing.schedule': 'audit.actions.publishingSchedule',\n 'publishing.schedule.publish': 'audit.actions.publishingSchedulePublish',\n 'publishing.schedule.unpublish': 'audit.actions.publishingScheduleUnpublish',\n 'publishing.schedule.cancel': 'audit.actions.publishingScheduleCancel',\n 'publishing.schedule.execute': 'audit.actions.publishingScheduleExecute',\n 'role.create': 'audit.actions.roleCreate',\n 'role.delete': 'audit.actions.roleDelete',\n 'role.update': 'audit.actions.roleUpdate',\n 'schema.activate': 'audit.actions.schemaActivate',\n 'schema.change.request': 'audit.actions.schemaChangeRequest',\n 'schema.create': 'audit.actions.schemaCreate',\n 'schema.delete': 'audit.actions.schemaDelete',\n 'schema.settings.update': 'audit.actions.schemaSettingsUpdate',\n 'session.revoke': 'audit.actions.sessionRevoke',\n 'session.revoke_all': 'audit.actions.sessionRevokeAll',\n 'setup.complete': 'audit.actions.setupComplete',\n 'transfer.import': 'audit.actions.transferImport',\n 'webhook.create': 'audit.actions.webhookCreate',\n 'webhook.delete': 'audit.actions.webhookDelete',\n 'webhook.redeliver': 'audit.actions.webhookRedeliver',\n 'webhook.rotate_secret': 'audit.actions.webhookRotateSecret',\n 'webhook.test': 'audit.actions.webhookTest',\n 'webhook.update': 'audit.actions.webhookUpdate',\n} as const;\n\nexport const AUDIT_TARGET_LABEL_KEYS = {\n admin_invitation: 'audit.targets.adminInvitation',\n admin_role: 'audit.targets.adminRole',\n admin_session: 'audit.targets.adminSession',\n admin_user: 'audit.targets.adminUser',\n api_token: 'audit.targets.apiToken',\n app_role: 'audit.targets.appRole',\n app_user: 'audit.targets.appUser',\n change_set: 'audit.targets.changeSet',\n component: 'audit.targets.component',\n deployment_connection: 'audit.targets.deploymentConnection',\n entry: 'audit.targets.entry',\n job: 'audit.targets.job',\n locale: 'audit.targets.locale',\n media_asset: 'audit.targets.mediaAsset',\n media_folder: 'audit.targets.mediaFolder',\n model: 'audit.targets.model',\n preview_token: 'audit.targets.previewToken',\n schemaSettings: 'audit.targets.schemaSettings',\n webhook: 'audit.targets.webhook',\n} as const;\n","import { useTranslation } from 'react-i18next';\nimport { AUDIT_ACTION_LABEL_KEYS, AUDIT_TARGET_LABEL_KEYS } from '@/constants/auditLabels';\n\nconst isActionCode = (code: string): code is keyof typeof AUDIT_ACTION_LABEL_KEYS =>\n Object.hasOwn(AUDIT_ACTION_LABEL_KEYS, code);\n\nconst isTargetType = (type: string): type is keyof typeof AUDIT_TARGET_LABEL_KEYS =>\n Object.hasOwn(AUDIT_TARGET_LABEL_KEYS, type);\n\n/**\n * Human labels for audit action codes (\"auth.login\" → \"Signed in\") and target types (\"admin_user\" →\n * \"Admin user\"). Undefined for a code the admin doesn't know yet (a newer server, an extension's route):\n * callers then show the raw code.\n */\nexport const useAuditLabels = () => {\n const { t } = useTranslation();\n return {\n actionLabel: (code: string) => (isActionCode(code) ? t(AUDIT_ACTION_LABEL_KEYS[code]) : undefined),\n targetLabel: (type: string) => (isTargetType(type) ? t(AUDIT_TARGET_LABEL_KEYS[type]) : undefined),\n };\n};\n"],"ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"useAuditLabels-DKrsrciQ.js","names":["useQuery","queryKeys","createLucideIcon","useTranslation","adminApi","keepPreviousData","__iconData","UserPlus","useAuditEvents","query","NAME_FIELDS","auditTargetName","metadata","record","field","value","AUDIT_ACTION_LABEL_KEYS","AUDIT_TARGET_LABEL_KEYS","isActionCode","code","isTargetType","type","useAuditLabels","t"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/user-plus.mjs","../../src/api/audit.ts","../../src/helpers/auditTargetName.ts","../../src/constants/auditLabels.ts","../../src/hooks/useAuditLabels.ts"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"user-plus\",\n size: 24,\n node: [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"line\", { x1: \"19\", x2: \"19\", y1: \"8\", y2: \"14\", key: \"1bvyxn\" }],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"11\", y2: \"11\", key: \"1shjgl\" }]\n ]\n};\n__iconData.node;\nconst UserPlus = createLucideIcon(__iconData);\n\nexport { __iconData, UserPlus as default };\n//# sourceMappingURL=user-plus.mjs.map\n","import type { AuditQuery } from '@shapio/client';\nimport { keepPreviousData, useQuery } from '@tanstack/react-query';\nimport { adminApi } from './client';\nimport { queryKeys } from './queryKeys';\n\nexport const useAuditEvents = (query: AuditQuery) =>\n useQuery({\n queryKey: queryKeys.audit.list(query),\n queryFn: () => adminApi.audit.list(query),\n placeholderData: keepPreviousData,\n meta: { silent: true },\n });\n","/** Metadata fields that name an audit event's target, in order of preference. */\nconst NAME_FIELDS = ['name', 'title', 'label', 'email', 'filename', 'apiKey'] as const;\n\n/** The target's name as the server recorded it in the event's metadata, if it did. */\nexport const auditTargetName = (metadata: unknown): string | undefined => {\n if (typeof metadata !== 'object' || metadata === null) {\n return undefined;\n }\n const record = metadata as Record<string, unknown>;\n for (const field of NAME_FIELDS) {\n const value = record[field];\n if (typeof value === 'string' && value.trim() !== '') {\n return value;\n }\n }\n return undefined;\n};\n","/**\n * Translation keys for the audit action codes and target types the API records (apps/api: `recordAudit` and\n * route `config.audit` declarations). Codes contain dots, which i18next reads as nesting, hence the maps.\n * A code missing here is shown raw.\n */\nexport const AUDIT_ACTION_LABEL_KEYS = {\n 'admin_user.create': 'audit.actions.adminUserCreate',\n 'admin_user.delete': 'audit.actions.adminUserDelete',\n 'admin_user.password_change': 'audit.actions.adminUserPasswordChange',\n 'admin_user.update': 'audit.actions.adminUserUpdate',\n 'api_token.create': 'audit.actions.apiTokenCreate',\n 'api_token.revoke': 'audit.actions.apiTokenRevoke',\n 'app_auth.refresh_reuse': 'audit.actions.appAuthRefreshReuse',\n 'app_role.create': 'audit.actions.appRoleCreate',\n 'app_role.delete': 'audit.actions.appRoleDelete',\n 'app_role.update': 'audit.actions.appRoleUpdate',\n 'app_user.block': 'audit.actions.appUserBlock',\n 'app_user.unblock': 'audit.actions.appUserUnblock',\n 'app_user.confirm_email': 'audit.actions.appUserConfirmEmail',\n 'app_user.confirmation_resend': 'audit.actions.appUserConfirmationResend',\n 'app_user.delete': 'audit.actions.appUserDelete',\n 'app_user.oauth_link': 'audit.actions.appUserOauthLink',\n 'app_user.password_change': 'audit.actions.appUserPasswordChange',\n 'app_user.password_reset': 'audit.actions.appUserPasswordReset',\n 'app_user.password_reset_request': 'audit.actions.appUserPasswordResetRequest',\n 'app_user.register': 'audit.actions.appUserRegister',\n 'app_user.roles_change': 'audit.actions.appUserRolesChange',\n 'app_user.update': 'audit.actions.appUserUpdate',\n 'assist.alt_text': 'audit.actions.assistAltText',\n 'assist.content_ops': 'audit.actions.assistContentOps',\n 'assist.rewrite': 'audit.actions.assistRewrite',\n 'assist.schema_draft': 'audit.actions.assistSchemaDraft',\n 'assist.summarize': 'audit.actions.assistSummarize',\n 'assist.translate': 'audit.actions.assistTranslate',\n 'auth.login': 'audit.actions.authLogin',\n 'auth.logout': 'audit.actions.authLogout',\n 'auth.password_reset': 'audit.actions.authPasswordReset',\n 'auth.password_reset_request': 'audit.actions.authPasswordResetRequest',\n 'change_set.create': 'audit.actions.changeSetCreate',\n 'change_set.discard': 'audit.actions.changeSetDiscard',\n 'change_set.item_add': 'audit.actions.changeSetItemAdd',\n 'change_set.item_changed_after_review': 'audit.actions.changeSetItemChangedAfterReview',\n 'change_set.item_remove': 'audit.actions.changeSetItemRemove',\n 'change_set.schedule': 'audit.actions.changeSetSchedule',\n 'change_set.schema_draft': 'audit.actions.changeSetSchemaDraft',\n 'change_set.schema_draft_remove': 'audit.actions.changeSetSchemaDraftRemove',\n 'change_set.ship': 'audit.actions.changeSetShip',\n 'change_set.shipping': 'audit.actions.changeSetShipping',\n 'change_set.unschedule': 'audit.actions.changeSetUnschedule',\n 'change_set.update': 'audit.actions.changeSetUpdate',\n 'content.delete': 'audit.actions.contentDelete',\n 'content.publish': 'audit.actions.contentPublish',\n 'content.restore': 'audit.actions.contentRestore',\n 'content.unpublish': 'audit.actions.contentUnpublish',\n 'deployment.retry': 'audit.actions.deploymentRetry',\n 'deployment.trigger': 'audit.actions.deploymentTrigger',\n 'deployment_connection.create': 'audit.actions.deploymentConnectionCreate',\n 'deployment_connection.delete': 'audit.actions.deploymentConnectionDelete',\n 'deployment_connection.update': 'audit.actions.deploymentConnectionUpdate',\n 'invitation.accept': 'audit.actions.invitationAccept',\n 'invitation.create': 'audit.actions.invitationCreate',\n 'invitation.link': 'audit.actions.invitationLink',\n 'invitation.revoke': 'audit.actions.invitationRevoke',\n 'job.retry': 'audit.actions.jobRetry',\n 'locale.create': 'audit.actions.localeCreate',\n 'locale.delete': 'audit.actions.localeDelete',\n 'locale.update': 'audit.actions.localeUpdate',\n 'media.delete': 'audit.actions.mediaDelete',\n 'media.folder.delete': 'audit.actions.mediaFolderDelete',\n 'media.replace': 'audit.actions.mediaReplace',\n 'media.upload': 'audit.actions.mediaUpload',\n 'media.visibility.change': 'audit.actions.mediaVisibilityChange',\n 'preview_token.create': 'audit.actions.previewTokenCreate',\n 'preview_token.revoke': 'audit.actions.previewTokenRevoke',\n 'publishing.schedule': 'audit.actions.publishingSchedule',\n 'publishing.schedule.publish': 'audit.actions.publishingSchedulePublish',\n 'publishing.schedule.unpublish': 'audit.actions.publishingScheduleUnpublish',\n 'publishing.schedule.cancel': 'audit.actions.publishingScheduleCancel',\n 'publishing.schedule.execute': 'audit.actions.publishingScheduleExecute',\n 'role.create': 'audit.actions.roleCreate',\n 'role.delete': 'audit.actions.roleDelete',\n 'role.update': 'audit.actions.roleUpdate',\n 'schema.activate': 'audit.actions.schemaActivate',\n 'schema.change.request': 'audit.actions.schemaChangeRequest',\n 'schema.create': 'audit.actions.schemaCreate',\n 'schema.delete': 'audit.actions.schemaDelete',\n 'schema.scope': 'audit.actions.schemaScope',\n 'schema.settings.update': 'audit.actions.schemaSettingsUpdate',\n 'session.revoke': 'audit.actions.sessionRevoke',\n 'session.revoke_all': 'audit.actions.sessionRevokeAll',\n 'setup.complete': 'audit.actions.setupComplete',\n 'transfer.import': 'audit.actions.transferImport',\n 'webhook.create': 'audit.actions.webhookCreate',\n 'webhook.delete': 'audit.actions.webhookDelete',\n 'webhook.redeliver': 'audit.actions.webhookRedeliver',\n 'webhook.rotate_secret': 'audit.actions.webhookRotateSecret',\n 'webhook.test': 'audit.actions.webhookTest',\n 'webhook.update': 'audit.actions.webhookUpdate',\n} as const;\n\nexport const AUDIT_TARGET_LABEL_KEYS = {\n admin_invitation: 'audit.targets.adminInvitation',\n admin_role: 'audit.targets.adminRole',\n admin_session: 'audit.targets.adminSession',\n admin_user: 'audit.targets.adminUser',\n api_token: 'audit.targets.apiToken',\n app_role: 'audit.targets.appRole',\n app_user: 'audit.targets.appUser',\n change_set: 'audit.targets.changeSet',\n component: 'audit.targets.component',\n deployment_connection: 'audit.targets.deploymentConnection',\n entry: 'audit.targets.entry',\n job: 'audit.targets.job',\n locale: 'audit.targets.locale',\n media_asset: 'audit.targets.mediaAsset',\n media_folder: 'audit.targets.mediaFolder',\n model: 'audit.targets.model',\n preview_token: 'audit.targets.previewToken',\n schemaSettings: 'audit.targets.schemaSettings',\n webhook: 'audit.targets.webhook',\n} as const;\n","import { useTranslation } from 'react-i18next';\nimport { AUDIT_ACTION_LABEL_KEYS, AUDIT_TARGET_LABEL_KEYS } from '@/constants/auditLabels';\n\nconst isActionCode = (code: string): code is keyof typeof AUDIT_ACTION_LABEL_KEYS =>\n Object.hasOwn(AUDIT_ACTION_LABEL_KEYS, code);\n\nconst isTargetType = (type: string): type is keyof typeof AUDIT_TARGET_LABEL_KEYS =>\n Object.hasOwn(AUDIT_TARGET_LABEL_KEYS, type);\n\n/**\n * Human labels for audit action codes (\"auth.login\" → \"Signed in\") and target types (\"admin_user\" →\n * \"Admin user\"). Undefined for a code the admin doesn't know yet (a newer server, an extension's route):\n * callers then show the raw code.\n */\nexport const useAuditLabels = () => {\n const { t } = useTranslation();\n return {\n actionLabel: (code: string) => (isActionCode(code) ? t(AUDIT_ACTION_LABEL_KEYS[code]) : undefined),\n targetLabel: (type: string) => (isTargetType(type) ? t(AUDIT_TARGET_LABEL_KEYS[type]) : undefined),\n };\n};\n"],"ignoreList":[0],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{u as n}from"./auth-pcS9CCXu.js";var r=e=>n().data?.networkPermissions.includes(e)??!1,i=e(t(),1),a=()=>{let[e,t]=(0,i.useState)(void 0),[n,r]=(0,i.useState)(!1);return{target:e,open:n,ask:e=>{t(e),r(!0)},onOpenChange:r,close:()=>r(!1)}};export{r as n,a as t};
2
+ //# sourceMappingURL=useConfirmTarget-Dp8mCulm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConfirmTarget-Dp8mCulm.js","names":["useState","__toESM","useMe","useNetworkPermission","action","import_react","require_react","useConfirmTarget","target","setTarget","open","setOpen","item"],"sources":["../../src/features/Network/hooks/useNetworkPermission.ts","../../src/hooks/useConfirmTarget.ts"],"sourcesContent":["import type { NetworkAction } from '@shapio/client';\nimport { useMe } from '@/api/auth';\n\n/** Whether the admin holds a network action (roles assigned on every site); the server enforces it either way. */\nexport const useNetworkPermission = (action: NetworkAction) =>\n useMe().data?.networkPermissions.includes(action) ?? false;\n","import { useState } from 'react';\n\n/**\n * The item a confirmation dialog is asking about. `target` is undefined while no dialog is open; keeping\n * the last target while the dialog animates out avoids its text flickering.\n */\nexport const useConfirmTarget = <T>() => {\n const [target, setTarget] = useState<T | undefined>(undefined);\n const [open, setOpen] = useState(false);\n return {\n target,\n open,\n ask: (item: T) => {\n setTarget(item);\n setOpen(true);\n },\n onOpenChange: setOpen,\n close: () => setOpen(false),\n };\n};\n"],"mappings":"6HAIA,IAAaG,EAAwB,GACnCD,EAAM,CAAC,CAAC,MAAM,mBAAmB,SAASE,CAAM,GAAK,cCC1CG,MAA4B,CACvC,GAAM,CAACC,EAAQC,IAAA,EAAaT,EAAAA,SAAAA,CAAwB,IAAA,EAAS,EACvD,CAACU,EAAMC,IAAA,EAAWX,EAAAA,SAAAA,CAAS,EAAK,EACtC,MAAO,CACL,SACA,OACA,IAAM,GAAY,CAChBS,EAAUG,CAAI,EACdD,EAAQ,EAAI,CACd,EACA,aAAcA,EACd,UAAaA,EAAQ,EAAK,CAC5B,CACF"}
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{r as n}from"./schema-KXXSPVJn.js";import{V as r}from"./src-D6DABe5J.js";var i=e(t(),1),a=()=>{let{definitions:e,error:t}=n();return{schema:(0,i.useMemo)(()=>{if(!e)return;let t=new Map,n=new Map;for(let{definition:i}of e)r(i)?n.set(i.id,i):t.set(i.id,i);return{models:t,components:n,sortedModels:[...t.values()].sort((e,t)=>e.label.localeCompare(t.label))}},[e]),error:t}},o=(e,t)=>e.sortedModels.find(e=>e.apiKey===t);export{a as n,o as t};
2
- //# sourceMappingURL=useContentSchema-CS5QQcRk.js.map
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{r as n}from"./schema-B4smPFcR.js";import{V as r}from"./src-XaU0N8C-.js";var i=e(t(),1),a=()=>{let{definitions:e,error:t}=n();return{schema:(0,i.useMemo)(()=>{if(!e)return;let t=new Map,n=new Map;for(let{definition:i}of e)r(i)?n.set(i.id,i):t.set(i.id,i);return{models:t,components:n,sortedModels:[...t.values()].sort((e,t)=>e.label.localeCompare(t.label))}},[e]),error:t}},o=(e,t)=>e.sortedModels.find(e=>e.apiKey===t);export{a as n,o as t};
2
+ //# sourceMappingURL=useContentSchema-Bv4_6VJR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useContentSchema-CS5QQcRk.js","names":["useMemo","__toESM","useAllDefinitions","isComponentDefinition","import_react","require_react","useContentSchema","definitions","models","components","definition","a","b","findModelByKey","schema","model","modelKey"],"sources":["../../src/features/Content/hooks/useContentSchema.ts"],"sourcesContent":["import { isComponentDefinition, type ComponentDefinition, type ModelDefinition } from '@shapio/schema';\nimport { useMemo } from 'react';\nimport { useAllDefinitions } from '@/api/schema';\n\nexport type ContentSchema = {\n models: ReadonlyMap<string, ModelDefinition>;\n components: ReadonlyMap<string, ComponentDefinition>;\n /** Collections and singletons, in label order (for navigation). */\n sortedModels: readonly ModelDefinition[];\n};\n\n/**\n * The active schema as the content screens need it. Models are data (CONTRIBUTING.md rule 2): routes carry a\n * model's API key and resolve it here at render time, so a model created a moment ago works at once.\n */\nexport const useContentSchema = (): { schema: ContentSchema | undefined; error: unknown } => {\n const { definitions, error } = useAllDefinitions();\n const schema = useMemo(() => {\n if (!definitions) {\n return undefined;\n }\n const models = new Map<string, ModelDefinition>();\n const components = new Map<string, ComponentDefinition>();\n for (const { definition } of definitions) {\n if (isComponentDefinition(definition)) {\n components.set(definition.id, definition);\n } else {\n models.set(definition.id, definition);\n }\n }\n const sortedModels = [...models.values()].sort((a, b) => a.label.localeCompare(b.label));\n return { models, components, sortedModels };\n }, [definitions]);\n return { schema, error };\n};\n\nexport const findModelByKey = (schema: ContentSchema, modelKey: string): ModelDefinition | undefined =>\n schema.sortedModels.find((model) => model.apiKey === modelKey);\n"],"mappings":"oLAeaM,MAAgF,CAC3F,GAAM,CAAE,cAAa,SAAUJ,EAAkB,EAiBjD,MAAO,CAAE,QAAA,EAhBMF,EAAAA,QAAAA,KAAc,CAC3B,GAAI,CAACO,EACH,OAEF,IAAMC,EAAS,IAAI,IACbC,EAAa,IAAI,IACvB,IAAK,GAAM,CAAE,gBAAgBF,EACvBJ,EAAsBO,CAAU,EAClCD,EAAW,IAAIC,EAAW,GAAIA,CAAU,EAExCF,EAAO,IAAIE,EAAW,GAAIA,CAAU,EAIxC,MAAO,CAAE,SAAQ,aAAY,aADR,CAAC,GAAGF,EAAO,OAAO,CAAC,CAAC,CAAC,MAAM,EAAG,IAAMG,EAAE,MAAM,cAAcC,EAAE,KAAK,CACzD,CAAa,CAC5C,EAAG,CAACL,CAAW,CACN,EAAQ,OAAM,CACzB,EAEaM,GAAkB,EAAuB,IACpDC,EAAO,aAAa,KAAM,GAAUC,EAAM,SAAWC,CAAQ"}
1
+ {"version":3,"file":"useContentSchema-Bv4_6VJR.js","names":["useMemo","__toESM","useAllDefinitions","isComponentDefinition","import_react","require_react","useContentSchema","definitions","models","components","definition","a","b","findModelByKey","schema","model","modelKey"],"sources":["../../src/features/Content/hooks/useContentSchema.ts"],"sourcesContent":["import { isComponentDefinition, type ComponentDefinition, type ModelDefinition } from '@shapio/schema';\nimport { useMemo } from 'react';\nimport { useAllDefinitions } from '@/api/schema';\n\nexport type ContentSchema = {\n models: ReadonlyMap<string, ModelDefinition>;\n components: ReadonlyMap<string, ComponentDefinition>;\n /** Collections and singletons, in label order (for navigation). */\n sortedModels: readonly ModelDefinition[];\n};\n\n/**\n * The active schema as the content screens need it. Models are data (CONTRIBUTING.md rule 2): routes carry a\n * model's API key and resolve it here at render time, so a model created a moment ago works at once.\n */\nexport const useContentSchema = (): { schema: ContentSchema | undefined; error: unknown } => {\n const { definitions, error } = useAllDefinitions();\n const schema = useMemo(() => {\n if (!definitions) {\n return undefined;\n }\n const models = new Map<string, ModelDefinition>();\n const components = new Map<string, ComponentDefinition>();\n for (const { definition } of definitions) {\n if (isComponentDefinition(definition)) {\n components.set(definition.id, definition);\n } else {\n models.set(definition.id, definition);\n }\n }\n const sortedModels = [...models.values()].sort((a, b) => a.label.localeCompare(b.label));\n return { models, components, sortedModels };\n }, [definitions]);\n return { schema, error };\n};\n\nexport const findModelByKey = (schema: ContentSchema, modelKey: string): ModelDefinition | undefined =>\n schema.sortedModels.find((model) => model.apiKey === modelKey);\n"],"mappings":"oLAeaM,MAAgF,CAC3F,GAAM,CAAE,cAAa,SAAUJ,EAAkB,EAiBjD,MAAO,CAAE,QAAA,EAhBMF,EAAAA,QAAAA,KAAc,CAC3B,GAAI,CAACO,EACH,OAEF,IAAMC,EAAS,IAAI,IACbC,EAAa,IAAI,IACvB,IAAK,GAAM,CAAE,gBAAgBF,EACvBJ,EAAsBO,CAAU,EAClCD,EAAW,IAAIC,EAAW,GAAIA,CAAU,EAExCF,EAAO,IAAIE,EAAW,GAAIA,CAAU,EAIxC,MAAO,CAAE,SAAQ,aAAY,aADR,CAAC,GAAGF,EAAO,OAAO,CAAC,CAAC,CAAC,MAAM,EAAG,IAAMG,EAAE,MAAM,cAAcC,EAAE,KAAK,CACzD,CAAa,CAC5C,EAAG,CAACL,CAAW,CACN,EAAQ,OAAM,CACzB,EAEaM,GAAkB,EAAuB,IACpDC,EAAO,aAAa,KAAM,GAAUC,EAAM,SAAWC,CAAQ"}
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{H as n,P as r,V as i,bt as a,i as o,l as s,s as c,ut as l}from"./cn-DnXL75B0.js";import{a as u,n as d,t as f}from"./publishing-B7zv1e7j.js";var p={name:`rocket`,size:24,node:[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]};p.node;var m=o(p),h=e(t(),1),g=(e,t,n,r)=>{(0,h.useEffect)(()=>{e&&(t(n),r())},[e,t,n,r])},_={silent:!0},v=e=>e?u:!1,y=()=>n({queryKey:r.publishing.deployments.connections,queryFn:()=>s.deployments.connections.list(),refetchInterval:e=>v(e.state.data?.some(e=>e.latestRun?d.has(e.latestRun.status):!1)??!1),meta:_}),b=e=>n({queryKey:r.publishing.deployments.connection(e),queryFn:()=>s.deployments.connections.get(e),refetchInterval:e=>v(e.state.data?.latestRun?d.has(e.state.data.latestRun.status):!1),meta:_}),x=e=>n({queryKey:r.publishing.deployments.runs(e),queryFn:()=>s.deployments.runs.list(e),placeholderData:l,refetchInterval:e=>v(e.state.data?.items.some(e=>d.has(e.status))??!1),meta:_}),S=e=>n({queryKey:r.publishing.deployments.run(e),queryFn:()=>s.deployments.runs.get(e),refetchInterval:e=>v(e.state.data?d.has(e.state.data.status):!1),meta:_}),C=()=>{let e=a();return()=>e.invalidateQueries({queryKey:r.publishing.deployments.all})},w=()=>{let e=C();return i({mutationKey:[`deployments`,`create`],meta:_,mutationFn:e=>c(()=>s.deployments.connections.create(e)),onSuccess:e})},T=()=>{let e=a(),t=C();return i({mutationKey:[`deployments`,`update`],meta:_,mutationFn:({id:e,input:t})=>c(()=>s.deployments.connections.update(e,t)),onSuccess:n=>(e.setQueryData(r.publishing.deployments.connection(n.id),n),t())})},E=()=>{let e=a(),t=C();return i({mutationKey:[`deployments`,`delete`],mutationFn:e=>c(()=>s.deployments.connections.remove(e)),onSuccess:(n,i)=>(e.removeQueries({queryKey:r.publishing.deployments.connection(i)}),t())})},D=()=>i({mutationKey:[`deployments`,`test`],mutationFn:e=>c(()=>s.deployments.connections.test(e))}),O=()=>{let e=C();return i({mutationKey:[`deployments`,`trigger`],mutationFn:e=>c(()=>s.deployments.connections.trigger(e)),onSuccess:e})},k=()=>{let e=C();return i({mutationKey:[`deployments`,`retry`],mutationFn:e=>c(()=>s.deployments.runs.retry(e)),onSuccess:e})},A={publish:`publishing.actions.publish`,unpublish:`publishing.actions.unpublish`},j={generic_webhook:`publishing.deployments.providers.generic_webhook`,cloudflare_pages:`publishing.deployments.providers.cloudflare_pages`,vercel:`publishing.deployments.providers.vercel`,netlify:`publishing.deployments.providers.netlify`,github:`publishing.deployments.providers.github`},M={publish:`publishing.deployments.triggers.publish`,change_set:`publishing.deployments.triggers.changeSet`,schema:`publishing.deployments.triggers.schema`,manual:`publishing.deployments.triggers.manual`},N={publish:`publishing.deployments.runTriggers.publish`,change_set:`publishing.deployments.runTriggers.changeSet`,schema:`publishing.deployments.runTriggers.schema`,manual:`publishing.deployments.runTriggers.manual`,retry:`publishing.deployments.runTriggers.retry`},P={shapio:`publishing.deployments.sources.shapio`,callback:`publishing.deployments.sources.callback`,provider:`publishing.deployments.sources.provider`},F={silent:!0},I=()=>n({queryKey:r.publishing.webhooks.list,queryFn:()=>s.webhooks.list(),meta:F}),L=()=>n({queryKey:r.publishing.webhooks.events,queryFn:()=>s.webhooks.events(),staleTime:1/0,meta:F}),R=e=>n({queryKey:r.publishing.webhooks.webhook(e),queryFn:()=>s.webhooks.get(e),meta:F}),z=(e,t)=>n({queryKey:r.publishing.webhooks.deliveries(e,t),queryFn:()=>s.webhooks.deliveries(e,{cursor:t,limit:25}),placeholderData:l,refetchInterval:e=>e.state.data?.items.some(e=>f.has(e.status))?u:!1,meta:F}),B=()=>{let e=a();return()=>e.invalidateQueries({queryKey:r.publishing.webhooks.all})},V=()=>{let e=B();return i({mutationKey:[`webhooks`,`create`],meta:F,mutationFn:e=>c(()=>s.webhooks.create(e)),onSuccess:e})},H=()=>{let e=a(),t=B();return i({mutationKey:[`webhooks`,`update`],meta:F,mutationFn:({id:e,input:t})=>c(()=>s.webhooks.update(e,t)),onSuccess:n=>(e.setQueryData(r.publishing.webhooks.webhook(n.id),n),t())})},U=()=>{let e=B();return i({mutationKey:[`webhooks`,`delete`],mutationFn:e=>c(()=>s.webhooks.remove(e)),onSuccess:e})},W=()=>{let e=B();return i({mutationKey:[`webhooks`,`rotateSecret`],mutationFn:e=>c(()=>s.webhooks.rotateSecret(e)),onSuccess:e})},G=()=>{let e=B();return i({mutationKey:[`webhooks`,`test`],mutationFn:e=>c(()=>s.webhooks.test(e)),onSuccess:e})},K=()=>{let e=B();return i({mutationKey:[`webhooks`,`redeliver`],mutationFn:({id:e,deliveryId:t})=>c(()=>s.webhooks.redeliver(e,t)),onSuccess:e})},q=(e,t)=>{let[n,r]=(0,h.useState)([]);return{pagerProps:i=>({onFirst:e===void 0?void 0:()=>{r([]),t(void 0)},onPrevious:n.length===0?void 0:()=>{t(n.at(-1)),r(e=>e.slice(0,-1))},onNext:i?()=>{r(t=>[...t,e]),t(i)}:void 0}),resetPager:()=>r([])}};export{k as C,g as D,T as E,m as O,x as S,O as T,w as _,W as a,y as b,R as c,I as d,j as f,M as g,P as h,K as i,z as l,N as m,V as n,G as o,A as p,U as r,H as s,q as t,L as u,E as v,D as w,S as x,b as y};
2
- //# sourceMappingURL=useCursorPager-Dt_axwd1.js.map
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{H as n,P as r,V as i,bt as a,i as o,l as s,s as c,ut as l}from"./cn-BQ3voEft.js";import{a as u,n as d,t as f}from"./publishing-B7zv1e7j.js";var p={name:`rocket`,size:24,node:[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]};p.node;var m=o(p),h=e(t(),1),g=(e,t,n,r)=>{(0,h.useEffect)(()=>{e&&(t(n),r())},[e,t,n,r])},_={silent:!0},v=e=>e?u:!1,y=()=>n({queryKey:r.publishing.deployments.connections,queryFn:()=>s.deployments.connections.list(),refetchInterval:e=>v(e.state.data?.some(e=>e.latestRun?d.has(e.latestRun.status):!1)??!1),meta:_}),b=e=>n({queryKey:r.publishing.deployments.connection(e),queryFn:()=>s.deployments.connections.get(e),refetchInterval:e=>v(e.state.data?.latestRun?d.has(e.state.data.latestRun.status):!1),meta:_}),x=e=>n({queryKey:r.publishing.deployments.runs(e),queryFn:()=>s.deployments.runs.list(e),placeholderData:l,refetchInterval:e=>v(e.state.data?.items.some(e=>d.has(e.status))??!1),meta:_}),S=e=>n({queryKey:r.publishing.deployments.run(e),queryFn:()=>s.deployments.runs.get(e),refetchInterval:e=>v(e.state.data?d.has(e.state.data.status):!1),meta:_}),C=()=>{let e=a();return()=>e.invalidateQueries({queryKey:r.publishing.deployments.all})},w=()=>{let e=C();return i({mutationKey:[`deployments`,`create`],meta:_,mutationFn:e=>c(()=>s.deployments.connections.create(e)),onSuccess:e})},T=()=>{let e=a(),t=C();return i({mutationKey:[`deployments`,`update`],meta:_,mutationFn:({id:e,input:t})=>c(()=>s.deployments.connections.update(e,t)),onSuccess:n=>(e.setQueryData(r.publishing.deployments.connection(n.id),n),t())})},E=()=>{let e=a(),t=C();return i({mutationKey:[`deployments`,`delete`],mutationFn:e=>c(()=>s.deployments.connections.remove(e)),onSuccess:(n,i)=>(e.removeQueries({queryKey:r.publishing.deployments.connection(i)}),t())})},D=()=>i({mutationKey:[`deployments`,`test`],mutationFn:e=>c(()=>s.deployments.connections.test(e))}),O=()=>{let e=C();return i({mutationKey:[`deployments`,`trigger`],mutationFn:e=>c(()=>s.deployments.connections.trigger(e)),onSuccess:e})},k=()=>{let e=C();return i({mutationKey:[`deployments`,`retry`],mutationFn:e=>c(()=>s.deployments.runs.retry(e)),onSuccess:e})},A={publish:`publishing.actions.publish`,unpublish:`publishing.actions.unpublish`},j={generic_webhook:`publishing.deployments.providers.generic_webhook`,cloudflare_pages:`publishing.deployments.providers.cloudflare_pages`,vercel:`publishing.deployments.providers.vercel`,netlify:`publishing.deployments.providers.netlify`,github:`publishing.deployments.providers.github`},M={publish:`publishing.deployments.triggers.publish`,change_set:`publishing.deployments.triggers.changeSet`,schema:`publishing.deployments.triggers.schema`,manual:`publishing.deployments.triggers.manual`},N={publish:`publishing.deployments.runTriggers.publish`,change_set:`publishing.deployments.runTriggers.changeSet`,schema:`publishing.deployments.runTriggers.schema`,manual:`publishing.deployments.runTriggers.manual`,retry:`publishing.deployments.runTriggers.retry`},P={shapio:`publishing.deployments.sources.shapio`,callback:`publishing.deployments.sources.callback`,provider:`publishing.deployments.sources.provider`},F={silent:!0},I=()=>n({queryKey:r.publishing.webhooks.list,queryFn:()=>s.webhooks.list(),meta:F}),L=()=>n({queryKey:r.publishing.webhooks.events,queryFn:()=>s.webhooks.events(),staleTime:1/0,meta:F}),R=e=>n({queryKey:r.publishing.webhooks.webhook(e),queryFn:()=>s.webhooks.get(e),meta:F}),z=(e,t)=>n({queryKey:r.publishing.webhooks.deliveries(e,t),queryFn:()=>s.webhooks.deliveries(e,{cursor:t,limit:25}),placeholderData:l,refetchInterval:e=>e.state.data?.items.some(e=>f.has(e.status))?u:!1,meta:F}),B=()=>{let e=a();return()=>e.invalidateQueries({queryKey:r.publishing.webhooks.all})},V=()=>{let e=B();return i({mutationKey:[`webhooks`,`create`],meta:F,mutationFn:e=>c(()=>s.webhooks.create(e)),onSuccess:e})},H=()=>{let e=a(),t=B();return i({mutationKey:[`webhooks`,`update`],meta:F,mutationFn:({id:e,input:t})=>c(()=>s.webhooks.update(e,t)),onSuccess:n=>(e.setQueryData(r.publishing.webhooks.webhook(n.id),n),t())})},U=()=>{let e=B();return i({mutationKey:[`webhooks`,`delete`],mutationFn:e=>c(()=>s.webhooks.remove(e)),onSuccess:e})},W=()=>{let e=B();return i({mutationKey:[`webhooks`,`rotateSecret`],mutationFn:e=>c(()=>s.webhooks.rotateSecret(e)),onSuccess:e})},G=()=>{let e=B();return i({mutationKey:[`webhooks`,`test`],mutationFn:e=>c(()=>s.webhooks.test(e)),onSuccess:e})},K=()=>{let e=B();return i({mutationKey:[`webhooks`,`redeliver`],mutationFn:({id:e,deliveryId:t})=>c(()=>s.webhooks.redeliver(e,t)),onSuccess:e})},q=(e,t)=>{let[n,r]=(0,h.useState)([]);return{pagerProps:i=>({onFirst:e===void 0?void 0:()=>{r([]),t(void 0)},onPrevious:n.length===0?void 0:()=>{t(n.at(-1)),r(e=>e.slice(0,-1))},onNext:i?()=>{r(t=>[...t,e]),t(i)}:void 0}),resetPager:()=>r([])}};export{k as C,g as D,T as E,m as O,x as S,O as T,w as _,W as a,y as b,R as c,I as d,j as f,M as g,P as h,K as i,z as l,N as m,V as n,G as o,A as p,U as r,H as s,q as t,L as u,E as v,D as w,S as x,b as y};
2
+ //# sourceMappingURL=useCursorPager-B1upg5EU.js.map