@plumile/backoffice-react 0.1.72 → 0.1.73

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 (390) hide show
  1. package/lib/esm/{auth/pages/AcceptInvitationScreen.js → AcceptInvitationScreen-CNLlSbdx.js} +25 -29
  2. package/lib/esm/AcceptInvitationScreen-CNLlSbdx.js.map +1 -0
  3. package/lib/esm/{auth/login/AuthPanel.js → AuthPanel-ttoH9YxE.js} +7 -7
  4. package/lib/esm/AuthPanel-ttoH9YxE.js.map +1 -0
  5. package/lib/esm/BackofficeAcceptInvitationPage-DRxM1Z-U.js +30 -0
  6. package/lib/esm/BackofficeAcceptInvitationPage-DRxM1Z-U.js.map +1 -0
  7. package/lib/esm/BackofficeDashboardPage-GKyT60qb.js +195 -0
  8. package/lib/esm/BackofficeDashboardPage-GKyT60qb.js.map +1 -0
  9. package/lib/esm/BackofficeDetailPayload-B-qs8Fai.js +94 -0
  10. package/lib/esm/BackofficeDetailPayload-B-qs8Fai.js.map +1 -0
  11. package/lib/esm/{components/backoffice/actions/BackofficeEntityActionFormDialog.js → BackofficeEntityActionFormDialog-FHlW0vys.js} +120 -131
  12. package/lib/esm/BackofficeEntityActionFormDialog-FHlW0vys.js.map +1 -0
  13. package/lib/esm/{pages/detail/BackofficeEntityDetailLayoutContext.js → BackofficeEntityDetailLayoutContext-C_tBqkVq.js} +2 -2
  14. package/lib/esm/BackofficeEntityDetailLayoutContext-C_tBqkVq.js.map +1 -0
  15. package/lib/esm/BackofficeEntityDetailLayoutPage-DXjRqvcZ.js +18 -0
  16. package/lib/esm/BackofficeEntityDetailLayoutPage-DXjRqvcZ.js.map +1 -0
  17. package/lib/esm/BackofficeEntityDetailPage-CdrMXu5a.js +991 -0
  18. package/lib/esm/BackofficeEntityDetailPage-CdrMXu5a.js.map +1 -0
  19. package/lib/esm/{pages/BackofficeEntityDetailUnknownPageRedirect.js → BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js} +3 -3
  20. package/lib/esm/BackofficeEntityDetailUnknownPageRedirect-DRWTeox-.js.map +1 -0
  21. package/lib/esm/BackofficeEntityListPage-BxgqdFpL.js +385 -0
  22. package/lib/esm/BackofficeEntityListPage-BxgqdFpL.js.map +1 -0
  23. package/lib/esm/BackofficeLayoutPage-k9OkLfXb.js +485 -0
  24. package/lib/esm/BackofficeLayoutPage-k9OkLfXb.js.map +1 -0
  25. package/lib/esm/BackofficeLoginPage-C64BcxMw.js +50 -0
  26. package/lib/esm/BackofficeLoginPage-C64BcxMw.js.map +1 -0
  27. package/lib/esm/BackofficePasswordResetCompletePage-BA7kkUxN.js +60 -0
  28. package/lib/esm/BackofficePasswordResetCompletePage-BA7kkUxN.js.map +1 -0
  29. package/lib/esm/{pages/BackofficePasswordResetRequestPage.js → BackofficePasswordResetRequestPage-B9wSZcyn.js} +15 -13
  30. package/lib/esm/BackofficePasswordResetRequestPage-B9wSZcyn.js.map +1 -0
  31. package/lib/esm/BackofficeRightPageLayout-ktdlvTZJ.js +107 -0
  32. package/lib/esm/BackofficeRightPageLayout-ktdlvTZJ.js.map +1 -0
  33. package/lib/esm/{components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js → BackofficeTopbarPortalContext-iD7dm4_h.js} +2 -2
  34. package/lib/esm/BackofficeTopbarPortalContext-iD7dm4_h.js.map +1 -0
  35. package/lib/esm/BackofficeVerifyEmailPage-CAzMqo2K.js +59 -0
  36. package/lib/esm/BackofficeVerifyEmailPage-CAzMqo2K.js.map +1 -0
  37. package/lib/esm/EntityFilterValue-SC_jkj4O.js +77 -0
  38. package/lib/esm/EntityFilterValue-SC_jkj4O.js.map +1 -0
  39. package/lib/esm/EntityIdPickerDialog-FMC5Hx_I.js +308 -0
  40. package/lib/esm/EntityIdPickerDialog-FMC5Hx_I.js.map +1 -0
  41. package/lib/esm/LazyBackofficeEntityActionFormDialog-DOEgoIfT.js +486 -0
  42. package/lib/esm/LazyBackofficeEntityActionFormDialog-DOEgoIfT.js.map +1 -0
  43. package/lib/esm/{auth/pages/PasswordResetCompleteScreen.js → PasswordResetCompleteScreen-C4GQdavL.js} +21 -25
  44. package/lib/esm/PasswordResetCompleteScreen-C4GQdavL.js.map +1 -0
  45. package/lib/esm/{auth/pages/PasswordResetRequestScreen.js → PasswordResetRequestScreen-aUY_yDqM.js} +19 -23
  46. package/lib/esm/PasswordResetRequestScreen-aUY_yDqM.js.map +1 -0
  47. package/lib/esm/VerifyEmailScreen-2DuHJgdY.js +62 -0
  48. package/lib/esm/VerifyEmailScreen-2DuHJgdY.js.map +1 -0
  49. package/lib/esm/backoffice-react.js +1804 -0
  50. package/lib/esm/backoffice-react.js.map +1 -0
  51. package/lib/esm/{router/backofficeAuthPaths.js → backofficeAuthPaths-BiJvoI5Q.js} +2 -2
  52. package/lib/esm/backofficeAuthPaths-BiJvoI5Q.js.map +1 -0
  53. package/lib/esm/{components/backoffice/layout/breadcrumb/buildBreadcrumbs.js → buildBreadcrumbs-CqF9Nh6x.js} +3 -7
  54. package/lib/esm/buildBreadcrumbs-CqF9Nh6x.js.map +1 -0
  55. package/lib/esm/{relay/environment.js → environment-BJeJTbIN.js} +91 -71
  56. package/lib/esm/environment-BJeJTbIN.js.map +1 -0
  57. package/lib/esm/loginPage.css-BDQJNcSr.js +12 -0
  58. package/lib/esm/loginPage.css-BDQJNcSr.js.map +1 -0
  59. package/lib/esm/{relay/mutationResult.js → mutationResult-CcQMY13J.js} +2 -2
  60. package/lib/esm/mutationResult-CcQMY13J.js.map +1 -0
  61. package/lib/esm/{pages/detail/pageResolution.js → pageResolution-hAQA5C6S.js} +2 -2
  62. package/lib/esm/pageResolution-hAQA5C6S.js.map +1 -0
  63. package/lib/esm/{components/backoffice/layout/sidebarUtils.js → sidebarUtils-CuwJ_3mD.js} +2 -12
  64. package/lib/esm/{components/backoffice/layout/sidebarUtils.js.map → sidebarUtils-CuwJ_3mD.js.map} +1 -1
  65. package/lib/esm/{provider/BackofficeConfigContext.js → sprinkles.css.ts.vanilla-n-NK_DwW.js} +2 -2
  66. package/lib/esm/sprinkles.css.ts.vanilla-n-NK_DwW.js.map +1 -0
  67. package/lib/esm/style.css +1 -1
  68. package/lib/esm/synchronizeAuthStatusQuery-lLR0XFew.js +323 -0
  69. package/lib/esm/synchronizeAuthStatusQuery-lLR0XFew.js.map +1 -0
  70. package/lib/esm/{components/backoffice/actions/toastViewAction.js → toastViewAction-BGTS7vqm.js} +2 -2
  71. package/lib/esm/{components/backoffice/actions/toastViewAction.js.map → toastViewAction-BGTS7vqm.js.map} +1 -1
  72. package/lib/esm/useAuth-AczFS-oL.js +543 -0
  73. package/lib/esm/useAuth-AczFS-oL.js.map +1 -0
  74. package/lib/esm/useBackofficeAuth-BHteJQzA.js +89 -0
  75. package/lib/esm/useBackofficeAuth-BHteJQzA.js.map +1 -0
  76. package/lib/esm/{provider/useBackofficeLazyValue.js → useBackofficeLazyValue-B0-ckL6e.js} +7 -15
  77. package/lib/esm/useBackofficeLazyValue-B0-ckL6e.js.map +1 -0
  78. package/lib/esm/{hooks/useBackofficeListUrlState.js → useBackofficeListUrlState-D4fx5O7u.js} +2 -2
  79. package/lib/esm/useBackofficeListUrlState-D4fx5O7u.js.map +1 -0
  80. package/lib/esm/{components/backoffice/errors/BackofficeErrorBoundary.js → useBackofficeReactTranslation-WfXU8kCf.js} +9 -3
  81. package/lib/esm/useBackofficeReactTranslation-WfXU8kCf.js.map +1 -0
  82. package/lib/esm/{relay/useRelayEnvironment.js → useRelayEnvironment-vQ86aW-n.js} +2 -2
  83. package/lib/esm/useRelayEnvironment-vQ86aW-n.js.map +1 -0
  84. package/lib/types/auth/login/EmailCapturePanel.d.ts.map +1 -1
  85. package/lib/types/auth/login/MethodChooser.d.ts.map +1 -1
  86. package/lib/types/auth/login/MfaChallengeForm.d.ts.map +1 -1
  87. package/lib/types/auth/login/PasskeyLoginForm.d.ts.map +1 -1
  88. package/lib/types/auth/login/PasswordLoginPanel.d.ts +1 -1
  89. package/lib/types/auth/login/PasswordLoginPanel.d.ts.map +1 -1
  90. package/lib/types/auth/pages/AcceptInvitationScreen.d.ts.map +1 -1
  91. package/lib/types/auth/pages/PasswordResetCompleteScreen.d.ts.map +1 -1
  92. package/lib/types/auth/pages/PasswordResetRequestScreen.d.ts.map +1 -1
  93. package/lib/types/auth/pages/VerifyEmailScreen.d.ts.map +1 -1
  94. package/lib/types/components/backoffice/detail/BackofficeDetailErrorList.d.ts.map +1 -1
  95. package/lib/types/components/backoffice/detail/BackofficeDetailField.d.ts.map +1 -1
  96. package/lib/types/components/backoffice/filters/BackofficeFilterAction.d.ts.map +1 -1
  97. package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts +1 -1
  98. package/lib/types/components/backoffice/layout/buildSidebarSections.d.ts.map +1 -1
  99. package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts.map +1 -1
  100. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
  101. package/lib/types/filters/filterHelpers.d.ts +1 -1
  102. package/lib/types/filters/filterHelpers.d.ts.map +1 -1
  103. package/lib/types/index.d.ts +5 -0
  104. package/lib/types/index.d.ts.map +1 -1
  105. package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
  106. package/lib/types/provider/BackofficeConfigContext.d.ts +1 -0
  107. package/lib/types/provider/BackofficeConfigContext.d.ts.map +1 -1
  108. package/lib/types/provider/BackofficeProvider.d.ts.map +1 -1
  109. package/lib/types/provider/types.d.ts +2 -0
  110. package/lib/types/provider/types.d.ts.map +1 -1
  111. package/lib/types/relay/environment.d.ts +1 -0
  112. package/lib/types/relay/environment.d.ts.map +1 -1
  113. package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
  114. package/package.json +9 -9
  115. package/lib/esm/auth/login/AuthPanel.js.map +0 -1
  116. package/lib/esm/auth/login/EmailCapturePanel.js +0 -52
  117. package/lib/esm/auth/login/EmailCapturePanel.js.map +0 -1
  118. package/lib/esm/auth/login/LoginFlow.js +0 -130
  119. package/lib/esm/auth/login/LoginFlow.js.map +0 -1
  120. package/lib/esm/auth/login/MethodChooser.js +0 -51
  121. package/lib/esm/auth/login/MethodChooser.js.map +0 -1
  122. package/lib/esm/auth/login/MfaChallengeForm.js +0 -83
  123. package/lib/esm/auth/login/MfaChallengeForm.js.map +0 -1
  124. package/lib/esm/auth/login/OidcButtons.js +0 -29
  125. package/lib/esm/auth/login/OidcButtons.js.map +0 -1
  126. package/lib/esm/auth/login/PasskeyLoginForm.js +0 -84
  127. package/lib/esm/auth/login/PasskeyLoginForm.js.map +0 -1
  128. package/lib/esm/auth/login/PasswordLoginPanel.js +0 -37
  129. package/lib/esm/auth/login/PasswordLoginPanel.js.map +0 -1
  130. package/lib/esm/auth/login/loginPage.css.js +0 -8
  131. package/lib/esm/auth/login/loginPage.css.js.map +0 -1
  132. package/lib/esm/auth/login/synchronizeAuthStatusQuery.js +0 -10
  133. package/lib/esm/auth/login/synchronizeAuthStatusQuery.js.map +0 -1
  134. package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +0 -1
  135. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +0 -1
  136. package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +0 -1
  137. package/lib/esm/auth/pages/VerifyEmailScreen.js +0 -65
  138. package/lib/esm/auth/pages/VerifyEmailScreen.js.map +0 -1
  139. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +0 -1
  140. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js +0 -11
  141. package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js.map +0 -1
  142. package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js +0 -8
  143. package/lib/esm/components/backoffice/actions/backofficeEntityActionFormDialog.css.js.map +0 -1
  144. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js +0 -59
  145. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js.map +0 -1
  146. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js +0 -22
  147. package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +0 -1
  148. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js +0 -41
  149. package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +0 -1
  150. package/lib/esm/components/backoffice/detail/BackofficeDetailField.js +0 -31
  151. package/lib/esm/components/backoffice/detail/BackofficeDetailField.js.map +0 -1
  152. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js +0 -8
  153. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js.map +0 -1
  154. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js +0 -24
  155. package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js.map +0 -1
  156. package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js +0 -20
  157. package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js.map +0 -1
  158. package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js +0 -18
  159. package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js.map +0 -1
  160. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js +0 -49
  161. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js.map +0 -1
  162. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js +0 -11
  163. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js.map +0 -1
  164. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +0 -115
  165. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +0 -1
  166. package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js +0 -33
  167. package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js.map +0 -1
  168. package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js +0 -18
  169. package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js.map +0 -1
  170. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js +0 -8
  171. package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js.map +0 -1
  172. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js +0 -8
  173. package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js.map +0 -1
  174. package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js +0 -15
  175. package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js.map +0 -1
  176. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js +0 -8
  177. package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js.map +0 -1
  178. package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +0 -8
  179. package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js.map +0 -1
  180. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js +0 -8
  181. package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js.map +0 -1
  182. package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js +0 -8
  183. package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js.map +0 -1
  184. package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js +0 -8
  185. package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js.map +0 -1
  186. package/lib/esm/components/backoffice/detail/detailPayloadUtils.js +0 -17
  187. package/lib/esm/components/backoffice/detail/detailPayloadUtils.js.map +0 -1
  188. package/lib/esm/components/backoffice/errors/BackofficeErrorBoundary.js.map +0 -1
  189. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js +0 -43
  190. package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +0 -1
  191. package/lib/esm/components/backoffice/filters/EntityFilterValue.js +0 -46
  192. package/lib/esm/components/backoffice/filters/EntityFilterValue.js.map +0 -1
  193. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +0 -51
  194. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +0 -1
  195. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +0 -8
  196. package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js.map +0 -1
  197. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +0 -8
  198. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js.map +0 -1
  199. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +0 -8
  200. package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js.map +0 -1
  201. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js +0 -10
  202. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js.map +0 -1
  203. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +0 -38
  204. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +0 -1
  205. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js +0 -12
  206. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js.map +0 -1
  207. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js.map +0 -1
  208. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js +0 -16
  209. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js.map +0 -1
  210. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +0 -8
  211. package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js.map +0 -1
  212. package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js.map +0 -1
  213. package/lib/esm/components/backoffice/layout/breadcrumb/types.js +0 -0
  214. package/lib/esm/components/backoffice/layout/buildSidebarSections.js +0 -183
  215. package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +0 -1
  216. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js +0 -18
  217. package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +0 -1
  218. package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +0 -7
  219. package/lib/esm/components/backoffice/list/RowFlagsCell.css.js.map +0 -1
  220. package/lib/esm/components/backoffice/list/RowFlagsCell.js +0 -37
  221. package/lib/esm/components/backoffice/list/RowFlagsCell.js.map +0 -1
  222. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js +0 -31
  223. package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js.map +0 -1
  224. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js +0 -8
  225. package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js.map +0 -1
  226. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +0 -106
  227. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +0 -1
  228. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +0 -8
  229. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +0 -1
  230. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js +0 -23
  231. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js.map +0 -1
  232. package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js +0 -23
  233. package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js.map +0 -1
  234. package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js +0 -24
  235. package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js.map +0 -1
  236. package/lib/esm/components/backoffice/pickers/types.js +0 -0
  237. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js +0 -35
  238. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js.map +0 -1
  239. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +0 -54
  240. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +0 -1
  241. package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js +0 -8
  242. package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js.map +0 -1
  243. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js +0 -8
  244. package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js.map +0 -1
  245. package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js +0 -24
  246. package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js.map +0 -1
  247. package/lib/esm/components/backoffice/routing/BackofficeContentError.js +0 -38
  248. package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +0 -1
  249. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js +0 -47
  250. package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js.map +0 -1
  251. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js +0 -22
  252. package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js.map +0 -1
  253. package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js +0 -12
  254. package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js.map +0 -1
  255. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js +0 -8
  256. package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js.map +0 -1
  257. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js +0 -8
  258. package/lib/esm/components/backoffice/routing/backofficeContentError.css.js.map +0 -1
  259. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js +0 -8
  260. package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js.map +0 -1
  261. package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js +0 -8
  262. package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js.map +0 -1
  263. package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js +0 -8
  264. package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js.map +0 -1
  265. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js +0 -11
  266. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js.map +0 -1
  267. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +0 -438
  268. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +0 -1
  269. package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js +0 -40
  270. package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js.map +0 -1
  271. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js +0 -24
  272. package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +0 -1
  273. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js +0 -8
  274. package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js.map +0 -1
  275. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js +0 -8
  276. package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js.map +0 -1
  277. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js +0 -12
  278. package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js.map +0 -1
  279. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js +0 -8
  280. package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js.map +0 -1
  281. package/lib/esm/filters/filterHelpers.js +0 -36
  282. package/lib/esm/filters/filterHelpers.js.map +0 -1
  283. package/lib/esm/hooks/useAuth.js +0 -439
  284. package/lib/esm/hooks/useAuth.js.map +0 -1
  285. package/lib/esm/hooks/useBackofficeAuth.js +0 -89
  286. package/lib/esm/hooks/useBackofficeAuth.js.map +0 -1
  287. package/lib/esm/hooks/useBackofficeListRefetch.js +0 -40
  288. package/lib/esm/hooks/useBackofficeListRefetch.js.map +0 -1
  289. package/lib/esm/hooks/useBackofficeListUrlState.js.map +0 -1
  290. package/lib/esm/hooks/useBackofficeLoadMore.js +0 -18
  291. package/lib/esm/hooks/useBackofficeLoadMore.js.map +0 -1
  292. package/lib/esm/hooks/useBackofficeSessionAuth.js +0 -28
  293. package/lib/esm/hooks/useBackofficeSessionAuth.js.map +0 -1
  294. package/lib/esm/hooks/useBackofficeSidebarPins.js +0 -70
  295. package/lib/esm/hooks/useBackofficeSidebarPins.js.map +0 -1
  296. package/lib/esm/hooks/useConditionalSubscription.js +0 -57
  297. package/lib/esm/hooks/useConditionalSubscription.js.map +0 -1
  298. package/lib/esm/hooks/useCopyToClipboard.js +0 -31
  299. package/lib/esm/hooks/useCopyToClipboard.js.map +0 -1
  300. package/lib/esm/hooks/useRefetchNeededReload.js +0 -23
  301. package/lib/esm/hooks/useRefetchNeededReload.js.map +0 -1
  302. package/lib/esm/hooks/useSidebarGroupCollapse.js +0 -35
  303. package/lib/esm/hooks/useSidebarGroupCollapse.js.map +0 -1
  304. package/lib/esm/i18n/createI18nInstance.js +0 -62
  305. package/lib/esm/i18n/createI18nInstance.js.map +0 -1
  306. package/lib/esm/i18n/locales/en/backofficeReact.js +0 -249
  307. package/lib/esm/i18n/locales/en/backofficeReact.js.map +0 -1
  308. package/lib/esm/i18n/locales/en/shared.js +0 -201
  309. package/lib/esm/i18n/locales/en/shared.js.map +0 -1
  310. package/lib/esm/i18n/locales/fr/backofficeReact.js +0 -251
  311. package/lib/esm/i18n/locales/fr/backofficeReact.js.map +0 -1
  312. package/lib/esm/i18n/locales/fr/shared.js +0 -201
  313. package/lib/esm/i18n/locales/fr/shared.js.map +0 -1
  314. package/lib/esm/i18n/mergeResourceLanguages.js +0 -19
  315. package/lib/esm/i18n/mergeResourceLanguages.js.map +0 -1
  316. package/lib/esm/i18n/resources.js +0 -19
  317. package/lib/esm/i18n/resources.js.map +0 -1
  318. package/lib/esm/i18n/useBackofficeFormats.js +0 -23
  319. package/lib/esm/i18n/useBackofficeFormats.js.map +0 -1
  320. package/lib/esm/i18n/useBackofficeReactTranslation.js +0 -9
  321. package/lib/esm/i18n/useBackofficeReactTranslation.js.map +0 -1
  322. package/lib/esm/i18n/useReviewStatusLabel.js +0 -19
  323. package/lib/esm/i18n/useReviewStatusLabel.js.map +0 -1
  324. package/lib/esm/i18n/useSharedTranslation.js +0 -9
  325. package/lib/esm/i18n/useSharedTranslation.js.map +0 -1
  326. package/lib/esm/index.js +0 -37
  327. package/lib/esm/modules/base64.js +0 -23
  328. package/lib/esm/modules/base64.js.map +0 -1
  329. package/lib/esm/modules/formatFileSize.js +0 -28
  330. package/lib/esm/modules/formatFileSize.js.map +0 -1
  331. package/lib/esm/modules/sharedSchemaTypes.js +0 -0
  332. package/lib/esm/modules/webauthn.js +0 -33
  333. package/lib/esm/modules/webauthn.js.map +0 -1
  334. package/lib/esm/pages/BackofficeAcceptInvitationPage.js +0 -24
  335. package/lib/esm/pages/BackofficeAcceptInvitationPage.js.map +0 -1
  336. package/lib/esm/pages/BackofficeDashboardPage.js +0 -197
  337. package/lib/esm/pages/BackofficeDashboardPage.js.map +0 -1
  338. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +0 -18
  339. package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +0 -1
  340. package/lib/esm/pages/BackofficeEntityDetailPage.js +0 -837
  341. package/lib/esm/pages/BackofficeEntityDetailPage.js.map +0 -1
  342. package/lib/esm/pages/BackofficeEntityDetailUnknownPageRedirect.js.map +0 -1
  343. package/lib/esm/pages/BackofficeEntityListPage.js +0 -363
  344. package/lib/esm/pages/BackofficeEntityListPage.js.map +0 -1
  345. package/lib/esm/pages/BackofficeLayoutPage.js +0 -137
  346. package/lib/esm/pages/BackofficeLayoutPage.js.map +0 -1
  347. package/lib/esm/pages/BackofficeLoginPage.js +0 -46
  348. package/lib/esm/pages/BackofficeLoginPage.js.map +0 -1
  349. package/lib/esm/pages/BackofficePasswordResetCompletePage.js +0 -59
  350. package/lib/esm/pages/BackofficePasswordResetCompletePage.js.map +0 -1
  351. package/lib/esm/pages/BackofficePasswordResetRequestPage.js.map +0 -1
  352. package/lib/esm/pages/BackofficeVerifyEmailPage.js +0 -59
  353. package/lib/esm/pages/BackofficeVerifyEmailPage.js.map +0 -1
  354. package/lib/esm/pages/backofficeDashboardPage.css.js +0 -8
  355. package/lib/esm/pages/backofficeDashboardPage.css.js.map +0 -1
  356. package/lib/esm/pages/backofficeEntityDetailPage.css.js +0 -8
  357. package/lib/esm/pages/backofficeEntityDetailPage.css.js.map +0 -1
  358. package/lib/esm/pages/backofficeEntityListPage.css.js +0 -8
  359. package/lib/esm/pages/backofficeEntityListPage.css.js.map +0 -1
  360. package/lib/esm/pages/detail/BackofficeEntityDetailLayoutContext.js.map +0 -1
  361. package/lib/esm/pages/detail/buildTabsItems.js +0 -10
  362. package/lib/esm/pages/detail/buildTabsItems.js.map +0 -1
  363. package/lib/esm/pages/detail/pageResolution.js.map +0 -1
  364. package/lib/esm/provider/BackofficeConfigContext.js.map +0 -1
  365. package/lib/esm/provider/BackofficeProvider.js +0 -152
  366. package/lib/esm/provider/BackofficeProvider.js.map +0 -1
  367. package/lib/esm/provider/entityRegistry.js +0 -91
  368. package/lib/esm/provider/entityRegistry.js.map +0 -1
  369. package/lib/esm/provider/lazyValue.js +0 -14
  370. package/lib/esm/provider/lazyValue.js.map +0 -1
  371. package/lib/esm/provider/types.js +0 -0
  372. package/lib/esm/provider/useBackofficeEntityLoader.js +0 -137
  373. package/lib/esm/provider/useBackofficeEntityLoader.js.map +0 -1
  374. package/lib/esm/provider/useBackofficeLazyValue.js.map +0 -1
  375. package/lib/esm/relay/RelayProvider.js +0 -12
  376. package/lib/esm/relay/RelayProvider.js.map +0 -1
  377. package/lib/esm/relay/createInlineDataReader.js +0 -2
  378. package/lib/esm/relay/createInlineReader.js +0 -7
  379. package/lib/esm/relay/createInlineReader.js.map +0 -1
  380. package/lib/esm/relay/envHelpers.js +0 -46
  381. package/lib/esm/relay/envHelpers.js.map +0 -1
  382. package/lib/esm/relay/environment.js.map +0 -1
  383. package/lib/esm/relay/identityView.js +0 -6
  384. package/lib/esm/relay/identityView.js.map +0 -1
  385. package/lib/esm/relay/mutationResult.js.map +0 -1
  386. package/lib/esm/relay/useRelayEnvironment.js.map +0 -1
  387. package/lib/esm/router/backofficeAuthPaths.js.map +0 -1
  388. package/lib/esm/router/createBackofficeRoutes.js +0 -273
  389. package/lib/esm/router/createBackofficeRoutes.js.map +0 -1
  390. package/lib/esm/style.js +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"useBackofficeAuth.js","names":[],"sources":["../../../src/hooks/useBackofficeAuth.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\nimport * as ReactRelay from 'react-relay';\nimport type { GraphQLTaggedNode, PayloadError } from 'relay-runtime';\n\nimport {\n createUseAuth,\n type UseAuthReturn,\n type AcceptInvitationResponse,\n type AcceptInvitationVariables,\n type BeginAuthenticationResponse,\n type BeginAuthenticationVariables,\n type BeginPasskeyLoginResponse,\n type BeginPasskeyLoginVariables,\n type CompleteMfaResponse,\n type CompleteMfaVariables,\n type FinishPasskeyLoginResponse,\n type FinishPasskeyLoginVariables,\n type LoginResponse,\n type LoginVariables,\n type LogoutResponse,\n type LogoutVariables,\n} from './useAuth.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport type { BackofficeLazyValue } from '../provider/lazyValue.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\n\nconst { commitMutation } = ReactRelay;\n\ntype MutationCommitConfig<TVariables, TResponse> = {\n variables: TVariables;\n onCompleted?: (\n response: TResponse,\n errors: readonly PayloadError[] | null,\n ) => void;\n onError?: (error: Error) => void;\n};\n\nconst toMutationLoadError = (error: unknown): Error => {\n if (error instanceof Error) {\n return error;\n }\n return new Error('Unable to load auth mutation.');\n};\n\nconst useDeferredMutation = <TVariables extends object, TResponse>(\n loadMutation: () => Promise<GraphQLTaggedNode | null>,\n) => {\n const relayEnvironment = useRelayEnvironment();\n const [inFlightCount, setInFlightCount] = useState(0);\n\n const commit = useCallback(\n (config: MutationCommitConfig<TVariables, TResponse>) => {\n setInFlightCount((count) => {\n return count + 1;\n });\n\n const finish = () => {\n setInFlightCount((count) => {\n return Math.max(0, count - 1);\n });\n };\n\n loadMutation()\n .then((mutation) => {\n if (mutation == null) {\n throw new Error('Missing auth mutation config.');\n }\n\n commitMutation(relayEnvironment, {\n mutation,\n variables: config.variables,\n onCompleted: (response, errors) => {\n finish();\n config.onCompleted?.(response as TResponse, errors ?? null);\n },\n onError: (error) => {\n finish();\n config.onError?.(error);\n },\n });\n })\n .catch((error: unknown) => {\n finish();\n config.onError?.(toMutationLoadError(error));\n });\n },\n [loadMutation, relayEnvironment],\n );\n\n return {\n commit,\n isInFlight: inFlightCount > 0,\n };\n};\n\nconst loadOptionalMutation = async <TConfig>(\n eagerMutation: GraphQLTaggedNode | null | undefined,\n lazyConfig: BackofficeLazyValue<TConfig> | null | undefined,\n selectMutation: (config: TConfig) => GraphQLTaggedNode,\n): Promise<GraphQLTaggedNode | null> => {\n if (eagerMutation != null) {\n return eagerMutation;\n }\n if (lazyConfig == null) {\n return null;\n }\n const loadedConfig = await lazyConfig.load();\n return selectMutation(loadedConfig);\n};\n\n/**\n * Provides auth actions/state backed by Relay mutations from BackofficeProvider.\n */\nexport function useBackofficeAuth(): UseAuthReturn {\n const { auth: authConfig } = useBackofficeConfig();\n const { commit: commitLogin, isInFlight: isLoginInFlight } =\n useDeferredMutation<LoginVariables, LoginResponse>(\n useCallback(async () => {\n const loginConfig = authConfig.login.get();\n return loadOptionalMutation(\n loginConfig?.loginMutation,\n authConfig.login,\n (config) => {\n return config.loginMutation;\n },\n );\n }, [authConfig.login]),\n );\n const { commit: commitLogout, isInFlight: isLogoutInFlight } =\n useDeferredMutation<LogoutVariables, LogoutResponse>(\n useCallback(async () => {\n const logoutConfig = await authConfig.logout.load();\n return logoutConfig.logoutMutation;\n }, [authConfig.logout]),\n );\n const { commit: commitCompleteMfa, isInFlight: isCompleteMfaInFlight } =\n useDeferredMutation<CompleteMfaVariables, CompleteMfaResponse>(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.completeMfaMutation,\n authConfig.completeMfa,\n (config) => {\n return config.completeMfaMutation;\n },\n );\n }, [authConfig.completeMfa, authConfig.login]),\n );\n const {\n commit: commitBeginPasskeyLogin,\n isInFlight: isBeginPasskeyLoginInFlight,\n } = useDeferredMutation<\n BeginPasskeyLoginVariables,\n BeginPasskeyLoginResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.beginPasskeyLoginMutation,\n authConfig.passkeyLogin,\n (config) => {\n return config.beginPasskeyLoginMutation;\n },\n );\n }, [authConfig.login, authConfig.passkeyLogin]),\n );\n const {\n commit: commitFinishPasskeyLogin,\n isInFlight: isFinishPasskeyLoginInFlight,\n } = useDeferredMutation<\n FinishPasskeyLoginVariables,\n FinishPasskeyLoginResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.finishPasskeyLoginMutation,\n authConfig.passkeyLogin,\n (config) => {\n return config.finishPasskeyLoginMutation;\n },\n );\n }, [authConfig.login, authConfig.passkeyLogin]),\n );\n const {\n commit: commitBeginAuthentication,\n isInFlight: isBeginAuthenticationInFlight,\n } = useDeferredMutation<\n BeginAuthenticationVariables,\n BeginAuthenticationResponse\n >(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.beginAuthenticationMutation,\n authConfig.authentication,\n (config) => {\n return config.beginAuthenticationMutation;\n },\n );\n }, [authConfig.authentication, authConfig.login]),\n );\n const {\n commit: commitAcceptInvitation,\n isInFlight: isAcceptInvitationInFlight,\n } = useDeferredMutation<AcceptInvitationVariables, AcceptInvitationResponse>(\n useCallback(async () => {\n return loadOptionalMutation(\n authConfig.login.get()?.acceptInvitationMutation,\n authConfig.acceptInvitation,\n (config) => {\n return config.acceptInvitationMutation;\n },\n );\n }, [authConfig.acceptInvitation, authConfig.login]),\n );\n const hasAcceptInvitationMutation =\n authConfig.login.get()?.acceptInvitationMutation != null ||\n authConfig.acceptInvitation != null;\n\n const useAuthWithMutations = useMemo(() => {\n let acceptInvitation:\n | {\n commit: typeof commitAcceptInvitation;\n isInFlight: boolean;\n }\n | undefined;\n if (hasAcceptInvitationMutation) {\n acceptInvitation = {\n commit: commitAcceptInvitation,\n isInFlight: isAcceptInvitationInFlight,\n };\n }\n return createUseAuth({\n login: { commit: commitLogin, isInFlight: isLoginInFlight },\n logout: { commit: commitLogout, isInFlight: isLogoutInFlight },\n completeMfa: {\n commit: commitCompleteMfa,\n isInFlight: isCompleteMfaInFlight,\n },\n beginPasskeyLogin: {\n commit: commitBeginPasskeyLogin,\n isInFlight: isBeginPasskeyLoginInFlight,\n },\n finishPasskeyLogin: {\n commit: commitFinishPasskeyLogin,\n isInFlight: isFinishPasskeyLoginInFlight,\n },\n beginAuthentication: {\n commit: commitBeginAuthentication,\n isInFlight: isBeginAuthenticationInFlight,\n },\n acceptInvitation,\n });\n }, [\n commitAcceptInvitation,\n commitBeginAuthentication,\n commitBeginPasskeyLogin,\n commitCompleteMfa,\n commitFinishPasskeyLogin,\n commitLogin,\n commitLogout,\n hasAcceptInvitationMutation,\n isAcceptInvitationInFlight,\n isBeginAuthenticationInFlight,\n isBeginPasskeyLoginInFlight,\n isCompleteMfaInFlight,\n isFinishPasskeyLoginInFlight,\n isLoginInFlight,\n isLogoutInFlight,\n ]);\n\n return useAuthWithMutations();\n}\n"],"mappings":";;;;;;AA0BA,IAAM,EAAE,gBAAA,MAAmB,GAWrB,KAAuB,MACvB,aAAiB,QACZ,IAEF,gBAAI,MAAM,gCAAgC,EAG7C,KACJ,MACG;CACH,IAAM,IAAmB,GAAqB,EACxC,CAAC,GAAe,KAAoB,EAAS,EAAE;AAyCrD,QAAO;EACL,QAxCa,GACZ,MAAwD;AACvD,MAAkB,MACT,IAAQ,EACf;GAEF,IAAM,UAAe;AACnB,OAAkB,MACT,KAAK,IAAI,GAAG,IAAQ,EAAE,CAC7B;;AAGJ,MAAc,CACX,MAAM,MAAa;AAClB,QAAI,KAAY,KACd,OAAU,MAAM,gCAAgC;AAGlD,MAAe,GAAkB;KAC/B;KACA,WAAW,EAAO;KAClB,cAAc,GAAU,MAAW;AAEjC,MADA,GAAQ,EACR,EAAO,cAAc,GAAuB,KAAU,KAAK;;KAE7D,UAAU,MAAU;AAElB,MADA,GAAQ,EACR,EAAO,UAAU,EAAM;;KAE1B,CAAC;KACF,CACD,OAAO,MAAmB;AAEzB,IADA,GAAQ,EACR,EAAO,UAAU,EAAoB,EAAM,CAAC;KAC5C;KAEN,CAAC,GAAc,EAAiB,CACjC;EAIC,YAAY,IAAgB;EAC7B;GAGG,IAAuB,OAC3B,GACA,GACA,MAEI,MAGA,KAAc,OACT,OAGF,EADc,MAAM,EAAW,MAAM,CACT;AAMrC,SAAgB,IAAmC;CACjD,IAAM,EAAE,MAAM,MAAe,GAAqB,EAC5C,EAAE,QAAQ,GAAa,YAAY,MACvC,EACE,EAAY,YAEH,EADa,EAAW,MAAM,KAAK,EAE3B,eACb,EAAW,QACV,MACQ,EAAO,cAEjB,EACA,CAAC,EAAW,MAAM,CAAC,CACvB,EACG,EAAE,QAAQ,GAAc,YAAY,MACxC,EACE,EAAY,aACW,MAAM,EAAW,OAAO,MAAM,EAC/B,gBACnB,CAAC,EAAW,OAAO,CAAC,CACxB,EACG,EAAE,QAAQ,GAAmB,YAAY,MAC7C,EACE,EAAY,YACH,EACL,EAAW,MAAM,KAAK,EAAE,qBACxB,EAAW,cACV,MACQ,EAAO,oBAEjB,EACA,CAAC,EAAW,aAAa,EAAW,MAAM,CAAC,CAC/C,EACG,EACJ,QAAQ,GACR,YAAY,MACV,EAIF,EAAY,YACH,EACL,EAAW,MAAM,KAAK,EAAE,2BACxB,EAAW,eACV,MACQ,EAAO,0BAEjB,EACA,CAAC,EAAW,OAAO,EAAW,aAAa,CAAC,CAChD,EACK,EACJ,QAAQ,GACR,YAAY,MACV,EAIF,EAAY,YACH,EACL,EAAW,MAAM,KAAK,EAAE,4BACxB,EAAW,eACV,MACQ,EAAO,2BAEjB,EACA,CAAC,EAAW,OAAO,EAAW,aAAa,CAAC,CAChD,EACK,EACJ,QAAQ,GACR,YAAY,MACV,EAIF,EAAY,YACH,EACL,EAAW,MAAM,KAAK,EAAE,6BACxB,EAAW,iBACV,MACQ,EAAO,4BAEjB,EACA,CAAC,EAAW,gBAAgB,EAAW,MAAM,CAAC,CAClD,EACK,EACJ,QAAQ,GACR,YAAY,MACV,EACF,EAAY,YACH,EACL,EAAW,MAAM,KAAK,EAAE,0BACxB,EAAW,mBACV,MACQ,EAAO,yBAEjB,EACA,CAAC,EAAW,kBAAkB,EAAW,MAAM,CAAC,CACpD,EACK,IACJ,EAAW,MAAM,KAAK,EAAE,4BAA4B,QACpD,EAAW,oBAAoB;AAsDjC,QApD6B,QAAc;EACzC,IAAI;AAYJ,SANI,MACF,IAAmB;GACjB,QAAQ;GACR,YAAY;GACb,GAEI,EAAc;GACnB,OAAO;IAAE,QAAQ;IAAa,YAAY;IAAiB;GAC3D,QAAQ;IAAE,QAAQ;IAAc,YAAY;IAAkB;GAC9D,aAAa;IACX,QAAQ;IACR,YAAY;IACb;GACD,mBAAmB;IACjB,QAAQ;IACR,YAAY;IACb;GACD,oBAAoB;IAClB,QAAQ;IACR,YAAY;IACb;GACD,qBAAqB;IACnB,QAAQ;IACR,YAAY;IACb;GACD;GACD,CAAC;IACD;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAE2B"}
