@plumile/backoffice-react 0.1.105 → 0.1.106

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 (633) hide show
  1. package/lib/esm/_virtual/_rolldown/runtime.js +7 -0
  2. package/lib/esm/auth/AuthRefreshNotice.js +38 -0
  3. package/lib/esm/auth/AuthRefreshNotice.js.map +1 -0
  4. package/lib/esm/auth/TotpQrCode.js +28 -0
  5. package/lib/esm/auth/TotpQrCode.js.map +1 -0
  6. package/lib/esm/auth/authRefreshNotice.css.js +7 -0
  7. package/lib/esm/auth/authRefreshNotice.css.js.map +1 -0
  8. package/lib/esm/{AuthPanel-BaIRFGbX.js → auth/login/AuthPanel.js} +7 -7
  9. package/lib/esm/auth/login/AuthPanel.js.map +1 -0
  10. package/lib/esm/auth/login/EmailCapturePanel.js +50 -0
  11. package/lib/esm/auth/login/EmailCapturePanel.js.map +1 -0
  12. package/lib/esm/auth/login/LoginFlow.js +130 -0
  13. package/lib/esm/auth/login/LoginFlow.js.map +1 -0
  14. package/lib/esm/auth/login/MethodChooser.js +49 -0
  15. package/lib/esm/auth/login/MethodChooser.js.map +1 -0
  16. package/lib/esm/auth/login/MfaChallengeForm.js +80 -0
  17. package/lib/esm/auth/login/MfaChallengeForm.js.map +1 -0
  18. package/lib/esm/auth/login/OidcButtons.js +29 -0
  19. package/lib/esm/auth/login/OidcButtons.js.map +1 -0
  20. package/lib/esm/auth/login/PasskeyLoginForm.js +81 -0
  21. package/lib/esm/auth/login/PasskeyLoginForm.js.map +1 -0
  22. package/lib/esm/auth/login/PasswordLoginPanel.js +37 -0
  23. package/lib/esm/auth/login/PasswordLoginPanel.js.map +1 -0
  24. package/lib/esm/auth/login/loginPage.css.js +7 -0
  25. package/lib/esm/auth/login/loginPage.css.js.map +1 -0
  26. package/lib/esm/auth/login/synchronizeAuthStatusQuery.js +10 -0
  27. package/lib/esm/auth/login/synchronizeAuthStatusQuery.js.map +1 -0
  28. package/lib/esm/{AcceptInvitationScreen-VaWXQPHp.js → auth/pages/AcceptInvitationScreen.js} +11 -11
  29. package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +1 -0
  30. package/lib/esm/{PasswordResetCompleteScreen-Cgg96DPo.js → auth/pages/PasswordResetCompleteScreen.js} +10 -10
  31. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +1 -0
  32. package/lib/esm/{PasswordResetRequestScreen-I1nFvGLd.js → auth/pages/PasswordResetRequestScreen.js} +10 -10
  33. package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +1 -0
  34. package/lib/esm/{VerifyEmailScreen-Br5KyHjg.js → auth/pages/VerifyEmailScreen.js} +7 -7
  35. package/lib/esm/auth/pages/VerifyEmailScreen.js.map +1 -0
  36. package/lib/esm/{BackofficeEntityActionFormDialog-DrZxuytz.js → components/backoffice/actions/BackofficeEntityActionFormDialog.js} +123 -121
  37. package/lib/esm/{BackofficeEntityActionFormDialog-DrZxuytz.js.map → components/backoffice/actions/BackofficeEntityActionFormDialog.js.map} +1 -1
  38. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js +26 -0
  39. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js.map +1 -0
  40. package/lib/esm/{backofficeEntityActionFormDialog.css-DJgEKwaA.js → components/backoffice/actions/backofficeEntityActionFormDialog.css.js} +3 -2
  41. package/lib/esm/{backofficeEntityActionFormDialog.css-DJgEKwaA.js.map → components/backoffice/actions/backofficeEntityActionFormDialog.css.js.map} +1 -1
  42. package/lib/esm/{toastViewAction-DQYlcGOL.js → components/backoffice/actions/toastViewAction.js} +2 -2
  43. package/lib/esm/{toastViewAction-DQYlcGOL.js.map → components/backoffice/actions/toastViewAction.js.map} +1 -1
  44. package/lib/esm/{buildDataTableColumns-DdmF-EYq.js → components/backoffice/columns/buildDataTableColumns.js} +18 -18
  45. package/lib/esm/{buildDataTableColumns-DdmF-EYq.js.map → components/backoffice/columns/buildDataTableColumns.js.map} +1 -1
  46. package/lib/esm/components/backoffice/detail/BackofficeAuditMetadataPanel.js +31 -0
  47. package/lib/esm/components/backoffice/detail/BackofficeAuditMetadataPanel.js.map +1 -0
  48. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js +22 -0
  49. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +1 -0
  50. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js +40 -0
  51. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +1 -0
  52. package/lib/esm/components/backoffice/detail/BackofficeDetailField.js +30 -0
  53. package/lib/esm/components/backoffice/detail/BackofficeDetailField.js.map +1 -0
  54. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js +7 -0
  55. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js.map +1 -0
  56. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js +24 -0
  57. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js.map +1 -0
  58. package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js +20 -0
  59. package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js.map +1 -0
  60. package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js +18 -0
  61. package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js.map +1 -0
  62. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js +56 -0
  63. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js.map +1 -0
  64. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js +11 -0
  65. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js.map +1 -0
  66. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +123 -0
  67. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +1 -0
  68. package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js +36 -0
  69. package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js.map +1 -0
  70. package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js +18 -0
  71. package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js.map +1 -0
  72. package/lib/esm/components/backoffice/detail/BackofficeEntityRefLink.js +17 -0
  73. package/lib/esm/components/backoffice/detail/BackofficeEntityRefLink.js.map +1 -0
  74. package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js +72 -0
  75. package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js.map +1 -0
  76. package/lib/esm/components/backoffice/detail/BackofficeEnumLabel.js +11 -0
  77. package/lib/esm/components/backoffice/detail/BackofficeEnumLabel.js.map +1 -0
  78. package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js +35 -0
  79. package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js.map +1 -0
  80. package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js +37 -0
  81. package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js.map +1 -0
  82. package/lib/esm/components/backoffice/detail/BackofficePayloadInspectorSection.js +36 -0
  83. package/lib/esm/components/backoffice/detail/BackofficePayloadInspectorSection.js.map +1 -0
  84. package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js +22 -0
  85. package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js.map +1 -0
  86. package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js +43 -0
  87. package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js.map +1 -0
  88. package/lib/esm/components/backoffice/detail/BackofficeScopeStack.js +28 -0
  89. package/lib/esm/components/backoffice/detail/BackofficeScopeStack.js.map +1 -0
  90. package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js +27 -0
  91. package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js.map +1 -0
  92. package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js +37 -0
  93. package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js.map +1 -0
  94. package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js +84 -0
  95. package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js.map +1 -0
  96. package/lib/esm/components/backoffice/detail/backofficeAuditMetadataPanel.css.js +7 -0
  97. package/lib/esm/components/backoffice/detail/backofficeAuditMetadataPanel.css.js.map +1 -0
  98. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js +7 -0
  99. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js.map +1 -0
  100. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js +7 -0
  101. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js.map +1 -0
  102. package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js +15 -0
  103. package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js.map +1 -0
  104. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js +7 -0
  105. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js.map +1 -0
  106. package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +7 -0
  107. package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js.map +1 -0
  108. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js +7 -0
  109. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js.map +1 -0
  110. package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js +7 -0
  111. package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js.map +1 -0
  112. package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js +7 -0
  113. package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js.map +1 -0
  114. package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js +7 -0
  115. package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js.map +1 -0
  116. package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js +7 -0
  117. package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js.map +1 -0
  118. package/lib/esm/components/backoffice/detail/backofficeLifecycleTimelineSection.css.js +7 -0
  119. package/lib/esm/components/backoffice/detail/backofficeLifecycleTimelineSection.css.js.map +1 -0
  120. package/lib/esm/components/backoffice/detail/backofficePayloadInspectorSection.css.js +7 -0
  121. package/lib/esm/components/backoffice/detail/backofficePayloadInspectorSection.css.js.map +1 -0
  122. package/lib/esm/components/backoffice/detail/backofficeReferenceValue.css.js +7 -0
  123. package/lib/esm/components/backoffice/detail/backofficeReferenceValue.css.js.map +1 -0
  124. package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js +7 -0
  125. package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js.map +1 -0
  126. package/lib/esm/components/backoffice/detail/backofficeScopeStack.css.js +7 -0
  127. package/lib/esm/components/backoffice/detail/backofficeScopeStack.css.js.map +1 -0
  128. package/lib/esm/components/backoffice/detail/backofficeStatusMetaBadge.css.js +7 -0
  129. package/lib/esm/components/backoffice/detail/backofficeStatusMetaBadge.css.js.map +1 -0
  130. package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js +7 -0
  131. package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js.map +1 -0
  132. package/lib/esm/components/backoffice/detail/createBackofficeEntityLinkProps.js +21 -0
  133. package/lib/esm/components/backoffice/detail/createBackofficeEntityLinkProps.js.map +1 -0
  134. package/lib/esm/components/backoffice/detail/detailPayloadUtils.js +17 -0
  135. package/lib/esm/components/backoffice/detail/detailPayloadUtils.js.map +1 -0
  136. package/lib/esm/{BackofficeErrorBoundary-BwRVSDHU.js → components/backoffice/errors/BackofficeErrorBoundary.js} +2 -2
  137. package/lib/esm/{BackofficeErrorBoundary-BwRVSDHU.js.map → components/backoffice/errors/BackofficeErrorBoundary.js.map} +1 -1
  138. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js +46 -0
  139. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +1 -0
  140. package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js +67 -0
  141. package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js.map +1 -0
  142. package/lib/esm/components/backoffice/filters/EntityFilterValue.js +46 -0
  143. package/lib/esm/components/backoffice/filters/EntityFilterValue.js.map +1 -0
  144. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +65 -0
  145. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +1 -0
  146. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +7 -0
  147. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js.map +1 -0
  148. package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js +7 -0
  149. package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js.map +1 -0
  150. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +7 -0
  151. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js.map +1 -0
  152. package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js +83 -0
  153. package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js.map +1 -0
  154. package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js +7 -0
  155. package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js.map +1 -0
  156. package/lib/esm/{BackofficePermissionsContext-C2bdxy2z.js → components/backoffice/layout/BackofficePermissionsContext.js} +2 -2
  157. package/lib/esm/{BackofficePermissionsContext-C2bdxy2z.js.map → components/backoffice/layout/BackofficePermissionsContext.js.map} +1 -1
  158. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +7 -0
  159. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js.map +1 -0
  160. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js +10 -0
  161. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js.map +1 -0
  162. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +69 -0
  163. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +1 -0
  164. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js +12 -0
  165. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js.map +1 -0
  166. package/lib/esm/{BackofficeTopbarPortalContext-Da5XFatM.js → components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js} +2 -2
  167. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js.map +1 -0
  168. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js +16 -0
  169. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js.map +1 -0
  170. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +7 -0
  171. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js.map +1 -0
  172. package/lib/esm/{buildBreadcrumbs-C5St167Y.js → components/backoffice/layout/breadcrumb/buildBreadcrumbs.js} +7 -3
  173. package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js.map +1 -0
  174. package/lib/esm/components/backoffice/layout/breadcrumb/types.js +0 -0
  175. package/lib/esm/components/backoffice/layout/buildSidebarSections.js +301 -0
  176. package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +1 -0
  177. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js +18 -0
  178. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +1 -0
  179. package/lib/esm/{sidebarUtils-BgCBLJLv.js → components/backoffice/layout/sidebarUtils.js} +32 -22
  180. package/lib/esm/{sidebarUtils-BgCBLJLv.js.map → components/backoffice/layout/sidebarUtils.js.map} +1 -1
  181. package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +7 -0
  182. package/lib/esm/components/backoffice/list/RowFlagsCell.css.js.map +1 -0
  183. package/lib/esm/components/backoffice/list/RowFlagsCell.js +37 -0
  184. package/lib/esm/components/backoffice/list/RowFlagsCell.js.map +1 -0
  185. package/lib/esm/components/backoffice/lists/BackofficeListToolbar.js +33 -0
  186. package/lib/esm/components/backoffice/lists/BackofficeListToolbar.js.map +1 -0
  187. package/lib/esm/components/backoffice/lists/backofficeListToolbar.css.js +13 -0
  188. package/lib/esm/components/backoffice/lists/backofficeListToolbar.css.js.map +1 -0
  189. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js +31 -0
  190. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js.map +1 -0
  191. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js +7 -0
  192. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js.map +1 -0
  193. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +117 -0
  194. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -0
  195. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +7 -0
  196. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +1 -0
  197. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js +27 -0
  198. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js.map +1 -0
  199. package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js +23 -0
  200. package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js.map +1 -0
  201. package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js +28 -0
  202. package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js.map +1 -0
  203. package/lib/esm/components/backoffice/pickers/types.js +0 -0
  204. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js +35 -0
  205. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js.map +1 -0
  206. package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js +30 -0
  207. package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js.map +1 -0
  208. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +65 -0
  209. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +1 -0
  210. package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js +7 -0
  211. package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js.map +1 -0
  212. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js +7 -0
  213. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js.map +1 -0
  214. package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js +24 -0
  215. package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js.map +1 -0
  216. package/lib/esm/components/backoffice/routing/BackofficeContentError.js +27 -0
  217. package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +1 -0
  218. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js +47 -0
  219. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js.map +1 -0
  220. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js +25 -0
  221. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js.map +1 -0
  222. package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js +12 -0
  223. package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js.map +1 -0
  224. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js +7 -0
  225. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js.map +1 -0
  226. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js +7 -0
  227. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js.map +1 -0
  228. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js +7 -0
  229. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js.map +1 -0
  230. package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js +7 -0
  231. package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js.map +1 -0
  232. package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js +7 -0
  233. package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js.map +1 -0
  234. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js +12 -0
  235. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js.map +1 -0
  236. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +506 -0
  237. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -0
  238. package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js +40 -0
  239. package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js.map +1 -0
  240. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js +24 -0
  241. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +1 -0
  242. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js +7 -0
  243. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js.map +1 -0
  244. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js +7 -0
  245. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js.map +1 -0
  246. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js +41 -0
  247. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js.map +1 -0
  248. package/lib/esm/components/backoffice/shared/BackofficeFormattedCurrency.js +17 -0
  249. package/lib/esm/components/backoffice/shared/BackofficeFormattedCurrency.js.map +1 -0
  250. package/lib/esm/components/backoffice/shared/BackofficeFormattedNumber.js +17 -0
  251. package/lib/esm/components/backoffice/shared/BackofficeFormattedNumber.js.map +1 -0
  252. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js +12 -0
  253. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js.map +1 -0
  254. package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js +16 -0
  255. package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js.map +1 -0
  256. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js +7 -0
  257. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js.map +1 -0
  258. package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js +41 -0
  259. package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js.map +1 -0
  260. package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js +48 -0
  261. package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js.map +1 -0
  262. package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js +63 -0
  263. package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js.map +1 -0
  264. package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js +35 -0
  265. package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js.map +1 -0
  266. package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js +7 -0
  267. package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js.map +1 -0
  268. package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js +7 -0
  269. package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js.map +1 -0
  270. package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js +7 -0
  271. package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js.map +1 -0
  272. package/lib/esm/components/backoffice/tools/parseToolJson.js +13 -0
  273. package/lib/esm/components/backoffice/tools/parseToolJson.js.map +1 -0
  274. package/lib/esm/filters/filterHelpers.js +26 -0
  275. package/lib/esm/filters/filterHelpers.js.map +1 -0
  276. package/lib/esm/hooks/useAuth.js +444 -0
  277. package/lib/esm/hooks/useAuth.js.map +1 -0
  278. package/lib/esm/hooks/useBackofficeAuth.js +89 -0
  279. package/lib/esm/hooks/useBackofficeAuth.js.map +1 -0
  280. package/lib/esm/hooks/useBackofficeInfiniteScrollSentinel.js +39 -0
  281. package/lib/esm/hooks/useBackofficeInfiniteScrollSentinel.js.map +1 -0
  282. package/lib/esm/hooks/useBackofficeListRefetch.js +50 -0
  283. package/lib/esm/hooks/useBackofficeListRefetch.js.map +1 -0
  284. package/lib/esm/{useBackofficeListUrlState-Ca6d7uIN.js → hooks/useBackofficeListUrlState.js} +2 -2
  285. package/lib/esm/hooks/useBackofficeListUrlState.js.map +1 -0
  286. package/lib/esm/hooks/useBackofficeLoadMore.js +18 -0
  287. package/lib/esm/hooks/useBackofficeLoadMore.js.map +1 -0
  288. package/lib/esm/hooks/useBackofficeSessionAuth.js +33 -0
  289. package/lib/esm/hooks/useBackofficeSessionAuth.js.map +1 -0
  290. package/lib/esm/hooks/useBackofficeSidebarPins.js +89 -0
  291. package/lib/esm/hooks/useBackofficeSidebarPins.js.map +1 -0
  292. package/lib/esm/hooks/useConditionalSubscription.js +63 -0
  293. package/lib/esm/hooks/useConditionalSubscription.js.map +1 -0
  294. package/lib/esm/hooks/useCopyToClipboard.js +31 -0
  295. package/lib/esm/hooks/useCopyToClipboard.js.map +1 -0
  296. package/lib/esm/hooks/useInfiniteConnection.js +95 -0
  297. package/lib/esm/hooks/useInfiniteConnection.js.map +1 -0
  298. package/lib/esm/hooks/useRefetchNeededReload.js +23 -0
  299. package/lib/esm/hooks/useRefetchNeededReload.js.map +1 -0
  300. package/lib/esm/hooks/useSidebarGroupCollapse.js +70 -0
  301. package/lib/esm/hooks/useSidebarGroupCollapse.js.map +1 -0
  302. package/lib/esm/i18n/createI18nInstance.js +68 -0
  303. package/lib/esm/i18n/createI18nInstance.js.map +1 -0
  304. package/lib/esm/i18n/locales/en/backofficeReact.js +436 -0
  305. package/lib/esm/i18n/locales/en/backofficeReact.js.map +1 -0
  306. package/lib/esm/i18n/locales/fr/backofficeReact.js +439 -0
  307. package/lib/esm/i18n/locales/fr/backofficeReact.js.map +1 -0
  308. package/lib/esm/i18n/mergeResourceLanguages.js +22 -0
  309. package/lib/esm/i18n/mergeResourceLanguages.js.map +1 -0
  310. package/lib/esm/i18n/resources.js +23 -0
  311. package/lib/esm/i18n/resources.js.map +1 -0
  312. package/lib/esm/i18n/useBackofficeFormats.js +23 -0
  313. package/lib/esm/i18n/useBackofficeFormats.js.map +1 -0
  314. package/lib/esm/i18n/useBackofficeReactTranslation.js +9 -0
  315. package/lib/esm/i18n/useBackofficeReactTranslation.js.map +1 -0
  316. package/lib/esm/i18n/useReviewStatusLabel.js +19 -0
  317. package/lib/esm/i18n/useReviewStatusLabel.js.map +1 -0
  318. package/lib/esm/index.js +73 -0
  319. package/lib/esm/modules/base64.js +21 -0
  320. package/lib/esm/modules/base64.js.map +1 -0
  321. package/lib/esm/modules/formatFileSize.js +28 -0
  322. package/lib/esm/modules/formatFileSize.js.map +1 -0
  323. package/lib/esm/modules/sharedSchemaTypes.js +0 -0
  324. package/lib/esm/modules/webauthn.js +33 -0
  325. package/lib/esm/modules/webauthn.js.map +1 -0
  326. package/lib/esm/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +15 -0
  327. package/lib/esm/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +1 -0
  328. package/lib/esm/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +15 -0
  329. package/lib/esm/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js.map +1 -0
  330. package/lib/esm/node_modules/@babel/runtime/helpers/defineProperty.js +20 -0
  331. package/lib/esm/node_modules/@babel/runtime/helpers/defineProperty.js.map +1 -0
  332. package/lib/esm/node_modules/@babel/runtime/helpers/interopRequireDefault.js +13 -0
  333. package/lib/esm/node_modules/@babel/runtime/helpers/interopRequireDefault.js.map +1 -0
  334. package/lib/esm/node_modules/@babel/runtime/helpers/iterableToArray.js +13 -0
  335. package/lib/esm/node_modules/@babel/runtime/helpers/iterableToArray.js.map +1 -0
  336. package/lib/esm/node_modules/@babel/runtime/helpers/nonIterableSpread.js +13 -0
  337. package/lib/esm/node_modules/@babel/runtime/helpers/nonIterableSpread.js.map +1 -0
  338. package/lib/esm/node_modules/@babel/runtime/helpers/objectSpread2.js +33 -0
  339. package/lib/esm/node_modules/@babel/runtime/helpers/objectSpread2.js.map +1 -0
  340. package/lib/esm/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js +19 -0
  341. package/lib/esm/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js.map +1 -0
  342. package/lib/esm/node_modules/@babel/runtime/helpers/toConsumableArray.js +18 -0
  343. package/lib/esm/node_modules/@babel/runtime/helpers/toConsumableArray.js.map +1 -0
  344. package/lib/esm/node_modules/@babel/runtime/helpers/toPrimitive.js +22 -0
  345. package/lib/esm/node_modules/@babel/runtime/helpers/toPrimitive.js.map +1 -0
  346. package/lib/esm/node_modules/@babel/runtime/helpers/toPropertyKey.js +17 -0
  347. package/lib/esm/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +1 -0
  348. package/lib/esm/node_modules/@babel/runtime/helpers/typeof.js +18 -0
  349. package/lib/esm/node_modules/@babel/runtime/helpers/typeof.js.map +1 -0
  350. package/lib/esm/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +19 -0
  351. package/lib/esm/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +1 -0
  352. package/lib/esm/node_modules/@vanilla-extract/recipes/dist/createRuntimeFn-62c9670f.esm.js +80 -0
  353. package/lib/esm/node_modules/@vanilla-extract/recipes/dist/createRuntimeFn-62c9670f.esm.js.map +1 -0
  354. package/lib/esm/node_modules/fbjs/lib/areEqual.js +42 -0
  355. package/lib/esm/node_modules/fbjs/lib/areEqual.js.map +1 -0
  356. package/lib/esm/node_modules/invariant/browser.js +30 -0
  357. package/lib/esm/node_modules/invariant/browser.js.map +1 -0
  358. package/lib/esm/node_modules/relay-test-utils/index.js +11 -0
  359. package/lib/esm/node_modules/relay-test-utils/index.js.map +1 -0
  360. package/lib/esm/node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js +288 -0
  361. package/lib/esm/node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js.map +1 -0
  362. package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js +183 -0
  363. package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js.map +1 -0
  364. package/lib/esm/node_modules/relay-test-utils/lib/RelayResolverTestUtils.js +19 -0
  365. package/lib/esm/node_modules/relay-test-utils/lib/RelayResolverTestUtils.js.map +1 -0
  366. package/lib/esm/node_modules/relay-test-utils/lib/index.js +21 -0
  367. package/lib/esm/node_modules/relay-test-utils/lib/index.js.map +1 -0
  368. package/lib/esm/node_modules/relay-test-utils/lib/unwrapContainer.js +16 -0
  369. package/lib/esm/node_modules/relay-test-utils/lib/unwrapContainer.js.map +1 -0
  370. package/lib/esm/pages/BackofficeAcceptInvitationPage.js +24 -0
  371. package/lib/esm/pages/BackofficeAcceptInvitationPage.js.map +1 -0
  372. package/lib/esm/pages/BackofficeDashboardPage.helpers.js +18 -0
  373. package/lib/esm/pages/BackofficeDashboardPage.helpers.js.map +1 -0
  374. package/lib/esm/pages/BackofficeDashboardPage.js +266 -0
  375. package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -0
  376. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +18 -0
  377. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +1 -0
  378. package/lib/esm/pages/BackofficeEntityDetailPage.helpers.js +14 -0
  379. package/lib/esm/pages/BackofficeEntityDetailPage.helpers.js.map +1 -0
  380. package/lib/esm/pages/BackofficeEntityDetailPage.js +474 -0
  381. package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -0
  382. package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js +414 -0
  383. package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js.map +1 -0
  384. package/lib/esm/{BackofficeEntityDetailUnknownPageRedirect-Iu4R3WvX.js → pages/BackofficeEntityDetailUnknownPageRedirect.js} +3 -3
  385. package/lib/esm/pages/BackofficeEntityDetailUnknownPageRedirect.js.map +1 -0
  386. package/lib/esm/pages/BackofficeEntityListPage.helpers.js +37 -0
  387. package/lib/esm/pages/BackofficeEntityListPage.helpers.js.map +1 -0
  388. package/lib/esm/pages/BackofficeEntityListPage.js +381 -0
  389. package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -0
  390. package/lib/esm/{BackofficeHubPage-DOePQ8Fc.js → pages/BackofficeHubPage.js} +29 -28
  391. package/lib/esm/pages/BackofficeHubPage.js.map +1 -0
  392. package/lib/esm/pages/BackofficeLayoutPage.js +273 -0
  393. package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -0
  394. package/lib/esm/pages/BackofficeLoginPage.js +47 -0
  395. package/lib/esm/pages/BackofficeLoginPage.js.map +1 -0
  396. package/lib/esm/{BackofficePasswordResetCompletePage-Cit5sdDm.js → pages/BackofficePasswordResetCompletePage.js} +16 -15
  397. package/lib/esm/pages/BackofficePasswordResetCompletePage.js.map +1 -0
  398. package/lib/esm/{BackofficePasswordResetRequestPage-B_TurHev.js → pages/BackofficePasswordResetRequestPage.js} +12 -12
  399. package/lib/esm/pages/BackofficePasswordResetRequestPage.js.map +1 -0
  400. package/lib/esm/{BackofficeVerifyEmailPage-DQbFIob1.js → pages/BackofficeVerifyEmailPage.js} +16 -15
  401. package/lib/esm/pages/BackofficeVerifyEmailPage.js.map +1 -0
  402. package/lib/esm/pages/backofficeDashboardPage.css.js +7 -0
  403. package/lib/esm/pages/backofficeDashboardPage.css.js.map +1 -0
  404. package/lib/esm/pages/backofficeEntityDetailPage.css.js +7 -0
  405. package/lib/esm/pages/backofficeEntityDetailPage.css.js.map +1 -0
  406. package/lib/esm/pages/backofficeEntityListPage.css.js +7 -0
  407. package/lib/esm/pages/backofficeEntityListPage.css.js.map +1 -0
  408. package/lib/esm/pages/dashboard/DashboardMetricGroup.js +25 -0
  409. package/lib/esm/pages/dashboard/DashboardMetricGroup.js.map +1 -0
  410. package/lib/esm/pages/dashboard/DashboardPanel.js +15 -0
  411. package/lib/esm/pages/dashboard/DashboardPanel.js.map +1 -0
  412. package/lib/esm/pages/dashboard/DashboardQuickActions.js +27 -0
  413. package/lib/esm/pages/dashboard/DashboardQuickActions.js.map +1 -0
  414. package/lib/esm/pages/dashboard/DashboardStatusList.js +28 -0
  415. package/lib/esm/pages/dashboard/DashboardStatusList.js.map +1 -0
  416. package/lib/esm/pages/dashboard/dashboardMetricGroup.css.js +8 -0
  417. package/lib/esm/pages/dashboard/dashboardMetricGroup.css.js.map +1 -0
  418. package/lib/esm/pages/dashboard/dashboardPanel.css.js +7 -0
  419. package/lib/esm/pages/dashboard/dashboardPanel.css.js.map +1 -0
  420. package/lib/esm/pages/dashboard/dashboardQuickActions.css.js +7 -0
  421. package/lib/esm/pages/dashboard/dashboardQuickActions.css.js.map +1 -0
  422. package/lib/esm/pages/dashboard/dashboardStatusList.css.js +7 -0
  423. package/lib/esm/pages/dashboard/dashboardStatusList.css.js.map +1 -0
  424. package/lib/esm/{BackofficeEntityDetailLayoutContext-C5G-PH28.js → pages/detail/BackofficeEntityDetailLayoutContext.js} +2 -2
  425. package/lib/esm/pages/detail/BackofficeEntityDetailLayoutContext.js.map +1 -0
  426. package/lib/esm/pages/detail/buildTabsItems.js +10 -0
  427. package/lib/esm/pages/detail/buildTabsItems.js.map +1 -0
  428. package/lib/esm/{pageResolution-CUaTq4Ql.js → pages/detail/pageResolution.js} +2 -2
  429. package/lib/esm/pages/detail/pageResolution.js.map +1 -0
  430. package/lib/esm/provider/BackofficeConfigContext.js +12 -0
  431. package/lib/esm/provider/BackofficeConfigContext.js.map +1 -0
  432. package/lib/esm/provider/BackofficeProvider.js +171 -0
  433. package/lib/esm/provider/BackofficeProvider.js.map +1 -0
  434. package/lib/esm/provider/entityRegistry.js +95 -0
  435. package/lib/esm/provider/entityRegistry.js.map +1 -0
  436. package/lib/esm/provider/lazyValue.js +14 -0
  437. package/lib/esm/provider/lazyValue.js.map +1 -0
  438. package/lib/esm/provider/types.js +0 -0
  439. package/lib/esm/provider/useBackofficeEntityLoader.js +141 -0
  440. package/lib/esm/provider/useBackofficeEntityLoader.js.map +1 -0
  441. package/lib/esm/{useBackofficeLazyValue-CW9xfRzQ.js → provider/useBackofficeLazyValue.js} +15 -7
  442. package/lib/esm/provider/useBackofficeLazyValue.js.map +1 -0
  443. package/lib/esm/relay/RelayProvider.js +13 -0
  444. package/lib/esm/relay/RelayProvider.js.map +1 -0
  445. package/lib/esm/relay/connectionUtils.js +19 -0
  446. package/lib/esm/relay/connectionUtils.js.map +1 -0
  447. package/lib/esm/relay/createInlineDataReader.js +2 -0
  448. package/lib/esm/relay/createInlineReader.js +7 -0
  449. package/lib/esm/relay/createInlineReader.js.map +1 -0
  450. package/lib/esm/relay/envHelpers.js +55 -0
  451. package/lib/esm/relay/envHelpers.js.map +1 -0
  452. package/lib/esm/{environment-DQfVyWHJ.js → relay/environment.js} +90 -100
  453. package/lib/esm/relay/environment.js.map +1 -0
  454. package/lib/esm/relay/identityView.js +6 -0
  455. package/lib/esm/relay/identityView.js.map +1 -0
  456. package/lib/esm/{mutationResult-C2Vb_vPt.js → relay/mutationResult.js} +2 -2
  457. package/lib/esm/relay/mutationResult.js.map +1 -0
  458. package/lib/esm/{useRelayEnvironment-vQ86aW-n.js → relay/useRelayEnvironment.js} +2 -2
  459. package/lib/esm/relay/useRelayEnvironment.js.map +1 -0
  460. package/lib/esm/{backofficeAuthPaths-2hHNn8D3.js → router/backofficeAuthPaths.js} +2 -2
  461. package/lib/esm/router/backofficeAuthPaths.js.map +1 -0
  462. package/lib/esm/router/createBackofficeRoutes.js +322 -0
  463. package/lib/esm/router/createBackofficeRoutes.js.map +1 -0
  464. package/lib/esm/storybook/relay/RelayStory.css.js +7 -0
  465. package/lib/esm/storybook/relay/RelayStory.css.js.map +1 -0
  466. package/lib/esm/storybook/relay/RelayStory.js +86 -0
  467. package/lib/esm/storybook/relay/RelayStory.js.map +1 -0
  468. package/lib/esm/storybook/relay/mockResolvers.js +99 -0
  469. package/lib/esm/storybook/relay/mockResolvers.js.map +1 -0
  470. package/lib/esm/storybook/relay/relay-test-utils.d.js +0 -0
  471. package/lib/esm/style.css +1 -1
  472. package/lib/esm/style.js +1 -0
  473. package/lib/esm/subscriptions/useCursorResumableSubscription.js +29 -0
  474. package/lib/esm/subscriptions/useCursorResumableSubscription.js.map +1 -0
  475. package/lib/types/auth/AuthRefreshNotice.d.ts +14 -0
  476. package/lib/types/auth/AuthRefreshNotice.d.ts.map +1 -0
  477. package/lib/types/auth/TotpQrCode.d.ts +17 -0
  478. package/lib/types/auth/TotpQrCode.d.ts.map +1 -0
  479. package/lib/types/auth/authRefreshNotice.css.d.ts +4 -0
  480. package/lib/types/auth/authRefreshNotice.css.d.ts.map +1 -0
  481. package/lib/types/components/backoffice/detail/BackofficeAuditMetadataPanel.d.ts +19 -0
  482. package/lib/types/components/backoffice/detail/BackofficeAuditMetadataPanel.d.ts.map +1 -0
  483. package/lib/types/components/backoffice/detail/BackofficeEntityRefLink.d.ts +15 -0
  484. package/lib/types/components/backoffice/detail/BackofficeEntityRefLink.d.ts.map +1 -0
  485. package/lib/types/components/backoffice/detail/BackofficeEntitySummaryHeader.d.ts +34 -0
  486. package/lib/types/components/backoffice/detail/BackofficeEntitySummaryHeader.d.ts.map +1 -0
  487. package/lib/types/components/backoffice/detail/BackofficeEnumLabel.d.ts +9 -0
  488. package/lib/types/components/backoffice/detail/BackofficeEnumLabel.d.ts.map +1 -0
  489. package/lib/types/components/backoffice/detail/BackofficeKpiStrip.d.ts +17 -0
  490. package/lib/types/components/backoffice/detail/BackofficeKpiStrip.d.ts.map +1 -0
  491. package/lib/types/components/backoffice/detail/BackofficeLifecycleTimelineSection.d.ts +20 -0
  492. package/lib/types/components/backoffice/detail/BackofficeLifecycleTimelineSection.d.ts.map +1 -0
  493. package/lib/types/components/backoffice/detail/BackofficePayloadInspectorSection.d.ts +15 -0
  494. package/lib/types/components/backoffice/detail/BackofficePayloadInspectorSection.d.ts.map +1 -0
  495. package/lib/types/components/backoffice/detail/BackofficeReferenceValue.d.ts +9 -0
  496. package/lib/types/components/backoffice/detail/BackofficeReferenceValue.d.ts.map +1 -0
  497. package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts +17 -0
  498. package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts.map +1 -0
  499. package/lib/types/components/backoffice/detail/BackofficeScopeStack.d.ts +13 -0
  500. package/lib/types/components/backoffice/detail/BackofficeScopeStack.d.ts.map +1 -0
  501. package/lib/types/components/backoffice/detail/BackofficeStatusMetaBadge.d.ts +13 -0
  502. package/lib/types/components/backoffice/detail/BackofficeStatusMetaBadge.d.ts.map +1 -0
  503. package/lib/types/components/backoffice/detail/BackofficeTokenUsageBreakdown.d.ts +18 -0
  504. package/lib/types/components/backoffice/detail/BackofficeTokenUsageBreakdown.d.ts.map +1 -0
  505. package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts +31 -0
  506. package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts.map +1 -0
  507. package/lib/types/components/backoffice/detail/backofficeAuditMetadataPanel.css.d.ts +5 -0
  508. package/lib/types/components/backoffice/detail/backofficeAuditMetadataPanel.css.d.ts.map +1 -0
  509. package/lib/types/components/backoffice/detail/backofficeEntitySummaryHeader.css.d.ts +12 -0
  510. package/lib/types/components/backoffice/detail/backofficeEntitySummaryHeader.css.d.ts.map +1 -0
  511. package/lib/types/components/backoffice/detail/backofficeKpiStrip.css.d.ts +5 -0
  512. package/lib/types/components/backoffice/detail/backofficeKpiStrip.css.d.ts.map +1 -0
  513. package/lib/types/components/backoffice/detail/backofficeLifecycleTimelineSection.css.d.ts +3 -0
  514. package/lib/types/components/backoffice/detail/backofficeLifecycleTimelineSection.css.d.ts.map +1 -0
  515. package/lib/types/components/backoffice/detail/backofficePayloadInspectorSection.css.d.ts +4 -0
  516. package/lib/types/components/backoffice/detail/backofficePayloadInspectorSection.css.d.ts.map +1 -0
  517. package/lib/types/components/backoffice/detail/backofficeReferenceValue.css.d.ts +3 -0
  518. package/lib/types/components/backoffice/detail/backofficeReferenceValue.css.d.ts.map +1 -0
  519. package/lib/types/components/backoffice/detail/backofficeRelationsSummaryGrid.css.d.ts +6 -0
  520. package/lib/types/components/backoffice/detail/backofficeRelationsSummaryGrid.css.d.ts.map +1 -0
  521. package/lib/types/components/backoffice/detail/backofficeScopeStack.css.d.ts +5 -0
  522. package/lib/types/components/backoffice/detail/backofficeScopeStack.css.d.ts.map +1 -0
  523. package/lib/types/components/backoffice/detail/backofficeStatusMetaBadge.css.d.ts +2 -0
  524. package/lib/types/components/backoffice/detail/backofficeStatusMetaBadge.css.d.ts.map +1 -0
  525. package/lib/types/components/backoffice/detail/backofficeUsageCostBreakdown.css.d.ts +7 -0
  526. package/lib/types/components/backoffice/detail/backofficeUsageCostBreakdown.css.d.ts.map +1 -0
  527. package/lib/types/components/backoffice/detail/createBackofficeEntityLinkProps.d.ts +30 -0
  528. package/lib/types/components/backoffice/detail/createBackofficeEntityLinkProps.d.ts.map +1 -0
  529. package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.stories.d.ts +12 -0
  530. package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.stories.d.ts.map +1 -0
  531. package/lib/types/components/backoffice/filters/EntityIdFilterField.stories.d.ts +12 -0
  532. package/lib/types/components/backoffice/filters/EntityIdFilterField.stories.d.ts.map +1 -0
  533. package/lib/types/components/backoffice/overview/BackofficeOverviewLayout.stories.d.ts +11 -0
  534. package/lib/types/components/backoffice/overview/BackofficeOverviewLayout.stories.d.ts.map +1 -0
  535. package/lib/types/components/backoffice/refs/BackofficeEntityLink.d.ts +15 -0
  536. package/lib/types/components/backoffice/refs/BackofficeEntityLink.d.ts.map +1 -0
  537. package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.stories.d.ts +11 -0
  538. package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.stories.d.ts.map +1 -0
  539. package/lib/types/components/backoffice/shared/BackofficeFormattedCurrency.d.ts +9 -0
  540. package/lib/types/components/backoffice/shared/BackofficeFormattedCurrency.d.ts.map +1 -0
  541. package/lib/types/components/backoffice/shared/BackofficeFormattedNumber.d.ts +9 -0
  542. package/lib/types/components/backoffice/shared/BackofficeFormattedNumber.d.ts.map +1 -0
  543. package/lib/types/components/backoffice/tools/BackofficeToolsDocPanel.d.ts +11 -0
  544. package/lib/types/components/backoffice/tools/BackofficeToolsDocPanel.d.ts.map +1 -0
  545. package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts +8 -0
  546. package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts.map +1 -0
  547. package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts +15 -0
  548. package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts.map +1 -0
  549. package/lib/types/components/backoffice/tools/BackofficeToolsQueryBoundary.d.ts +7 -0
  550. package/lib/types/components/backoffice/tools/BackofficeToolsQueryBoundary.d.ts.map +1 -0
  551. package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts +8 -0
  552. package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts.map +1 -0
  553. package/lib/types/components/backoffice/tools/backofficeToolsForm.css.d.ts +7 -0
  554. package/lib/types/components/backoffice/tools/backofficeToolsForm.css.d.ts.map +1 -0
  555. package/lib/types/components/backoffice/tools/backofficeToolsJsonForm.css.d.ts +4 -0
  556. package/lib/types/components/backoffice/tools/backofficeToolsJsonForm.css.d.ts.map +1 -0
  557. package/lib/types/components/backoffice/tools/parseToolJson.d.ts +2 -0
  558. package/lib/types/components/backoffice/tools/parseToolJson.d.ts.map +1 -0
  559. package/lib/types/hooks/useInfiniteConnection.d.ts +37 -0
  560. package/lib/types/hooks/useInfiniteConnection.d.ts.map +1 -0
  561. package/lib/types/i18n/resources.d.ts +54 -0
  562. package/lib/types/i18n/resources.d.ts.map +1 -1
  563. package/lib/types/index.d.ts +28 -0
  564. package/lib/types/index.d.ts.map +1 -1
  565. package/lib/types/relay/connectionUtils.d.ts +10 -0
  566. package/lib/types/relay/connectionUtils.d.ts.map +1 -0
  567. package/lib/types/storybook/relay/RelayStory.css.d.ts +5 -0
  568. package/lib/types/storybook/relay/RelayStory.css.d.ts.map +1 -0
  569. package/lib/types/storybook/relay/RelayStory.d.ts +35 -0
  570. package/lib/types/storybook/relay/RelayStory.d.ts.map +1 -0
  571. package/lib/types/storybook/relay/mockResolvers.d.ts +3 -0
  572. package/lib/types/storybook/relay/mockResolvers.d.ts.map +1 -0
  573. package/lib/types/subscriptions/useCursorResumableSubscription.d.ts +16 -0
  574. package/lib/types/subscriptions/useCursorResumableSubscription.d.ts.map +1 -0
  575. package/package.json +24 -9
  576. package/lib/esm/AcceptInvitationScreen-VaWXQPHp.js.map +0 -1
  577. package/lib/esm/AuthPanel-BaIRFGbX.js.map +0 -1
  578. package/lib/esm/BackofficeAcceptInvitationPage-tpfBfhT9.js +0 -24
  579. package/lib/esm/BackofficeAcceptInvitationPage-tpfBfhT9.js.map +0 -1
  580. package/lib/esm/BackofficeDashboardPage-D5W36DY-.js +0 -329
  581. package/lib/esm/BackofficeDashboardPage-D5W36DY-.js.map +0 -1
  582. package/lib/esm/BackofficeDetailPayload-CZcsDv2w.js +0 -98
  583. package/lib/esm/BackofficeDetailPayload-CZcsDv2w.js.map +0 -1
  584. package/lib/esm/BackofficeEntityDetailLayoutContext-C5G-PH28.js.map +0 -1
  585. package/lib/esm/BackofficeEntityDetailLayoutPage-BSgGBzSL.js +0 -18
  586. package/lib/esm/BackofficeEntityDetailLayoutPage-BSgGBzSL.js.map +0 -1
  587. package/lib/esm/BackofficeEntityDetailPage-LB1uEJVM.js +0 -1061
  588. package/lib/esm/BackofficeEntityDetailPage-LB1uEJVM.js.map +0 -1
  589. package/lib/esm/BackofficeEntityDetailUnknownPageRedirect-Iu4R3WvX.js.map +0 -1
  590. package/lib/esm/BackofficeEntityListPage-D_zL-qRb.js +0 -432
  591. package/lib/esm/BackofficeEntityListPage-D_zL-qRb.js.map +0 -1
  592. package/lib/esm/BackofficeHubPage-DOePQ8Fc.js.map +0 -1
  593. package/lib/esm/BackofficeHubTemplate-C6K55egX.js +0 -82
  594. package/lib/esm/BackofficeHubTemplate-C6K55egX.js.map +0 -1
  595. package/lib/esm/BackofficeLayoutPage-Bq2bKkYF.js +0 -783
  596. package/lib/esm/BackofficeLayoutPage-Bq2bKkYF.js.map +0 -1
  597. package/lib/esm/BackofficeListToolbar-loFfIPtP.js +0 -109
  598. package/lib/esm/BackofficeListToolbar-loFfIPtP.js.map +0 -1
  599. package/lib/esm/BackofficeLoginPage-DIlcOueK.js +0 -46
  600. package/lib/esm/BackofficeLoginPage-DIlcOueK.js.map +0 -1
  601. package/lib/esm/BackofficePasswordResetCompletePage-Cit5sdDm.js.map +0 -1
  602. package/lib/esm/BackofficePasswordResetRequestPage-B_TurHev.js.map +0 -1
  603. package/lib/esm/BackofficeRightPageLayout-CfNkrMvH.js +0 -83
  604. package/lib/esm/BackofficeRightPageLayout-CfNkrMvH.js.map +0 -1
  605. package/lib/esm/BackofficeTopbarPortalContext-Da5XFatM.js.map +0 -1
  606. package/lib/esm/BackofficeVerifyEmailPage-DQbFIob1.js.map +0 -1
  607. package/lib/esm/EntityIdPickerDialog-BSn0v3bv.js +0 -340
  608. package/lib/esm/EntityIdPickerDialog-BSn0v3bv.js.map +0 -1
  609. package/lib/esm/LazyBackofficeEntityActionFormDialog-oRd_WHAK.js +0 -670
  610. package/lib/esm/LazyBackofficeEntityActionFormDialog-oRd_WHAK.js.map +0 -1
  611. package/lib/esm/PasswordResetCompleteScreen-Cgg96DPo.js.map +0 -1
  612. package/lib/esm/PasswordResetRequestScreen-I1nFvGLd.js.map +0 -1
  613. package/lib/esm/VerifyEmailScreen-Br5KyHjg.js.map +0 -1
  614. package/lib/esm/backoffice-react.js +0 -1925
  615. package/lib/esm/backoffice-react.js.map +0 -1
  616. package/lib/esm/backofficeAuthPaths-2hHNn8D3.js.map +0 -1
  617. package/lib/esm/buildBreadcrumbs-C5St167Y.js.map +0 -1
  618. package/lib/esm/environment-DQfVyWHJ.js.map +0 -1
  619. package/lib/esm/loginPage.css-B7Io_DuU.js +0 -6
  620. package/lib/esm/loginPage.css-B7Io_DuU.js.map +0 -1
  621. package/lib/esm/mutationResult-C2Vb_vPt.js.map +0 -1
  622. package/lib/esm/pageResolution-CUaTq4Ql.js.map +0 -1
  623. package/lib/esm/synchronizeAuthStatusQuery-DNJR5MfH.js +0 -323
  624. package/lib/esm/synchronizeAuthStatusQuery-DNJR5MfH.js.map +0 -1
  625. package/lib/esm/useAuth-CWf8ZspF.js +0 -548
  626. package/lib/esm/useAuth-CWf8ZspF.js.map +0 -1
  627. package/lib/esm/useBackofficeAuth-Da7FPNys.js +0 -89
  628. package/lib/esm/useBackofficeAuth-Da7FPNys.js.map +0 -1
  629. package/lib/esm/useBackofficeLazyValue-CW9xfRzQ.js.map +0 -1
  630. package/lib/esm/useBackofficeListUrlState-Ca6d7uIN.js.map +0 -1
  631. package/lib/esm/useBackofficeReactTranslation-Btt58EIo.js +0 -18
  632. package/lib/esm/useBackofficeReactTranslation-Btt58EIo.js.map +0 -1
  633. package/lib/esm/useRelayEnvironment-vQ86aW-n.js.map +0 -1
