@shapio/cms 0.5.7 → 0.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/dist/admin/assets/{AssetTile-H0hABhB2.js → AssetTile-Da76KsyX.js} +2 -2
  2. package/dist/admin/assets/{AssetTile-H0hABhB2.js.map → AssetTile-Da76KsyX.js.map} +1 -1
  3. package/dist/admin/assets/AssistError-Wr62cDj3.js +2 -0
  4. package/dist/admin/assets/{AssistError-1s3PuY0X.js.map → AssistError-Wr62cDj3.js.map} +1 -1
  5. package/dist/admin/assets/{BlockMenuItems-a8zXdfcF.js → BlockMenuItems-BMiEVCIT.js} +2 -2
  6. package/dist/admin/assets/{BlockMenuItems-a8zXdfcF.js.map → BlockMenuItems-BMiEVCIT.js.map} +1 -1
  7. package/dist/admin/assets/Body-BEW1sAAB.js +2 -0
  8. package/dist/admin/assets/Body-BEW1sAAB.js.map +1 -0
  9. package/dist/admin/assets/Builder-Tk_5Orrl.js +2 -0
  10. package/dist/admin/assets/Builder-Tk_5Orrl.js.map +1 -0
  11. package/dist/admin/assets/{CodeEditor-BLbJZE9v.js → CodeEditor-Ck7ggv6w.js} +2 -2
  12. package/dist/admin/assets/{CodeEditor-BLbJZE9v.js.map → CodeEditor-Ck7ggv6w.js.map} +1 -1
  13. package/dist/admin/assets/{CopyButton-BOtR_h1H.js → CopyButton-WMWuSVsk.js} +2 -2
  14. package/dist/admin/assets/{CopyButton-BOtR_h1H.js.map → CopyButton-WMWuSVsk.js.map} +1 -1
  15. package/dist/admin/assets/{CursorPager-DwLW13ov.js → CursorPager-CsnzX1P8.js} +2 -2
  16. package/dist/admin/assets/{CursorPager-DwLW13ov.js.map → CursorPager-CsnzX1P8.js.map} +1 -1
  17. package/dist/admin/assets/{ExternalLink-BITMgS1K.js → ExternalLink-D80sb5Jj.js} +2 -2
  18. package/dist/admin/assets/{ExternalLink-BITMgS1K.js.map → ExternalLink-D80sb5Jj.js.map} +1 -1
  19. package/dist/admin/assets/{FocalPoint-n-a_AXKN.js → FocalPoint-CstZuVmt.js} +2 -2
  20. package/dist/admin/assets/{FocalPoint-n-a_AXKN.js.map → FocalPoint-CstZuVmt.js.map} +1 -1
  21. package/dist/admin/assets/Form-CEOW2OFF.js +2 -0
  22. package/dist/admin/assets/Form-CEOW2OFF.js.map +1 -0
  23. package/dist/admin/assets/{FormCheckboxGroup-1fYisXrr.js → FormCheckboxGroup-VjWVMiF3.js} +2 -2
  24. package/dist/admin/assets/{FormCheckboxGroup-1fYisXrr.js.map → FormCheckboxGroup-VjWVMiF3.js.map} +1 -1
  25. package/dist/admin/assets/{FormRadioGroup-B0VZyb1t.js → FormRadioGroup-BQurJa8M.js} +2 -2
  26. package/dist/admin/assets/{FormRadioGroup-B0VZyb1t.js.map → FormRadioGroup-BQurJa8M.js.map} +1 -1
  27. package/dist/admin/assets/FormSelectField-B4sjP-pj.js +2 -0
  28. package/dist/admin/assets/FormSelectField-B4sjP-pj.js.map +1 -0
  29. package/dist/admin/assets/FormSheet-V99zdfQe.js +2 -0
  30. package/dist/admin/assets/FormSheet-V99zdfQe.js.map +1 -0
  31. package/dist/admin/assets/{FormSwitchField-d8G-YCSX.js → FormSwitchField-RZgoP--n.js} +2 -2
  32. package/dist/admin/assets/{FormSwitchField-d8G-YCSX.js.map → FormSwitchField-RZgoP--n.js.map} +1 -1
  33. package/dist/admin/assets/{FormTextareaField-BSKNeTPW.js → FormTextareaField-CzXgoQzf.js} +2 -2
  34. package/dist/admin/assets/{FormTextareaField-BSKNeTPW.js.map → FormTextareaField-CzXgoQzf.js.map} +1 -1
  35. package/dist/admin/assets/{HintedLabel-CiTDE112.js → HintedLabel-Cd9nuSqV.js} +2 -2
  36. package/dist/admin/assets/{HintedLabel-CiTDE112.js.map → HintedLabel-Cd9nuSqV.js.map} +1 -1
  37. package/dist/admin/assets/{InfoHint-B3XcXtiN.js → InfoHint-ymRmHKMr.js} +2 -2
  38. package/dist/admin/assets/{InfoHint-B3XcXtiN.js.map → InfoHint-ymRmHKMr.js.map} +1 -1
  39. package/dist/admin/assets/{InlineConfirm-BfsNH5S_.js → InlineConfirm-A4IqkrGp.js} +2 -2
  40. package/dist/admin/assets/{InlineConfirm-BfsNH5S_.js.map → InlineConfirm-A4IqkrGp.js.map} +1 -1
  41. package/dist/admin/assets/{InsertMenuItem-BGwDW_Lu.js → InsertMenuItem-Bf7S7qbm.js} +2 -2
  42. package/dist/admin/assets/{InsertMenuItem-BGwDW_Lu.js.map → InsertMenuItem-Bf7S7qbm.js.map} +1 -1
  43. package/dist/admin/assets/{LinkTabs-8SmS1vCd.js → LinkTabs-oQXsy1I3.js} +2 -2
  44. package/dist/admin/assets/{LinkTabs-8SmS1vCd.js.map → LinkTabs-oQXsy1I3.js.map} +1 -1
  45. package/dist/admin/assets/{Match-Dc8bXsKo.js → Match-DJq8wn3e.js} +2 -2
  46. package/dist/admin/assets/{Match-Dc8bXsKo.js.map → Match-DJq8wn3e.js.map} +1 -1
  47. package/dist/admin/assets/{NoAccess-CKEKPmqD.js → NoAccess-CZufdbPI.js} +2 -2
  48. package/dist/admin/assets/{NoAccess-CKEKPmqD.js.map → NoAccess-CZufdbPI.js.map} +1 -1
  49. package/dist/admin/assets/{QueryView-KFtwko9F.js → QueryView-DO9TFWYE.js} +2 -2
  50. package/dist/admin/assets/{QueryView-KFtwko9F.js.map → QueryView-DO9TFWYE.js.map} +1 -1
  51. package/dist/admin/assets/{RadioTile-CzfxWgHx.js → RadioTile-DmKBFkpy.js} +2 -2
  52. package/dist/admin/assets/{RadioTile-CzfxWgHx.js.map → RadioTile-DmKBFkpy.js.map} +1 -1
  53. package/dist/admin/assets/{RichTextField-BsBoOAP-.js → RichTextField-BpxyusP4.js} +4 -4
  54. package/dist/admin/assets/{RichTextField-BsBoOAP-.js.map → RichTextField-BpxyusP4.js.map} +1 -1
  55. package/dist/admin/assets/{RowTitle-Cn5mAU58.js → RowTitle-DVOfgxOd.js} +2 -2
  56. package/dist/admin/assets/{RowTitle-Cn5mAU58.js.map → RowTitle-DVOfgxOd.js.map} +1 -1
  57. package/dist/admin/assets/{SecretReveal-BCOJAisI.js → SecretReveal-DRCqVEFF.js} +2 -2
  58. package/dist/admin/assets/{SecretReveal-BCOJAisI.js.map → SecretReveal-DRCqVEFF.js.map} +1 -1
  59. package/dist/admin/assets/{SharedGlyph-CA8tb7UH.js → SharedGlyph-nsXJPCew.js} +2 -2
  60. package/dist/admin/assets/{SharedGlyph-CA8tb7UH.js.map → SharedGlyph-nsXJPCew.js.map} +1 -1
  61. package/dist/admin/assets/StepList-CDZPRd3-.js +2 -0
  62. package/dist/admin/assets/StepList-CDZPRd3-.js.map +1 -0
  63. package/dist/admin/assets/Structure-CL51Bvbm.js +2 -0
  64. package/dist/admin/assets/{Structure-B2HZ9UZu.js.map → Structure-CL51Bvbm.js.map} +1 -1
  65. package/dist/admin/assets/{SubNavLink-CiCaVV8U.js → SubNavLink-7Cs1LqMv.js} +2 -2
  66. package/dist/admin/assets/{SubNavLink-CiCaVV8U.js.map → SubNavLink-7Cs1LqMv.js.map} +1 -1
  67. package/dist/admin/assets/{SuggestAltButton-CqDLAuoa.js → SuggestAltButton-4SaZQOJu.js} +2 -2
  68. package/dist/admin/assets/{SuggestAltButton-CqDLAuoa.js.map → SuggestAltButton-4SaZQOJu.js.map} +1 -1
  69. package/dist/admin/assets/{TextLink-HRn66VL1.js → TextLink-Dfs5wsc5.js} +2 -2
  70. package/dist/admin/assets/{TextLink-HRn66VL1.js.map → TextLink-Dfs5wsc5.js.map} +1 -1
  71. package/dist/admin/assets/{Thumbnail-mFfESZiW.js → Thumbnail-DauHAkh8.js} +2 -2
  72. package/dist/admin/assets/{Thumbnail-mFfESZiW.js.map → Thumbnail-DauHAkh8.js.map} +1 -1
  73. package/dist/admin/assets/Trans-B3UWiZaU.js +2 -0
  74. package/dist/admin/assets/Trans-B3UWiZaU.js.map +1 -0
  75. package/dist/admin/assets/{UnsavedChangesGuard-C8cDQGEA.js → UnsavedChangesGuard-DPgih7BX.js} +2 -2
  76. package/dist/admin/assets/{UnsavedChangesGuard-C8cDQGEA.js.map → UnsavedChangesGuard-DPgih7BX.js.map} +1 -1
  77. package/dist/admin/assets/{UserAvatar-BItYDTyH.js → UserAvatar-If-zlQNY.js} +2 -2
  78. package/dist/admin/assets/{UserAvatar-BItYDTyH.js.map → UserAvatar-If-zlQNY.js.map} +1 -1
  79. package/dist/admin/assets/auth-BFSvtV59.js +2 -0
  80. package/dist/admin/assets/{auth-CQO4MBUj.js.map → auth-BFSvtV59.js.map} +1 -1
  81. package/dist/admin/assets/{badge-DNQwGXBl.js → badge-DEe9tqLS.js} +2 -2
  82. package/dist/admin/assets/{badge-DNQwGXBl.js.map → badge-DEe9tqLS.js.map} +1 -1
  83. package/dist/admin/assets/{boxes-CAygw8zF.js → boxes-_5klpWNM.js} +2 -2
  84. package/dist/admin/assets/{boxes-CAygw8zF.js.map → boxes-_5klpWNM.js.map} +1 -1
  85. package/dist/admin/assets/{calendar-clock-BZGtAvWR.js → calendar-clock-VXok22Xj.js} +2 -2
  86. package/dist/admin/assets/{calendar-clock-BZGtAvWR.js.map → calendar-clock-VXok22Xj.js.map} +1 -1
  87. package/dist/admin/assets/changeSets-D5i2SgFV.js +2 -0
  88. package/dist/admin/assets/{changeSets-EMTUJT0M.js.map → changeSets-D5i2SgFV.js.map} +1 -1
  89. package/dist/admin/assets/chevron-left-CkRxDtvO.js +2 -0
  90. package/dist/admin/assets/{chevron-left-DGU3HGYG.js.map → chevron-left-CkRxDtvO.js.map} +1 -1
  91. package/dist/admin/assets/{circle-check-C37MSJqX.js → circle-check-DtDq7QMo.js} +2 -2
  92. package/dist/admin/assets/{circle-check-C37MSJqX.js.map → circle-check-DtDq7QMo.js.map} +1 -1
  93. package/dist/admin/assets/{clock-2arjsgZ4.js → clock-BtvZR9KD.js} +2 -2
  94. package/dist/admin/assets/{clock-2arjsgZ4.js.map → clock-BtvZR9KD.js.map} +1 -1
  95. package/dist/admin/assets/{constants-miV4q1ur.js → constants-FKg_ke3y.js} +2 -2
  96. package/dist/admin/assets/{constants-miV4q1ur.js.map → constants-FKg_ke3y.js.map} +1 -1
  97. package/dist/admin/assets/content-DKT2ziPH.js +3 -0
  98. package/dist/admin/assets/content-DKT2ziPH.js.map +1 -0
  99. package/dist/admin/assets/{contentCounts-DP7YYeZZ.js → contentCounts-BzC7IQqP.js} +2 -2
  100. package/dist/admin/assets/{contentCounts-DP7YYeZZ.js.map → contentCounts-BzC7IQqP.js.map} +1 -1
  101. package/dist/admin/assets/{contentTypes-CQsHL657.js → contentTypes-B5taZv3y.js} +2 -2
  102. package/dist/admin/assets/{contentTypes-CQsHL657.js.map → contentTypes-B5taZv3y.js.map} +1 -1
  103. package/dist/admin/assets/{context-IKYdzQJ-.js → context-CEVKblBl.js} +2 -2
  104. package/dist/admin/assets/{context-IKYdzQJ-.js.map → context-CEVKblBl.js.map} +1 -1
  105. package/dist/admin/assets/{copy-CsSRHgKZ.js → copy-B7vIq8DS.js} +2 -2
  106. package/dist/admin/assets/{copy-CsSRHgKZ.js.map → copy-B7vIq8DS.js.map} +1 -1
  107. package/dist/admin/assets/createLucideIcon-BOsNKleB.js +2 -0
  108. package/dist/admin/assets/createLucideIcon-BOsNKleB.js.map +1 -0
  109. package/dist/admin/assets/develop-CFlv7IdP.js +11 -0
  110. package/dist/admin/assets/develop-CFlv7IdP.js.map +1 -0
  111. package/dist/admin/assets/{dropdown-menu-0dyAtBEd.js → dropdown-menu-B7dJyA8h.js} +2 -2
  112. package/dist/admin/assets/{dropdown-menu-0dyAtBEd.js.map → dropdown-menu-B7dJyA8h.js.map} +1 -1
  113. package/dist/admin/assets/{ellipsis-F91991on.js → ellipsis-Ci0rsbCJ.js} +2 -2
  114. package/dist/admin/assets/{ellipsis-F91991on.js.map → ellipsis-Ci0rsbCJ.js.map} +1 -1
  115. package/dist/admin/assets/{entryLink-CVB-TdIn.js → entryLink-B0hSb_dN.js} +2 -2
  116. package/dist/admin/assets/{entryLink-CVB-TdIn.js.map → entryLink-B0hSb_dN.js.map} +1 -1
  117. package/dist/admin/assets/es2015-1nJWBurR.js +42 -0
  118. package/dist/admin/assets/es2015-1nJWBurR.js.map +1 -0
  119. package/dist/admin/assets/{external-link-CdG6kHfA.js → external-link-Bs9YRzvY.js} +2 -2
  120. package/dist/admin/assets/{external-link-CdG6kHfA.js.map → external-link-Bs9YRzvY.js.map} +1 -1
  121. package/dist/admin/assets/{field-C6NmRYUN.js → field-BDCHXkZE.js} +2 -2
  122. package/dist/admin/assets/{field-C6NmRYUN.js.map → field-BDCHXkZE.js.map} +1 -1
  123. package/dist/admin/assets/{file-stack-28ZtO1xW.js → file-stack-X4OGmkLA.js} +2 -2
  124. package/dist/admin/assets/{file-stack-28ZtO1xW.js.map → file-stack-X4OGmkLA.js.map} +1 -1
  125. package/dist/admin/assets/{fileRoute-Bm90K4UY.js → fileRoute-c9UMUr9b.js} +2 -2
  126. package/dist/admin/assets/{fileRoute-Bm90K4UY.js.map → fileRoute-c9UMUr9b.js.map} +1 -1
  127. package/dist/admin/assets/{folder-plus-DIk0pWkP.js → folder-plus-De2GNvry.js} +2 -2
  128. package/dist/admin/assets/{folder-plus-DIk0pWkP.js.map → folder-plus-De2GNvry.js.map} +1 -1
  129. package/dist/admin/assets/followPlural-CHpz-yo4.js +2 -0
  130. package/dist/admin/assets/followPlural-CHpz-yo4.js.map +1 -0
  131. package/dist/admin/assets/{globe-DFr3Gd2w.js → globe-DBw84s8Z.js} +2 -2
  132. package/dist/admin/assets/{globe-DFr3Gd2w.js.map → globe-DBw84s8Z.js.map} +1 -1
  133. package/dist/admin/assets/{image-DT79QFa_.js → image-CX4mT-_R.js} +2 -2
  134. package/dist/admin/assets/{image-DT79QFa_.js.map → image-CX4mT-_R.js.map} +1 -1
  135. package/dist/admin/assets/{image-off-DFs5upyX.js → image-off-CVaH_qKf.js} +2 -2
  136. package/dist/admin/assets/{image-off-DFs5upyX.js.map → image-off-CVaH_qKf.js.map} +1 -1
  137. package/dist/admin/assets/{inbox-CySnQydm.js → inbox-D9SmWt5L.js} +2 -2
  138. package/dist/admin/assets/{inbox-CySnQydm.js.map → inbox-D9SmWt5L.js.map} +1 -1
  139. package/dist/admin/assets/inbox-Daw10v5C.js +2 -0
  140. package/dist/admin/assets/inbox-Daw10v5C.js.map +1 -0
  141. package/dist/admin/assets/index-BRx5mel0.js +4 -0
  142. package/dist/admin/assets/index-BRx5mel0.js.map +1 -0
  143. package/dist/admin/assets/index-DZsQq6fY.css +2 -0
  144. package/dist/admin/assets/{key-round-D36CePnN.js → key-round-C8sd9CLN.js} +2 -2
  145. package/dist/admin/assets/{key-round-D36CePnN.js.map → key-round-C8sd9CLN.js.map} +1 -1
  146. package/dist/admin/assets/{labels-B2HIVxXg.js → labels-B83cEX9w.js} +2 -2
  147. package/dist/admin/assets/{labels-B2HIVxXg.js.map → labels-B83cEX9w.js.map} +1 -1
  148. package/dist/admin/assets/{languages-CzbTaQv9.js → languages-DLjdz6gb.js} +2 -2
  149. package/dist/admin/assets/{languages-CzbTaQv9.js.map → languages-DLjdz6gb.js.map} +1 -1
  150. package/dist/admin/assets/{layers-BmcodiaH.js → layers-swLuw-3a.js} +2 -2
  151. package/dist/admin/assets/{layers-BmcodiaH.js.map → layers-swLuw-3a.js.map} +1 -1
  152. package/dist/admin/assets/{link-2-off-CoJNwrxm.js → link-2-off-CEsI5T8h.js} +2 -2
  153. package/dist/admin/assets/{link-2-off-CoJNwrxm.js.map → link-2-off-CEsI5T8h.js.map} +1 -1
  154. package/dist/admin/assets/{link-Pyr2Y35S.js → link-C98FG_p5.js} +2 -2
  155. package/dist/admin/assets/{link-Pyr2Y35S.js.map → link-C98FG_p5.js.map} +1 -1
  156. package/dist/admin/assets/locales-CkuC7TJ1.js +2 -0
  157. package/dist/admin/assets/{locales-Bg3htKo8.js.map → locales-CkuC7TJ1.js.map} +1 -1
  158. package/dist/admin/assets/media-CbGSd_Mw.js +2 -0
  159. package/dist/admin/assets/{media-BCnVhaDH.js.map → media-CbGSd_Mw.js.map} +1 -1
  160. package/dist/admin/assets/{media-CtbfNgc-.js → media-CgxriwNL.js} +2 -2
  161. package/dist/admin/assets/{media-CtbfNgc-.js.map → media-CgxriwNL.js.map} +1 -1
  162. package/dist/admin/assets/network-Cc1TAyal.js +2 -0
  163. package/dist/admin/assets/network-Cc1TAyal.js.map +1 -0
  164. package/dist/admin/assets/{plus-BoDtdLCo.js → plus-cr9ZfO6j.js} +2 -2
  165. package/dist/admin/assets/{plus-BoDtdLCo.js.map → plus-cr9ZfO6j.js.map} +1 -1
  166. package/dist/admin/assets/publishing-RQUj-CyN.js +2 -0
  167. package/dist/admin/assets/{publishing-DdmWXRaM.js.map → publishing-RQUj-CyN.js.map} +1 -1
  168. package/dist/admin/assets/{radio-group-BoN9R_3K.js → radio-group-Btmx7dlD.js} +2 -2
  169. package/dist/admin/assets/{radio-group-BoN9R_3K.js.map → radio-group-Btmx7dlD.js.map} +1 -1
  170. package/dist/admin/assets/{rotate-ccw-DL6TzcZh.js → rotate-ccw-BP8Ba-mY.js} +2 -2
  171. package/dist/admin/assets/{rotate-ccw-DL6TzcZh.js.map → rotate-ccw-BP8Ba-mY.js.map} +1 -1
  172. package/dist/admin/assets/schedules-BIyBlsYZ.js +2 -0
  173. package/dist/admin/assets/{schedules-BmB9Y73z.js.map → schedules-BIyBlsYZ.js.map} +1 -1
  174. package/dist/admin/assets/schema-BMQEabwO.js +2 -0
  175. package/dist/admin/assets/{schema-D-qo7XSF.js.map → schema-BMQEabwO.js.map} +1 -1
  176. package/dist/admin/assets/{scroll-text-PqeZm472.js → scroll-text-B5vfi9fD.js} +2 -2
  177. package/dist/admin/assets/{scroll-text-PqeZm472.js.map → scroll-text-B5vfi9fD.js.map} +1 -1
  178. package/dist/admin/assets/{search-BdwIwOzC.js → search-wj7zbkx1.js} +2 -2
  179. package/dist/admin/assets/{search-BdwIwOzC.js.map → search-wj7zbkx1.js.map} +1 -1
  180. package/dist/admin/assets/{searchSchemas-DNjfDxmj.js → searchSchemas-fO_49fDI.js} +2 -2
  181. package/dist/admin/assets/{searchSchemas-DNjfDxmj.js.map → searchSchemas-fO_49fDI.js.map} +1 -1
  182. package/dist/admin/assets/{sections-BTS683ur.js → sections-DBQpB0uv.js} +2 -2
  183. package/dist/admin/assets/{sections-BTS683ur.js.map → sections-DBQpB0uv.js.map} +1 -1
  184. package/dist/admin/assets/{sections-BfxPwK0u.js → sections-SX-oiQoE.js} +2 -2
  185. package/dist/admin/assets/{sections-BfxPwK0u.js.map → sections-SX-oiQoE.js.map} +1 -1
  186. package/dist/admin/assets/{select-Bp8kO5Ko.js → select-JB2Vv7ep.js} +2 -2
  187. package/dist/admin/assets/{select-Bp8kO5Ko.js.map → select-JB2Vv7ep.js.map} +1 -1
  188. package/dist/admin/assets/{send-XPWo3m4u.js → send-CzFdgUc_.js} +2 -2
  189. package/dist/admin/assets/{send-XPWo3m4u.js.map → send-CzFdgUc_.js.map} +1 -1
  190. package/dist/admin/assets/seo-Bd0sWQMo.js +2 -0
  191. package/dist/admin/assets/{seo-CceGYTIX.js.map → seo-Bd0sWQMo.js.map} +1 -1
  192. package/dist/admin/assets/settings-CrRFxhSo.js +2 -0
  193. package/dist/admin/assets/{settings-TEbLvC-v.js.map → settings-CrRFxhSo.js.map} +1 -1
  194. package/dist/admin/assets/shapes-EMjfYsXV.js +6 -0
  195. package/dist/admin/assets/shapes-EMjfYsXV.js.map +1 -0
  196. package/dist/admin/assets/{skeleton-vXOCdnJv.js → skeleton-Dk-qdg0z.js} +2 -2
  197. package/dist/admin/assets/{skeleton-vXOCdnJv.js.map → skeleton-Dk-qdg0z.js.map} +1 -1
  198. package/dist/admin/assets/{snapshots-DUI2t-qF.js → snapshots-DbFQNJgN.js} +2 -2
  199. package/dist/admin/assets/{snapshots-DUI2t-qF.js.map → snapshots-DbFQNJgN.js.map} +1 -1
  200. package/dist/admin/assets/{sparkles-CvT-jxrW.js → sparkles-D_kmZJVd.js} +2 -2
  201. package/dist/admin/assets/{sparkles-CvT-jxrW.js.map → sparkles-D_kmZJVd.js.map} +1 -1
  202. package/dist/admin/assets/src-CMor9izq.js +7 -0
  203. package/dist/admin/assets/src-CMor9izq.js.map +1 -0
  204. package/dist/admin/assets/{stableId-BrtQedPy.js → stableId-g1uxJGSz.js} +2 -2
  205. package/dist/admin/assets/{stableId-BrtQedPy.js.map → stableId-g1uxJGSz.js.map} +1 -1
  206. package/dist/admin/assets/{store-CdIFG90N.js → store-CznhNKEi.js} +2 -2
  207. package/dist/admin/assets/{store-CdIFG90N.js.map → store-CznhNKEi.js.map} +1 -1
  208. package/dist/admin/assets/{switch-B1xClhNG.js → switch-DyCRGDs7.js} +2 -2
  209. package/dist/admin/assets/{switch-B1xClhNG.js.map → switch-DyCRGDs7.js.map} +1 -1
  210. package/dist/admin/assets/{theme-65PB8uAu.js → theme-Cv-MfOv8.js} +2 -2
  211. package/dist/admin/assets/{theme-65PB8uAu.js.map → theme-Cv-MfOv8.js.map} +1 -1
  212. package/dist/admin/assets/titles-DrQhW8z3.js +2 -0
  213. package/dist/admin/assets/titles-DrQhW8z3.js.map +1 -0
  214. package/dist/admin/assets/tokens-B1S81Epe.js +2 -0
  215. package/dist/admin/assets/{tokens-ixHjAkDK.js.map → tokens-B1S81Epe.js.map} +1 -1
  216. package/dist/admin/assets/{tooltip-CS_8cJu2.js → tooltip-CCOeMqiL.js} +2 -2
  217. package/dist/admin/assets/{tooltip-CS_8cJu2.js.map → tooltip-CCOeMqiL.js.map} +1 -1
  218. package/dist/admin/assets/{undo-2-BiTANHFz.js → undo-2-DpwwRQTf.js} +2 -2
  219. package/dist/admin/assets/{undo-2-BiTANHFz.js.map → undo-2-DpwwRQTf.js.map} +1 -1
  220. package/dist/admin/assets/useContentSchema-uXOfT985.js +2 -0
  221. package/dist/admin/assets/useContentSchema-uXOfT985.js.map +1 -0
  222. package/dist/admin/assets/useCursorPager-BHYqHb3M.js +2 -0
  223. package/dist/admin/assets/{useCursorPager-0zHjlm-7.js.map → useCursorPager-BHYqHb3M.js.map} +1 -1
  224. package/dist/admin/assets/{useDiscardGuard-CMMJgkI2.js → useDiscardGuard-DvBI3VIz.js} +2 -2
  225. package/dist/admin/assets/{useDiscardGuard-CMMJgkI2.js.map → useDiscardGuard-DvBI3VIz.js.map} +1 -1
  226. package/dist/admin/assets/{useMediaPickerDialog-xvQ8cofO.js → useMediaPickerDialog-CehOsykG.js} +2 -2
  227. package/dist/admin/assets/{useMediaPickerDialog-xvQ8cofO.js.map → useMediaPickerDialog-CehOsykG.js.map} +1 -1
  228. package/dist/admin/assets/{useMediaUploader-BVNTeSAU.js → useMediaUploader-DvtxYXxD.js} +2 -2
  229. package/dist/admin/assets/{useMediaUploader-BVNTeSAU.js.map → useMediaUploader-DvtxYXxD.js.map} +1 -1
  230. package/dist/admin/assets/useModelIndex-D8Q0oM4M.js +2 -0
  231. package/dist/admin/assets/useModelIndex-D8Q0oM4M.js.map +1 -0
  232. package/dist/admin/assets/useNetworkPermission-DehDln-U.js +2 -0
  233. package/dist/admin/assets/{useNetworkPermission-Cts98h9d.js.map → useNetworkPermission-DehDln-U.js.map} +1 -1
  234. package/dist/admin/assets/{usePaletteItems-DtReWmkd.js → usePaletteItems-CFpNlSOs.js} +2 -2
  235. package/dist/admin/assets/{usePaletteItems-DtReWmkd.js.map → usePaletteItems-CFpNlSOs.js.map} +1 -1
  236. package/dist/admin/assets/usePlaces-CySN2Vwz.js +2 -0
  237. package/dist/admin/assets/usePlaces-CySN2Vwz.js.map +1 -0
  238. package/dist/admin/assets/useResolvedDefinitions-C279ueCH.js +2 -0
  239. package/dist/admin/assets/useResolvedDefinitions-C279ueCH.js.map +1 -0
  240. package/dist/admin/assets/{useResolvedScheme-CScQpr-P.js → useResolvedScheme-DEq7P4R5.js} +2 -2
  241. package/dist/admin/assets/{useResolvedScheme-CScQpr-P.js.map → useResolvedScheme-DEq7P4R5.js.map} +1 -1
  242. package/dist/admin/assets/useSaveShortcut-DQuNL1uJ.js +2 -0
  243. package/dist/admin/assets/useSaveShortcut-DQuNL1uJ.js.map +1 -0
  244. package/dist/admin/assets/{useSchemaScopeAccess-ByrxIdKM.js → useSchemaScopeAccess-JXOMx51q.js} +2 -2
  245. package/dist/admin/assets/{useSchemaScopeAccess-ByrxIdKM.js.map → useSchemaScopeAccess-JXOMx51q.js.map} +1 -1
  246. package/dist/admin/assets/users-38jLQ7zr.js +2 -0
  247. package/dist/admin/assets/users-38jLQ7zr.js.map +1 -0
  248. package/dist/admin/assets/{users-DM7CXUBJ.js → users-DYwcVDqp.js} +2 -2
  249. package/dist/admin/assets/{users-DM7CXUBJ.js.map → users-DYwcVDqp.js.map} +1 -1
  250. package/dist/admin/assets/{zod-hUh5nXnX.js → zod-vPzaNsuW.js} +2 -2
  251. package/dist/admin/assets/{zod-hUh5nXnX.js.map → zod-vPzaNsuW.js.map} +1 -1
  252. package/dist/admin/index.html +60 -58
  253. package/dist/cli.js +1 -1
  254. package/dist/{cliMain-D08HeAd_.js → cliMain-DzBXO7Oa.js} +98 -21
  255. package/dist/cliMain-DzBXO7Oa.js.map +1 -0
  256. package/dist/config.d.ts +2 -2
  257. package/dist/index.d.ts +42 -5
  258. package/dist/index.js +1 -1
  259. package/dist/public-B57h4F7Y.js.map +1 -1
  260. package/dist/{public-COKbHR-N.d.ts → public-jttKsns_.d.ts} +47 -5
  261. package/dist/{worker-jspgh10V.js → worker-6ru1tYBs.js} +2790 -1063
  262. package/dist/worker-6ru1tYBs.js.map +1 -0
  263. package/package.json +5 -5
  264. package/dist/admin/assets/AssistError-1s3PuY0X.js +0 -2
  265. package/dist/admin/assets/Body-BzZD-TZT.js +0 -2
  266. package/dist/admin/assets/Body-BzZD-TZT.js.map +0 -1
  267. package/dist/admin/assets/Builder-60jO_nbS.js +0 -2
  268. package/dist/admin/assets/Builder-60jO_nbS.js.map +0 -1
  269. package/dist/admin/assets/Form-D_4fhOy0.js +0 -2
  270. package/dist/admin/assets/Form-D_4fhOy0.js.map +0 -1
  271. package/dist/admin/assets/FormSelectField-Br8bkwRF.js +0 -2
  272. package/dist/admin/assets/FormSelectField-Br8bkwRF.js.map +0 -1
  273. package/dist/admin/assets/StepList-sriwGP1e.js +0 -2
  274. package/dist/admin/assets/StepList-sriwGP1e.js.map +0 -1
  275. package/dist/admin/assets/Structure-B2HZ9UZu.js +0 -2
  276. package/dist/admin/assets/auth-CQO4MBUj.js +0 -2
  277. package/dist/admin/assets/changeSets-EMTUJT0M.js +0 -2
  278. package/dist/admin/assets/chevron-left-DGU3HGYG.js +0 -2
  279. package/dist/admin/assets/content-CgZS_S7P.js +0 -3
  280. package/dist/admin/assets/content-CgZS_S7P.js.map +0 -1
  281. package/dist/admin/assets/createLucideIcon-CLmh7Go-.js +0 -2
  282. package/dist/admin/assets/createLucideIcon-CLmh7Go-.js.map +0 -1
  283. package/dist/admin/assets/develop-9ZeAjSIw.js +0 -11
  284. package/dist/admin/assets/develop-9ZeAjSIw.js.map +0 -1
  285. package/dist/admin/assets/es2015-BJge4oQL.js +0 -42
  286. package/dist/admin/assets/es2015-BJge4oQL.js.map +0 -1
  287. package/dist/admin/assets/followPlural-DEr2kxEc.js +0 -2
  288. package/dist/admin/assets/followPlural-DEr2kxEc.js.map +0 -1
  289. package/dist/admin/assets/inbox-B8XZ8L6s.js +0 -2
  290. package/dist/admin/assets/inbox-B8XZ8L6s.js.map +0 -1
  291. package/dist/admin/assets/index-DoJsnLI1.js +0 -4
  292. package/dist/admin/assets/index-DoJsnLI1.js.map +0 -1
  293. package/dist/admin/assets/index-lxe7WimO.css +0 -2
  294. package/dist/admin/assets/locales-Bg3htKo8.js +0 -2
  295. package/dist/admin/assets/media-BCnVhaDH.js +0 -2
  296. package/dist/admin/assets/network--5X46kWN.js +0 -2
  297. package/dist/admin/assets/network--5X46kWN.js.map +0 -1
  298. package/dist/admin/assets/publishing-DdmWXRaM.js +0 -2
  299. package/dist/admin/assets/schedules-BmB9Y73z.js +0 -2
  300. package/dist/admin/assets/schema-D-qo7XSF.js +0 -2
  301. package/dist/admin/assets/seo-CceGYTIX.js +0 -2
  302. package/dist/admin/assets/settings-TEbLvC-v.js +0 -2
  303. package/dist/admin/assets/shapes-WrYO9Spf.js +0 -6
  304. package/dist/admin/assets/shapes-WrYO9Spf.js.map +0 -1
  305. package/dist/admin/assets/src-ndgTSYLX.js +0 -7
  306. package/dist/admin/assets/src-ndgTSYLX.js.map +0 -1
  307. package/dist/admin/assets/titles-CQiqqDw-.js +0 -2
  308. package/dist/admin/assets/titles-CQiqqDw-.js.map +0 -1
  309. package/dist/admin/assets/tokens-ixHjAkDK.js +0 -2
  310. package/dist/admin/assets/useContentSchema-DtYfhsd2.js +0 -2
  311. package/dist/admin/assets/useContentSchema-DtYfhsd2.js.map +0 -1
  312. package/dist/admin/assets/useCursorPager-0zHjlm-7.js +0 -2
  313. package/dist/admin/assets/useNetworkPermission-Cts98h9d.js +0 -2
  314. package/dist/admin/assets/usePlaces-DC47wVeU.js +0 -2
  315. package/dist/admin/assets/usePlaces-DC47wVeU.js.map +0 -1
  316. package/dist/admin/assets/useQueries-CirW3Mvp.js +0 -2
  317. package/dist/admin/assets/useQueries-CirW3Mvp.js.map +0 -1
  318. package/dist/admin/assets/useSaveShortcut-rKtp1qK7.js +0 -2
  319. package/dist/admin/assets/useSaveShortcut-rKtp1qK7.js.map +0 -1
  320. package/dist/admin/assets/users-2iJYwlJb.js +0 -2
  321. package/dist/admin/assets/users-2iJYwlJb.js.map +0 -1
  322. package/dist/cliMain-D08HeAd_.js.map +0 -1
  323. package/dist/worker-jspgh10V.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Thumbnail-mFfESZiW.js","names":["__iconData","__iconData","__iconData","__iconData","i18next","FileVideo","FileAudio","__toESM","useMe","StatusChip","useTranslation","createLucideIcon","instance","FileText","cn","VARIANT_LABEL_KEYS","isKnownVariant","__iconData$4","FileHeadphone","__iconData$3","FileImage","__iconData$2","FilePlay","__iconData$1","File","__iconData","Pencil","useMediaPermissions","me","permissions","role","UNITS","formatBytes","value","bytes","unit","MEDIA_STATUS_DISPLAY","import_jsx_runtime","require_jsx_runtime","Variants","asset","label","variant","status","FileIcon","mimeType","isImage","MAX_KIND_LENGTH","fileKindLabel","extension","filename","thumbnailUrl","candidate","Thumbnail","url","className"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-headphone.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-image.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-play.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/pencil.mjs","../../src/hooks/useMediaPermissions.ts","../../src/features/Media/helpers/formatBytes.ts","../../src/features/Media/helpers/statusDisplay.ts","../../src/features/Media/Details/Variants/index.tsx","../../src/features/Media/FileIcon/index.tsx","../../src/features/Media/helpers/fileKind.ts","../../src/features/Media/Thumbnail/index.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-headphone\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343\",\n key: \"1vfytu\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n {\n d: \"M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0\",\n key: \"1etmh7\"\n }\n ]\n ],\n aliases: [\"file-audio\", \"file-audio-2\"]\n};\n__iconData.node;\nconst FileHeadphone = createLucideIcon(__iconData);\n\nexport { __iconData, FileHeadphone as default };\n//# sourceMappingURL=file-headphone.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-image\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"circle\", { cx: \"10\", cy: \"12\", r: \"2\", key: \"737tya\" }],\n [\"path\", { d: \"m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22\", key: \"wt3hpn\" }]\n ]\n};\n__iconData.node;\nconst FileImage = createLucideIcon(__iconData);\n\nexport { __iconData, FileImage as default };\n//# sourceMappingURL=file-image.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-play\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n {\n d: \"M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z\",\n key: \"1tzo1f\"\n }\n ]\n ],\n aliases: [\"file-video\"]\n};\n__iconData.node;\nconst FilePlay = createLucideIcon(__iconData);\n\nexport { __iconData, FilePlay as default };\n//# sourceMappingURL=file-play.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }]\n ]\n};\n__iconData.node;\nconst File = createLucideIcon(__iconData);\n\nexport { __iconData, File as default };\n//# sourceMappingURL=file.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"pencil\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n key: \"1a8usu\"\n }\n ],\n [\"path\", { d: \"m15 5 4 4\", key: \"1mk7zo\" }]\n ]\n};\n__iconData.node;\nconst Pencil = createLucideIcon(__iconData);\n\nexport { __iconData, Pencil as default };\n//# sourceMappingURL=pencil.mjs.map\n","import { useMe } from '@/api/auth';\n\n/** What the signed-in admin may do in the media library (the server checks again). */\nexport const useMediaPermissions = () => {\n const me = useMe().data;\n const permissions = me?.globalPermissions ?? [];\n return {\n canWrite: permissions.includes('media.write'),\n canManage: permissions.includes('media.manage'),\n /** Only owners may delete media that content still uses. */\n isOwner: me?.roles.some((role) => role.key === 'owner') ?? false,\n };\n};\n","import { i18next } from '@/app/i18n';\n\nconst UNITS = ['byte', 'kilobyte', 'megabyte', 'gigabyte'] as const;\n\n/**\n * `1536` → `1.5 kB`, in the admin's language. Under a kilobyte the unit is spelled out (`44 bytes`,\n * `1 byte`): the short form of `byte` is not plural in English (\"44 byte\").\n */\nexport const formatBytes = (bytes: number): string => {\n let value = bytes;\n let unit = 0;\n while (value >= 1000 && unit < UNITS.length - 1) {\n value /= 1000;\n unit += 1;\n }\n return new Intl.NumberFormat(i18next.language, {\n style: 'unit',\n unit: UNITS[unit],\n unitDisplay: unit === 0 ? 'long' : 'short',\n maximumFractionDigits: unit === 0 ? 0 : 1,\n }).format(value);\n};\n","import type { MediaAssetStatus, MediaVariantStatus } from '@shapio/client';\nimport type { StatusTone } from '@/components/StatusChip';\n\ntype Display = { labelKey: string; tone: StatusTone };\n\n/** How an asset's or variant's processing state reads as a `StatusChip`. */\nexport const MEDIA_STATUS_DISPLAY = {\n pending: { labelKey: 'media.status.pending', tone: 'progress' },\n processing: { labelKey: 'media.status.processing', tone: 'progress' },\n ready: { labelKey: 'media.status.ready', tone: 'success' },\n failed: { labelKey: 'media.status.failed', tone: 'danger' },\n} as const satisfies Record<MediaAssetStatus | MediaVariantStatus, Display>;\n","import type { MediaAsset } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { StatusChip } from '@/components/StatusChip';\nimport { isKnownVariant, VARIANT_LABEL_KEYS } from '../../constants';\nimport { formatBytes } from '../../helpers/formatBytes';\nimport { MEDIA_STATUS_DISPLAY } from '../../helpers/statusDisplay';\n\ntype VariantsProps = { asset: MediaAsset };\n\n/** Generated sizes and their status (made in the background after upload). */\nexport const Variants = ({ asset }: VariantsProps) => {\n const { t } = useTranslation();\n if (asset.variants.length === 0) {\n return (\n <p className=\"text-sm text-muted-foreground\">\n {asset.status === 'processing' ? t('media.variants.processing') : t('media.variants.none')}\n </p>\n );\n }\n return (\n <ul className=\"divide-y rounded-lg border\">\n {asset.variants.map((variant) => {\n const label = isKnownVariant(variant.name) ? t(VARIANT_LABEL_KEYS[variant.name]) : variant.name;\n const status = MEDIA_STATUS_DISPLAY[variant.status];\n return (\n <li key={variant.name} className=\"flex min-w-0 items-center gap-3 px-3 py-2\">\n <span className=\"min-w-0 flex-1\">\n {variant.url ? (\n <a\n href={variant.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"rounded-sm text-sm font-medium text-link underline-offset-4 outline-none hover:underline focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n >\n {label}\n </a>\n ) : (\n <span className=\"text-sm font-medium\">{label}</span>\n )}\n <span className=\"block truncate text-meta text-muted-foreground\">\n {variant.width && variant.height\n ? t('media.dimensions', { width: variant.width, height: variant.height })\n : null}\n {variant.sizeBytes ? ` · ${formatBytes(variant.sizeBytes)}` : null}\n </span>\n </span>\n <StatusChip tone={status.tone} label={t(status.labelKey)} size=\"sm\" />\n </li>\n );\n })}\n </ul>\n );\n};\n","import { File, FileAudio, FileImage, FileText, FileVideo } from 'lucide-react';\n\ntype FileIconProps = { mimeType: string; className?: string };\n\n/** An icon for files without a preview. Decorative: the file's name or type is always shown beside it. */\nexport const FileIcon = ({ mimeType, className }: FileIconProps) => {\n if (mimeType.startsWith('image/')) {\n return <FileImage aria-hidden=\"true\" className={className} />;\n }\n if (mimeType.startsWith('video/')) {\n return <FileVideo aria-hidden=\"true\" className={className} />;\n }\n if (mimeType.startsWith('audio/')) {\n return <FileAudio aria-hidden=\"true\" className={className} />;\n }\n if (mimeType === 'application/pdf' || mimeType.startsWith('text/')) {\n return <FileText aria-hidden=\"true\" className={className} />;\n }\n return <File aria-hidden=\"true\" className={className} />;\n};\n","export const isImage = (mimeType: string) => mimeType.startsWith('image/');\n\nconst MAX_KIND_LENGTH = 5;\n\n/**\n * A short format code for a file (\"PNG\", \"PDF\"): the file name's extension, else the MIME subtype. A code,\n * not prose, so it is not translated.\n */\nexport const fileKindLabel = (filename: string, mimeType: string): string => {\n const extension = /\\.([a-z0-9]+)$/i.exec(filename)?.[1];\n if (extension && extension.length <= MAX_KIND_LENGTH) {\n return extension.toUpperCase();\n }\n const subtype = mimeType.split('/')[1]?.split(/[.+;-]/)[0] ?? '';\n return subtype.toUpperCase();\n};\n","import type { MediaAsset } from '@shapio/client';\nimport { cn } from '@/helpers/cn';\nimport { FileIcon } from '../FileIcon';\nimport { isImage } from '../helpers/fileKind';\n\ntype ThumbnailProps = { asset: MediaAsset; className?: string };\n\n/** The library thumbnail: the `thumbnail` variant once ready, the original for small images and SVGs. */\nconst thumbnailUrl = (asset: MediaAsset): string | undefined => {\n const variant = asset.variants.find((candidate) => candidate.name === 'thumbnail' && candidate.url);\n if (variant?.url) {\n return variant.url;\n }\n return isImage(asset.mimeType) ? asset.url : undefined;\n};\n\n/** Decorative: the asset's name is always shown beside it, so the image has empty alt text. */\nexport const Thumbnail = ({ asset, className }: ThumbnailProps) => {\n const url = thumbnailUrl(asset);\n return (\n <div className={cn('flex items-center justify-center overflow-hidden bg-muted', className)}>\n {url ? (\n <img src={url} alt=\"\" loading=\"lazy\" decoding=\"async\" className=\"size-full object-cover\" />\n ) : (\n <FileIcon mimeType={asset.mimeType} className=\"size-8 text-muted-foreground\" />\n )}\n </div>\n );\n};\n"],"ignoreList":[0,1,2,3,4],"mappings":"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"}