@@ -1,40 +0,0 @@
1
- import { useCallback as e, useEffect as t, useRef as n } from "react";
2
- import { stableListVariablesKey as r } from "@plumile/backoffice-core/state/stableKey.js";
3
- //#region src/hooks/useBackofficeListRefetch.ts
4
- function i({ refetch: i, variables: a, defaults: o, fetchPolicy: s, buildVariables: c }) {
5
- let l = n(r({
6
- where: o.where,
7
- sort: o.sort,
8
- count: o.count
9
- })), u = e((e) => c == null ? e : c(e), [c]);
10
- return t(() => {
11
- let e = r({
12
- where: a.where,
13
- sort: a.sort,
14
- count: a.count
15
- });
16
- l.current !== e && (l.current = e, i(u({
17
- ...a,
18
- cursor: null
19
- }), { fetchPolicy: s }));
20
- }, [
21
- s,
22
- i,
23
- u,
24
- a
25
- ]), { onRefresh: e(() => {
26
- i(u({
27
- ...a,
28
- cursor: null
29
- }), { fetchPolicy: s });
30
- }, [
31
- s,
32
- i,
33
- u,
34
- a
35
- ]) };
36
- }
37
- //#endregion
38
- export { i as useBackofficeListRefetch };
39
-
40
- //# sourceMappingURL=useBackofficeListRefetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useBackofficeListRefetch.js","names":[],"sources":["../../../src/hooks/useBackofficeListRefetch.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } 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: { fetchPolicy: FetchPolicy },\n) => void;\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 buildVariables?: (input: BackofficeListVariables<Where, Sort>) => 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 buildVariables,\n}: Params<Where, Sort, Variables>): { onRefresh: () => void } {\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 if (buildVariables != null) {\n return buildVariables(input);\n }\n return input as unknown as Variables;\n },\n [buildVariables],\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 const nextVariables = resolveVariables({ ...variables, cursor: null });\n refetch(nextVariables, { fetchPolicy });\n }, [fetchPolicy, refetch, resolveVariables, variables]);\n\n const onRefresh = useCallback(() => {\n const nextVariables = resolveVariables({ ...variables, cursor: null });\n refetch(nextVariables, { fetchPolicy });\n }, [fetchPolicy, refetch, resolveVariables, variables]);\n\n return { onRefresh };\n}\n"],"mappings":";;;AA0BA,SAAgB,EAId,EACA,YACA,cACA,aACA,gBACA,qBAC4D;CAC5D,IAAM,IAAoB,EACxB,EAAuB;EACrB,OAAO,EAAS;EAChB,MAAM,EAAS;EACf,OAAO,EAAS;EACjB,CAAC,CACH,EAEK,IAAmB,GACtB,MACK,KAAkB,OAGf,IAFE,EAAe,EAAM,EAIhC,CAAC,EAAe,CACjB;AAsBD,QApBA,QAAgB;EACd,IAAM,IAAM,EAAuB;GACjC,OAAO,EAAU;GACjB,MAAM,EAAU;GAChB,OAAO,EAAU;GAClB,CAAC;AACE,IAAkB,YAAY,MAGlC,EAAkB,UAAU,GAG5B,EADsB,EAAiB;GAAE,GAAG;GAAW,QAAQ;GAAM,CAAC,EAC/C,EAAE,gBAAa,CAAC;IACtC;EAAC;EAAa;EAAS;EAAkB;EAAU,CAAC,EAOhD,EAAE,WALS,QAAkB;AAElC,IADsB,EAAiB;GAAE,GAAG;GAAW,QAAQ;GAAM,CAAC,EAC/C,EAAE,gBAAa,CAAC;IACtC;EAAC;EAAa;EAAS;EAAkB;EAAU,CAAC,EAEnC"}
@@ -1 +0,0 @@
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 BackofficeResolvedListFacetConfig,\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>(\n config: BackofficeResolvedListFacetConfig<Where, Sort>,\n): 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 } as BackofficeListState<Where, Sort>;\n }, []);\n\n const state = useMemo(() => {\n if (config.listUrlCodec == null) {\n return fallbackState;\n }\n return config.listUrlCodec.parse(normalizeSearch(search));\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);\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;AAIvD,QAHI,EAAM,MAAM,KAAK,KACZ,IAAI,iBAAiB,GAEvB,IAAI,gBAAgB,EAAM;;AASnC,SAAgB,EAId,GAC0B;CAC1B,IAAM,IAAU,EAAW,EAAe,EACpC,EAAE,SAAM,aAAU,cAAW,GAAa,EAC1C,IAAgB,SACb;EACL,OAAO;EACP,MAAM;EACP,GACA,EAAE,CAAC;AAmCN,QAAO;EAAE,OAjCK,QACR,EAAO,gBAAgB,OAClB,IAEF,EAAO,aAAa,MAAM,EAAgB,EAAO,CAAC,EACxD;GAAC,EAAO;GAAc;GAAe;GAAO,CAAC;EA4BhC,WA1BE,GACf,MAA2C;AAI1C,OAHI,KAAW,QAGX,EAAO,gBAAgB,KACzB;GAIF,IAAM,IADS,EAAO,aAAa,UAAU,EAAK,CAChC,UAAU,EAExB,IAAa;AAKjB,GAJI,MAAO,OACT,IAAa,IAAI,MAGnB,EAAQ,QAAQ,KAAK;IACnB;IACA,QAAQ;IACR;IACD,CAAC;KAEJ;GAAC,EAAO;GAAc;GAAM;GAAU;GAAQ,CAC/C;EAE0B"}
@@ -1,18 +0,0 @@
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
@@ -1 +0,0 @@
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;AACrB,QAAO,QAAkB;AACnB,GAAC,KAAW,KAIhB,QAAsB;AACpB,KAAS,EAAM;IACf;IACD;EAAC;EAAO;EAAS;EAAe;EAAS,CAAC"}
@@ -1,28 +0,0 @@
1
- import { useBackofficeAuthLogoutConfig as e } from "../provider/useBackofficeLazyValue.js";
2
- import * as t from "react-relay";
3
- //#region src/hooks/useBackofficeSessionAuth.ts
4
- var { useMutation: n } = t, r = () => {
5
- let [t, r] = n(e().logoutMutation);
6
- return {
7
- logout: async () => new Promise((e, n) => {
8
- t({
9
- variables: {},
10
- onCompleted: () => {
11
- e();
12
- },
13
- onError: (e) => {
14
- if (e instanceof Error) {
15
- n(e);
16
- return;
17
- }
18
- n(/* @__PURE__ */ Error("Logout failed."));
19
- }
20
- });
21
- }),
22
- isLoading: r
23
- };
24
- };
25
- //#endregion
26
- export { r as default, r as useBackofficeSessionAuth };
27
-
28
- //# sourceMappingURL=useBackofficeSessionAuth.js.map
@@ -1 +0,0 @@
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 { useBackofficeAuthLogoutConfig } from '../provider/useBackofficeLazyValue.js';\n\nconst { useMutation } = ReactRelay;\n\nexport type BackofficeSessionAuth = {\n logout: () => Promise<void>;\n isLoading: boolean;\n};\n\nexport const useBackofficeSessionAuth = (): BackofficeSessionAuth => {\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 resolve();\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":";;;AAMA,IAAM,EAAE,mBAAgB,GAOX,UAAwD;CAQnE,IAAM,CAAC,GAAc,KAAoB,EAP5B,GAA+B,CAQrC,eACN;AAED,QAAO;EACL,QAAQ,YACC,IAAI,SAAS,GAAS,MAAW;AACtC,KAAa;IACX,WAAW,EAAE;IACb,mBAAmB;AACjB,QAAS;;IAEX,UAAU,MAAU;AAClB,SAAI,aAAiB,OAAO;AAC1B,QAAO,EAAM;AACb;;AAEF,OAAO,gBAAI,MAAM,iBAAiB,CAAC;;IAEtC,CAAC;IACF;EAEJ,WAAW;EACZ"}
@@ -1,70 +0,0 @@
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 { storageKey: c = i, visibleEntityIds: l } = s, u = n(() => new Set(l), [l]), [d, f] = r(() => o(a(c), u));
20
- t(() => {
21
- f((e) => {
22
- let t = o(e, u);
23
- if (t.length === e.length) {
24
- let n = !0;
25
- for (let r = 0; r < t.length; r += 1) if (t[r] !== e[r]) {
26
- n = !1;
27
- break;
28
- }
29
- if (n) return e;
30
- }
31
- return t;
32
- });
33
- }, [u]), t(() => {
34
- f(o(a(c), u));
35
- }, [c, u]), t(() => {
36
- if (!(typeof window > "u")) try {
37
- window.localStorage.setItem(c, JSON.stringify(d));
38
- } catch {}
39
- }, [d, c]);
40
- let p = n(() => new Set(d), [d]), m = e((e) => {
41
- u.has(e) && f((t) => t.includes(e) ? t : [...t, e]);
42
- }, [u]), h = e((e) => {
43
- f((t) => t.filter((t) => t !== e));
44
- }, []), g = e((e) => {
45
- p.has(e) ? h(e) : m(e);
46
- }, [
47
- m,
48
- p,
49
- h
50
- ]), _ = e((e, t) => {
51
- e !== t && f((n) => {
52
- let r = n.indexOf(e), i = n.indexOf(t);
53
- if (r === -1 || i === -1 || r === i) return n;
54
- let a = [...n];
55
- return a.splice(r, 1), a.splice(i, 0, e), a;
56
- });
57
- }, []);
58
- return {
59
- pins: d,
60
- isPinned: e((e) => p.has(e), [p]),
61
- pin: m,
62
- unpin: h,
63
- toggle: g,
64
- reorder: _
65
- };
66
- };
67
- //#endregion
68
- export { s as default, s as useBackofficeSidebarPins };
69
-
70
- //# sourceMappingURL=useBackofficeSidebarPins.js.map
@@ -1 +0,0 @@
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 = (pins: readonly string[], validIds: Set<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 storageKey?: string;\n visibleEntityIds: readonly string[];\n};\n\nexport const useBackofficeSidebarPins = (\n input: UseBackofficeSidebarPinsInput,\n): SidebarPinsState => {\n const { storageKey = DEFAULT_STORAGE_KEY, visibleEntityIds } = input;\n const validIds = useMemo(() => {\n return new Set(visibleEntityIds);\n }, [visibleEntityIds]);\n\n const [pins, setPins] = useState<string[]>(() => {\n const stored = readPinsFromStorage(storageKey);\n return normalizePins(stored, validIds);\n });\n\n useEffect(() => {\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 }, [validIds]);\n\n useEffect(() => {\n const stored = readPinsFromStorage(storageKey);\n setPins(normalizePins(stored, validIds));\n }, [storageKey, validIds]);\n\n useEffect(() => {\n if (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 }, [pins, storageKey]);\n\n const pinsSet = useMemo(() => {\n return new Set(pins);\n }, [pins]);\n\n const pin = useCallback(\n (id: string) => {\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 [validIds],\n );\n\n const unpin = useCallback((id: string) => {\n setPins((prev) => {\n return prev.filter((entry) => {\n return entry !== id;\n });\n });\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((fromId: string, toId: string) => {\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\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 default useBackofficeSidebarPins;\n"],"mappings":";;AAEA,IAAM,IAAsB,8BAItB,KAAuB,MAAiC;AAC5D,KAAI,OAAO,SAAW,IACpB,QAAO,EAAE;AAEX,KAAI;EACF,IAAM,IAAM,OAAO,aAAa,QAAQ,EAAW;AACnD,MAAI,KAAO,KACT,QAAO,EAAE;EAEX,IAAM,IAAS,KAAK,MAAM,EAAI;AAI9B,SAHK,MAAM,QAAQ,EAAO,GAGnB,EAAO,QAAQ,MACb,OAAO,KAAU,SACxB,GAJO,EAAE;SAKL;AACN,SAAO,EAAE;;GAIP,KAAiB,GAAyB,MAA0B;CACxE,IAAM,IAAmB,EAAE,EACrB,oBAAO,IAAI,KAAa;AAW9B,QAVA,EAAK,SAAS,MAAU;AACjB,IAAS,IAAI,EAAM,KAGpB,EAAK,IAAI,EAAM,KAGnB,EAAK,IAAI,EAAM,EACf,EAAO,KAAK,EAAM;GAClB,EACK;GAiBI,KACX,MACqB;CACrB,IAAM,EAAE,gBAAa,GAAqB,wBAAqB,GACzD,IAAW,QACR,IAAI,IAAI,EAAiB,EAC/B,CAAC,EAAiB,CAAC,EAEhB,CAAC,GAAM,KAAW,QAEf,EADQ,EAAoB,EAAW,EACjB,EAAS,CACtC;AA0BF,CAxBA,QAAgB;AACd,KAAS,MAAS;GAChB,IAAM,IAAa,EAAc,GAAM,EAAS;AAChD,OAAI,EAAW,WAAW,EAAK,QAAQ;IACrC,IAAI,IAAY;AAChB,SAAK,IAAI,IAAQ,GAAG,IAAQ,EAAW,QAAQ,KAAS,EACtD,KAAI,EAAW,OAAW,EAAK,IAAQ;AACrC,SAAY;AACZ;;AAGJ,QAAI,EACF,QAAO;;AAGX,UAAO;IACP;IACD,CAAC,EAAS,CAAC,EAEd,QAAgB;AAEd,IAAQ,EADO,EAAoB,EAAW,EAChB,EAAS,CAAC;IACvC,CAAC,GAAY,EAAS,CAAC,EAE1B,QAAgB;AACV,eAAO,SAAW,KAGtB,KAAI;AACF,UAAO,aAAa,QAAQ,GAAY,KAAK,UAAU,EAAK,CAAC;UACvD;IAGP,CAAC,GAAM,EAAW,CAAC;CAEtB,IAAM,IAAU,QACP,IAAI,IAAI,EAAK,EACnB,CAAC,EAAK,CAAC,EAEJ,IAAM,GACT,MAAe;AACT,IAAS,IAAI,EAAG,IAGrB,GAAS,MACH,EAAK,SAAS,EAAG,GACZ,IAEF,CAAC,GAAG,GAAM,EAAG,CACpB;IAEJ,CAAC,EAAS,CACX,EAEK,IAAQ,GAAa,MAAe;AACxC,KAAS,MACA,EAAK,QAAQ,MACX,MAAU,EACjB,CACF;IACD,EAAE,CAAC,EAEA,IAAS,GACZ,MAAe;AACd,EAAI,EAAQ,IAAI,EAAG,GACjB,EAAM,EAAG,GAET,EAAI,EAAG;IAGX;EAAC;EAAK;EAAS;EAAM,CACtB,EAEK,IAAU,GAAa,GAAgB,MAAiB;AACxD,QAAW,KAGf,GAAS,MAAS;GAChB,IAAM,IAAY,EAAK,QAAQ,EAAO,EAChC,IAAU,EAAK,QAAQ,EAAK;AAIlC,OAHI,MAAc,MAAM,MAAY,MAGhC,MAAc,EAChB,QAAO;GAET,IAAM,IAAO,CAAC,GAAG,EAAK;AAGtB,UAFA,EAAK,OAAO,GAAW,EAAE,EACzB,EAAK,OAAO,GAAS,GAAG,EAAO,EACxB;IACP;IACD,EAAE,CAAC;AASN,QAAO;EACL;EACA,UATe,GACd,MACQ,EAAQ,IAAI,EAAG,EAExB,CAAC,EAAQ,CACV;EAKC;EACA;EACA;EACA;EACD"}
@@ -1,57 +0,0 @@
1
- import { useEffect as e, useMemo as t, useRef as n, useState as r } from "react";
2
- import * as i from "react-relay";
3
- //#region src/hooks/useConditionalSubscription.ts
4
- function a() {
5
- return Reflect.get(i, "default") ?? i;
6
- }
7
- var o = a();
8
- function s(i, a) {
9
- let s = o.useRelayEnvironment(), [c, l] = r(null), { enabled: u = !0, deps: d = [], getVariables: f } = a, p = t(() => {
10
- try {
11
- return f == null ? i.variables : f();
12
- } catch {
13
- return null;
14
- }
15
- }, [i.variables, f]), m = t(() => {
16
- if (p == null) return null;
17
- try {
18
- return JSON.stringify(p);
19
- } catch {
20
- return null;
21
- }
22
- }, [p]), h = !!u, g = p, _ = h && g != null, v = n(null);
23
- return e(() => {
24
- let e = null;
25
- return h && g != null && (l(null), e = o.requestSubscription(s, {
26
- subscription: i.subscription,
27
- variables: g,
28
- cacheConfig: i.cacheConfig,
29
- configs: i.configs,
30
- onCompleted: i.onCompleted,
31
- onError: (e) => {
32
- l(e), i.onError?.(e);
33
- },
34
- onNext: i.onNext,
35
- updater: i.updater
36
- }), v.current = e), () => {
37
- if (e != null) try {
38
- e.dispose();
39
- } catch {}
40
- v.current === e && (v.current = null);
41
- };
42
- }, [
43
- i,
44
- d,
45
- s,
46
- h,
47
- m,
48
- g
49
- ]), {
50
- active: _,
51
- error: c
52
- };
53
- }
54
- //#endregion
55
- export { s as useConditionalSubscription };
56
-
57
- //# sourceMappingURL=useConditionalSubscription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useConditionalSubscription.js","names":[],"sources":["../../../src/hooks/useConditionalSubscription.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport * as ReactRelay from 'react-relay';\nimport type { GraphQLSubscriptionConfig, OperationType } from 'relay-runtime';\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 error: Error | null;\n};\n\ntype Hop = { dispose: () => void } | null;\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\n const { enabled = true, deps = [], getVariables } = options;\n\n const resolvedVariables = useMemo<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 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 active = isEnabled && variables != null;\n\n const disposableRef = useRef<Hop>(null);\n\n useEffect(() => {\n let disposable: Hop = null;\n\n if (isEnabled && variables != null) {\n setError(null);\n\n disposable = relayApi.requestSubscription<T>(environment, {\n subscription: config.subscription,\n variables,\n cacheConfig: config.cacheConfig,\n configs: config.configs,\n onCompleted: config.onCompleted,\n onError: (nextError) => {\n setError(nextError);\n config.onError?.(nextError);\n },\n onNext: config.onNext,\n updater: config.updater,\n });\n\n disposableRef.current = disposable;\n }\n\n return () => {\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 }, [config, deps, environment, isEnabled, stableVarsString, variables]);\n\n return { active, error };\n}\n"],"mappings":";;;AAkBA,SAAS,IAAqC;AAK5C,QAJ8B,QAAQ,IAAI,GAAY,UAAU,IAIzD;;AAGT,IAAM,IAAW,GAAiB;AAGlC,SAAgB,EACd,GACA,GACkC;CAClC,IAAM,IAAc,EAAS,qBAAqB,EAC5C,CAAC,GAAO,KAAY,EAAuB,KAAK,EAEhD,EAAE,aAAU,IAAM,UAAO,EAAE,EAAE,oBAAiB,GAE9C,IAAoB,QAAqC;AAC7D,MAAI;AAIF,UAHI,KAAgB,OAGb,EAAO,YAFL,GAAc;UAGjB;AACN,UAAO;;IAER,CAAC,EAAO,WAAW,EAAa,CAAC,EAE9B,IAAmB,QAAc;AACrC,MAAI,KAAqB,KACvB,QAAO;AAET,MAAI;AACF,UAAO,KAAK,UAAU,EAAkB;UAClC;AACN,UAAO;;IAER,CAAC,EAAkB,CAAC,EAEjB,IAAY,EAAQ,GACpB,IAAY,GACZ,IAAS,KAAa,KAAa,MAEnC,IAAgB,EAAY,KAAK;AAuCvC,QArCA,QAAgB;EACd,IAAI,IAAkB;AAsBtB,SApBI,KAAa,KAAa,SAC5B,EAAS,KAAK,EAEd,IAAa,EAAS,oBAAuB,GAAa;GACxD,cAAc,EAAO;GACrB;GACA,aAAa,EAAO;GACpB,SAAS,EAAO;GAChB,aAAa,EAAO;GACpB,UAAU,MAAc;AAEtB,IADA,EAAS,EAAU,EACnB,EAAO,UAAU,EAAU;;GAE7B,QAAQ,EAAO;GACf,SAAS,EAAO;GACjB,CAAC,EAEF,EAAc,UAAU,UAGb;AACX,OAAI,KAAc,KAChB,KAAI;AACF,MAAW,SAAS;WACd;AAIV,GAAI,EAAc,YAAY,MAC5B,EAAc,UAAU;;IAG3B;EAAC;EAAQ;EAAM;EAAa;EAAW;EAAkB;EAAU,CAAC,EAEhE;EAAE;EAAQ;EAAO"}
@@ -1,31 +0,0 @@
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
@@ -1 +0,0 @@
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;AAC9C,KAAI,OAAO,WAAa,IACtB;CAGF,IAAI,IAAW,SAAS,eACtB,EACD;AAeD,CAbI,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;AAiD9C,QA/CA,cACe;AACX,EAAI,EAAW,WAAW,QACxB,OAAO,aAAa,EAAW,QAAQ;IAG1C,EAAE,CAAC,EAyCC;EAAE;EAAW,MAvCP,EACX,OAAO,GAAe,MAAmC;GACvD,IAAI,IAAY,IAEZ;AAKJ,OAJI,OAAO,YAAc,QACvB,IAAY,UAAU,YAGpB,KAAa,KACf,KAAI;AAEF,IADA,MAAM,EAAU,UAAU,EAAM,EAChC,IAAY;WACN;AACN,QAAY;;AAoBhB,UAhBA,AAEE,OADA,EAAkB,EAAM,EACZ,KAGV,KAAO,SACT,EAAa,EAAI,EACb,EAAW,WAAW,QACxB,OAAO,aAAa,EAAW,QAAQ,EAEzC,EAAW,UAAU,OAAO,iBAAiB;AAE3C,IADA,EAAa,KAAK,EAClB,EAAW,UAAU;MACpB,EAAU,GAGR;KAET,CAAC,EAAU,CACZ;EAEyB"}
@@ -1,23 +0,0 @@
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
@@ -1 +0,0 @@
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;AAqBhE,QAnBA,QAAgB;AACd,IAAU,KAAK;IACd,CAAC,EAAS,CAAC,EAiBP;EAAE;EAAQ,iBAfO,GACrB,MAAiD;AAChD,KAAU,KAAc,UAAU;KAEpC,EAAE,CACH;EAUiC,QARnB,QAAkB;AAC/B,UAAO,SAAS,QAAQ;KACvB,EAAE,CAAC;EAMoC,OAJ5B,QAAkB;AAC9B,KAAU,KAAK;KACd,EAAE,CAAC;EAE2C"}
@@ -1,35 +0,0 @@
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, t) => {
4
- let n = {};
5
- return e.forEach((e) => {
6
- n[e] = !0;
7
- }), t != null && e.includes(t) && (n[t] = !1), n;
8
- }, a = (a) => {
9
- let { groupIds: o, activeGroupId: s } = a, c = n(() => [...o], [o]), [l, u] = r(() => i(c, s));
10
- return t(() => {
11
- u((e) => {
12
- let t = {};
13
- return c.forEach((n) => {
14
- t[n] = e[n] ?? !0;
15
- }), s != null && c.includes(s) && (t[s] = !1), t;
16
- });
17
- }, [s, c]), t(() => {
18
- s != null && u((e) => e[s] === !1 ? e : {
19
- ...e,
20
- [s]: !1
21
- });
22
- }, [s]), {
23
- collapsedByGroupId: l,
24
- setCollapsed: e((e, t) => {
25
- u((n) => n[e] === t ? n : {
26
- ...n,
27
- [e]: t
28
- });
29
- }, [])
30
- };
31
- };
32
- //#endregion
33
- export { a as default, a as useSidebarGroupCollapse };
34
-
35
- //# sourceMappingURL=useSidebarGroupCollapse.js.map
@@ -1 +0,0 @@
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};\n\nconst buildInitialState = (\n groupIds: readonly string[],\n activeGroupId?: string | null,\n): SidebarGroupCollapseState => {\n const state: SidebarGroupCollapseState = {};\n groupIds.forEach((groupId) => {\n state[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 { groupIds, activeGroupId } = input;\n\n const groupIdList = useMemo(() => {\n return [...groupIds];\n }, [groupIds]);\n\n const [collapsedByGroupId, setCollapsedByGroupId] =\n useState<SidebarGroupCollapseState>(() => {\n return buildInitialState(groupIdList, activeGroupId);\n });\n\n useEffect(() => {\n setCollapsedByGroupId((prev) => {\n const next: SidebarGroupCollapseState = {};\n\n groupIdList.forEach((groupId) => {\n const existing = prev[groupId];\n next[groupId] = existing ?? true;\n });\n\n if (activeGroupId != null && groupIdList.includes(activeGroupId)) {\n next[activeGroupId] = false;\n }\n\n return next;\n });\n }, [activeGroupId, groupIdList]);\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":";;AASA,IAAM,KACJ,GACA,MAC8B;CAC9B,IAAM,IAAmC,EAAE;AAO3C,QANA,EAAS,SAAS,MAAY;AAC5B,IAAM,KAAW;GACjB,EACE,KAAiB,QAAQ,EAAS,SAAS,EAAc,KAC3D,EAAM,KAAiB,KAElB;GAGI,KACX,MAIG;CACH,IAAM,EAAE,aAAU,qBAAkB,GAE9B,IAAc,QACX,CAAC,GAAG,EAAS,EACnB,CAAC,EAAS,CAAC,EAER,CAAC,GAAoB,KACzB,QACS,EAAkB,GAAa,EAAc,CACpD;AA8CJ,QA5CA,QAAgB;AACd,KAAuB,MAAS;GAC9B,IAAM,IAAkC,EAAE;AAW1C,UATA,EAAY,SAAS,MAAY;AAE/B,MAAK,KADY,EAAK,MACM;KAC5B,EAEE,KAAiB,QAAQ,EAAY,SAAS,EAAc,KAC9D,EAAK,KAAiB,KAGjB;IACP;IACD,CAAC,GAAe,EAAY,CAAC,EAEhC,QAAgB;AACV,OAAiB,QAGrB,GAAuB,MACjB,EAAK,OAAmB,KACnB,IAEF;GACL,GAAG;IACF,IAAgB;GAClB,CACD;IACD,CAAC,EAAc,CAAC,EAcZ;EACL;EACA,cAdmB,GAAa,GAAiB,MAAuB;AACxE,MAAuB,MACjB,EAAK,OAAa,IACb,IAEF;IACL,GAAG;KACF,IAAU;IACZ,CACD;KACD,EAAE,CAAC;EAKL"}
@@ -1,62 +0,0 @@
1
- import { initReactI18next as e } from "react-i18next";
2
- import { createInstance as t } from "i18next";
3
- import n from "i18next-browser-languagedetector";
4
- //#region src/i18n/createI18nInstance.ts
5
- var r = { maximumFractionDigits: 2 }, i = {
6
- style: "currency",
7
- currency: "USD",
8
- maximumFractionDigits: 2
9
- }, a = { dateStyle: "medium" }, o = {
10
- dateStyle: "medium",
11
- timeStyle: "short"
12
- }, s = { style: "percent" };
13
- function c(e) {
14
- return Array.isArray(e) ? e[0] : e;
15
- }
16
- function l(e) {
17
- if (e == null) return "";
18
- if (typeof e == "string" || typeof e == "number" || typeof e == "boolean" || typeof e == "bigint") return String(e);
19
- if (typeof e == "symbol") return e.toString();
20
- if (e instanceof Date) return e.toISOString();
21
- try {
22
- return JSON.stringify(e);
23
- } catch {
24
- return "";
25
- }
26
- }
27
- function u(e, t, n) {
28
- if (t == null) return l(e);
29
- let u = c(n);
30
- if (t === "number" && typeof e == "number") return new Intl.NumberFormat(u, r).format(e);
31
- if (t === "currency" && typeof e == "number") return new Intl.NumberFormat(u, i).format(e);
32
- if (t === "percent" && typeof e == "number") return new Intl.NumberFormat(u, s).format(e);
33
- if ((t === "date" || t === "datetime") && e != null) {
34
- let n;
35
- if (n = e instanceof Date ? e : typeof e == "string" || typeof e == "number" ? new Date(e) : new Date(l(e)), !Number.isNaN(n.getTime())) return t === "date" ? new Intl.DateTimeFormat(u, a).format(n) : new Intl.DateTimeFormat(u, o).format(n);
36
- }
37
- return l(e);
38
- }
39
- async function d(r) {
40
- let { resources: i, lng: a, fallbackLng: o = "en", initOptions: s = {}, instance: c = t(), useLanguageDetector: l = !1, detection: d } = r, { interpolation: f, ...p } = s;
41
- l && c.use(n), c.use(e);
42
- try {
43
- let e = {
44
- ...p,
45
- resources: i,
46
- fallbackLng: o,
47
- interpolation: {
48
- escapeValue: !1,
49
- format: f?.format ?? u,
50
- ...f
51
- }
52
- };
53
- a != null && (e.lng = a);
54
- let t = d ?? s.detection;
55
- l && t != null && (e.detection = t), await c.init(e);
56
- } catch {}
57
- return c;
58
- }
59
- //#endregion
60
- export { d as createI18nInstance };
61
-
62
- //# sourceMappingURL=createI18nInstance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createI18nInstance.js","names":[],"sources":["../../../src/i18n/createI18nInstance.ts"],"sourcesContent":["import { createInstance, type i18n, type InitOptions } from 'i18next';\nimport LanguageDetector, {\n type DetectorOptions,\n} from 'i18next-browser-languagedetector';\nimport { initReactI18next } from 'react-i18next';\n\ntype InitOptionsWithDetection = Omit<\n InitOptions,\n 'resources' | 'lng' | 'fallbackLng'\n> & {\n detection?: DetectorOptions;\n};\n\ntype InitConfig = InitOptions & {\n detection?: DetectorOptions;\n};\n\nexport interface CreateI18nOptions {\n resources: NonNullable<InitOptions['resources']>;\n lng?: InitOptions['lng'];\n fallbackLng?: InitOptions['fallbackLng'];\n initOptions?: InitOptionsWithDetection;\n instance?: i18n;\n useLanguageDetector?: boolean;\n detection?: DetectorOptions;\n}\n\nconst DEFAULT_NUMBER_OPTIONS = { maximumFractionDigits: 2 };\nconst DEFAULT_CURRENCY_OPTIONS = {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: 2,\n} as const;\nconst DEFAULT_DATE_OPTIONS = { dateStyle: 'medium' } as const;\nconst DEFAULT_DATE_TIME_OPTIONS = {\n dateStyle: 'medium',\n timeStyle: 'short',\n} as const;\nconst DEFAULT_PERCENT_OPTIONS = { style: 'percent' } as const;\n\n/** Returns the best locale value from i18next's language list. */\nfunction getLocale(lng: string | string[] | undefined): string | undefined {\n if (Array.isArray(lng)) {\n return lng[0];\n }\n return lng;\n}\n\n/** Stringify interpolation values while avoiding Object.prototype defaults. */\nfunction stringifyValue(value: unknown): string {\n if (value == null) {\n return '';\n }\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'bigint'\n ) {\n return String(value);\n }\n if (typeof value === 'symbol') {\n return value.toString();\n }\n if (value instanceof Date) {\n return value.toISOString();\n }\n try {\n return JSON.stringify(value);\n } catch {\n return '';\n }\n}\n\n/** Format interpolated values using Intl based on the i18n format token. */\nfunction formatValue(\n value: unknown,\n format: string | undefined,\n lng: string | string[] | undefined,\n): string {\n if (format == null) {\n return stringifyValue(value);\n }\n\n const locale = getLocale(lng);\n\n if (format === 'number' && typeof value === 'number') {\n return new Intl.NumberFormat(locale, DEFAULT_NUMBER_OPTIONS).format(value);\n }\n\n if (format === 'currency' && typeof value === 'number') {\n return new Intl.NumberFormat(locale, DEFAULT_CURRENCY_OPTIONS).format(\n value,\n );\n }\n\n if (format === 'percent' && typeof value === 'number') {\n return new Intl.NumberFormat(locale, DEFAULT_PERCENT_OPTIONS).format(value);\n }\n\n if ((format === 'date' || format === 'datetime') && value != null) {\n let date: Date;\n if (value instanceof Date) {\n date = value;\n } else if (typeof value === 'string' || typeof value === 'number') {\n date = new Date(value);\n } else {\n date = new Date(stringifyValue(value));\n }\n if (!Number.isNaN(date.getTime())) {\n if (format === 'date') {\n return new Intl.DateTimeFormat(locale, DEFAULT_DATE_OPTIONS).format(\n date,\n );\n }\n return new Intl.DateTimeFormat(locale, DEFAULT_DATE_TIME_OPTIONS).format(\n date,\n );\n }\n }\n\n return stringifyValue(value);\n}\n\n/**\n * Create and initialize an i18next instance configured for React.\n * Each frontend can call this helper with its own resource bundles.\n */\nexport async function createI18nInstance(\n options: CreateI18nOptions,\n): Promise<i18n> {\n const {\n resources,\n lng,\n fallbackLng = 'en',\n initOptions = {},\n instance = createInstance(),\n useLanguageDetector = false,\n detection,\n } = options;\n\n const { interpolation, ...restInitOptions } = initOptions;\n\n if (useLanguageDetector) {\n instance.use(LanguageDetector);\n }\n instance.use(initReactI18next);\n\n try {\n const initConfig: InitConfig = {\n ...restInitOptions,\n resources,\n fallbackLng,\n interpolation: {\n escapeValue: false,\n format: interpolation?.format ?? formatValue,\n ...interpolation,\n },\n };\n if (lng != null) {\n initConfig.lng = lng;\n }\n\n const detectionOptions = detection ?? initOptions.detection;\n if (useLanguageDetector && detectionOptions != null) {\n initConfig.detection = detectionOptions;\n }\n\n await instance.init(initConfig);\n } catch {\n // Swallow initialization errors to avoid blocking the UI.\n // Callers can inspect the instance for diagnostics if needed.\n }\n\n return instance;\n}\n"],"mappings":";;;;AA2BA,IAAM,IAAyB,EAAE,uBAAuB,GAAG,EACrD,IAA2B;CAC/B,OAAO;CACP,UAAU;CACV,uBAAuB;CACxB,EACK,IAAuB,EAAE,WAAW,UAAU,EAC9C,IAA4B;CAChC,WAAW;CACX,WAAW;CACZ,EACK,IAA0B,EAAE,OAAO,WAAW;AAGpD,SAAS,EAAU,GAAwD;AAIzE,QAHI,MAAM,QAAQ,EAAI,GACb,EAAI,KAEN;;AAIT,SAAS,EAAe,GAAwB;AAC9C,KAAI,KAAS,KACX,QAAO;AAET,KACE,OAAO,KAAU,YACjB,OAAO,KAAU,YACjB,OAAO,KAAU,aACjB,OAAO,KAAU,SAEjB,QAAO,OAAO,EAAM;AAEtB,KAAI,OAAO,KAAU,SACnB,QAAO,EAAM,UAAU;AAEzB,KAAI,aAAiB,KACnB,QAAO,EAAM,aAAa;AAE5B,KAAI;AACF,SAAO,KAAK,UAAU,EAAM;SACtB;AACN,SAAO;;;AAKX,SAAS,EACP,GACA,GACA,GACQ;AACR,KAAI,KAAU,KACZ,QAAO,EAAe,EAAM;CAG9B,IAAM,IAAS,EAAU,EAAI;AAE7B,KAAI,MAAW,YAAY,OAAO,KAAU,SAC1C,QAAO,IAAI,KAAK,aAAa,GAAQ,EAAuB,CAAC,OAAO,EAAM;AAG5E,KAAI,MAAW,cAAc,OAAO,KAAU,SAC5C,QAAO,IAAI,KAAK,aAAa,GAAQ,EAAyB,CAAC,OAC7D,EACD;AAGH,KAAI,MAAW,aAAa,OAAO,KAAU,SAC3C,QAAO,IAAI,KAAK,aAAa,GAAQ,EAAwB,CAAC,OAAO,EAAM;AAG7E,MAAK,MAAW,UAAU,MAAW,eAAe,KAAS,MAAM;EACjE,IAAI;AAQJ,MAPA,AAKE,IALE,aAAiB,OACZ,IACE,OAAO,KAAU,YAAY,OAAO,KAAU,WAChD,IAAI,KAAK,EAAM,GAEf,IAAI,KAAK,EAAe,EAAM,CAAC,EAEpC,CAAC,OAAO,MAAM,EAAK,SAAS,CAAC,CAM/B,QALI,MAAW,SACN,IAAI,KAAK,eAAe,GAAQ,EAAqB,CAAC,OAC3D,EACD,GAEI,IAAI,KAAK,eAAe,GAAQ,EAA0B,CAAC,OAChE,EACD;;AAIL,QAAO,EAAe,EAAM;;AAO9B,eAAsB,EACpB,GACe;CACf,IAAM,EACJ,cACA,QACA,iBAAc,MACd,iBAAc,EAAE,EAChB,cAAW,GAAgB,EAC3B,yBAAsB,IACtB,iBACE,GAEE,EAAE,kBAAe,GAAG,MAAoB;AAK9C,CAHI,KACF,EAAS,IAAI,EAAiB,EAEhC,EAAS,IAAI,EAAiB;AAE9B,KAAI;EACF,IAAM,IAAyB;GAC7B,GAAG;GACH;GACA;GACA,eAAe;IACb,aAAa;IACb,QAAQ,GAAe,UAAU;IACjC,GAAG;IACJ;GACF;AACD,EAAI,KAAO,SACT,EAAW,MAAM;EAGnB,IAAM,IAAmB,KAAa,EAAY;AAKlD,EAJI,KAAuB,KAAoB,SAC7C,EAAW,YAAY,IAGzB,MAAM,EAAS,KAAK,EAAW;SACzB;AAKR,QAAO"}