@shapio/cms 0.5.8 → 0.5.9

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 (323) hide show
  1. package/dist/admin/assets/{AssetTile-BrMzsUZD.js → AssetTile-Da76KsyX.js} +2 -2
  2. package/dist/admin/assets/{AssetTile-BrMzsUZD.js.map → AssetTile-Da76KsyX.js.map} +1 -1
  3. package/dist/admin/assets/AssistError-Wr62cDj3.js +2 -0
  4. package/dist/admin/assets/{AssistError-Cs-r9Ssc.js.map → AssistError-Wr62cDj3.js.map} +1 -1
  5. package/dist/admin/assets/{BlockMenuItems-DsccXMc_.js → BlockMenuItems-BMiEVCIT.js} +2 -2
  6. package/dist/admin/assets/{BlockMenuItems-DsccXMc_.js.map → BlockMenuItems-BMiEVCIT.js.map} +1 -1
  7. package/dist/admin/assets/Body-BEW1sAAB.js +2 -0
  8. package/dist/admin/assets/Body-BEW1sAAB.js.map +1 -0
  9. package/dist/admin/assets/Builder-Tk_5Orrl.js +2 -0
  10. package/dist/admin/assets/Builder-Tk_5Orrl.js.map +1 -0
  11. package/dist/admin/assets/{CodeEditor-CBCR73Wd.js → CodeEditor-Ck7ggv6w.js} +2 -2
  12. package/dist/admin/assets/{CodeEditor-CBCR73Wd.js.map → CodeEditor-Ck7ggv6w.js.map} +1 -1
  13. package/dist/admin/assets/{CopyButton-CxFsBHfF.js → CopyButton-WMWuSVsk.js} +2 -2
  14. package/dist/admin/assets/{CopyButton-CxFsBHfF.js.map → CopyButton-WMWuSVsk.js.map} +1 -1
  15. package/dist/admin/assets/{CursorPager-BW2U3v6l.js → CursorPager-CsnzX1P8.js} +2 -2
  16. package/dist/admin/assets/{CursorPager-BW2U3v6l.js.map → CursorPager-CsnzX1P8.js.map} +1 -1
  17. package/dist/admin/assets/{ExternalLink-BITMgS1K.js → ExternalLink-D80sb5Jj.js} +2 -2
  18. package/dist/admin/assets/{ExternalLink-BITMgS1K.js.map → ExternalLink-D80sb5Jj.js.map} +1 -1
  19. package/dist/admin/assets/{FocalPoint-CpZTve1E.js → FocalPoint-CstZuVmt.js} +2 -2
  20. package/dist/admin/assets/{FocalPoint-CpZTve1E.js.map → FocalPoint-CstZuVmt.js.map} +1 -1
  21. package/dist/admin/assets/Form-CEOW2OFF.js +2 -0
  22. package/dist/admin/assets/Form-CEOW2OFF.js.map +1 -0
  23. package/dist/admin/assets/{FormCheckboxGroup-DeeaYnzB.js → FormCheckboxGroup-VjWVMiF3.js} +2 -2
  24. package/dist/admin/assets/{FormCheckboxGroup-DeeaYnzB.js.map → FormCheckboxGroup-VjWVMiF3.js.map} +1 -1
  25. package/dist/admin/assets/{FormRadioGroup-Cfx5pvzU.js → FormRadioGroup-BQurJa8M.js} +2 -2
  26. package/dist/admin/assets/{FormRadioGroup-Cfx5pvzU.js.map → FormRadioGroup-BQurJa8M.js.map} +1 -1
  27. package/dist/admin/assets/FormSelectField-B4sjP-pj.js +2 -0
  28. package/dist/admin/assets/FormSelectField-B4sjP-pj.js.map +1 -0
  29. package/dist/admin/assets/FormSheet-V99zdfQe.js +2 -0
  30. package/dist/admin/assets/FormSheet-V99zdfQe.js.map +1 -0
  31. package/dist/admin/assets/{FormSwitchField-BLOh7qei.js → FormSwitchField-RZgoP--n.js} +2 -2
  32. package/dist/admin/assets/{FormSwitchField-BLOh7qei.js.map → FormSwitchField-RZgoP--n.js.map} +1 -1
  33. package/dist/admin/assets/{FormTextareaField-CO115n_u.js → FormTextareaField-CzXgoQzf.js} +2 -2
  34. package/dist/admin/assets/{FormTextareaField-CO115n_u.js.map → FormTextareaField-CzXgoQzf.js.map} +1 -1
  35. package/dist/admin/assets/{HintedLabel-DzHnEdIK.js → HintedLabel-Cd9nuSqV.js} +2 -2
  36. package/dist/admin/assets/{HintedLabel-DzHnEdIK.js.map → HintedLabel-Cd9nuSqV.js.map} +1 -1
  37. package/dist/admin/assets/{InfoHint-CSEtcHjL.js → InfoHint-ymRmHKMr.js} +2 -2
  38. package/dist/admin/assets/{InfoHint-CSEtcHjL.js.map → InfoHint-ymRmHKMr.js.map} +1 -1
  39. package/dist/admin/assets/{InlineConfirm-yW-iUKFC.js → InlineConfirm-A4IqkrGp.js} +2 -2
  40. package/dist/admin/assets/{InlineConfirm-yW-iUKFC.js.map → InlineConfirm-A4IqkrGp.js.map} +1 -1
  41. package/dist/admin/assets/{InsertMenuItem-CCr9e0qY.js → InsertMenuItem-Bf7S7qbm.js} +2 -2
  42. package/dist/admin/assets/{InsertMenuItem-CCr9e0qY.js.map → InsertMenuItem-Bf7S7qbm.js.map} +1 -1
  43. package/dist/admin/assets/{LinkTabs-8SmS1vCd.js → LinkTabs-oQXsy1I3.js} +2 -2
  44. package/dist/admin/assets/{LinkTabs-8SmS1vCd.js.map → LinkTabs-oQXsy1I3.js.map} +1 -1
  45. package/dist/admin/assets/{Match-CcD9KxHH.js → Match-DJq8wn3e.js} +2 -2
  46. package/dist/admin/assets/{Match-CcD9KxHH.js.map → Match-DJq8wn3e.js.map} +1 -1
  47. package/dist/admin/assets/{NoAccess-C8RLPN0I.js → NoAccess-CZufdbPI.js} +2 -2
  48. package/dist/admin/assets/{NoAccess-C8RLPN0I.js.map → NoAccess-CZufdbPI.js.map} +1 -1
  49. package/dist/admin/assets/{QueryView-xMP_uJ_t.js → QueryView-DO9TFWYE.js} +2 -2
  50. package/dist/admin/assets/{QueryView-xMP_uJ_t.js.map → QueryView-DO9TFWYE.js.map} +1 -1
  51. package/dist/admin/assets/{RadioTile-DQFmni5A.js → RadioTile-DmKBFkpy.js} +2 -2
  52. package/dist/admin/assets/{RadioTile-DQFmni5A.js.map → RadioTile-DmKBFkpy.js.map} +1 -1
  53. package/dist/admin/assets/{RichTextField-CVHRIbnu.js → RichTextField-BpxyusP4.js} +4 -4
  54. package/dist/admin/assets/{RichTextField-CVHRIbnu.js.map → RichTextField-BpxyusP4.js.map} +1 -1
  55. package/dist/admin/assets/{RowTitle-Bqt6evG9.js → RowTitle-DVOfgxOd.js} +2 -2
  56. package/dist/admin/assets/{RowTitle-Bqt6evG9.js.map → RowTitle-DVOfgxOd.js.map} +1 -1
  57. package/dist/admin/assets/{SecretReveal-Bm6nYg5J.js → SecretReveal-DRCqVEFF.js} +2 -2
  58. package/dist/admin/assets/{SecretReveal-Bm6nYg5J.js.map → SecretReveal-DRCqVEFF.js.map} +1 -1
  59. package/dist/admin/assets/{SharedGlyph-cUmTh0_C.js → SharedGlyph-nsXJPCew.js} +2 -2
  60. package/dist/admin/assets/{SharedGlyph-cUmTh0_C.js.map → SharedGlyph-nsXJPCew.js.map} +1 -1
  61. package/dist/admin/assets/StepList-CDZPRd3-.js +2 -0
  62. package/dist/admin/assets/StepList-CDZPRd3-.js.map +1 -0
  63. package/dist/admin/assets/Structure-CL51Bvbm.js +2 -0
  64. package/dist/admin/assets/{Structure-D8csgrIt.js.map → Structure-CL51Bvbm.js.map} +1 -1
  65. package/dist/admin/assets/{SubNavLink-CiCaVV8U.js → SubNavLink-7Cs1LqMv.js} +2 -2
  66. package/dist/admin/assets/{SubNavLink-CiCaVV8U.js.map → SubNavLink-7Cs1LqMv.js.map} +1 -1
  67. package/dist/admin/assets/{SuggestAltButton-CvIoirnz.js → SuggestAltButton-4SaZQOJu.js} +2 -2
  68. package/dist/admin/assets/{SuggestAltButton-CvIoirnz.js.map → SuggestAltButton-4SaZQOJu.js.map} +1 -1
  69. package/dist/admin/assets/{TextLink-HRn66VL1.js → TextLink-Dfs5wsc5.js} +2 -2
  70. package/dist/admin/assets/{TextLink-HRn66VL1.js.map → TextLink-Dfs5wsc5.js.map} +1 -1
  71. package/dist/admin/assets/{Thumbnail-DNj5TRBI.js → Thumbnail-DauHAkh8.js} +2 -2
  72. package/dist/admin/assets/{Thumbnail-DNj5TRBI.js.map → Thumbnail-DauHAkh8.js.map} +1 -1
  73. package/dist/admin/assets/Trans-B3UWiZaU.js +2 -0
  74. package/dist/admin/assets/Trans-B3UWiZaU.js.map +1 -0
  75. package/dist/admin/assets/{UnsavedChangesGuard-CUiuMklN.js → UnsavedChangesGuard-DPgih7BX.js} +2 -2
  76. package/dist/admin/assets/{UnsavedChangesGuard-CUiuMklN.js.map → UnsavedChangesGuard-DPgih7BX.js.map} +1 -1
  77. package/dist/admin/assets/{UserAvatar-p-jV-LoD.js → UserAvatar-If-zlQNY.js} +2 -2
  78. package/dist/admin/assets/{UserAvatar-p-jV-LoD.js.map → UserAvatar-If-zlQNY.js.map} +1 -1
  79. package/dist/admin/assets/auth-BFSvtV59.js +2 -0
  80. package/dist/admin/assets/{auth-CQO4MBUj.js.map → auth-BFSvtV59.js.map} +1 -1
  81. package/dist/admin/assets/{badge-CqKF1pwz.js → badge-DEe9tqLS.js} +2 -2
  82. package/dist/admin/assets/{badge-CqKF1pwz.js.map → badge-DEe9tqLS.js.map} +1 -1
  83. package/dist/admin/assets/{boxes-CAygw8zF.js → boxes-_5klpWNM.js} +2 -2
  84. package/dist/admin/assets/{boxes-CAygw8zF.js.map → boxes-_5klpWNM.js.map} +1 -1
  85. package/dist/admin/assets/{calendar-clock-BZGtAvWR.js → calendar-clock-VXok22Xj.js} +2 -2
  86. package/dist/admin/assets/{calendar-clock-BZGtAvWR.js.map → calendar-clock-VXok22Xj.js.map} +1 -1
  87. package/dist/admin/assets/changeSets-D5i2SgFV.js +2 -0
  88. package/dist/admin/assets/{changeSets-8EburmT0.js.map → changeSets-D5i2SgFV.js.map} +1 -1
  89. package/dist/admin/assets/chevron-left-CkRxDtvO.js +2 -0
  90. package/dist/admin/assets/{chevron-left-DGU3HGYG.js.map → chevron-left-CkRxDtvO.js.map} +1 -1
  91. package/dist/admin/assets/{circle-check-C37MSJqX.js → circle-check-DtDq7QMo.js} +2 -2
  92. package/dist/admin/assets/{circle-check-C37MSJqX.js.map → circle-check-DtDq7QMo.js.map} +1 -1
  93. package/dist/admin/assets/{clock-2arjsgZ4.js → clock-BtvZR9KD.js} +2 -2
  94. package/dist/admin/assets/{clock-2arjsgZ4.js.map → clock-BtvZR9KD.js.map} +1 -1
  95. package/dist/admin/assets/{constants-a_15vqOh.js → constants-FKg_ke3y.js} +2 -2
  96. package/dist/admin/assets/{constants-a_15vqOh.js.map → constants-FKg_ke3y.js.map} +1 -1
  97. package/dist/admin/assets/content-DKT2ziPH.js +3 -0
  98. package/dist/admin/assets/content-DKT2ziPH.js.map +1 -0
  99. package/dist/admin/assets/{contentCounts-DP7YYeZZ.js → contentCounts-BzC7IQqP.js} +2 -2
  100. package/dist/admin/assets/{contentCounts-DP7YYeZZ.js.map → contentCounts-BzC7IQqP.js.map} +1 -1
  101. package/dist/admin/assets/{contentTypes-84uc0bjR.js → contentTypes-B5taZv3y.js} +2 -2
  102. package/dist/admin/assets/{contentTypes-84uc0bjR.js.map → contentTypes-B5taZv3y.js.map} +1 -1
  103. package/dist/admin/assets/{context-IKYdzQJ-.js → context-CEVKblBl.js} +2 -2
  104. package/dist/admin/assets/{context-IKYdzQJ-.js.map → context-CEVKblBl.js.map} +1 -1
  105. package/dist/admin/assets/{copy-CsSRHgKZ.js → copy-B7vIq8DS.js} +2 -2
  106. package/dist/admin/assets/{copy-CsSRHgKZ.js.map → copy-B7vIq8DS.js.map} +1 -1
  107. package/dist/admin/assets/createLucideIcon-BOsNKleB.js +2 -0
  108. package/dist/admin/assets/createLucideIcon-BOsNKleB.js.map +1 -0
  109. package/dist/admin/assets/develop-CFlv7IdP.js +11 -0
  110. package/dist/admin/assets/develop-CFlv7IdP.js.map +1 -0
  111. package/dist/admin/assets/{dropdown-menu-_xfaEp5C.js → dropdown-menu-B7dJyA8h.js} +2 -2
  112. package/dist/admin/assets/{dropdown-menu-_xfaEp5C.js.map → dropdown-menu-B7dJyA8h.js.map} +1 -1
  113. package/dist/admin/assets/{ellipsis-F91991on.js → ellipsis-Ci0rsbCJ.js} +2 -2
  114. package/dist/admin/assets/{ellipsis-F91991on.js.map → ellipsis-Ci0rsbCJ.js.map} +1 -1
  115. package/dist/admin/assets/{entryLink-CVB-TdIn.js → entryLink-B0hSb_dN.js} +2 -2
  116. package/dist/admin/assets/{entryLink-CVB-TdIn.js.map → entryLink-B0hSb_dN.js.map} +1 -1
  117. package/dist/admin/assets/es2015-1nJWBurR.js +42 -0
  118. package/dist/admin/assets/es2015-1nJWBurR.js.map +1 -0
  119. package/dist/admin/assets/{external-link-CdG6kHfA.js → external-link-Bs9YRzvY.js} +2 -2
  120. package/dist/admin/assets/{external-link-CdG6kHfA.js.map → external-link-Bs9YRzvY.js.map} +1 -1
  121. package/dist/admin/assets/{field-COOzRptX.js → field-BDCHXkZE.js} +2 -2
  122. package/dist/admin/assets/{field-COOzRptX.js.map → field-BDCHXkZE.js.map} +1 -1
  123. package/dist/admin/assets/{file-stack-28ZtO1xW.js → file-stack-X4OGmkLA.js} +2 -2
  124. package/dist/admin/assets/{file-stack-28ZtO1xW.js.map → file-stack-X4OGmkLA.js.map} +1 -1
  125. package/dist/admin/assets/{fileRoute-s7mCMYUJ.js → fileRoute-c9UMUr9b.js} +2 -2
  126. package/dist/admin/assets/{fileRoute-s7mCMYUJ.js.map → fileRoute-c9UMUr9b.js.map} +1 -1
  127. package/dist/admin/assets/{folder-plus-DIk0pWkP.js → folder-plus-De2GNvry.js} +2 -2
  128. package/dist/admin/assets/{folder-plus-DIk0pWkP.js.map → folder-plus-De2GNvry.js.map} +1 -1
  129. package/dist/admin/assets/followPlural-CHpz-yo4.js +2 -0
  130. package/dist/admin/assets/followPlural-CHpz-yo4.js.map +1 -0
  131. package/dist/admin/assets/{globe-DFr3Gd2w.js → globe-DBw84s8Z.js} +2 -2
  132. package/dist/admin/assets/{globe-DFr3Gd2w.js.map → globe-DBw84s8Z.js.map} +1 -1
  133. package/dist/admin/assets/{image-DT79QFa_.js → image-CX4mT-_R.js} +2 -2
  134. package/dist/admin/assets/{image-DT79QFa_.js.map → image-CX4mT-_R.js.map} +1 -1
  135. package/dist/admin/assets/{image-off-DFs5upyX.js → image-off-CVaH_qKf.js} +2 -2
  136. package/dist/admin/assets/{image-off-DFs5upyX.js.map → image-off-CVaH_qKf.js.map} +1 -1
  137. package/dist/admin/assets/{inbox-CySnQydm.js → inbox-D9SmWt5L.js} +2 -2
  138. package/dist/admin/assets/{inbox-CySnQydm.js.map → inbox-D9SmWt5L.js.map} +1 -1
  139. package/dist/admin/assets/inbox-Daw10v5C.js +2 -0
  140. package/dist/admin/assets/inbox-Daw10v5C.js.map +1 -0
  141. package/dist/admin/assets/index-BRx5mel0.js +4 -0
  142. package/dist/admin/assets/index-BRx5mel0.js.map +1 -0
  143. package/dist/admin/assets/index-DZsQq6fY.css +2 -0
  144. package/dist/admin/assets/{key-round-D36CePnN.js → key-round-C8sd9CLN.js} +2 -2
  145. package/dist/admin/assets/{key-round-D36CePnN.js.map → key-round-C8sd9CLN.js.map} +1 -1
  146. package/dist/admin/assets/{labels-DQckbLGW.js → labels-B83cEX9w.js} +2 -2
  147. package/dist/admin/assets/{labels-DQckbLGW.js.map → labels-B83cEX9w.js.map} +1 -1
  148. package/dist/admin/assets/{languages-CzbTaQv9.js → languages-DLjdz6gb.js} +2 -2
  149. package/dist/admin/assets/{languages-CzbTaQv9.js.map → languages-DLjdz6gb.js.map} +1 -1
  150. package/dist/admin/assets/{layers-BmcodiaH.js → layers-swLuw-3a.js} +2 -2
  151. package/dist/admin/assets/{layers-BmcodiaH.js.map → layers-swLuw-3a.js.map} +1 -1
  152. package/dist/admin/assets/{link-2-off-CoJNwrxm.js → link-2-off-CEsI5T8h.js} +2 -2
  153. package/dist/admin/assets/{link-2-off-CoJNwrxm.js.map → link-2-off-CEsI5T8h.js.map} +1 -1
  154. package/dist/admin/assets/{link-Pyr2Y35S.js → link-C98FG_p5.js} +2 -2
  155. package/dist/admin/assets/{link-Pyr2Y35S.js.map → link-C98FG_p5.js.map} +1 -1
  156. package/dist/admin/assets/locales-CkuC7TJ1.js +2 -0
  157. package/dist/admin/assets/{locales-Bg3htKo8.js.map → locales-CkuC7TJ1.js.map} +1 -1
  158. package/dist/admin/assets/media-CbGSd_Mw.js +2 -0
  159. package/dist/admin/assets/{media-BCnVhaDH.js.map → media-CbGSd_Mw.js.map} +1 -1
  160. package/dist/admin/assets/{media-CURizGns.js → media-CgxriwNL.js} +2 -2
  161. package/dist/admin/assets/{media-CURizGns.js.map → media-CgxriwNL.js.map} +1 -1
  162. package/dist/admin/assets/network-Cc1TAyal.js +2 -0
  163. package/dist/admin/assets/network-Cc1TAyal.js.map +1 -0
  164. package/dist/admin/assets/{plus-BoDtdLCo.js → plus-cr9ZfO6j.js} +2 -2
  165. package/dist/admin/assets/{plus-BoDtdLCo.js.map → plus-cr9ZfO6j.js.map} +1 -1
  166. package/dist/admin/assets/publishing-RQUj-CyN.js +2 -0
  167. package/dist/admin/assets/{publishing-Dke9bSKp.js.map → publishing-RQUj-CyN.js.map} +1 -1
  168. package/dist/admin/assets/{radio-group-4ok5evXq.js → radio-group-Btmx7dlD.js} +2 -2
  169. package/dist/admin/assets/{radio-group-4ok5evXq.js.map → radio-group-Btmx7dlD.js.map} +1 -1
  170. package/dist/admin/assets/{rotate-ccw-DL6TzcZh.js → rotate-ccw-BP8Ba-mY.js} +2 -2
  171. package/dist/admin/assets/{rotate-ccw-DL6TzcZh.js.map → rotate-ccw-BP8Ba-mY.js.map} +1 -1
  172. package/dist/admin/assets/schedules-BIyBlsYZ.js +2 -0
  173. package/dist/admin/assets/{schedules-BmB9Y73z.js.map → schedules-BIyBlsYZ.js.map} +1 -1
  174. package/dist/admin/assets/schema-BMQEabwO.js +2 -0
  175. package/dist/admin/assets/{schema-D-qo7XSF.js.map → schema-BMQEabwO.js.map} +1 -1
  176. package/dist/admin/assets/{scroll-text-PqeZm472.js → scroll-text-B5vfi9fD.js} +2 -2
  177. package/dist/admin/assets/{scroll-text-PqeZm472.js.map → scroll-text-B5vfi9fD.js.map} +1 -1
  178. package/dist/admin/assets/{search-BdwIwOzC.js → search-wj7zbkx1.js} +2 -2
  179. package/dist/admin/assets/{search-BdwIwOzC.js.map → search-wj7zbkx1.js.map} +1 -1
  180. package/dist/admin/assets/{searchSchemas-CSScloG8.js → searchSchemas-fO_49fDI.js} +2 -2
  181. package/dist/admin/assets/{searchSchemas-CSScloG8.js.map → searchSchemas-fO_49fDI.js.map} +1 -1
  182. package/dist/admin/assets/{sections-BTS683ur.js → sections-DBQpB0uv.js} +2 -2
  183. package/dist/admin/assets/{sections-BTS683ur.js.map → sections-DBQpB0uv.js.map} +1 -1
  184. package/dist/admin/assets/{sections-DqBzSKMP.js → sections-SX-oiQoE.js} +2 -2
  185. package/dist/admin/assets/{sections-DqBzSKMP.js.map → sections-SX-oiQoE.js.map} +1 -1
  186. package/dist/admin/assets/{select-C0USI-Ox.js → select-JB2Vv7ep.js} +2 -2
  187. package/dist/admin/assets/{select-C0USI-Ox.js.map → select-JB2Vv7ep.js.map} +1 -1
  188. package/dist/admin/assets/{send-XPWo3m4u.js → send-CzFdgUc_.js} +2 -2
  189. package/dist/admin/assets/{send-XPWo3m4u.js.map → send-CzFdgUc_.js.map} +1 -1
  190. package/dist/admin/assets/seo-Bd0sWQMo.js +2 -0
  191. package/dist/admin/assets/{seo-CceGYTIX.js.map → seo-Bd0sWQMo.js.map} +1 -1
  192. package/dist/admin/assets/settings-CrRFxhSo.js +2 -0
  193. package/dist/admin/assets/{settings-B60vHpZd.js.map → settings-CrRFxhSo.js.map} +1 -1
  194. package/dist/admin/assets/shapes-EMjfYsXV.js +6 -0
  195. package/dist/admin/assets/shapes-EMjfYsXV.js.map +1 -0
  196. package/dist/admin/assets/{skeleton-B5MP72Kw.js → skeleton-Dk-qdg0z.js} +2 -2
  197. package/dist/admin/assets/{skeleton-B5MP72Kw.js.map → skeleton-Dk-qdg0z.js.map} +1 -1
  198. package/dist/admin/assets/{snapshots-DUI2t-qF.js → snapshots-DbFQNJgN.js} +2 -2
  199. package/dist/admin/assets/{snapshots-DUI2t-qF.js.map → snapshots-DbFQNJgN.js.map} +1 -1
  200. package/dist/admin/assets/{sparkles-CvT-jxrW.js → sparkles-D_kmZJVd.js} +2 -2
  201. package/dist/admin/assets/{sparkles-CvT-jxrW.js.map → sparkles-D_kmZJVd.js.map} +1 -1
  202. package/dist/admin/assets/src-CMor9izq.js +7 -0
  203. package/dist/admin/assets/src-CMor9izq.js.map +1 -0
  204. package/dist/admin/assets/{stableId-BrtQedPy.js → stableId-g1uxJGSz.js} +2 -2
  205. package/dist/admin/assets/{stableId-BrtQedPy.js.map → stableId-g1uxJGSz.js.map} +1 -1
  206. package/dist/admin/assets/{store-CdIFG90N.js → store-CznhNKEi.js} +2 -2
  207. package/dist/admin/assets/{store-CdIFG90N.js.map → store-CznhNKEi.js.map} +1 -1
  208. package/dist/admin/assets/{switch-Dp6WYNam.js → switch-DyCRGDs7.js} +2 -2
  209. package/dist/admin/assets/{switch-Dp6WYNam.js.map → switch-DyCRGDs7.js.map} +1 -1
  210. package/dist/admin/assets/{theme-65PB8uAu.js → theme-Cv-MfOv8.js} +2 -2
  211. package/dist/admin/assets/{theme-65PB8uAu.js.map → theme-Cv-MfOv8.js.map} +1 -1
  212. package/dist/admin/assets/titles-DrQhW8z3.js +2 -0
  213. package/dist/admin/assets/titles-DrQhW8z3.js.map +1 -0
  214. package/dist/admin/assets/tokens-B1S81Epe.js +2 -0
  215. package/dist/admin/assets/{tokens-ixHjAkDK.js.map → tokens-B1S81Epe.js.map} +1 -1
  216. package/dist/admin/assets/{tooltip-BGP1DVBt.js → tooltip-CCOeMqiL.js} +2 -2
  217. package/dist/admin/assets/{tooltip-BGP1DVBt.js.map → tooltip-CCOeMqiL.js.map} +1 -1
  218. package/dist/admin/assets/{undo-2-BiTANHFz.js → undo-2-DpwwRQTf.js} +2 -2
  219. package/dist/admin/assets/{undo-2-BiTANHFz.js.map → undo-2-DpwwRQTf.js.map} +1 -1
  220. package/dist/admin/assets/useContentSchema-uXOfT985.js +2 -0
  221. package/dist/admin/assets/useContentSchema-uXOfT985.js.map +1 -0
  222. package/dist/admin/assets/useCursorPager-BHYqHb3M.js +2 -0
  223. package/dist/admin/assets/{useCursorPager-0zHjlm-7.js.map → useCursorPager-BHYqHb3M.js.map} +1 -1
  224. package/dist/admin/assets/{useDiscardGuard-BskWSlbT.js → useDiscardGuard-DvBI3VIz.js} +2 -2
  225. package/dist/admin/assets/{useDiscardGuard-BskWSlbT.js.map → useDiscardGuard-DvBI3VIz.js.map} +1 -1
  226. package/dist/admin/assets/{useMediaPickerDialog-CU-ekPqX.js → useMediaPickerDialog-CehOsykG.js} +2 -2
  227. package/dist/admin/assets/{useMediaPickerDialog-CU-ekPqX.js.map → useMediaPickerDialog-CehOsykG.js.map} +1 -1
  228. package/dist/admin/assets/{useMediaUploader-CBcq1ICg.js → useMediaUploader-DvtxYXxD.js} +2 -2
  229. package/dist/admin/assets/{useMediaUploader-CBcq1ICg.js.map → useMediaUploader-DvtxYXxD.js.map} +1 -1
  230. package/dist/admin/assets/useModelIndex-D8Q0oM4M.js +2 -0
  231. package/dist/admin/assets/useModelIndex-D8Q0oM4M.js.map +1 -0
  232. package/dist/admin/assets/useNetworkPermission-DehDln-U.js +2 -0
  233. package/dist/admin/assets/{useNetworkPermission-Cts98h9d.js.map → useNetworkPermission-DehDln-U.js.map} +1 -1
  234. package/dist/admin/assets/{usePaletteItems-DtReWmkd.js → usePaletteItems-CFpNlSOs.js} +2 -2
  235. package/dist/admin/assets/{usePaletteItems-DtReWmkd.js.map → usePaletteItems-CFpNlSOs.js.map} +1 -1
  236. package/dist/admin/assets/usePlaces-CySN2Vwz.js +2 -0
  237. package/dist/admin/assets/usePlaces-CySN2Vwz.js.map +1 -0
  238. package/dist/admin/assets/useResolvedDefinitions-C279ueCH.js +2 -0
  239. package/dist/admin/assets/useResolvedDefinitions-C279ueCH.js.map +1 -0
  240. package/dist/admin/assets/{useResolvedScheme-C8vcQVko.js → useResolvedScheme-DEq7P4R5.js} +2 -2
  241. package/dist/admin/assets/{useResolvedScheme-C8vcQVko.js.map → useResolvedScheme-DEq7P4R5.js.map} +1 -1
  242. package/dist/admin/assets/useSaveShortcut-DQuNL1uJ.js +2 -0
  243. package/dist/admin/assets/useSaveShortcut-DQuNL1uJ.js.map +1 -0
  244. package/dist/admin/assets/{useSchemaScopeAccess-ByrxIdKM.js → useSchemaScopeAccess-JXOMx51q.js} +2 -2
  245. package/dist/admin/assets/{useSchemaScopeAccess-ByrxIdKM.js.map → useSchemaScopeAccess-JXOMx51q.js.map} +1 -1
  246. package/dist/admin/assets/users-38jLQ7zr.js +2 -0
  247. package/dist/admin/assets/users-38jLQ7zr.js.map +1 -0
  248. package/dist/admin/assets/{users-DM7CXUBJ.js → users-DYwcVDqp.js} +2 -2
  249. package/dist/admin/assets/{users-DM7CXUBJ.js.map → users-DYwcVDqp.js.map} +1 -1
  250. package/dist/admin/assets/{zod-Cry7YvLY.js → zod-vPzaNsuW.js} +2 -2
  251. package/dist/admin/assets/{zod-Cry7YvLY.js.map → zod-vPzaNsuW.js.map} +1 -1
  252. package/dist/admin/index.html +60 -58
  253. package/dist/cli.js +1 -1
  254. package/dist/{cliMain-papyXJDd.js → cliMain-DzBXO7Oa.js} +98 -21
  255. package/dist/cliMain-DzBXO7Oa.js.map +1 -0
  256. package/dist/config.d.ts +2 -2
  257. package/dist/index.d.ts +42 -5
  258. package/dist/index.js +1 -1
  259. package/dist/public-B57h4F7Y.js.map +1 -1
  260. package/dist/{public-COKbHR-N.d.ts → public-jttKsns_.d.ts} +47 -5
  261. package/dist/{worker-B-sC-eY2.js → worker-6ru1tYBs.js} +2790 -1063
  262. package/dist/worker-6ru1tYBs.js.map +1 -0
  263. package/package.json +5 -5
  264. package/dist/admin/assets/AssistError-Cs-r9Ssc.js +0 -2
  265. package/dist/admin/assets/Body-BzZD-TZT.js +0 -2
  266. package/dist/admin/assets/Body-BzZD-TZT.js.map +0 -1
  267. package/dist/admin/assets/Builder-DW-GJA_q.js +0 -2
  268. package/dist/admin/assets/Builder-DW-GJA_q.js.map +0 -1
  269. package/dist/admin/assets/Form-lNrRHc0I.js +0 -2
  270. package/dist/admin/assets/Form-lNrRHc0I.js.map +0 -1
  271. package/dist/admin/assets/FormSelectField-BzE9Lq9i.js +0 -2
  272. package/dist/admin/assets/FormSelectField-BzE9Lq9i.js.map +0 -1
  273. package/dist/admin/assets/StepList-BXGYD9eJ.js +0 -2
  274. package/dist/admin/assets/StepList-BXGYD9eJ.js.map +0 -1
  275. package/dist/admin/assets/Structure-D8csgrIt.js +0 -2
  276. package/dist/admin/assets/auth-CQO4MBUj.js +0 -2
  277. package/dist/admin/assets/changeSets-8EburmT0.js +0 -2
  278. package/dist/admin/assets/chevron-left-DGU3HGYG.js +0 -2
  279. package/dist/admin/assets/content-CAjkbZEY.js +0 -3
  280. package/dist/admin/assets/content-CAjkbZEY.js.map +0 -1
  281. package/dist/admin/assets/createLucideIcon-CLmh7Go-.js +0 -2
  282. package/dist/admin/assets/createLucideIcon-CLmh7Go-.js.map +0 -1
  283. package/dist/admin/assets/develop-BOqvnlgt.js +0 -11
  284. package/dist/admin/assets/develop-BOqvnlgt.js.map +0 -1
  285. package/dist/admin/assets/es2015-BHmI7wjK.js +0 -42
  286. package/dist/admin/assets/es2015-BHmI7wjK.js.map +0 -1
  287. package/dist/admin/assets/followPlural-Cm7v_Udv.js +0 -2
  288. package/dist/admin/assets/followPlural-Cm7v_Udv.js.map +0 -1
  289. package/dist/admin/assets/inbox-DGO2D8fa.js +0 -2
  290. package/dist/admin/assets/inbox-DGO2D8fa.js.map +0 -1
  291. package/dist/admin/assets/index-BIIU9ZI6.js +0 -4
  292. package/dist/admin/assets/index-BIIU9ZI6.js.map +0 -1
  293. package/dist/admin/assets/index-lxe7WimO.css +0 -2
  294. package/dist/admin/assets/locales-Bg3htKo8.js +0 -2
  295. package/dist/admin/assets/media-BCnVhaDH.js +0 -2
  296. package/dist/admin/assets/network-BixABr0o.js +0 -2
  297. package/dist/admin/assets/network-BixABr0o.js.map +0 -1
  298. package/dist/admin/assets/publishing-Dke9bSKp.js +0 -2
  299. package/dist/admin/assets/schedules-BmB9Y73z.js +0 -2
  300. package/dist/admin/assets/schema-D-qo7XSF.js +0 -2
  301. package/dist/admin/assets/seo-CceGYTIX.js +0 -2
  302. package/dist/admin/assets/settings-B60vHpZd.js +0 -2
  303. package/dist/admin/assets/shapes-B5twqZcp.js +0 -6
  304. package/dist/admin/assets/shapes-B5twqZcp.js.map +0 -1
  305. package/dist/admin/assets/src-ndgTSYLX.js +0 -7
  306. package/dist/admin/assets/src-ndgTSYLX.js.map +0 -1
  307. package/dist/admin/assets/titles-CQiqqDw-.js +0 -2
  308. package/dist/admin/assets/titles-CQiqqDw-.js.map +0 -1
  309. package/dist/admin/assets/tokens-ixHjAkDK.js +0 -2
  310. package/dist/admin/assets/useContentSchema-DtYfhsd2.js +0 -2
  311. package/dist/admin/assets/useContentSchema-DtYfhsd2.js.map +0 -1
  312. package/dist/admin/assets/useCursorPager-0zHjlm-7.js +0 -2
  313. package/dist/admin/assets/useNetworkPermission-Cts98h9d.js +0 -2
  314. package/dist/admin/assets/usePlaces-DC47wVeU.js +0 -2
  315. package/dist/admin/assets/usePlaces-DC47wVeU.js.map +0 -1
  316. package/dist/admin/assets/useQueries-CirW3Mvp.js +0 -2
  317. package/dist/admin/assets/useQueries-CirW3Mvp.js.map +0 -1
  318. package/dist/admin/assets/useSaveShortcut-rKtp1qK7.js +0 -2
  319. package/dist/admin/assets/useSaveShortcut-rKtp1qK7.js.map +0 -1
  320. package/dist/admin/assets/users-2iJYwlJb.js +0 -2
  321. package/dist/admin/assets/users-2iJYwlJb.js.map +0 -1
  322. package/dist/cliMain-papyXJDd.js.map +0 -1
  323. package/dist/worker-B-sC-eY2.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{A as e,Ht as t,Pt as n,Vt as r,bn as i,ct as a,j as o,un as s,ut as c}from"./src-ndgTSYLX.js";import{tt as l}from"./auth-CQO4MBUj.js";var u={silent:!0},d=(e,t)=>l({queryKey:n.content.list(e,t),queryFn:()=>c.content.list(e,t),placeholderData:s,meta:u}),f=(e,n,r=!0)=>t({...d(e,n),enabled:r}),p=(e,t,r)=>l({queryKey:n.content.entry(e,t,r),queryFn:()=>c.content.get(e,t,r?{locale:r}:{}),staleTime:1/0,meta:u}),m=(e,n,r,i=!0)=>t({...p(e,n,r),enabled:i}),h=(e,t,r)=>(e.setQueryData(n.content.entry(t,r.id,r.locale),r),e.invalidateQueries({predicate:e=>e.queryKey[0]===`content`&&e.queryKey[1]===t&&(e.queryKey[2]===`list`||e.queryKey[2]===`revisions`)})),g=e=>{let t=i();return r({mutationKey:[`content`,e,`create`],meta:u,mutationFn:t=>a(()=>c.content.create(e,t)),onSuccess:n=>h(t,e,n)})},_=e=>{let t=i();return r({mutationKey:[`content`,e,`save`],meta:u,mutationFn:({id:t,input:n})=>a(()=>c.content.update(e,t,n)),onSuccess:n=>h(t,e,n)})},v=e=>e&&e.length>0?{locales:e}:{},y=e=>{let t=i();return r({mutationKey:[`content`,e,`publish`],meta:u,mutationFn:({id:t,locales:n,...r})=>a(()=>c.content.publish(e,t,{...v(n),...r})),onSuccess:n=>h(t,e,n)})},b=e=>{let t=i();return r({mutationKey:[`content`,e,`unpublish`],meta:u,mutationFn:({id:t,locales:n})=>a(()=>c.content.unpublish(e,t,v(n))),onSuccess:n=>h(t,e,n)})},x=e=>{let t=i();return r({mutationKey:[`content`,e,`duplicate`],mutationFn:t=>a(()=>c.content.duplicate(e,t)),onSuccess:n=>h(t,e,n)})},S=e=>{let t=i();return r({mutationKey:[`content`,e,`delete`],meta:u,mutationFn:t=>a(()=>c.content.remove(e,t)),onSuccess:()=>t.invalidateQueries({queryKey:n.content.model(e)})})},C=(e,r,i,a)=>t({queryKey:n.content.revisions(e,r,i),queryFn:()=>c.content.history(e,r,i?{locale:i}:{}),enabled:a,staleTime:0,meta:u}),w=(e,r,i)=>t({queryKey:n.content.revision(e,r,i??``),queryFn:()=>c.content.revision(e,r,i??``),enabled:i!==void 0,staleTime:1/0,meta:u}),T=e=>{let t=i();return r({mutationKey:[`content`,e,`restore`],meta:u,mutationFn:({id:t,revisionId:n,expectedVersion:r})=>a(()=>c.content.restore(e,t,n,r)),onSuccess:n=>h(t,e,n)})},E=e=>o(e),D=t=>{let n=E(t);return n!==void 0&&e.has(n.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,C as f,w as g,T as h,k as i,S as l,y as m,D as n,d as o,f as p,A as r,p as s,O as t,x as u,b as v};
2
- //# sourceMappingURL=titles-CQiqqDw-.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"titles-CQiqqDw-.js","names":["TEXT_TITLE_FIELD_TYPES","useQuery","queryKeys","useMutation","useQueryClient","withCsrf","effectiveTitleField","keepPreviousData","adminApi","queryOptions","silent","entryListQueryOptions","modelKey","query","useEntryList","entryQueryOptions","id","locale","useEntry","rememberEntry","queryClient","entry","useCreateEntry","input","useSaveEntry","localesBody","locales","usePublishEntry","versions","useUnpublishEntry","useDuplicateEntry","useDeleteEntry","useEntryHistory","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\n/** The draft version(s) the editor saw: the API refuses (409) to publish a draft that moved since. */\ntype PublishVariables = LocalesVariables & {\n expectedVersion?: number;\n expectedVersions?: Record<string, number>;\n};\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, ...versions }: PublishVariables) =>\n withCsrf(() => adminApi.content.publish(modelKey, id, { ...localesBody(locales), ...versions })),\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\n/** The entry's revisions (with authors) and publications in a locale, for the history sheet. */\nexport const useEntryHistory = (modelKey: string, id: string, locale: string | undefined, enabled: boolean) =>\n useQuery({\n queryKey: queryKeys.content.revisions(modelKey, id, locale),\n queryFn: () => adminApi.content.history(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 +0,0 @@
1
- import{Ht as e,Pt as t,Vt as n,bn as r,ct as i,ut as a}from"./src-ndgTSYLX.js";var o=()=>e({queryKey:t.tokens,queryFn:()=>a.tokens.list(),meta:{silent:!0}}),s=()=>{let e=r();return n({mutationKey:[`tokens`,`create`],meta:{silent:!0},mutationFn:e=>i(()=>a.tokens.create(e)),onSuccess:()=>e.invalidateQueries({queryKey:t.tokens})})},c=()=>{let e=r();return n({mutationKey:[`tokens`,`revoke`],mutationFn:e=>i(()=>a.tokens.revoke(e)),onSettled:()=>e.invalidateQueries({queryKey:t.tokens})})};export{s as n,c as r,o as t};
2
- //# sourceMappingURL=tokens-ixHjAkDK.js.map
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{Q as n}from"./src-ndgTSYLX.js";import{a as r}from"./schema-D-qo7XSF.js";var i=e(t(),1),a=()=>{let{definitions:e,error:t}=r();return{schema:(0,i.useMemo)(()=>{if(!e)return;let t=new Map,r=new Map;for(let{definition:i}of e)n(i)?r.set(i.id,i):t.set(i.id,i);return{models:t,components:r,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-DtYfhsd2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useContentSchema-DtYfhsd2.js","names":["useMemo","__toESM","isComponentDefinition","useAllDefinitions","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,SAAUH,EAAkB,EAiBjD,MAAO,CAAE,QAAA,EAhBMH,EAAAA,QAAAA,KAAc,CAC3B,GAAI,CAACO,EACH,OAEF,IAAMC,EAAS,IAAI,IACbC,EAAa,IAAI,IACvB,IAAK,GAAM,CAAE,gBAAgBF,EACvBL,EAAsBQ,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 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{Ht as n,Pt as r,Vt as i,bn as a,ct as o,un as s,ut as c}from"./src-ndgTSYLX.js";import{t as l}from"./createLucideIcon-CLmh7Go-.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=l(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:()=>c.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:()=>c.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:()=>c.deployments.runs.list(e),placeholderData:s,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:()=>c.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=>o(()=>c.deployments.connections.create(e)),onSuccess:e})},T=()=>{let e=a(),t=C();return i({mutationKey:[`deployments`,`update`],meta:_,mutationFn:({id:e,input:t})=>o(()=>c.deployments.connections.update(e,t)),onSuccess:({generatedSecrets:n,...i})=>(e.setQueryData(r.publishing.deployments.connection(i.id),i),t())})},E=()=>{let e=a(),t=C();return i({mutationKey:[`deployments`,`delete`],mutationFn:e=>o(()=>c.deployments.connections.remove(e)),onSuccess:(n,i)=>(e.removeQueries({queryKey:r.publishing.deployments.connection(i)}),t())})},D=()=>i({mutationKey:[`deployments`,`test`],mutationFn:e=>o(()=>c.deployments.connections.test(e))}),O=()=>{let e=C();return i({mutationKey:[`deployments`,`trigger`],mutationFn:e=>o(()=>c.deployments.connections.trigger(e)),onSuccess:e})},k=()=>{let e=C();return i({mutationKey:[`deployments`,`retry`],mutationFn:e=>o(()=>c.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:()=>c.webhooks.list(),meta:F}),L=()=>n({queryKey:r.publishing.webhooks.events,queryFn:()=>c.webhooks.events(),staleTime:1/0,meta:F}),R=e=>n({queryKey:r.publishing.webhooks.webhook(e),queryFn:()=>c.webhooks.get(e),meta:F}),z=(e,t)=>n({queryKey:r.publishing.webhooks.deliveries(e,t),queryFn:()=>c.webhooks.deliveries(e,{cursor:t,limit:25}),placeholderData:s,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=>o(()=>c.webhooks.create(e)),onSuccess:e})},H=()=>{let e=a(),t=B();return i({mutationKey:[`webhooks`,`update`],meta:F,mutationFn:({id:e,input:t})=>o(()=>c.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=>o(()=>c.webhooks.remove(e)),onSuccess:e})},W=()=>{let e=B();return i({mutationKey:[`webhooks`,`rotateSecret`],mutationFn:e=>o(()=>c.webhooks.rotateSecret(e)),onSuccess:e})},G=()=>{let e=B();return i({mutationKey:[`webhooks`,`test`],mutationFn:e=>o(()=>c.webhooks.test(e)),onSuccess:e})},K=()=>{let e=B();return i({mutationKey:[`webhooks`,`redeliver`],mutationFn:({id:e,deliveryId:t})=>o(()=>c.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-0zHjlm-7.js.map
@@ -1,2 +0,0 @@
1
- import{u as e}from"./auth-CQO4MBUj.js";var t=t=>e().data?.networkPermissions.includes(t)??!1;export{t};
2
- //# sourceMappingURL=useNetworkPermission-Cts98h9d.js.map
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{Pt as n,bn as r}from"./src-ndgTSYLX.js";import{u as i}from"./auth-CQO4MBUj.js";import{t as a}from"./createLucideIcon-CLmh7Go-.js";import{l as o}from"./schema-D-qo7XSF.js";import{t as s}from"./modelPermissions-DZ1lWfQZ.js";import{t as c}from"./contentCounts-DP7YYeZZ.js";var l={name:`file-plus-corner`,size:24,node:[[`path`,{d:`M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35`,key:`17jvcc`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M14 19h6`,key:`bvotb8`}],[`path`,{d:`M17 16v6`,key:`18yu1i`}]],aliases:[`file-plus-2`]};l.node;var u=a(l),d=e(t(),1),f=e=>{let t=r(),{data:a,isFetching:o}=i(),s=(0,d.useRef)(new Set);(0,d.useEffect)(()=>{if(!a||!e||o)return;let r=e.map(({definition:e})=>e.id).filter(e=>!(e in a.modelPermissions)&&!s.current.has(e));if(r.length>0){for(let e of r)s.current.add(e);t.invalidateQueries({queryKey:n.me})}},[e,a,o,t])},p={collection:0,singleton:1},m=()=>{let{data:e}=i(),{data:t}=o(`model`),n=c();return f(t),(0,d.useMemo)(()=>t?.flatMap(({definition:t,scope:r})=>t.kind!==`component`&&s(e,t.id,`read`)?[{id:t.id,apiKey:t.apiKey,label:t.label,kind:t.kind,count:t.kind===`collection`?n?.get(t.id):void 0,canCreate:s(e,t.id,`create`),shared:r===`network`}]:[]).sort((e,t)=>p[e.kind]-p[t.kind]||e.label.localeCompare(t.label)),[t,n,e])};export{u as n,m as t};
2
- //# sourceMappingURL=usePlaces-DC47wVeU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePlaces-DC47wVeU.js","names":["useRef","useMemo","__toESM","queryKeys","useQueryClient","useMe","createLucideIcon","useDefinitions","canOnModel","useContentCounts","__iconData","FilePlusCorner","import_react","require_react","useModelPermissionsRefresh","queryClient","me","asked","definitions","isFetching","unknown","definition","id","KIND_ORDER","usePlaces","counts","scope","a","b"],"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/file-plus-corner.mjs","../../src/features/Shell/hooks/useModelPermissionsRefresh.ts","../../src/features/Shell/hooks/usePlaces.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: \"file-plus-corner\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35\",\n key: \"17jvcc\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M14 19h6\", key: \"bvotb8\" }],\n [\"path\", { d: \"M17 16v6\", key: \"18yu1i\" }]\n ],\n aliases: [\"file-plus-2\"]\n};\n__iconData.node;\nconst FilePlusCorner = createLucideIcon(__iconData);\n\nexport { __iconData, FilePlusCorner as default };\n//# sourceMappingURL=file-plus-corner.mjs.map\n","import type { DefinitionListItem } from '@shapio/client';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useEffect, useRef } from 'react';\nimport { useMe } from '@/api/auth';\nimport { queryKeys } from '@/api/queryKeys';\n\n/**\n * `me.modelPermissions` is keyed by model ID and read once a minute, so a model created since (here or in\n * another session) is missing from it. When the registry shows such a model, re-read `me` once for it.\n */\nexport const useModelPermissionsRefresh = (definitions: readonly DefinitionListItem[] | undefined) => {\n const queryClient = useQueryClient();\n const { data: me, isFetching } = useMe();\n const asked = useRef(new Set<string>());\n useEffect(() => {\n if (!me || !definitions || isFetching) {\n return;\n }\n const unknown = definitions\n .map(({ definition }) => definition.id)\n .filter((id) => !(id in me.modelPermissions) && !asked.current.has(id));\n if (unknown.length > 0) {\n for (const id of unknown) {\n asked.current.add(id);\n }\n void queryClient.invalidateQueries({ queryKey: queryKeys.me });\n }\n }, [definitions, me, isFetching, queryClient]);\n};\n","import { useMemo } from 'react';\nimport { useMe } from '@/api/auth';\nimport { useContentCounts } from '@/api/contentCounts';\nimport { useDefinitions } from '@/api/schema';\nimport { canOnModel } from '@/helpers/modelPermissions';\nimport { useModelPermissionsRefresh } from './useModelPermissionsRefresh';\n\n/** A content type as editors see it: a place in the sidebar. */\nexport type Place = {\n id: string;\n apiKey: string;\n label: string;\n kind: 'collection' | 'singleton';\n /** Entries the admin can read; undefined until counts load (or for single types, which need none). */\n count: number | undefined;\n canCreate: boolean;\n /** Shared with all sites (rather than this site's own). */\n shared: boolean;\n};\n\nconst KIND_ORDER = { collection: 0, singleton: 1 } as const;\n\n/**\n * The places the admin may read, from the model registry: collections, then single types, by label. Models\n * are data (CONTRIBUTING.md rule 2), so a model created a moment ago appears as soon as the registry refreshes.\n */\nexport const usePlaces = (): Place[] | undefined => {\n const { data: me } = useMe();\n const { data: definitions } = useDefinitions('model');\n const counts = useContentCounts();\n useModelPermissionsRefresh(definitions);\n return useMemo(\n () =>\n definitions\n ?.flatMap(({ definition, scope }): Place[] =>\n definition.kind !== 'component' && canOnModel(me, definition.id, 'read')\n ? [\n {\n id: definition.id,\n apiKey: definition.apiKey,\n label: definition.label,\n kind: definition.kind,\n count: definition.kind === 'collection' ? counts?.get(definition.id) : undefined,\n canCreate: canOnModel(me, definition.id, 'create'),\n shared: scope === 'network',\n },\n ]\n : [],\n )\n .sort((a, b) => KIND_ORDER[a.kind] - KIND_ORDER[b.kind] || a.label.localeCompare(b.label)),\n [definitions, counts, me],\n );\n};\n"],"ignoreList":[0],"mappings":"2WASA,IAAMU,EAAa,CACjB,KAAM,mBACN,KAAM,GACN,KAAM,CACJ,CACE,OACA,CACE,EAAG,0GACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,0BAA2B,IAAK,QAAS,CAAC,EACxD,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,CAC3C,EACA,QAAS,CAAC,aAAa,CACzB,EACAA,EAAW,KACX,IAAMC,EAAiBL,EAAiBI,CAAU,aCjBrCI,EAA8B,GAA2D,CACpG,IAAMC,EAAcX,EAAe,EAC7B,CAAE,KAAMY,EAAI,cAAeX,EAAM,EACjCY,GAAA,EAAQjB,EAAAA,OAAAA,CAAO,IAAI,GAAa,GACtC,EAAAY,EAAA,UAAA,KAAgB,CACd,GAAI,CAACI,GAAM,CAACE,GAAeC,EACzB,OAEF,IAAMC,EAAUF,EACb,KAAK,CAAE,gBAAiBG,EAAW,EAAE,CAAC,CACtC,OAAQ,GAAO,EAAEC,KAAMN,EAAG,mBAAqB,CAACC,EAAM,QAAQ,IAAIK,CAAE,CAAC,EACxE,GAAIF,EAAQ,OAAS,EAAG,CACtB,IAAK,IAAME,KAAMF,EACfH,EAAM,QAAQ,IAAIK,CAAE,EAEtBP,EAAiB,kBAAkB,CAAE,SAAUZ,EAAU,EAAG,CAAC,CAC/D,CACF,EAAG,CAACe,EAAaF,EAAIG,EAAYJ,CAAW,CAAC,CAC/C,ECRMQ,EAAa,CAAE,WAAY,EAAG,UAAW,CAAE,EAMpCC,MAAuC,CAClD,GAAM,CAAE,KAAMR,GAAOX,EAAM,EACrB,CAAE,KAAMa,GAAgBX,EAAe,OAAO,EAC9CkB,EAAShB,EAAiB,EAEhC,OADAK,EAA2BI,CAAW,GACtC,EAAOjB,EAAAA,QAAAA,KAEHiB,GACI,SAAS,CAAE,aAAY,WACvBG,EAAW,OAAS,aAAeb,EAAWQ,EAAIK,EAAW,GAAI,MAAM,EACnE,CACE,CACE,GAAIA,EAAW,GACf,OAAQA,EAAW,OACnB,MAAOA,EAAW,MAClB,KAAMA,EAAW,KACjB,MAAOA,EAAW,OAAS,aAAeI,GAAQ,IAAIJ,EAAW,EAAE,EAAI,IAAA,GACvE,UAAWb,EAAWQ,EAAIK,EAAW,GAAI,QAAQ,EACjD,OAAQK,IAAU,SACpB,CACF,EACA,CAAC,CACP,CAAC,CACA,MAAM,EAAG,IAAMH,EAAWI,EAAE,MAAQJ,EAAWK,EAAE,OAASD,EAAE,MAAM,cAAcC,EAAE,KAAK,CAAC,EAC7F,CAACV,EAAaO,EAAQT,CAAE,CAC1B,CACF"}
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{$t as n,Gt as r,Jt as i,Kt as a,Wt as o,Xt as s,Yt as c,Zt as l,_n as u,bn as d,hn as f,in as p,on as m,pn as h,qt as g}from"./src-ndgTSYLX.js";function _(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}var v=class extends m{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];constructor(e,t,n){super(),this.#e=e,this.#r=n,this.#n=[],this.#i=[],this.#t=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#i.forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach(e=>{e.destroy()})}setQueries(e,t){this.#n=e,this.#r=t,p.batch(()=>{let e=this.#i,t=this.#p(this.#n);t.forEach(e=>e.observer.setOptions(e.defaultedQueryOptions));let n=t.map(e=>e.observer),r=n.map(e=>e.getCurrentResult()),i=e.length!==n.length,a=n.some((t,n)=>t!==e[n]),o=i||a,s=o?!0:r.some((e,t)=>{let n=this.#t[t];return!n||!u(e,n)});(o||s)&&(o&&(this.#l=t,this.#i=n),this.#t=r,this.hasListeners()&&(o&&(_(e,n).forEach(e=>{e.destroy()}),_(n,e).forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})),this.#h()))})}getCurrentResult(){return this.#t}getQueries(){return this.#i.map(e=>e.getCurrentQuery())}getObservers(){return this.#i}getOptimisticResult(e,t){let n=this.#p(e),r=n.map(e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)),i=n.map(e=>e.defaultedQueryOptions.queryHash);return[r,e=>this.#d(e??r,t,i),()=>this.#u(r,n)]}#u(e,t){let n=new Set;return t.map((r,i)=>{let a=e[i];return r.defaultedQueryOptions.notifyOnChangeProps?a:r.observer.trackResult(a,e=>{n.has(e)||(n.add(e),t.forEach(t=>{t.observer.trackProp(e)}))})})}#d(e,t,n){if(t){let r=this.#c,i=n!==void 0&&r!==void 0&&(r.length!==n.length||n.some((e,t)=>e!==r[t]));return(this.#t!==this.#s||i||t!==this.#o)&&(this.#o=t,this.#s=this.#t,n!==void 0&&(this.#c=n),this.#a=f(this.#a,t(e))),this.#a}return e}#f(){return!this.#r?.combine||this.#i.some((e,t)=>e.options.suspense&&this.#t[t]?.data===void 0)}#p(e){let t=new Map;this.#i.forEach(e=>{let n=e.options.queryHash;if(!n)return;let r=t.get(n);r?r.push(e):t.set(n,[e])});let r=[];return e.forEach(e=>{let i=this.#e.defaultQueryOptions(e),a=t.get(i.queryHash)?.shift()??new n(this.#e,i);r.push({defaultedQueryOptions:i,observer:a})}),r}#m(e,t){let n=this.#i.indexOf(e);n!==-1&&(this.#t=this.#t.slice(),this.#t[n]=t,this.#h())}#h(){if(this.hasListeners()){let e=this.#f(),t=this.#a,n=e?t:this.#d(this.#u(this.#t,this.#l),this.#r?.combine);(e||t!==n)&&p.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}},y=e(t(),1);function b({queries:e,...t},u){let f=d(u),m=l(),_=s(),b=t.subscribed!==!1,x=y.useMemo(()=>e.map(e=>{let t=f.defaultQueryOptions(e);return t._optimisticResults=m?`isRestoring`:b?`optimistic`:void 0,t}),[e,f,m,b]);x.forEach(e=>{o(e);let t=f.getQueryCache().get(e.queryHash);g(e,_,t)}),c(_);let[S]=y.useState(()=>new v(f,x,t)),[C,w,T]=S.getOptimisticResult(x,t.combine),E=!m&&b;y.useSyncExternalStore(y.useCallback(e=>E?S.subscribe(p.batchCalls(e)):h,[S,E]),()=>S.getCurrentResult(),()=>S.getCurrentResult()),y.useEffect(()=>{S.setQueries(x,t)},[x,t,S]);let D=C.some((e,t)=>a(x[t],e))?C.flatMap((e,t)=>{let i=x[t];if(i&&a(i,e)){let e=new n(f,i);return r(i,e,_)}return[]}):[];if(D.length>0)throw Promise.all(D);let O=C.find((e,t)=>{let n=x[t];return n&&i({result:e,errorResetBoundary:_,throwOnError:n.throwOnError,query:f.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(O)throw O.error;return w(T())}export{b as t};
2
- //# sourceMappingURL=useQueries-CirW3Mvp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useQueries-CirW3Mvp.js","names":["__toESM","QueryObserver","fetchOptimistic","getHasError","shouldSuspend","ensureSuspenseTimers","useQueryErrorResetBoundary","useClearResetErrorBoundary","useIsRestoring","shallowEqualObjects","useQueryClient","replaceEqualDeep","notifyManager","Subscribable","noop","ensurePreventErrorBoundaryRetry","difference","excludeSet","array2","array1","x","QueriesObserver","#client","client","#options","options","#queries","#observers","#result","queries","observer","#onUpdate","result","prevObservers","newObserverMatches","#findMatchingObservers","match","newObservers","newResult","hasLengthChange","hasIndexChange","index","hasStructuralChange","hasResultChange","prev","#observerMatches","#notify","matches","queryHashes","#combineResult","r","combine","#trackResult","trackedProps","observerResult","accessedProp","m","lastHashes","#lastQueryHashes","queryHashesChanged","hash","i","#lastResult","#lastCombine","#combinedResult","input","prevObserversMap","key","previousObservers","observers","defaultedOptions","shouldSkipCombine","#shouldSkipCombine","previousResult","listener","import_react","require_react","useQueries","queryClient","isRestoring","errorResetBoundary","subscribed","defaultedQueries","opts","queryOptions","query","optimisticResult","getCombinedResult","trackResult","shouldSubscribe","onStoreChange","suspensePromises","queryObserver","firstSingleResultWhichShouldThrow"],"sources":["../../../../node_modules/.pnpm/@tanstack+query-core@5.104.0/node_modules/@tanstack/query-core/build/modern/queriesObserver.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.104.0_react@19.3.0/node_modules/@tanstack/react-query/build/modern/useQueries.js"],"sourcesContent":["import { replaceEqualDeep, shallowEqualObjects } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { QueryObserver } from \"./queryObserver.js\";\n//#region src/queriesObserver.ts\nfunction difference(array1, array2) {\n\tconst excludeSet = new Set(array2);\n\treturn array1.filter((x) => !excludeSet.has(x));\n}\n/**\n* A `QueriesObserver` watches an array of queries at once, exposing them as\n* a single array of `QueryObserverResult`s (or, when a `combine` option is\n* given, as a combined value derived from that array). It manages one\n* internal `QueryObserver` per query, and is the primitive that framework\n* adapters (e.g. `useQueries`) build their hooks on top of.\n*\n* @example\n* ```ts\n* const observer = new QueriesObserver(queryClient, [\n* { queryKey: ['post', 1], queryFn: fetchPost },\n* { queryKey: ['post', 2], queryFn: fetchPost },\n* ])\n*\n* const unsubscribe = observer.subscribe((result) => {\n* console.log(result)\n* })\n* ```\n*/\nvar QueriesObserver = class extends Subscribable {\n\t#client;\n\t#result;\n\t#queries;\n\t#options;\n\t#observers;\n\t#combinedResult;\n\t#lastCombine;\n\t#lastResult;\n\t#lastQueryHashes;\n\t#observerMatches = [];\n\tconstructor(client, queries, options) {\n\t\tsuper();\n\t\tthis.#client = client;\n\t\tthis.#options = options;\n\t\tthis.#queries = [];\n\t\tthis.#observers = [];\n\t\tthis.#result = [];\n\t\tthis.setQueries(queries);\n\t}\n\tonSubscribe() {\n\t\tif (this.listeners.size === 1) this.#observers.forEach((observer) => {\n\t\t\tobserver.subscribe((result) => {\n\t\t\t\tthis.#onUpdate(observer, result);\n\t\t\t});\n\t\t});\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.listeners.size) this.destroy();\n\t}\n\t/**\n\t* Stops observing all queries: clears all listeners and destroys every\n\t* underlying `QueryObserver` this observer manages.\n\t*/\n\tdestroy() {\n\t\tthis.listeners = /* @__PURE__ */ new Set();\n\t\tthis.#observers.forEach((observer) => {\n\t\t\tobserver.destroy();\n\t\t});\n\t}\n\t/**\n\t* Replaces the set of queries being observed. Existing `QueryObserver`s\n\t* are reused for queries that match an already-observed query hash;\n\t* observers for queries that are no longer present are destroyed, and new\n\t* observers are created and subscribed to for newly added queries.\n\t*\n\t* @example\n\t* ```ts\n\t* observer.setQueries([\n\t* { queryKey: ['post', 1], queryFn: fetchPost },\n\t* { queryKey: ['post', 3], queryFn: fetchPost },\n\t* ])\n\t* ```\n\t*/\n\tsetQueries(queries, options) {\n\t\tthis.#queries = queries;\n\t\tthis.#options = options;\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tconst queryHashes = queries.map((query) => this.#client.defaultQueryOptions(query).queryHash);\n\t\t\tif (new Set(queryHashes).size !== queryHashes.length) console.warn(\"[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior.\");\n\t\t}\n\t\tnotifyManager.batch(() => {\n\t\t\tconst prevObservers = this.#observers;\n\t\t\tconst newObserverMatches = this.#findMatchingObservers(this.#queries);\n\t\t\tnewObserverMatches.forEach((match) => match.observer.setOptions(match.defaultedQueryOptions));\n\t\t\tconst newObservers = newObserverMatches.map((match) => match.observer);\n\t\t\tconst newResult = newObservers.map((observer) => observer.getCurrentResult());\n\t\t\tconst hasLengthChange = prevObservers.length !== newObservers.length;\n\t\t\tconst hasIndexChange = newObservers.some((observer, index) => observer !== prevObservers[index]);\n\t\t\tconst hasStructuralChange = hasLengthChange || hasIndexChange;\n\t\t\tconst hasResultChange = hasStructuralChange ? true : newResult.some((result, index) => {\n\t\t\t\tconst prev = this.#result[index];\n\t\t\t\treturn !prev || !shallowEqualObjects(result, prev);\n\t\t\t});\n\t\t\tif (!hasStructuralChange && !hasResultChange) return;\n\t\t\tif (hasStructuralChange) {\n\t\t\t\tthis.#observerMatches = newObserverMatches;\n\t\t\t\tthis.#observers = newObservers;\n\t\t\t}\n\t\t\tthis.#result = newResult;\n\t\t\tif (!this.hasListeners()) return;\n\t\t\tif (hasStructuralChange) {\n\t\t\t\tdifference(prevObservers, newObservers).forEach((observer) => {\n\t\t\t\t\tobserver.destroy();\n\t\t\t\t});\n\t\t\t\tdifference(newObservers, prevObservers).forEach((observer) => {\n\t\t\t\t\tobserver.subscribe((result) => {\n\t\t\t\t\t\tthis.#onUpdate(observer, result);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.#notify();\n\t\t});\n\t}\n\t/**\n\t* Returns the most recently computed array of `QueryObserverResult`s, one\n\t* per observed query, in the same order as the queries passed to the\n\t* constructor or `setQueries`.\n\t*\n\t* @example\n\t* ```ts\n\t* const results = observer.getCurrentResult()\n\t* const data = results.map((result) => result.data)\n\t* ```\n\t*/\n\tgetCurrentResult() {\n\t\treturn this.#result;\n\t}\n\t/**\n\t* Returns the underlying `Query` instances currently being observed, in\n\t* the same order as the queries passed to the constructor or `setQueries`.\n\t*/\n\tgetQueries() {\n\t\treturn this.#observers.map((observer) => observer.getCurrentQuery());\n\t}\n\t/**\n\t* Returns the underlying `QueryObserver` instances this observer manages,\n\t* in the same order as the queries passed to the constructor or\n\t* `setQueries`.\n\t*/\n\tgetObservers() {\n\t\treturn this.#observers;\n\t}\n\t/**\n\t* The `QueriesObserver` counterpart of {@link QueryObserver#getOptimisticResult} — computes\n\t* the result for the given (already-defaulted) queries right now, synchronously. Called by\n\t* framework adapters (e.g. `useQueries`) ahead of subscribing, returning a tuple of the raw\n\t* per-query results, a function to compute the combined result from them, and a function to\n\t* wrap the results for property-access tracking.\n\t*/\n\tgetOptimisticResult(queries, combine) {\n\t\tconst matches = this.#findMatchingObservers(queries);\n\t\tconst result = matches.map((match) => match.observer.getOptimisticResult(match.defaultedQueryOptions));\n\t\tconst queryHashes = matches.map((match) => match.defaultedQueryOptions.queryHash);\n\t\treturn [\n\t\t\tresult,\n\t\t\t(r) => {\n\t\t\t\treturn this.#combineResult(r ?? result, combine, queryHashes);\n\t\t\t},\n\t\t\t() => {\n\t\t\t\treturn this.#trackResult(result, matches);\n\t\t\t}\n\t\t];\n\t}\n\t#trackResult(result, matches) {\n\t\tconst trackedProps = /* @__PURE__ */ new Set();\n\t\treturn matches.map((match, index) => {\n\t\t\tconst observerResult = result[index];\n\t\t\treturn !match.defaultedQueryOptions.notifyOnChangeProps ? match.observer.trackResult(observerResult, (accessedProp) => {\n\t\t\t\tif (!trackedProps.has(accessedProp)) {\n\t\t\t\t\ttrackedProps.add(accessedProp);\n\t\t\t\t\tmatches.forEach((m) => {\n\t\t\t\t\t\tm.observer.trackProp(accessedProp);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}) : observerResult;\n\t\t});\n\t}\n\t#combineResult(input, combine, queryHashes) {\n\t\tif (combine) {\n\t\t\tconst lastHashes = this.#lastQueryHashes;\n\t\t\tconst queryHashesChanged = queryHashes !== void 0 && lastHashes !== void 0 && (lastHashes.length !== queryHashes.length || queryHashes.some((hash, i) => hash !== lastHashes[i]));\n\t\t\tif (this.#result !== this.#lastResult || queryHashesChanged || combine !== this.#lastCombine) {\n\t\t\t\tthis.#lastCombine = combine;\n\t\t\t\tthis.#lastResult = this.#result;\n\t\t\t\tif (queryHashes !== void 0) this.#lastQueryHashes = queryHashes;\n\t\t\t\tthis.#combinedResult = replaceEqualDeep(this.#combinedResult, combine(input));\n\t\t\t}\n\t\t\treturn this.#combinedResult;\n\t\t}\n\t\treturn input;\n\t}\n\t#shouldSkipCombine() {\n\t\treturn !this.#options?.combine || this.#observers.some((observer, index) => {\n\t\t\treturn observer.options.suspense && this.#result[index]?.data === void 0;\n\t\t});\n\t}\n\t#findMatchingObservers(queries) {\n\t\tconst prevObserversMap = /* @__PURE__ */ new Map();\n\t\tthis.#observers.forEach((observer) => {\n\t\t\tconst key = observer.options.queryHash;\n\t\t\tif (!key) return;\n\t\t\tconst previousObservers = prevObserversMap.get(key);\n\t\t\tif (previousObservers) previousObservers.push(observer);\n\t\t\telse prevObserversMap.set(key, [observer]);\n\t\t});\n\t\tconst observers = [];\n\t\tqueries.forEach((options) => {\n\t\t\tconst defaultedOptions = this.#client.defaultQueryOptions(options);\n\t\t\tconst observer = prevObserversMap.get(defaultedOptions.queryHash)?.shift() ?? new QueryObserver(this.#client, defaultedOptions);\n\t\t\tobservers.push({\n\t\t\t\tdefaultedQueryOptions: defaultedOptions,\n\t\t\t\tobserver\n\t\t\t});\n\t\t});\n\t\treturn observers;\n\t}\n\t#onUpdate(observer, result) {\n\t\tconst index = this.#observers.indexOf(observer);\n\t\tif (index !== -1) {\n\t\t\tthis.#result = this.#result.slice();\n\t\t\tthis.#result[index] = result;\n\t\t\tthis.#notify();\n\t\t}\n\t}\n\t#notify() {\n\t\tif (this.hasListeners()) {\n\t\t\tconst shouldSkipCombine = this.#shouldSkipCombine();\n\t\t\tconst previousResult = this.#combinedResult;\n\t\t\tconst newResult = shouldSkipCombine ? previousResult : this.#combineResult(this.#trackResult(this.#result, this.#observerMatches), this.#options?.combine);\n\t\t\tif (shouldSkipCombine || previousResult !== newResult) notifyManager.batch(() => {\n\t\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\t\tlistener(this.#result);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n};\n//#endregion\nexport { QueriesObserver };\n\n//# sourceMappingURL=queriesObserver.js.map","\"use client\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport { ensurePreventErrorBoundaryRetry, getHasError, useClearResetErrorBoundary } from \"./errorBoundaryUtils.js\";\nimport { ensureSuspenseTimers, fetchOptimistic, shouldSuspend } from \"./suspense.js\";\nimport * as React from \"react\";\nimport { QueriesObserver, QueryObserver, noop, notifyManager } from \"@tanstack/query-core\";\n//#region src/useQueries.ts\n/**\n* The `useQueries` hook can be used to fetch a variable number of queries.\n*\n* The `queries` key accepts an array with query option objects mostly identical to `useQuery` — the top-level\n* `subscribed` option isn't accepted per query (see `placeholderData` below for another difference). A custom\n* `QueryClient` is supplied once, as `useQueries`' own top-level second argument, rather than per query.\n*\n* Having the same query key more than once in the array of query objects may cause some data to be shared\n* between queries. To avoid this, consider de-duplicating the queries and map the results back to the desired\n* structure.\n*\n* The `combine` option can be used to combine the results of the queries into a single value. The result will\n* be structurally shared to be as referentially stable as possible.\n*\n* @remarks The `combine` function only re-runs if it changed referentially, or if any of the query results\n* changed. An inlined `combine` function, as shown in the example below, therefore runs on every render — wrap\n* it in `useCallback`, or extract it to a stable function reference if it doesn't have any dependencies, to\n* avoid that.\n*\n* Unlike `useQuery`, `useQueries` cannot infer the `data` argument of an _inline_ `select` from its sibling\n* `queryFn`. Because `useQueries` infers the type of the whole `queries` array at once, the `select` parameter\n* of a query object written inline cannot be contextually typed from that same object's `queryFn`, so it falls\n* back to `unknown` — a [known TypeScript limitation](https://github.com/TanStack/query/issues/6556). Annotate\n* the `select` parameter explicitly, or define the query with {@link queryOptions}, which resolves its types in\n* a single object _before_ it reaches `useQueries`, to work around this — see the example below. The same\n* limitation applies to {@link useSuspenseQueries}.\n*\n* `placeholderData` is supported here too, but unlike `useQuery`, it doesn't receive information from\n* previously rendered queries, because the number of queries can differ between renders.\n* @param queryClient - Use this to provide a custom `QueryClient`. Otherwise, the one from the nearest context\n* will be used.\n* @returns The combined result. Without `combine`, this is an array with all the query results, in the same\n* order as the input. When `combine` is provided, this is the value returned by `combine` instead.\n*\n* @example\n* ```tsx\n* import { useQueries } from '@tanstack/react-query'\n*\n* function Posts({ ids }: { ids: Array<number> }) {\n* const postQueries = useQueries({\n* queries: ids.map((id) => ({\n* queryKey: ['post', id],\n* queryFn: () => fetchPost(id),\n* staleTime: Infinity,\n* })),\n* })\n*\n* return (\n* <ul>\n* {postQueries.map((query, index) => {\n* if (query.isPending) return <li key={ids[index]}>Loading...</li>\n* if (query.isError) return <li key={ids[index]}>Error: {query.error.message}</li>\n* return <li key={ids[index]}>{query.data.title}</li>\n* })}\n* </ul>\n* )\n* }\n* ```\n*\n* @example\n* Combining results into a single value:\n* ```tsx\n* import { useQueries } from '@tanstack/react-query'\n*\n* function Posts({ ids }: { ids: Array<number> }) {\n* const { data, isPending, isError } = useQueries({\n* queries: ids.map((id) => ({\n* queryKey: ['post', id],\n* queryFn: () => fetchPost(id),\n* })),\n* combine: (postQueries) => {\n* return {\n* data: postQueries.map((query) => query.data),\n* isPending: postQueries.some((query) => query.isPending),\n* isError: postQueries.some((query) => query.isError),\n* }\n* },\n* })\n*\n* if (isPending) return 'Loading...'\n* if (isError) return 'Error loading posts'\n*\n* return (\n* <ul>\n* {data.map((post) => (\n* <li key={post?.id}>{post?.title}</li>\n* ))}\n* </ul>\n* )\n* }\n* ```\n*\n* @example\n* Typing `select` via {@link queryOptions}. Note that spreading a `queryOptions` result and overriding\n* `select` inline still falls back to `unknown` — wrap the spread in `queryOptions` again so the override is\n* resolved before it reaches `useQueries`:\n* ```tsx\n* import { queryOptions, useQueries } from '@tanstack/react-query'\n*\n* const postOptions = (id: number) =>\n* queryOptions({\n* queryKey: ['post', id],\n* queryFn: () => fetchPost(id),\n* })\n*\n* function PostTitle({ id }: { id: number }) {\n* const [{ data: broken }] = useQueries({\n* queries: [\n* {\n* ...postOptions(id),\n* // ❌ `data` is `unknown` here\n* select: (data) => data.title,\n* },\n* ],\n* })\n*\n* const [{ data: fixed }] = useQueries({\n* queries: [\n* queryOptions({\n* ...postOptions(id),\n* // ✅ `data` is `Post`\n* select: (data) => data.title,\n* }),\n* ],\n* })\n*\n* return <h1>{fixed}</h1>\n* }\n* ```\n*/\nfunction useQueries({ queries, ...options }, queryClient) {\n\tconst client = useQueryClient(queryClient);\n\tconst isRestoring = useIsRestoring();\n\tconst errorResetBoundary = useQueryErrorResetBoundary();\n\tconst subscribed = options.subscribed !== false;\n\tconst defaultedQueries = React.useMemo(() => queries.map((opts) => {\n\t\tconst defaultedOptions = client.defaultQueryOptions(opts);\n\t\tdefaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : subscribed ? \"optimistic\" : void 0;\n\t\treturn defaultedOptions;\n\t}), [\n\t\tqueries,\n\t\tclient,\n\t\tisRestoring,\n\t\tsubscribed\n\t]);\n\tdefaultedQueries.forEach((queryOptions) => {\n\t\tensureSuspenseTimers(queryOptions);\n\t\tconst query = client.getQueryCache().get(queryOptions.queryHash);\n\t\tensurePreventErrorBoundaryRetry(queryOptions, errorResetBoundary, query);\n\t});\n\tuseClearResetErrorBoundary(errorResetBoundary);\n\tconst [observer] = React.useState(() => new QueriesObserver(client, defaultedQueries, options));\n\tconst [optimisticResult, getCombinedResult, trackResult] = observer.getOptimisticResult(defaultedQueries, options.combine);\n\tconst shouldSubscribe = !isRestoring && subscribed;\n\tReact.useSyncExternalStore(React.useCallback((onStoreChange) => shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop, [observer, shouldSubscribe]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n\tReact.useEffect(() => {\n\t\tobserver.setQueries(defaultedQueries, options);\n\t}, [\n\t\tdefaultedQueries,\n\t\toptions,\n\t\tobserver\n\t]);\n\tconst suspensePromises = optimisticResult.some((result, index) => shouldSuspend(defaultedQueries[index], result)) ? optimisticResult.flatMap((result, index) => {\n\t\tconst opts = defaultedQueries[index];\n\t\tif (opts && shouldSuspend(opts, result)) {\n\t\t\tconst queryObserver = new QueryObserver(client, opts);\n\t\t\treturn fetchOptimistic(opts, queryObserver, errorResetBoundary);\n\t\t}\n\t\treturn [];\n\t}) : [];\n\tif (suspensePromises.length > 0) throw Promise.all(suspensePromises);\n\tconst firstSingleResultWhichShouldThrow = optimisticResult.find((result, index) => {\n\t\tconst query = defaultedQueries[index];\n\t\treturn query && getHasError({\n\t\t\tresult,\n\t\t\terrorResetBoundary,\n\t\t\tthrowOnError: query.throwOnError,\n\t\t\tquery: client.getQueryCache().get(query.queryHash),\n\t\t\tsuspense: query.suspense\n\t\t});\n\t});\n\tif (firstSingleResultWhichShouldThrow) throw firstSingleResultWhichShouldThrow.error;\n\treturn getCombinedResult(trackResult());\n}\n//#endregion\nexport { useQueries };\n\n//# sourceMappingURL=useQueries.js.map"],"ignoreList":[0,1],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";var n=e(t(),1),r=(e,t)=>{let r=(0,n.useRef)(e);(0,n.useEffect)(()=>{r.current=e}),(0,n.useEffect)(()=>{if(!t)return;let e=e=>{(e.metaKey||e.ctrlKey)&&!e.altKey&&e.key.toLowerCase()===`s`&&(e.preventDefault(),r.current())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t])};export{r as t};
2
- //# sourceMappingURL=useSaveShortcut-rKtp1qK7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSaveShortcut-rKtp1qK7.js","names":["useRef","__toESM","import_react","require_react","useSaveShortcut","latest","onSave","enabled","onKeyDown","event"],"sources":["../../src/hooks/useSaveShortcut.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\n/**\n * Mod+S runs `onSave` (instead of the browser's \"save page\") while `enabled`. The entry form saves with it,\n * the model builder opens its review.\n */\nexport const useSaveShortcut = (onSave: () => void, enabled: boolean) => {\n const latest = useRef(onSave);\n useEffect(() => {\n latest.current = onSave;\n });\n useEffect(() => {\n if (!enabled) {\n return undefined;\n }\n const onKeyDown = (event: KeyboardEvent) => {\n if ((event.metaKey || event.ctrlKey) && !event.altKey && event.key.toLowerCase() === 's') {\n event.preventDefault();\n latest.current();\n }\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [enabled]);\n};\n"],"mappings":"qGAMaI,GAAmB,EAAoB,IAAqB,CACvE,IAAMC,GAAA,EAASL,EAAAA,OAAAA,CAAOM,CAAM,GAC5B,EAAAJ,EAAA,UAAA,KAAgB,CACd,EAAO,QAAUI,CACnB,CAAC,GACD,EAAAJ,EAAA,UAAA,KAAgB,CACd,GAAI,CAACK,EACH,OAEF,IAAMC,EAAa,GAAyB,EACrCC,EAAM,SAAWA,EAAM,UAAY,CAACA,EAAM,QAAUA,EAAM,IAAI,YAAY,IAAM,MACnFA,EAAM,eAAe,EACrBJ,EAAO,QAAQ,EAEnB,EAEA,OADA,OAAO,iBAAiB,UAAWG,CAAS,MAC/B,OAAO,oBAAoB,UAAWA,CAAS,CAC9D,EAAG,CAACD,CAAO,CAAC,CACd"}
@@ -1,2 +0,0 @@
1
- import{Ht as e,Pt as t,Vt as n,bn as r,ct as i,un as a,ut as o}from"./src-ndgTSYLX.js";import{n as s,t as c}from"./createLucideIcon-CLmh7Go-.js";var l={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`}]]};l.node;var u=c(l),d=n=>e({queryKey:t.audit.list(n),queryFn:()=>o.audit.list(n),placeholderData:a,meta:{silent:!0}}),f=[`name`,`title`,`label`,`email`,`filename`,`apiKey`],p=e=>{if(typeof e!=`object`||!e)return;let t=e;for(let e of f){let n=t[e];if(typeof n==`string`&&n.trim()!==``)return n}},m={"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`},h={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`},g=e=>Object.hasOwn(m,e),_=e=>Object.hasOwn(h,e),v=()=>{let{t:e}=s();return{actionLabel:t=>g(t)?e(m[t]):void 0,targetLabel:t=>_(t)?e(h[t]):void 0}},y=()=>e({queryKey:t.users,queryFn:()=>o.users.list(),meta:{silent:!0}}),b=()=>e({queryKey:t.invitations,queryFn:()=>o.invitations.list(),meta:{silent:!0}}),x=()=>{let e=r();return n({mutationKey:[`invitations`,`create`],meta:{silent:!0},mutationFn:e=>i(()=>o.invitations.create(e)),onSuccess:()=>e.invalidateQueries({queryKey:t.invitations})})},S=()=>{let e=r();return n({mutationKey:[`invitations`,`revoke`],mutationFn:e=>i(()=>o.invitations.revoke(e)),onSettled:()=>e.invalidateQueries({queryKey:t.invitations})})},C=()=>n({mutationKey:[`invitations`,`link`],mutationFn:e=>i(()=>o.invitations.link(e))}),w=()=>{let e=r();return n({mutationKey:[`users`,`update`],meta:{silent:!0},mutationFn:({id:e,input:t})=>i(()=>o.users.update(e,t)),onSettled:()=>e.invalidateQueries({queryKey:t.users})})},T=()=>{let e=r();return n({mutationKey:[`users`,`setStatus`],mutationFn:({id:e,status:t})=>i(()=>o.users.update(e,{status:t})),onSettled:()=>e.invalidateQueries({queryKey:t.users})})},E=()=>{let e=r();return n({mutationKey:[`users`,`remove`],mutationFn:e=>i(()=>o.users.remove(e)),onSettled:()=>e.invalidateQueries({queryKey:t.users})})};export{S as a,y as c,d,u as f,E as i,v as l,x as n,T as o,C as r,w as s,b as t,p as u};
2
- //# sourceMappingURL=users-2iJYwlJb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"users-2iJYwlJb.js","names":["useQuery","queryKeys","useMutation","useQueryClient","withCsrf","keepPreviousData","adminApi","useTranslation","createLucideIcon","__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","useUsers","useInvitations","useInviteUser","queryClient","input","useRevokeInvitation","id","useIssueInvitationLink","useUpdateUser","useSetUserStatus","useRemoveUser"],"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","../../src/api/users.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","import type { AdminUserStatus, InviteUserInput, UpdateAdminUserInput } 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 useUsers = () =>\n useQuery({ queryKey: queryKeys.users, queryFn: () => adminApi.users.list(), meta: { silent: true } });\n\nexport const useInvitations = () =>\n useQuery({\n queryKey: queryKeys.invitations,\n queryFn: () => adminApi.invitations.list(),\n meta: { silent: true },\n });\n\nexport const useInviteUser = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['invitations', 'create'],\n meta: { silent: true },\n mutationFn: (input: InviteUserInput) => withCsrf(() => adminApi.invitations.create(input)),\n onSuccess: () => queryClient.invalidateQueries({ queryKey: queryKeys.invitations }),\n });\n};\n\nexport const useRevokeInvitation = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['invitations', 'revoke'],\n mutationFn: (id: string) => withCsrf(() => adminApi.invitations.revoke(id)),\n onSettled: () => queryClient.invalidateQueries({ queryKey: queryKeys.invitations }),\n });\n};\n\n/** A fresh accept link to send by hand; any earlier link for the invitation stops working. */\nexport const useIssueInvitationLink = () =>\n useMutation({\n mutationKey: ['invitations', 'link'],\n mutationFn: (id: string) => withCsrf(() => adminApi.invitations.link(id)),\n });\n\nexport const useUpdateUser = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['users', 'update'],\n meta: { silent: true },\n mutationFn: ({ id, input }: { id: string; input: UpdateAdminUserInput }) =>\n withCsrf(() => adminApi.users.update(id, input)),\n onSettled: () => queryClient.invalidateQueries({ queryKey: queryKeys.users }),\n });\n};\n\nexport const useSetUserStatus = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['users', 'setStatus'],\n mutationFn: ({ id, status }: { id: string; status: AdminUserStatus }) =>\n withCsrf(() => adminApi.users.update(id, { status })),\n onSettled: () => queryClient.invalidateQueries({ queryKey: queryKeys.users }),\n });\n};\n\nexport const useRemoveUser = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['users', 'remove'],\n mutationFn: (id: string) => withCsrf(() => adminApi.users.remove(id)),\n onSettled: () => queryClient.invalidateQueries({ queryKey: queryKeys.users }),\n });\n};\n"],"ignoreList":[0],"mappings":"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"}