1
+ {"version":3,"file":"Thumbnail-DauHAkh8.js","names":["__iconData","__iconData","__iconData","__iconData","i18next","FileVideo","FileAudio","__toESM","useMe","StatusChip","useTranslation","createLucideIcon","instance","FileText","cn","VARIANT_LABEL_KEYS","isKnownVariant","__iconData$4","FileHeadphone","__iconData$3","FileImage","__iconData$2","FilePlay","__iconData$1","File","__iconData","Pencil","useMediaPermissions","me","permissions","role","UNITS","formatBytes","value","bytes","unit","MEDIA_STATUS_DISPLAY","import_jsx_runtime","require_jsx_runtime","Variants","asset","label","variant","status","FileIcon","mimeType","isImage","MAX_KIND_LENGTH","fileKindLabel","extension","filename","thumbnailUrl","candidate","Thumbnail","url","className"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-headphone.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-image.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-play.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/pencil.mjs","../../src/hooks/useMediaPermissions.ts","../../src/features/Media/helpers/formatBytes.ts","../../src/features/Media/helpers/statusDisplay.ts","../../src/features/Media/Details/Variants/index.tsx","../../src/features/Media/FileIcon/index.tsx","../../src/features/Media/helpers/fileKind.ts","../../src/features/Media/Thumbnail/index.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-headphone\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343\",\n key: \"1vfytu\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n {\n d: \"M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0\",\n key: \"1etmh7\"\n }\n ]\n ],\n aliases: [\"file-audio\", \"file-audio-2\"]\n};\n__iconData.node;\nconst FileHeadphone = createLucideIcon(__iconData);\n\nexport { __iconData, FileHeadphone as default };\n//# sourceMappingURL=file-headphone.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-image\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"circle\", { cx: \"10\", cy: \"12\", r: \"2\", key: \"737tya\" }],\n [\"path\", { d: \"m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22\", key: \"wt3hpn\" }]\n ]\n};\n__iconData.node;\nconst FileImage = createLucideIcon(__iconData);\n\nexport { __iconData, FileImage as default };\n//# sourceMappingURL=file-image.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-play\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n {\n d: \"M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z\",\n key: \"1tzo1f\"\n }\n ]\n ],\n aliases: [\"file-video\"]\n};\n__iconData.node;\nconst FilePlay = createLucideIcon(__iconData);\n\nexport { __iconData, FilePlay as default };\n//# sourceMappingURL=file-play.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }]\n ]\n};\n__iconData.node;\nconst File = createLucideIcon(__iconData);\n\nexport { __iconData, File as default };\n//# sourceMappingURL=file.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"pencil\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\",\n key: \"1a8usu\"\n }\n ],\n [\"path\", { d: \"m15 5 4 4\", key: \"1mk7zo\" }]\n ]\n};\n__iconData.node;\nconst Pencil = createLucideIcon(__iconData);\n\nexport { __iconData, Pencil as default };\n//# sourceMappingURL=pencil.mjs.map\n","import { useMe } from '@/api/auth';\n\n/** What the signed-in admin may do in the media library (the server checks again). */\nexport const useMediaPermissions = () => {\n const me = useMe().data;\n const permissions = me?.globalPermissions ?? [];\n return {\n canWrite: permissions.includes('media.write'),\n canManage: permissions.includes('media.manage'),\n /** Only owners may delete media that content still uses. */\n isOwner: me?.roles.some((role) => role.key === 'owner') ?? false,\n };\n};\n","import { i18next } from '@/app/i18n';\n\nconst UNITS = ['byte', 'kilobyte', 'megabyte', 'gigabyte'] as const;\n\n/**\n * `1536` → `1.5 kB`, in the admin's language. Under a kilobyte the unit is spelled out (`44 bytes`,\n * `1 byte`): the short form of `byte` is not plural in English (\"44 byte\").\n */\nexport const formatBytes = (bytes: number): string => {\n let value = bytes;\n let unit = 0;\n while (value >= 1000 && unit < UNITS.length - 1) {\n value /= 1000;\n unit += 1;\n }\n return new Intl.NumberFormat(i18next.language, {\n style: 'unit',\n unit: UNITS[unit],\n unitDisplay: unit === 0 ? 'long' : 'short',\n maximumFractionDigits: unit === 0 ? 0 : 1,\n }).format(value);\n};\n","import type { MediaAssetStatus, MediaVariantStatus } from '@shapio/client';\nimport type { StatusTone } from '@/components/StatusChip';\n\ntype Display = { labelKey: string; tone: StatusTone };\n\n/** How an asset's or variant's processing state reads as a `StatusChip`. */\nexport const MEDIA_STATUS_DISPLAY = {\n pending: { labelKey: 'media.status.pending', tone: 'progress' },\n processing: { labelKey: 'media.status.processing', tone: 'progress' },\n ready: { labelKey: 'media.status.ready', tone: 'success' },\n failed: { labelKey: 'media.status.failed', tone: 'danger' },\n} as const satisfies Record<MediaAssetStatus | MediaVariantStatus, Display>;\n","import type { MediaAsset } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { StatusChip } from '@/components/StatusChip';\nimport { isKnownVariant, VARIANT_LABEL_KEYS } from '../../constants';\nimport { formatBytes } from '../../helpers/formatBytes';\nimport { MEDIA_STATUS_DISPLAY } from '../../helpers/statusDisplay';\n\ntype VariantsProps = { asset: MediaAsset };\n\n/** Generated sizes and their status (made in the background after upload). */\nexport const Variants = ({ asset }: VariantsProps) => {\n const { t } = useTranslation();\n if (asset.variants.length === 0) {\n return (\n <p className=\"text-sm text-muted-foreground\">\n {asset.status === 'processing' ? t('media.variants.processing') : t('media.variants.none')}\n </p>\n );\n }\n return (\n <ul className=\"divide-y rounded-lg border\">\n {asset.variants.map((variant) => {\n const label = isKnownVariant(variant.name) ? t(VARIANT_LABEL_KEYS[variant.name]) : variant.name;\n const status = MEDIA_STATUS_DISPLAY[variant.status];\n return (\n <li key={variant.name} className=\"flex min-w-0 items-center gap-3 px-3 py-2\">\n <span className=\"min-w-0 flex-1\">\n {variant.url ? (\n <a\n href={variant.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"rounded-sm text-sm font-medium text-link underline-offset-4 outline-none hover:underline focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n >\n {label}\n </a>\n ) : (\n <span className=\"text-sm font-medium\">{label}</span>\n )}\n <span className=\"block truncate text-meta text-muted-foreground\">\n {variant.width && variant.height\n ? t('media.dimensions', { width: variant.width, height: variant.height })\n : null}\n {variant.sizeBytes ? ` · ${formatBytes(variant.sizeBytes)}` : null}\n </span>\n </span>\n <StatusChip tone={status.tone} label={t(status.labelKey)} size=\"sm\" />\n </li>\n );\n })}\n </ul>\n );\n};\n","import { File, FileAudio, FileImage, FileText, FileVideo } from 'lucide-react';\n\ntype FileIconProps = { mimeType: string; className?: string };\n\n/** An icon for files without a preview. Decorative: the file's name or type is always shown beside it. */\nexport const FileIcon = ({ mimeType, className }: FileIconProps) => {\n if (mimeType.startsWith('image/')) {\n return <FileImage aria-hidden=\"true\" className={className} />;\n }\n if (mimeType.startsWith('video/')) {\n return <FileVideo aria-hidden=\"true\" className={className} />;\n }\n if (mimeType.startsWith('audio/')) {\n return <FileAudio aria-hidden=\"true\" className={className} />;\n }\n if (mimeType === 'application/pdf' || mimeType.startsWith('text/')) {\n return <FileText aria-hidden=\"true\" className={className} />;\n }\n return <File aria-hidden=\"true\" className={className} />;\n};\n","export const isImage = (mimeType: string) => mimeType.startsWith('image/');\n\nconst MAX_KIND_LENGTH = 5;\n\n/**\n * A short format code for a file (\"PNG\", \"PDF\"): the file name's extension, else the MIME subtype. A code,\n * not prose, so it is not translated.\n */\nexport const fileKindLabel = (filename: string, mimeType: string): string => {\n const extension = /\\.([a-z0-9]+)$/i.exec(filename)?.[1];\n if (extension && extension.length <= MAX_KIND_LENGTH) {\n return extension.toUpperCase();\n }\n const subtype = mimeType.split('/')[1]?.split(/[.+;-]/)[0] ?? '';\n return subtype.toUpperCase();\n};\n","import type { MediaAsset } from '@shapio/client';\nimport { cn } from '@/helpers/cn';\nimport { FileIcon } from '../FileIcon';\nimport { isImage } from '../helpers/fileKind';\n\ntype ThumbnailProps = { asset: MediaAsset; className?: string };\n\n/** The library thumbnail: the `thumbnail` variant once ready, the original for small images and SVGs. */\nconst thumbnailUrl = (asset: MediaAsset): string | undefined => {\n const variant = asset.variants.find((candidate) => candidate.name === 'thumbnail' && candidate.url);\n if (variant?.url) {\n return variant.url;\n }\n return isImage(asset.mimeType) ? asset.url : undefined;\n};\n\n/** Decorative: the asset's name is always shown beside it, so the image has empty alt text. */\nexport const Thumbnail = ({ asset, className }: ThumbnailProps) => {\n const url = thumbnailUrl(asset);\n return (\n <div className={cn('flex items-center justify-center overflow-hidden bg-muted', className)}>\n {url ? (\n <img src={url} alt=\"\" loading=\"lazy\" decoding=\"async\" className=\"size-full object-cover\" />\n ) : (\n <FileIcon mimeType={asset.mimeType} className=\"size-8 text-muted-foreground\" />\n )}\n </div>\n );\n};\n"],"ignoreList":[0,1,2,3,4],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{c as n,d as r,f as i,i as a,l as o,o as s,r as c,u as l}from"./createLucideIcon-BOsNKleB.js";import{E as u}from"./es2015-1nJWBurR.js";var d=e(t()),f={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,"!doctype":!0,"!DOCTYPE":!0},p=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?("[^"]*"|'[^']*')/g;function m(e){let t={type:`tag`,name:``,voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(f[n[1]]||e.charAt(e.length-2)===`/`)&&(t.voidElement=!0),t.name.startsWith(`!--`))){let t=e.indexOf(`-->`);return{type:`comment`,comment:t===-1?``:e.slice(4,t)}}let r=new RegExp(p),i=null;for(;i=r.exec(e),i!==null;)if(i[0].trim()){if(i[1]){let e=i[1].trim(),n=[e,null],a=e.indexOf(`=`);a>-1&&(n=[e.slice(0,a),e.slice(a+1)]),t.attrs[n[0]]=n[1],r.lastIndex--}else i[2]&&(t.attrs[i[2]]=i[3].trim().substring(1,i[3].length-1))}return t}var h=/<!--[\s\S]*?-->|<[a-zA-Z0-9\-!/](?:"[^"]*"|'[^']*'|[^'">])*>/g,g=/<\/?([^\s]+?)[/\s>]/,_=/^\s*$/,v=/^(script|style)$/i,y=`\0`,b=Object.create(null);function x(e){e.forEach(function(e){if(e.type===`text`){e.content=e.content.split(y).join(`<`);return}if(e.type===`comment`){e.comment=e.comment.split(y).join(`<`);return}for(let t in e.attrs){let n=e.attrs[t];typeof n==`string`&&n.indexOf(y)>-1&&(e.attrs[t]=n.split(y).join(`<`))}e.children.length&&x(e.children)})}function S(e,t){let n=t&&t.components||b,r=t&&t.allowedTags,i=!1;if(r){let t=typeof r==`function`?r:function(e){return r.indexOf(e)>-1},n=``,a=0;h.lastIndex=0;let o;for(;o=h.exec(e);){let r=o[0];n+=e.slice(a,o.index);let s=r.match(g);r.startsWith(`<!--`)||s&&t(s[1])?(n+=r,a=o.index+r.length):(i=!0,n+=y,a=o.index+1,h.lastIndex=a)}e=n+e.slice(a)}let a=[],o=[],s,c=-1,l=!1,u=0,d;if(e.indexOf(`<`)!==0){let t=e.indexOf(`<`);a.push({type:`text`,content:t===-1?e:e.substring(0,t)})}let f=[],p;for(;p=h.exec(e);)f.push(p);return f.forEach(function(e,t){let n=e[0];if(!n||n.startsWith(`<!--`))return;let r=0,i=0,a=-1,o=null;for(let e=0;e<n.length;e++){let t=n.charAt(e);o?t===o&&(o=null):t===`"`||t===`'`?o=t:t===`<`?(r++,r===2&&(a=e)):t===`>`&&i++}let s=a>-1&&/[a-zA-Z0-9\-!/]/.test(n.charAt(a+1));if(r>i&&s){let e=n.substring(0,a),r=n.substring(e.length);f[t][0]=r,f[t].index+=e.length}}),f.forEach(function(t,r){let i=t[0];if(!i)return;let p=t.index;if(p<u)return;if(l){if(i!==`</`+s.name+`>`)return;l=!1}let h=i.charAt(1)!==`/`,g=i.startsWith(`<!--`),y=p+i.length,b=e.charAt(y),x=f[r+1],S;if(b===`<`&&x){let t=e.substring(y,x.index);S=t.split(`<`).length>t.split(`>`).length}let C;if(g){let t=m(i);if(c<0)return a.push(t),a;C=o[c],C.children.push(t);let n=e.slice(y,x?x.index:void 0);return n.length>0&&C.children.push({type:`text`,content:n}),a}if(h){c++,s=m(i),s.type===`tag`&&n[s.name]&&(s.type=`component`,l=!0);let t=!1;if(!l&&!s.voidElement&&v.test(s.name)){t=!0,d||=e.toLowerCase();let n=d.indexOf(`</`+s.name.toLowerCase()+`>`,y),r=n===-1?e.length:n,i=e.slice(y,r);i&&s.children.push({type:`text`,content:i}),u=r}!s.voidElement&&!l&&!t&&b&&b!==`<`&&s.children.push({type:`text`,content:e.slice(y,x?x.index:void 0)}),c===0&&a.push(s),C=o[c-1],C&&C.children.push(s),o[c]=s}if((!h||s.voidElement)&&(c>-1&&(s.voidElement||s.name===i.slice(2,-1))&&(c--,s=c===-1?a:o[c]),!l&&(b!==`<`||S)&&b)){C=c===-1?a:o[c].children;let t=x?x.index:-1,n=e.slice(y,t===-1?void 0:t);_.test(n)&&(n=` `),(t>-1&&c+C.length>=0||n!==` `)&&C.push({type:`text`,content:n})}}),i&&x(a),a}function C(e){let t=[];for(let n in e)e[n]===null?t.push(n):t.push(n+`="`+String(e[n]).replace(/"/g,`&quot;`)+`"`);return t.length?` `+t.join(` `):``}function w(e,t){switch(t.type){case`text`:return e+t.content;case`tag`:{let n=t.voidElement&&t.name.toLowerCase()!==`!doctype`?`/>`:`>`;return e+=`<`+t.name+(t.attrs?C(t.attrs):``)+n,t.voidElement?e:e+t.children.reduce(w,``)+`</`+t.name+`>`}case`comment`:return e+=`<!--`+t.comment+`-->`,e}}function T(e){return e.reduce(function(e,t){return e+w(``,t)},``)}var E={parse:S,stringify:T},D=(e,t)=>{if(!e)return!1;let n=e.props?.children??e.children;return t?n.length>0:!!n},O=e=>{if(!e)return[];let t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?A(t):t},k=e=>A(e).every(d.isValidElement),A=e=>Array.isArray(e)?e:[e],j=(e,t)=>{let n={...t};return n.props={...t.props,...e.props},n},M=e=>{let t={};if(!e)return t;let n=e=>{A(e).forEach(e=>{l(e)||(D(e)?n(O(e)):o(e)&&!(0,d.isValidElement)(e)&&Object.assign(t,e))})};return n(e),t},N=(e,t,n,i)=>{if(!e)return``;let a=``,s=A(e),c=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return s.forEach((e,s)=>{if(l(e)){a+=`${e}`;return}if((0,d.isValidElement)(e)){let{props:r,type:o}=e,u=Object.keys(r).length,d=c.indexOf(o)>-1,f=r.children;if(!f&&d&&!u){a+=`<${o}/>`;return}if(!f&&(!d||u)||r.i18nIsDynamicList){a+=`<${s}></${s}>`;return}if(d&&u<=1){let e=l(f)?f:N(f,t,n,i);a+=`<${o}>${e}</${o}>`;return}let p=N(f,t,n,i);a+=`<${s}>${p}</${s}>`;return}if(e===null){r(n,`TRANS_NULL_VALUE`,`Passed in a null value as child`,{i18nKey:i});return}if(o(e)){let{format:t,...o}=e,s=Object.keys(o);if(s.length===1){let e=t?`${s[0]}, ${t}`:s[0];a+=`{{${e}}}`;return}r(n,`TRANS_INVALID_OBJ`,`Invalid child - Object should only have keys {{ value, format }} (format is optional).`,{i18nKey:i,child:e});return}r(n,`TRANS_INVALID_VAR`,`Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`,{i18nKey:i,child:e})}),a},P=(e,t,r,i,a,c,u)=>{if(r===``)return[];let f=a.transKeepBasicHtmlNodesFor||[],p=r&&new RegExp(f.map(e=>`<${e}`).join(`|`)).test(r);if(!e&&!t&&!p&&!u)return[r];let m=t??{},h=e=>{A(e).forEach(e=>{l(e)||(D(e)?h(O(e)):o(e)&&!(0,d.isValidElement)(e)&&Object.assign(m,e))})};h(e);let g=Object.keys(m),_=E.parse(`<0>${r}</0>`,{allowedTags:e=>/^\d+$/.test(e)||f.indexOf(e)>-1||g.indexOf(e)>-1}),v={...m,...c},y=(e,t,n)=>{let r=O(e),i=x(r,t.children,n);return k(r)&&i.length===0||e.props?.i18nIsDynamicList?r:i},b=(e,t,n,r,i)=>{e.dummy?(e.children=t,n.push((0,d.cloneElement)(e,{key:r},i?void 0:t))):n.push(...d.Children.map([e],e=>{if(e.type===d.Fragment||e.props?.i18nIsDynamicList!==void 0){let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t!==`children`&&t!==`i18nIsDynamicList`&&(n[t]=e.props[t])}),(0,d.createElement)(e.type,n,i?null:t)}let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t!==`ref`&&t!==`children`&&(n[t]=e.props[t])}),(0,d.cloneElement)(e,n,i?null:t)}))},x=(e,r,c)=>{let m=A(e),h=A(r),g={};return h.reduce((e,r,h)=>{let _=r.children?.[0]?.content&&i.services.interpolator.interpolate(r.children[0].content,v,i.language);if(r.type===`tag`){let s=m[parseInt(r.name,10)];!s&&t&&(s=t[r.name]),c.length===1&&!s&&(s=c[0][r.name]),s||={};let S={...r.attrs};u&&Object.keys(S).forEach(e=>{let t=S[e];l(t)&&(S[e]=n(t))});let C=Object.keys(S).length===0?s:j({props:S},s),w=(0,d.isValidElement)(C),T=w&&D(r,!0)&&!r.voidElement,E=p&&o(C)&&C.dummy&&!w,k=o(t)&&Object.hasOwnProperty.call(t,r.name);if(l(C)){let t=i.services.interpolator.interpolate(C,v,i.language);e.push(t)}else if(D(C)||T){let t=y(C,r,c);b(C,t,e,h)}else if(E){let t=x(m,r.children,c);b(C,t,e,h)}else if(Number.isNaN(parseFloat(r.name))){if(k){let t=y(C,r,c);b(C,t,e,h,r.voidElement)}else if(a.transSupportBasicHtmlNodes&&f.indexOf(r.name)>-1){if(r.voidElement)e.push((0,d.createElement)(r.name,{key:`${r.name}-${h}`}));else{let t=g[r.name]||0;g[r.name]=t+1;let n,i=0;for(let e=0;e<m.length;e+=1){let a=m[e];if((0,d.isValidElement)(a)&&a.type===r.name){if(i===t){n=a;break}i+=1}}let a=n?A(O(n)):m,o=x(a,r.children,c);e.push((0,d.createElement)(r.name,{key:`${r.name}-${h}`},o))}}else if(r.voidElement)e.push(`<${r.name} />`);else{let t=x(m,r.children,c);e.push(`<${r.name}>${t}</${r.name}>`)}}else if(o(C)&&!w){let t=r.children[0]?_:null;t&&e.push(t)}else b(C,_,e,h,r.children.length!==1||!_)}else if(r.type===`text`){let t=a.transWrapTextNodes,n=typeof a.unescape==`function`?a.unescape:s().unescape,o=u?n(i.services.interpolator.interpolate(r.content,v,i.language)):i.services.interpolator.interpolate(r.content,v,i.language);t?e.push((0,d.createElement)(t,{key:`${r.name}-${h}`},o)):e.push(o)}return e},[])};return O(x([{dummy:!0,children:e||[]}],_,A(e||[]))[0])},F=(e,t,n)=>{let r=e.key||t,i=(0,d.cloneElement)(e,{key:r});if(!i.props||!i.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return i;function a(){return(0,d.createElement)(d.Fragment,null,i)}return(0,d.createElement)(a,{key:r})},I=(e,t)=>e.map((e,n)=>F(e,n,t)),L=(e,t)=>{let n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:F(e[r],r,t)})}),n},R=(e,t,n,r)=>e?Array.isArray(e)?I(e,t):o(e)?L(e,t):(i(n,`TRANS_INVALID_COMPONENTS`,`<Trans /> "components" prop expects an object or array`,{i18nKey:r}),null):null,z=e=>!o(e)||Array.isArray(e)?!1:Object.keys(e).reduce((e,t)=>e&&Number.isNaN(Number.parseFloat(t)),!0);function B({children:e,count:t,parent:n,i18nKey:r,context:o,tOptions:c={},values:f,defaults:p,components:m,ns:h,i18n:g,t:_,shouldUnescape:v,...y}){let b=g||a();if(!b)return i(b,`NO_I18NEXT_INSTANCE`,`Trans: You need to pass in an i18next instance using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.`,{i18nKey:r}),e;let x=_||b.t.bind(b)||(e=>e),S={...s(),...b.options?.react},C=h||x.ns||b.options?.defaultNS;C=l(C)?[C]:C||[`translation`];let{transDefaultProps:w}=S,T=w?.tOptions?{...w.tOptions,...c}:c,E=v??w?.shouldUnescape,D=w?.values?{...w.values,...f}:f,O=w?.components?{...w.components,...m}:m,k=N(e,S,b,r),A=p||T?.defaultValue||k||S.transEmptyNodeValue||(typeof r==`function`?u(r):r),{hashTransKey:j}=S,F=r||(j?j(k||A):k||A);f=b.options?.interpolation?.defaultVariables?D&&Object.keys(D).length>0?{...D,...b.options.interpolation.defaultVariables}:{...b.options.interpolation.defaultVariables}:D;let I=M(e);I&&typeof I.count==`number`&&t===void 0&&(t=I.count);let L=f||t!==void 0&&!b.options?.interpolation?.alwaysFormat||!e?T.interpolation:{interpolation:{...T.interpolation,prefix:`#$?`,suffix:`?$#`}},B={...T,context:o||T.context,count:t,...f,...L,defaultValue:A,ns:C},V=F?x(F,B):A;V===F&&A&&(V=A);let H=R(O,V,b,r),U=H||e,W=null;z(H)&&(W=H,U=e);let G=P(U,W,V,b,S,B,E),K=n??S.defaultTransParent;return K?(0,d.createElement)(K,y,G):G}function V({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:o={},values:s,defaults:l,components:u,ns:f,i18n:p,t:m,shouldUnescape:h,...g}){let{i18n:_,defaultNS:v}=(0,d.useContext)(c)||{},y=p||_||a(),b=m||y?.t.bind(y);return B({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:o,values:s,defaults:l,components:u,ns:f||b?.ns||v||y?.options?.defaultNS,i18n:y,t:m,shouldUnescape:h,...g})}export{V as t};
2
+ //# sourceMappingURL=Trans-B3UWiZaU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Trans-B3UWiZaU.js","names":["isValidElement","HTML","cloneElement","Children","Fragment","createElement","Trans","keyFromSelector","useContext","TransWithoutContext","__toESM","unescape","warn","warnOnce","getI18n","isObject","getDefaults","I18nContext","isString","keysFromSelector","import_react","require_react","voidElements","attrRE","parseTag","res","tagMatch","tag","endIndex","reg","result","attr","arr","eq","tagRE","tagNameRE","whitespaceRE","rawTextRE","sentinel","empty","restoreSentinels","nodes","node","key","value","parse","components","options","allowedTags","restoreNeeded","isAllowed","name","out","pos","am","html","nameMatch","current","level","inComponent","rawUntil","htmlLower","end","matches","m","match","lts","gts","secondLt","quote","j","c","validSplit","firstPart","secondPart","i","index","isOpen","isComment","start","nextChar","nextMatch","isText","nextTag","parent","comment","text","isRawText","closeIndex","contentEnd","content","attrString","buff","attrs","stringifyNode","doc","tagEnd","stringify","token","rootEl","hasChildren","base","checkLength","getChildren","children","getAsArray","hasValidReactChildren","data","mergeProps","newTarget","target","source","getValuesFromChildren","values","getData","childs","child","nodesToString","stringNode","childrenArray","keepArray","i18nOptions","childPropsCount","props","shouldKeepChild","type","childChildren","childIndex","cnt","i18n","i18nKey","clone","keys","format","renderNodes","targetString","emptyChildrenButNeedsHandling","keep","knownComponentsMap","shouldUnescape","knownNames","ast","opts","combinedTOpts","renderInner","mappedChildren","mapAST","rootReactNode","pushTranslatedJSX","inner","mem","isVoid","freshProps","k","override","reactNodes","reactNode","astNodes","astNode","keepTagOccurrence","translationContent","tmp","val","p","isElement","isValidTranslationWithChildren","isEmptyTransWithHTML","isKnownComponent","occurrence","matched","seen","r","rn","innerScope","wrapTextNodes","unescapeFn","fixComponentProps","componentKey","component","comp","translation","Componentized","generateArrayComponents","generateObjectComponents","componentMap","generateComponents","isComponentsMap","object","acc","Trans$1","i18nFromProps","tFromProps","additionalProps","t","reactI18nextOptions","namespaces","ns","mergedTOptions","transDefaultProps","tOptions","mergedShouldUnescape","mergedValues","mergedComponents","nodeAsString","defaultValue","defaults","hashTransKey","valuesFromChildren","count","interpolationOverride","context","generatedComponents","indexedChildren","componentsMap","useAsParent","Trans","i18nFromContext","defaultNSFromContext"],"sources":["../../../../node_modules/.pnpm/html-parse-stringify@4.0.1/node_modules/html-parse-stringify/dist/esm/html-parse-stringify.js","../../../../node_modules/.pnpm/react-i18next@17.0.15_i18next@26.4.2_typescript@6.0.3__react-dom@19.3.0_react@19.3.0__react@19.3.0_typescript@6.0.3/node_modules/react-i18next/dist/es/TransWithoutContext.js","../../../../node_modules/.pnpm/react-i18next@17.0.15_i18next@26.4.2_typescript@6.0.3__react-dom@19.3.0_react@19.3.0__react@19.3.0_typescript@6.0.3/node_modules/react-i18next/dist/es/Trans.js"],"sourcesContent":["// inlined from the former `void-elements` dependency, so the package has\n// zero runtime dependencies. `!doctype`/`!DOCTYPE` are treated as void so a\n// doctype parses as a childless node instead of swallowing the document.\nconst voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true,\n '!doctype': true,\n '!DOCTYPE': true,\n};\n\nconst attrRE = /\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\"[^\"]*\"|'[^']*')/g;\n\nfunction parseTag(tag) {\n const res = {\n type: 'tag',\n name: '',\n voidElement: false,\n attrs: {},\n children: [],\n };\n\n const tagMatch = tag.match(/<\\/?([^\\s]+?)[/\\s>]/);\n if (tagMatch) {\n res.name = tagMatch[1];\n // void-element lookup stays case sensitive on purpose: react-i18next\n // relies on `<Br>` NOT being treated as a void `<br>` (see 1df0f9d)\n if (voidElements[tagMatch[1]] || tag.charAt(tag.length - 2) === '/') {\n res.voidElement = true;\n }\n\n // handle comment tag\n if (res.name.startsWith('!--')) {\n const endIndex = tag.indexOf('-->');\n return {\n type: 'comment',\n comment: endIndex !== -1 ? tag.slice(4, endIndex) : '',\n }\n }\n }\n\n const reg = new RegExp(attrRE);\n let result = null;\n for (;;) {\n result = reg.exec(tag);\n\n if (result === null) {\n break\n }\n\n if (!result[0].trim()) {\n continue\n }\n\n if (result[1]) {\n const attr = result[1].trim();\n // boolean attributes carry `null` so stringify can render them bare\n // (`<input disabled/>` instead of `<input disabled=\"\"/>`)\n let arr = [attr, null];\n\n const eq = attr.indexOf('=');\n if (eq > -1) {\n // split at the first `=` only, so `data-x=a=b` keeps its full value\n arr = [attr.slice(0, eq), attr.slice(eq + 1)];\n }\n\n res.attrs[arr[0]] = arr[1];\n reg.lastIndex--;\n } else if (result[2]) {\n res.attrs[result[2]] = result[3].trim().substring(1, result[3].length - 1);\n }\n }\n\n return res\n}\n\n// comments are matched as a whole (so `>` inside them is fine), everything\n// else tag-shaped is matched by the second alternative\nconst tagRE = /<!--[\\s\\S]*?-->|<[a-zA-Z0-9\\-!/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g;\nconst tagNameRE = /<\\/?([^\\s]+?)[/\\s>]/;\nconst whitespaceRE = /^\\s*$/;\n// tags whose content is raw text: nothing inside them is markup\nconst rawTextRE = /^(script|style)$/i;\n\n// placeholder for `<` of tags rejected by options.allowedTags; restored to a\n// literal `<` in text/attr/comment content after parsing (U+0000 cannot appear\n// in sane input, and a collision would merely render as an extra `<`)\nconst sentinel = '\\u0000';\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null);\n\nfunction restoreSentinels(nodes) {\n nodes.forEach(function (node) {\n if (node.type === 'text') {\n node.content = node.content.split(sentinel).join('<');\n return\n }\n if (node.type === 'comment') {\n node.comment = node.comment.split(sentinel).join('<');\n return\n }\n for (const key in node.attrs) {\n const value = node.attrs[key];\n if (typeof value === 'string' && value.indexOf(sentinel) > -1) {\n node.attrs[key] = value.split(sentinel).join('<');\n }\n }\n if (node.children.length) {\n restoreSentinels(node.children);\n }\n });\n}\n\nfunction parse(html, options) {\n const components = (options && options.components) || empty;\n const allowedTags = options && options.allowedTags;\n let restoreNeeded = false;\n if (allowedTags) {\n const isAllowed =\n typeof allowedTags === 'function'\n ? allowedTags\n : function (name) {\n return allowedTags.indexOf(name) > -1\n };\n // neutralize tags whose name is not allowed, so they parse as text.\n // on a disallowed match only the leading `<` is escaped and scanning\n // resumes right after it, so a valid tag glued into the same match\n // (e.g. `<bold>` inside `<10, <20, and <bold>`) still gets recognized\n let out = '';\n let pos = 0;\n tagRE.lastIndex = 0;\n let am;\n while ((am = tagRE.exec(html))) {\n const tag = am[0];\n out += html.slice(pos, am.index);\n const nameMatch = tag.match(tagNameRE);\n if (tag.startsWith('<!--') || (nameMatch && isAllowed(nameMatch[1]))) {\n out += tag;\n pos = am.index + tag.length;\n } else {\n restoreNeeded = true;\n out += sentinel;\n pos = am.index + 1;\n tagRE.lastIndex = pos;\n }\n }\n html = out + html.slice(pos);\n }\n const result = [];\n const arr = [];\n let current;\n let level = -1;\n let inComponent = false;\n // while parsing raw-text content (script/style), tag-looking matches\n // before this index belong to the content and must be skipped\n let rawUntil = 0;\n // lazily created lowercase copy for case-insensitive raw-text close-tag search\n let htmlLower;\n\n // handle text at top level\n if (html.indexOf('<') !== 0) {\n const end = html.indexOf('<');\n result.push({\n type: 'text',\n content: end === -1 ? html : html.substring(0, end),\n });\n }\n\n // collect matches with an exec loop instead of matchAll to keep ES5 API compat\n const matches = [];\n let m;\n while ((m = tagRE.exec(html))) {\n matches.push(m);\n }\n matches.forEach(function (match, i) {\n const tag = match[0];\n if (!tag) return\n // comments match as a whole; their content must not trigger the\n // mismatched-bracket split below\n if (tag.startsWith('<!--')) return\n // count brackets outside quoted attribute values, so `<` inside an\n // attribute (e.g. title=\"1 < 2\") can't trigger a bogus split\n let lts = 0;\n let gts = 0;\n let secondLt = -1;\n let quote = null;\n for (let j = 0; j < tag.length; j++) {\n const c = tag.charAt(j);\n if (quote) {\n if (c === quote) quote = null;\n } else if (c === '\"' || c === \"'\") {\n quote = c;\n } else if (c === '<') {\n lts++;\n if (lts === 2) secondLt = j;\n } else if (c === '>') {\n gts++;\n }\n }\n // only split when the remainder is itself a valid tag start; otherwise\n // a fragment like `< <!-->` desyncs the string-level isComment check\n // from parseTag's name-based comment detection and crashes the walker\n const validSplit =\n secondLt > -1 && /[a-zA-Z0-9\\-!/]/.test(tag.charAt(secondLt + 1));\n if (lts > gts && validSplit) {\n const firstPart = tag.substring(0, secondLt);\n const secondPart = tag.substring(firstPart.length);\n matches[i][0] = secondPart;\n matches[i].index += firstPart.length;\n }\n });\n matches.forEach(function (match, i) {\n const tag = match[0];\n if (!tag) return\n const index = match.index;\n if (index < rawUntil) return\n if (inComponent) {\n if (tag !== '</' + current.name + '>') {\n return\n } else {\n inComponent = false;\n }\n }\n const isOpen = tag.charAt(1) !== '/';\n const isComment = tag.startsWith('<!--');\n const start = index + tag.length;\n const nextChar = html.charAt(start);\n const nextMatch = matches[i + 1];\n let isText;\n if (nextChar === '<' && nextMatch) {\n const nextTag = html.substring(start, nextMatch.index);\n isText = nextTag.split('<').length > nextTag.split('>').length;\n }\n\n let parent;\n\n if (isComment) {\n const comment = parseTag(tag);\n\n // if we're at root, push new base node\n if (level < 0) {\n result.push(comment);\n return result\n }\n parent = arr[level];\n parent.children.push(comment);\n\n const text = html.slice(start, nextMatch ? nextMatch.index : undefined);\n if (text.length > 0) {\n parent.children.push({\n type: 'text',\n content: text,\n });\n }\n return result\n }\n\n if (isOpen) {\n level++;\n\n current = parseTag(tag);\n if (current.type === 'tag' && components[current.name]) {\n current.type = 'component';\n inComponent = true;\n }\n\n let isRawText = false;\n if (\n !inComponent &&\n !current.voidElement &&\n rawTextRE.test(current.name)\n ) {\n // raw-text element: everything up to the matching close tag is one\n // text child, regardless of what it looks like\n isRawText = true;\n htmlLower || (htmlLower = html.toLowerCase());\n const closeIndex = htmlLower.indexOf(\n '</' + current.name.toLowerCase() + '>',\n start,\n );\n const contentEnd = closeIndex === -1 ? html.length : closeIndex;\n const content = html.slice(start, contentEnd);\n if (content) {\n current.children.push({\n type: 'text',\n content,\n });\n }\n rawUntil = contentEnd;\n }\n\n if (\n !current.voidElement &&\n !inComponent &&\n !isRawText &&\n nextChar &&\n nextChar !== '<'\n ) {\n // text content runs to the next actual tag match; stray `<`\n // characters in between are part of the text\n current.children.push({\n type: 'text',\n content: html.slice(start, nextMatch ? nextMatch.index : undefined),\n });\n }\n\n // if we're at root, push new base node\n if (level === 0) {\n result.push(current);\n }\n\n parent = arr[level - 1];\n\n if (parent) {\n parent.children.push(current);\n }\n\n arr[level] = current;\n }\n\n if (!isOpen || current.voidElement) {\n if (\n level > -1 &&\n (current.voidElement || current.name === tag.slice(2, -1))\n ) {\n level--;\n // move current up a level to match the end tag\n current = level === -1 ? result : arr[level];\n }\n if (!inComponent && (nextChar !== '<' || isText) && nextChar) {\n // trailing text node\n // if we're at the root, push a base text node. otherwise add as\n // a child to the current node.\n parent = level === -1 ? result : arr[level].children;\n\n // the text node runs to the next actual tag match; -1 means\n // there's no tag after it (trailing text)\n const end = nextMatch ? nextMatch.index : -1;\n let content = html.slice(start, end === -1 ? undefined : end);\n // if a node is nothing but whitespace, collapse it as the spec states:\n // https://www.w3.org/TR/html4/struct/text.html#h-9.1\n if (whitespaceRE.test(content)) {\n content = ' ';\n }\n // don't add whitespace-only text nodes if they would be trailing text nodes\n // or if they would be leading whitespace-only text nodes:\n // * end > -1 indicates this is not a trailing text node\n // * leading node is when level is -1 and parent has length 0\n if ((end > -1 && level + parent.length >= 0) || content !== ' ') {\n parent.push({\n type: 'text',\n content,\n });\n }\n }\n }\n });\n\n if (restoreNeeded) {\n restoreSentinels(result);\n }\n\n return result\n}\n\nfunction attrString(attrs) {\n const buff = [];\n for (const key in attrs) {\n if (attrs[key] === null) {\n // boolean attribute, render bare\n buff.push(key);\n } else {\n // escape double quotes so values parsed from single-quoted or\n // multiline attributes can't break out of the generated markup\n buff.push(key + '=\"' + String(attrs[key]).replace(/\"/g, '&quot;') + '\"');\n }\n }\n if (!buff.length) {\n return ''\n }\n return ' ' + buff.join(' ')\n}\n\nfunction stringifyNode(buff, doc) {\n switch (doc.type) {\n case 'text':\n return buff + doc.content\n case 'tag': {\n // a doctype is void but must not self-close: `<!DOCTYPE html>` not `<!DOCTYPE html/>`\n const tagEnd =\n doc.voidElement && doc.name.toLowerCase() !== '!doctype' ? '/>' : '>';\n buff += '<' + doc.name + (doc.attrs ? attrString(doc.attrs) : '') + tagEnd;\n if (doc.voidElement) {\n return buff\n }\n return (\n buff + doc.children.reduce(stringifyNode, '') + '</' + doc.name + '>'\n )\n }\n case 'comment':\n buff += '<!--' + doc.comment + '-->';\n return buff\n }\n}\n\nfunction stringify(doc) {\n return doc.reduce(function (token, rootEl) {\n return token + stringifyNode('', rootEl)\n }, '')\n}\n\nvar index = {\n parse,\n stringify,\n};\n\nexport { index as default, parse, stringify };\n","import { Fragment, isValidElement, cloneElement, createElement, Children } from 'react';\nimport { keyFromSelector } from 'i18next';\nimport HTML from 'html-parse-stringify';\nimport { isObject, isString, warn, warnOnce } from './utils.js';\nimport { getDefaults } from './defaults.js';\nimport { getI18n } from './i18nInstance.js';\nimport { unescape } from './unescape.js';\nconst hasChildren = (node, checkLength) => {\n if (!node) return false;\n const base = node.props?.children ?? node.children;\n if (checkLength) return base.length > 0;\n return !!base;\n};\nconst getChildren = node => {\n if (!node) return [];\n const children = node.props?.children ?? node.children;\n return node.props?.i18nIsDynamicList ? getAsArray(children) : children;\n};\nconst hasValidReactChildren = children => getAsArray(children).every(isValidElement);\nconst getAsArray = data => Array.isArray(data) ? data : [data];\nconst mergeProps = (source, target) => {\n const newTarget = {\n ...target\n };\n newTarget.props = {\n ...target.props,\n ...source.props\n };\n return newTarget;\n};\nconst getValuesFromChildren = children => {\n const values = {};\n if (!children) return values;\n const getData = childs => {\n const childrenArray = getAsArray(childs);\n childrenArray.forEach(child => {\n if (isString(child)) return;\n if (hasChildren(child)) getData(getChildren(child));else if (isObject(child) && !isValidElement(child)) Object.assign(values, child);\n });\n };\n getData(children);\n return values;\n};\nexport const nodesToString = (children, i18nOptions, i18n, i18nKey) => {\n if (!children) return '';\n let stringNode = '';\n const childrenArray = getAsArray(children);\n const keepArray = i18nOptions?.transSupportBasicHtmlNodes ? i18nOptions.transKeepBasicHtmlNodesFor ?? [] : [];\n childrenArray.forEach((child, childIndex) => {\n if (isString(child)) {\n stringNode += `${child}`;\n return;\n }\n if (isValidElement(child)) {\n const {\n props,\n type\n } = child;\n const childPropsCount = Object.keys(props).length;\n const shouldKeepChild = keepArray.indexOf(type) > -1;\n const childChildren = props.children;\n if (!childChildren && shouldKeepChild && !childPropsCount) {\n stringNode += `<${type}/>`;\n return;\n }\n if (!childChildren && (!shouldKeepChild || childPropsCount) || props.i18nIsDynamicList) {\n stringNode += `<${childIndex}></${childIndex}>`;\n return;\n }\n if (shouldKeepChild && childPropsCount <= 1) {\n const cnt = isString(childChildren) ? childChildren : nodesToString(childChildren, i18nOptions, i18n, i18nKey);\n stringNode += `<${type}>${cnt}</${type}>`;\n return;\n }\n const content = nodesToString(childChildren, i18nOptions, i18n, i18nKey);\n stringNode += `<${childIndex}>${content}</${childIndex}>`;\n return;\n }\n if (child === null) {\n warn(i18n, 'TRANS_NULL_VALUE', `Passed in a null value as child`, {\n i18nKey\n });\n return;\n }\n if (isObject(child)) {\n const {\n format,\n ...clone\n } = child;\n const keys = Object.keys(clone);\n if (keys.length === 1) {\n const value = format ? `${keys[0]}, ${format}` : keys[0];\n stringNode += `{{${value}}}`;\n return;\n }\n warn(i18n, 'TRANS_INVALID_OBJ', `Invalid child - Object should only have keys {{ value, format }} (format is optional).`, {\n i18nKey,\n child\n });\n return;\n }\n warn(i18n, 'TRANS_INVALID_VAR', `Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`, {\n i18nKey,\n child\n });\n });\n return stringNode;\n};\nconst renderNodes = (children, knownComponentsMap, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) => {\n if (targetString === '') return [];\n const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n const emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.map(keep => `<${keep}`).join('|')).test(targetString);\n if (!children && !knownComponentsMap && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];\n const data = knownComponentsMap ?? {};\n const getData = childs => {\n const childrenArray = getAsArray(childs);\n childrenArray.forEach(child => {\n if (isString(child)) return;\n if (hasChildren(child)) getData(getChildren(child));else if (isObject(child) && !isValidElement(child)) Object.assign(data, child);\n });\n };\n getData(children);\n const knownNames = Object.keys(data);\n const allowedTags = name => /^\\d+$/.test(name) || keepArray.indexOf(name) > -1 || knownNames.indexOf(name) > -1;\n const ast = HTML.parse(`<0>${targetString}</0>`, {\n allowedTags\n });\n const opts = {\n ...data,\n ...combinedTOpts\n };\n const renderInner = (child, node, rootReactNode) => {\n const childs = getChildren(child);\n const mappedChildren = mapAST(childs, node.children, rootReactNode);\n return hasValidReactChildren(childs) && mappedChildren.length === 0 || child.props?.i18nIsDynamicList ? childs : mappedChildren;\n };\n const pushTranslatedJSX = (child, inner, mem, i, isVoid) => {\n if (child.dummy) {\n child.children = inner;\n mem.push(cloneElement(child, {\n key: i\n }, isVoid ? undefined : inner));\n } else {\n mem.push(...Children.map([child], c => {\n if (c.type === Fragment || c.props?.i18nIsDynamicList !== undefined) {\n const freshProps = {\n key: i\n };\n if (c && c.props) {\n Object.keys(c.props).forEach(k => {\n if (k === 'children' || k === 'i18nIsDynamicList') return;\n freshProps[k] = c.props[k];\n });\n }\n return createElement(c.type, freshProps, isVoid ? null : inner);\n }\n const override = {\n key: i\n };\n if (c && c.props) {\n Object.keys(c.props).forEach(k => {\n if (k === 'ref' || k === 'children') return;\n override[k] = c.props[k];\n });\n }\n return cloneElement(c, override, isVoid ? null : inner);\n }));\n }\n };\n const mapAST = (reactNode, astNode, rootReactNode) => {\n const reactNodes = getAsArray(reactNode);\n const astNodes = getAsArray(astNode);\n const keepTagOccurrence = {};\n return astNodes.reduce((mem, node, i) => {\n const translationContent = node.children?.[0]?.content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n if (node.type === 'tag') {\n let tmp = reactNodes[parseInt(node.name, 10)];\n if (!tmp && knownComponentsMap) tmp = knownComponentsMap[node.name];\n if (rootReactNode.length === 1 && !tmp) tmp = rootReactNode[0][node.name];\n if (!tmp) tmp = {};\n const props = {\n ...node.attrs\n };\n if (shouldUnescape) {\n Object.keys(props).forEach(p => {\n const val = props[p];\n if (isString(val)) {\n props[p] = unescape(val);\n }\n });\n }\n const child = Object.keys(props).length !== 0 ? mergeProps({\n props\n }, tmp) : tmp;\n const isElement = isValidElement(child);\n const isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n const isEmptyTransWithHTML = emptyChildrenButNeedsHandling && isObject(child) && child.dummy && !isElement;\n const isKnownComponent = isObject(knownComponentsMap) && Object.hasOwnProperty.call(knownComponentsMap, node.name);\n if (isString(child)) {\n const value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n mem.push(value);\n } else if (hasChildren(child) || isValidTranslationWithChildren) {\n const inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (isEmptyTransWithHTML) {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (Number.isNaN(parseFloat(node.name))) {\n if (isKnownComponent) {\n const inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i, node.voidElement);\n } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n if (node.voidElement) {\n mem.push(createElement(node.name, {\n key: `${node.name}-${i}`\n }));\n } else {\n const occurrence = keepTagOccurrence[node.name] || 0;\n keepTagOccurrence[node.name] = occurrence + 1;\n let matched;\n let seen = 0;\n for (let r = 0; r < reactNodes.length; r += 1) {\n const rn = reactNodes[r];\n if (isValidElement(rn) && rn.type === node.name) {\n if (seen === occurrence) {\n matched = rn;\n break;\n }\n seen += 1;\n }\n }\n const innerScope = matched ? getAsArray(getChildren(matched)) : reactNodes;\n const inner = mapAST(innerScope, node.children, rootReactNode);\n mem.push(createElement(node.name, {\n key: `${node.name}-${i}`\n }, inner));\n }\n } else if (node.voidElement) {\n mem.push(`<${node.name} />`);\n } else {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n mem.push(`<${node.name}>${inner}</${node.name}>`);\n }\n } else if (isObject(child) && !isElement) {\n const content = node.children[0] ? translationContent : null;\n if (content) mem.push(content);\n } else {\n pushTranslatedJSX(child, translationContent, mem, i, node.children.length !== 1 || !translationContent);\n }\n } else if (node.type === 'text') {\n const wrapTextNodes = i18nOptions.transWrapTextNodes;\n const unescapeFn = typeof i18nOptions.unescape === 'function' ? i18nOptions.unescape : getDefaults().unescape;\n const content = shouldUnescape ? unescapeFn(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n if (wrapTextNodes) {\n mem.push(createElement(wrapTextNodes, {\n key: `${node.name}-${i}`\n }, content));\n } else {\n mem.push(content);\n }\n }\n return mem;\n }, []);\n };\n const result = mapAST([{\n dummy: true,\n children: children || []\n }], ast, getAsArray(children || []));\n return getChildren(result[0]);\n};\nconst fixComponentProps = (component, index, translation) => {\n const componentKey = component.key || index;\n const comp = cloneElement(component, {\n key: componentKey\n });\n if (!comp.props || !comp.props.children || translation.indexOf(`${index}/>`) < 0 && translation.indexOf(`${index} />`) < 0) {\n return comp;\n }\n function Componentized() {\n return createElement(Fragment, null, comp);\n }\n return createElement(Componentized, {\n key: componentKey\n });\n};\nconst generateArrayComponents = (components, translation) => components.map((c, index) => fixComponentProps(c, index, translation));\nconst generateObjectComponents = (components, translation) => {\n const componentMap = {};\n Object.keys(components).forEach(c => {\n Object.assign(componentMap, {\n [c]: fixComponentProps(components[c], c, translation)\n });\n });\n return componentMap;\n};\nconst generateComponents = (components, translation, i18n, i18nKey) => {\n if (!components) return null;\n if (Array.isArray(components)) {\n return generateArrayComponents(components, translation);\n }\n if (isObject(components)) {\n return generateObjectComponents(components, translation);\n }\n warnOnce(i18n, 'TRANS_INVALID_COMPONENTS', `<Trans /> \"components\" prop expects an object or array`, {\n i18nKey\n });\n return null;\n};\nconst isComponentsMap = object => {\n if (!isObject(object)) return false;\n if (Array.isArray(object)) return false;\n return Object.keys(object).reduce((acc, key) => acc && Number.isNaN(Number.parseFloat(key)), true);\n};\nexport function Trans({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions = {},\n values,\n defaults,\n components,\n ns,\n i18n: i18nFromProps,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n}) {\n const i18n = i18nFromProps || getI18n();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', `Trans: You need to pass in an i18next instance using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.`, {\n i18nKey\n });\n return children;\n }\n const t = tFromProps || i18n.t.bind(i18n) || (k => k);\n const reactI18nextOptions = {\n ...getDefaults(),\n ...i18n.options?.react\n };\n let namespaces = ns || t.ns || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n const {\n transDefaultProps\n } = reactI18nextOptions;\n const mergedTOptions = transDefaultProps?.tOptions ? {\n ...transDefaultProps.tOptions,\n ...tOptions\n } : tOptions;\n const mergedShouldUnescape = shouldUnescape ?? transDefaultProps?.shouldUnescape;\n const mergedValues = transDefaultProps?.values ? {\n ...transDefaultProps.values,\n ...values\n } : values;\n const mergedComponents = transDefaultProps?.components ? {\n ...transDefaultProps.components,\n ...components\n } : components;\n const nodeAsString = nodesToString(children, reactI18nextOptions, i18n, i18nKey);\n const defaultValue = defaults || mergedTOptions?.defaultValue || nodeAsString || reactI18nextOptions.transEmptyNodeValue || (typeof i18nKey === 'function' ? keyFromSelector(i18nKey) : i18nKey);\n const {\n hashTransKey\n } = reactI18nextOptions;\n const key = i18nKey || (hashTransKey ? hashTransKey(nodeAsString || defaultValue) : nodeAsString || defaultValue);\n if (i18n.options?.interpolation?.defaultVariables) {\n values = mergedValues && Object.keys(mergedValues).length > 0 ? {\n ...mergedValues,\n ...i18n.options.interpolation.defaultVariables\n } : {\n ...i18n.options.interpolation.defaultVariables\n };\n } else {\n values = mergedValues;\n }\n const valuesFromChildren = getValuesFromChildren(children);\n if (valuesFromChildren && typeof valuesFromChildren.count === 'number' && count === undefined) {\n count = valuesFromChildren.count;\n }\n const interpolationOverride = values || count !== undefined && !i18n.options?.interpolation?.alwaysFormat || !children ? mergedTOptions.interpolation : {\n interpolation: {\n ...mergedTOptions.interpolation,\n prefix: '#$?',\n suffix: '?$#'\n }\n };\n const combinedTOpts = {\n ...mergedTOptions,\n context: context || mergedTOptions.context,\n count,\n ...values,\n ...interpolationOverride,\n defaultValue,\n ns: namespaces\n };\n let translation = key ? t(key, combinedTOpts) : defaultValue;\n if (translation === key && defaultValue) translation = defaultValue;\n const generatedComponents = generateComponents(mergedComponents, translation, i18n, i18nKey);\n let indexedChildren = generatedComponents || children;\n let componentsMap = null;\n if (isComponentsMap(generatedComponents)) {\n componentsMap = generatedComponents;\n indexedChildren = children;\n }\n const content = renderNodes(indexedChildren, componentsMap, translation, i18n, reactI18nextOptions, combinedTOpts, mergedShouldUnescape);\n const useAsParent = parent ?? reactI18nextOptions.defaultTransParent;\n return useAsParent ? createElement(useAsParent, additionalProps, content) : content;\n}","import { useContext } from 'react';\nimport { nodesToString, Trans as TransWithoutContext } from './TransWithoutContext.js';\nimport { getI18n, I18nContext } from './context.js';\nexport { nodesToString };\nexport function Trans({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions = {},\n values,\n defaults,\n components,\n ns,\n i18n: i18nFromProps,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n}) {\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n const t = tFromProps || i18n?.t.bind(i18n);\n return TransWithoutContext({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions,\n values,\n defaults,\n components,\n ns: ns || t?.ns || defaultNSFromContext || i18n?.options?.defaultNS,\n i18n,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n });\n}"],"ignoreList":[0,1,2],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{O as r}from"./auth-CQO4MBUj.js";import{n as i}from"./createLucideIcon-CLmh7Go-.js";import{n as a,r as o}from"./InlineConfirm-BfsNH5S_.js";var s=e(t(),1);function c(e,t){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if(`shouldBlockFn`in e)return e;if(typeof e==`function`){let n=!!(t??!0);return{shouldBlockFn:async()=>n?await e():!1,enableBeforeUnload:n,withResolver:!1}}let n=!!(e.condition??!0),r=e.blockerFn;return{shouldBlockFn:async()=>n&&r!==void 0?await r():n,enableBeforeUnload:n,withResolver:r===void 0}}function l(e,t){let{shouldBlockFn:n,enableBeforeUnload:i=!0,disabled:a=!1,withResolver:o=!1}=c(e,t),l=r(),{history:u}=l,[d,f]=s.useState({status:`idle`,current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return s.useEffect(()=>a?void 0:u.block({blockerFn:async e=>{function t(e){let t=l.parseLocation(e),[,n,r]=l.getMatchedRoutes(t.pathname);return r===void 0?{routeId:`__notFound__`,fullPath:t.pathname,pathname:t.pathname,params:n,search:l.options.parseSearch(e.search)}:{routeId:r.id,fullPath:r.fullPath,pathname:t.pathname,params:n,search:l.options.parseSearch(e.search)}}let r=t(e.currentLocation),i=t(e.nextLocation);if(r.routeId===`__notFound__`&&i.routeId!==`__notFound__`)return!1;let a=await n({action:e.action,current:r,next:i});if(!o)return a;if(!a)return!1;let s=await new Promise(t=>{f({status:`blocked`,current:r,next:i,action:e.action,proceed:()=>t(!1),reset:()=>t(!0)})});return f({status:`idle`,current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),s},enableBeforeUnload:i}),[n,i,a,o,u,l]),d}var u=e(n(),1),d=({when:e,shouldBlock:t,title:n,description:r,stayLabel:s,leaveLabel:c})=>{let{t:d}=i();a(e);let f=l({shouldBlockFn:({current:n,next:r})=>e&&(t?.({currentPath:n.pathname,nextPath:r.pathname})??!0),enableBeforeUnload:()=>e,withResolver:!0});return(0,u.jsx)(o,{open:f.status===`blocked`,onOpenChange:e=>{!e&&f.status===`blocked`&&f.reset()},title:n??d(`unsaved.title`),description:r??d(`unsaved.description`),cancelLabel:s??d(`unsaved.stay`),confirmLabel:c??d(`unsaved.leave`),destructive:!0,onConfirm:()=>f.proceed?.()})};export{d as t};
2
- //# sourceMappingURL=UnsavedChangesGuard-C8cDQGEA.js.map
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{O as r}from"./auth-BFSvtV59.js";import{n as i}from"./createLucideIcon-BOsNKleB.js";import{n as a,r as o}from"./InlineConfirm-A4IqkrGp.js";var s=e(t(),1);function c(e,t){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if(`shouldBlockFn`in e)return e;if(typeof e==`function`){let n=!!(t??!0);return{shouldBlockFn:async()=>n?await e():!1,enableBeforeUnload:n,withResolver:!1}}let n=!!(e.condition??!0),r=e.blockerFn;return{shouldBlockFn:async()=>n&&r!==void 0?await r():n,enableBeforeUnload:n,withResolver:r===void 0}}function l(e,t){let{shouldBlockFn:n,enableBeforeUnload:i=!0,disabled:a=!1,withResolver:o=!1}=c(e,t),l=r(),{history:u}=l,[d,f]=s.useState({status:`idle`,current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return s.useEffect(()=>a?void 0:u.block({blockerFn:async e=>{function t(e){let t=l.parseLocation(e),[,n,r]=l.getMatchedRoutes(t.pathname);return r===void 0?{routeId:`__notFound__`,fullPath:t.pathname,pathname:t.pathname,params:n,search:l.options.parseSearch(e.search)}:{routeId:r.id,fullPath:r.fullPath,pathname:t.pathname,params:n,search:l.options.parseSearch(e.search)}}let r=t(e.currentLocation),i=t(e.nextLocation);if(r.routeId===`__notFound__`&&i.routeId!==`__notFound__`)return!1;let a=await n({action:e.action,current:r,next:i});if(!o)return a;if(!a)return!1;let s=await new Promise(t=>{f({status:`blocked`,current:r,next:i,action:e.action,proceed:()=>t(!1),reset:()=>t(!0)})});return f({status:`idle`,current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),s},enableBeforeUnload:i}),[n,i,a,o,u,l]),d}var u=e(n(),1),d=({when:e,shouldBlock:t,title:n,description:r,stayLabel:s,leaveLabel:c})=>{let{t:d}=i();a(e);let f=l({shouldBlockFn:({current:n,next:r})=>e&&(t?.({currentPath:n.pathname,nextPath:r.pathname})??!0),enableBeforeUnload:()=>e,withResolver:!0});return(0,u.jsx)(o,{open:f.status===`blocked`,onOpenChange:e=>{!e&&f.status===`blocked`&&f.reset()},title:n??d(`unsaved.title`),description:r??d(`unsaved.description`),cancelLabel:s??d(`unsaved.stay`),confirmLabel:c??d(`unsaved.leave`),destructive:!0,onConfirm:()=>f.proceed?.()})};export{d as t};
2
+ //# sourceMappingURL=UnsavedChangesGuard-DPgih7BX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UnsavedChangesGuard-C8cDQGEA.js","names":["__toESM","require_jsx_runtime","useRouter","useTranslation","useRegisterUnsavedEdits","ConfirmDialog","import_react","require_react","_resolveBlockerOpts","opts","shouldBlock","condition","fn","useBlocker","router","resolver","setResolver","disabled","history","getLocation","parsedLocation","location","rawParams","foundRoute","current","blockerFnArgs","next","shouldBlockFn","withResolver","canNavigateAsync","resolve","enableBeforeUnload","import_jsx_runtime","UnsavedChangesGuard","when","blocker","open","title","t","description","stayLabel","leaveLabel"],"sources":["../../../../node_modules/.pnpm/@tanstack+react-router@1.170.41_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@tanstack/react-router/dist/esm/useBlocker.js","../../src/components/UnsavedChangesGuard/index.tsx"],"sourcesContent":["\"use client\";\nimport { useRouter } from \"./useRouter.js\";\nimport * as React$1 from \"react\";\n//#region src/useBlocker.tsx\nfunction _resolveBlockerOpts(opts, condition) {\n\tif (opts === void 0) return {\n\t\tshouldBlockFn: () => true,\n\t\twithResolver: false\n\t};\n\tif (\"shouldBlockFn\" in opts) return opts;\n\tif (typeof opts === \"function\") {\n\t\tconst shouldBlock = Boolean(condition ?? true);\n\t\tconst _customBlockerFn = async () => {\n\t\t\tif (shouldBlock) return await opts();\n\t\t\treturn false;\n\t\t};\n\t\treturn {\n\t\t\tshouldBlockFn: _customBlockerFn,\n\t\t\tenableBeforeUnload: shouldBlock,\n\t\t\twithResolver: false\n\t\t};\n\t}\n\tconst shouldBlock = Boolean(opts.condition ?? true);\n\tconst fn = opts.blockerFn;\n\tconst _customBlockerFn = async () => {\n\t\tif (shouldBlock && fn !== void 0) return await fn();\n\t\treturn shouldBlock;\n\t};\n\treturn {\n\t\tshouldBlockFn: _customBlockerFn,\n\t\tenableBeforeUnload: shouldBlock,\n\t\twithResolver: fn === void 0\n\t};\n}\nfunction useBlocker(opts, condition) {\n\tconst { shouldBlockFn, enableBeforeUnload = true, disabled = false, withResolver = false } = _resolveBlockerOpts(opts, condition);\n\tconst router = useRouter();\n\tconst { history } = router;\n\tconst [resolver, setResolver] = React$1.useState({\n\t\tstatus: \"idle\",\n\t\tcurrent: void 0,\n\t\tnext: void 0,\n\t\taction: void 0,\n\t\tproceed: void 0,\n\t\treset: void 0\n\t});\n\tReact$1.useEffect(() => {\n\t\tconst blockerFnComposed = async (blockerFnArgs) => {\n\t\t\tfunction getLocation(location) {\n\t\t\t\tconst parsedLocation = router.parseLocation(location);\n\t\t\t\tconst [, rawParams, foundRoute] = router.getMatchedRoutes(parsedLocation.pathname);\n\t\t\t\tif (foundRoute === void 0) return {\n\t\t\t\t\trouteId: \"__notFound__\",\n\t\t\t\t\tfullPath: parsedLocation.pathname,\n\t\t\t\t\tpathname: parsedLocation.pathname,\n\t\t\t\t\tparams: rawParams,\n\t\t\t\t\tsearch: router.options.parseSearch(location.search)\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\trouteId: foundRoute.id,\n\t\t\t\t\tfullPath: foundRoute.fullPath,\n\t\t\t\t\tpathname: parsedLocation.pathname,\n\t\t\t\t\tparams: rawParams,\n\t\t\t\t\tsearch: router.options.parseSearch(location.search)\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst current = getLocation(blockerFnArgs.currentLocation);\n\t\t\tconst next = getLocation(blockerFnArgs.nextLocation);\n\t\t\tif (current.routeId === \"__notFound__\" && next.routeId !== \"__notFound__\") return false;\n\t\t\tconst shouldBlock = await shouldBlockFn({\n\t\t\t\taction: blockerFnArgs.action,\n\t\t\t\tcurrent,\n\t\t\t\tnext\n\t\t\t});\n\t\t\tif (!withResolver) return shouldBlock;\n\t\t\tif (!shouldBlock) return false;\n\t\t\tconst canNavigateAsync = await new Promise((resolve) => {\n\t\t\t\tsetResolver({\n\t\t\t\t\tstatus: \"blocked\",\n\t\t\t\t\tcurrent,\n\t\t\t\t\tnext,\n\t\t\t\t\taction: blockerFnArgs.action,\n\t\t\t\t\tproceed: () => resolve(false),\n\t\t\t\t\treset: () => resolve(true)\n\t\t\t\t});\n\t\t\t});\n\t\t\tsetResolver({\n\t\t\t\tstatus: \"idle\",\n\t\t\t\tcurrent: void 0,\n\t\t\t\tnext: void 0,\n\t\t\t\taction: void 0,\n\t\t\t\tproceed: void 0,\n\t\t\t\treset: void 0\n\t\t\t});\n\t\t\treturn canNavigateAsync;\n\t\t};\n\t\treturn disabled ? void 0 : history.block({\n\t\t\tblockerFn: blockerFnComposed,\n\t\t\tenableBeforeUnload\n\t\t});\n\t}, [\n\t\tshouldBlockFn,\n\t\tenableBeforeUnload,\n\t\tdisabled,\n\t\twithResolver,\n\t\thistory,\n\t\trouter\n\t]);\n\treturn resolver;\n}\nvar _resolvePromptBlockerArgs = (props) => {\n\tif (\"shouldBlockFn\" in props) return { ...props };\n\tconst shouldBlock = Boolean(props.condition ?? true);\n\tconst fn = props.blockerFn;\n\tconst _customBlockerFn = async () => {\n\t\tif (shouldBlock && fn !== void 0) return await fn();\n\t\treturn shouldBlock;\n\t};\n\treturn {\n\t\tshouldBlockFn: _customBlockerFn,\n\t\tenableBeforeUnload: shouldBlock,\n\t\twithResolver: fn === void 0\n\t};\n};\nfunction Block(opts) {\n\tconst { children, ...rest } = opts;\n\tconst resolver = useBlocker(_resolvePromptBlockerArgs(rest));\n\treturn children ? typeof children === \"function\" ? children(resolver) : children : null;\n}\n//#endregion\nexport { Block, useBlocker };\n\n//# sourceMappingURL=useBlocker.js.map","import { useBlocker } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { useRegisterUnsavedEdits } from '@/hooks/useRegisterUnsavedEdits';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\n/** A navigation the guard may let through: the pathnames it goes from and to. */\nexport type GuardedNavigation = { currentPath: string; nextPath: string };\n\ntype UnsavedChangesGuardProps = {\n when: boolean;\n /**\n * While `when`, which navigations ask (default: all). E.g. a screen whose edits survive a search-param\n * change asks only when the path changes. Reloading or closing the page always warns.\n */\n shouldBlock?: (navigation: GuardedNavigation) => boolean;\n /** The question; defaults to \"Discard unsaved changes?\" (and its description and buttons). */\n title?: string;\n description?: string;\n /** The button that stays on the page. */\n stayLabel?: string;\n /** The button that leaves. */\n leaveLabel?: string;\n};\n\n/**\n * Dirty-state protection: while `when` is true, in-app navigation asks before discarding edits and the\n * browser warns on reload/close. An ended session never navigates away from them: it is resumed in place.\n */\nexport const UnsavedChangesGuard = ({\n when,\n shouldBlock,\n title,\n description,\n stayLabel,\n leaveLabel,\n}: UnsavedChangesGuardProps) => {\n const { t } = useTranslation();\n useRegisterUnsavedEdits(when);\n const blocker = useBlocker({\n shouldBlockFn: ({ current, next }) =>\n when && (shouldBlock?.({ currentPath: current.pathname, nextPath: next.pathname }) ?? true),\n enableBeforeUnload: () => when,\n withResolver: true,\n });\n return (\n <ConfirmDialog\n open={blocker.status === 'blocked'}\n onOpenChange={(open) => {\n if (!open && blocker.status === 'blocked') {\n blocker.reset();\n }\n }}\n title={title ?? t('unsaved.title')}\n description={description ?? t('unsaved.description')}\n cancelLabel={stayLabel ?? t('unsaved.stay')}\n confirmLabel={leaveLabel ?? t('unsaved.leave')}\n destructive\n onConfirm={() => blocker.proceed?.()}\n />\n );\n};\n"],"ignoreList":[0],"mappings":"oSAIA,SAASQ,EAAoB,EAAM,EAAW,CAC7C,GAAIC,IAAS,IAAK,GAAG,MAAO,CAC3B,kBAAqB,GACrB,aAAc,EACf,EACA,GAAI,kBAAmBA,EAAM,OAAOA,EACpC,GAAI,OAAOA,GAAS,WAAY,CAC/B,IAAMC,EAAc,GAAQC,GAAa,IAKzC,MAAO,CACN,cAAe,SAJXD,EAAoB,MAAMD,EAAK,EAC5B,GAIP,mBAAoBC,EACpB,aAAc,EACf,CACD,CACA,IAAMA,EAAc,GAAQD,EAAK,WAAa,IACxCG,EAAKH,EAAK,UAKhB,MAAO,CACN,cAAe,SAJXC,GAAeE,IAAO,IAAK,GAAU,MAAMA,EAAG,EAC3CF,EAIP,mBAAoBA,EACpB,aAAcE,IAAO,IAAK,EAC3B,CACD,CACA,SAASC,EAAW,EAAM,EAAW,CACpC,GAAM,CAAE,gBAAe,qBAAqB,GAAM,WAAW,GAAO,eAAe,IAAUL,EAAoBC,EAAME,CAAS,EAC1HG,EAASZ,EAAU,EACnB,CAAE,WAAYY,EACd,CAACC,EAAUC,GAAAV,EAAuB,SAAS,CAChD,OAAQ,OACR,QAAS,IAAK,GACd,KAAM,IAAK,GACX,OAAQ,IAAK,GACb,QAAS,IAAK,GACd,MAAO,IAAK,EACb,CAAC,EA+DD,OA9DAA,EAAQ,cAkDAW,EAAW,IAAK,GAAIC,EAAQ,MAAM,CACxC,UAAW,KAlDqB,IAAkB,CAClD,SAASC,EAAY,EAAU,CAC9B,IAAMC,EAAiBN,EAAO,cAAcO,CAAQ,EAC9C,EAAGC,EAAWC,GAAcT,EAAO,iBAAiBM,EAAe,QAAQ,EAQjF,OAPIG,IAAe,IAAK,GAAU,CACjC,QAAS,eACT,SAAUH,EAAe,SACzB,SAAUA,EAAe,SACzB,OAAQE,EACR,OAAQR,EAAO,QAAQ,YAAYO,EAAS,MAAM,CACnD,EACO,CACN,QAASE,EAAW,GACpB,SAAUA,EAAW,SACrB,SAAUH,EAAe,SACzB,OAAQE,EACR,OAAQR,EAAO,QAAQ,YAAYO,EAAS,MAAM,CACnD,CACD,CACA,IAAMG,EAAUL,EAAYM,EAAc,eAAe,EACnDC,EAAOP,EAAYM,EAAc,YAAY,EACnD,GAAID,EAAQ,UAAY,gBAAkBE,EAAK,UAAY,eAAgB,MAAO,GAClF,IAAMhB,EAAc,MAAMiB,EAAc,CACvC,OAAQF,EAAc,OACtB,UACA,MACD,CAAC,EACD,GAAI,CAACG,EAAc,OAAOlB,EAC1B,GAAI,CAACA,EAAa,MAAO,GACzB,IAAMmB,EAAmB,MAAM,IAAI,QAAS,GAAY,CACvDb,EAAY,CACX,OAAQ,UACR,UACA,OACA,OAAQS,EAAc,OACtB,YAAeK,EAAQ,EAAK,EAC5B,UAAaA,EAAQ,EAAI,CAC1B,CAAC,CACF,CAAC,EASD,OARAd,EAAY,CACX,OAAQ,OACR,QAAS,IAAK,GACd,KAAM,IAAK,GACX,OAAQ,IAAK,GACb,QAAS,IAAK,GACd,MAAO,IAAK,EACb,CAAC,EACMa,CACR,EAGC,oBACD,CAAC,EACC,CACFF,EACAI,EACAd,EACAW,EACAV,EACAJ,CACD,CAAC,EACMC,CACR,gBCjFakB,GAAuB,CAClC,OACA,cACA,QACA,cACA,YACA,gBAC8B,CAC9B,GAAM,CAAE,KAAM9B,EAAe,EAC7BC,EAAwB8B,CAAI,EAC5B,IAAMC,EAAUtB,EAAW,CACzB,eAAgB,CAAE,UAAS,UACzBqB,IAASxB,IAAc,CAAE,YAAac,EAAQ,SAAU,SAAUE,EAAK,QAAS,CAAC,GAAK,IACxF,uBAA0BQ,EAC1B,aAAc,EAChB,CAAC,EACD,OACE,EAAAF,EAAA,IAAA,CAAC3B,EAAD,CACE,KAAM8B,EAAQ,SAAW,UACzB,aAAe,GAAS,CAClB,CAACC,GAAQD,EAAQ,SAAW,WAC9BA,EAAQ,MAAM,CAElB,EACA,MAAOE,GAASC,EAAE,eAAe,EACjC,YAAaC,GAAeD,EAAE,qBAAqB,EACnD,YAAaE,GAAaF,EAAE,cAAc,EAC1C,aAAcG,GAAcH,EAAE,eAAe,EAC7C,YAAA,GACA,cAAiBH,EAAQ,UAAU,CACpC,CAAA,CAEL"}
1
+ {"version":3,"file":"UnsavedChangesGuard-DPgih7BX.js","names":["__toESM","require_jsx_runtime","useRouter","useTranslation","useRegisterUnsavedEdits","ConfirmDialog","import_react","require_react","_resolveBlockerOpts","opts","shouldBlock","condition","fn","useBlocker","router","resolver","setResolver","disabled","history","getLocation","parsedLocation","location","rawParams","foundRoute","current","blockerFnArgs","next","shouldBlockFn","withResolver","canNavigateAsync","resolve","enableBeforeUnload","import_jsx_runtime","UnsavedChangesGuard","when","blocker","open","title","t","description","stayLabel","leaveLabel"],"sources":["../../../../node_modules/.pnpm/@tanstack+react-router@1.170.41_react-dom@19.3.0_react@19.3.0__react@19.3.0/node_modules/@tanstack/react-router/dist/esm/useBlocker.js","../../src/components/UnsavedChangesGuard/index.tsx"],"sourcesContent":["\"use client\";\nimport { useRouter } from \"./useRouter.js\";\nimport * as React$1 from \"react\";\n//#region src/useBlocker.tsx\nfunction _resolveBlockerOpts(opts, condition) {\n\tif (opts === void 0) return {\n\t\tshouldBlockFn: () => true,\n\t\twithResolver: false\n\t};\n\tif (\"shouldBlockFn\" in opts) return opts;\n\tif (typeof opts === \"function\") {\n\t\tconst shouldBlock = Boolean(condition ?? true);\n\t\tconst _customBlockerFn = async () => {\n\t\t\tif (shouldBlock) return await opts();\n\t\t\treturn false;\n\t\t};\n\t\treturn {\n\t\t\tshouldBlockFn: _customBlockerFn,\n\t\t\tenableBeforeUnload: shouldBlock,\n\t\t\twithResolver: false\n\t\t};\n\t}\n\tconst shouldBlock = Boolean(opts.condition ?? true);\n\tconst fn = opts.blockerFn;\n\tconst _customBlockerFn = async () => {\n\t\tif (shouldBlock && fn !== void 0) return await fn();\n\t\treturn shouldBlock;\n\t};\n\treturn {\n\t\tshouldBlockFn: _customBlockerFn,\n\t\tenableBeforeUnload: shouldBlock,\n\t\twithResolver: fn === void 0\n\t};\n}\nfunction useBlocker(opts, condition) {\n\tconst { shouldBlockFn, enableBeforeUnload = true, disabled = false, withResolver = false } = _resolveBlockerOpts(opts, condition);\n\tconst router = useRouter();\n\tconst { history } = router;\n\tconst [resolver, setResolver] = React$1.useState({\n\t\tstatus: \"idle\",\n\t\tcurrent: void 0,\n\t\tnext: void 0,\n\t\taction: void 0,\n\t\tproceed: void 0,\n\t\treset: void 0\n\t});\n\tReact$1.useEffect(() => {\n\t\tconst blockerFnComposed = async (blockerFnArgs) => {\n\t\t\tfunction getLocation(location) {\n\t\t\t\tconst parsedLocation = router.parseLocation(location);\n\t\t\t\tconst [, rawParams, foundRoute] = router.getMatchedRoutes(parsedLocation.pathname);\n\t\t\t\tif (foundRoute === void 0) return {\n\t\t\t\t\trouteId: \"__notFound__\",\n\t\t\t\t\tfullPath: parsedLocation.pathname,\n\t\t\t\t\tpathname: parsedLocation.pathname,\n\t\t\t\t\tparams: rawParams,\n\t\t\t\t\tsearch: router.options.parseSearch(location.search)\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\trouteId: foundRoute.id,\n\t\t\t\t\tfullPath: foundRoute.fullPath,\n\t\t\t\t\tpathname: parsedLocation.pathname,\n\t\t\t\t\tparams: rawParams,\n\t\t\t\t\tsearch: router.options.parseSearch(location.search)\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst current = getLocation(blockerFnArgs.currentLocation);\n\t\t\tconst next = getLocation(blockerFnArgs.nextLocation);\n\t\t\tif (current.routeId === \"__notFound__\" && next.routeId !== \"__notFound__\") return false;\n\t\t\tconst shouldBlock = await shouldBlockFn({\n\t\t\t\taction: blockerFnArgs.action,\n\t\t\t\tcurrent,\n\t\t\t\tnext\n\t\t\t});\n\t\t\tif (!withResolver) return shouldBlock;\n\t\t\tif (!shouldBlock) return false;\n\t\t\tconst canNavigateAsync = await new Promise((resolve) => {\n\t\t\t\tsetResolver({\n\t\t\t\t\tstatus: \"blocked\",\n\t\t\t\t\tcurrent,\n\t\t\t\t\tnext,\n\t\t\t\t\taction: blockerFnArgs.action,\n\t\t\t\t\tproceed: () => resolve(false),\n\t\t\t\t\treset: () => resolve(true)\n\t\t\t\t});\n\t\t\t});\n\t\t\tsetResolver({\n\t\t\t\tstatus: \"idle\",\n\t\t\t\tcurrent: void 0,\n\t\t\t\tnext: void 0,\n\t\t\t\taction: void 0,\n\t\t\t\tproceed: void 0,\n\t\t\t\treset: void 0\n\t\t\t});\n\t\t\treturn canNavigateAsync;\n\t\t};\n\t\treturn disabled ? void 0 : history.block({\n\t\t\tblockerFn: blockerFnComposed,\n\t\t\tenableBeforeUnload\n\t\t});\n\t}, [\n\t\tshouldBlockFn,\n\t\tenableBeforeUnload,\n\t\tdisabled,\n\t\twithResolver,\n\t\thistory,\n\t\trouter\n\t]);\n\treturn resolver;\n}\nvar _resolvePromptBlockerArgs = (props) => {\n\tif (\"shouldBlockFn\" in props) return { ...props };\n\tconst shouldBlock = Boolean(props.condition ?? true);\n\tconst fn = props.blockerFn;\n\tconst _customBlockerFn = async () => {\n\t\tif (shouldBlock && fn !== void 0) return await fn();\n\t\treturn shouldBlock;\n\t};\n\treturn {\n\t\tshouldBlockFn: _customBlockerFn,\n\t\tenableBeforeUnload: shouldBlock,\n\t\twithResolver: fn === void 0\n\t};\n};\nfunction Block(opts) {\n\tconst { children, ...rest } = opts;\n\tconst resolver = useBlocker(_resolvePromptBlockerArgs(rest));\n\treturn children ? typeof children === \"function\" ? children(resolver) : children : null;\n}\n//#endregion\nexport { Block, useBlocker };\n\n//# sourceMappingURL=useBlocker.js.map","import { useBlocker } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { useRegisterUnsavedEdits } from '@/hooks/useRegisterUnsavedEdits';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\n/** A navigation the guard may let through: the pathnames it goes from and to. */\nexport type GuardedNavigation = { currentPath: string; nextPath: string };\n\ntype UnsavedChangesGuardProps = {\n when: boolean;\n /**\n * While `when`, which navigations ask (default: all). E.g. a screen whose edits survive a search-param\n * change asks only when the path changes. Reloading or closing the page always warns.\n */\n shouldBlock?: (navigation: GuardedNavigation) => boolean;\n /** The question; defaults to \"Discard unsaved changes?\" (and its description and buttons). */\n title?: string;\n description?: string;\n /** The button that stays on the page. */\n stayLabel?: string;\n /** The button that leaves. */\n leaveLabel?: string;\n};\n\n/**\n * Dirty-state protection: while `when` is true, in-app navigation asks before discarding edits and the\n * browser warns on reload/close. An ended session never navigates away from them: it is resumed in place.\n */\nexport const UnsavedChangesGuard = ({\n when,\n shouldBlock,\n title,\n description,\n stayLabel,\n leaveLabel,\n}: UnsavedChangesGuardProps) => {\n const { t } = useTranslation();\n useRegisterUnsavedEdits(when);\n const blocker = useBlocker({\n shouldBlockFn: ({ current, next }) =>\n when && (shouldBlock?.({ currentPath: current.pathname, nextPath: next.pathname }) ?? true),\n enableBeforeUnload: () => when,\n withResolver: true,\n });\n return (\n <ConfirmDialog\n open={blocker.status === 'blocked'}\n onOpenChange={(open) => {\n if (!open && blocker.status === 'blocked') {\n blocker.reset();\n }\n }}\n title={title ?? t('unsaved.title')}\n description={description ?? t('unsaved.description')}\n cancelLabel={stayLabel ?? t('unsaved.stay')}\n confirmLabel={leaveLabel ?? t('unsaved.leave')}\n destructive\n onConfirm={() => blocker.proceed?.()}\n />\n );\n};\n"],"ignoreList":[0],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{f as r,h as i,m as a}from"./es2015-BJge4oQL.js";import{t as o}from"./cn-DVhJ55Mo.js";var s=e(t(),1),c=e(n(),1),l=Object.defineProperty,u=(e,t)=>l(e,`name`,{value:t,configurable:!0}),d=`Avatar`,[f,p]=a(d),m=[0,()=>void 0],[h,g]=f(d),_=s.forwardRef(u(function(e,t){let{__scopeAvatar:n,...r}=e,[a,o]=s.useState(`idle`),[l,u]=S();return(0,c.jsx)(h,{scope:n,imageLoadingStatus:a,setImageLoadingStatus:o,imageCount:l,setImageCount:u,children:(0,c.jsx)(i.span,{...r,ref:t})})},`Avatar`)),v=`AvatarFallback`,y=s.forwardRef(u(function(e,t){let{__scopeAvatar:n,delayMs:r,...a}=e,o=g(v,n),[l,u]=s.useState(r===void 0);return s.useEffect(()=>{if(r!==void 0){let e=window.setTimeout(()=>u(!0),r);return()=>window.clearTimeout(e)}},[r]),l&&o.imageLoadingStatus!==`loaded`?(0,c.jsx)(i.span,{...a,ref:t}):null},`AvatarFallback`));function b(e,{loadingStatus:t,setLoadingStatus:n,referrerPolicy:i,crossOrigin:a}){return r(()=>{if(!e){n(`error`);return}let t=new window.Image,r=u(e=>{let t=e.currentTarget;n(x(t))},`handleLoad`),o=u(()=>n(`error`),`handleError`);return t.addEventListener(`load`,r),t.addEventListener(`error`,o),i&&(t.referrerPolicy=i),t.crossOrigin=a??null,t.src=e,n(x(t)),()=>{t.removeEventListener(`load`,r),t.removeEventListener(`error`,o),n(`idle`)}},[e,a,i,n]),t}u(b,`useImageLoadingStatus`);function x(e){return e.complete?e.naturalWidth>0?`loaded`:`error`:`loading`}u(x,`getImageLoadingStatus`);function S(){return m}u(S,`useImageCount`);function C(e){}u(C,`useUpdateImageCount`);function w({className:e,size:t=`default`,...n}){return(0,c.jsx)(_,{"data-slot":`avatar`,"data-size":t,className:o(`group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6`,e),...n})}function T({className:e,...t}){return(0,c.jsx)(y,{"data-slot":`avatar-fallback`,className:o(`flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs`,e),...t})}function E({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`avatar-group`,className:o(`group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background`,e),...t})}function D({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`avatar-group-count`,className:o(`relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3`,e),...t})}var O=e=>{let t=e.replace(/@.*$/,``).split(/[\s._-]+/).filter(Boolean);return(t.length>1?`${t[0]?.[0]??``}${t.at(-1)?.[0]??``}`:t[0]?.[0]??`?`).toUpperCase()},k=({name:e,size:t=`default`,className:n})=>(0,c.jsx)(w,{size:t,"aria-hidden":`true`,className:n,children:(0,c.jsx)(T,{className:`text-xs font-semibold group-data-[size=sm]/avatar:text-2xs`,children:O(e)})});export{E as a,T as i,O as n,D as o,w as r,k as t};
2
- //# sourceMappingURL=UserAvatar-BItYDTyH.js.map
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{f as r,h as i,m as a}from"./es2015-1nJWBurR.js";import{t as o}from"./cn-DVhJ55Mo.js";var s=e(t(),1),c=e(n(),1),l=Object.defineProperty,u=(e,t)=>l(e,`name`,{value:t,configurable:!0}),d=`Avatar`,[f,p]=a(d),m=[0,()=>void 0],[h,g]=f(d),_=s.forwardRef(u(function(e,t){let{__scopeAvatar:n,...r}=e,[a,o]=s.useState(`idle`),[l,u]=S();return(0,c.jsx)(h,{scope:n,imageLoadingStatus:a,setImageLoadingStatus:o,imageCount:l,setImageCount:u,children:(0,c.jsx)(i.span,{...r,ref:t})})},`Avatar`)),v=`AvatarFallback`,y=s.forwardRef(u(function(e,t){let{__scopeAvatar:n,delayMs:r,...a}=e,o=g(v,n),[l,u]=s.useState(r===void 0);return s.useEffect(()=>{if(r!==void 0){let e=window.setTimeout(()=>u(!0),r);return()=>window.clearTimeout(e)}},[r]),l&&o.imageLoadingStatus!==`loaded`?(0,c.jsx)(i.span,{...a,ref:t}):null},`AvatarFallback`));function b(e,{loadingStatus:t,setLoadingStatus:n,referrerPolicy:i,crossOrigin:a}){return r(()=>{if(!e){n(`error`);return}let t=new window.Image,r=u(e=>{let t=e.currentTarget;n(x(t))},`handleLoad`),o=u(()=>n(`error`),`handleError`);return t.addEventListener(`load`,r),t.addEventListener(`error`,o),i&&(t.referrerPolicy=i),t.crossOrigin=a??null,t.src=e,n(x(t)),()=>{t.removeEventListener(`load`,r),t.removeEventListener(`error`,o),n(`idle`)}},[e,a,i,n]),t}u(b,`useImageLoadingStatus`);function x(e){return e.complete?e.naturalWidth>0?`loaded`:`error`:`loading`}u(x,`getImageLoadingStatus`);function S(){return m}u(S,`useImageCount`);function C(e){}u(C,`useUpdateImageCount`);function w({className:e,size:t=`default`,...n}){return(0,c.jsx)(_,{"data-slot":`avatar`,"data-size":t,className:o(`group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6`,e),...n})}function T({className:e,...t}){return(0,c.jsx)(y,{"data-slot":`avatar-fallback`,className:o(`flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs`,e),...t})}function E({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`avatar-group`,className:o(`group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background`,e),...t})}function D({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`avatar-group-count`,className:o(`relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3`,e),...t})}var O=e=>{let t=e.replace(/@.*$/,``).split(/[\s._-]+/).filter(Boolean);return(t.length>1?`${t[0]?.[0]??``}${t.at(-1)?.[0]??``}`:t[0]?.[0]??`?`).toUpperCase()},k=({name:e,size:t=`default`,className:n})=>(0,c.jsx)(w,{size:t,"aria-hidden":`true`,className:n,children:(0,c.jsx)(T,{className:`text-xs font-semibold group-data-[size=sm]/avatar:text-2xs`,children:O(e)})});export{E as a,T as i,O as n,D as o,w as r,k as t};
2
+ //# sourceMappingURL=UserAvatar-If-zlQNY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserAvatar-BItYDTyH.js","names":["Avatar","AvatarFallback","AvatarPrimitive.Root","AvatarPrimitive.Fallback","__toESM","require_jsx_runtime","useLayoutEffect2","Primitive","createContextScope","cn","import_react","require_react","import_jsx_runtime","__defProp","__name","target","AVATAR_NAME","createAvatarContext","createAvatarScope","STATIC_IMAGE_COUNT_STATE","AvatarProvider","useAvatarContext","Avatar$1","avatarProps","props","imageLoadingStatus","setImageLoadingStatus","imageCount","setImageCount","useImageCount","__scopeAvatar","forwardedRef","FALLBACK_NAME","AvatarFallback$1","fallbackProps","context","canRender","setCanRender","delayMs","timerId","useImageLoadingStatus","src","setLoadingStatus","image","handleLoad","image2","event","getImageLoadingStatus","handleError","referrerPolicy","crossOrigin","loadingStatus","state","useUpdateImageCount","Avatar","size","className","AvatarFallback","AvatarGroup","AvatarGroupCount","initialsOf","words","name","UserAvatar"],"sources":["../../../../node_modules/.pnpm/@radix-ui+react-avatar@1.2.6_@types+react-dom@19.3.0_@types+react@19.3.0__@types+react@_7afe6898fb0821d3b48e9a7a5e9acf8a/node_modules/@radix-ui/react-avatar/dist/index.mjs","../../src/components/ui/avatar.tsx","../../src/helpers/initials.ts","../../src/components/UserAvatar/index.tsx"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/avatar.tsx\nimport * as React from \"react\";\nimport { IS_DEVELOPMENT } from \"@radix-ui/primitive/is-development\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AVATAR_NAME = \"Avatar\";\nvar [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME);\nvar STATIC_IMAGE_COUNT_STATE = [\n 0,\n () => void 0\n];\nvar [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);\nvar Avatar = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function Avatar2(props, forwardedRef) {\n const { __scopeAvatar, ...avatarProps } = props;\n const [imageLoadingStatus, setImageLoadingStatus] = React.useState(\"idle\");\n const [imageCount, setImageCount] = useImageCount();\n return /* @__PURE__ */ jsx(\n AvatarProvider,\n {\n scope: __scopeAvatar,\n imageLoadingStatus,\n setImageLoadingStatus,\n imageCount,\n setImageCount,\n children: /* @__PURE__ */ jsx(Primitive.span, { ...avatarProps, ref: forwardedRef })\n }\n );\n }, \"Avatar\")\n);\nvar IMAGE_NAME = \"AvatarImage\";\nvar AvatarImage = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function AvatarImage2(props, forwardedRef) {\n const { __scopeAvatar, src, onLoadingStatusChange, ...imageProps } = props;\n const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n useUpdateImageCount(context.setImageCount);\n const imageLoadingStatus = useImageLoadingStatus(src, {\n referrerPolicy: imageProps.referrerPolicy,\n crossOrigin: imageProps.crossOrigin,\n loadingStatus: context.imageLoadingStatus,\n setLoadingStatus: context.setImageLoadingStatus\n });\n const handleLoadingStatusChange = useCallbackRef((status) => {\n onLoadingStatusChange?.(status);\n });\n const loadingStatusRef = React.useRef(imageLoadingStatus);\n useLayoutEffect(() => {\n const previousLoadingStatus = loadingStatusRef.current;\n loadingStatusRef.current = imageLoadingStatus;\n if (imageLoadingStatus !== previousLoadingStatus) {\n handleLoadingStatusChange(imageLoadingStatus);\n }\n }, [imageLoadingStatus, handleLoadingStatusChange]);\n return imageLoadingStatus === \"loaded\" ? /* @__PURE__ */ jsx(Primitive.img, { ...imageProps, ref: forwardedRef, src }) : null;\n }, \"AvatarImage\")\n);\nvar FALLBACK_NAME = \"AvatarFallback\";\nvar AvatarFallback = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function AvatarFallback2(props, forwardedRef) {\n const { __scopeAvatar, delayMs, ...fallbackProps } = props;\n const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n const [canRender, setCanRender] = React.useState(delayMs === void 0);\n React.useEffect(() => {\n if (delayMs !== void 0) {\n const timerId = window.setTimeout(() => setCanRender(true), delayMs);\n return () => window.clearTimeout(timerId);\n }\n }, [delayMs]);\n return canRender && context.imageLoadingStatus !== \"loaded\" ? /* @__PURE__ */ jsx(Primitive.span, { ...fallbackProps, ref: forwardedRef }) : null;\n }, \"AvatarFallback\")\n);\nfunction useImageLoadingStatus(src, {\n loadingStatus,\n setLoadingStatus,\n referrerPolicy,\n crossOrigin\n}) {\n useLayoutEffect(() => {\n if (!src) {\n setLoadingStatus(\"error\");\n return;\n }\n const image = new window.Image();\n const handleLoad = /* @__PURE__ */ __name((event) => {\n const image2 = event.currentTarget;\n setLoadingStatus(getImageLoadingStatus(image2));\n }, \"handleLoad\");\n const handleError = /* @__PURE__ */ __name(() => setLoadingStatus(\"error\"), \"handleError\");\n image.addEventListener(\"load\", handleLoad);\n image.addEventListener(\"error\", handleError);\n if (referrerPolicy) {\n image.referrerPolicy = referrerPolicy;\n }\n image.crossOrigin = crossOrigin ?? null;\n image.src = src;\n setLoadingStatus(getImageLoadingStatus(image));\n return () => {\n image.removeEventListener(\"load\", handleLoad);\n image.removeEventListener(\"error\", handleError);\n setLoadingStatus(\"idle\");\n };\n }, [src, crossOrigin, referrerPolicy, setLoadingStatus]);\n return loadingStatus;\n}\n__name(useImageLoadingStatus, \"useImageLoadingStatus\");\nfunction getImageLoadingStatus(image) {\n return image.complete ? image.naturalWidth > 0 ? \"loaded\" : \"error\" : \"loading\";\n}\n__name(getImageLoadingStatus, \"getImageLoadingStatus\");\nfunction useImageCount() {\n let state = STATIC_IMAGE_COUNT_STATE;\n if (IS_DEVELOPMENT) {\n state = React.useState(0);\n const [imageCount] = state;\n const hasWarnedRef = React.useRef(false);\n React.useEffect(() => {\n if (imageCount > 1 && !hasWarnedRef.current) {\n hasWarnedRef.current = true;\n console.warn(\n \"Avatar: Only one `Avatar.Image` component should be rendered per `Avatar.Root`, but multiple were detected. This will lead to unexpected behavior.\"\n );\n }\n }, [imageCount]);\n }\n return state;\n}\n__name(useImageCount, \"useImageCount\");\nfunction useUpdateImageCount(setImageCount) {\n if (IS_DEVELOPMENT) {\n React.useEffect(() => {\n setImageCount((imageCount) => imageCount + 1);\n return () => {\n setImageCount((imageCount) => imageCount - 1);\n };\n }, [setImageCount]);\n }\n}\n__name(useUpdateImageCount, \"useUpdateImageCount\");\nexport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n AvatarFallback as Fallback,\n AvatarImage as Image,\n Avatar as Root,\n createAvatarScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport { Avatar as AvatarPrimitive } from 'radix-ui';\nimport * as React from 'react';\nimport { cn } from '@/helpers/cn';\n\nfunction Avatar({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: 'default' | 'sm' | 'lg';\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n 'absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none',\n 'group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden',\n 'group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2',\n 'group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n 'group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n 'relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };\n","/** Up to two initials for an avatar: \"Ada Lovelace\" → \"AL\", \"ada@example.com\" → \"A\". */\nexport const initialsOf = (name: string): string => {\n const words = name\n .replace(/@.*$/, '')\n .split(/[\\s._-]+/)\n .filter(Boolean);\n const initials =\n words.length > 1 ? `${words[0]?.[0] ?? ''}${words.at(-1)?.[0] ?? ''}` : (words[0]?.[0] ?? '?');\n return initials.toUpperCase();\n};\n","import { Avatar, AvatarFallback } from '@/components/ui/avatar';\nimport { initialsOf } from '@/helpers/initials';\n\ntype UserAvatarProps = {\n /** A display name or email; up to two initials are shown. */\n name: string;\n /** sm 24px (dense tables, activity rows), default 32px (user lists). */\n size?: 'sm' | 'default';\n className?: string;\n};\n\n/** A person's initials in a circle. Decorative: the name is always shown beside it. */\nexport const UserAvatar = ({ name, size = 'default', className }: UserAvatarProps) => (\n <Avatar size={size} aria-hidden=\"true\" className={className}>\n <AvatarFallback className=\"text-xs font-semibold group-data-[size=sm]/avatar:text-2xs\">\n {initialsOf(name)}\n </AvatarFallback>\n </Avatar>\n);\n"],"ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"UserAvatar-If-zlQNY.js","names":["Avatar","AvatarFallback","AvatarPrimitive.Root","AvatarPrimitive.Fallback","__toESM","require_jsx_runtime","useLayoutEffect2","Primitive","createContextScope","cn","import_react","require_react","import_jsx_runtime","__defProp","__name","target","AVATAR_NAME","createAvatarContext","createAvatarScope","STATIC_IMAGE_COUNT_STATE","AvatarProvider","useAvatarContext","Avatar$1","avatarProps","props","imageLoadingStatus","setImageLoadingStatus","imageCount","setImageCount","useImageCount","__scopeAvatar","forwardedRef","FALLBACK_NAME","AvatarFallback$1","fallbackProps","context","canRender","setCanRender","delayMs","timerId","useImageLoadingStatus","src","setLoadingStatus","image","handleLoad","image2","event","getImageLoadingStatus","handleError","referrerPolicy","crossOrigin","loadingStatus","state","useUpdateImageCount","Avatar","size","className","AvatarFallback","AvatarGroup","AvatarGroupCount","initialsOf","words","name","UserAvatar"],"sources":["../../../../node_modules/.pnpm/@radix-ui+react-avatar@1.2.6_@types+react-dom@19.3.0_@types+react@19.3.0__@types+react@_7afe6898fb0821d3b48e9a7a5e9acf8a/node_modules/@radix-ui/react-avatar/dist/index.mjs","../../src/components/ui/avatar.tsx","../../src/helpers/initials.ts","../../src/components/UserAvatar/index.tsx"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/avatar.tsx\nimport * as React from \"react\";\nimport { IS_DEVELOPMENT } from \"@radix-ui/primitive/is-development\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AVATAR_NAME = \"Avatar\";\nvar [createAvatarContext, createAvatarScope] = createContextScope(AVATAR_NAME);\nvar STATIC_IMAGE_COUNT_STATE = [\n 0,\n () => void 0\n];\nvar [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);\nvar Avatar = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function Avatar2(props, forwardedRef) {\n const { __scopeAvatar, ...avatarProps } = props;\n const [imageLoadingStatus, setImageLoadingStatus] = React.useState(\"idle\");\n const [imageCount, setImageCount] = useImageCount();\n return /* @__PURE__ */ jsx(\n AvatarProvider,\n {\n scope: __scopeAvatar,\n imageLoadingStatus,\n setImageLoadingStatus,\n imageCount,\n setImageCount,\n children: /* @__PURE__ */ jsx(Primitive.span, { ...avatarProps, ref: forwardedRef })\n }\n );\n }, \"Avatar\")\n);\nvar IMAGE_NAME = \"AvatarImage\";\nvar AvatarImage = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function AvatarImage2(props, forwardedRef) {\n const { __scopeAvatar, src, onLoadingStatusChange, ...imageProps } = props;\n const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n useUpdateImageCount(context.setImageCount);\n const imageLoadingStatus = useImageLoadingStatus(src, {\n referrerPolicy: imageProps.referrerPolicy,\n crossOrigin: imageProps.crossOrigin,\n loadingStatus: context.imageLoadingStatus,\n setLoadingStatus: context.setImageLoadingStatus\n });\n const handleLoadingStatusChange = useCallbackRef((status) => {\n onLoadingStatusChange?.(status);\n });\n const loadingStatusRef = React.useRef(imageLoadingStatus);\n useLayoutEffect(() => {\n const previousLoadingStatus = loadingStatusRef.current;\n loadingStatusRef.current = imageLoadingStatus;\n if (imageLoadingStatus !== previousLoadingStatus) {\n handleLoadingStatusChange(imageLoadingStatus);\n }\n }, [imageLoadingStatus, handleLoadingStatusChange]);\n return imageLoadingStatus === \"loaded\" ? /* @__PURE__ */ jsx(Primitive.img, { ...imageProps, ref: forwardedRef, src }) : null;\n }, \"AvatarImage\")\n);\nvar FALLBACK_NAME = \"AvatarFallback\";\nvar AvatarFallback = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function AvatarFallback2(props, forwardedRef) {\n const { __scopeAvatar, delayMs, ...fallbackProps } = props;\n const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n const [canRender, setCanRender] = React.useState(delayMs === void 0);\n React.useEffect(() => {\n if (delayMs !== void 0) {\n const timerId = window.setTimeout(() => setCanRender(true), delayMs);\n return () => window.clearTimeout(timerId);\n }\n }, [delayMs]);\n return canRender && context.imageLoadingStatus !== \"loaded\" ? /* @__PURE__ */ jsx(Primitive.span, { ...fallbackProps, ref: forwardedRef }) : null;\n }, \"AvatarFallback\")\n);\nfunction useImageLoadingStatus(src, {\n loadingStatus,\n setLoadingStatus,\n referrerPolicy,\n crossOrigin\n}) {\n useLayoutEffect(() => {\n if (!src) {\n setLoadingStatus(\"error\");\n return;\n }\n const image = new window.Image();\n const handleLoad = /* @__PURE__ */ __name((event) => {\n const image2 = event.currentTarget;\n setLoadingStatus(getImageLoadingStatus(image2));\n }, \"handleLoad\");\n const handleError = /* @__PURE__ */ __name(() => setLoadingStatus(\"error\"), \"handleError\");\n image.addEventListener(\"load\", handleLoad);\n image.addEventListener(\"error\", handleError);\n if (referrerPolicy) {\n image.referrerPolicy = referrerPolicy;\n }\n image.crossOrigin = crossOrigin ?? null;\n image.src = src;\n setLoadingStatus(getImageLoadingStatus(image));\n return () => {\n image.removeEventListener(\"load\", handleLoad);\n image.removeEventListener(\"error\", handleError);\n setLoadingStatus(\"idle\");\n };\n }, [src, crossOrigin, referrerPolicy, setLoadingStatus]);\n return loadingStatus;\n}\n__name(useImageLoadingStatus, \"useImageLoadingStatus\");\nfunction getImageLoadingStatus(image) {\n return image.complete ? image.naturalWidth > 0 ? \"loaded\" : \"error\" : \"loading\";\n}\n__name(getImageLoadingStatus, \"getImageLoadingStatus\");\nfunction useImageCount() {\n let state = STATIC_IMAGE_COUNT_STATE;\n if (IS_DEVELOPMENT) {\n state = React.useState(0);\n const [imageCount] = state;\n const hasWarnedRef = React.useRef(false);\n React.useEffect(() => {\n if (imageCount > 1 && !hasWarnedRef.current) {\n hasWarnedRef.current = true;\n console.warn(\n \"Avatar: Only one `Avatar.Image` component should be rendered per `Avatar.Root`, but multiple were detected. This will lead to unexpected behavior.\"\n );\n }\n }, [imageCount]);\n }\n return state;\n}\n__name(useImageCount, \"useImageCount\");\nfunction useUpdateImageCount(setImageCount) {\n if (IS_DEVELOPMENT) {\n React.useEffect(() => {\n setImageCount((imageCount) => imageCount + 1);\n return () => {\n setImageCount((imageCount) => imageCount - 1);\n };\n }, [setImageCount]);\n }\n}\n__name(useUpdateImageCount, \"useUpdateImageCount\");\nexport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n AvatarFallback as Fallback,\n AvatarImage as Image,\n Avatar as Root,\n createAvatarScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport { Avatar as AvatarPrimitive } from 'radix-ui';\nimport * as React from 'react';\nimport { cn } from '@/helpers/cn';\n\nfunction Avatar({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: 'default' | 'sm' | 'lg';\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'group/avatar relative flex size-8 shrink-0 overflow-hidden rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n 'absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none',\n 'group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden',\n 'group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2',\n 'group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n 'group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n 'relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };\n","/** Up to two initials for an avatar: \"Ada Lovelace\" → \"AL\", \"ada@example.com\" → \"A\". */\nexport const initialsOf = (name: string): string => {\n const words = name\n .replace(/@.*$/, '')\n .split(/[\\s._-]+/)\n .filter(Boolean);\n const initials =\n words.length > 1 ? `${words[0]?.[0] ?? ''}${words.at(-1)?.[0] ?? ''}` : (words[0]?.[0] ?? '?');\n return initials.toUpperCase();\n};\n","import { Avatar, AvatarFallback } from '@/components/ui/avatar';\nimport { initialsOf } from '@/helpers/initials';\n\ntype UserAvatarProps = {\n /** A display name or email; up to two initials are shown. */\n name: string;\n /** sm 24px (dense tables, activity rows), default 32px (user lists). */\n size?: 'sm' | 'default';\n className?: string;\n};\n\n/** A person's initials in a circle. Decorative: the name is always shown beside it. */\nexport const UserAvatar = ({ name, size = 'default', className }: UserAvatarProps) => (\n <Avatar size={size} aria-hidden=\"true\" className={className}>\n <AvatarFallback className=\"text-xs font-semibold group-data-[size=sm]/avatar:text-2xs\">\n {initialsOf(name)}\n </AvatarFallback>\n </Avatar>\n);\n"],"ignoreList":[0],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{Bt as r,En as i,Ft as a,It as o,Jt as s,Kt as c,ft as l,gt as u,mt as d,pt as f,qt as p,wt as ee,xt as te}from"./src-CMor9izq.js";import{m}from"./createLucideIcon-BOsNKleB.js";function h(e){return e}var g=e(t(),1),_=g.useLayoutEffect;function v(e){return e[e.length-1]}function y(e,t){return typeof e==`function`?e(t):e}var b=Object.prototype.hasOwnProperty;function ne(e){for(let t in e)if(b.call(e,t))return!0;return!1}var x=()=>Object.create(null),S=(e,t)=>C(e,t,!0);function C(e,t,n,r=0){if(e===t)return e;if(r++>500)return t;let i=Array.isArray(e)&&Array.isArray(t);if(!i&&!(w(e)&&w(t)))return t;let a=Object.keys(e),o=a.length,s=Object.keys(t),c=s.length;if(i?o!==e.length||c!==t.length||o&&v(a)!==`${o-1}`||c&&v(s)!==`${c-1}`:o!==Object.getOwnPropertyNames(e).length||c!==Object.getOwnPropertyNames(t).length||Object.getOwnPropertySymbols(t).length)return t;let l=0,u,d,f;if(i){for(;l<c&&(f=l,d=e[f],u=t[f],u=d===u?d:typeof d==`object`?C(d,u,n,r):u,u===d);l++);if(l===c&&o===c)return e}else{let i=o===c,p=!0;for(;l<c;l++){f=s[l],d=e[f];let o=t[f];u=d===o?d:typeof d==`object`?C(d,o,n,r):o,i&&=u===d&&(a[l]===f||b.call(e,f)),p&&=Object.is(u,o),a[l]=u}if(i)return Object.getOwnPropertySymbols(e).length?t:e;if(p)return t}let p=i?s.fill(0):n?x():{};for(let o=0;o<c;o++)f=i?o:s[o],i?(d=e[f],o>l&&(u=t[f],u=d===u?d:typeof d==`object`?C(d,u,n,r):u),p[f]=o<l?d:u):p[f]=a[o];return p}function w(e){return!e||typeof e!=`object`?!1:(Object.getPrototypeOf(e)?.constructor??Object)===Object}function T(e,t,n,r){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let i=0,a=e.length;i<a;i++){let a=e[i],o=t[i];if(a!==o&&!T(a,o,n,r))return!1}return!0}if(w(e)&&w(t)){if(n){for(let i in t)if((r||t[i]!==void 0)&&!T(e[i],t[i],n,r))return!1;return!0}let i=0;if(r)i=Object.keys(e).length;else for(let t in e)e[t]!==void 0&&i++;for(let a in t)if((r||t[a]!==void 0)&&(i--===0||!T(e[a],t[a],n,r)))return!1;return i===0}return!1}var E=/[\x00-\x1f\x7f"<>`{}]/g;function D(e){return e.replace(E,e=>`%`+e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`))}function O(e){let t;try{t=decodeURI(e)}catch{t=e.replaceAll(/%[0-9A-F]{2}/gi,e=>{try{return decodeURI(e)}catch{return e}})}return D(t)}var k=[`http:`,`https:`,`mailto:`,`tel:`];function A(e){if(e[0]!==`/`&&e.includes(`:`))return/^[\x00-\x20]*([a-z][a-z\d+.\t\n\r-]*:)/i.exec(e)?.[1]?.replace(/[\t\n\r]/g,``).toLowerCase()}var j=/^[\x00-\x20]*[\\/][\t\n\r]*[\\/]/;function M(e,t){if(!e)return!1;if(j.test(e))return!0;let n=A(e);return n?!t.has(n):!1}var N={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},P=/[&><\u2028\u2029]/g;function F(e){return e.replace(P,e=>N[e])}function I(e){if(!e)return e;let t=e;if(/[%\\\x00-\x1f\x7f]/.test(e)){let n=/%25|%5C/gi,r=0,i;for(t=``;(i=n.exec(e))!==null;)t+=O(e.slice(r,i.index))+i[0],r=n.lastIndex;t+=O(r?e.slice(r):e)}return t}function L(e){return/[\s\u0080-\uFFFF]/.test(e)?e.replace(/\s|[^\u0000-\u007F]/gu,encodeURIComponent):e}function R(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function z(e){return e.replace(/\/{2,}/g,`/`)}function B(e){return e===`/`?e:e.replace(/^\/+/,``)}function V(e){let t=e.length;return t>1&&e[t-1]===`/`?e.replace(/\/+$/,``):e}function re(e){return V(B(e))}function H(e,t){return e?.endsWith(`/`)&&e!==`/`&&e!==`${t}/`?e.slice(0,-1):e}function ie(e,t,n=`never`,r){if(t.includes(`//`)&&(t=z(t)),t.startsWith(`/`))return t.length===1||n===`preserve`?t:n===`always`?t.endsWith(`/`)?t:`${t}/`:t.endsWith(`/`)?t.slice(0,-1):t;let i=t===`.`,a;if(r){a=i?e:e+`\0`+t;let n=r.get(a);if(n)return n}let o;if(i)o=e.split(`/`);else{for(e.includes(`//`)&&(e=z(e)),o=e.split(`/`);o.length>1&&v(o)===``;)o.pop();let n=t.split(`/`);for(let e=0,t=n.length;e<t;e++){let r=n[e];r===``?e?e===t-1&&o.push(r):o=[r]:r===`..`?o.length>1?o.pop():o=[``]:r===`.`||o.push(r)}}o.length>1&&(v(o)===``?n===`never`&&o.pop():n===`always`&&o.push(``));let s=o.join(`/`),c=(i?z(s):s)||`/`;return a&&r&&r.set(a,c),c}function ae(e){let t=new Map(e.map(e=>[encodeURIComponent(e),e])),n=new RegExp([...t.keys()].join(`|`).replace(/[.*()]/g,`\\$&`),`g`);return e=>e.replace(n,e=>t.get(e)??e)}function oe(e){return e==null||e===``}function se(e,t,n){if(typeof t!=`string`)return``+(t??void 0);let r=e===`_splat`;if(r&&(!t||/^[a-zA-Z0-9\-._~!/]*$/.test(t)))return t;let i=encodeURIComponent(t);return r&&(i=i.replaceAll(`%2F`,`/`)),n?n(i):i}function ce(e,t,n,r,i){let a=e.endsWith(`/`)?`/`:``,o=``;for(let e of t){if(typeof e==`string`){o+=e;continue}let[t,s,c,l]=e,u=t===2,d=u&&l!==void 0?l+a:l,f=n[s];if(t!==3||f!=null){if(i&&(i[s]=f,u&&(i[`*`]=f)),u&&oe(f)){if(c===`/`&&!d)continue;f=``}o+=c+se(s,f,r)+(d||``)}}return o+a||`/`}var le=`Error preloading route! ☝️`,U=e(n(),1),W=()=>!0,ue=()=>!1;function de({children:e,fallback:t=null}){return(0,U.jsx)(g.Fragment,{children:fe()?e:t})}function fe(e=!0){return g.useSyncExternalStore(pe,W,e?ue:W)}function pe(){return()=>{}}var me=g.createContext(null);function G(e){return g.useContext(me)}var he=c();function ge(e,t){return e===t}function _e(e,t=e=>e,n){let r=n?.compare??ge,i=(0,g.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,g.useCallback)(()=>e.get(),[e]);return(0,he.useSyncExternalStoreWithSelector)(i,a,a,t,r)}function ve(e){let t=G();return g.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function ye(e){let t=G(),n=ve(),r=g.useRef(null);return _(()=>{r.current!==e&&(n(e),r.current=e)},[t,e,n]),null}function be(...e){let t=g.useRef(e),n=t.current;return e.forEach((e,t)=>{T(n[t],e,!1,!0)||(n[t]=e)}),t.current}function K(e,t){e.preloadRoute(t).catch(e=>{console.warn(e),console.warn(le)})}var xe={compare:(e,t)=>e[0]===t[0]&&e[1]===t[1]};function Se(e,t){let n=typeof e==`string`&&A(e);if(n)return t.has(n)?e:null}function Ce(e,t,n,r,i){let a=H(e.pathname,r),o=H(t.pathname,r);return(n?.exact?a!==o:!a.startsWith(o)||a.length!==o.length&&a[o.length]!==`/`)||(n?.includeSearch??!0)&&!T(e.search,t.search,!n?.exact,n?.explicitUndefined)?!1:!n?.includeHash||i&&e.hash===t.hash}function we(e,t,n){let r=G(),i=g.useRef(null),a=g.useCallback(e=>{if(i.current=e,typeof t==`function`)return t(e);t&&(t.current=e)},[t]),{activeOptions:o,to:s,preload:c,preloadDelay:l,hashScrollIntoView:u,replace:d,startTransition:f,resetScroll:p,viewTransition:ee,ignoreBlocker:te,disabled:m,target:h,onClick:_,onBlur:v,onFocus:y,onMouseEnter:b,onMouseLeave:ne,onTouchStart:x}=e,S=fe(!!o?.includeHash),[C,w,T]=be(e.search,e.params,o),[E,D]=g.useMemo(()=>[e,{...e}],[r,e.from,e._fromLocation,e.hash,e.to,C,w,e.state,e.mask,e.unsafeRelative]),O=g.useMemo(()=>{let e=Se(s,r.protocolAllowlist);if(e!==void 0){let t=[e??void 0];return()=>t}let t,n;return e=>{E._fromLocation||(D._fromLocation=e);let i=r.buildLocation(D),a=Ae(i,r,m);return(!t||t[0]!==a)&&(t=[a,!(m||a&&!A(a))&&void 0],n=[a,!0]),t[1]!==void 0&&Ce(e,i,T,r.basepath,S)?n:t}},[T,m,S,E,D,r,s]),[k,j]=_e(r.stores.location,O,xe),M=j===void 0&&k,N=m||k===void 0,P=g.useRef(!1),F=e.reloadDocument||M||N?!1:c??r.options.defaultPreload,I=l??r.options.defaultPreloadDelay??0,L=g.useCallback(e=>{let t=e?.isIntersecting;if(!(t??F===`intent`)){t===!1&&J(i);return}if(!I){K(r,E);return}q.has(i)||q.set(i,setTimeout(()=>{q.delete(i),K(r,E)},I))},[r,E,i,F,I]);g.useEffect(()=>{if(!F)return;F===`render`&&!P.current&&(P.current=!0,K(r,E));let e=!0,t;return F===`viewport`&&i.current&&typeof IntersectionObserver==`function`&&(t=new IntersectionObserver(t=>{e&&L(t.pop())},{rootMargin:`100px`}),t.observe(i.current)),()=>{e=!1,t?.disconnect(),J(i)}},[r,E,F,L,i]);let R=Oe(e,n);if(R.ref=t?a:i,M)return R.href=M,R;let z=e=>{let t=h??e.currentTarget.getAttribute(`target`);!N&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(!t||t===`_self`)&&e.button===0&&(e.preventDefault(),r.navigate({...E,replace:d,resetScroll:p,hashScrollIntoView:u,startTransition:f,viewTransition:ee,ignoreBlocker:te}))},B=()=>{F===`intent`&&K(r,E)},V=()=>{F===`intent`&&J(i)};return R.onClick=Y(_,z),R.onBlur=Y(v,V),R.onFocus=Y(y,L),R.onMouseEnter=Y(b,L),R.onMouseLeave=Y(ne,V),R.onTouchStart=Y(x,B),ke(R,e,j,k,N,n)}var Te={},Ee={className:`active`},De=new Set([`to`,`params`,`search`,`hash`,`state`,`mask`,`from`,`unsafeRelative`,`_fromLocation`,`reloadDocument`,`preload`,`preloadDelay`,`preloadIntentProximity`,`hashScrollIntoView`,`replace`,`startTransition`,`resetScroll`,`viewTransition`,`ignoreBlocker`,`activeProps`,`inactiveProps`,`activeOptions`,`_asChild`]);function Oe(e,t){let n={};for(let r in e)De.has(r)||r===`type`&&t!==void 0||r===`disabled`&&t===`a`||(n[r]=e[r]);return n}function ke(e,t,n,r,i,a){let{activeProps:o,inactiveProps:s,className:c,style:l,target:u}=t,d=y(n?o:s,{})??(n?Ee:Te);Object.assign(e,d),e.href=r,a!==`a`&&(e.disabled=i),e.target=u;let f=d.style;(l||f)&&(e.style=l&&f?{...l,...f}:l||f);let p=d.className;return(c||p)&&(e.className=c?p?`${c} ${p}`:c:p),i&&(e.role=`link`,e[`aria-disabled`]=!0),n&&(e[`data-status`]=`active`,e[`aria-current`]=`page`),e}var q=new WeakMap,J=e=>{clearTimeout(q.get(e)),q.delete(e)},Y=(e,t)=>e?n=>n.defaultPrevented||(e(n),n.defaultPrevented||t(n)):t;function Ae(e,t,n){if(n)return;let r=e.maskedLocation??e,i=r.external?r.publicHref:t.history.createHref(r.publicHref)||`/`;if(!r.external&&i===r.publicHref||!M(i,t.protocolAllowlist))return i}function je(e){return g.forwardRef(function(t,n){return(0,U.jsx)(Me,{...t,_asChild:e,ref:n})})}var Me=g.memo(g.forwardRef((e,t)=>{let n=e._asChild||`a`,r=we(e,t,n),i=typeof e.children==`function`?e.children({isActive:r[`data-status`]===`active`}):e.children;return g.createElement(n,r,i)}),Ne);function Ne(e,t){let n=0;for(let r in t)if(n++,e[r]!==t[r]&&(!De.has(r)||!T(e[r],t[r],!1,!0)))return!1;for(let t in e)n--;return n===0}var Pe=e=>e,Fe=e=>e instanceof m&&e.status===401,Ie=e=>e instanceof m&&e.status===403,Le=e=>e instanceof m&&e.status===404,Re=e=>e instanceof m&&e.status===409,X=(e,t)=>e instanceof m&&e.code===t,ze=e=>{if(!X(e,`SCHEMA_INVALID`))return[];let t=e.details?.issues;return Array.isArray(t)?t:[]},Z=h({queryKey:r.me,queryFn:async()=>{try{let e=await u.auth.me();return f(e.csrfToken),e}catch(e){if(Fe(e)){if(a()||o.getState().signInRequired)throw e;return null}if(X(e,`SITE_NOT_FOUND`)&&!te().explicit)return ee(),new Promise(()=>void 0);throw e}},staleTime:6e4}),Be=h({queryKey:r.setupStatus,queryFn:()=>u.setup.status(),staleTime:1/0}),Ve=()=>s(Z),He=()=>s(Be),Q=async(e,t)=>{f(t.csrfToken),o.getState().clearSignInRequired(),e.removeQueries({predicate:e=>e.queryKey[0]!==r.me[0]}),e.setQueryData(r.setupStatus,e=>({requiresToken:!1,...e,required:!1})),await e.fetchQuery({...Z,staleTime:0})},$={silent:!0},Ue=()=>{let e=i();return p({mutationKey:[`auth`,`login`],meta:$,mutationFn:e=>d(()=>u.auth.login(e)),onSuccess:t=>Q(e,t)})},We=()=>{let e=i();return p({mutationKey:[`auth`,`resume`],meta:$,mutationFn:e=>d(()=>u.auth.login(e)),onSuccess:async t=>{f(t.csrfToken),await e.fetchQuery({...Z,staleTime:0}),o.getState().resume(),e.invalidateQueries({predicate:e=>e.state.status===`error`})}})},Ge=()=>{let e=i();return p({mutationKey:[`setup`],meta:$,mutationFn:e=>d(()=>u.setup.complete(e)),onSuccess:t=>Q(e,t)})},Ke=()=>{let e=i();return p({mutationKey:[`auth`,`acceptInvitation`],meta:$,mutationFn:e=>d(()=>u.invitations.accept(e)),onSuccess:t=>Q(e,t)})},qe=()=>{let e=i();return p({mutationKey:[`auth`,`logout`],mutationFn:()=>d(()=>u.auth.logout()),onSettled:()=>{l(),o.getState().clearSignInRequired(),e.setQueryData(r.me,null),e.removeQueries({predicate:e=>e.queryKey[0]!==r.me[0]})}})},Je=()=>p({mutationKey:[`auth`,`requestPasswordReset`],meta:$,mutationFn:e=>d(()=>u.auth.requestPasswordReset(e))}),Ye=e=>s({queryKey:r.invitationInspect(e??``),queryFn:()=>u.invitations.inspect(e??``),enabled:!!e,retry:!1,staleTime:1/0,meta:{silent:!0}}),Xe=()=>p({mutationKey:[`auth`,`confirmPasswordReset`],meta:$,mutationFn:e=>d(()=>u.auth.confirmPasswordReset(e))}),Ze=()=>{let e=i();return p({mutationKey:[`auth`,`updateProfile`],meta:$,mutationFn:e=>d(()=>u.auth.updateProfile(e)),onSuccess:t=>e.setQueryData(r.me,e=>e&&{...e,user:t})})},Qe=()=>p({mutationKey:[`auth`,`changePassword`],meta:$,mutationFn:e=>d(()=>u.auth.changePassword(e)),onSuccess:({csrfToken:e})=>f(e)}),$e=e=>{let{data:t}=Ve();return t?.globalPermissions.includes(e)??!1};export{C as $,de as A,x as B,je as C,_e as D,ve as E,re as F,y as G,T as H,B as I,b as J,A as K,V as L,ae as M,ce as N,G as O,ie as P,j as Q,k as R,Me as S,ye as T,L as U,I as V,F as W,v as X,M as Y,S as Z,Re as _,Xe as a,Fe as b,Ue as c,Je as d,_ as et,We as f,X as g,Ze as h,Qe as i,z as j,me as k,qe as l,He as m,Be as n,$e as o,Ge as p,ne as q,Ke as r,Ye as s,Z as t,h as tt,Ve as u,Ie as v,Pe as w,ze as x,Le as y,R as z};
2
+ //# sourceMappingURL=auth-BFSvtV59.js.map