@@ -0,0 +1,39 @@
1
+ import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
2
+ //#region src/hooks/useBackofficeInfiniteScrollSentinel.ts
3
+ function i({ enabled: i, hasNextPage: a, isLoading: o, onIntersect: s, root: c = null, rootMargin: l = "360px 0px", threshold: u = 0 }) {
4
+ let [d, f] = r(null), p = n(s), m = n(0);
5
+ return t(() => {
6
+ p.current = s;
7
+ }, [s]), t(() => {
8
+ if (!i || !a || o || d == null) return () => {};
9
+ let e = () => {
10
+ let e = Date.now();
11
+ e - m.current < 250 || (m.current = e, p.current());
12
+ };
13
+ if (typeof IntersectionObserver > "u") return e(), () => {};
14
+ let t = new IntersectionObserver((t) => {
15
+ t[0]?.isIntersecting === !0 && e();
16
+ }, {
17
+ root: c,
18
+ rootMargin: l,
19
+ threshold: u
20
+ });
21
+ return t.observe(d), () => {
22
+ t.disconnect();
23
+ };
24
+ }, [
25
+ i,
26
+ a,
27
+ o,
28
+ d,
29
+ c,
30
+ l,
31
+ u
32
+ ]), { sentinelRef: e((e) => {
33
+ f(e);
34
+ }, []) };
35
+ }
36
+ //#endregion
37
+ export { i as useBackofficeInfiniteScrollSentinel };
38
+
39
+ //# sourceMappingURL=useBackofficeInfiniteScrollSentinel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBackofficeInfiniteScrollSentinel.js","names":[],"sources":["../../../src/hooks/useBackofficeInfiniteScrollSentinel.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type UseBackofficeInfiniteScrollSentinelOptions = {\n enabled: boolean;\n hasNextPage: boolean;\n isLoading: boolean;\n root?: Element | null;\n rootMargin?: string;\n threshold?: number;\n onIntersect: () => void;\n};\n\nexport type UseBackofficeInfiniteScrollSentinelResult = {\n sentinelRef: (node: HTMLElement | null) => void;\n};\n\n/**\n * Observes a sentinel element and triggers pagination when it enters the viewport.\n */\nexport function useBackofficeInfiniteScrollSentinel({\n enabled,\n hasNextPage,\n isLoading,\n onIntersect,\n root = null,\n rootMargin = '360px 0px',\n threshold = 0,\n}: UseBackofficeInfiniteScrollSentinelOptions): UseBackofficeInfiniteScrollSentinelResult {\n const [node, setNode] = useState<HTMLElement | null>(null);\n const onIntersectRef = useRef(onIntersect);\n const lastIntersectAtRef = useRef(0);\n\n useEffect(() => {\n onIntersectRef.current = onIntersect;\n }, [onIntersect]);\n\n useEffect(() => {\n if (!enabled || !hasNextPage || isLoading || node == null) {\n return () => {};\n }\n\n const triggerIntersect = () => {\n const now = Date.now();\n if (now - lastIntersectAtRef.current < 250) {\n return;\n }\n lastIntersectAtRef.current = now;\n onIntersectRef.current();\n };\n\n if (typeof IntersectionObserver === 'undefined') {\n triggerIntersect();\n return () => {};\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry?.isIntersecting === true) {\n triggerIntersect();\n }\n },\n {\n root,\n rootMargin,\n threshold,\n },\n );\n\n observer.observe(node);\n\n return () => {\n observer.disconnect();\n };\n }, [enabled, hasNextPage, isLoading, node, root, rootMargin, threshold]);\n\n const sentinelRef = useCallback((next: HTMLElement | null) => {\n setNode(next);\n }, []);\n\n return { sentinelRef };\n}\n"],"mappings":";;AAmBA,SAAgB,EAAoC,EAClD,YACA,gBACA,cACA,gBACA,UAAO,MACP,gBAAa,aACb,eAAY,KAC4E;CACxF,IAAM,CAAC,GAAM,KAAW,EAA6B,KAAK,EACpD,IAAiB,EAAO,EAAY,EACpC,IAAqB,EAAO,EAAE;CAkDpC,OAhDA,QAAgB;EACd,EAAe,UAAU;IACxB,CAAC,EAAY,CAAC,EAEjB,QAAgB;EACd,IAAI,CAAC,KAAW,CAAC,KAAe,KAAa,KAAQ,MACnD,aAAa;EAGf,IAAM,UAAyB;GAC7B,IAAM,IAAM,KAAK,KAAK;GAClB,IAAM,EAAmB,UAAU,QAGvC,EAAmB,UAAU,GAC7B,EAAe,SAAS;;EAG1B,IAAI,OAAO,uBAAyB,KAElC,OADA,GAAkB,QACL;EAGf,IAAM,IAAW,IAAI,sBAClB,MAAY;GAEX,AADc,EAAQ,IACX,mBAAmB,MAC5B,GAAkB;KAGtB;GACE;GACA;GACA;GACD,CACF;EAID,OAFA,EAAS,QAAQ,EAAK,QAET;GACX,EAAS,YAAY;;IAEtB;EAAC;EAAS;EAAa;EAAW;EAAM;EAAM;EAAY;EAAU,CAAC,EAMjE,EAAE,aAJW,GAAa,MAA6B;EAC5D,EAAQ,EAAK;IACZ,EAAE,CAEI,EAAa"}
@@ -0,0 +1,50 @@
1
+ import { startTransition as e, useCallback as t, useEffect as n, useRef as r, useState as i } from "react";
2
+ import { stableListVariablesKey as a } from "@plumile/backoffice-core/state/stableKey.js";
3
+ //#region src/hooks/useBackofficeListRefetch.ts
4
+ function o({ refetch: o, variables: s, defaults: c, fetchPolicy: l, buildQueryVariables: u }) {
5
+ let [d, f] = i(!1), p = r(0), m = r(a({
6
+ where: c.where,
7
+ sort: c.sort,
8
+ count: c.count
9
+ })), h = t((e) => u(e), [u]), g = t((t) => {
10
+ let n = p.current + 1;
11
+ p.current = n, f(!0);
12
+ let r = h({
13
+ ...t,
14
+ cursor: null
15
+ });
16
+ try {
17
+ e(() => {
18
+ o(r, {
19
+ fetchPolicy: l,
20
+ onComplete: () => {
21
+ p.current === n && f(!1);
22
+ }
23
+ });
24
+ });
25
+ } catch (e) {
26
+ throw p.current === n && f(!1), e;
27
+ }
28
+ }, [
29
+ l,
30
+ o,
31
+ h
32
+ ]);
33
+ return n(() => {
34
+ let e = a({
35
+ where: s.where,
36
+ sort: s.sort,
37
+ count: s.count
38
+ });
39
+ m.current !== e && (m.current = e, g(s));
40
+ }, [g, s]), {
41
+ isRefreshing: d,
42
+ onRefresh: t(() => {
43
+ g(s);
44
+ }, [g, s])
45
+ };
46
+ }
47
+ //#endregion
48
+ export { o as useBackofficeListRefetch };
49
+
50
+ //# sourceMappingURL=useBackofficeListRefetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBackofficeListRefetch.js","names":[],"sources":["../../../src/hooks/useBackofficeListRefetch.ts"],"sourcesContent":["import {\n startTransition,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport type { FetchPolicy } from 'relay-runtime';\n\nimport { stableListVariablesKey } from '@plumile/backoffice-core/state/stableKey.js';\nimport type { BackofficeListVariables } from '@plumile/backoffice-core/types.js';\n\ntype RefetchFn<TVariables> = (\n vars: TVariables,\n opts: {\n fetchPolicy: FetchPolicy;\n onComplete?: (error: Error | null) => void;\n },\n) => { dispose: () => void } | undefined;\n\ntype Params<Where, Sort extends string, Variables> = {\n refetch: RefetchFn<Variables>;\n variables: BackofficeListVariables<Where, Sort>;\n defaults: BackofficeListVariables<Where, Sort>;\n fetchPolicy: FetchPolicy;\n buildQueryVariables: (\n input: BackofficeListVariables<Where, Sort>,\n ) => Variables;\n};\n\n/**\n * Standardizes refetch behavior for backoffice list components:\n * - Refetches when list URL state changes (where/sort/count), gated by a stable key.\n * - Exposes a manual refresh callback using the same variables.\n *\n * This hook must not call Relay hooks (`useFragment`, `usePaginationFragment`, ...).\n */\nexport function useBackofficeListRefetch<\n Where,\n Sort extends string,\n Variables extends Record<string, unknown>,\n>({\n refetch,\n variables,\n defaults,\n fetchPolicy,\n buildQueryVariables,\n}: Params<Where, Sort, Variables>): {\n isRefreshing: boolean;\n onRefresh: () => void;\n} {\n const [isRefreshing, setIsRefreshing] = useState(false);\n const requestIdRef = useRef(0);\n const lastRefetchKeyRef = useRef<string | null>(\n stableListVariablesKey({\n where: defaults.where,\n sort: defaults.sort,\n count: defaults.count,\n }),\n );\n\n const resolveVariables = useCallback(\n (input: BackofficeListVariables<Where, Sort>) => {\n return buildQueryVariables(input);\n },\n [buildQueryVariables],\n );\n\n const runRefetch = useCallback(\n (input: BackofficeListVariables<Where, Sort>) => {\n const requestId = requestIdRef.current + 1;\n requestIdRef.current = requestId;\n setIsRefreshing(true);\n\n const nextVariables = resolveVariables({ ...input, cursor: null });\n try {\n startTransition(() => {\n refetch(nextVariables, {\n fetchPolicy,\n onComplete: () => {\n if (requestIdRef.current === requestId) {\n setIsRefreshing(false);\n }\n },\n });\n });\n } catch (error) {\n if (requestIdRef.current === requestId) {\n setIsRefreshing(false);\n }\n throw error;\n }\n },\n [fetchPolicy, refetch, resolveVariables],\n );\n\n useEffect(() => {\n const key = stableListVariablesKey({\n where: variables.where,\n sort: variables.sort,\n count: variables.count,\n });\n if (lastRefetchKeyRef.current === key) {\n return;\n }\n lastRefetchKeyRef.current = key;\n\n runRefetch(variables);\n }, [runRefetch, variables]);\n\n const onRefresh = useCallback(() => {\n runRefetch(variables);\n }, [runRefetch, variables]);\n\n return { isRefreshing, onRefresh };\n}\n"],"mappings":";;;AAqCA,SAAgB,EAId,EACA,YACA,cACA,aACA,gBACA,0BAIA;CACA,IAAM,CAAC,GAAc,KAAmB,EAAS,GAAM,EACjD,IAAe,EAAO,EAAE,EACxB,IAAoB,EACxB,EAAuB;EACrB,OAAO,EAAS;EAChB,MAAM,EAAS;EACf,OAAO,EAAS;EACjB,CAAC,CACH,EAEK,IAAmB,GACtB,MACQ,EAAoB,EAAM,EAEnC,CAAC,EAAoB,CACtB,EAEK,IAAa,GAChB,MAAgD;EAC/C,IAAM,IAAY,EAAa,UAAU;EAEzC,AADA,EAAa,UAAU,GACvB,EAAgB,GAAK;EAErB,IAAM,IAAgB,EAAiB;GAAE,GAAG;GAAO,QAAQ;GAAM,CAAC;EAClE,IAAI;GACF,QAAsB;IACpB,EAAQ,GAAe;KACrB;KACA,kBAAkB;MAChB,AAAI,EAAa,YAAY,KAC3B,EAAgB,GAAM;;KAG3B,CAAC;KACF;WACK,GAAO;GAId,MAHI,EAAa,YAAY,KAC3B,EAAgB,GAAM,EAElB;;IAGV;EAAC;EAAa;EAAS;EAAiB,CACzC;CAoBD,OAlBA,QAAgB;EACd,IAAM,IAAM,EAAuB;GACjC,OAAO,EAAU;GACjB,MAAM,EAAU;GAChB,OAAO,EAAU;GAClB,CAAC;EACE,EAAkB,YAAY,MAGlC,EAAkB,UAAU,GAE5B,EAAW,EAAU;IACpB,CAAC,GAAY,EAAU,CAAC,EAMpB;EAAE;EAAc,WAJL,QAAkB;GAClC,EAAW,EAAU;KACpB,CAAC,GAAY,EAAU,CAEH;EAAW"}
@@ -32,6 +32,6 @@ function o(o) {
32
32
  };
33
33
  }
34
34
  //#endregion
35
- export { o as t };
35
+ export { o as useBackofficeListUrlState };
36
36
 
37
- //# sourceMappingURL=useBackofficeListUrlState-Ca6d7uIN.js.map
37
+ //# sourceMappingURL=useBackofficeListUrlState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBackofficeListUrlState.js","names":[],"sources":["../../../src/hooks/useBackofficeListUrlState.ts"],"sourcesContent":["import { useCallback, useContext, useMemo } from 'react';\nimport { RoutingContext, useLocation } from '@plumile/router';\n\nimport type {\n BackofficeListState,\n BackofficeRuntimeResolvedListFacetConfig,\n} from '@plumile/backoffice-core/types.js';\n\n/** Normalizes a router `location.search` string into URLSearchParams. */\nfunction normalizeSearch(value: string): URLSearchParams {\n if (value.trim() === '') {\n return new URLSearchParams();\n }\n return new URLSearchParams(value);\n}\n\ntype ReturnValue<Where extends Record<string, unknown>, Sort extends string> = {\n state: BackofficeListState<Where, Sort>;\n pushState: (next: BackofficeListState<Where, Sort>) => void;\n};\n\n/** Keeps list state in sync with the URL search params for backoffice pages. */\nexport function useBackofficeListUrlState<\n Where extends Record<string, unknown>,\n Sort extends string,\n>(config: BackofficeRuntimeResolvedListFacetConfig): ReturnValue<Where, Sort> {\n const routing = useContext(RoutingContext);\n const { hash, pathname, search } = useLocation();\n const fallbackState = useMemo(() => {\n return {\n where: null,\n sort: null,\n };\n }, []);\n\n const state = useMemo(() => {\n if (config.listUrlCodec == null) {\n return fallbackState;\n }\n return config.listUrlCodec.parse(\n normalizeSearch(search),\n ) as BackofficeListState<Where, Sort>;\n }, [config.listUrlCodec, fallbackState, search]);\n\n const pushState = useCallback(\n (next: BackofficeListState<Where, Sort>) => {\n if (routing == null) {\n return;\n }\n if (config.listUrlCodec == null) {\n return;\n }\n\n const params = config.listUrlCodec.serialize(next as never);\n const qs = params.toString();\n\n let nextSearch = '';\n if (qs !== '') {\n nextSearch = `?${qs}`;\n }\n\n routing.history.push({\n pathname,\n search: nextSearch,\n hash,\n });\n },\n [config.listUrlCodec, hash, pathname, routing],\n );\n\n return { state, pushState };\n}\n"],"mappings":";;;AASA,SAAS,EAAgB,GAAgC;CAIvD,OAHI,EAAM,MAAM,KAAK,KACZ,IAAI,iBAAiB,GAEvB,IAAI,gBAAgB,EAAM;;AASnC,SAAgB,EAGd,GAA4E;CAC5E,IAAM,IAAU,EAAW,EAAe,EACpC,EAAE,SAAM,aAAU,cAAW,GAAa,EAC1C,IAAgB,SACb;EACL,OAAO;EACP,MAAM;EACP,GACA,EAAE,CAAC;CAqCN,OAAO;EAAE,OAnCK,QACR,EAAO,gBAAgB,OAClB,IAEF,EAAO,aAAa,MACzB,EAAgB,EAAO,CACxB,EACA;GAAC,EAAO;GAAc;GAAe;GAAO,CA4BtC;EAAO,WA1BE,GACf,MAA2C;GAI1C,IAHI,KAAW,QAGX,EAAO,gBAAgB,MACzB;GAIF,IAAM,IADS,EAAO,aAAa,UAAU,EAClC,CAAO,UAAU,EAExB,IAAa;GAKjB,AAJI,MAAO,OACT,IAAa,IAAI,MAGnB,EAAQ,QAAQ,KAAK;IACnB;IACA,QAAQ;IACR;IACD,CAAC;KAEJ;GAAC,EAAO;GAAc;GAAM;GAAU;GAAQ,CAGhC;EAAW"}
@@ -0,0 +1,18 @@
1
+ import { startTransition as e, useCallback as t } from "react";
2
+ //#region src/hooks/useBackofficeLoadMore.ts
3
+ function n({ hasNext: n, isLoadingNext: r, loadNext: i, count: a }) {
4
+ return t(() => {
5
+ !n || r || e(() => {
6
+ i(a);
7
+ });
8
+ }, [
9
+ a,
10
+ n,
11
+ r,
12
+ i
13
+ ]);
14
+ }
15
+ //#endregion
16
+ export { n as useBackofficeLoadMore };
17
+
18
+ //# sourceMappingURL=useBackofficeLoadMore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBackofficeLoadMore.js","names":[],"sources":["../../../src/hooks/useBackofficeLoadMore.ts"],"sourcesContent":["import { startTransition, useCallback } from 'react';\n\ntype Params = {\n hasNext: boolean;\n isLoadingNext: boolean;\n loadNext: (count: number) => void;\n count: number;\n};\n\n/**\n * Wraps Relay `loadNext()` with consistent guards and `startTransition()`.\n */\nexport function useBackofficeLoadMore({\n hasNext,\n isLoadingNext,\n loadNext,\n count,\n}: Params): () => void {\n return useCallback(() => {\n if (!hasNext || isLoadingNext) {\n return;\n }\n\n startTransition(() => {\n loadNext(count);\n });\n }, [count, hasNext, isLoadingNext, loadNext]);\n}\n"],"mappings":";;AAYA,SAAgB,EAAsB,EACpC,YACA,kBACA,aACA,YACqB;CACrB,OAAO,QAAkB;EACnB,CAAC,KAAW,KAIhB,QAAsB;GACpB,EAAS,EAAM;IACf;IACD;EAAC;EAAO;EAAS;EAAe;EAAS,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { useBackofficeConfig as e } from "../provider/BackofficeConfigContext.js";
2
+ import { useBackofficeAuthLogoutConfig as t } from "../provider/useBackofficeLazyValue.js";
3
+ import * as n from "react-relay";
4
+ //#region src/hooks/useBackofficeSessionAuth.ts
5
+ var { useMutation: r } = n, i = (e) => e instanceof Error ? e : /* @__PURE__ */ Error("Logout cleanup failed."), a = () => {
6
+ let { auth: n } = e(), [a, o] = r(t().logoutMutation);
7
+ return {
8
+ logout: async () => new Promise((e, t) => {
9
+ a({
10
+ variables: {},
11
+ onCompleted: () => {
12
+ Promise.resolve(n.lifecycle?.onLogoutSuccess?.()).then(() => {
13
+ e();
14
+ }, (e) => {
15
+ t(i(e));
16
+ });
17
+ },
18
+ onError: (e) => {
19
+ if (e instanceof Error) {
20
+ t(e);
21
+ return;
22
+ }
23
+ t(/* @__PURE__ */ Error("Logout failed."));
24
+ }
25
+ });
26
+ }),
27
+ isLoading: o
28
+ };
29
+ };
30
+ //#endregion
31
+ export { a as default, a as useBackofficeSessionAuth };
32
+
33
+ //# sourceMappingURL=useBackofficeSessionAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBackofficeSessionAuth.js","names":[],"sources":["../../../src/hooks/useBackofficeSessionAuth.ts"],"sourcesContent":["import * as ReactRelay from 'react-relay';\nimport type { MutationParameters } from 'relay-runtime';\n\nimport type { LogoutResponse, LogoutVariables } from './useAuth.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport { useBackofficeAuthLogoutConfig } from '../provider/useBackofficeLazyValue.js';\n\nconst { useMutation } = ReactRelay;\n\nconst toLogoutCleanupError = (error: unknown): Error => {\n if (error instanceof Error) {\n return error;\n }\n return new Error('Logout cleanup failed.');\n};\n\nexport type BackofficeSessionAuth = {\n logout: () => Promise<void>;\n isLoading: boolean;\n};\n\nexport const useBackofficeSessionAuth = (): BackofficeSessionAuth => {\n const { auth: authConfig } = useBackofficeConfig();\n const auth = useBackofficeAuthLogoutConfig();\n\n type LogoutMutation = MutationParameters & {\n response: LogoutResponse;\n variables: LogoutVariables;\n };\n\n const [commitLogout, isLogoutInFlight] = useMutation<LogoutMutation>(\n auth.logoutMutation,\n );\n\n return {\n logout: async () => {\n return new Promise((resolve, reject) => {\n commitLogout({\n variables: {},\n onCompleted: () => {\n Promise.resolve(authConfig.lifecycle?.onLogoutSuccess?.()).then(\n () => {\n resolve();\n },\n (error: unknown) => {\n reject(toLogoutCleanupError(error));\n },\n );\n },\n onError: (error) => {\n if (error instanceof Error) {\n reject(error);\n return;\n }\n reject(new Error('Logout failed.'));\n },\n });\n });\n },\n isLoading: isLogoutInFlight,\n };\n};\n\nexport default useBackofficeSessionAuth;\n"],"mappings":";;;;AAOA,IAAM,EAAE,mBAAgB,GAElB,KAAwB,MACxB,aAAiB,QACZ,IAEF,gBAAI,MAAM,yBAAyB,EAQ/B,UAAwD;CACnE,IAAM,EAAE,MAAM,MAAe,GAAqB,EAQ5C,CAAC,GAAc,KAAoB,EAP5B,GAQX,CAAK,eACN;CAED,OAAO;EACL,QAAQ,YACC,IAAI,SAAS,GAAS,MAAW;GACtC,EAAa;IACX,WAAW,EAAE;IACb,mBAAmB;KACjB,QAAQ,QAAQ,EAAW,WAAW,mBAAmB,CAAC,CAAC,WACnD;MACJ,GAAS;SAEV,MAAmB;MAClB,EAAO,EAAqB,EAAM,CAAC;OAEtC;;IAEH,UAAU,MAAU;KAClB,IAAI,aAAiB,OAAO;MAC1B,EAAO,EAAM;MACb;;KAEF,EAAO,gBAAI,MAAM,iBAAiB,CAAC;;IAEtC,CAAC;IACF;EAEJ,WAAW;EACZ"}
@@ -0,0 +1,89 @@
1
+ import { useCallback as e, useEffect as t, useMemo as n, useState as r } from "react";
2
+ //#region src/hooks/useBackofficeSidebarPins.ts
3
+ var i = "backoffice.sidebar.pins.v1", a = (e) => {
4
+ if (typeof window > "u") return [];
5
+ try {
6
+ let t = window.localStorage.getItem(e);
7
+ if (t == null) return [];
8
+ let n = JSON.parse(t);
9
+ return Array.isArray(n) ? n.filter((e) => typeof e == "string") : [];
10
+ } catch {
11
+ return [];
12
+ }
13
+ }, o = (e, t) => {
14
+ let n = [], r = /* @__PURE__ */ new Set();
15
+ return e.forEach((e) => {
16
+ t.has(e) && (r.has(e) || (r.add(e), n.push(e)));
17
+ }), n;
18
+ }, s = (s) => {
19
+ let { enabled: c = !0, storageKey: l = i, visibleEntityIds: u } = s, d = n(() => new Set(u), [u]), [f, p] = r(() => c ? o(a(l), d) : []);
20
+ t(() => {
21
+ if (!c) {
22
+ p([]);
23
+ return;
24
+ }
25
+ p((e) => {
26
+ let t = o(e, d);
27
+ if (t.length === e.length) {
28
+ let n = !0;
29
+ for (let r = 0; r < t.length; r += 1) if (t[r] !== e[r]) {
30
+ n = !1;
31
+ break;
32
+ }
33
+ if (n) return e;
34
+ }
35
+ return t;
36
+ });
37
+ }, [c, d]), t(() => {
38
+ if (!c) {
39
+ p([]);
40
+ return;
41
+ }
42
+ p(o(a(l), d));
43
+ }, [
44
+ c,
45
+ l,
46
+ d
47
+ ]), t(() => {
48
+ if (!(!c || typeof window > "u")) try {
49
+ window.localStorage.setItem(l, JSON.stringify(f));
50
+ } catch {}
51
+ }, [
52
+ c,
53
+ f,
54
+ l
55
+ ]);
56
+ let m = n(() => new Set(f), [f]), h = e((e) => {
57
+ c && d.has(e) && p((t) => t.includes(e) ? t : [...t, e]);
58
+ }, [c, d]), g = e((e) => {
59
+ c && p((t) => t.filter((t) => t !== e));
60
+ }, [c]), _ = e((e) => {
61
+ m.has(e) ? g(e) : h(e);
62
+ }, [
63
+ h,
64
+ m,
65
+ g
66
+ ]), v = e((e, t) => {
67
+ c && e !== t && p((n) => {
68
+ let r = n.indexOf(e), i = n.indexOf(t);
69
+ if (r === -1 || i === -1 || r === i) return n;
70
+ let a = [...n];
71
+ return a.splice(r, 1), a.splice(i, 0, e), a;
72
+ });
73
+ }, [c]);
74
+ return {
75
+ pins: f,
76
+ isPinned: e((e) => m.has(e), [m]),
77
+ pin: h,
78
+ unpin: g,
79
+ toggle: _,
80
+ reorder: v
81
+ };
82
+ }, c = {
83
+ normalizePins: o,
84
+ readPinsFromStorage: a
85
+ };
86
+ //#endregion
87
+ export { c as __test, s as default, s as useBackofficeSidebarPins };
88
+
89
+ //# sourceMappingURL=useBackofficeSidebarPins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBackofficeSidebarPins.js","names":[],"sources":["../../../src/hooks/useBackofficeSidebarPins.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\nconst DEFAULT_STORAGE_KEY = 'backoffice.sidebar.pins.v1';\n\ntype PinsPayload = unknown;\n\nconst readPinsFromStorage = (storageKey: string): string[] => {\n if (typeof window === 'undefined') {\n return [];\n }\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (raw == null) {\n return [];\n }\n const parsed = JSON.parse(raw) as PinsPayload;\n if (!Array.isArray(parsed)) {\n return [];\n }\n return parsed.filter((entry): entry is string => {\n return typeof entry === 'string';\n });\n } catch {\n return [];\n }\n};\n\nconst normalizePins = (\n pins: readonly string[],\n validIds: Set<string>,\n): string[] => {\n const output: string[] = [];\n const seen = new Set<string>();\n pins.forEach((entry) => {\n if (!validIds.has(entry)) {\n return;\n }\n if (seen.has(entry)) {\n return;\n }\n seen.add(entry);\n output.push(entry);\n });\n return output;\n};\n\nexport type SidebarPinsState = {\n pins: readonly string[];\n isPinned: (id: string) => boolean;\n pin: (id: string) => void;\n unpin: (id: string) => void;\n toggle: (id: string) => void;\n reorder: (fromId: string, toId: string) => void;\n};\n\nexport type UseBackofficeSidebarPinsInput = {\n enabled?: boolean;\n storageKey?: string;\n visibleEntityIds: readonly string[];\n};\n\nexport const useBackofficeSidebarPins = (\n input: UseBackofficeSidebarPinsInput,\n): SidebarPinsState => {\n const {\n enabled = true,\n storageKey = DEFAULT_STORAGE_KEY,\n visibleEntityIds,\n } = input;\n const validIds = useMemo(() => {\n return new Set(visibleEntityIds);\n }, [visibleEntityIds]);\n\n const [pins, setPins] = useState<string[]>(() => {\n if (!enabled) {\n return [];\n }\n const stored = readPinsFromStorage(storageKey);\n return normalizePins(stored, validIds);\n });\n\n useEffect(() => {\n if (!enabled) {\n setPins([]);\n return;\n }\n setPins((prev) => {\n const normalized = normalizePins(prev, validIds);\n if (normalized.length === prev.length) {\n let unchanged = true;\n for (let index = 0; index < normalized.length; index += 1) {\n if (normalized[index] !== prev[index]) {\n unchanged = false;\n break;\n }\n }\n if (unchanged) {\n return prev;\n }\n }\n return normalized;\n });\n }, [enabled, validIds]);\n\n useEffect(() => {\n if (!enabled) {\n setPins([]);\n return;\n }\n const stored = readPinsFromStorage(storageKey);\n setPins(normalizePins(stored, validIds));\n }, [enabled, storageKey, validIds]);\n\n useEffect(() => {\n if (!enabled || typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(pins));\n } catch {\n // Ignore storage errors in non-browser or restricted environments.\n }\n }, [enabled, pins, storageKey]);\n\n const pinsSet = useMemo(() => {\n return new Set(pins);\n }, [pins]);\n\n const pin = useCallback(\n (id: string) => {\n if (!enabled) {\n return;\n }\n if (!validIds.has(id)) {\n return;\n }\n setPins((prev) => {\n if (prev.includes(id)) {\n return prev;\n }\n return [...prev, id];\n });\n },\n [enabled, validIds],\n );\n\n const unpin = useCallback(\n (id: string) => {\n if (!enabled) {\n return;\n }\n setPins((prev) => {\n return prev.filter((entry) => {\n return entry !== id;\n });\n });\n },\n [enabled],\n );\n\n const toggle = useCallback(\n (id: string) => {\n if (pinsSet.has(id)) {\n unpin(id);\n } else {\n pin(id);\n }\n },\n [pin, pinsSet, unpin],\n );\n\n const reorder = useCallback(\n (fromId: string, toId: string) => {\n if (!enabled) {\n return;\n }\n if (fromId === toId) {\n return;\n }\n setPins((prev) => {\n const fromIndex = prev.indexOf(fromId);\n const toIndex = prev.indexOf(toId);\n if (fromIndex === -1 || toIndex === -1) {\n return prev;\n }\n if (fromIndex === toIndex) {\n return prev;\n }\n const next = [...prev];\n next.splice(fromIndex, 1);\n next.splice(toIndex, 0, fromId);\n return next;\n });\n },\n [enabled],\n );\n\n const isPinned = useCallback(\n (id: string) => {\n return pinsSet.has(id);\n },\n [pinsSet],\n );\n\n return {\n pins,\n isPinned,\n pin,\n unpin,\n toggle,\n reorder,\n };\n};\n\nexport const __test = {\n normalizePins,\n readPinsFromStorage,\n};\n\nexport default useBackofficeSidebarPins;\n"],"mappings":";;AAEA,IAAM,IAAsB,8BAItB,KAAuB,MAAiC;CAC5D,IAAI,OAAO,SAAW,KACpB,OAAO,EAAE;CAEX,IAAI;EACF,IAAM,IAAM,OAAO,aAAa,QAAQ,EAAW;EACnD,IAAI,KAAO,MACT,OAAO,EAAE;EAEX,IAAM,IAAS,KAAK,MAAM,EAAI;EAI9B,OAHK,MAAM,QAAQ,EAAO,GAGnB,EAAO,QAAQ,MACb,OAAO,KAAU,SACxB,GAJO,EAAE;SAKL;EACN,OAAO,EAAE;;GAIP,KACJ,GACA,MACa;CACb,IAAM,IAAmB,EAAE,EACrB,oBAAO,IAAI,KAAa;CAW9B,OAVA,EAAK,SAAS,MAAU;EACjB,EAAS,IAAI,EAAM,KAGpB,EAAK,IAAI,EAAM,KAGnB,EAAK,IAAI,EAAM,EACf,EAAO,KAAK,EAAM;GAClB,EACK;GAkBI,KACX,MACqB;CACrB,IAAM,EACJ,aAAU,IACV,gBAAa,GACb,wBACE,GACE,IAAW,QACR,IAAI,IAAI,EAAiB,EAC/B,CAAC,EAAiB,CAAC,EAEhB,CAAC,GAAM,KAAW,QACjB,IAIE,EADQ,EAAoB,EACd,EAAQ,EAAS,GAH7B,EAAE,CAIX;CAkCF,AAhCA,QAAgB;EACd,IAAI,CAAC,GAAS;GACZ,EAAQ,EAAE,CAAC;GACX;;EAEF,GAAS,MAAS;GAChB,IAAM,IAAa,EAAc,GAAM,EAAS;GAChD,IAAI,EAAW,WAAW,EAAK,QAAQ;IACrC,IAAI,IAAY;IAChB,KAAK,IAAI,IAAQ,GAAG,IAAQ,EAAW,QAAQ,KAAS,GACtD,IAAI,EAAW,OAAW,EAAK,IAAQ;KACrC,IAAY;KACZ;;IAGJ,IAAI,GACF,OAAO;;GAGX,OAAO;IACP;IACD,CAAC,GAAS,EAAS,CAAC,EAEvB,QAAgB;EACd,IAAI,CAAC,GAAS;GACZ,EAAQ,EAAE,CAAC;GACX;;EAGF,EAAQ,EADO,EAAoB,EACb,EAAQ,EAAS,CAAC;IACvC;EAAC;EAAS;EAAY;EAAS,CAAC,EAEnC,QAAgB;EACV,OAAC,KAAW,OAAO,SAAW,MAGlC,IAAI;GACF,OAAO,aAAa,QAAQ,GAAY,KAAK,UAAU,EAAK,CAAC;UACvD;IAGP;EAAC;EAAS;EAAM;EAAW,CAAC;CAE/B,IAAM,IAAU,QACP,IAAI,IAAI,EAAK,EACnB,CAAC,EAAK,CAAC,EAEJ,IAAM,GACT,MAAe;EACT,KAGA,EAAS,IAAI,EAAG,IAGrB,GAAS,MACH,EAAK,SAAS,EAAG,GACZ,IAEF,CAAC,GAAG,GAAM,EAAG,CACpB;IAEJ,CAAC,GAAS,EAAS,CACpB,EAEK,IAAQ,GACX,MAAe;EACT,KAGL,GAAS,MACA,EAAK,QAAQ,MACX,MAAU,EACjB,CACF;IAEJ,CAAC,EAAQ,CACV,EAEK,IAAS,GACZ,MAAe;EACd,AAAI,EAAQ,IAAI,EAAG,GACjB,EAAM,EAAG,GAET,EAAI,EAAG;IAGX;EAAC;EAAK;EAAS;EAAM,CACtB,EAEK,IAAU,GACb,GAAgB,MAAiB;EAC3B,KAGD,MAAW,KAGf,GAAS,MAAS;GAChB,IAAM,IAAY,EAAK,QAAQ,EAAO,EAChC,IAAU,EAAK,QAAQ,EAAK;GAIlC,IAHI,MAAc,MAAM,MAAY,MAGhC,MAAc,GAChB,OAAO;GAET,IAAM,IAAO,CAAC,GAAG,EAAK;GAGtB,OAFA,EAAK,OAAO,GAAW,EAAE,EACzB,EAAK,OAAO,GAAS,GAAG,EAAO,EACxB;IACP;IAEJ,CAAC,EAAQ,CACV;CASD,OAAO;EACL;EACA,UATe,GACd,MACQ,EAAQ,IAAI,EAAG,EAExB,CAAC,EAAQ,CAKT;EACA;EACA;EACA;EACA;EACD;GAGU,IAAS;CACpB;CACA;CACD"}
@@ -0,0 +1,63 @@
1
+ import { getRelayTransportSnapshot as e, subscribeRelayTransport as t } from "../relay/environment.js";
2
+ import { useCallback as n, useEffect as r, useMemo as i, useRef as a, useState as o, useSyncExternalStore as s } from "react";
3
+ import * as c from "react-relay";
4
+ //#region src/hooks/useConditionalSubscription.ts
5
+ var l = [];
6
+ function u() {
7
+ return Reflect.get(c, "default") ?? c;
8
+ }
9
+ var d = u();
10
+ function f(c, u) {
11
+ let f = d.useRelayEnvironment(), [p, m] = o(null), [h, g] = o(!1), [_, v] = o(!1), y = s(t, () => e().generation, () => e().generation), { enabled: b = !0, deps: x = l, getVariables: S } = u, C = n(() => {
12
+ try {
13
+ return S == null ? c.variables : S();
14
+ } catch {
15
+ return null;
16
+ }
17
+ }, [c.variables, S]), w = i(() => C(), [C]), T = i(() => {
18
+ if (w == null) return null;
19
+ try {
20
+ return JSON.stringify(w);
21
+ } catch {
22
+ return null;
23
+ }
24
+ }, [w]), E = !!b, D = E && w != null && h && p == null && !_, O = a(null);
25
+ return r(() => {
26
+ let e = null, t = C();
27
+ return E && t != null && (m(null), v(!1), g(!0), e = d.requestSubscription(f, {
28
+ subscription: c.subscription,
29
+ variables: t,
30
+ cacheConfig: c.cacheConfig,
31
+ configs: c.configs,
32
+ onCompleted: () => {
33
+ v(!0), g(!1), c.onCompleted?.();
34
+ },
35
+ onError: (e) => {
36
+ m(e), g(!1), c.onError?.(e);
37
+ },
38
+ onNext: c.onNext,
39
+ updater: c.updater
40
+ }), O.current = e), () => {
41
+ if (g(!1), e != null) try {
42
+ e.dispose();
43
+ } catch {}
44
+ O.current === e && (O.current = null);
45
+ };
46
+ }, [
47
+ c,
48
+ x,
49
+ f,
50
+ E,
51
+ C,
52
+ T,
53
+ y
54
+ ]), {
55
+ active: D,
56
+ completed: _,
57
+ error: p
58
+ };
59
+ }
60
+ //#endregion
61
+ export { f as useConditionalSubscription };
62
+
63
+ //# sourceMappingURL=useConditionalSubscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConditionalSubscription.js","names":[],"sources":["../../../src/hooks/useConditionalSubscription.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport * as ReactRelay from 'react-relay';\nimport type { GraphQLSubscriptionConfig, OperationType } from 'relay-runtime';\n\nimport {\n getRelayTransportSnapshot,\n subscribeRelayTransport,\n} from '../relay/environment.js';\n\ntype ConditionalOptions<T extends OperationType> = {\n enabled: boolean;\n deps?: readonly unknown[];\n getVariables?: () => T['variables'];\n};\n\ntype UseConditionalSubscriptionReturn = {\n active: boolean;\n completed: boolean;\n error: Error | null;\n};\n\ntype Hop = { dispose: () => void } | null;\n\nconst EMPTY_DEPS: readonly unknown[] = [];\n\n/** Resolve the Relay module regardless of whether the package exposes a default export shim. */\nfunction resolveRelayApi(): typeof ReactRelay {\n const relayDefault: unknown = Reflect.get(ReactRelay, 'default');\n if (relayDefault != null) {\n return relayDefault as typeof ReactRelay;\n }\n return ReactRelay;\n}\n\nconst relayApi = resolveRelayApi();\n\n/** Subscribe only when the caller enables the subscription and variables exist. */\nexport function useConditionalSubscription<T extends OperationType>(\n config: GraphQLSubscriptionConfig<T>,\n options: ConditionalOptions<T>,\n): UseConditionalSubscriptionReturn {\n const environment = relayApi.useRelayEnvironment();\n const [error, setError] = useState<Error | null>(null);\n const [isSubscribed, setIsSubscribed] = useState(false);\n const [completed, setCompleted] = useState(false);\n const transportGeneration = useSyncExternalStore(\n subscribeRelayTransport,\n () => {\n return getRelayTransportSnapshot().generation;\n },\n () => {\n return getRelayTransportSnapshot().generation;\n },\n );\n\n const { enabled = true, deps = EMPTY_DEPS, getVariables } = options;\n\n const resolveVariables = useCallback((): T['variables'] | null => {\n try {\n if (getVariables != null) {\n return getVariables();\n }\n return config.variables;\n } catch {\n return null;\n }\n }, [config.variables, getVariables]);\n\n const resolvedVariables = useMemo<T['variables'] | null>(() => {\n return resolveVariables();\n }, [resolveVariables]);\n\n const stableVarsString = useMemo(() => {\n if (resolvedVariables == null) {\n return null;\n }\n try {\n return JSON.stringify(resolvedVariables);\n } catch {\n return null;\n }\n }, [resolvedVariables]);\n\n const isEnabled = Boolean(enabled);\n const variables = resolvedVariables;\n const canSubscribe = isEnabled && variables != null;\n const active = canSubscribe && isSubscribed && error == null && !completed;\n\n const disposableRef = useRef<Hop>(null);\n\n useEffect(() => {\n let disposable: Hop = null;\n const variables = resolveVariables();\n\n if (isEnabled && variables != null) {\n setError(null);\n setCompleted(false);\n setIsSubscribed(true);\n\n disposable = relayApi.requestSubscription<T>(environment, {\n subscription: config.subscription,\n variables,\n cacheConfig: config.cacheConfig,\n configs: config.configs,\n onCompleted: () => {\n setCompleted(true);\n setIsSubscribed(false);\n config.onCompleted?.();\n },\n onError: (nextError) => {\n setError(nextError);\n setIsSubscribed(false);\n config.onError?.(nextError);\n },\n onNext: config.onNext,\n updater: config.updater,\n });\n\n disposableRef.current = disposable;\n }\n\n return () => {\n setIsSubscribed(false);\n if (disposable != null) {\n try {\n disposable.dispose();\n } catch {\n // ignore cleanup failures\n }\n }\n if (disposableRef.current === disposable) {\n disposableRef.current = null;\n }\n };\n }, [\n config,\n deps,\n environment,\n isEnabled,\n resolveVariables,\n stableVarsString,\n transportGeneration,\n ]);\n\n return { active, completed, error };\n}\n"],"mappings":";;;;AA8BA,IAAM,IAAiC,EAAE;AAGzC,SAAS,IAAqC;CAK5C,OAJ8B,QAAQ,IAAI,GAAY,UAClD,IAGG;;AAGT,IAAM,IAAW,GAAiB;AAGlC,SAAgB,EACd,GACA,GACkC;CAClC,IAAM,IAAc,EAAS,qBAAqB,EAC5C,CAAC,GAAO,KAAY,EAAuB,KAAK,EAChD,CAAC,GAAc,KAAmB,EAAS,GAAM,EACjD,CAAC,GAAW,KAAgB,EAAS,GAAM,EAC3C,IAAsB,EAC1B,SAES,GAA2B,CAAC,kBAG5B,GAA2B,CAAC,WAEtC,EAEK,EAAE,aAAU,IAAM,UAAO,GAAY,oBAAiB,GAEtD,IAAmB,QAAyC;EAChE,IAAI;GAIF,OAHI,KAAgB,OAGb,EAAO,YAFL,GAAc;UAGjB;GACN,OAAO;;IAER,CAAC,EAAO,WAAW,EAAa,CAAC,EAE9B,IAAoB,QACjB,GAAkB,EACxB,CAAC,EAAiB,CAAC,EAEhB,IAAmB,QAAc;EACrC,IAAI,KAAqB,MACvB,OAAO;EAET,IAAI;GACF,OAAO,KAAK,UAAU,EAAkB;UAClC;GACN,OAAO;;IAER,CAAC,EAAkB,CAAC,EAEjB,IAAY,EAAQ,GAGpB,IADe,KAAa,KAAa,QAChB,KAAgB,KAAS,QAAQ,CAAC,GAE3D,IAAgB,EAAY,KAAK;CAwDvC,OAtDA,QAAgB;EACd,IAAI,IAAkB,MAChB,IAAY,GAAkB;EA6BpC,OA3BI,KAAa,KAAa,SAC5B,EAAS,KAAK,EACd,EAAa,GAAM,EACnB,EAAgB,GAAK,EAErB,IAAa,EAAS,oBAAuB,GAAa;GACxD,cAAc,EAAO;GACrB;GACA,aAAa,EAAO;GACpB,SAAS,EAAO;GAChB,mBAAmB;IAGjB,AAFA,EAAa,GAAK,EAClB,EAAgB,GAAM,EACtB,EAAO,eAAe;;GAExB,UAAU,MAAc;IAGtB,AAFA,EAAS,EAAU,EACnB,EAAgB,GAAM,EACtB,EAAO,UAAU,EAAU;;GAE7B,QAAQ,EAAO;GACf,SAAS,EAAO;GACjB,CAAC,EAEF,EAAc,UAAU,UAGb;GAEX,IADA,EAAgB,GAAM,EAClB,KAAc,MAChB,IAAI;IACF,EAAW,SAAS;WACd;GAIV,AAAI,EAAc,YAAY,MAC5B,EAAc,UAAU;;IAG3B;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAEK;EAAE;EAAQ;EAAW;EAAO"}
@@ -0,0 +1,31 @@
1
+ import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
2
+ //#region src/hooks/useCopyToClipboard.ts
3
+ var i = "copy-to-clipboard-fallback";
4
+ function a(e) {
5
+ if (typeof document > "u") return;
6
+ let t = document.getElementById(i);
7
+ t ?? (t = document.createElement("textarea"), t.id = i, t.setAttribute("readonly", ""), t.style.position = "absolute", t.style.left = "-9999px", t.style.top = "0", t.style.opacity = "0", document.body.appendChild(t)), t.value = e, t.select(), document.execCommand("copy");
8
+ }
9
+ function o(i = 2e3) {
10
+ let [o, s] = r(null), c = n(null);
11
+ return t(() => () => {
12
+ c.current != null && window.clearTimeout(c.current);
13
+ }, []), {
14
+ copiedKey: o,
15
+ copy: e(async (e, t) => {
16
+ let n = !1, r;
17
+ if (typeof navigator < "u" && (r = navigator.clipboard), r != null) try {
18
+ await r.writeText(e), n = !0;
19
+ } catch {
20
+ n = !1;
21
+ }
22
+ return n ||= (a(e), !0), t != null && (s(t), c.current != null && window.clearTimeout(c.current), c.current = window.setTimeout(() => {
23
+ s(null), c.current = null;
24
+ }, i)), n;
25
+ }, [i])
26
+ };
27
+ }
28
+ //#endregion
29
+ export { o as default, o as useCopyToClipboard };
30
+
31
+ //# sourceMappingURL=useCopyToClipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCopyToClipboard.js","names":[],"sources":["../../../src/hooks/useCopyToClipboard.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nconst FALLBACK_TEXTAREA_ID = 'copy-to-clipboard-fallback';\n\n/** Write to the clipboard via a hidden textarea when the Clipboard API is unavailable. */\nfunction writeWithFallback(value: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n let textarea = document.getElementById(\n FALLBACK_TEXTAREA_ID,\n ) as HTMLTextAreaElement | null;\n\n if (textarea == null) {\n textarea = document.createElement('textarea');\n textarea.id = FALLBACK_TEXTAREA_ID;\n textarea.setAttribute('readonly', '');\n textarea.style.position = 'absolute';\n textarea.style.left = '-9999px';\n textarea.style.top = '0';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n }\n\n textarea.value = value;\n textarea.select();\n document.execCommand('copy');\n}\n\n/** Copy text with best-effort browser fallback and short-lived copied state. */\nexport function useCopyToClipboard(timeoutMs = 2000): {\n copiedKey: string | null;\n copy: (value: string, key?: string) => Promise<boolean>;\n} {\n const [copiedKey, setCopiedKey] = useState<string | null>(null);\n const timeoutRef = useRef<number | null>(null);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current != null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const copy = useCallback(\n async (value: string, key?: string): Promise<boolean> => {\n let succeeded = false;\n\n let clipboard: Clipboard | undefined;\n if (typeof navigator !== 'undefined') {\n clipboard = navigator.clipboard;\n }\n\n if (clipboard != null) {\n try {\n await clipboard.writeText(value);\n succeeded = true;\n } catch {\n succeeded = false;\n }\n }\n\n if (!succeeded) {\n writeWithFallback(value);\n succeeded = true;\n }\n\n if (key != null) {\n setCopiedKey(key);\n if (timeoutRef.current != null) {\n window.clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = window.setTimeout(() => {\n setCopiedKey(null);\n timeoutRef.current = null;\n }, timeoutMs);\n }\n\n return succeeded;\n },\n [timeoutMs],\n );\n\n return { copiedKey, copy };\n}\n\nexport default useCopyToClipboard;\n"],"mappings":";;AAEA,IAAM,IAAuB;AAG7B,SAAS,EAAkB,GAAqB;CAC9C,IAAI,OAAO,WAAa,KACtB;CAGF,IAAI,IAAW,SAAS,eACtB,EACD;CAeD,AAbI,MACF,IAAW,SAAS,cAAc,WAAW,EAC7C,EAAS,KAAK,GACd,EAAS,aAAa,YAAY,GAAG,EACrC,EAAS,MAAM,WAAW,YAC1B,EAAS,MAAM,OAAO,WACtB,EAAS,MAAM,MAAM,KACrB,EAAS,MAAM,UAAU,KACzB,SAAS,KAAK,YAAY,EAAS,GAGrC,EAAS,QAAQ,GACjB,EAAS,QAAQ,EACjB,SAAS,YAAY,OAAO;;AAI9B,SAAgB,EAAmB,IAAY,KAG7C;CACA,IAAM,CAAC,GAAW,KAAgB,EAAwB,KAAK,EACzD,IAAa,EAAsB,KAAK;CAiD9C,OA/CA,cACe;EACX,AAAI,EAAW,WAAW,QACxB,OAAO,aAAa,EAAW,QAAQ;IAG1C,EAAE,CAAC,EAyCC;EAAE;EAAW,MAvCP,EACX,OAAO,GAAe,MAAmC;GACvD,IAAI,IAAY,IAEZ;GAKJ,IAJI,OAAO,YAAc,QACvB,IAAY,UAAU,YAGpB,KAAa,MACf,IAAI;IAEF,AADA,MAAM,EAAU,UAAU,EAAM,EAChC,IAAY;WACN;IACN,IAAY;;GAoBhB,OAhBA,AAEE,OADA,EAAkB,EAAM,EACZ,KAGV,KAAO,SACT,EAAa,EAAI,EACb,EAAW,WAAW,QACxB,OAAO,aAAa,EAAW,QAAQ,EAEzC,EAAW,UAAU,OAAO,iBAAiB;IAE3C,AADA,EAAa,KAAK,EAClB,EAAW,UAAU;MACpB,EAAU,GAGR;KAET,CAAC,EAAU,CAGO;EAAM"}
@@ -0,0 +1,95 @@
1
+ import { startTransition as e, useCallback as t, useEffect as n, useMemo as r, useRef as i, useState as a } from "react";
2
+ //#region src/hooks/useInfiniteConnection.ts
3
+ var o = ({ nodes: o, hasNext: s, isLoadingNext: c, runLoadMore: l, surface: u = "unknown", timeoutMs: d = 15e3, onTelemetry: f, onUiError: p, onError: m }) => {
4
+ let [h, g] = a(null), _ = i(!1), v = i(null), y = i(0), b = t(() => {
5
+ v.current != null && (clearTimeout(v.current), v.current = null);
6
+ }, []);
7
+ n(() => () => {
8
+ b();
9
+ }, [b]);
10
+ let x = t(() => {
11
+ if (!s || c || _.current) return;
12
+ _.current = !0;
13
+ let t = y.current + 1;
14
+ y.current = t, g(null);
15
+ let n = Date.now();
16
+ f?.("list_load_more_requested", {
17
+ surface: u,
18
+ loadedCount: o.length
19
+ }), b(), v.current = setTimeout(() => {
20
+ y.current === t && (y.current = t + 1, _.current = !1, g(/* @__PURE__ */ Error("timeout")), f?.("list_load_more_failed", {
21
+ surface: u,
22
+ durationMs: d
23
+ }), m?.({
24
+ scope: "infinite_scroll_timeout",
25
+ message: "Load more timed out",
26
+ payload: {
27
+ surface: u,
28
+ durationMs: d
29
+ }
30
+ }), p?.("infinite_scroll_timeout", "Load more timed out", {
31
+ surface: u,
32
+ durationMs: d
33
+ }));
34
+ }, d), e(() => {
35
+ l((e) => {
36
+ if (y.current !== t) return;
37
+ y.current = t + 1, _.current = !1, b();
38
+ let r = Date.now() - n;
39
+ if (e != null) {
40
+ g(e), f?.("list_load_more_failed", {
41
+ surface: u,
42
+ durationMs: r
43
+ }), m?.({
44
+ scope: "infinite_scroll",
45
+ message: e.message,
46
+ payload: {
47
+ surface: u,
48
+ durationMs: r
49
+ }
50
+ }), p?.("infinite_scroll", e.message, {
51
+ surface: u,
52
+ durationMs: r
53
+ });
54
+ return;
55
+ }
56
+ f?.("list_load_more_succeeded", {
57
+ surface: u,
58
+ durationMs: r
59
+ });
60
+ });
61
+ });
62
+ }, [
63
+ b,
64
+ s,
65
+ c,
66
+ o.length,
67
+ m,
68
+ f,
69
+ p,
70
+ l,
71
+ u,
72
+ d
73
+ ]), S = t(() => {
74
+ x();
75
+ }, [x]);
76
+ return r(() => ({
77
+ nodes: o,
78
+ hasNext: s,
79
+ isLoadingNext: c,
80
+ incrementalError: h,
81
+ loadMoreSafe: x,
82
+ retryLoadMore: S
83
+ }), [
84
+ o,
85
+ s,
86
+ c,
87
+ h,
88
+ x,
89
+ S
90
+ ]);
91
+ };
92
+ //#endregion
93
+ export { o as default, o as useInfiniteConnection };
94
+
95
+ //# sourceMappingURL=useInfiniteConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInfiniteConnection.js","names":[],"sources":["../../../src/hooks/useInfiniteConnection.ts"],"sourcesContent":["import {\n startTransition,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nexport type LoadMoreRunner = (\n onComplete: (error: Error | null) => void,\n) => void;\n\nexport type InfiniteConnectionTelemetryPayload = {\n surface: string;\n loadedCount?: number;\n durationMs?: number;\n};\n\nexport type InfiniteConnectionTelemetryEvent =\n | 'list_load_more_requested'\n | 'list_load_more_failed'\n | 'list_load_more_succeeded';\n\nexport type InfiniteConnectionErrorEvent = {\n scope: 'infinite_scroll' | 'infinite_scroll_timeout';\n message: string;\n payload: {\n surface: string;\n durationMs: number;\n };\n};\n\nexport type UseInfiniteConnectionParams<TNode> = {\n nodes: readonly TNode[];\n hasNext: boolean;\n isLoadingNext: boolean;\n runLoadMore: LoadMoreRunner;\n surface?: string;\n timeoutMs?: number;\n onTelemetry?: (\n event: InfiniteConnectionTelemetryEvent,\n payload: InfiniteConnectionTelemetryPayload,\n ) => void;\n onUiError?: (\n scope: InfiniteConnectionErrorEvent['scope'],\n message: string,\n payload: InfiniteConnectionErrorEvent['payload'],\n ) => void;\n onError?: (event: InfiniteConnectionErrorEvent) => void;\n};\n\nexport type UseInfiniteConnectionResult<TNode> = {\n nodes: readonly TNode[];\n hasNext: boolean;\n isLoadingNext: boolean;\n incrementalError: Error | null;\n loadMoreSafe: () => void;\n retryLoadMore: () => void;\n};\n\nexport const useInfiniteConnection = <TNode>({\n nodes,\n hasNext,\n isLoadingNext,\n runLoadMore,\n surface = 'unknown',\n timeoutMs = 15_000,\n onTelemetry,\n onUiError,\n onError,\n}: UseInfiniteConnectionParams<TNode>): UseInfiniteConnectionResult<TNode> => {\n const [incrementalError, setIncrementalError] = useState<Error | null>(null);\n const inFlightRef = useRef(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const requestTokenRef = useRef(0);\n\n const clearPendingTimeout = useCallback(() => {\n if (timeoutRef.current == null) {\n return;\n }\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }, []);\n\n useEffect(() => {\n return () => {\n clearPendingTimeout();\n };\n }, [clearPendingTimeout]);\n\n const loadMoreSafe = useCallback(() => {\n if (!hasNext || isLoadingNext || inFlightRef.current) {\n return;\n }\n inFlightRef.current = true;\n const requestToken = requestTokenRef.current + 1;\n requestTokenRef.current = requestToken;\n setIncrementalError(null);\n const startedAt = Date.now();\n onTelemetry?.('list_load_more_requested', {\n surface,\n loadedCount: nodes.length,\n });\n clearPendingTimeout();\n timeoutRef.current = setTimeout(() => {\n if (requestTokenRef.current !== requestToken) {\n return;\n }\n requestTokenRef.current = requestToken + 1;\n inFlightRef.current = false;\n setIncrementalError(new Error('timeout'));\n onTelemetry?.('list_load_more_failed', {\n surface,\n durationMs: timeoutMs,\n });\n onError?.({\n scope: 'infinite_scroll_timeout',\n message: 'Load more timed out',\n payload: {\n surface,\n durationMs: timeoutMs,\n },\n });\n onUiError?.('infinite_scroll_timeout', 'Load more timed out', {\n surface,\n durationMs: timeoutMs,\n });\n }, timeoutMs);\n\n startTransition(() => {\n runLoadMore((error) => {\n if (requestTokenRef.current !== requestToken) {\n return;\n }\n requestTokenRef.current = requestToken + 1;\n inFlightRef.current = false;\n clearPendingTimeout();\n const durationMs = Date.now() - startedAt;\n if (error != null) {\n setIncrementalError(error);\n onTelemetry?.('list_load_more_failed', {\n surface,\n durationMs,\n });\n onError?.({\n scope: 'infinite_scroll',\n message: error.message,\n payload: {\n surface,\n durationMs,\n },\n });\n onUiError?.('infinite_scroll', error.message, {\n surface,\n durationMs,\n });\n return;\n }\n onTelemetry?.('list_load_more_succeeded', {\n surface,\n durationMs,\n });\n });\n });\n }, [\n clearPendingTimeout,\n hasNext,\n isLoadingNext,\n nodes.length,\n onError,\n onTelemetry,\n onUiError,\n runLoadMore,\n surface,\n timeoutMs,\n ]);\n\n const retryLoadMore = useCallback(() => {\n loadMoreSafe();\n }, [loadMoreSafe]);\n\n return useMemo(() => {\n return {\n nodes,\n hasNext,\n isLoadingNext,\n incrementalError,\n loadMoreSafe,\n retryLoadMore,\n };\n }, [\n nodes,\n hasNext,\n isLoadingNext,\n incrementalError,\n loadMoreSafe,\n retryLoadMore,\n ]);\n};\n\nexport default useInfiniteConnection;\n"],"mappings":";;AA6DA,IAAa,KAAgC,EAC3C,UACA,YACA,kBACA,gBACA,aAAU,WACV,eAAY,MACZ,gBACA,cACA,iBAC4E;CAC5E,IAAM,CAAC,GAAkB,KAAuB,EAAuB,KAAK,EACtE,IAAc,EAAO,GAAM,EAC3B,IAAa,EAA6C,KAAK,EAC/D,IAAkB,EAAO,EAAE,EAE3B,IAAsB,QAAkB;EACxC,EAAW,WAAW,SAG1B,aAAa,EAAW,QAAQ,EAChC,EAAW,UAAU;IACpB,EAAE,CAAC;CAEN,cACe;EACX,GAAqB;IAEtB,CAAC,EAAoB,CAAC;CAEzB,IAAM,IAAe,QAAkB;EACrC,IAAI,CAAC,KAAW,KAAiB,EAAY,SAC3C;EAEF,EAAY,UAAU;EACtB,IAAM,IAAe,EAAgB,UAAU;EAE/C,AADA,EAAgB,UAAU,GAC1B,EAAoB,KAAK;EACzB,IAAM,IAAY,KAAK,KAAK;EA+B5B,AA9BA,IAAc,4BAA4B;GACxC;GACA,aAAa,EAAM;GACpB,CAAC,EACF,GAAqB,EACrB,EAAW,UAAU,iBAAiB;GAChC,EAAgB,YAAY,MAGhC,EAAgB,UAAU,IAAe,GACzC,EAAY,UAAU,IACtB,EAAoB,gBAAI,MAAM,UAAU,CAAC,EACzC,IAAc,yBAAyB;IACrC;IACA,YAAY;IACb,CAAC,EACF,IAAU;IACR,OAAO;IACP,SAAS;IACT,SAAS;KACP;KACA,YAAY;KACb;IACF,CAAC,EACF,IAAY,2BAA2B,uBAAuB;IAC5D;IACA,YAAY;IACb,CAAC;KACD,EAAU,EAEb,QAAsB;GACpB,GAAa,MAAU;IACrB,IAAI,EAAgB,YAAY,GAC9B;IAIF,AAFA,EAAgB,UAAU,IAAe,GACzC,EAAY,UAAU,IACtB,GAAqB;IACrB,IAAM,IAAa,KAAK,KAAK,GAAG;IAChC,IAAI,KAAS,MAAM;KAcjB,AAbA,EAAoB,EAAM,EAC1B,IAAc,yBAAyB;MACrC;MACA;MACD,CAAC,EACF,IAAU;MACR,OAAO;MACP,SAAS,EAAM;MACf,SAAS;OACP;OACA;OACD;MACF,CAAC,EACF,IAAY,mBAAmB,EAAM,SAAS;MAC5C;MACA;MACD,CAAC;KACF;;IAEF,IAAc,4BAA4B;KACxC;KACA;KACD,CAAC;KACF;IACF;IACD;EACD;EACA;EACA;EACA,EAAM;EACN;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAEI,IAAgB,QAAkB;EACtC,GAAc;IACb,CAAC,EAAa,CAAC;CAElB,OAAO,SACE;EACL;EACA;EACA;EACA;EACA;EACA;EACD,GACA;EACD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { useCallback as e, useEffect as t, useState as n } from "react";
2
+ //#region src/hooks/useRefetchNeededReload.ts
3
+ function r(r) {
4
+ let [i, a] = n(null);
5
+ return t(() => {
6
+ a(null);
7
+ }, [r]), {
8
+ reason: i,
9
+ onRefetchNeeded: e((e) => {
10
+ a(e ?? "UNKNOWN");
11
+ }, []),
12
+ reload: e(() => {
13
+ window.location.reload();
14
+ }, []),
15
+ clear: e(() => {
16
+ a(null);
17
+ }, [])
18
+ };
19
+ }
20
+ //#endregion
21
+ export { r as useRefetchNeededReload };
22
+
23
+ //# sourceMappingURL=useRefetchNeededReload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRefetchNeededReload.js","names":[],"sources":["../../../src/hooks/useRefetchNeededReload.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\ntype RefetchReason = string;\n\ntype UseRefetchNeededReloadReturn = {\n reason: RefetchReason | null;\n onRefetchNeeded: (reason: RefetchReason | null | undefined) => void;\n reload: () => void;\n clear: () => void;\n};\n\n/** Track refetch-needed interruptions and expose a reload helper. */\nexport function useRefetchNeededReload(\n resetKey: string | null | undefined,\n): UseRefetchNeededReloadReturn {\n const [reason, setReason] = useState<RefetchReason | null>(null);\n\n useEffect(() => {\n setReason(null);\n }, [resetKey]);\n\n const onRefetchNeeded = useCallback(\n (nextReason: RefetchReason | null | undefined) => {\n setReason(nextReason ?? 'UNKNOWN');\n },\n [],\n );\n\n const reload = useCallback(() => {\n window.location.reload();\n }, []);\n\n const clear = useCallback(() => {\n setReason(null);\n }, []);\n\n return { reason, onRefetchNeeded, reload, clear };\n}\n"],"mappings":";;AAYA,SAAgB,EACd,GAC8B;CAC9B,IAAM,CAAC,GAAQ,KAAa,EAA+B,KAAK;CAqBhE,OAnBA,QAAgB;EACd,EAAU,KAAK;IACd,CAAC,EAAS,CAAC,EAiBP;EAAE;EAAQ,iBAfO,GACrB,MAAiD;GAChD,EAAU,KAAc,UAAU;KAEpC,EAAE,CAWa;EAAiB,QARnB,QAAkB;GAC/B,OAAO,SAAS,QAAQ;KACvB,EAAE,CAM6B;EAAQ,OAJ5B,QAAkB;GAC9B,EAAU,KAAK;KACd,EAAE,CAEqC;EAAO"}
@@ -0,0 +1,70 @@
1
+ import { useCallback as e, useEffect as t, useMemo as n, useState as r } from "react";
2
+ //#region src/hooks/useSidebarGroupCollapse.ts
3
+ var i = (e) => {
4
+ if (e == null || typeof window > "u") return null;
5
+ try {
6
+ let t = window.localStorage.getItem(e);
7
+ if (t == null) return null;
8
+ let n = JSON.parse(t);
9
+ if (typeof n != "object" || !n) return null;
10
+ let r = {};
11
+ return Object.entries(n).forEach(([e, t]) => {
12
+ typeof t == "boolean" && (r[e] = t);
13
+ }), r;
14
+ } catch {
15
+ return null;
16
+ }
17
+ }, a = (e, t, n) => {
18
+ let r = {};
19
+ return e.forEach((e) => {
20
+ r[e] = n?.[e] ?? !0;
21
+ }), t != null && e.includes(t) && (r[t] = !1), r;
22
+ }, o = (o) => {
23
+ let { activeGroupId: s, defaultCollapsedByGroupId: c, groupIds: l, persist: u = !1, storageKey: d } = o, f = n(() => [...l], [l]), [p, m] = r(() => {
24
+ if (u) {
25
+ let e = i(d);
26
+ if (e != null) return {
27
+ ...a(f, s, c),
28
+ ...e
29
+ };
30
+ }
31
+ return a(f, s, c);
32
+ });
33
+ return t(() => {
34
+ m((e) => {
35
+ let t = {};
36
+ return f.forEach((n) => {
37
+ t[n] = e[n] ?? c?.[n] ?? !0;
38
+ }), s != null && f.includes(s) && (t[s] = !1), t;
39
+ });
40
+ }, [
41
+ s,
42
+ c,
43
+ f
44
+ ]), t(() => {
45
+ if (!(!u || d == null || typeof window > "u")) try {
46
+ window.localStorage.setItem(d, JSON.stringify(p));
47
+ } catch {}
48
+ }, [
49
+ p,
50
+ u,
51
+ d
52
+ ]), t(() => {
53
+ s != null && m((e) => e[s] === !1 ? e : {
54
+ ...e,
55
+ [s]: !1
56
+ });
57
+ }, [s]), {
58
+ collapsedByGroupId: p,
59
+ setCollapsed: e((e, t) => {
60
+ m((n) => n[e] === t ? n : {
61
+ ...n,
62
+ [e]: t
63
+ });
64
+ }, [])
65
+ };
66
+ };
67
+ //#endregion
68
+ export { o as default, o as useSidebarGroupCollapse };
69
+
70
+ //# sourceMappingURL=useSidebarGroupCollapse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSidebarGroupCollapse.js","names":[],"sources":["../../../src/hooks/useSidebarGroupCollapse.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport type SidebarGroupCollapseState = Record<string, boolean | undefined>;\n\nexport type UseSidebarGroupCollapseInput = {\n groupIds: readonly string[];\n activeGroupId?: string | null;\n defaultCollapsedByGroupId?: Record<string, boolean | undefined>;\n storageKey?: string;\n persist?: boolean;\n};\n\nconst readStoredState = (\n storageKey: string | undefined,\n): SidebarGroupCollapseState | null => {\n if (storageKey == null || typeof window === 'undefined') {\n return null;\n }\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (raw == null) {\n return null;\n }\n const parsed = JSON.parse(raw) as unknown;\n if (parsed == null || typeof parsed !== 'object') {\n return null;\n }\n const output: SidebarGroupCollapseState = {};\n Object.entries(parsed as Record<string, unknown>).forEach(\n ([key, value]) => {\n if (typeof value === 'boolean') {\n output[key] = value;\n }\n },\n );\n return output;\n } catch {\n return null;\n }\n};\n\nconst buildInitialState = (\n groupIds: readonly string[],\n activeGroupId?: string | null,\n defaultCollapsedByGroupId?: Record<string, boolean | undefined>,\n): SidebarGroupCollapseState => {\n const state: SidebarGroupCollapseState = {};\n groupIds.forEach((groupId) => {\n state[groupId] = defaultCollapsedByGroupId?.[groupId] ?? true;\n });\n if (activeGroupId != null && groupIds.includes(activeGroupId)) {\n state[activeGroupId] = false;\n }\n return state;\n};\n\nexport const useSidebarGroupCollapse = (\n input: UseSidebarGroupCollapseInput,\n): {\n collapsedByGroupId: SidebarGroupCollapseState;\n setCollapsed: (groupId: string, collapsed: boolean) => void;\n} => {\n const {\n activeGroupId,\n defaultCollapsedByGroupId,\n groupIds,\n persist = false,\n storageKey,\n } = input;\n\n const groupIdList = useMemo(() => {\n return [...groupIds];\n }, [groupIds]);\n\n const [collapsedByGroupId, setCollapsedByGroupId] =\n useState<SidebarGroupCollapseState>(() => {\n if (persist) {\n const stored = readStoredState(storageKey);\n if (stored != null) {\n return {\n ...buildInitialState(\n groupIdList,\n activeGroupId,\n defaultCollapsedByGroupId,\n ),\n ...stored,\n };\n }\n }\n return buildInitialState(\n groupIdList,\n activeGroupId,\n defaultCollapsedByGroupId,\n );\n });\n\n useEffect(() => {\n setCollapsedByGroupId((prev) => {\n const next: SidebarGroupCollapseState = {};\n\n groupIdList.forEach((groupId) => {\n const existing = prev[groupId];\n next[groupId] =\n existing ?? defaultCollapsedByGroupId?.[groupId] ?? true;\n });\n\n if (activeGroupId != null && groupIdList.includes(activeGroupId)) {\n next[activeGroupId] = false;\n }\n\n return next;\n });\n }, [activeGroupId, defaultCollapsedByGroupId, groupIdList]);\n\n useEffect(() => {\n if (!persist || storageKey == null || typeof window === 'undefined') {\n return;\n }\n try {\n window.localStorage.setItem(\n storageKey,\n JSON.stringify(collapsedByGroupId),\n );\n } catch {\n // Ignore storage quota / privacy mode failures.\n }\n }, [collapsedByGroupId, persist, storageKey]);\n\n useEffect(() => {\n if (activeGroupId == null) {\n return;\n }\n setCollapsedByGroupId((prev) => {\n if (prev[activeGroupId] === false) {\n return prev;\n }\n return {\n ...prev,\n [activeGroupId]: false,\n };\n });\n }, [activeGroupId]);\n\n const setCollapsed = useCallback((groupId: string, collapsed: boolean) => {\n setCollapsedByGroupId((prev) => {\n if (prev[groupId] === collapsed) {\n return prev;\n }\n return {\n ...prev,\n [groupId]: collapsed,\n };\n });\n }, []);\n\n return {\n collapsedByGroupId,\n setCollapsed,\n };\n};\n\nexport default useSidebarGroupCollapse;\n"],"mappings":";;AAYA,IAAM,KACJ,MACqC;CACrC,IAAI,KAAc,QAAQ,OAAO,SAAW,KAC1C,OAAO;CAET,IAAI;EACF,IAAM,IAAM,OAAO,aAAa,QAAQ,EAAW;EACnD,IAAI,KAAO,MACT,OAAO;EAET,IAAM,IAAS,KAAK,MAAM,EAAI;EAC9B,IAAsB,OAAO,KAAW,aAApC,GACF,OAAO;EAET,IAAM,IAAoC,EAAE;EAQ5C,OAPA,OAAO,QAAQ,EAAkC,CAAC,SAC/C,CAAC,GAAK,OAAW;GAChB,AAAI,OAAO,KAAU,cACnB,EAAO,KAAO;IAGnB,EACM;SACD;EACN,OAAO;;GAIL,KACJ,GACA,GACA,MAC8B;CAC9B,IAAM,IAAmC,EAAE;CAO3C,OANA,EAAS,SAAS,MAAY;EAC5B,EAAM,KAAW,IAA4B,MAAY;GACzD,EACE,KAAiB,QAAQ,EAAS,SAAS,EAAc,KAC3D,EAAM,KAAiB,KAElB;GAGI,KACX,MAIG;CACH,IAAM,EACJ,kBACA,8BACA,aACA,aAAU,IACV,kBACE,GAEE,IAAc,QACX,CAAC,GAAG,EAAS,EACnB,CAAC,EAAS,CAAC,EAER,CAAC,GAAoB,KACzB,QAA0C;EACxC,IAAI,GAAS;GACX,IAAM,IAAS,EAAgB,EAAW;GAC1C,IAAI,KAAU,MACZ,OAAO;IACL,GAAG,EACD,GACA,GACA,EACD;IACD,GAAG;IACJ;;EAGL,OAAO,EACL,GACA,GACA,EACD;GACD;CA6DJ,OA3DA,QAAgB;EACd,GAAuB,MAAS;GAC9B,IAAM,IAAkC,EAAE;GAY1C,OAVA,EAAY,SAAS,MAAY;IAE/B,EAAK,KADY,EAAK,MAER,IAA4B,MAAY;KACtD,EAEE,KAAiB,QAAQ,EAAY,SAAS,EAAc,KAC9D,EAAK,KAAiB,KAGjB;IACP;IACD;EAAC;EAAe;EAA2B;EAAY,CAAC,EAE3D,QAAgB;EACV,OAAC,KAAW,KAAc,QAAQ,OAAO,SAAW,MAGxD,IAAI;GACF,OAAO,aAAa,QAClB,GACA,KAAK,UAAU,EAAmB,CACnC;UACK;IAGP;EAAC;EAAoB;EAAS;EAAW,CAAC,EAE7C,QAAgB;EACV,KAAiB,QAGrB,GAAuB,MACjB,EAAK,OAAmB,KACnB,IAEF;GACL,GAAG;IACF,IAAgB;GAClB,CACD;IACD,CAAC,EAAc,CAAC,EAcZ;EACL;EACA,cAdmB,GAAa,GAAiB,MAAuB;GACxE,GAAuB,MACjB,EAAK,OAAa,IACb,IAEF;IACL,GAAG;KACF,IAAU;IACZ,CACD;KACD,EAAE,CAIH;EACD"}