@shapio/cms 0.5.8 → 0.5.10

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 (343) hide show
  1. package/dist/admin/assets/{AssetTile-BrMzsUZD.js → AssetTile-DecaDqjj.js} +2 -2
  2. package/dist/admin/assets/{AssetTile-BrMzsUZD.js.map → AssetTile-DecaDqjj.js.map} +1 -1
  3. package/dist/admin/assets/AssistError-rslPtgWB.js +2 -0
  4. package/dist/admin/assets/{AssistError-Cs-r9Ssc.js.map → AssistError-rslPtgWB.js.map} +1 -1
  5. package/dist/admin/assets/{BlockMenuItems-DsccXMc_.js → BlockMenuItems-JHFue7Qt.js} +2 -2
  6. package/dist/admin/assets/{BlockMenuItems-DsccXMc_.js.map → BlockMenuItems-JHFue7Qt.js.map} +1 -1
  7. package/dist/admin/assets/Body-7NgJl9Pi.js +2 -0
  8. package/dist/admin/assets/Body-7NgJl9Pi.js.map +1 -0
  9. package/dist/admin/assets/Builder-DmlYcgiP.js +2 -0
  10. package/dist/admin/assets/Builder-DmlYcgiP.js.map +1 -0
  11. package/dist/admin/assets/{CodeEditor-CBCR73Wd.js → CodeEditor-Dv1FtkvI.js} +2 -2
  12. package/dist/admin/assets/{CodeEditor-CBCR73Wd.js.map → CodeEditor-Dv1FtkvI.js.map} +1 -1
  13. package/dist/admin/assets/{CopyButton-CxFsBHfF.js → CopyButton-Brnpfqe0.js} +2 -2
  14. package/dist/admin/assets/{CopyButton-CxFsBHfF.js.map → CopyButton-Brnpfqe0.js.map} +1 -1
  15. package/dist/admin/assets/{CursorPager-BW2U3v6l.js → CursorPager-C7cAK5Qe.js} +2 -2
  16. package/dist/admin/assets/{CursorPager-BW2U3v6l.js.map → CursorPager-C7cAK5Qe.js.map} +1 -1
  17. package/dist/admin/assets/{ExternalLink-BITMgS1K.js → ExternalLink-D80sb5Jj.js} +2 -2
  18. package/dist/admin/assets/{ExternalLink-BITMgS1K.js.map → ExternalLink-D80sb5Jj.js.map} +1 -1
  19. package/dist/admin/assets/{FocalPoint-CpZTve1E.js → FocalPoint-Bhtb1gUa.js} +2 -2
  20. package/dist/admin/assets/{FocalPoint-CpZTve1E.js.map → FocalPoint-Bhtb1gUa.js.map} +1 -1
  21. package/dist/admin/assets/Form-Cf1ephPH.js +2 -0
  22. package/dist/admin/assets/Form-Cf1ephPH.js.map +1 -0
  23. package/dist/admin/assets/FormCheckboxGroup-BzVZFR3W.js +2 -0
  24. package/dist/admin/assets/FormCheckboxGroup-BzVZFR3W.js.map +1 -0
  25. package/dist/admin/assets/{FormRadioGroup-Cfx5pvzU.js → FormRadioGroup-BzmLzRnI.js} +2 -2
  26. package/dist/admin/assets/{FormRadioGroup-Cfx5pvzU.js.map → FormRadioGroup-BzmLzRnI.js.map} +1 -1
  27. package/dist/admin/assets/FormSelectField-Cl7EjXc3.js +2 -0
  28. package/dist/admin/assets/FormSelectField-Cl7EjXc3.js.map +1 -0
  29. package/dist/admin/assets/FormSheet-CLZpd_7B.js +2 -0
  30. package/dist/admin/assets/FormSheet-CLZpd_7B.js.map +1 -0
  31. package/dist/admin/assets/{FormSwitchField-BLOh7qei.js → FormSwitchField-BbqQ3tx_.js} +2 -2
  32. package/dist/admin/assets/{FormSwitchField-BLOh7qei.js.map → FormSwitchField-BbqQ3tx_.js.map} +1 -1
  33. package/dist/admin/assets/{FormTextareaField-CO115n_u.js → FormTextareaField-9RN5Pt3B.js} +2 -2
  34. package/dist/admin/assets/{FormTextareaField-CO115n_u.js.map → FormTextareaField-9RN5Pt3B.js.map} +1 -1
  35. package/dist/admin/assets/{HintedLabel-DzHnEdIK.js → HintedLabel-D9IVF0EE.js} +2 -2
  36. package/dist/admin/assets/{HintedLabel-DzHnEdIK.js.map → HintedLabel-D9IVF0EE.js.map} +1 -1
  37. package/dist/admin/assets/{InfoHint-CSEtcHjL.js → InfoHint-tlSeZB9U.js} +2 -2
  38. package/dist/admin/assets/{InfoHint-CSEtcHjL.js.map → InfoHint-tlSeZB9U.js.map} +1 -1
  39. package/dist/admin/assets/{InlineConfirm-yW-iUKFC.js → InlineConfirm-Kj9AOIFO.js} +2 -2
  40. package/dist/admin/assets/{InlineConfirm-yW-iUKFC.js.map → InlineConfirm-Kj9AOIFO.js.map} +1 -1
  41. package/dist/admin/assets/{InsertMenuItem-CCr9e0qY.js → InsertMenuItem-CHAp2tH7.js} +2 -2
  42. package/dist/admin/assets/{InsertMenuItem-CCr9e0qY.js.map → InsertMenuItem-CHAp2tH7.js.map} +1 -1
  43. package/dist/admin/assets/{LinkTabs-8SmS1vCd.js → LinkTabs-oQXsy1I3.js} +2 -2
  44. package/dist/admin/assets/{LinkTabs-8SmS1vCd.js.map → LinkTabs-oQXsy1I3.js.map} +1 -1
  45. package/dist/admin/assets/{Match-CcD9KxHH.js → Match-BfNRwPfR.js} +2 -2
  46. package/dist/admin/assets/{Match-CcD9KxHH.js.map → Match-BfNRwPfR.js.map} +1 -1
  47. package/dist/admin/assets/{NoAccess-C8RLPN0I.js → NoAccess-DnEpYj9l.js} +2 -2
  48. package/dist/admin/assets/{NoAccess-C8RLPN0I.js.map → NoAccess-DnEpYj9l.js.map} +1 -1
  49. package/dist/admin/assets/Panel-Bcl09TtM.js.map +1 -1
  50. package/dist/admin/assets/{QueryView-xMP_uJ_t.js → QueryView-B86NcRt5.js} +2 -2
  51. package/dist/admin/assets/{QueryView-xMP_uJ_t.js.map → QueryView-B86NcRt5.js.map} +1 -1
  52. package/dist/admin/assets/{RadioTile-DQFmni5A.js → RadioTile-Bwd2Pmlk.js} +2 -2
  53. package/dist/admin/assets/RadioTile-Bwd2Pmlk.js.map +1 -0
  54. package/dist/admin/assets/{RichTextField-CVHRIbnu.js → RichTextField-Dou79MHF.js} +4 -4
  55. package/dist/admin/assets/RichTextField-Dou79MHF.js.map +1 -0
  56. package/dist/admin/assets/{RowTitle-Bqt6evG9.js → RowTitle-DH9OZs3g.js} +2 -2
  57. package/dist/admin/assets/{RowTitle-Bqt6evG9.js.map → RowTitle-DH9OZs3g.js.map} +1 -1
  58. package/dist/admin/assets/{SecretReveal-Bm6nYg5J.js → SecretReveal-D95oACLj.js} +2 -2
  59. package/dist/admin/assets/{SecretReveal-Bm6nYg5J.js.map → SecretReveal-D95oACLj.js.map} +1 -1
  60. package/dist/admin/assets/{SharedGlyph-cUmTh0_C.js → SharedGlyph-Chwb1EIS.js} +2 -2
  61. package/dist/admin/assets/{SharedGlyph-cUmTh0_C.js.map → SharedGlyph-Chwb1EIS.js.map} +1 -1
  62. package/dist/admin/assets/StepList-D9iHsUZJ.js +2 -0
  63. package/dist/admin/assets/StepList-D9iHsUZJ.js.map +1 -0
  64. package/dist/admin/assets/Structure-CewJL1b3.js +2 -0
  65. package/dist/admin/assets/{Structure-D8csgrIt.js.map → Structure-CewJL1b3.js.map} +1 -1
  66. package/dist/admin/assets/{SubNavLink-CiCaVV8U.js → SubNavLink-7Cs1LqMv.js} +2 -2
  67. package/dist/admin/assets/SubNavLink-7Cs1LqMv.js.map +1 -0
  68. package/dist/admin/assets/{SuggestAltButton-CvIoirnz.js → SuggestAltButton-BK1uo4yC.js} +2 -2
  69. package/dist/admin/assets/{SuggestAltButton-CvIoirnz.js.map → SuggestAltButton-BK1uo4yC.js.map} +1 -1
  70. package/dist/admin/assets/{TextLink-HRn66VL1.js → TextLink-Dfs5wsc5.js} +2 -2
  71. package/dist/admin/assets/{TextLink-HRn66VL1.js.map → TextLink-Dfs5wsc5.js.map} +1 -1
  72. package/dist/admin/assets/{Thumbnail-DNj5TRBI.js → Thumbnail-C2A_Ub77.js} +2 -2
  73. package/dist/admin/assets/{Thumbnail-DNj5TRBI.js.map → Thumbnail-C2A_Ub77.js.map} +1 -1
  74. package/dist/admin/assets/Trans-CPoNNUK1.js +2 -0
  75. package/dist/admin/assets/Trans-CPoNNUK1.js.map +1 -0
  76. package/dist/admin/assets/{UnsavedChangesGuard-CUiuMklN.js → UnsavedChangesGuard-BsEyn9oH.js} +2 -2
  77. package/dist/admin/assets/{UnsavedChangesGuard-CUiuMklN.js.map → UnsavedChangesGuard-BsEyn9oH.js.map} +1 -1
  78. package/dist/admin/assets/{UserAvatar-p-jV-LoD.js → UserAvatar-CgGKOFfP.js} +2 -2
  79. package/dist/admin/assets/{UserAvatar-p-jV-LoD.js.map → UserAvatar-CgGKOFfP.js.map} +1 -1
  80. package/dist/admin/assets/auth-BFSvtV59.js +2 -0
  81. package/dist/admin/assets/{auth-CQO4MBUj.js.map → auth-BFSvtV59.js.map} +1 -1
  82. package/dist/admin/assets/{badge-CqKF1pwz.js → badge-DGqA_yr_.js} +2 -2
  83. package/dist/admin/assets/{badge-CqKF1pwz.js.map → badge-DGqA_yr_.js.map} +1 -1
  84. package/dist/admin/assets/baseExtensions-TVKN1UwW.js.map +1 -1
  85. package/dist/admin/assets/{boxes-CAygw8zF.js → boxes-_5klpWNM.js} +2 -2
  86. package/dist/admin/assets/{boxes-CAygw8zF.js.map → boxes-_5klpWNM.js.map} +1 -1
  87. package/dist/admin/assets/{calendar-clock-BZGtAvWR.js → calendar-clock-VXok22Xj.js} +2 -2
  88. package/dist/admin/assets/{calendar-clock-BZGtAvWR.js.map → calendar-clock-VXok22Xj.js.map} +1 -1
  89. package/dist/admin/assets/changeSets-B6HxCJ4A.js +2 -0
  90. package/dist/admin/assets/{changeSets-8EburmT0.js.map → changeSets-B6HxCJ4A.js.map} +1 -1
  91. package/dist/admin/assets/chevron-left-CkRxDtvO.js +2 -0
  92. package/dist/admin/assets/{chevron-left-DGU3HGYG.js.map → chevron-left-CkRxDtvO.js.map} +1 -1
  93. package/dist/admin/assets/{circle-check-C37MSJqX.js → circle-check-DtDq7QMo.js} +2 -2
  94. package/dist/admin/assets/{circle-check-C37MSJqX.js.map → circle-check-DtDq7QMo.js.map} +1 -1
  95. package/dist/admin/assets/{clock-2arjsgZ4.js → clock-BtvZR9KD.js} +2 -2
  96. package/dist/admin/assets/{clock-2arjsgZ4.js.map → clock-BtvZR9KD.js.map} +1 -1
  97. package/dist/admin/assets/cn-DVhJ55Mo.js.map +1 -1
  98. package/dist/admin/assets/{constants-a_15vqOh.js → constants-DY3YJAKH.js} +2 -2
  99. package/dist/admin/assets/{constants-a_15vqOh.js.map → constants-DY3YJAKH.js.map} +1 -1
  100. package/dist/admin/assets/content-BNZF26Ve.js +3 -0
  101. package/dist/admin/assets/content-BNZF26Ve.js.map +1 -0
  102. package/dist/admin/assets/{contentCounts-DP7YYeZZ.js → contentCounts-BzC7IQqP.js} +2 -2
  103. package/dist/admin/assets/{contentCounts-DP7YYeZZ.js.map → contentCounts-BzC7IQqP.js.map} +1 -1
  104. package/dist/admin/assets/{contentTypes-84uc0bjR.js → contentTypes-Bz2xpqGf.js} +2 -2
  105. package/dist/admin/assets/{contentTypes-84uc0bjR.js.map → contentTypes-Bz2xpqGf.js.map} +1 -1
  106. package/dist/admin/assets/{context-IKYdzQJ-.js → context-CEVKblBl.js} +2 -2
  107. package/dist/admin/assets/{context-IKYdzQJ-.js.map → context-CEVKblBl.js.map} +1 -1
  108. package/dist/admin/assets/{copy-CsSRHgKZ.js → copy-B7vIq8DS.js} +2 -2
  109. package/dist/admin/assets/{copy-CsSRHgKZ.js.map → copy-B7vIq8DS.js.map} +1 -1
  110. package/dist/admin/assets/createLucideIcon-BOsNKleB.js +2 -0
  111. package/dist/admin/assets/createLucideIcon-BOsNKleB.js.map +1 -0
  112. package/dist/admin/assets/develop-D6CtwuYj.js +11 -0
  113. package/dist/admin/assets/develop-D6CtwuYj.js.map +1 -0
  114. package/dist/admin/assets/{dropdown-menu-_xfaEp5C.js → dropdown-menu-Bz7CLcRK.js} +2 -2
  115. package/dist/admin/assets/{dropdown-menu-_xfaEp5C.js.map → dropdown-menu-Bz7CLcRK.js.map} +1 -1
  116. package/dist/admin/assets/{ellipsis-F91991on.js → ellipsis-Ci0rsbCJ.js} +2 -2
  117. package/dist/admin/assets/{ellipsis-F91991on.js.map → ellipsis-Ci0rsbCJ.js.map} +1 -1
  118. package/dist/admin/assets/{entryLink-CVB-TdIn.js → entryLink-B0hSb_dN.js} +2 -2
  119. package/dist/admin/assets/{entryLink-CVB-TdIn.js.map → entryLink-B0hSb_dN.js.map} +1 -1
  120. package/dist/admin/assets/es2015-Cv57ynE1.js +42 -0
  121. package/dist/admin/assets/es2015-Cv57ynE1.js.map +1 -0
  122. package/dist/admin/assets/{external-link-CdG6kHfA.js → external-link-Bs9YRzvY.js} +2 -2
  123. package/dist/admin/assets/{external-link-CdG6kHfA.js.map → external-link-Bs9YRzvY.js.map} +1 -1
  124. package/dist/admin/assets/{field-COOzRptX.js → field-D-xWW2E7.js} +2 -2
  125. package/dist/admin/assets/{field-COOzRptX.js.map → field-D-xWW2E7.js.map} +1 -1
  126. package/dist/admin/assets/{file-stack-28ZtO1xW.js → file-stack-X4OGmkLA.js} +2 -2
  127. package/dist/admin/assets/{file-stack-28ZtO1xW.js.map → file-stack-X4OGmkLA.js.map} +1 -1
  128. package/dist/admin/assets/{fileRoute-s7mCMYUJ.js → fileRoute-DMal-zYL.js} +2 -2
  129. package/dist/admin/assets/{fileRoute-s7mCMYUJ.js.map → fileRoute-DMal-zYL.js.map} +1 -1
  130. package/dist/admin/assets/{folder-plus-DIk0pWkP.js → folder-plus-De2GNvry.js} +2 -2
  131. package/dist/admin/assets/{folder-plus-DIk0pWkP.js.map → folder-plus-De2GNvry.js.map} +1 -1
  132. package/dist/admin/assets/followPlural-CsgeALTW.js +2 -0
  133. package/dist/admin/assets/followPlural-CsgeALTW.js.map +1 -0
  134. package/dist/admin/assets/{globe-DFr3Gd2w.js → globe-DBw84s8Z.js} +2 -2
  135. package/dist/admin/assets/{globe-DFr3Gd2w.js.map → globe-DBw84s8Z.js.map} +1 -1
  136. package/dist/admin/assets/{image-DT79QFa_.js → image-CX4mT-_R.js} +2 -2
  137. package/dist/admin/assets/{image-DT79QFa_.js.map → image-CX4mT-_R.js.map} +1 -1
  138. package/dist/admin/assets/{image-off-DFs5upyX.js → image-off-CVaH_qKf.js} +2 -2
  139. package/dist/admin/assets/{image-off-DFs5upyX.js.map → image-off-CVaH_qKf.js.map} +1 -1
  140. package/dist/admin/assets/inbox-C0PVc6UI.js +2 -0
  141. package/dist/admin/assets/inbox-C0PVc6UI.js.map +1 -0
  142. package/dist/admin/assets/{inbox-CySnQydm.js → inbox-D9SmWt5L.js} +2 -2
  143. package/dist/admin/assets/{inbox-CySnQydm.js.map → inbox-D9SmWt5L.js.map} +1 -1
  144. package/dist/admin/assets/index-BqtCXB0u.js +4 -0
  145. package/dist/admin/assets/index-BqtCXB0u.js.map +1 -0
  146. package/dist/admin/assets/index-DZsQq6fY.css +2 -0
  147. package/dist/admin/assets/{key-round-D36CePnN.js → key-round-C8sd9CLN.js} +2 -2
  148. package/dist/admin/assets/{key-round-D36CePnN.js.map → key-round-C8sd9CLN.js.map} +1 -1
  149. package/dist/admin/assets/{labels-DQckbLGW.js → labels-BtktCNGw.js} +2 -2
  150. package/dist/admin/assets/{labels-DQckbLGW.js.map → labels-BtktCNGw.js.map} +1 -1
  151. package/dist/admin/assets/{languages-CzbTaQv9.js → languages-DLjdz6gb.js} +2 -2
  152. package/dist/admin/assets/{languages-CzbTaQv9.js.map → languages-DLjdz6gb.js.map} +1 -1
  153. package/dist/admin/assets/{layers-BmcodiaH.js → layers-swLuw-3a.js} +2 -2
  154. package/dist/admin/assets/{layers-BmcodiaH.js.map → layers-swLuw-3a.js.map} +1 -1
  155. package/dist/admin/assets/{link-2-off-CoJNwrxm.js → link-2-off-CEsI5T8h.js} +2 -2
  156. package/dist/admin/assets/{link-2-off-CoJNwrxm.js.map → link-2-off-CEsI5T8h.js.map} +1 -1
  157. package/dist/admin/assets/{link-Pyr2Y35S.js → link-C98FG_p5.js} +2 -2
  158. package/dist/admin/assets/{link-Pyr2Y35S.js.map → link-C98FG_p5.js.map} +1 -1
  159. package/dist/admin/assets/locales-CkuC7TJ1.js +2 -0
  160. package/dist/admin/assets/{locales-Bg3htKo8.js.map → locales-CkuC7TJ1.js.map} +1 -1
  161. package/dist/admin/assets/media-CbGSd_Mw.js +2 -0
  162. package/dist/admin/assets/{media-BCnVhaDH.js.map → media-CbGSd_Mw.js.map} +1 -1
  163. package/dist/admin/assets/{media-CURizGns.js → media-CeZGDGh7.js} +2 -2
  164. package/dist/admin/assets/{media-CURizGns.js.map → media-CeZGDGh7.js.map} +1 -1
  165. package/dist/admin/assets/network-BflLSKFO.js +2 -0
  166. package/dist/admin/assets/network-BflLSKFO.js.map +1 -0
  167. package/dist/admin/assets/{plus-BoDtdLCo.js → plus-cr9ZfO6j.js} +2 -2
  168. package/dist/admin/assets/{plus-BoDtdLCo.js.map → plus-cr9ZfO6j.js.map} +1 -1
  169. package/dist/admin/assets/publishing-BkxBplUZ.js +2 -0
  170. package/dist/admin/assets/publishing-BkxBplUZ.js.map +1 -0
  171. package/dist/admin/assets/{radio-group-4ok5evXq.js → radio-group-CRuWQnuV.js} +2 -2
  172. package/dist/admin/assets/{radio-group-4ok5evXq.js.map → radio-group-CRuWQnuV.js.map} +1 -1
  173. package/dist/admin/assets/{rotate-ccw-DL6TzcZh.js → rotate-ccw-BP8Ba-mY.js} +2 -2
  174. package/dist/admin/assets/{rotate-ccw-DL6TzcZh.js.map → rotate-ccw-BP8Ba-mY.js.map} +1 -1
  175. package/dist/admin/assets/schedules-BIyBlsYZ.js +2 -0
  176. package/dist/admin/assets/{schedules-BmB9Y73z.js.map → schedules-BIyBlsYZ.js.map} +1 -1
  177. package/dist/admin/assets/schema-6eUoC8fJ.js +2 -0
  178. package/dist/admin/assets/schema-6eUoC8fJ.js.map +1 -0
  179. package/dist/admin/assets/{scroll-text-PqeZm472.js → scroll-text-B5vfi9fD.js} +2 -2
  180. package/dist/admin/assets/{scroll-text-PqeZm472.js.map → scroll-text-B5vfi9fD.js.map} +1 -1
  181. package/dist/admin/assets/{search-BdwIwOzC.js → search-wj7zbkx1.js} +2 -2
  182. package/dist/admin/assets/{search-BdwIwOzC.js.map → search-wj7zbkx1.js.map} +1 -1
  183. package/dist/admin/assets/{searchSchemas-CSScloG8.js → searchSchemas-DAnwh3I3.js} +2 -2
  184. package/dist/admin/assets/{searchSchemas-CSScloG8.js.map → searchSchemas-DAnwh3I3.js.map} +1 -1
  185. package/dist/admin/assets/{sections-DqBzSKMP.js → sections-CWL-XD6m.js} +2 -2
  186. package/dist/admin/assets/sections-CWL-XD6m.js.map +1 -0
  187. package/dist/admin/assets/{sections-BTS683ur.js → sections-DBQpB0uv.js} +2 -2
  188. package/dist/admin/assets/{sections-BTS683ur.js.map → sections-DBQpB0uv.js.map} +1 -1
  189. package/dist/admin/assets/{select-C0USI-Ox.js → select-DVrPV1b3.js} +2 -2
  190. package/dist/admin/assets/{select-C0USI-Ox.js.map → select-DVrPV1b3.js.map} +1 -1
  191. package/dist/admin/assets/{send-XPWo3m4u.js → send-CzFdgUc_.js} +2 -2
  192. package/dist/admin/assets/{send-XPWo3m4u.js.map → send-CzFdgUc_.js.map} +1 -1
  193. package/dist/admin/assets/seo-Bd0sWQMo.js +2 -0
  194. package/dist/admin/assets/{seo-CceGYTIX.js.map → seo-Bd0sWQMo.js.map} +1 -1
  195. package/dist/admin/assets/settings-CqnrPmzR.js +2 -0
  196. package/dist/admin/assets/{settings-B60vHpZd.js.map → settings-CqnrPmzR.js.map} +1 -1
  197. package/dist/admin/assets/shapes-ZAkMBB-Z.js +6 -0
  198. package/dist/admin/assets/shapes-ZAkMBB-Z.js.map +1 -0
  199. package/dist/admin/assets/{skeleton-B5MP72Kw.js → skeleton-CiX26LnL.js} +2 -2
  200. package/dist/admin/assets/{skeleton-B5MP72Kw.js.map → skeleton-CiX26LnL.js.map} +1 -1
  201. package/dist/admin/assets/{snapshots-DUI2t-qF.js → snapshots-DbFQNJgN.js} +2 -2
  202. package/dist/admin/assets/{snapshots-DUI2t-qF.js.map → snapshots-DbFQNJgN.js.map} +1 -1
  203. package/dist/admin/assets/{sparkles-CvT-jxrW.js → sparkles-D_kmZJVd.js} +2 -2
  204. package/dist/admin/assets/{sparkles-CvT-jxrW.js.map → sparkles-D_kmZJVd.js.map} +1 -1
  205. package/dist/admin/assets/src-CMor9izq.js +7 -0
  206. package/dist/admin/assets/src-CMor9izq.js.map +1 -0
  207. package/dist/admin/assets/{stableId-BrtQedPy.js → stableId-g1uxJGSz.js} +2 -2
  208. package/dist/admin/assets/{stableId-BrtQedPy.js.map → stableId-g1uxJGSz.js.map} +1 -1
  209. package/dist/admin/assets/{store-CdIFG90N.js → store-CznhNKEi.js} +2 -2
  210. package/dist/admin/assets/{store-CdIFG90N.js.map → store-CznhNKEi.js.map} +1 -1
  211. package/dist/admin/assets/{switch-Dp6WYNam.js → switch-CiVf05NF.js} +2 -2
  212. package/dist/admin/assets/{switch-Dp6WYNam.js.map → switch-CiVf05NF.js.map} +1 -1
  213. package/dist/admin/assets/{theme-65PB8uAu.js → theme-Cv-MfOv8.js} +2 -2
  214. package/dist/admin/assets/theme-Cv-MfOv8.js.map +1 -0
  215. package/dist/admin/assets/titles-DrQhW8z3.js +2 -0
  216. package/dist/admin/assets/titles-DrQhW8z3.js.map +1 -0
  217. package/dist/admin/assets/tokens-B1S81Epe.js +2 -0
  218. package/dist/admin/assets/{tokens-ixHjAkDK.js.map → tokens-B1S81Epe.js.map} +1 -1
  219. package/dist/admin/assets/{tooltip-BGP1DVBt.js → tooltip-Bqf3oyqC.js} +2 -2
  220. package/dist/admin/assets/{tooltip-BGP1DVBt.js.map → tooltip-Bqf3oyqC.js.map} +1 -1
  221. package/dist/admin/assets/{undo-2-BiTANHFz.js → undo-2-DpwwRQTf.js} +2 -2
  222. package/dist/admin/assets/{undo-2-BiTANHFz.js.map → undo-2-DpwwRQTf.js.map} +1 -1
  223. package/dist/admin/assets/useContentSchema-B_q1rMrG.js +2 -0
  224. package/dist/admin/assets/useContentSchema-B_q1rMrG.js.map +1 -0
  225. package/dist/admin/assets/useCursorPager-BHYqHb3M.js +2 -0
  226. package/dist/admin/assets/{useCursorPager-0zHjlm-7.js.map → useCursorPager-BHYqHb3M.js.map} +1 -1
  227. package/dist/admin/assets/{useDiscardGuard-BskWSlbT.js → useDiscardGuard-C4QTfiU4.js} +2 -2
  228. package/dist/admin/assets/{useDiscardGuard-BskWSlbT.js.map → useDiscardGuard-C4QTfiU4.js.map} +1 -1
  229. package/dist/admin/assets/{useMediaPickerDialog-CU-ekPqX.js → useMediaPickerDialog-BLrVV1Kn.js} +2 -2
  230. package/dist/admin/assets/{useMediaPickerDialog-CU-ekPqX.js.map → useMediaPickerDialog-BLrVV1Kn.js.map} +1 -1
  231. package/dist/admin/assets/{useMediaUploader-CBcq1ICg.js → useMediaUploader-CFy6lasO.js} +2 -2
  232. package/dist/admin/assets/useMediaUploader-CFy6lasO.js.map +1 -0
  233. package/dist/admin/assets/useModelIndex-NU-WlHQY.js +2 -0
  234. package/dist/admin/assets/useModelIndex-NU-WlHQY.js.map +1 -0
  235. package/dist/admin/assets/useNetworkPermission-DehDln-U.js +2 -0
  236. package/dist/admin/assets/{useNetworkPermission-Cts98h9d.js.map → useNetworkPermission-DehDln-U.js.map} +1 -1
  237. package/dist/admin/assets/{usePaletteItems-DtReWmkd.js → usePaletteItems-CFpNlSOs.js} +2 -2
  238. package/dist/admin/assets/{usePaletteItems-DtReWmkd.js.map → usePaletteItems-CFpNlSOs.js.map} +1 -1
  239. package/dist/admin/assets/usePlaces-BA4x6503.js +2 -0
  240. package/dist/admin/assets/usePlaces-BA4x6503.js.map +1 -0
  241. package/dist/admin/assets/useResolvedDefinitions-30lnwFQ1.js +2 -0
  242. package/dist/admin/assets/useResolvedDefinitions-30lnwFQ1.js.map +1 -0
  243. package/dist/admin/assets/{useResolvedScheme-C8vcQVko.js → useResolvedScheme-BVM4qLct.js} +2 -2
  244. package/dist/admin/assets/{useResolvedScheme-C8vcQVko.js.map → useResolvedScheme-BVM4qLct.js.map} +1 -1
  245. package/dist/admin/assets/useSaveShortcut-DQuNL1uJ.js +2 -0
  246. package/dist/admin/assets/useSaveShortcut-DQuNL1uJ.js.map +1 -0
  247. package/dist/admin/assets/{useSchemaScopeAccess-ByrxIdKM.js → useSchemaScopeAccess-JXOMx51q.js} +2 -2
  248. package/dist/admin/assets/{useSchemaScopeAccess-ByrxIdKM.js.map → useSchemaScopeAccess-JXOMx51q.js.map} +1 -1
  249. package/dist/admin/assets/users-38jLQ7zr.js +2 -0
  250. package/dist/admin/assets/users-38jLQ7zr.js.map +1 -0
  251. package/dist/admin/assets/{users-DM7CXUBJ.js → users-DYwcVDqp.js} +2 -2
  252. package/dist/admin/assets/{users-DM7CXUBJ.js.map → users-DYwcVDqp.js.map} +1 -1
  253. package/dist/admin/assets/{zod-Cry7YvLY.js → zod-ZaQjjiAq.js} +2 -2
  254. package/dist/admin/assets/{zod-Cry7YvLY.js.map → zod-ZaQjjiAq.js.map} +1 -1
  255. package/dist/admin/index.html +60 -58
  256. package/dist/cli.js +1 -1
  257. package/dist/{cliMain-papyXJDd.js → cliMain-CTntiVc2.js} +107 -30
  258. package/dist/cliMain-CTntiVc2.js.map +1 -0
  259. package/dist/config.d.ts +2 -2
  260. package/dist/config.js +1 -1
  261. package/dist/{contentDisposition-DOL2Xt0l.js → contentDisposition-DzhPhncr.js} +2 -2
  262. package/dist/{contentDisposition-DOL2Xt0l.js.map → contentDisposition-DzhPhncr.js.map} +1 -1
  263. package/dist/index.d.ts +43 -6
  264. package/dist/index.js +2 -2
  265. package/dist/{public-COKbHR-N.d.ts → public-CMFaGDyf.d.ts} +50 -8
  266. package/dist/{public-B57h4F7Y.js → public-sJCQaNaP.js} +2 -2
  267. package/dist/public-sJCQaNaP.js.map +1 -0
  268. package/dist/{s3Adapter-U01iEAcK.js → s3Adapter-CZcCl0sy.js} +2 -2
  269. package/dist/{s3Adapter-U01iEAcK.js.map → s3Adapter-CZcCl0sy.js.map} +1 -1
  270. package/dist/{worker-B-sC-eY2.js → worker-DHm2JwMZ.js} +3140 -1292
  271. package/dist/worker-DHm2JwMZ.js.map +1 -0
  272. package/package.json +5 -5
  273. package/dist/admin/assets/AssistError-Cs-r9Ssc.js +0 -2
  274. package/dist/admin/assets/Body-BzZD-TZT.js +0 -2
  275. package/dist/admin/assets/Body-BzZD-TZT.js.map +0 -1
  276. package/dist/admin/assets/Builder-DW-GJA_q.js +0 -2
  277. package/dist/admin/assets/Builder-DW-GJA_q.js.map +0 -1
  278. package/dist/admin/assets/Form-lNrRHc0I.js +0 -2
  279. package/dist/admin/assets/Form-lNrRHc0I.js.map +0 -1
  280. package/dist/admin/assets/FormCheckboxGroup-DeeaYnzB.js +0 -2
  281. package/dist/admin/assets/FormCheckboxGroup-DeeaYnzB.js.map +0 -1
  282. package/dist/admin/assets/FormSelectField-BzE9Lq9i.js +0 -2
  283. package/dist/admin/assets/FormSelectField-BzE9Lq9i.js.map +0 -1
  284. package/dist/admin/assets/RadioTile-DQFmni5A.js.map +0 -1
  285. package/dist/admin/assets/RichTextField-CVHRIbnu.js.map +0 -1
  286. package/dist/admin/assets/StepList-BXGYD9eJ.js +0 -2
  287. package/dist/admin/assets/StepList-BXGYD9eJ.js.map +0 -1
  288. package/dist/admin/assets/Structure-D8csgrIt.js +0 -2
  289. package/dist/admin/assets/SubNavLink-CiCaVV8U.js.map +0 -1
  290. package/dist/admin/assets/auth-CQO4MBUj.js +0 -2
  291. package/dist/admin/assets/changeSets-8EburmT0.js +0 -2
  292. package/dist/admin/assets/chevron-left-DGU3HGYG.js +0 -2
  293. package/dist/admin/assets/content-CAjkbZEY.js +0 -3
  294. package/dist/admin/assets/content-CAjkbZEY.js.map +0 -1
  295. package/dist/admin/assets/createLucideIcon-CLmh7Go-.js +0 -2
  296. package/dist/admin/assets/createLucideIcon-CLmh7Go-.js.map +0 -1
  297. package/dist/admin/assets/develop-BOqvnlgt.js +0 -11
  298. package/dist/admin/assets/develop-BOqvnlgt.js.map +0 -1
  299. package/dist/admin/assets/es2015-BHmI7wjK.js +0 -42
  300. package/dist/admin/assets/es2015-BHmI7wjK.js.map +0 -1
  301. package/dist/admin/assets/followPlural-Cm7v_Udv.js +0 -2
  302. package/dist/admin/assets/followPlural-Cm7v_Udv.js.map +0 -1
  303. package/dist/admin/assets/inbox-DGO2D8fa.js +0 -2
  304. package/dist/admin/assets/inbox-DGO2D8fa.js.map +0 -1
  305. package/dist/admin/assets/index-BIIU9ZI6.js +0 -4
  306. package/dist/admin/assets/index-BIIU9ZI6.js.map +0 -1
  307. package/dist/admin/assets/index-lxe7WimO.css +0 -2
  308. package/dist/admin/assets/locales-Bg3htKo8.js +0 -2
  309. package/dist/admin/assets/media-BCnVhaDH.js +0 -2
  310. package/dist/admin/assets/network-BixABr0o.js +0 -2
  311. package/dist/admin/assets/network-BixABr0o.js.map +0 -1
  312. package/dist/admin/assets/publishing-Dke9bSKp.js +0 -2
  313. package/dist/admin/assets/publishing-Dke9bSKp.js.map +0 -1
  314. package/dist/admin/assets/schedules-BmB9Y73z.js +0 -2
  315. package/dist/admin/assets/schema-D-qo7XSF.js +0 -2
  316. package/dist/admin/assets/schema-D-qo7XSF.js.map +0 -1
  317. package/dist/admin/assets/sections-DqBzSKMP.js.map +0 -1
  318. package/dist/admin/assets/seo-CceGYTIX.js +0 -2
  319. package/dist/admin/assets/settings-B60vHpZd.js +0 -2
  320. package/dist/admin/assets/shapes-B5twqZcp.js +0 -6
  321. package/dist/admin/assets/shapes-B5twqZcp.js.map +0 -1
  322. package/dist/admin/assets/src-ndgTSYLX.js +0 -7
  323. package/dist/admin/assets/src-ndgTSYLX.js.map +0 -1
  324. package/dist/admin/assets/theme-65PB8uAu.js.map +0 -1
  325. package/dist/admin/assets/titles-CQiqqDw-.js +0 -2
  326. package/dist/admin/assets/titles-CQiqqDw-.js.map +0 -1
  327. package/dist/admin/assets/tokens-ixHjAkDK.js +0 -2
  328. package/dist/admin/assets/useContentSchema-DtYfhsd2.js +0 -2
  329. package/dist/admin/assets/useContentSchema-DtYfhsd2.js.map +0 -1
  330. package/dist/admin/assets/useCursorPager-0zHjlm-7.js +0 -2
  331. package/dist/admin/assets/useMediaUploader-CBcq1ICg.js.map +0 -1
  332. package/dist/admin/assets/useNetworkPermission-Cts98h9d.js +0 -2
  333. package/dist/admin/assets/usePlaces-DC47wVeU.js +0 -2
  334. package/dist/admin/assets/usePlaces-DC47wVeU.js.map +0 -1
  335. package/dist/admin/assets/useQueries-CirW3Mvp.js +0 -2
  336. package/dist/admin/assets/useQueries-CirW3Mvp.js.map +0 -1
  337. package/dist/admin/assets/useSaveShortcut-rKtp1qK7.js +0 -2
  338. package/dist/admin/assets/useSaveShortcut-rKtp1qK7.js.map +0 -1
  339. package/dist/admin/assets/users-2iJYwlJb.js +0 -2
  340. package/dist/admin/assets/users-2iJYwlJb.js.map +0 -1
  341. package/dist/cliMain-papyXJDd.js.map +0 -1
  342. package/dist/public-B57h4F7Y.js.map +0 -1
  343. package/dist/worker-B-sC-eY2.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es2015-Cv57ynE1.js","names":["use","en","i18next","en","i18next","__defProp","__name","setRef","__defProp","__name","getElementRef","React","__defProp","__name","__defProp","__name","__defProp","__name","__defProp","__name","React","__defProp","__name","React","useLayoutEffect","__defProp","__name","__defProp","__name","React","count","__defProp","__name","useCallbackRef","__defProp","__name","useCallbackRef","__defProp","__name","useCallbackRef","__defProp","__name","useState","SideCar","__toESM","require_react_dom","require_jsx_runtime","setI18n","ShapioApiError","setDefaults","isString","obj","defer","res","rej","promise","resolve","reject","makeString","object","copy","a","s","m","lastOfPathSeparatorRegExp","cleanKey","key","canNotTraverseDeeper","getLastOfPath","stack","path","stackIndex","Empty","setPath","k","newValue","e","p","last","pushPath","getPath","getPathWithDefaults","value","data","defaultData","deepExtend","prop","source","target","overwrite","regexEscape","str","_entityMap","escape","RegExpCache","capacity","regExpFromCache","pattern","regExpNew","chars","looksLikeObjectPathRegExpCache","looksLikeObjectPath","possibleChars","nsSeparator","c","keySeparator","r","matched","ki","deepFind","tokens","current","i","next","nextPath","j","getCleanedCode","code","consoleLogger","args","type","baseLogger","Logger","concreteLogger","options","debugOnly","prefix","lvl","moduleName","EventEmitter","events","event","numListeners","listener","wrapper","observer","numTimesAdded","ResourceStore","ns","index","ignoreJSONStructure","lng","result","resources","pack","deep","v","postProcessor","module","processors","processor","translator","PATH_KEY","createProxy","state","handler","proxy","keysFromSelector","selector","opts","strict","nsList","shouldHandleAsObject","Translator","services","opt","o","resolved","isObject","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","parts","keys","returnDetails","namespace","appendNamespaceToCIMode","resUsedKey","resExactUsedKey","noObject","joinArrays","handleAsObjectInI18nFormat","needsPluralHandling","hasDefaultValue","defaultValueSuffix","defaultValueSuffixOrdinalFallback","needsZeroSuffixLookup","defaultValue","resForObjHndl","handleAsObject","resType","resTypeIsArray","newKeyToUse","deepKey","lastKey","usedDefault","usedKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","send","defaultForMissing","specificDefaultValue","l","suffixes","language","suffix","skipOnVariables","nestBef","nb","na","nestAft","postProcess","postProcessorNames","found","exactUsedKey","usedLng","usedNS","extracted","needsContextHandling","codes","finalKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","possibleKey","optionsKeys","useOptionsReplaceForData","option","LanguageUtil","formattedCode","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","fallbackLng","fallbackLngKey","hasCacheableFallback","fallbackCode","usesUncacheableOptionsFallback","cacheable","cacheKey","fallbackCacheKey","cached","fallbackCodes","addCode","fc","suffixesOrder","dummyRule","count","PluralResolver","languageUtils","cleanedCode","rule","lngPart","pluralCategory1","pluralCategory2","pluralCategory","deepFindWithDefaults","regexSafe","val","Interpolator","escape$1","escapeValue","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","getOrResetRegExp","existingRegExp","match","replaces","handleFormat","f","missingInterpolationHandler","todo","matchedVar","temp","safeValue","clonedOptions","handleHasOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","inheritedOptions","formatters","keyEndIndex","elem","parseFormatStr","formatName","formatStr","formatOptions","optStr","rest","trimmedKey","createCachedFormatter","cache","optForCache","frm","fn","createNonCachedFormatter","Formatter","cf","formatter","name","format","rawFormats","formats","formatted","mem","valOptions","error","removePending","q","Connector","backend","store","toLoad","pending","toLoadLanguages","toLoadNamespaces","languages","hasAllNamespaces","err","loaded","loadedKeys","n","callback","resolver","tried","fcName","wait","fallbackValue","clb","get","ret","transformOptions","noop","bindMemberFunctions","inst","instance","I18n","defOpts","createClassOnDemand","ClassOrObject","lu","deferred","load","finish","t","usedCallback","append","li","lngInLngs","setLngProps","done","setLng","fl","scopeNs","fixedOpts","fixedT","explicitCallNs","keyPrefix","selectorOpts","resultKey","lastLng","loadNotPending","loadState","preResult","preloaded","newLngs","ti","rtlLngs","forkResourceStore","mergedOptions","clone","prev","acc","mergedInterpolation","mergedForInterpolator","initReactI18next","translation_default","\"name\"","\"skipToContent\"","\"noAccess\"","\"noAccessDescription\"","\"cancel\"","\"close\"","\"saveChanges\"","\"saving\"","\"create\"","\"delete\"","\"edit\"","\"remove\"","\"revoke\"","\"retry\"","\"backHome\"","\"loading\"","\"copy\"","\"copied\"","\"actions\"","\"never\"","\"none\"","\"unknown\"","\"previous\"","\"next\"","\"toggleSidebar\"","\"sidebar\"","\"sidebarDescription\"","\"notifications\"","\"pagination\"","\"optionalLabel\"","\"first\"","\"breadcrumb\"","\"moreAbout\"","\"pageRange\"","\"rowsPerPage\"","\"perPage\"","\"required\"","\"email\"","\"passwordTooShort\"","\"passwordsDontMatch\"","\"roleKey\"","\"selectRole\"","\"passwordTooLong\"","\"apiKeyInvalid\"","\"apiKeyTooLong\"","\"apiKeyReservedPrefix\"","\"apiKeyReserved\"","\"apiKeyTaken\"","\"pluralApiKeySameAsSingular\"","\"localeCode\"","\"localeExists\"","\"tooLong\"","\"selectModel\"","\"dateTime\"","\"url\"","\"selectEvents\"","\"maxAttempts\"","\"debounceSeconds\"","\"siteKey\"","\"siteTwice\"","\"ownerAllSites\"","\"titleTemplate\"","\"twitterHandle\"","\"unexpected\"","\"network\"","\"loadFailed\"","\"forbidden\"","\"forbiddenDescription\"","\"codes\"","\"INVALID_CREDENTIALS\"","\"RATE_LIMITED\"","\"SETUP_COMPLETE\"","\"INVALID_SETUP_TOKEN\"","\"EMAIL_TAKEN\"","\"VERSION_CONFLICT\"","\"INVALID_CURRENT_PASSWORD\"","\"INVALID_OR_EXPIRED_TOKEN\"","\"ROLE_KEY_TAKEN\"","\"LAST_OWNER\"","\"CANNOT_DELETE_SELF\"","\"SYSTEM_ROLE\"","\"OWNER_REQUIRED\"","\"INVALID_ROLES\"","\"INVALID_PERMISSIONS\"","\"INVALID_EXPIRY\"","\"UNAUTHENTICATED\"","\"FORBIDDEN\"","\"CSRF_INVALID\"","\"VALIDATION_ERROR\"","\"NOT_FOUND\"","\"CONFLICT\"","\"SCHEMA_VERSION_CONFLICT\"","\"SCHEMA_CHANGE_IN_PROGRESS\"","\"SCHEMA_INVALID\"","\"SCHEMA_CHANGE_UNSUPPORTED\"","\"SCHEMA_CHANGE_NOT_ACKNOWLEDGED\"","\"SCHEMA_READ_ONLY\"","\"SCHEMA_PREREQUISITE_FAILED\"","\"API_KEY_TAKEN\"","\"LOCALE_EXISTS\"","\"LOCALE_INVALID\"","\"LOCALE_IS_DEFAULT\"","\"TYPE_NOT_ALLOWED\"","\"FILE_TOO_LARGE\"","\"UNSUPPORTED_MEDIA_TYPE\"","\"UPLOAD_MISSING\"","\"FILE_EMPTY\"","\"UPLOAD_GRANT_EXPIRED\"","\"UPLOAD_GRANT_USED\"","\"UPLOAD_GRANT_INVALID\"","\"UPLOAD_SIGNATURE_INVALID\"","\"ASSET_CHANGED\"","\"MEDIA_IN_USE\"","\"FOLDER_NOT_EMPTY\"","\"FOLDER_NAME_TAKEN\"","\"FOLDER_CYCLE\"","\"FOLDER_NOT_FOUND\"","\"NOT_CONFIGURED\"","\"ALREADY_CONFIRMED\"","\"ROLE_IN_USE\"","\"UNKNOWN_MODEL\"","\"CONTENT_INVALID\"","\"CONTENT_VERSION_CONFLICT\"","\"SCHEMA_CHANGED\"","\"ENTRY_REFERENCED\"","\"ENTRY_NOT_FOUND\"","\"ENTRY_LOCALE_NOT_FOUND\"","\"SINGLETON_EXISTS\"","\"PUBLISHING_DISABLED\"","\"REVISION_NOT_FOUND\"","\"INVALID_QUERY\"","\"FORBIDDEN_FIELD\"","\"LOCALE_NOT_FOUND\"","\"SITE_NOT_EMPTY\"","\"SITE_IS_PRIMARY\"","\"SITE_KEY_TAKEN\"","\"OWNER_ALL_SITES\"","\"SITE_FORBIDDEN\"","\"SITE_MISMATCH\"","\"SITE_NOT_FOUND\"","\"INVALID_SITES\"","\"ASSIST_DISABLED\"","\"ASSIST_PROVIDER_ERROR\"","\"ASSIST_PROVIDER_AUTH\"","\"ASSIST_PROVIDER_BUSY\"","\"ASSIST_INVALID_OUTPUT\"","\"ASSIST_DECLINED\"","\"ASSIST_VISION_UNSUPPORTED\"","\"ASSIST_NOT_AN_IMAGE\"","\"ASSIST_FIELD_NOT_SUMMARIZABLE\"","\"ASSIST_NOTHING_TO_SUMMARIZE\"","\"ASSIST_NOT_LOCALIZED\"","\"ASSIST_SAME_LOCALE\"","\"ASSIST_RUN_NOT_FOUND\"","\"title\"","\"description\"","\"stay\"","\"leave\"","\"saved\"","\"leaveTitle\"","\"leaveDescription\"","\"label\"","\"toggle\"","\"password\"","\"confirmPassword\"","\"newPassword\"","\"passwordHint\"","\"backToLogin\"","\"brand\"","\"tagline\"","\"pitchLive\"","\"pitchApi\"","\"pitchSelfHosted\"","\"token\"","\"tokenHint\"","\"tokenMore\"","\"submit\"","\"submitting\"","\"forgotPassword\"","\"account\"","\"sentTitle\"","\"sentDescription\"","\"missingToken\"","\"requestNew\"","\"doneTitle\"","\"doneDescription\"","\"joiningAs\"","\"content\"","\"publishing\"","\"mainNavigation\"","\"home\"","\"search\"","\"groups\"","\"develop\"","\"workspace\"","\"nav\"","\"inbox\"","\"media\"","\"newType\"","\"changes\"","\"snapshots\"","\"schema\"","\"components\"","\"apiExplorer\"","\"graphql\"","\"live\"","\"apiTokens\"","\"webhooks\"","\"users\"","\"roles\"","\"locales\"","\"settings\"","\"team\"","\"appUsers\"","\"sites\"","\"auditLog\"","\"sharedContentTypes\"","\"inputLabel\"","\"placeholder\"","\"results\"","\"searching\"","\"noResults\"","\"resultCount_one\"","\"resultCount_other\"","\"untitled\"","\"newEntry\"","\"newComponent\"","\"page\"","\"recent\"","\"goto\"","\"entries\"","\"hintMove\"","\"hintOpen\"","\"hintClose\"","\"titleFallback\"","\"meta_one\"","\"meta_other\"","\"metaClear\"","\"needsYou\"","\"allClear\"","\"allClearDescription\"","\"aField\"","\"findingMeta\"","\"showAll\"","\"loadMore\"","\"scheduledSoon\"","\"scheduledPublish\"","\"scheduledUnpublish\"","\"nothingScheduled\"","\"viewAll\"","\"recentlyPublished\"","\"nothingPublished\"","\"overview\"","\"rules\"","\"requiredEmpty\"","\"sentence\"","\"fix\"","\"altMissing\"","\"localeMissing\"","\"relationMissing\"","\"mediaMissing\"","\"relationUnpublished\"","\"uniqueConflict\"","\"staleDraft\"","\"sentence_one\"","\"sentence_other\"","\"unpublishedChanges\"","\"wentLive\"","\"liveUpdated\"","\"nothingScheduledDescription\"","\"nothingPublishedDescription\"","\"getStarted\"","\"done\"","\"type\"","\"entry\"","\"invite\"","\"action\"","\"waiting\"","\"waitingDescription\"","\"newTitle\"","\"newComponentTitle\"","\"noComponents\"","\"availableOn\"","\"thisSite\"","\"thisSiteDescription\"","\"allSites\"","\"allSitesDescription\"","\"allSitesNeedsNetwork\"","\"sharedWithAllSites\"","\"count_one\"","\"count_other\"","\"empty\"","\"emptyDescription\"","\"profile\"","\"signOut\"","\"signedInAs\"","\"models\"","\"admins\"","\"activity\"","\"activityTarget\"","\"viewAuditLog\"","\"noActivity\"","\"allModels\"","\"noModels\"","\"kinds\"","\"collection\"","\"singleton\"","\"version\"","\"shortcuts\"","\"createEntry\"","\"newModel\"","\"uploadMedia\"","\"inviteTeam\"","\"inviteTeamDescription\"","\"createToken\"","\"createTokenDescription\"","\"sections\"","\"developer\"","\"sessions\"","\"appearance\"","\"seo\"","\"assist\"","\"detailsTitle\"","\"detailsSaved\"","\"passwordTitle\"","\"passwordDescription\"","\"currentPassword\"","\"changePassword\"","\"passwordChanged\"","\"emailHint\"","\"device\"","\"ipAddress\"","\"signedIn\"","\"lastActive\"","\"current\"","\"unknownDevice\"","\"revokeTitle\"","\"revokeDescription\"","\"revoked\"","\"theme\"","\"storedHere\"","\"lookName\"","\"variants\"","\"light\"","\"dark\"","\"themes\"","\"shapio\"","\"classic\"","\"forest\"","\"snowed\"","\"butter\"","\"add\"","\"addTitle\"","\"editTitle\"","\"code\"","\"codeHint\"","\"default\"","\"fallbacks\"","\"fallbacksHint\"","\"noFallbacks\"","\"addFallback\"","\"moveUp\"","\"moveDown\"","\"removeFallback\"","\"created\"","\"makeDefault\"","\"defaultTitle\"","\"defaultDescription\"","\"defaultAcknowledge\"","\"defaultChanged\"","\"deleteTitle\"","\"deleteDescription\"","\"deleteContent_one\"","\"deleteContent_other\"","\"deleteEntries_one\"","\"deleteEntries_other\"","\"deleteAcknowledge_one\"","\"deleteAcknowledge_other\"","\"deleting\"","\"deleted\"","\"key\"","\"keyHint\"","\"roleDescription\"","\"kind\"","\"kindAdmin\"","\"kindDelivery\"","\"kindHint\"","\"builtIn\"","\"custom\"","\"permissions\"","\"permissionsCount_one\"","\"permissionsCount_other\"","\"createTitle\"","\"read\"","\"readDrafts\"","\"readDraftsHint\"","\"update\"","\"publish\"","\"schemaManage\"","\"schemaCreate\"","\"usersManage\"","\"rolesManage\"","\"tokensManage\"","\"auditRead\"","\"sitesManage\"","\"mediaRead\"","\"mediaWrite\"","\"mediaManage\"","\"publishingManage\"","\"webhooksManage\"","\"deploymentsManage\"","\"deploymentsTrigger\"","\"changesManage\"","\"changesShip\"","\"siteSettings\"","\"contentPermissions\"","\"contentHintAdmin\"","\"contentHintDelivery\"","\"instancePermissions\"","\"drafts\"","\"details\"","\"editPermissions\"","\"builtInReadOnly\"","\"tabAdmin\"","\"tabApp\"","\"matrix\"","\"model\"","\"allModelsHint\"","\"options\"","\"everyRow\"","\"ownOnly\"","\"fieldScope\"","\"allFields\"","\"allPublicFields\"","\"selectedFields\"","\"notPublic\"","\"deprecatedField\"","\"unknownField\"","\"fixedOwnOnly\"","\"fixedFields\"","\"unlistedTitle\"","\"removeGrant\"","\"inheritedFrom\"","\"inheritedAction\"","\"inheritedGrant\"","\"inheritedGrantOwnOnly\"","\"widenOnly\"","\"inheritanceNote\"","\"role\"","\"prefix\"","\"expires\"","\"lastUsed\"","\"status\"","\"active\"","\"expiry\"","\"expiryNever\"","\"expiryDays_one\"","\"expiryDays_other\"","\"secretTitle\"","\"secretDescription\"","\"secretLabel\"","\"secretDone\"","\"revokedBadge\"","\"pausedBadge\"","\"draftsChip\"","\"scope\"","\"scopeSite\"","\"scopeSiteDescription\"","\"scopeNetwork\"","\"scopeNetworkDescription\"","\"appliesTo\"","\"when\"","\"actor\"","\"target\"","\"outcome\"","\"success\"","\"failure\"","\"filterAction\"","\"filterActionPlaceholder\"","\"filterActor\"","\"allActors\"","\"actorTypes\"","\"admin\"","\"app_user\"","\"anonymous\"","\"system\"","\"adminUserCreate\"","\"adminUserDelete\"","\"adminUserPasswordChange\"","\"adminUserUpdate\"","\"apiTokenCreate\"","\"apiTokenRevoke\"","\"appAuthRefreshReuse\"","\"appRoleCreate\"","\"appRoleDelete\"","\"appRoleUpdate\"","\"appUserBlock\"","\"appUserUnblock\"","\"appUserConfirmEmail\"","\"appUserConfirmationResend\"","\"appUserDelete\"","\"appUserOauthLink\"","\"appUserPasswordChange\"","\"appUserPasswordReset\"","\"appUserPasswordResetRequest\"","\"appUserRegister\"","\"appUserRolesChange\"","\"appUserUpdate\"","\"authLogin\"","\"authLogout\"","\"authPasswordReset\"","\"authPasswordResetRequest\"","\"changeSetCreate\"","\"changeSetDiscard\"","\"changeSetItemAdd\"","\"changeSetItemChangedAfterReview\"","\"changeSetItemRemove\"","\"changeSetSchedule\"","\"changeSetSchemaDraft\"","\"changeSetSchemaDraftRemove\"","\"changeSetShip\"","\"changeSetShipping\"","\"changeSetUnschedule\"","\"changeSetUpdate\"","\"contentChangeKind\"","\"contentDelete\"","\"contentPublish\"","\"contentRestore\"","\"contentUnpublish\"","\"deploymentRetry\"","\"deploymentTrigger\"","\"deploymentConnectionCreate\"","\"deploymentConnectionDelete\"","\"deploymentConnectionUpdate\"","\"invitationAccept\"","\"invitationCreate\"","\"invitationLink\"","\"invitationRevoke\"","\"jobRetry\"","\"localeCreate\"","\"localeDelete\"","\"localeUpdate\"","\"mediaDelete\"","\"mediaFolderDelete\"","\"mediaReplace\"","\"mediaUpload\"","\"mediaVisibilityChange\"","\"previewTokenCreate\"","\"previewTokenRevoke\"","\"publishingSchedule\"","\"publishingSchedulePublish\"","\"publishingScheduleUnpublish\"","\"publishingScheduleCancel\"","\"publishingScheduleExecute\"","\"roleCreate\"","\"roleDelete\"","\"roleUpdate\"","\"schemaActivate\"","\"schemaChangeRequest\"","\"schemaDelete\"","\"schemaSettingsUpdate\"","\"sessionRevoke\"","\"sessionRevokeAll\"","\"setupComplete\"","\"transferImport\"","\"webhookCreate\"","\"webhookDelete\"","\"webhookRedeliver\"","\"webhookRotateSecret\"","\"webhookTest\"","\"webhookUpdate\"","\"assistAltText\"","\"assistContentOps\"","\"assistRewrite\"","\"assistSchemaDraft\"","\"assistSummarize\"","\"assistTranslate\"","\"schemaScope\"","\"targets\"","\"adminInvitation\"","\"adminRole\"","\"adminSession\"","\"adminUser\"","\"apiToken\"","\"appRole\"","\"appUser\"","\"component\"","\"deploymentConnection\"","\"job\"","\"locale\"","\"mediaAsset\"","\"mediaFolder\"","\"previewToken\"","\"changeSet\"","\"schemaSettings\"","\"webhook\"","\"clearFilters\"","\"lastLogin\"","\"disabled\"","\"you\"","\"disable\"","\"enable\"","\"inviteTitle\"","\"invited\"","\"rolesSaved\"","\"removeTitle\"","\"removeDescription\"","\"removeDescriptionWithTokens_one\"","\"removeDescriptionWithTokens_other\"","\"disableTitle\"","\"disableDescriptionWithTokens_one\"","\"disableDescriptionWithTokens_other\"","\"removed\"","\"statusChanged\"","\"invitationsTitle\"","\"invitationExpires\"","\"invitationRevoked\"","\"revokeInvitationTitle\"","\"revokeInvitationDescription\"","\"copyLink\"","\"noEmailDescription\"","\"confirmTitle\"","\"confirmDescription\"","\"editAccess\"","\"accessTitle\"","\"access\"","\"row\"","\"site\"","\"badge\"","\"assetsLabel_one\"","\"assetsLabel_other\"","\"openDetails\"","\"select\"","\"selection\"","\"selectedCount_one\"","\"selectedCount_other\"","\"clearSelection\"","\"searchPlaceholder\"","\"typeFilter\"","\"view\"","\"viewGrid\"","\"viewList\"","\"emptyFiltered\"","\"emptyFolder\"","\"dimensions\"","\"types\"","\"all\"","\"image\"","\"video\"","\"audio\"","\"pdf\"","\"processing\"","\"pending\"","\"ready\"","\"failed\"","\"fields\"","\"filename\"","\"size\"","\"uploaded\"","\"alt\"","\"caption\"","\"folders\"","\"unfiled\"","\"new\"","\"newSubfolder\"","\"rename\"","\"newName\"","\"renameLabel\"","\"saveName\"","\"renamed\"","\"move\"","\"title_one\"","\"title_other\"","\"done_one\"","\"done_other\"","\"upload\"","\"dropHere\"","\"queueTitle\"","\"summary\"","\"clearFinished\"","\"doneSummary_one\"","\"doneSummary_other\"","\"showFinished\"","\"hideFinished\"","\"uploading\"","\"checking\"","\"progress\"","\"dismiss\"","\"transferFailed\"","\"unreachable\"","\"replaced\"","\"metadata\"","\"formLabel\"","\"altHint\"","\"replace\"","\"openFile\"","\"previewOf\"","\"signedLinkNote\"","\"focal\"","\"hint\"","\"x\"","\"y\"","\"unset\"","\"clear\"","\"visibility\"","\"private\"","\"privateLabel\"","\"publicExplanation\"","\"privateExplanation\"","\"needsManage\"","\"makePrivateTitle\"","\"makePrivateDescription\"","\"makePublicTitle\"","\"makePublicDescription\"","\"makePrivate\"","\"makePublic\"","\"changed\"","\"thumbnail\"","\"w640\"","\"w1280\"","\"w1920\"","\"usage\"","\"hidden\"","\"draft\"","\"published\"","\"inUseTitle\"","\"inUseDescription_one\"","\"inUseDescription_other\"","\"ownerMayForce\"","\"onlyOwners\"","\"force\"","\"shortcutHint\"","\"layout\"","\"setTitle\"","\"switchedForm\"","\"switchedDocument\"","\"undo\"","\"switchLabel\"","\"needsReview\"","\"canvas\"","\"blocks\"","\"menu\"","\"addBlock\"","\"addAfter\"","\"addBetween\"","\"insertAt\"","\"addFiles\"","\"drag\"","\"dragHint\"","\"dragItem\"","\"groupWrite\"","\"groupMedia\"","\"groupComponents\"","\"groupIn\"","\"paragraph\"","\"heading\"","\"subheading\"","\"quote\"","\"bulletList\"","\"orderedList\"","\"divider\"","\"imageHint\"","\"table\"","\"captionPlaceholder\"","\"uploadingCount_one\"","\"uploadingCount_other\"","\"gallery\"","\"addOrDrop\"","\"cover\"","\"properties\"","\"more_one\"","\"more_other\"","\"add_one\"","\"add_other\"","\"andMore_one\"","\"andMore_other\"","\"items_one\"","\"items_other\"","\"presence\"","\"youElsewhere\"","\"remoteChange\"","\"by\"","\"byYou\"","\"short\"","\"momentAgo\"","\"reload\"","\"palette\"","\"switchLocale\"","\"open\"","\"now\"","\"liveSince\"","\"startLocale\"","\"allVersions\"","\"danger\"","\"unpublishTitle\"","\"unpublishDescription\"","\"changeKind\"","\"saveFirst\"","\"noTargets\"","\"drops_one\"","\"drops_other\"","\"dropsNothing\"","\"confirmDrops_one\"","\"confirmDrops_other\"","\"confirmKeeps\"","\"acknowledge_one\"","\"acknowledge_other\"","\"confirm\"","\"preflight\"","\"checks\"","\"error\"","\"warning\"","\"warningHint\"","\"schedule\"","\"scheduleAt\"","\"scheduleConfirm\"","\"scheduledToast\"","\"notYet\"","\"publishNow\"","\"invalid\"","\"localeNotStarted\"","\"staleDraft_one\"","\"staleDraft_other\"","\"unpublishedChanges_one\"","\"unpublishedChanges_other\"","\"descriptionLocale\"","\"noFields\"","\"ask\"","\"addFields\"","\"openSets\"","\"added\"","\"preview\"","\"frameTitle\"","\"openInTab\"","\"showDocument\"","\"noUrlTitle\"","\"noUrlDescription\"","\"notFramableTitle\"","\"notFramableDescription\"","\"blockedTitle\"","\"blockedDescription\"","\"reloadAdmin\"","\"sdkMissingTitle\"","\"sdkMissingDescription\"","\"setupGuide\"","\"otherEntry\"","\"otherLocale\"","\"newKind\"","\"newMenu\"","\"tabs\"","\"structure\"","\"api\"","\"list\"","\"createdAt\"","\"updatedAt\"","\"sortBy\"","\"selectAll\"","\"emptyValue\"","\"itemCount_one\"","\"itemCount_other\"","\"sort\"","\"sortField\"","\"ascending\"","\"descending\"","\"columns\"","\"columnsTitle\"","\"resetColumns\"","\"author\"","\"localesOf\"","\"localeState\"","\"rowsLabel\"","\"cards\"","\"cardsLabel\"","\"editing_one\"","\"editing_other\"","\"unpublish\"","\"more\"","\"quickEdit\"","\"previewUnavailable\"","\"publishTitle\"","\"publishDescription\"","\"publishLocaleDescription\"","\"unpublishLocaleDescription\"","\"unpublishing\"","\"publishedToast\"","\"unpublishedToast\"","\"duplicatedToast\"","\"openCopy\"","\"deletedToast\"","\"filters\"","\"button\"","\"apply\"","\"clearChips\"","\"field\"","\"operator\"","\"value\"","\"listPlaceholder\"","\"removeChip\"","\"findEntry\"","\"entriesOf\"","\"noEntries\"","\"entriesFailed\"","\"statusIs\"","\"createdBy\"","\"authors\"","\"kindIs\"","\"bulk\"","\"selected_one\"","\"selected_other\"","\"published_one\"","\"published_other\"","\"unpublished_one\"","\"unpublished_other\"","\"deleted_one\"","\"deleted_other\"","\"publishFailed_one\"","\"publishFailed_other\"","\"unpublishFailed_one\"","\"unpublishFailed_other\"","\"deleteFailed_one\"","\"deleteFailed_other\"","\"deleteTitle_one\"","\"deleteTitle_other\"","\"meta\"","\"explorer\"","\"delivery\"","\"graphqlSchema\"","\"save\"","\"discardTitle\"","\"discardDescription\"","\"discard\"","\"scheduled\"","\"deployments\"","\"modelPlaceholder\"","\"entryId\"","\"entryIdHint\"","\"localeHint\"","\"defaultLocale\"","\"runAt\"","\"localTimeHint\"","\"snapshot\"","\"deletedModel\"","\"allowPrivateNetwork\"","\"allowPrivateNetworkHint\"","\"snapshotNumber\"","\"opensInNewTab\"","\"enabled\"","\"conflictReloaded\"","\"noMatches\"","\"cancelLabel\"","\"cancelTitle\"","\"cancelDescription\"","\"keep\"","\"canceled\"","\"statuses\"","\"urlPlaceholder\"","\"events\"","\"eventsHint\"","\"allGroupEvents\"","\"maxAttemptsHint\"","\"state\"","\"lastDelivery\"","\"signatureTitle\"","\"signatureDescription\"","\"signatureFormat\"","\"timestampFormat\"","\"eventFormat\"","\"deliveryFormat\"","\"sendTest\"","\"testQueued\"","\"enabledToast\"","\"disabledToast\"","\"rotateSecret\"","\"secretUnreadable\"","\"rotateTitle\"","\"rotateDescription\"","\"deliveries\"","\"noDeliveries\"","\"attemptLog\"","\"eventType\"","\"attempts\"","\"lastResponse\"","\"testBadge\"","\"toggleAttempts\"","\"redeliver\"","\"redeliverLabel\"","\"redelivered\"","\"lastErrorValue\"","\"noAttempts\"","\"attemptHeading\"","\"request\"","\"requestHeaders\"","\"response\"","\"responseBody\"","\"httpStatus\"","\"bodyTruncated\"","\"noResponse\"","\"deliveryStatuses\"","\"retrying\"","\"succeeded\"","\"dead\"","\"connections\"","\"recentRuns\"","\"provider\"","\"providers\"","\"generic_webhook\"","\"cloudflare_pages\"","\"vercel\"","\"netlify\"","\"github\"","\"latestRun\"","\"currentSnapshot\"","\"liveSnapshot\"","\"settingLabels\"","\"accountId\"","\"projectName\"","\"projectId\"","\"teamId\"","\"siteId\"","\"owner\"","\"repo\"","\"branch\"","\"mode\"","\"directory\"","\"settingHints\"","\"githubModes\"","\"commit\"","\"pull_request\"","\"secretLabels\"","\"signingSecret\"","\"deployHookUrl\"","\"secretHints\"","\"providerSecretHints\"","\"secretStored\"","\"replaceSecret\"","\"secretFromEnv\"","\"secretEnvHint\"","\"deliveryRole\"","\"deliveryRoleHint\"","\"deliveryRoleNone\"","\"keepSecret\"","\"secretsUnreadable\"","\"secretUnreadableHelper\"","\"previewUrlTemplate\"","\"previewUrlTemplateHint\"","\"previewUrlTemplatePlaceholder\"","\"triggerPolicy\"","\"triggers\"","\"manual\"","\"debounceSecondsHint\"","\"test\"","\"testPassed\"","\"testFailed\"","\"checkPassed\"","\"checkFailed\"","\"triggerRun\"","\"triggered\"","\"callbacks\"","\"callbacksDescription\"","\"callbackUrl\"","\"callbackBody\"","\"callbackFields\"","\"callbackSignature\"","\"generatedSecretTitle\"","\"generatedSecretDescription\"","\"runs\"","\"run\"","\"openRun\"","\"connection\"","\"trigger\"","\"runTriggers\"","\"finishedAt\"","\"triggeredAt\"","\"noRuns\"","\"runTitle\"","\"watching\"","\"completionUnknown\"","\"schemaVersion\"","\"providerRef\"","\"logUrl\"","\"siteUrl\"","\"retryOf\"","\"previousRun\"","\"retried\"","\"timeline\"","\"timelineEmpty\"","\"reportedBy\"","\"sources\"","\"callback\"","\"queued\"","\"triggeredUnknown\"","\"building\"","\"deployed\"","\"committed\"","\"signIn\"","\"providerGoogle\"","\"providerGithub\"","\"authenticatedOnly\"","\"blocked\"","\"unconfirmed\"","\"editRoles\"","\"rolesTitle\"","\"rolesDescription\"","\"noCustomRoles\"","\"resendConfirmation\"","\"confirmationSent\"","\"block\"","\"unblock\"","\"blockTitle\"","\"blockDescription\"","\"blockedToast\"","\"unblockedToast\"","\"unblockTitle\"","\"unblockDescription\"","\"teamHint\"","\"heldBy\"","\"holdersPublic\"","\"holdersAuthenticated\"","\"userCount_one\"","\"userCount_other\"","\"publicExplained\"","\"authenticatedExplained\"","\"permissionsHint\"","\"denyByDefault\"","\"grantReadAll\"","\"readAllGranted\"","\"openTitle\"","\"scheduledFor\"","\"deploysTo\"","\"addTo\"","\"addToLabel\"","\"addToTitle\"","\"noOpenSets\"","\"newSetTitle\"","\"scheduledPublications\"","\"noScheduledPublications\"","\"reviewInChangeSet\"","\"builderSetTitle\"","\"items\"","\"updated\"","\"shipping\"","\"shipped\"","\"discarded\"","\"unassigned\"","\"modified\"","\"classes\"","\"breaking\"","\"conversion\"","\"validation\"","\"additive\"","\"consumers\"","\"review\"","\"openedBy\"","\"ship\"","\"shipTitle\"","\"shipDescription_one\"","\"shipDescription_other\"","\"shippingStarted\"","\"shipFailed\"","\"shipWithDeploy\"","\"shipWithDeployTitle\"","\"shipWithDeployHint\"","\"scheduleTitle\"","\"unschedule\"","\"unscheduled\"","\"shippedAs\"","\"shippedByAt\"","\"failedTitle\"","\"staleTitle\"","\"staleDescription\"","\"refresh\"","\"acknowledgeInChecks\"","\"notices\"","\"newFieldsAfterShip\"","\"noItems\"","\"noItemsDescription\"","\"itemRemoved\"","\"removeItem\"","\"removeItemTitle\"","\"removeItemDescription\"","\"openEntry\"","\"before\"","\"after\"","\"beforeShip\"","\"shippedValue\"","\"raw\"","\"fieldChangesOf\"","\"noFieldChanges\"","\"notRecorded\"","\"schemaChangesOf\"","\"noSchemaChanges\"","\"schemaStale\"","\"alsoChangedIn\"","\"operations\"","\"liveStates\"","\"unpublished\"","\"missing\"","\"blockingTitle\"","\"warningsTitle\"","\"plannerTitle\"","\"affected_one\"","\"affected_other\"","\"noPrerequisites\"","\"validationTitle\"","\"allEntriesValid_one\"","\"allEntriesValid_other\"","\"notRestorableTitle\"","\"notRestorable\"","\"entry_deleted\"","\"model_missing\"","\"publishing_disabled\"","\"localization_changed\"","\"locale_missing\"","\"unique_conflict\"","\"kind_changed\"","\"healthTitle\"","\"noHealthFindings\"","\"shared\"","\"checksPassedAtShip\"","\"window_one\"","\"window_other\"","\"notBreaking\"","\"readers_one\"","\"readers_other\"","\"reader\"","\"reads\"","\"lastRead\"","\"explicit\"","\"implicit\"","\"otherSites_one\"","\"otherSites_other\"","\"itemAdded\"","\"schemaDraftSaved\"","\"reviewed\"","\"deployTriggered\"","\"deployBuilding\"","\"deployDeployed\"","\"deployFailed\"","\"deployRun\"","\"compare\"","\"compareLabel\"","\"restore\"","\"restoreLabel\"","\"restoreTitle\"","\"restoreDescription\"","\"pin\"","\"pinLabel\"","\"pinTitle\"","\"pinDescription\"","\"pinToken\"","\"diffSummary_one\"","\"diffSummary_other\"","\"schemaMoved\"","\"noChanges\"","\"localeChange\"","\"source\"","\"pinnedBy\"","\"deploy\"","\"change_set\"","\"import\"","\"kind_change\"","\"legacy\"","\"diff\"","\"scrubber\"","\"range\"","\"diffSummaryMore_one\"","\"diffSummaryMore_other\"","\"shippedBy\"","\"changedSince_one\"","\"changedSince_other\"","\"restoreHere\"","\"pinHere\"","\"nothingLive\"","\"liveCount_one\"","\"liveCount_other\"","\"cardLabel\"","\"openVersion\"","\"openVersionOf\"","\"marks\"","\"unchanged\"","\"schemaTitle\"","\"apiExplorerTitle\"","\"frame\"","\"unavailable\"","\"unavailableDescription\"","\"actors\"","\"principals\"","\"deletedToken\"","\"health\"","\"snapshotTitle\"","\"since\"","\"healthClean\"","\"readersTitle\"","\"servedReads_one\"","\"servedReads_other\"","\"noReaders_one\"","\"noReaders_other\"","\"requests\"","\"pinned\"","\"followsLive\"","\"wholeModel\"","\"failedJobsTitle\"","\"jobsFailed_one\"","\"jobsFailed_other\"","\"showFailedJobs\"","\"hideFailedJobs\"","\"retryJob\"","\"retryJobLabel\"","\"jobRetried\"","\"webhooksEnabled_one\"","\"webhooksEnabled_other\"","\"webhooksFailing_one\"","\"webhooksFailing_other\"","\"healthOpen_one\"","\"healthOpen_other\"","\"openInbox\"","\"notTracking\"","\"files\"","\"modelsDir\"","\"componentsDir\"","\"lockDir\"","\"reloadTitle\"","\"reloadDescription\"","\"applying\"","\"label_zero\"","\"label_one\"","\"label_other\"","\"nothing\"","\"moved\"","\"revert\"","\"revertTitle\"","\"revertDescription\"","\"editorLabel\"","\"invalidJson\"","\"problems_one\"","\"problems_other\"","\"lockDescription\"","\"form\"","\"rest\"","\"plan\"","\"invalidTitle\"","\"invalidDescription\"","\"document\"","\"endpoints\"","\"componentEndpoints\"","\"responseSample\"","\"componentSample\"","\"sdl\"","\"typescript\"","\"typesActive\"","\"noTypes\"","\"destructive\"","\"unsupported\"","\"serverChecks\"","\"conflicts\"","\"fileTitle\"","\"reasons\"","\"changedOnBoth\"","\"deletedOnTarget\"","\"existsOnTarget\"","\"changedOnTargetBeforeDelete\"","\"theirs\"","\"yours\"","\"keepLocal\"","\"takeRemote\"","\"takeRemoteTitle\"","\"takeRemoteDescription\"","\"send\"","\"sending\"","\"copyAs\"","\"curl\"","\"fetch\"","\"curlLabel\"","\"fetchLabel\"","\"id\"","\"localeOption\"","\"snapshotHint\"","\"fieldsHint\"","\"populate\"","\"populateHint\"","\"sortHint\"","\"pageSize\"","\"filterKey\"","\"filterValue\"","\"filterKeyPlaceholder\"","\"filterValuePlaceholder\"","\"addFilter\"","\"removeFilter\"","\"tokenPlaceholder\"","\"body\"","\"duration\"","\"announce\"","\"idLocale\"","\"editEntry\"","\"editEntryLabel\"","\"shape\"","\"readers\"","\"reads_one\"","\"reads_other\"","\"noReads\"","\"trackingOff\"","\"flags\"","\"localized\"","\"unique\"","\"filterable\"","\"sortable\"","\"example\"","\"query\"","\"fromRest\"","\"skipped\"","\"openInPlayground\"","\"switcher\"","\"noSites\"","\"notFound\"","\"keyFixed\"","\"primary\"","\"openNamed\"","\"appRoles\"","\"public\"","\"authenticated\"","\"deleteConsequence\"","\"everySite\"","\"working\"","\"truncated\"","\"errors\"","\"rateLimited\"","\"runFailed\"","\"rewrite\"","\"instruction\"","\"instructionPlaceholder\"","\"marksHint\"","\"shorten\"","\"expand\"","\"proposal\"","\"stale\"","\"altText\"","\"suggest\"","\"saveFailed\"","\"summarize\"","\"translate\"","\"issues\"","\"describe\"","\"proposedBy\"","\"proposalLabel\"","\"fieldType\"","\"fixes\"","\"propose\"","\"again\"","\"running\"","\"review_one\"","\"review_other\"","\"openSet_one\"","\"openSet_other\"","\"nothingWritten\"","\"skipped_one\"","\"skipped_other\"","\"altTitle\"","\"altDescription\"","\"accept\"","\"reject\"","\"accepted\"","\"rejected\"","\"on\"","\"off\"","\"offDescription\"","\"guide\"","\"inputTokens\"","\"outputTokens\"","\"tryIt\"","\"tryText\"","\"builder\"","\"seoFields\"","\"askAdmin\"","\"present\"","\"enableTitle\"","\"enableDescription\"","\"enabling\"","\"conflict\"","\"counter\"","\"counterOver\"","\"noTitle\"","\"noindex\"","\"textsTitle\"","\"siteName\"","\"siteNameHint\"","\"titleTemplateHint\"","\"titleTemplatePlaceholder\"","\"descriptionHint\"","\"socialTitle\"","\"chooseImage\"","\"changeImage\"","\"imagePrivate\"","\"twitterHandleHint\"","\"twitterHandlePlaceholder\"","DEFAULT_NAMESPACE","initI18n","isKnownErrorCode","knownErrorMessage","describeError","import_react_dom","import_jsx_runtime","import_react","require_react","__defProp$13","__name$13","setRef$1","ref","composeRefs","refs","hasCleanup","cleanups","cleanup","node","useComposedRefs","__defProp$12","__name$12","createSlot","Slot2","slotProps","props","slottableElement","hasSlottable","newChildren","isLazyComponent","children","use","isSlottable","maybeSlottable","slottable","child","getSlottableElementFromSlottable","slottableElementRef","getElementRef$1","composedRef","forwardedRef","createSlottableError","ownerName","createSlotError","mergedProps","mergeProps","Slot","SLOTTABLE_IDENTIFIER","createSlottable","Slottable2","child2","overrideProps","childProps","propName","slotPropValue","childPropValue","getter","element","mayWarn","REACT_LAZY_TYPE","isPromiseLike","\" use \".trim().toString()","__defProp$11","__name$11","Primitive","Node","primitiveProps","Comp","asChild","primitive","dispatchDiscreteCustomEvent","__defProp$10","__name$10","createContext2","Context","defaultContext","rootComponentName","Provider","context","useContext2","consumerName","createContextScope","defaultContexts","createContext3","BaseContext","scope","scopeName","createScope","scopeContexts","contexts","composeContextScopes","createContextScopeDeps","scopes","baseScope","scopeHooks","createScope2","nextScopes","currentScope","useScope","overrideScopes","nextScopes2","__defProp$9","__name$9","canUseDOM","composeEventHandlers","originalEventHandler","checkForDefaultPrevented","ourEventHandler","getOwnerWindow","getOwnerDocument","getActiveElement","activeElement","isFrame","activeDescendant","id","useLayoutEffect2","__defProp$8","__name$8","useReactEffectEvent","\" useEffectEvent \".trim().toString()","useReactInsertionEffect","\" useInsertionEffect \".trim().toString()","useEffectEvent","__defProp$7","__name$7","useInsertionEffect","useControllableState","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","value2","isFunction","nextValue","setValue","defaultProp","prevValueRef","onChange","SYNC_STATE","useControllableStateReducer","controlledState","onChangeProp","userArgs","initialArg","init","internalState","dispatch","action","state2","reducer","uncontrolledState","__defProp$6","__name$6","useStateMachine","machine","initialState","Presence","presence","usePresence","present","useStableComposedRefs","getElementRef","setNode","stylesRef","prevPresentRef","prevAnimationNameRef","mountAnimationNameRef","getAnimationName","styles","wasPresent","prevAnimationName","currentAnimationName","timeoutId","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","node2","setRef","refsRef","currentRefs","__defProp$5","__name$5","useReactId","\" useId \".trim().toString()","count$1","useId","setId","deterministicId","reactId","__defProp$4","__name$4","useCallbackRef$1","callbackRef","__defProp$3","__name$3","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","layerProps","ownerDocument","force","composedRefs","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","isDeferredPointerDownOutsideRef","pointerDownOutside","usePointerDownOutside","onPointerDownOutside","onInteractOutside","onDismiss","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","deferPointerDownOutside","onFocusOutside","isHighestLayer","handleKeyDown","onEscapeKeyDown","disableOutsidePointerEvents","dispatchUpdate","handleUpdate","useDismissableLayerSurface","IS_TRUE","handlePointerDownOutside","isPointerInsideReactTreeRef","isPointerDownOutsideRef","interceptedOutsideInteractionEventsRef","handleClickRef","resetOutsideInteraction","isOutsideInteractionIntercepted","handleInteractionCapture","dismissableSurfaces","surface","handleInteractionBubble","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","wasOutsideInteractionIntercepted","handleAndDispatchCustomEvent","eventDetail","shouldHandlePointerDownOutside","outsideInteractionEvents","eventName","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","detail","discrete","__defProp$2","__name$2","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FocusScope","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","trapped","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutation","mutations","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","loop","isTabKey","focusedElement","container2","first","getTabbableEdges","candidate","candidates","findVisible","nodes","walker","isHiddenInput","canUseCheckVisibility","elements","isHidden","upTo","isSelectableInput","select","createFocusScopesStack","activeFocusScope","arrayRemove","updatedArray","array","item","items","__defProp$1","Portal","containerProp","portalProps","mounted","setMounted","__defProp","__name","guards","FocusGuards","useFocusGuards","createFocusGuard","start","end","__assign","__rest","__spreadArray","from","ar","to","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","useCallbackRef","initialValue","useIsomorphicLayoutEffect","currentValues","useMergeRefs","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","innerCreateMedium","middleware","buffer","assigned","defaults","x","cbs","cb","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","medium","SideCar","sideCar","_a","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","callbacks","setCallbacks","forwardProps","className","removeScrollBar","enabled","shards","noRelative","noIsolation","inert","allowPinchZoom","_b","Container","gapMode","containerRef","parentRef","containerProps","getNonce","makeStyleTag","tag","nonce","injectStyles","css","insertStyleTag","stylesheetSingleton","counter","stylesheet","style","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","dynamic","zeroGap","parse","getOffset","cs","left","top","right","getGapWidth","offsets","documentWidth","windowWidth","Style","lockAttribute","getStyles","gap","important","allowRelative","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","overflow","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","elementCouldBeScrolled","axis","getScrollVariables","getVScrollVariables","getHScrollVariables","getDirectionFactor","direction","handleScroll","directionFactor","endTarget","delta","sourceDelta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","position","elementScroll","parent_1","noOverscroll","getTouchXY","getDeltaXY","extractRef","deltaCompare","y","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","el","shouldCancelEvent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","selection","anchorNode","canBeScrolledInMainDirection","cancelingAxis","parent","shouldPrevent","_event","sourceEvent","shardNodes","shouldCancel","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","shadowParent","sidecar_default","ReactRemoveScroll","getDefaultParent","originalTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","targets","correctedTarget","applyAttributeToOthers","parentNode","markerName","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","attr","controlAttribute","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode"],"sources":["../../../../node_modules/.pnpm/i18next@26.4.2_typescript@6.0.3/node_modules/i18next/dist/esm/i18next.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/initReactI18next.js","../../src/locales/en/translation.json","../../src/app/i18n.ts","../../src/helpers/describeError.ts","../../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.5_@types+react@19.3.0_react@19.3.0/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-slot@1.3.3_@types+react@19.3.0_react@19.3.0/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.10_@types+react-dom@19.3.0_@types+react@19.3.0__@types+re_f83f88542c24ef44463bf36336741c4c/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-context@1.2.2_@types+react@19.3.0_react@19.3.0/node_modules/@radix-ui/react-context/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+primitive@1.1.7/node_modules/@radix-ui/primitive/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.4_@types+react@19.3.0_react@19.3.0/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-use-effect-event@0.0.5_@types+react@19.3.0_react@19.3.0/node_modules/@radix-ui/react-use-effect-event/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.6_@types+react@19.3.0_react@19.3.0/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.10_@types+react-dom@19.3.0_@types+react@19.3.0__@types+rea_2fe228634386b203c3622b9fd60e1034/node_modules/@radix-ui/react-presence/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-id@1.1.4_@types+react@19.3.0_react@19.3.0/node_modules/@radix-ui/react-id/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.4_@types+react@19.3.0_react@19.3.0/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.19_@types+react-dom@19.3.0_@types+react@19.3.0__@_c9641557e0183ada0688bd7873e8a9d9/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-focus-scope@1.1.16_@types+react-dom@19.3.0_@types+react@19.3.0__@types+_91a0a1d715213a5ab8359e0114beaafa/node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-portal@1.1.17_@types+react-dom@19.3.0_@types+react@19.3.0__@types+react_484564a2ec4329649f69b712999578b8/node_modules/@radix-ui/react-portal/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-focus-guards@1.1.6_@types+react@19.3.0_react@19.3.0/node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.3.0_react@19.3.0/node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.3.0_react@19.3.0/node_modules/use-callback-ref/dist/es2015/assignRef.js","../../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.3.0_react@19.3.0/node_modules/use-callback-ref/dist/es2015/useRef.js","../../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.3.0_react@19.3.0/node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../../../../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@19.3.0_react@19.3.0/node_modules/use-sidecar/dist/es2015/medium.js","../../../../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@19.3.0_react@19.3.0/node_modules/use-sidecar/dist/es2015/exports.js","../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.3.0_react@19.3.0/node_modules/react-remove-scroll/dist/es2015/medium.js","../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.3.0_react@19.3.0/node_modules/react-remove-scroll/dist/es2015/UI.js","../../../../node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.js","../../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.3.0_react@19.3.0/node_modules/react-style-singleton/dist/es2015/singleton.js","../../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.3.0_react@19.3.0/node_modules/react-style-singleton/dist/es2015/hook.js","../../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.3.0_react@19.3.0/node_modules/react-style-singleton/dist/es2015/component.js","../../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.3.0_react@19.3.0/node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.3.0_react@19.3.0/node_modules/react-remove-scroll-bar/dist/es2015/component.js","../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.3.0_react@19.3.0/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.3.0_react@19.3.0/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.3.0_react@19.3.0/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.3.0_react@19.3.0/node_modules/react-remove-scroll/dist/es2015/sidecar.js","../../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.3.0_react@19.3.0/node_modules/react-remove-scroll/dist/es2015/Combination.js","../../../../node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.js"],"sourcesContent":["const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return String(object);\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.includes('###') ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nconst _entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => !nsSeparator.includes(c) && !keySeparator.includes(c));\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].includes(typeof next) && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace(/_/g, '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n args = args.map(a => isString(a) ? a.replace(/[\\r\\n\\x00-\\x1F\\x7F]/g, ' ') : a);\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n once(event, listener) {\n const wrapper = (...args) => {\n listener(...args);\n this.off(event, wrapper);\n };\n this.on(event, wrapper);\n return this;\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(event, ...args);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (!this.options.ns.includes(ns)) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.includes('.')) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.includes('.')) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.includes('.')) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.includes('.')) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n const keySeparator = opts?.keySeparator ?? '.';\n const nsSeparator = opts?.nsSeparator ?? ':';\n const strict = opts?.enableSelector === 'strict';\n if (path.length > 1 && nsSeparator) {\n const ns = opts?.ns;\n const nsList = strict ? Array.isArray(ns) ? ns : ns ? [ns] : null : Array.isArray(ns) ? ns : null;\n if (nsList) {\n const candidates = strict ? nsList : nsList.length > 1 ? nsList.slice(1) : [];\n if (candidates.includes(path[0])) {\n return `${path[0]}${nsSeparator}${path.slice(1).join(keySeparator)}`;\n }\n }\n }\n return path.join(keySeparator);\n}\n\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n this.checkedLoadedFor = {};\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n if (resolved?.res === undefined) return false;\n const isObject = shouldHandleAsObject(resolved.res);\n if (opt.returnObjects === false && isObject) {\n return false;\n }\n return true;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.includes(nsSeparator);\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.includes(parts[0])) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : String(k));\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && !noObject.includes(resType) && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, needsPluralHandling && !updateMissing ? `${key}${this.pluralResolver.getSuffix(lng, opt.count, opt)}` : key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && !suffixes.includes(`${this.options.pluralSeparator}zero`)) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n if (Array.isArray(keys)) keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : k);\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!this.checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n this.checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data = {\n ...data,\n count: options.count\n };\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && option.startsWith(prefix) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n this.resolveHierarchyCache = {};\n }\n clearCache() {\n this.resolveHierarchyCache = {};\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.includes('-')) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.includes(code);\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return true;\n if (!supportedLng.includes('-') && !lngOnly.includes('-')) return false;\n if (supportedLng.includes('-') && !lngOnly.includes('-') && supportedLng.slice(0, supportedLng.indexOf('-')) === lngOnly) return true;\n if (supportedLng.startsWith(lngOnly) && lngOnly.length > 1) return true;\n return false;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackLng = this.options.fallbackLng;\n const fallbackLngKey = Array.isArray(fallbackLng) ? fallbackLng.join('|') : fallbackLng;\n if (fallbackLngKey !== this._cachedFallbackLng) {\n this.resolveHierarchyCache = {};\n this._cachedFallbackLng = fallbackLngKey;\n }\n const hasCacheableFallback = fallbackCode === undefined || fallbackCode === false || isString(fallbackCode);\n const usesUncacheableOptionsFallback = fallbackCode === undefined && typeof this.options.fallbackLng === 'function';\n const cacheable = isString(code) && hasCacheableFallback && !usesUncacheableOptionsFallback;\n let cacheKey = null;\n if (cacheable) {\n let fallbackCacheKey;\n if (fallbackCode === undefined) fallbackCacheKey = 'undefined';else if (fallbackCode === false) fallbackCacheKey = 'boolean:false';else fallbackCacheKey = `string:${fallbackCode}`;\n cacheKey = `${code.length}:${code}|${fallbackCacheKey}`;\n }\n if (cacheKey !== null) {\n const cached = this.resolveHierarchyCache[cacheKey];\n if (cached !== undefined) return cached.slice();\n }\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.includes('-') || code.includes('_'))) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (!codes.includes(fc)) addCode(this.formatLanguageCode(fc));\n });\n if (cacheKey !== null) {\n this.resolveHierarchyCache[cacheKey] = codes;\n return codes.slice();\n }\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (typeof Intl === 'undefined') {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix ? regexEscape(unescapePrefix) : '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix ? regexEscape(unescapeSuffix) : '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (!key.includes(this.formatSeparator)) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n if (!this.escapeValue && typeof str === 'string' && /\\$t\\([^)]*\\{[^}]*\\{\\{/.test(str)) {\n this.logger.warn('nesting options string contains interpolated variables with escapeValue: false — ' + 'if any of those values are attacker-controlled they can inject additional ' + 'nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing ' + 'it to t(), or keep escapeValue: true.');\n }\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => val\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? this.escape(val) : val\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], regexSafe(safeValue));\n if (skipOnVariables) {\n todo.regex.lastIndex += safeValue.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (!key.includes(sep)) return key;\n const c = key.split(new RegExp(`${regexEscape(sep)}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || (matchedDoubleQuotes?.length ?? 0) % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.includes(this.prefix)) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/s.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], regexSafe(makeString(value)));\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.includes('(')) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].slice(0, -1);\n if (formatName === 'currency' && !optStr.includes(':')) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && !optStr.includes(':')) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n if (!format) return value;\n if (value == null) return value;\n const rawFormats = format.split(this.formatSeparator);\n const formats = [];\n for (let i = 0; i < rawFormats.length; i++) {\n let f = rawFormats[i];\n while (f.indexOf('(') > -1 && !f.includes(')') && i + 1 < rawFormats.length) {\n f = `${f}${this.formatSeparator}${rawFormats[++i]}`;\n }\n formats.push(f);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read(lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n enableSelector: false,\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && !options.supportedLngs.includes('cimode')) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (!options.ns.includes('translation')) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n if (typeof this.options.overloadTranslationOptionHandler !== 'function') {\n this.options.overloadTranslationOptionHandler = defOpts.overloadTranslationOptionHandler;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator\n });\n if (formatter) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if ((this.languages || this.isLanguageChangingTo) && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (!toLoad.includes(l)) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].includes(l)) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].includes(lngInLngs)) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && !this.languages.includes(l) && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix, fixedOpts) {\n const scopeNs = fixedOpts?.scopeNs;\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n const explicitCallNs = o.ns !== undefined && o.ns !== null;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const selectorOpts = {\n ...this.options,\n ...o\n };\n if (Array.isArray(scopeNs) && !explicitCallNs) selectorOpts.ns = scopeNs;\n if (typeof o.keyPrefix === 'function') o.keyPrefix = keysFromSelector(o.keyPrefix, selectorOpts);\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, selectorOpts);\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, selectorOpts);\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (!this.options.ns.includes(n)) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => !preloaded.includes(lng) && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.includes(languageUtils.getLanguagePartFromCode(lng)) || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n const instance = new I18n(options, callback);\n instance.createInstance = I18n.createInstance;\n return instance;\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n if (options.interpolation) {\n const defOpts = get();\n const mergedInterpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation,\n ...options.interpolation\n };\n const mergedForInterpolator = {\n ...mergedOptions,\n interpolation: mergedInterpolation\n };\n clone.services.interpolator = new Interpolator(mergedForInterpolator);\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","{\n \"app\": {\n \"name\": \"Shapio\",\n \"skipToContent\": \"Skip to content\"\n },\n \"common\": {\n \"noAccess\": \"You don't have access to this\",\n \"noAccessDescription\": \"Ask an owner for a role that includes it.\",\n \"cancel\": \"Cancel\",\n \"close\": \"Close\",\n \"saveChanges\": \"Save changes\",\n \"saving\": \"Saving…\",\n \"create\": \"Create\",\n \"delete\": \"Delete\",\n \"edit\": \"Edit\",\n \"remove\": \"Remove\",\n \"revoke\": \"Revoke\",\n \"retry\": \"Try again\",\n \"backHome\": \"Back home\",\n \"loading\": \"Loading…\",\n \"copy\": \"Copy\",\n \"copied\": \"Copied\",\n \"actions\": \"Actions\",\n \"never\": \"Never\",\n \"none\": \"None\",\n \"unknown\": \"Unknown\",\n \"previous\": \"Previous\",\n \"next\": \"Next\",\n \"toggleSidebar\": \"Toggle sidebar\",\n \"sidebar\": \"Sidebar\",\n \"sidebarDescription\": \"Displays the mobile sidebar.\",\n \"notifications\": \"Notifications\",\n \"pagination\": \"Pagination\",\n \"optionalLabel\": \"{{label}} (optional)\",\n \"first\": \"Newest\",\n \"breadcrumb\": \"Breadcrumb\",\n \"moreAbout\": \"More about {{about}}\",\n \"pageRange\": \"{{from}}–{{to}} of {{total}}\",\n \"rowsPerPage\": \"Rows per page\",\n \"perPage\": \"{{count}} per page\"\n },\n \"validation\": {\n \"required\": \"This field is required.\",\n \"email\": \"Enter a valid email address.\",\n \"passwordTooShort\": \"Use at least 12 characters.\",\n \"passwordsDontMatch\": \"The passwords don't match.\",\n \"roleKey\": \"Use lower-case letters, digits and hyphens, starting with a letter.\",\n \"selectRole\": \"Choose a role.\",\n \"passwordTooLong\": \"Use at most 256 characters.\",\n \"apiKeyInvalid\": \"Use letters, digits and _, not starting with a digit.\",\n \"apiKeyTooLong\": \"Use at most 64 characters.\",\n \"apiKeyReservedPrefix\": \"API IDs can't start with \\\"__\\\" (reserved by GraphQL).\",\n \"apiKeyReserved\": \"This name is reserved for a system field. Choose another.\",\n \"apiKeyTaken\": \"Another one already uses this API ID (IDs are case-insensitive).\",\n \"pluralApiKeySameAsSingular\": \"The plural API ID must differ from the API ID.\",\n \"localeCode\": \"Use a language code such as en, fr or fr-CA.\",\n \"localeExists\": \"A locale with this code already exists.\",\n \"tooLong\": \"This is too long.\",\n \"selectModel\": \"Choose a model.\",\n \"dateTime\": \"Choose a valid date and time.\",\n \"url\": \"Enter a full URL starting with https:// or http://.\",\n \"selectEvents\": \"Choose at least one event.\",\n \"maxAttempts\": \"Enter a whole number from 1 to 20.\",\n \"debounceSeconds\": \"Enter a whole number of seconds (0 to 86400).\",\n \"siteKey\": \"Use lower-case letters, digits and hyphens, starting with a letter.\",\n \"siteTwice\": \"Each site can only be listed once.\",\n \"ownerAllSites\": \"The owner role can only be given on all sites.\",\n \"titleTemplate\": \"Use %s exactly once where the page title goes, e.g. \\\"%s · Acme\\\".\",\n \"twitterHandle\": \"Use @ followed by up to 15 letters, digits or underscores.\"\n },\n \"errors\": {\n \"unexpected\": \"Something went wrong. Please try again.\",\n \"network\": \"Can't reach the Shapio server. Check your connection and try again.\",\n \"loadFailed\": \"This couldn't be loaded.\",\n \"forbidden\": \"You don't have permission to see this.\",\n \"forbiddenDescription\": \"Ask an owner or administrator to grant you access.\",\n \"codes\": {\n \"INVALID_CREDENTIALS\": \"That email and password don't match an account.\",\n \"RATE_LIMITED\": \"Too many attempts. Wait a moment and try again.\",\n \"SETUP_COMPLETE\": \"Setup has already been completed. Sign in instead.\",\n \"INVALID_SETUP_TOKEN\": \"That setup token is not valid. Use the latest token from the server log.\",\n \"EMAIL_TAKEN\": \"An account with this email already exists.\",\n \"VERSION_CONFLICT\": \"Someone else changed this in the meantime. Reload and try again.\",\n \"INVALID_CURRENT_PASSWORD\": \"Your current password is not correct.\",\n \"INVALID_OR_EXPIRED_TOKEN\": \"This link is invalid or has expired. Ask for a new one.\",\n \"ROLE_KEY_TAKEN\": \"Another role already uses this key.\",\n \"LAST_OWNER\": \"There must always be at least one active owner.\",\n \"CANNOT_DELETE_SELF\": \"You can't remove your own account.\",\n \"SYSTEM_ROLE\": \"Built-in roles can't be changed or deleted.\",\n \"OWNER_REQUIRED\": \"Only an owner can do this.\",\n \"INVALID_ROLES\": \"One or more of the chosen roles can't be used here.\",\n \"INVALID_PERMISSIONS\": \"Some permissions don't apply to this kind of role.\",\n \"INVALID_EXPIRY\": \"Choose an expiry date in the future.\",\n \"UNAUTHENTICATED\": \"Your session has ended. Sign in again.\",\n \"FORBIDDEN\": \"You don't have permission to do this.\",\n \"CSRF_INVALID\": \"Your session security token expired. Reload the page and try again.\",\n \"VALIDATION_ERROR\": \"Some values aren't valid. Check the form and try again.\",\n \"NOT_FOUND\": \"This no longer exists. It may have been deleted.\",\n \"CONFLICT\": \"This conflicts with a change made elsewhere. Reload and try again.\",\n \"SCHEMA_VERSION_CONFLICT\": \"This model changed since you loaded it. Reload and try again.\",\n \"SCHEMA_CHANGE_IN_PROGRESS\": \"Another change to this model is still running. Wait for it to finish.\",\n \"SCHEMA_INVALID\": \"The model has problems. Fix the highlighted settings and try again.\",\n \"SCHEMA_CHANGE_UNSUPPORTED\": \"Shapio can't convert the existing values for this change.\",\n \"SCHEMA_CHANGE_NOT_ACKNOWLEDGED\": \"This change needs your explicit confirmation.\",\n \"SCHEMA_READ_ONLY\": \"Schema changes are locked on this instance. Use `shapio schema apply` instead.\",\n \"SCHEMA_PREREQUISITE_FAILED\": \"Existing content doesn't satisfy the new model.\",\n \"API_KEY_TAKEN\": \"Another model or component already uses this API ID.\",\n \"LOCALE_EXISTS\": \"A locale with this code already exists.\",\n \"LOCALE_INVALID\": \"The fallback chain is invalid: check for duplicates and unknown locales.\",\n \"LOCALE_IS_DEFAULT\": \"Choose another default locale before deleting this one.\",\n \"TYPE_NOT_ALLOWED\": \"Files of this type cannot be uploaded.\",\n \"FILE_TOO_LARGE\": \"The file is larger than the upload limit.\",\n \"UNSUPPORTED_MEDIA_TYPE\": \"The file’s content is not an allowed type (it was checked from its bytes, not its name).\",\n \"UPLOAD_MISSING\": \"The file did not arrive. Try uploading it again.\",\n \"FILE_EMPTY\": \"The file is empty.\",\n \"UPLOAD_GRANT_EXPIRED\": \"The upload took too long. Try again.\",\n \"UPLOAD_GRANT_USED\": \"This upload was already finished.\",\n \"UPLOAD_GRANT_INVALID\": \"This upload link is no longer valid. Try again.\",\n \"UPLOAD_SIGNATURE_INVALID\": \"The upload was refused. Try again.\",\n \"ASSET_CHANGED\": \"The file changed while you were uploading. Try again.\",\n \"MEDIA_IN_USE\": \"This file is used by content.\",\n \"FOLDER_NOT_EMPTY\": \"Move or delete what is in this folder first.\",\n \"FOLDER_NAME_TAKEN\": \"A folder with this name already exists here.\",\n \"FOLDER_CYCLE\": \"A folder cannot be moved into itself.\",\n \"FOLDER_NOT_FOUND\": \"That folder no longer exists.\",\n \"NOT_CONFIGURED\": \"This isn't configured on the server yet.\",\n \"ALREADY_CONFIRMED\": \"This email address is already confirmed.\",\n \"ROLE_IN_USE\": \"Remove this role from everyone who holds it first.\",\n \"UNKNOWN_MODEL\": \"Some permissions name models that no longer exist. Reload and try again.\",\n \"CONTENT_INVALID\": \"Some fields need attention. Check the highlighted fields and try again.\",\n \"CONTENT_VERSION_CONFLICT\": \"This entry changed since you opened it. Reload it and try again.\",\n \"SCHEMA_CHANGED\": \"The model changed while saving. Reload the form and try again.\",\n \"ENTRY_REFERENCED\": \"Other entries still link to this entry. Remove those links first.\",\n \"ENTRY_NOT_FOUND\": \"This entry no longer exists.\",\n \"ENTRY_LOCALE_NOT_FOUND\": \"This entry has no version in that locale yet.\",\n \"SINGLETON_EXISTS\": \"This single type already has its entry.\",\n \"PUBLISHING_DISABLED\": \"This model has no draft state: every save is published.\",\n \"REVISION_NOT_FOUND\": \"That version no longer exists.\",\n \"INVALID_QUERY\": \"This filter or sort can't be used on this model.\",\n \"FORBIDDEN_FIELD\": \"You don't have access to one of the fields in this filter or sort.\",\n \"LOCALE_NOT_FOUND\": \"That locale doesn't exist.\",\n \"SITE_NOT_EMPTY\": \"This site still has content types, components, entries, media, change sets or app users. Delete them first.\",\n \"SITE_IS_PRIMARY\": \"The primary site can't be deleted.\",\n \"SITE_KEY_TAKEN\": \"Another site already uses this key.\",\n \"OWNER_ALL_SITES\": \"The owner role applies to every site; it can't be given on one site.\",\n \"SITE_FORBIDDEN\": \"You have no role on this site.\",\n \"SITE_MISMATCH\": \"This credential belongs to another site.\",\n \"SITE_NOT_FOUND\": \"That site doesn't exist.\",\n \"INVALID_SITES\": \"One of the chosen sites doesn't exist.\",\n \"ASSIST_DISABLED\": \"Assist is off on this server.\",\n \"ASSIST_PROVIDER_ERROR\": \"The model provider returned an error. Try again in a moment.\",\n \"ASSIST_PROVIDER_AUTH\": \"The model provider refused this server's credentials. Ask whoever runs Shapio to check the assist settings.\",\n \"ASSIST_PROVIDER_BUSY\": \"The model provider is busy. Try again in a moment.\",\n \"ASSIST_INVALID_OUTPUT\": \"The model's answer couldn't be used. Try again, or rephrase.\",\n \"ASSIST_DECLINED\": \"The model declined this request.\",\n \"ASSIST_VISION_UNSUPPORTED\": \"The configured model can't read images.\",\n \"ASSIST_NOT_AN_IMAGE\": \"Alt text can only be suggested for images.\",\n \"ASSIST_FIELD_NOT_SUMMARIZABLE\": \"This field can't be filled with a summary.\",\n \"ASSIST_NOTHING_TO_SUMMARIZE\": \"There is no saved body text to summarize yet.\",\n \"ASSIST_NOT_LOCALIZED\": \"This content type isn't localized.\",\n \"ASSIST_SAME_LOCALE\": \"Pick a different locale to translate from.\",\n \"ASSIST_RUN_NOT_FOUND\": \"That proposal run no longer exists.\"\n }\n },\n \"notFound\": {\n \"title\": \"Page not found\",\n \"description\": \"This page doesn't exist or has moved.\"\n },\n \"routeError\": {\n \"title\": \"Something went wrong\",\n \"description\": \"This page couldn't be shown.\"\n },\n \"unsaved\": {\n \"title\": \"Discard unsaved changes?\",\n \"description\": \"You have changes that haven't been saved. If you leave now, they will be lost.\",\n \"stay\": \"Keep editing\",\n \"leave\": \"Discard and leave\"\n },\n \"secret\": {\n \"saved\": \"I've saved it\",\n \"leaveTitle\": \"Leave without saving the secret?\",\n \"leaveDescription\": \"It's shown only once. If you leave now, you'll need to create a new one.\",\n \"stay\": \"Stay and copy it\",\n \"leave\": \"Leave\"\n },\n \"theme\": {\n \"label\": \"Theme\",\n \"toggle\": \"Change theme\"\n },\n \"auth\": {\n \"email\": \"Email\",\n \"password\": \"Password\",\n \"name\": \"Name\",\n \"confirmPassword\": \"Confirm password\",\n \"newPassword\": \"New password\",\n \"passwordHint\": \"12 characters or more.\",\n \"backToLogin\": \"Back to sign in\",\n \"brand\": {\n \"label\": \"About Shapio\",\n \"tagline\": \"Shape your content.\",\n \"pitchLive\": \"Change content models live, with no rebuild or restart.\",\n \"pitchApi\": \"Deliver over REST and GraphQL.\",\n \"pitchSelfHosted\": \"Self-hosted and open source.\"\n }\n },\n \"setup\": {\n \"title\": \"Set up Shapio\",\n \"description\": \"Create the owner account. Invite your team later.\",\n \"token\": \"Setup token\",\n \"tokenHint\": \"Printed in the API server's log at startup.\",\n \"tokenMore\": \"In the banner \\\"No admin account exists yet\\\", on the line \\\"One-time setup token: …\\\".\",\n \"submit\": \"Create owner account\",\n \"submitting\": \"Creating account…\"\n },\n \"login\": {\n \"title\": \"Sign in\",\n \"submit\": \"Sign in\",\n \"submitting\": \"Signing in…\",\n \"forgotPassword\": \"Forgot password?\"\n },\n \"sessionEnded\": {\n \"title\": \"Your session has ended\",\n \"description\": \"Sign in again to keep working. Your unsaved changes are still here.\",\n \"account\": \"Signing in as {{email}}\"\n },\n \"forgotPassword\": {\n \"title\": \"Reset your password\",\n \"description\": \"We'll email you a link to choose a new one.\",\n \"submit\": \"Send reset link\",\n \"submitting\": \"Sending…\",\n \"sentTitle\": \"Check your email\",\n \"sentDescription\": \"If {{email}} has an account, a reset link is on its way.\"\n },\n \"resetPassword\": {\n \"title\": \"Choose a new password\",\n \"description\": \"This signs you out everywhere else.\",\n \"submit\": \"Set new password\",\n \"submitting\": \"Saving…\",\n \"missingToken\": \"This reset link is incomplete. Open it from your email again.\",\n \"requestNew\": \"Request a new link\",\n \"doneTitle\": \"Password changed\",\n \"doneDescription\": \"Sign in with your new password.\"\n },\n \"acceptInvitation\": {\n \"title\": \"Join your team on Shapio\",\n \"submit\": \"Create account\",\n \"submitting\": \"Creating account…\",\n \"missingToken\": \"This invitation link is incomplete. Open the full link again.\",\n \"joiningAs\": \"You're joining as {{email}}.\"\n },\n \"nav\": {\n \"content\": \"Content\",\n \"publishing\": \"Publishing\"\n },\n \"shell\": {\n \"mainNavigation\": \"Main navigation\",\n \"home\": \"Inbox\",\n \"search\": \"Search or jump to…\",\n \"groups\": {\n \"content\": \"Content\",\n \"develop\": \"Develop\",\n \"workspace\": \"Workspace\",\n \"network\": \"Network\"\n },\n \"nav\": {\n \"inbox\": \"Inbox\",\n \"media\": \"Media\",\n \"publishing\": \"Publishing\",\n \"newType\": \"New content type\",\n \"changes\": \"Changes\",\n \"snapshots\": \"Snapshots\",\n \"schema\": \"Schema as code\",\n \"components\": \"Components\",\n \"apiExplorer\": \"API explorer\",\n \"graphql\": \"GraphQL\",\n \"live\": \"Live\",\n \"apiTokens\": \"API tokens\",\n \"webhooks\": \"Webhooks\",\n \"users\": \"Users\",\n \"roles\": \"Roles\",\n \"locales\": \"Locales\",\n \"settings\": \"Settings\",\n \"team\": \"Team\",\n \"appUsers\": \"App users\",\n \"sites\": \"Sites\",\n \"auditLog\": \"Audit log\",\n \"sharedContentTypes\": \"Content types\"\n }\n },\n \"palette\": {\n \"title\": \"Search and commands\",\n \"inputLabel\": \"Search places, entries, media and commands\",\n \"placeholder\": \"Search or type a command…\",\n \"results\": \"Results\",\n \"searching\": \"Searching…\",\n \"noResults\": \"Nothing found for “{{query}}”\",\n \"resultCount_one\": \"{{count}} result\",\n \"resultCount_other\": \"{{count}} results\",\n \"untitled\": \"Untitled\",\n \"newEntry\": \"New {{name}}\",\n \"newComponent\": \"New component\",\n \"groups\": {\n \"page\": \"On this page\",\n \"recent\": \"Recent\",\n \"create\": \"Create\",\n \"goto\": \"Go to\",\n \"entries\": \"Entries\",\n \"media\": \"Media\"\n },\n \"hintMove\": \"↑↓ to move\",\n \"hintOpen\": \"Enter to open\",\n \"hintClose\": \"Esc to close\"\n },\n \"inbox\": {\n \"title\": \"Welcome, {{name}}\",\n \"titleFallback\": \"Welcome\",\n \"meta_one\": \"{{count}} thing needs you\",\n \"meta_other\": \"{{count}} things need you\",\n \"metaClear\": \"Nothing needs you right now\",\n \"needsYou\": \"Needs you\",\n \"allClear\": \"You’re all caught up\",\n \"allClearDescription\": \"Missing alt text, empty required fields and unstarted translations show up here.\",\n \"aField\": \"a field\",\n \"findingMeta\": \"{{place}} · {{sentence}}\",\n \"showAll\": \"Show all {{count}}\",\n \"loadMore\": \"Load more\",\n \"scheduledSoon\": \"Scheduled soon\",\n \"scheduledPublish\": \"{{place}} · goes live\",\n \"scheduledUnpublish\": \"{{place}} · comes down\",\n \"nothingScheduled\": \"Nothing scheduled\",\n \"viewAll\": \"View all\",\n \"recentlyPublished\": \"Recently published\",\n \"nothingPublished\": \"Nothing published yet\",\n \"overview\": \"Workspace overview\",\n \"rules\": {\n \"requiredEmpty\": {\n \"title\": \"Required fields left empty\",\n \"sentence\": \"{{field}} is required and still empty\",\n \"fix\": \"Fill in\"\n },\n \"altMissing\": {\n \"title\": \"Images without alt text\",\n \"sentence\": \"An image in {{field}} has no alt text\",\n \"fix\": \"Add alt text\"\n },\n \"localeMissing\": {\n \"title\": \"Translations not started\",\n \"sentence\": \"Not written in {{locale}} yet\",\n \"fix\": \"Start {{locale}}\"\n },\n \"relationMissing\": {\n \"title\": \"Links to deleted entries\",\n \"sentence\": \"{{field}} links to an entry that no longer exists\",\n \"fix\": \"Fix link\"\n },\n \"mediaMissing\": {\n \"title\": \"Files deleted from the library\",\n \"sentence\": \"A file in {{field}} is no longer in the media library\",\n \"fix\": \"Replace file\"\n },\n \"relationUnpublished\": {\n \"title\": \"Links to unpublished entries\",\n \"sentence\": \"{{field}} links to an entry that isn’t live, so readers won’t see it\",\n \"fix\": \"Review link\"\n },\n \"uniqueConflict\": {\n \"title\": \"Values already taken\",\n \"sentence\": \"{{field}} is already used by another published entry\",\n \"fix\": \"Change it\"\n },\n \"staleDraft\": {\n \"title\": \"Drafts going stale\",\n \"sentence_one\": \"Draft untouched for {{count}} day\",\n \"sentence_other\": \"Draft untouched for {{count}} days\",\n \"fix\": \"Open draft\"\n },\n \"unpublishedChanges\": {\n \"title\": \"Changes not published\",\n \"sentence_one\": \"Changes waiting to go live for {{count}} day\",\n \"sentence_other\": \"Changes waiting to go live for {{count}} days\",\n \"fix\": \"Review changes\"\n }\n },\n \"wentLive\": \"{{place}} · went live\",\n \"liveUpdated\": \"{{place}} · live version updated\",\n \"nothingScheduledDescription\": \"Schedule a publish from an entry when it should go live later.\",\n \"nothingPublishedDescription\": \"Entries appear here as they go live.\",\n \"getStarted\": {\n \"title\": \"Get started\",\n \"done\": \"Done\",\n \"type\": {\n \"title\": \"Create a content type\",\n \"description\": \"Articles, pages, authors: the kinds of things you write. Live as soon as you create it.\"\n },\n \"entry\": {\n \"title\": \"Write your first entry\",\n \"description\": \"Open {{place}} and write something.\"\n },\n \"invite\": {\n \"title\": \"Invite your team\",\n \"description\": \"Add editors and administrators, each with the role they need.\",\n \"action\": \"Invite people\"\n },\n \"token\": {\n \"title\": \"Create an API token\",\n \"description\": \"Give your site or build pipeline scoped access to the API.\",\n \"action\": \"Create a token\"\n },\n \"waiting\": \"Nothing to write yet.\",\n \"waitingDescription\": \"An administrator adds the first content type; it appears in the sidebar.\"\n }\n },\n \"contentTypes\": {\n \"newTitle\": \"New content type\",\n \"newComponentTitle\": \"New component\",\n \"noComponents\": \"No components yet\",\n \"availableOn\": \"Available on\",\n \"thisSite\": \"This site\",\n \"thisSiteDescription\": \"Only on {{site}}.\",\n \"allSites\": \"All sites\",\n \"allSitesDescription\": \"Every site has it, each with its own content.\",\n \"allSitesNeedsNetwork\": \"Sharing with all sites needs a role on every site.\",\n \"sharedWithAllSites\": \"Shared with all sites\",\n \"network\": {\n \"title\": \"Content types\",\n \"count_one\": \"{{count}} shared with all sites\",\n \"count_other\": \"{{count}} shared with all sites\",\n \"create\": \"New shared type\",\n \"newTitle\": \"New shared content type\",\n \"empty\": \"Nothing is shared yet\",\n \"emptyDescription\": \"Content types and components shared with all sites are listed here.\"\n }\n },\n \"userMenu\": {\n \"label\": \"Account menu\",\n \"profile\": \"Profile\",\n \"signOut\": \"Sign out\",\n \"signedInAs\": \"Signed in as\"\n },\n \"statusBar\": {\n \"schema\": \"Schema v{{version}} · live, no restart needed\"\n },\n \"home\": {\n \"models\": \"Content types\",\n \"locales\": \"Locales\",\n \"admins\": \"Admins\",\n \"activity\": \"Recent activity\",\n \"activityTarget\": \"{{type}} · {{name}}\",\n \"viewAuditLog\": \"View audit log\",\n \"noActivity\": \"Nothing has happened yet.\",\n \"allModels\": \"All content types\",\n \"noModels\": \"No content types yet\",\n \"kinds\": {\n \"collection\": \"Collection\",\n \"singleton\": \"Singleton\"\n },\n \"version\": \"v{{version}}\",\n \"shortcuts\": \"Shortcuts\",\n \"createEntry\": \"Create entry\",\n \"newModel\": \"New content type\",\n \"uploadMedia\": \"Upload media\",\n \"invite\": \"Invite a teammate\",\n \"inviteTeam\": \"Invite your team\",\n \"inviteTeamDescription\": \"Add editors and administrators, each with the role they need.\",\n \"createToken\": \"Create an API token\",\n \"createTokenDescription\": \"Give your site or build pipeline scoped access to the API.\"\n },\n \"settings\": {\n \"sections\": \"Settings sections\",\n \"account\": \"Account\",\n \"workspace\": \"Workspace\",\n \"developer\": \"Developer\",\n \"profile\": \"Profile\",\n \"sessions\": \"Sessions\",\n \"appearance\": \"Appearance\",\n \"locales\": \"Locales\",\n \"seo\": \"SEO\",\n \"apiTokens\": \"API tokens\",\n \"assist\": \"Assist\"\n },\n \"profile\": {\n \"title\": \"Profile\",\n \"detailsTitle\": \"Details\",\n \"detailsSaved\": \"Profile saved.\",\n \"passwordTitle\": \"Password\",\n \"passwordDescription\": \"Changing your password signs you out on every other device.\",\n \"currentPassword\": \"Current password\",\n \"changePassword\": \"Change password\",\n \"passwordChanged\": \"Password changed.\",\n \"emailHint\": \"Your sign-in email. Ask an owner to change it.\"\n },\n \"sessions\": {\n \"title\": \"Sessions\",\n \"device\": \"Device\",\n \"ipAddress\": \"IP address\",\n \"signedIn\": \"Signed in\",\n \"lastActive\": \"Last active\",\n \"current\": \"This device\",\n \"unknownDevice\": \"Unknown device\",\n \"revokeTitle\": \"Revoke this session?\",\n \"revokeDescription\": \"That device will be signed out on its next request.\",\n \"revoked\": \"Session revoked.\",\n \"empty\": \"No other sessions.\"\n },\n \"appearance\": {\n \"title\": \"Appearance\",\n \"theme\": \"Theme\",\n \"storedHere\": \"Saved on this device.\",\n \"lookName\": \"{{theme}} {{variant}}\",\n \"variants\": {\n \"light\": \"Light\",\n \"dark\": \"Dark\"\n },\n \"themes\": {\n \"shapio\": {\n \"name\": \"Shapio\",\n \"description\": \"Plum, cream and acid yellow.\"\n },\n \"classic\": {\n \"name\": \"Cobalt\",\n \"description\": \"The original cobalt look.\"\n },\n \"murdered-out\": {\n \"name\": \"Murdered out\",\n \"description\": \"Blacked out, no color.\"\n },\n \"forest\": {\n \"name\": \"Forest\",\n \"description\": \"Deep green and lime.\"\n },\n \"snowed\": {\n \"name\": \"Snowed\",\n \"description\": \"White and ice blue.\"\n },\n \"butter\": {\n \"name\": \"Butter\",\n \"description\": \"Butter yellow and ink.\"\n }\n }\n },\n \"locales\": {\n \"title\": \"Locales\",\n \"add\": \"Add locale\",\n \"addTitle\": \"Add a locale\",\n \"editTitle\": \"Edit {{label}}\",\n \"code\": \"Code\",\n \"codeHint\": \"A language tag such as en, fr or fr-CA. It can't be changed later.\",\n \"label\": \"Name\",\n \"default\": \"Default\",\n \"fallbacks\": \"Fallbacks\",\n \"fallbacksHint\": \"Tried in order when content is missing in this locale; the default comes last.\",\n \"noFallbacks\": \"No fallbacks: the default locale is used.\",\n \"addFallback\": \"Add a fallback locale\",\n \"moveUp\": \"Move {{locale}} up\",\n \"moveDown\": \"Move {{locale}} down\",\n \"removeFallback\": \"Remove {{locale}}\",\n \"created\": \"{{label}} added.\",\n \"saved\": \"{{label}} saved.\",\n \"empty\": \"No locales configured.\",\n \"makeDefault\": \"Make default\",\n \"defaultTitle\": \"Make {{label}} the default locale?\",\n \"defaultDescription\": \"Requests without a locale, and every fallback chain, will end at {{label}} instead of {{current}}. Sites and apps may receive different content: this is a breaking change.\",\n \"defaultAcknowledge\": \"I understand API clients will get content in the new default locale.\",\n \"defaultChanged\": \"{{label}} is now the default locale.\",\n \"deleteTitle\": \"Delete {{label}}?\",\n \"deleteDescription\": \"It disappears from the API at once, and its content is purged in the background. This can't be undone.\",\n \"deleteContent_one\": \"{{count}} entry version has content in {{label}}. Deleting the locale permanently removes it.\",\n \"deleteContent_other\": \"{{count}} entry versions have content in {{label}}. Deleting the locale permanently removes them.\",\n \"deleteEntries_one\": \"{{count}} entry exists only in {{label}} and will be deleted.\",\n \"deleteEntries_other\": \"{{count}} entries exist only in {{label}} and will be deleted.\",\n \"deleteAcknowledge_one\": \"I understand {{count}} entry version will be permanently deleted.\",\n \"deleteAcknowledge_other\": \"I understand {{count}} entry versions will be permanently deleted.\",\n \"deleting\": \"Deleting…\",\n \"deleted\": \"{{label}} deleted.\"\n },\n \"roles\": {\n \"title\": \"Roles\",\n \"create\": \"New role\",\n \"name\": \"Name\",\n \"key\": \"Key\",\n \"keyHint\": \"Used in the API and in schema files. It can't be changed later.\",\n \"roleDescription\": \"Description\",\n \"kind\": \"Kind\",\n \"kindAdmin\": \"Admin\",\n \"kindDelivery\": \"Delivery\",\n \"kindHint\": \"Admin roles are held by admin users and management tokens; delivery roles by tokens that read content for your sites.\",\n \"builtIn\": \"Built-in\",\n \"custom\": \"Custom\",\n \"permissions\": \"Permissions\",\n \"permissionsCount_one\": \"{{count}} permission\",\n \"permissionsCount_other\": \"{{count}} permissions\",\n \"createTitle\": \"Create role\",\n \"created\": \"Role created.\",\n \"saved\": \"Role saved.\",\n \"deleteTitle\": \"Delete {{name}}?\",\n \"deleteDescription\": \"Users and tokens can't hold a role that's deleted. This can't be undone.\",\n \"deleted\": \"Role deleted.\",\n \"empty\": \"No roles yet.\",\n \"actions\": {\n \"read\": \"Read entries\",\n \"readDrafts\": \"Read drafts\",\n \"readDraftsHint\": \"Lets this token's site render drafts, for development servers. Never grant it to a production token.\",\n \"create\": \"Create entries\",\n \"update\": \"Update entries\",\n \"delete\": \"Delete entries\",\n \"publish\": \"Publish entries\",\n \"schemaManage\": \"Change models\",\n \"schemaCreate\": \"Create models\",\n \"usersManage\": \"Manage admin users\",\n \"rolesManage\": \"Manage roles\",\n \"tokensManage\": \"Manage API tokens\",\n \"auditRead\": \"Read the audit log\",\n \"sitesManage\": \"Manage sites\",\n \"mediaRead\": \"Browse the media library\",\n \"mediaWrite\": \"Upload and edit media\",\n \"mediaManage\": \"Delete media and change its visibility\",\n \"publishingManage\": \"See jobs and every scheduled publication\",\n \"webhooksManage\": \"Manage webhooks\",\n \"deploymentsManage\": \"Manage deployment connections\",\n \"deploymentsTrigger\": \"Trigger and retry site builds\",\n \"changesManage\": \"Create and review change sets\",\n \"changesShip\": \"Ship and schedule change sets\",\n \"siteSettings\": \"Site settings\"\n },\n \"contentPermissions\": \"Content\",\n \"contentHintAdmin\": \"Without a field list, every field.\",\n \"contentHintDelivery\": \"Without a field list, only public fields.\",\n \"instancePermissions\": \"Instance\",\n \"drafts\": \"Drafts\",\n \"details\": \"Details\",\n \"editPermissions\": \"Edit permissions\",\n \"builtInReadOnly\": \"Built-in roles can't be changed. To grant something else, create a custom role.\",\n \"sections\": \"Role types\",\n \"tabAdmin\": \"Admin and token roles\",\n \"tabApp\": \"App roles\",\n \"matrix\": {\n \"model\": \"Model\",\n \"allModels\": \"All models\",\n \"allModelsHint\": \"Including models created later\",\n \"options\": \"Options\",\n \"everyRow\": \"{{action}} on every row\",\n \"ownOnly\": \"Only their own entries\",\n \"fieldScope\": \"Fields\",\n \"allFields\": \"All fields\",\n \"allPublicFields\": \"All public fields\",\n \"selectedFields\": \"Only selected fields\",\n \"notPublic\": \"Hidden by default\",\n \"deprecatedField\": \"Deprecated\",\n \"unknownField\": \"Not on this model\",\n \"fixedOwnOnly\": \"Only their own entries (set through the API)\",\n \"fixedFields\": \"Only these fields (set through the API): {{fields}}\",\n \"unlistedTitle\": \"Grants on models that no longer exist\",\n \"removeGrant\": \"Remove {{action}} on {{model}}\",\n \"inheritedFrom\": \"Inherited from {{model}}\",\n \"inheritedAction\": \"{{action}} inherited from {{model}}\",\n \"inheritedGrant\": \"Inherited from {{model}}: {{fields}}\",\n \"inheritedGrantOwnOnly\": \"Inherited from {{model}}: {{fields}}, only their own entries\",\n \"widenOnly\": \"A grant here can only add to what it inherits.\",\n \"inheritanceNote\": \"Kinds get every grant of the type they extend. A grant on a kind can only add access; it never takes away what the kind inherits.\",\n \"actions\": {\n \"read\": \"Read\",\n \"create\": \"Create\",\n \"update\": \"Update\",\n \"delete\": \"Delete\",\n \"publish\": \"Publish\",\n \"schemaManage\": \"Change model\"\n }\n }\n },\n \"apiTokens\": {\n \"title\": \"API tokens\",\n \"create\": \"New token\",\n \"name\": \"Name\",\n \"role\": \"Role\",\n \"prefix\": \"Token\",\n \"expires\": \"Expires\",\n \"lastUsed\": \"Last used\",\n \"status\": \"Status\",\n \"active\": \"Active\",\n \"expiry\": \"Expiry\",\n \"expiryNever\": \"Never expires\",\n \"expiryDays_one\": \"In {{count}} day\",\n \"expiryDays_other\": \"In {{count}} days\",\n \"createTitle\": \"Create API token\",\n \"secretTitle\": \"Copy your new token\",\n \"secretDescription\": \"It's shown only this once. Store it somewhere safe, such as your deployment's secrets.\",\n \"secretLabel\": \"Token\",\n \"secretDone\": \"I've copied it\",\n \"revokeTitle\": \"Revoke {{name}}?\",\n \"revokeDescription\": \"Anything using this token will lose access immediately. This can't be undone.\",\n \"revoked\": \"Token revoked.\",\n \"revokedBadge\": \"Revoked\",\n \"pausedBadge\": \"Paused: creator disabled\",\n \"draftsChip\": \"Drafts\",\n \"empty\": \"No API tokens yet.\",\n \"emptyDescription\": \"Create one to let a site or the CLI talk to Shapio.\",\n \"scope\": \"Works on\",\n \"scopeSite\": \"This site ({{name}})\",\n \"scopeSiteDescription\": \"The token's role applies on this site only.\",\n \"scopeNetwork\": \"Every site (network token)\",\n \"scopeNetworkDescription\": \"Its role applies on every site, including network actions such as managing users.\",\n \"appliesTo\": \"Site\"\n },\n \"audit\": {\n \"title\": \"Audit log\",\n \"when\": \"When\",\n \"actor\": \"Actor\",\n \"action\": \"Action\",\n \"target\": \"Target\",\n \"outcome\": \"Outcome\",\n \"ipAddress\": \"IP address\",\n \"success\": \"Success\",\n \"failure\": \"Failure\",\n \"filterAction\": \"Filter by action\",\n \"filterActionPlaceholder\": \"Filter by action, e.g. session.revoke\",\n \"filterActor\": \"Actor type\",\n \"allActors\": \"All actors\",\n \"actorTypes\": {\n \"admin\": \"Admin\",\n \"app_user\": \"App user\",\n \"token\": \"API token\",\n \"anonymous\": \"Anonymous\",\n \"system\": \"System\"\n },\n \"actions\": {\n \"adminUserCreate\": \"Created admin user\",\n \"adminUserDelete\": \"Removed admin user\",\n \"adminUserPasswordChange\": \"Changed password\",\n \"adminUserUpdate\": \"Updated admin user\",\n \"apiTokenCreate\": \"Created API token\",\n \"apiTokenRevoke\": \"Revoked API token\",\n \"appAuthRefreshReuse\": \"Reused a revoked refresh token\",\n \"appRoleCreate\": \"Created app role\",\n \"appRoleDelete\": \"Deleted app role\",\n \"appRoleUpdate\": \"Updated app role\",\n \"appUserBlock\": \"Blocked app user\",\n \"appUserUnblock\": \"Unblocked app user\",\n \"appUserConfirmEmail\": \"Confirmed email\",\n \"appUserConfirmationResend\": \"Resent confirmation email\",\n \"appUserDelete\": \"Deleted app user\",\n \"appUserOauthLink\": \"Linked a sign-in provider\",\n \"appUserPasswordChange\": \"Changed password\",\n \"appUserPasswordReset\": \"Reset password\",\n \"appUserPasswordResetRequest\": \"Requested a password reset\",\n \"appUserRegister\": \"Signed up\",\n \"appUserRolesChange\": \"Changed app user roles\",\n \"appUserUpdate\": \"Updated app user\",\n \"authLogin\": \"Signed in\",\n \"authLogout\": \"Signed out\",\n \"authPasswordReset\": \"Reset password\",\n \"authPasswordResetRequest\": \"Requested a password reset\",\n \"changeSetCreate\": \"Created change set\",\n \"changeSetDiscard\": \"Discarded change set\",\n \"changeSetItemAdd\": \"Added to change set\",\n \"changeSetItemChangedAfterReview\": \"Draft changed after the change set was scheduled\",\n \"changeSetItemRemove\": \"Removed from change set\",\n \"changeSetSchedule\": \"Scheduled change set\",\n \"changeSetSchemaDraft\": \"Saved schema draft in change set\",\n \"changeSetSchemaDraftRemove\": \"Removed schema draft from change set\",\n \"changeSetShip\": \"Shipped change set\",\n \"changeSetShipping\": \"Started shipping change set\",\n \"changeSetUnschedule\": \"Unscheduled change set\",\n \"changeSetUpdate\": \"Updated change set\",\n \"contentChangeKind\": \"Changed entry kind\",\n \"contentDelete\": \"Deleted entry\",\n \"contentPublish\": \"Published entry\",\n \"contentRestore\": \"Restored entry version\",\n \"contentUnpublish\": \"Unpublished entry\",\n \"deploymentRetry\": \"Retried deployment\",\n \"deploymentTrigger\": \"Triggered deployment\",\n \"deploymentConnectionCreate\": \"Created deploy connection\",\n \"deploymentConnectionDelete\": \"Deleted deploy connection\",\n \"deploymentConnectionUpdate\": \"Updated deploy connection\",\n \"invitationAccept\": \"Accepted invitation\",\n \"invitationCreate\": \"Invited admin\",\n \"invitationLink\": \"Created an invitation link\",\n \"invitationRevoke\": \"Revoked invitation\",\n \"jobRetry\": \"Retried job\",\n \"localeCreate\": \"Added locale\",\n \"localeDelete\": \"Deleted locale\",\n \"localeUpdate\": \"Updated locale\",\n \"mediaDelete\": \"Deleted media\",\n \"mediaFolderDelete\": \"Deleted media folder\",\n \"mediaReplace\": \"Replaced media file\",\n \"mediaUpload\": \"Uploaded media\",\n \"mediaVisibilityChange\": \"Changed media visibility\",\n \"previewTokenCreate\": \"Created preview link\",\n \"previewTokenRevoke\": \"Revoked preview link\",\n \"publishingSchedule\": \"Scheduled publication\",\n \"publishingSchedulePublish\": \"Scheduled publishing\",\n \"publishingScheduleUnpublish\": \"Scheduled unpublishing\",\n \"publishingScheduleCancel\": \"Canceled scheduled publication\",\n \"publishingScheduleExecute\": \"Ran scheduled publication\",\n \"roleCreate\": \"Created role\",\n \"roleDelete\": \"Deleted role\",\n \"roleUpdate\": \"Updated role\",\n \"schemaActivate\": \"Applied model change\",\n \"schemaChangeRequest\": \"Requested model change\",\n \"schemaCreate\": \"Created model\",\n \"schemaDelete\": \"Deleted model\",\n \"schemaSettingsUpdate\": \"Updated schema settings\",\n \"sessionRevoke\": \"Revoked session\",\n \"sessionRevokeAll\": \"Signed out everywhere\",\n \"setupComplete\": \"Completed setup\",\n \"transferImport\": \"Imported content\",\n \"webhookCreate\": \"Created webhook\",\n \"webhookDelete\": \"Deleted webhook\",\n \"webhookRedeliver\": \"Redelivered webhook\",\n \"webhookRotateSecret\": \"Rotated webhook secret\",\n \"webhookTest\": \"Tested webhook\",\n \"webhookUpdate\": \"Updated webhook\",\n \"assistAltText\": \"Suggested alt text with assist\",\n \"assistContentOps\": \"Proposed fixes with assist\",\n \"assistRewrite\": \"Rewrote text with assist\",\n \"assistSchemaDraft\": \"Proposed content types with assist\",\n \"assistSummarize\": \"Summarized with assist\",\n \"assistTranslate\": \"Translated with assist\",\n \"schemaScope\": \"Changed where a model is available\"\n },\n \"targets\": {\n \"adminInvitation\": \"Invitation\",\n \"adminRole\": \"Role\",\n \"adminSession\": \"Session\",\n \"adminUser\": \"Admin user\",\n \"apiToken\": \"API token\",\n \"appRole\": \"App role\",\n \"appUser\": \"App user\",\n \"component\": \"Component\",\n \"deploymentConnection\": \"Deploy connection\",\n \"entry\": \"Entry\",\n \"job\": \"Job\",\n \"locale\": \"Locale\",\n \"mediaAsset\": \"Media file\",\n \"mediaFolder\": \"Media folder\",\n \"model\": \"Model\",\n \"previewToken\": \"Preview link\",\n \"changeSet\": \"Change set\",\n \"schemaSettings\": \"Schema settings\",\n \"webhook\": \"Webhook\"\n },\n \"empty\": \"No audit events match.\",\n \"clearFilters\": \"Clear filters\"\n },\n \"users\": {\n \"title\": \"Users\",\n \"invite\": \"Invite user\",\n \"name\": \"Name\",\n \"email\": \"Email\",\n \"roles\": \"Roles\",\n \"status\": \"Status\",\n \"lastLogin\": \"Last sign-in\",\n \"active\": \"Active\",\n \"disabled\": \"Disabled\",\n \"you\": \"You\",\n \"disable\": \"Disable\",\n \"enable\": \"Enable\",\n \"inviteTitle\": \"Invite a user\",\n \"invited\": \"Invitation sent to {{email}}.\",\n \"rolesSaved\": \"Access updated.\",\n \"removeTitle\": \"Remove {{name}}?\",\n \"removeDescription\": \"They will be signed out and can no longer sign in. Their past changes stay in the history.\",\n \"removeDescriptionWithTokens_one\": \"They will be signed out and can no longer sign in. The API token they created will be revoked: {{names}}. Their past changes stay in the history.\",\n \"removeDescriptionWithTokens_other\": \"They will be signed out and can no longer sign in. The {{count}} API tokens they created will be revoked: {{names}}. Their past changes stay in the history.\",\n \"disableTitle\": \"Disable {{name}}?\",\n \"disableDescriptionWithTokens_one\": \"They will be signed out, and the API token they created will stop working until they are enabled again: {{names}}.\",\n \"disableDescriptionWithTokens_other\": \"They will be signed out, and the {{count}} API tokens they created will stop working until they are enabled again: {{names}}.\",\n \"removed\": \"User removed.\",\n \"statusChanged\": \"User updated.\",\n \"empty\": \"No users yet.\",\n \"invitationsTitle\": \"Pending invitations\",\n \"invitationExpires\": \"Expires\",\n \"invitationRevoked\": \"Invitation revoked.\",\n \"revokeInvitationTitle\": \"Revoke the invitation for {{email}}?\",\n \"revokeInvitationDescription\": \"Their invitation link stops working.\",\n \"role\": \"Role\",\n \"copyLink\": \"Copy link\",\n \"invitationLink\": {\n \"title\": \"Invitation link for {{email}}\",\n \"noEmailDescription\": \"Email isn't set up on this server, so send this link yourself. It expires {{date}}.\",\n \"description\": \"Send this link yourself. Earlier links, including the emailed one, no longer work. It expires {{date}}.\",\n \"label\": \"Invitation link\",\n \"done\": \"I've copied it\",\n \"confirmTitle\": \"Create a new link for {{email}}?\",\n \"confirmDescription\": \"This creates a new link; any earlier link stops working.\",\n \"create\": \"Create link\"\n },\n \"editAccess\": \"Change access\",\n \"accessTitle\": \"Access for {{name}}\",\n \"access\": {\n \"title\": \"Access\",\n \"row\": \"Access {{n}}\",\n \"site\": \"Site\",\n \"remove\": \"Remove access {{n}}\",\n \"add\": \"Add a site\",\n \"badge\": \"{{role}} · {{site}}\"\n }\n },\n \"models\": {\n \"creating\": \"Creating…\",\n \"created\": \"Created — no restart needed.\",\n \"updated\": \"Model updated — no restart needed\",\n \"deleted\": \"Deleted. Its entries are kept and come back if it is restored.\",\n \"shape\": \"Shape\",\n \"label\": \"Label\",\n \"apiKey\": \"API ID\",\n \"apiKeyHint\": \"Renaming it later breaks API clients.\",\n \"pluralApiKey\": \"Plural API ID\",\n \"pluralApiKeyHint\": \"Names the list route: /api/content/articles.\",\n \"restLabel\": \"REST\",\n \"graphqlLabel\": \"GraphQL\",\n \"endpointPath\": \"/api/content/{{routeKey}}\",\n \"fieldApiKeyHint\": \"Letters, digits and _, not starting with a digit.\",\n \"descriptionLabel\": \"Description\",\n \"localized\": \"Localized\",\n \"localizedHint\": \"Content per locale.\",\n \"versionNumber\": \"v{{version}}\",\n \"pendingChange\": \"Change in progress\",\n \"choose\": \"Choose…\",\n \"notSet\": \"Not set\",\n \"commaSeparated\": \"Separate values with commas.\",\n \"emptyDescription\": \"It's live as soon as it's created.\",\n \"columns\": {\n \"label\": \"Name\",\n \"apiKey\": \"API IDs\",\n \"fields\": \"Fields\",\n \"version\": \"Version\",\n \"activated\": \"Active since\",\n \"shape\": \"Shape\"\n },\n \"kinds\": {\n \"collection\": \"Collection\",\n \"singleton\": \"Singleton\",\n \"component\": \"Component\",\n \"collectionDescription\": \"Many entries, e.g. articles.\",\n \"singletonDescription\": \"One entry, e.g. the home page.\",\n \"componentDescription\": \"Reusable fields embedded in models.\"\n },\n \"lock\": {\n \"title\": \"Schema editing is locked\",\n \"description\": \"Changes come from `shapio schema apply`.\",\n \"reason\": \"Reason: {{reason}}\"\n },\n \"dataTypes\": {\n \"string\": {\n \"name\": \"Short text\",\n \"description\": \"A single line: titles, names, labels.\"\n },\n \"text\": {\n \"name\": \"Long text\",\n \"description\": \"Plain text over several lines, without formatting.\"\n },\n \"richtext\": {\n \"name\": \"Rich text\",\n \"description\": \"Formatted text with headings, links, lists, tables and images.\"\n },\n \"code\": {\n \"name\": \"Code\",\n \"description\": \"A snippet, embed code or config in one language, edited with line numbers and highlighting.\"\n },\n \"number\": {\n \"name\": \"Number\",\n \"description\": \"Any number, with or without decimals.\"\n },\n \"integer\": {\n \"name\": \"Integer\",\n \"description\": \"Whole numbers such as counts and positions.\"\n },\n \"decimal\": {\n \"name\": \"Decimal\",\n \"description\": \"Exact decimals such as prices, stored without rounding.\"\n },\n \"biginteger\": {\n \"name\": \"Big integer\",\n \"description\": \"Whole numbers too large for a normal number.\"\n },\n \"boolean\": {\n \"name\": \"Boolean\",\n \"description\": \"Yes or no.\"\n },\n \"date\": {\n \"name\": \"Date\",\n \"description\": \"A calendar date.\"\n },\n \"datetime\": {\n \"name\": \"Date and time\",\n \"description\": \"A moment in time, stored in UTC.\"\n },\n \"time\": {\n \"name\": \"Time\",\n \"description\": \"A time of day.\"\n },\n \"enum\": {\n \"name\": \"Choice\",\n \"description\": \"One (or several) values from a fixed list.\"\n },\n \"json\": {\n \"name\": \"JSON\",\n \"description\": \"Any structured data, edited as JSON.\"\n },\n \"slug\": {\n \"name\": \"Slug\",\n \"description\": \"A URL-friendly identifier, e.g. summer-sale-2026.\"\n },\n \"email\": {\n \"name\": \"Email\",\n \"description\": \"An email address.\"\n },\n \"url\": {\n \"name\": \"URL\",\n \"description\": \"A web address or link.\"\n },\n \"uid\": {\n \"name\": \"UID\",\n \"description\": \"A URL-safe unique identifier.\"\n },\n \"media\": {\n \"name\": \"Media\",\n \"description\": \"Images, videos and files from the media library.\"\n },\n \"relation\": {\n \"name\": \"Relation\",\n \"description\": \"Links to entries of another model.\"\n },\n \"component\": {\n \"name\": \"Component\",\n \"description\": \"A reusable group of fields, once or repeated.\"\n },\n \"dynamiczone\": {\n \"name\": \"Dynamic zone\",\n \"description\": \"A list of blocks chosen from several components.\"\n }\n },\n \"builder\": {\n \"subtitle\": \"API ID {{apiKey}} · version {{version}}\",\n \"subtitleCollection\": \"API IDs {{apiKey}} · {{pluralApiKey}} · version {{version}}\",\n \"untitled\": \"Untitled\",\n \"unsaved\": \"Unsaved changes\",\n \"problems_one\": \"{{count}} problem to fix\",\n \"problems_other\": \"{{count}} problems to fix\",\n \"discard\": \"Discard changes\",\n \"discardTitle\": \"Discard your changes?\",\n \"discardDescription\": \"Your unsaved edits are lost.\",\n \"review\": \"Review\",\n \"planning\": \"Planning…\",\n \"more\": \"More actions\",\n \"delete\": \"Delete model\",\n \"deleteTitle\": \"Delete {{label}}?\",\n \"deleteDescription\": \"It leaves the API at once (a breaking change). Its entries are kept and return if it's restored.\",\n \"changeStarted\": \"Checking existing content. The change goes live when the checks pass.\",\n \"definitionSettings\": \"Model settings\",\n \"summaryLocalized\": \"Localized\",\n \"summaryNotLocalized\": \"Not localized\",\n \"summaryDrafts\": \"Drafts\",\n \"summaryNoDrafts\": \"No drafts\",\n \"fieldsTitle\": \"Fields\",\n \"fields_one\": \"{{count}} field\",\n \"fields_other\": \"{{count}} fields\",\n \"addField\": \"Add field\",\n \"newField\": \"New field\",\n \"dataType\": \"Data type\",\n \"typeAllowed\": \"You can change this.\",\n \"typeConverted\": \"Existing values will be converted when you save.\",\n \"typeChecked\": \"Existing values will be checked when you save; if any fail, the change is refused and nothing changes.\",\n \"typeKept\": \"Stored values stay as they are.\",\n \"typeBreaking\": \"API clients will see a different type for this field.\",\n \"typeDestructive\": \"Formatting is lost.\",\n \"typeDropsValues\": \"Shapio can't convert {{from}} to {{to}}. Every stored value in this field will be dropped, and old API clients will see it empty.\",\n \"noFields\": \"No fields yet.\",\n \"startTitle\": \"Start with a field\",\n \"selectField\": \"Select a field\",\n \"propertiesLabel\": \"Field properties\",\n \"fieldProperties\": \"{{label}} properties\",\n \"options\": \"Options\",\n \"reorder\": \"Reorder {{label}}\",\n \"reorderHelp\": \"Drag to reorder, or focus the handle and press the up or down arrow key.\",\n \"moved\": \"Moved {{label}} to position {{position}} of {{total}}.\",\n \"moveUp\": \"Move {{label}} up\",\n \"moveDown\": \"Move {{label}} down\",\n \"requiredBadge\": \"Required\",\n \"localizedBadge\": \"Localized\",\n \"hiddenBadge\": \"Hidden from the delivery API\",\n \"hasProblems\": \"Has problems to fix\",\n \"removeField\": \"Remove field\",\n \"general\": \"General\",\n \"helpText\": \"Help text\",\n \"apiKeyRenameWarning\": \"Changing an API ID is a breaking change: API clients using the old name stop receiving this value.\",\n \"pluralApiKeyRenameWarning\": \"Changing the plural API ID is a breaking change: API clients using the old list route and query stop working.\",\n \"settings\": \"Settings\",\n \"noSettings\": \"This data type has no settings.\",\n \"patternHint\": \"A regular expression values must match.\",\n \"sourceFieldHint\": \"The slug is suggested from this field's text.\",\n \"chooseModel\": \"Choose a model\",\n \"chooseComponent\": \"Choose a component\",\n \"noComponents\": \"No components exist yet. Create one on the Components tab.\",\n \"enumValuesHint\": \"The API stores the value; editors see the label.\",\n \"enumLabel\": \"Label of choice {{position}}\",\n \"enumValue\": \"Value of choice {{position}}\",\n \"enumLabelPlaceholder\": \"Label\",\n \"enumValuePlaceholder\": \"value\",\n \"enumRemove\": \"Remove choice {{position}}\",\n \"enumAdd\": \"Add choice\",\n \"required\": \"Required\",\n \"requiredHint\": \"Existing entries are checked first.\",\n \"unique\": \"Unique\",\n \"uniqueHint\": \"No two entries may share a value.\",\n \"defaultValue\": \"Default value\",\n \"defaultValueHint\": \"For new entries and when the field becomes required.\",\n \"booleanTrue\": \"Yes\",\n \"booleanFalse\": \"No\",\n \"editorSection\": \"Editor\",\n \"editor\": \"Editor\",\n \"editorHint\": \"Changing it never changes stored data.\",\n \"public\": \"Public\",\n \"publicHint\": \"Off: hidden from the delivery API unless a role grants it.\",\n \"publicComponentHint\": \"Off: hidden from the delivery API. Roles can't grant a component's fields.\",\n \"fieldLocalized\": \"Localized\",\n \"fieldLocalizedHint\": \"Off: one value shared by every locale.\",\n \"filterable\": \"Filterable\",\n \"indexHint\": \"Builds an index in the background.\",\n \"sortable\": \"Sortable\",\n \"deprecated\": \"Deprecated\",\n \"deprecatedHint\": \"Hidden from the API and forms; values are kept.\",\n \"content\": \"Content\",\n \"modelLocalizedHint\": \"Off keeps only the default locale's values.\",\n \"draftAndPublish\": \"Drafts and publishing\",\n \"draftAndPublishHint\": \"Off: saving publishes immediately.\",\n \"category\": \"Category\",\n \"categoryHint\": \"Groups components in pickers.\",\n \"display\": \"Display\",\n \"titleField\": \"Title field\",\n \"titleFieldHint\": \"Labels entries in lists, pickers and relations.\",\n \"sortField\": \"Default order\",\n \"sortFieldHint\": \"Only sortable fields can order the list.\",\n \"sortNewest\": \"Newest first\",\n \"sortDirection\": \"Direction\",\n \"sortAscending\": \"Ascending\",\n \"sortDescending\": \"Descending\",\n \"listColumns\": \"List columns\",\n \"automatic\": \"Automatic\",\n \"coverField\": \"Cover\",\n \"coverFieldHint\": \"The image shown above the title when an entry opens. Automatic uses the first single image field.\",\n \"canvasFields\": \"Written in the document\",\n \"canvasFieldsHint\": \"The fields written in the document under the title, in this order. Unset, rich text, sections, repeatable components and galleries are; everything else is a property. Any other field joins with Show in document in its settings.\",\n \"placement\": {\n \"label\": \"Show in document\",\n \"hint\": \"On, entries show this field in the document under its name, among the blocks. Off, it is a property, in the strip under the title and the Settings panel. Automatically, rich text, sections, repeatable components and galleries are in the document and everything else is a property.\",\n \"lockedTitle\": \"The title is the document's heading.\",\n \"lockedCover\": \"This is the cover, chosen in Display.\",\n \"lockedLast\": \"The document keeps at least one field.\"\n },\n \"stripFields\": \"Properties under the title\",\n \"stripFieldsHint\": \"Shown as chips under the title. With none chosen, the first five filled-in properties are shown.\",\n \"layout\": \"Layout\",\n \"layoutHint\": \"Document: an entry opens as a page to write in, with the title as its heading, blocks in the body, and the other fields as properties. Form: every field is on the page at its width, with groups as sections.\",\n \"layoutDocument\": \"Document\",\n \"layoutForm\": \"Form\",\n \"formWireframe_one\": \"Form preview: {{count}} field\",\n \"formWireframe_other\": \"Form preview: {{count}} fields\",\n \"width\": \"Width\",\n \"widthHint\": \"How much of a row the field takes in the form. Rows fill in field order, so two halves or three thirds sit side by side.\",\n \"widthFull\": \"Full\",\n \"widthTwoThirds\": \"Two thirds\",\n \"widthHalf\": \"Half\",\n \"widthThird\": \"Third\",\n \"summaryForm\": \"Form\",\n \"group\": \"Group\",\n \"groupHint\": \"Fields in the same group are shown together under its name, as a section of the form. A group sits where its first field is.\",\n \"groupNone\": \"None\",\n \"groupNew\": \"New group…\",\n \"groupName\": \"Group name\",\n \"groups\": \"Groups\",\n \"groupsHint\": \"Rename a group here, or remove it to take its fields out of it. Put a field in a group from the field's settings.\",\n \"groupsEmpty\": \"No groups yet. Choose one in a field's settings.\",\n \"groupLabel\": \"Name of group {{position}}\",\n \"groupRemove\": \"Remove group {{label}}\"\n },\n \"plan\": {\n \"title\": \"Review changes to {{label}}\",\n \"summary\": {\n \"metadata\": \"Only metadata changes: applied instantly, and the API doesn't change.\",\n \"live\": \"These changes go live immediately. Existing content stays valid.\",\n \"prerequisites\": \"Existing content is checked first. The current version stays live until the checks pass, then the new one activates.\",\n \"breaking\": \"This breaks the API contract or removes data. Review it and confirm below.\"\n },\n \"buckets\": {\n \"metadata\": \"Metadata only\",\n \"live\": \"Live\",\n \"prerequisites\": \"Needs checks\",\n \"breaking\": \"Breaking\"\n },\n \"affected_one\": \"{{count}} entry version affected (all locales and states)\",\n \"affected_other\": \"{{count}} entry versions affected (all locales and states)\",\n \"changes_one\": \"{{count}} change\",\n \"changes_other\": \"{{count}} changes\",\n \"prerequisites\": \"Prerequisites\",\n \"prerequisitesHint\": \"They run before the new version activates.\",\n \"followUps\": \"After activation\",\n \"stepEntries_one\": \"{{count}} entry version to check\",\n \"stepEntries_other\": \"{{count}} entry versions to check\",\n \"stepInvalid_one\": \"{{count}} entry ({{versions}}) would fail\",\n \"stepInvalid_other\": \"{{count}} entries ({{versions}}) would fail\",\n \"stepMissingRequired_one\": \"{{count}} entry ({{versions}}) would be left without a required value; untick Required or set a default\",\n \"stepMissingRequired_other\": \"{{count}} entries ({{versions}}) would be left without a required value; untick Required or set a default\",\n \"stepVersions_one\": \"{{count}} version\",\n \"stepVersions_other\": \"{{count}} versions\",\n \"blockedByCheck\": \"A check above already fails, so this can't ship. Fix it in the builder first.\",\n \"stepDropped_one\": \"{{field}}: {{from}} → {{to}}, {{count}} entry loses its value\",\n \"stepDropped_other\": \"{{field}}: {{from}} → {{to}}, {{count}} entries lose their value\",\n \"acknowledge\": \"Confirm this change\",\n \"acknowledgeBreaking\": \"I understand this changes the API contract: sites and apps using the old shape must be updated.\",\n \"acknowledgeDestructive\": \"I understand stored data will be converted or removed, and a schema rollback can't restore it.\",\n \"apply\": \"Ship now\",\n \"applying\": \"Shipping…\"\n },\n \"changes\": {\n \"definitionAdded\": \"Create {{name}}\",\n \"definitionRemoved\": \"Delete {{name}}\",\n \"definitionApiKey\": \"Change the API ID from {{from}} to {{to}}\",\n \"definitionPluralApiKey\": \"Change the plural API ID from {{from}} to {{to}}\",\n \"definitionMetadata\": \"Change the {{property}}\",\n \"modelKind\": \"Change the kind from {{from}} to {{to}}\",\n \"modelLocalized_on\": \"Localize this model's content\",\n \"modelLocalized_off\": \"Stop localizing: only the default locale's values are kept\",\n \"modelDraftAndPublish_on\": \"Turn on drafts and publishing\",\n \"modelDraftAndPublish_off\": \"Turn off drafts and publishing: unpublished drafts are discarded\",\n \"modelExtends\": \"Change the type this extends\",\n \"modelExtends_added\": \"Make this a kind of {{to}}\",\n \"modelExtends_removed\": \"Stop being a kind of {{from}}: it becomes a type of its own\",\n \"modelExtends_moved\": \"Move this from {{from}} to {{to}}\",\n \"fieldAdded\": \"Add the field {{field}} ({{type}})\",\n \"fieldRemoved\": \"Remove the field {{field}} (stored values are kept)\",\n \"fieldOrder\": \"Reorder the fields\",\n \"fieldApiKey\": \"Change the API ID of {{field}} from {{from}} to {{to}}\",\n \"fieldMetadata\": \"Change the {{property}} of {{field}}\",\n \"fieldEditor\": \"Change the editor of {{field}}\",\n \"fieldType\": \"Change the type of {{field}} from {{from}} to {{to}}\",\n \"fieldTypeDropped\": \"Change the type of {{field}} from {{from}} to {{to}} and drop its stored values\",\n \"fieldRequired_on\": \"Make {{field}} required\",\n \"fieldRequired_off\": \"Make {{field}} optional\",\n \"fieldLocalized_on\": \"Localize {{field}}\",\n \"fieldLocalized_off\": \"Share {{field}} across locales: only the default locale's value is kept\",\n \"fieldPublic_on\": \"Show {{field}} in the delivery API\",\n \"fieldPublic_off\": \"Hide {{field}} from the delivery API\",\n \"fieldDeprecated_on\": \"Deprecate {{field}}\",\n \"fieldDeprecated_off\": \"Restore {{field}}\",\n \"fieldUnique_on\": \"Require unique values for {{field}}\",\n \"fieldUnique_off\": \"Allow duplicate values for {{field}}\",\n \"fieldFilterable_on\": \"Allow filtering on {{field}}\",\n \"fieldFilterable_off\": \"Stop filtering on {{field}}\",\n \"fieldSortable_on\": \"Allow sorting on {{field}}\",\n \"fieldSortable_off\": \"Stop sorting on {{field}}\",\n \"fieldSettings\": \"Change the {{property}} setting of {{field}}\"\n },\n \"steps\": {\n \"validateRequired\": \"Check that every entry has a value for {{field}}\",\n \"backfill\": \"Fill {{field}} with its default value where it is empty\",\n \"validateValues\": \"Check existing values against the new rules\",\n \"checkUnique\": \"Check that values of {{field}} are unique\",\n \"convert\": \"Convert stored values\",\n \"buildIndex\": \"Build the filter and sort index for {{field}}\",\n \"dropIndex\": \"Drop an index that is no longer used\",\n \"releaseUnique\": \"Release the unique values of {{field}}\",\n \"purgeLocale\": \"Remove the deleted locale's content\"\n },\n \"progress\": {\n \"runningTitle\": \"Applying your change\",\n \"runningDescription\": \"The current version stays live until the checks pass.\",\n \"failedTitle\": \"The change didn't go live\",\n \"failedDescription\": \"Existing content doesn't fit, so the previous version stays active.\",\n \"invalidCount_one\": \"{{count}} entry version doesn't fit.\",\n \"invalidCount_other\": \"{{count}} entry versions don't fit.\"\n },\n \"remote\": {\n \"title\": \"This model changed in another session\",\n \"description\": \"A newer version is active. Reload to see it.\",\n \"chooseDescription\": \"A newer version is active. Take it, or keep your edits on top of it and review again.\",\n \"reload\": \"Reload\",\n \"reloadLatest\": \"Reload latest (discard my edits)\",\n \"keepEdits\": \"Keep my edits\"\n },\n \"formats\": {\n \"date\": \"Format: 2026-12-31\",\n \"datetime\": \"Format: 2026-12-31T09:30:00Z (UTC)\",\n \"time\": \"Format: 09:30 or 09:30:00\",\n \"decimal\": \"A decimal number, e.g. 19.99\",\n \"biginteger\": \"A whole number, e.g. 9007199254740993\"\n },\n \"properties\": {\n \"label\": \"label\",\n \"description\": \"description\",\n \"display\": \"display settings\",\n \"category\": \"category\",\n \"icon\": \"icon\",\n \"defaultValue\": \"default value\",\n \"minLength\": \"Minimum length\",\n \"maxLength\": \"Maximum length\",\n \"pattern\": \"Pattern\",\n \"language\": \"Language\",\n \"validate\": \"Require valid JSON\",\n \"min\": \"Minimum\",\n \"max\": \"Maximum\",\n \"precision\": \"Precision (digits)\",\n \"scale\": \"Scale (digits after the point)\",\n \"values\": \"Choices\",\n \"multiple\": \"Allow several\",\n \"sourceFieldId\": \"Generate from\",\n \"protocols\": \"Allowed protocols\",\n \"allowedKinds\": \"Allowed media kinds\",\n \"target\": \"Target model\",\n \"cardinality\": \"Cardinality\",\n \"component\": \"Component\",\n \"repeatable\": \"Repeatable\",\n \"components\": \"Allowed components\",\n \"placeholder\": \"Placeholder\",\n \"rows\": \"Rows\",\n \"format\": \"Format\",\n \"presets\": \"Preset colors\",\n \"toolbar\": \"Toolbar\",\n \"step\": \"Step\",\n \"trueLabel\": \"Label for yes\",\n \"falseLabel\": \"Label for no\",\n \"layout\": \"Layout\",\n \"stepMinutes\": \"Minute step\",\n \"allowInlineCreate\": \"Allow creating entries from the picker\",\n \"collapsed\": \"Start collapsed\",\n \"width\": \"width\"\n },\n \"values\": {\n \"one\": \"One entry\",\n \"many\": \"Many entries\",\n \"http\": \"http\",\n \"https\": \"https\",\n \"mailto\": \"mailto\",\n \"tel\": \"tel\",\n \"image\": \"Images\",\n \"video\": \"Videos\",\n \"audio\": \"Audio\",\n \"document\": \"Documents\",\n \"other\": \"Other files\",\n \"hex\": \"Hex\",\n \"rgb\": \"RGB\",\n \"full\": \"Full\",\n \"minimal\": \"Minimal\",\n \"vertical\": \"Vertical\",\n \"horizontal\": \"Horizontal\",\n \"local\": \"Local time\",\n \"utc\": \"UTC\",\n \"plain\": \"Plain text\",\n \"html\": \"HTML\",\n \"css\": \"CSS\",\n \"javascript\": \"JavaScript\",\n \"json\": \"JSON\",\n \"yaml\": \"YAML\",\n \"markdown\": \"Markdown\"\n },\n \"editors\": {\n \"textInput\": \"Text input\",\n \"textarea\": \"Text area\",\n \"color\": \"Color picker\",\n \"richText\": \"Rich-text editor\",\n \"numberInput\": \"Number input\",\n \"toggle\": \"Toggle\",\n \"checkbox\": \"Checkbox\",\n \"segmented\": \"Segmented control\",\n \"select\": \"Dropdown\",\n \"radio\": \"Radio buttons\",\n \"checkboxGroup\": \"Checkboxes\",\n \"datePicker\": \"Date picker\",\n \"dateTimePicker\": \"Date and time picker\",\n \"timePicker\": \"Time picker\",\n \"slugInput\": \"Slug input\",\n \"jsonEditor\": \"JSON editor\",\n \"codeEditor\": \"Code editor\",\n \"mediaPicker\": \"Media picker\",\n \"relationPicker\": \"Relation picker\",\n \"componentEditor\": \"Component editor\",\n \"dynamicZoneEditor\": \"Dynamic zone editor\",\n \"seoEditor\": \"SEO editor\"\n },\n \"issues\": {\n \"INVALID_STRUCTURE\": \"This value isn't valid.\",\n \"INVALID_ID\": \"Choose a valid target.\",\n \"DUPLICATE_ID\": \"Another field has the same ID.\",\n \"API_KEY_INVALID\": \"Use letters, digits and _, not starting with a digit.\",\n \"API_KEY_TOO_LONG\": \"Use at most 64 characters.\",\n \"API_KEY_RESERVED_PREFIX\": \"API IDs can't start with \\\"__\\\" (reserved by GraphQL).\",\n \"API_KEY_RESERVED\": \"This name is reserved. Choose another.\",\n \"API_KEY_COLLISION\": \"Another one already uses this API ID (IDs are case-insensitive).\",\n \"PLURAL_API_KEY_SAME_AS_SINGULAR\": \"The plural API ID must differ from the API ID.\",\n \"GENERATED_NAME_COLLISION\": \"This name would clash with a GraphQL name another model already generates.\",\n \"INVALID_SETTINGS\": \"This setting isn't valid.\",\n \"INVALID_RANGE\": \"The minimum is greater than the maximum.\",\n \"INVALID_PATTERN\": \"This isn't a valid regular expression.\",\n \"DUPLICATE_ENUM_VALUE\": \"This value is listed twice.\",\n \"INVALID_ENUM_VALUE\": \"Use letters, digits and _, not starting with a digit (and not true, false or null).\",\n \"UNSUPPORTED_FLAG\": \"This option isn't available for this field.\",\n \"INVALID_DEFAULT_VALUE\": \"The default value doesn't fit this field's rules.\",\n \"UNKNOWN_EDITOR\": \"This editor isn't installed.\",\n \"INCOMPATIBLE_EDITOR\": \"This editor can't edit this field.\",\n \"INVALID_EDITOR_OPTIONS\": \"This editor option isn't valid.\",\n \"UNKNOWN_FIELD_REFERENCE\": \"This refers to a field that doesn't exist.\",\n \"INVALID_FIELD_REFERENCE\": \"This field can't be used here.\",\n \"DUPLICATE_GROUP\": \"Another group has the same ID.\",\n \"UNKNOWN_REFERENCE\": \"This refers to a model or component that doesn't exist.\",\n \"INVALID_REFERENCE_TARGET\": \"This kind of model or component can't be used here.\",\n \"COMPONENT_CYCLE\": \"Components can't contain themselves, directly or through others.\",\n \"COMPONENT_TOO_DEEP\": \"Components are nested too deeply.\",\n \"REFERENCED_DEFINITION\": \"Another model still references this one. Remove the reference first.\",\n \"UNKNOWN_PARENT\": \"The type it extends doesn't exist.\",\n \"INVALID_PARENT\": \"Only a collection can extend another, and only one available in the same place (this site or all sites).\",\n \"INHERITANCE_CYCLE\": \"Types can't extend each other in a circle.\",\n \"INHERITANCE_TOO_DEEP\": \"A family can have at most 8 levels of types.\",\n \"INHERITED_FLAG_MISMATCH\": \"A kind must match the type it extends here.\",\n \"INHERITED_FIELD_COLLISION\": \"The type it extends already has a field with this API ID (IDs are case-insensitive).\",\n \"HAS_CHILDREN\": \"Other types extend this one. Delete them or move them under another type first.\",\n \"apiKeyTakenOnSite\": \"Already used on {{site}}.\",\n \"choicesEmpty\": \"Add at least one choice.\",\n \"choiceValue\": \"Give every choice a value of up to 64 characters.\",\n \"choiceLabel\": \"Give every choice a label of up to 200 characters.\"\n },\n \"scope\": {\n \"onlyOn\": \"Only on {{site}}\",\n \"share\": \"Share with all sites\",\n \"keep\": \"Keep on this site\",\n \"shareTitle\": \"Share {{label}} with all sites?\",\n \"shareDescription\": \"Every site gets it, each with its own content.\",\n \"keepTitle\": \"Keep {{label}} on {{site}} only?\",\n \"keepDescription\": \"Other sites lose it. Refused while another site has entries of it.\",\n \"blocked\": \"Save or discard your changes first.\",\n \"shared\": \"Shared with all sites.\",\n \"kept\": \"Now only on this site.\",\n \"readOnly\": \"Shared with all sites: changing it needs a role on every site.\"\n },\n \"inheritance\": {\n \"extends\": \"Extends\",\n \"extendsHint\": \"Makes it a kind of another collection: it gets that type's fields, locked, and adds its own. Its API path nests under the parent's, as in /api/content/posts/guides.\",\n \"noParent\": \"Nothing (a type of its own)\",\n \"noCollections\": \"No collection here to extend yet.\",\n \"reparentWarning\": \"Moving it under another type changes its API: reviewed as a breaking change.\",\n \"flagsFollowParent\": \"Same as {{model}}: a kind follows the type it extends.\",\n \"flagsSharedWithKinds_one\": \"Its kind has the same setting, so it can't change here.\",\n \"flagsSharedWithKinds_other\": \"Its {{count}} kinds have the same setting, so it can't change here.\",\n \"extendsSummary\": \"Kind of {{model}}\",\n \"locked\": \"Inherited: locked\",\n \"inheritedFrom\": \"Inherited from {{model}}\",\n \"inheritedFromLink\": \"Inherited from <modelLink>{{model}}</modelLink>\",\n \"fieldLocked\": \"Inherited from <modelLink>{{model}}</modelLink>. Change it there: a kind adds fields, it never changes inherited ones.\",\n \"ownFields\": \"Its own fields\",\n \"noOwnFields\": \"No fields of its own yet.\",\n \"hasKinds_one\": \"Has {{count}} kind\",\n \"hasKinds_other\": \"Has {{count}} kinds\",\n \"scopeFollowsParent\": \"A kind is available where its family is. Change it on {{model}}.\",\n \"scopeCascades_one\": \"Its kind moves with it.\",\n \"scopeCascades_other\": \"Its {{count}} kinds move with it.\",\n \"appliesToKinds_one\": \"Also applies to {{count}} kind\",\n \"appliesToKinds_other\": \"Also applies to {{count}} kinds\",\n \"appliesToKindsNamed_one\": \"Also applies to {{names}}\",\n \"appliesToKindsNamed_other\": \"Also applies to {{count}} kinds: {{names}}\",\n \"stepOnKind\": \"{{kind}}: {{sentence}}\"\n }\n },\n \"media\": {\n \"title\": \"Media\",\n \"assetsLabel_one\": \"{{count}} file\",\n \"assetsLabel_other\": \"{{count}} files\",\n \"openDetails\": \"Open {{name}}\",\n \"select\": \"Select {{name}}\",\n \"selection\": \"Selection\",\n \"selectedCount_one\": \"{{count}} file selected\",\n \"selectedCount_other\": \"{{count}} files selected\",\n \"clearSelection\": \"Clear selection\",\n \"search\": \"Search media\",\n \"searchPlaceholder\": \"Search by name, alt text or caption\",\n \"typeFilter\": \"File type\",\n \"view\": \"View\",\n \"viewGrid\": \"Grid view\",\n \"viewList\": \"List view\",\n \"loadMore\": \"Load more\",\n \"empty\": \"No media yet\",\n \"emptyFiltered\": \"Nothing matches these filters\",\n \"emptyFolder\": \"This folder is empty\",\n \"dimensions\": \"{{width}} × {{height}}\",\n \"types\": {\n \"all\": \"All types\",\n \"image\": \"Images\",\n \"video\": \"Video\",\n \"audio\": \"Audio\",\n \"pdf\": \"PDFs\"\n },\n \"status\": {\n \"processing\": \"Processing\",\n \"pending\": \"Pending\",\n \"ready\": \"Ready\",\n \"failed\": \"Failed\"\n },\n \"fields\": {\n \"filename\": \"File name\",\n \"type\": \"Type\",\n \"size\": \"Size\",\n \"status\": \"Status\",\n \"uploaded\": \"Uploaded\",\n \"alt\": \"Alt text\",\n \"caption\": \"Caption\"\n },\n \"folders\": {\n \"title\": \"Folders\",\n \"all\": \"All media\",\n \"unfiled\": \"Not in a folder\",\n \"none\": \"No folder\",\n \"new\": \"New folder\",\n \"newSubfolder\": \"New subfolder\",\n \"rename\": \"Rename\",\n \"actions\": \"Actions for {{name}}\",\n \"newName\": \"Name of the new folder\",\n \"renameLabel\": \"New name for “{{name}}”\",\n \"create\": \"Create folder\",\n \"saveName\": \"Save name\",\n \"created\": \"Folder “{{name}}” created\",\n \"renamed\": \"Folder renamed to “{{name}}”\",\n \"deleted\": \"Folder “{{name}}” deleted\",\n \"deleteTitle\": \"Delete “{{name}}”?\",\n \"deleteDescription\": \"Only empty folders can be deleted.\"\n },\n \"move\": {\n \"action\": \"Move to…\",\n \"title_one\": \"Move {{count}} file\",\n \"title_other\": \"Move {{count}} files\",\n \"done_one\": \"Moved {{count}} file\",\n \"done_other\": \"Moved {{count}} files\"\n },\n \"upload\": {\n \"action\": \"Upload\",\n \"dropHere\": \"Drop files to upload\",\n \"queueTitle\": \"Uploads\",\n \"summary\": \"{{active}} in progress, {{failed}} failed\",\n \"clearFinished\": \"Clear finished\",\n \"doneSummary_one\": \"{{count}} uploaded\",\n \"doneSummary_other\": \"{{count}} uploaded\",\n \"showFinished\": \"Show finished uploads\",\n \"hideFinished\": \"Hide finished uploads\",\n \"uploading\": \"Uploading… {{percent}}%\",\n \"checking\": \"Checking the file…\",\n \"done\": \"Uploaded\",\n \"progress\": \"Upload progress of {{name}}\",\n \"retry\": \"Retry {{name}}\",\n \"dismiss\": \"Dismiss {{name}}\",\n \"transferFailed\": \"The storage refused the file (status {{status}}).\",\n \"unreachable\": \"The upload could not reach the storage. Check your connection and the bucket’s CORS settings.\",\n \"replaced\": \"Replaced the file with {{name}}\"\n },\n \"details\": {\n \"title\": \"File details\",\n \"metadata\": \"Details\",\n \"formLabel\": \"File details\",\n \"altHint\": \"What the image shows\",\n \"saved\": \"Details saved\",\n \"replace\": \"Replace file\",\n \"openFile\": \"Open file\",\n \"previewOf\": \"Preview of {{name}}\",\n \"signedLinkNote\": \"This file is private: copied links work for one hour.\"\n },\n \"focal\": {\n \"title\": \"Focal point\",\n \"hint\": \"The part of the image that crops keep in view. Click the image to set it.\",\n \"x\": \"Horizontal (%)\",\n \"y\": \"Vertical (%)\",\n \"unset\": \"Center\",\n \"clear\": \"Clear\"\n },\n \"visibility\": {\n \"title\": \"Visibility\",\n \"private\": \"Private\",\n \"privateLabel\": \"Private\",\n \"publicExplanation\": \"Anyone with the link can open it.\",\n \"privateExplanation\": \"Opens only through signed links that expire.\",\n \"needsManage\": \"Needs the media manage permission.\",\n \"makePrivateTitle\": \"Make this file private?\",\n \"makePrivateDescription\": \"Its public link stops working at once.\",\n \"makePublicTitle\": \"Make this file public?\",\n \"makePublicDescription\": \"Anyone with its link can open it.\",\n \"makePrivate\": \"Make private\",\n \"makePublic\": \"Make public\",\n \"changed\": \"Visibility changed\"\n },\n \"variants\": {\n \"title\": \"Sizes\",\n \"thumbnail\": \"Thumbnail\",\n \"w640\": \"640 px wide\",\n \"w1280\": \"1280 px wide\",\n \"w1920\": \"1920 px wide\",\n \"processing\": \"Sizes are being made…\",\n \"none\": \"No other sizes: only images get them.\"\n },\n \"usage\": {\n \"title\": \"Used in\",\n \"none\": \"Not used in any content.\",\n \"count_one\": \"Used by {{count}} entry version.\",\n \"count_other\": \"Used by {{count}} entry versions.\",\n \"hidden\": \"An entry you can't open\",\n \"draft\": \"Draft\",\n \"published\": \"Published\"\n },\n \"delete\": {\n \"action\": \"Delete file\",\n \"title\": \"Delete “{{name}}”?\",\n \"description\": \"The file and its sizes are removed for good.\",\n \"done\": \"Deleted {{name}}\",\n \"inUseTitle\": \"This file is in use\",\n \"inUseDescription_one\": \"{{count}} entry version still uses it.\",\n \"inUseDescription_other\": \"{{count}} entry versions still use it.\",\n \"ownerMayForce\": \"Deleting it anyway leaves those entries pointing at a missing file.\",\n \"onlyOwners\": \"Remove it from that content first, or ask an owner.\",\n \"force\": \"Delete anyway\"\n }\n },\n \"entry\": {\n \"shortcutHint\": \"{{action}} ({{keys}})\",\n \"layout\": {\n \"setTitle\": \"Layout of {{model}}\",\n \"switchedForm\": \"{{model}} now opens as a form.\",\n \"switchedDocument\": \"{{model}} now opens as a document.\",\n \"undo\": \"Undo\",\n \"switchLabel\": \"Open as a form\",\n \"needsReview\": \"This change needs a review. Make it in Structure.\"\n },\n \"title\": {\n \"placeholder\": \"{{field}}\"\n },\n \"canvas\": {\n \"label\": \"Content\",\n \"placeholder\": \"Write, or press / for blocks\"\n },\n \"blocks\": {\n \"menu\": \"Blocks\",\n \"addBlock\": \"Add a block, or just keep writing\",\n \"addAfter\": \"Add a block below\",\n \"addBetween\": \"Add a block here ({{fields}})\",\n \"insertAt\": \"Add a block at position {{position}}\",\n \"addFiles\": \"Add files to {{field}}\",\n \"drag\": \"Move this block\",\n \"dragHint\": \"Drag to move, or click and press ⌥↑ / ⌥↓\",\n \"dragItem\": \"Drag {{item}} (item {{position}}) to move it\",\n \"groupWrite\": \"Write\",\n \"groupMedia\": \"Media\",\n \"groupComponents\": \"Your components\",\n \"groupIn\": \"{{group}} · {{field}}\",\n \"paragraph\": \"Paragraph\",\n \"heading\": \"Heading\",\n \"subheading\": \"Subheading\",\n \"quote\": \"Quote\",\n \"bulletList\": \"Bulleted list\",\n \"orderedList\": \"Numbered list\",\n \"code\": \"Code\",\n \"divider\": \"Divider\",\n \"image\": \"Image\",\n \"imageHint\": \"From the library, or drop a file\",\n \"table\": \"Table\"\n },\n \"image\": {\n \"caption\": \"Caption\",\n \"captionPlaceholder\": \"Add a caption\"\n },\n \"upload\": {\n \"uploading\": \"Uploading {{name}}…\",\n \"uploadingCount_one\": \"Uploading {{count}} file…\",\n \"uploadingCount_other\": \"Uploading {{count}} files…\",\n \"failed\": \"Couldn't upload {{name}}. Try again, or add it from the media library.\"\n },\n \"gallery\": {\n \"addOrDrop\": \"Add files, or drop them here\"\n },\n \"cover\": {\n \"add\": \"Add {{field}}\",\n \"addOrDrop\": \"Add {{field}}, or drop an image here\",\n \"replace\": \"Replace\",\n \"details\": \"Alt text and focal point\",\n \"remove\": \"Remove\"\n },\n \"properties\": {\n \"title\": \"Properties\",\n \"empty\": \"Empty\",\n \"more_one\": \"+{{count}} more\",\n \"more_other\": \"+{{count}} more\",\n \"add_one\": \"Add {{count}} property\",\n \"add_other\": \"Add {{count}} properties\",\n \"andMore_one\": \"{{list}} and {{count}} more\",\n \"andMore_other\": \"{{list}} and {{count}} more\",\n \"items_one\": \"{{count}} item\",\n \"items_other\": \"{{count}} items\"\n },\n \"presence\": {\n \"label\": \"Also editing: {{names}}\",\n \"youElsewhere\": \"you, in another tab\"\n },\n \"remoteChange\": {\n \"by\": \"Changed by {{name}} {{when}}. Reload to see it.\",\n \"byYou\": \"Changed by you elsewhere {{when}}. Reload to see it.\",\n \"unknown\": \"Changed {{when}}. Reload to see it.\",\n \"short\": \"Changed elsewhere\",\n \"momentAgo\": \"a moment ago\",\n \"reload\": \"Reload\"\n },\n \"palette\": {\n \"switchLocale\": \"Switch to {{locale}}\"\n },\n \"settings\": {\n \"open\": \"Settings\",\n \"title\": \"Entry settings\",\n \"status\": \"Status\",\n \"now\": \"Now\",\n \"liveSince\": \"Live since\",\n \"startLocale\": \"Start {{locale}}\",\n \"cover\": \"{{field}}\",\n \"allVersions\": \"All versions and compare\",\n \"danger\": \"Danger zone\",\n \"unpublishTitle\": \"Unpublish this locale?\",\n \"unpublishDescription\": \"It stops being served by the API. The draft stays.\"\n },\n \"changeKind\": {\n \"title\": \"Change kind\",\n \"hint\": \"Moves the entry to another kind of the same type. Its API path changes, and the values of fields the new kind doesn't have are removed from every locale. History keeps the old versions.\",\n \"placeholder\": \"Choose a kind\",\n \"saveFirst\": \"Save your changes first.\",\n \"noTargets\": \"You can't create entries of the other kinds.\",\n \"drops_one\": \"Removes the value of {{fields}}.\",\n \"drops_other\": \"Removes the values of {{fields}}.\",\n \"dropsNothing\": \"Every value is kept.\",\n \"action\": \"Change to {{kind}}\",\n \"confirmTitle\": \"Change “{{entry}}” to {{kind}}?\",\n \"confirmDrops_one\": \"Its API path changes, and the value of {{fields}} is removed from every locale. History keeps the old versions.\",\n \"confirmDrops_other\": \"Its API path changes, and the values of {{fields}} are removed from every locale. History keeps the old versions.\",\n \"confirmKeeps\": \"Its API path changes. Every value is kept.\",\n \"acknowledge_one\": \"Remove this field's value\",\n \"acknowledge_other\": \"Remove these {{count}} fields' values\",\n \"confirm\": \"Change kind\",\n \"pending\": \"Changing…\",\n \"done\": \"Changed to {{kind}}.\"\n },\n \"preflight\": {\n \"title\": \"Ready to publish?\",\n \"description\": \"It goes live as soon as you publish.\",\n \"checks\": \"Checks\",\n \"allClear\": \"Everything is ready.\",\n \"error\": \"Needs fixing:\",\n \"warning\": \"Worth a look:\",\n \"warningHint\": \"You can publish anyway.\",\n \"fix\": \"Fix\",\n \"schedule\": \"Schedule…\",\n \"scheduleAt\": \"Publish at\",\n \"scheduleConfirm\": \"Schedule\",\n \"scheduledToast\": \"Scheduled to publish {{time}}.\",\n \"notYet\": \"Not yet\",\n \"publishNow\": \"Publish now\",\n \"rules\": {\n \"requiredEmpty\": \"{{field}} is empty, and it's required.\",\n \"invalid\": \"{{field}}: {{problem}}\",\n \"mediaMissing\": \"A file in {{field}} is no longer in the media library.\",\n \"altMissing\": \"An image in {{field}} has no alt text, so people using screen readers won't know what it shows.\",\n \"localeMissing\": \"There is no {{locale}} version to publish yet.\",\n \"localeNotStarted\": \"{{locale}} hasn't been started. This publishes the current locale only.\",\n \"relationMissing\": \"{{field}} links to an entry that no longer exists.\",\n \"relationUnpublished\": \"{{field}} links to an entry that isn't published, so the site won't show it.\",\n \"uniqueConflict\": \"Another published entry already uses this {{field}}.\",\n \"staleDraft_one\": \"This draft hasn't changed in {{days}} day.\",\n \"staleDraft_other\": \"This draft hasn't changed in {{days}} days.\",\n \"unpublishedChanges_one\": \"These changes have waited {{days}} day to be published.\",\n \"unpublishedChanges_other\": \"These changes have waited {{days}} days to be published.\"\n },\n \"descriptionLocale\": \"{{locale}} goes live as soon as you publish. Other locales stay as they are.\"\n },\n \"noFields\": {\n \"title\": \"Nothing to write here yet\",\n \"ask\": \"This content type has no fields. Ask someone who manages its structure to add some.\",\n \"addFields\": \"Add fields\"\n },\n \"changeSet\": {\n \"add\": \"Add to change set…\",\n \"title\": \"Publish when a change set ships\",\n \"openSets\": \"Open change sets\",\n \"none\": \"No open change sets yet.\",\n \"newTitle\": \"New change set\",\n \"added\": \"Added to “{{title}}”. It goes live when the set ships.\",\n \"open\": \"Open\"\n },\n \"preview\": {\n \"frameTitle\": \"Preview of {{title}} on {{site}}\",\n \"site\": \"Site\",\n \"reload\": \"Reload the preview\",\n \"openInTab\": \"Open in a new tab\",\n \"showDocument\": \"Document\",\n \"close\": \"Close the preview\",\n \"noUrlTitle\": \"This connection has no preview URL\",\n \"noUrlDescription\": \"Add one to the deployment connection, or pick another site.\",\n \"notFramableTitle\": \"This site opens in a new tab\",\n \"notFramableDescription\": \"Its preview URL changes host with the entry or locale, so it can't be shown beside the document.\",\n \"blockedTitle\": \"Reload the admin to show this site\",\n \"blockedDescription\": \"The site was connected after the admin was loaded.\",\n \"reloadAdmin\": \"Reload the admin\",\n \"sdkMissingTitle\": \"The site isn't using @shapio/visual yet\",\n \"sdkMissingDescription\": \"The preview reloads after each save. With @shapio/visual, clicking part of the page takes you to its field.\",\n \"setupGuide\": \"How to set it up\",\n \"otherEntry\": \"That part of the page belongs to another entry.\",\n \"otherLocale\": \"That part of the page is in {{locale}}.\",\n \"unknownField\": \"That part of the page isn't a field of this entry.\"\n }\n },\n \"content\": {\n \"title\": \"Content\",\n \"untitled\": \"Untitled\",\n \"empty\": {\n \"title\": \"No models yet\",\n \"action\": \"Create a model\"\n },\n \"missingModel\": {\n \"title\": \"There is no model “{{key}}”\",\n \"back\": \"Back to content\"\n },\n \"status\": {\n \"draft\": \"Draft\",\n \"published\": \"Published\",\n \"modified\": \"Changed\"\n },\n \"scope\": {\n \"localized\": \"Localized\",\n \"shared\": \"Shared\",\n \"sharedHint\": \"One value for every locale. Saving it updates every locale's draft.\"\n },\n \"actions\": {\n \"publish\": \"Publish\",\n \"published\": \"Published\",\n \"unpublish\": \"Unpublish\",\n \"duplicate\": \"Duplicate\",\n \"delete\": \"Delete entry\"\n },\n \"list\": {},\n \"filters\": {\n \"operators\": {\n \"eq\": \"is\",\n \"ne\": \"is not\",\n \"in\": \"is one of\",\n \"nin\": \"is none of\",\n \"lt\": \"is less than\",\n \"lte\": \"is at most\",\n \"gt\": \"is greater than\",\n \"gte\": \"is at least\",\n \"contains\": \"contains (case-sensitive)\",\n \"notContains\": \"does not contain\",\n \"containsi\": \"contains\",\n \"startsWith\": \"starts with\",\n \"endsWith\": \"ends with\",\n \"null\": \"is empty\",\n \"notNull\": \"is not empty\"\n }\n },\n \"locales\": {\n \"label\": \"Locale\",\n \"statuses\": \"Status per locale\",\n \"notCreated\": \"Not created\",\n \"copyFrom\": \"Copy from {{locale}}\",\n \"copyTitle\": \"Replace localized values with {{locale}}?\",\n \"copyDescription\": \"Localized fields get the default locale's values. Nothing is saved until you save.\",\n \"copyConfirm\": \"Copy values\",\n \"copiedToast\": \"Localized values copied. Review them, then save.\",\n \"missing\": \"This entry has no {{locale}} version yet. Fill in the localized fields and save to create it.\"\n },\n \"save\": {\n \"saving\": \"Saving…\",\n \"failed\": \"Couldn't save. Your changes are still here.\",\n \"unsaved\": \"Unsaved changes\",\n \"autosavedAt\": \"Draft autosaved {{time}}\",\n \"savedAt\": \"Saved {{time}}\",\n \"autosaved\": \"Draft autosaved\",\n \"saved\": \"Saved\",\n \"draftAutosaved\": \"Draft has autosaved changes\",\n \"allSaved\": \"All changes saved\"\n },\n \"form\": {\n \"newTitle\": \"New {{model}}\",\n \"create\": \"Create\",\n \"creating\": \"Creating…\",\n \"createLocale\": \"Create {{locale}} version\",\n \"save\": \"Save\",\n \"preview\": \"Preview\",\n \"previewUnavailable\": \"Preview needs a deployment connection with a preview URL.\",\n \"created\": \"Created\",\n \"updated\": \"Updated\",\n \"notPublished\": \"Not published\",\n \"fixProblems_one\": \"{{count}} field needs attention before this can be saved.\",\n \"fixProblems_other\": \"{{count}} fields need attention before this can be saved.\",\n \"createdToast\": \"Entry created.\",\n \"publishedToast\": \"Published.\",\n \"publishedOthersToast_one\": \"Published {{count}} more locale.\",\n \"publishedOthersToast_other\": \"Published {{count}} more locales.\",\n \"unpublishedToast\": \"Unpublished. It is no longer served by the API.\",\n \"deletedToast\": \"Entry deleted.\",\n \"duplicatedToast\": \"Duplicated. You're now editing the copy.\",\n \"deleteTitle\": \"Delete “{{title}}”?\",\n \"deleteDescription\": \"The entry disappears from the API in every locale. Its history is kept.\"\n },\n \"conflict\": {\n \"title\": \"Someone else saved this entry\",\n \"description\": \"Reload the latest version and keep your changes on top of it, or discard them.\",\n \"schemaTitle\": \"The model changed while you were editing\",\n \"reload\": \"Reload and keep my changes\",\n \"discard\": \"Discard my changes\",\n \"discardTitle\": \"Discard your changes?\",\n \"discardDescription\": \"The latest saved version replaces everything you changed here.\",\n \"discardConfirm\": \"Discard\"\n },\n \"publishOthers\": {\n \"notice_one\": \"{{count}} other published locale ({{locales}}) still serves older shared values.\",\n \"notice_other\": \"{{count}} other published locales ({{locales}}) still serve older shared values.\",\n \"confirm_one\": \"Publish it\",\n \"confirm_other\": \"Publish them\",\n \"notNow\": \"Not now\"\n },\n \"referenced\": {\n \"title\": \"This entry is still linked\",\n \"description\": \"Remove the links in these entries first.\",\n \"entry\": \"{{model}} · {{id}}\",\n \"unknown\": \"An entry you can't see · {{id}}\"\n },\n \"history\": {\n \"title\": \"History\",\n \"list\": \"Revisions\",\n \"empty\": \"No saved versions yet.\",\n \"latest\": \"current\",\n \"diffTitle\": \"Restoring this version changes\",\n \"noChanges\": \"Nothing: it matches the form.\",\n \"beforeAfter\": \"Current: {{before}} → After restore: {{after}}\",\n \"restore\": \"Restore this version\",\n \"restoreTitle\": \"Restore this version?\",\n \"restoreDescription\": \"Your unsaved changes will be replaced by the restored version.\",\n \"restoreConfirm\": \"Restore\",\n \"restoredToast\": \"Version restored as a new revision.\",\n \"reasons\": {\n \"create\": \"Created\",\n \"save\": \"Saved\",\n \"publish\": \"Published\",\n \"restore\": \"Restored\",\n \"duplicate\": \"Duplicated\",\n \"localize\": \"Locale created\",\n \"conversion\": \"Converted\"\n },\n \"live\": \"Live\",\n \"events\": {\n \"published\": \"Published\",\n \"publishedOnSchedule\": \"Published on schedule\",\n \"publishedWithChangeSet\": \"Published with change set {{title}}\",\n \"unpublished\": \"Unpublished\"\n },\n \"changes\": {\n \"added\": \"would be filled in\",\n \"removed\": \"would be cleared\",\n \"changed\": \"would change\"\n }\n },\n \"items\": {\n \"add\": \"Add {{item}}\",\n \"addSection\": \"Add section\",\n \"removeSingle\": \"Remove {{item}}\",\n \"empty\": \"Nothing added yet.\",\n \"emptyZone\": \"No sections yet.\",\n \"position\": \"item {{index}} of {{count}}\",\n \"problems_one\": \"{{count}} problem\",\n \"problems_other\": \"{{count}} problems\",\n \"moveUp\": \"Move {{item}} (item {{position}}) up\",\n \"moveDown\": \"Move {{item}} (item {{position}}) down\",\n \"duplicate\": \"Duplicate {{item}} (item {{position}})\",\n \"remove\": \"Remove {{item}} (item {{position}})\",\n \"expandAll\": \"Expand all\",\n \"collapseAll\": \"Collapse all\",\n \"componentMissing\": \"This field's component no longer exists.\",\n \"unknownComponent\": \"Unknown section ({{key}})\",\n \"unknownComponentHint\": \"This component is no longer allowed here.\"\n },\n \"fields\": {\n \"required\": \"(required)\",\n \"yes\": \"Yes\",\n \"no\": \"No\",\n \"choose\": \"Choose…\",\n \"clearValue\": \"Clear {{field}}\",\n \"characterCount\": \"{{count}} / {{max}} characters\",\n \"customEditorMissing\": \"The custom editor “{{id}}” isn't installed; the default editor is shown.\",\n \"number\": {\n \"notNumber\": \"Enter a number.\",\n \"notInteger\": \"Enter a whole number.\"\n },\n \"incomplete\": {\n \"date\": \"Enter a complete date.\",\n \"time\": \"Enter a complete time.\",\n \"dateTime\": \"Enter a complete date and time.\"\n },\n \"dateTime\": {\n \"local\": \"Your time zone ({{zone}})\",\n \"utc\": \"UTC\"\n },\n \"slug\": {\n \"link\": \"Generate from the title\",\n \"unlink\": \"Edit the slug by hand\"\n },\n \"json\": {\n \"invalid\": \"Not valid JSON: {{reason}}\",\n \"format\": \"Format\"\n },\n \"code\": {\n \"keys\": \"Tab moves to the next field. Indent with {{indent}}, outdent with {{outdent}}.\",\n \"summary_one\": \"{{language}}, {{count}} line\",\n \"summary_other\": \"{{language}}, {{count}} lines\"\n },\n \"color\": {\n \"picker\": \"Pick a color for {{field}}\",\n \"presets\": \"Preset colors\"\n }\n },\n \"issues\": {\n \"required\": \"This field is required.\",\n \"invalidType\": \"This value has the wrong type.\",\n \"invalidFormat\": \"This value isn't in the expected format.\",\n \"format\": {\n \"email\": \"Enter an email address, like name@example.com.\",\n \"url\": \"Enter a full URL, like https://example.com.\",\n \"slug\": \"Use lowercase letters, numbers and single hyphens, like summer-sale.\",\n \"uid\": \"Use letters, numbers and . _ ~ - only.\",\n \"date\": \"Enter a date like 2026-10-01.\",\n \"datetime\": \"Enter a date and time.\",\n \"time\": \"Enter a time like 14:30.\",\n \"decimal\": \"Enter a decimal number, like 12.50.\",\n \"biginteger\": \"Enter a whole number.\",\n \"code\": \"Must be valid JSON.\"\n },\n \"tooShort_one\": \"Use at least {{count}} character.\",\n \"tooShort_other\": \"Use at least {{count}} characters.\",\n \"tooLong_one\": \"Use at most {{count}} character.\",\n \"tooLong_other\": \"Use at most {{count}} characters.\",\n \"tooSmall\": \"Must be at least {{value}}.\",\n \"tooLarge\": \"Must be at most {{value}}.\",\n \"tooFew_one\": \"Add at least {{count}} item.\",\n \"tooFew_other\": \"Add at least {{count}} items.\",\n \"tooMany_one\": \"Use at most {{count}} item.\",\n \"tooMany_other\": \"Use at most {{count}} items.\",\n \"notAllowed\": \"Choose one of the listed values.\",\n \"patternMismatch\": \"This value doesn't match the required pattern.\",\n \"duplicate\": \"The same item is chosen twice.\",\n \"unknownField\": \"This field no longer exists in the model.\",\n \"unknownComponent\": \"This component isn't allowed here.\",\n \"invalidRichText\": \"The text contains formatting Shapio can't store.\",\n \"notUnique\": \"Another entry already uses this value.\",\n \"relationMissing\": \"A linked entry no longer exists.\",\n \"mediaMissing\": \"A chosen file no longer exists or isn't allowed here.\",\n \"invalidJson\": \"Not valid JSON.\"\n },\n \"media\": {\n \"empty\": \"No file chosen.\",\n \"add\": \"Add files\",\n \"chooseOne\": \"Choose a file\",\n \"replace\": \"Replace\",\n \"remove\": \"Remove {{name}}\",\n \"missing\": \"This file no longer exists.\",\n \"altValue\": \"Alt text: {{alt}}\",\n \"noAlt\": \"No alt text\",\n \"details\": \"Alt text and sizes of {{name}}\",\n \"detailsShort\": \"Details\",\n \"altLabel\": \"Alt text\",\n \"altHint\": \"Describes the image for people who can't see it. Shared by every use of the file.\",\n \"saveAlt\": \"Save alt text\",\n \"variants\": \"Sizes\",\n \"pickTitle\": \"Choose a file\",\n \"pickTitleMultiple\": \"Choose files\",\n \"allowedKinds\": \"Allowed here: {{kinds}}.\",\n \"selectedCount_one\": \"{{count}} selected\",\n \"selectedCount_other\": \"{{count}} selected\",\n \"choose_one\": \"Choose file\",\n \"choose_other\": \"Choose {{count}} files\"\n },\n \"relation\": {\n \"empty\": \"Nothing linked.\",\n \"add\": \"Add {{model}}\",\n \"choose\": \"Choose {{model}}\",\n \"change\": \"Change\",\n \"remove\": \"Unlink {{item}}\",\n \"missingEntry\": \"Entry {{id}} no longer exists or isn't visible.\",\n \"targetUnreadable\": \"You can't read the content type this field links to.\",\n \"unreadableLinks_one\": \"{{count}} linked entry you can't read\",\n \"unreadableLinks_other\": \"{{count}} linked entries you can't read\",\n \"chooseTitle\": \"Choose {{model}}\",\n \"search\": \"Search {{model}}\",\n \"searchPlaceholder\": \"Search by title…\",\n \"results\": \"Entries\",\n \"noResults\": \"No entries found.\",\n \"createNew\": \"Create a new {{model}}\",\n \"done\": \"Done\",\n \"createTitle\": \"New {{model}}\",\n \"createAndLink\": \"Create and link\",\n \"kind\": \"Kind\"\n },\n \"richText\": {\n \"toolbar\": \"Text formatting\",\n \"placeholder\": \"Start writing…\",\n \"blockType\": \"Text style\",\n \"paragraph\": \"Paragraph\",\n \"heading1\": \"Heading 1\",\n \"heading2\": \"Heading 2\",\n \"heading3\": \"Heading 3\",\n \"heading4\": \"Heading 4\",\n \"heading5\": \"Heading 5\",\n \"heading6\": \"Heading 6\",\n \"codeBlock\": \"Code block\",\n \"bold\": \"Bold\",\n \"italic\": \"Italic\",\n \"code\": \"Inline code\",\n \"link\": \"Link\",\n \"linkUrl\": \"Link address\",\n \"linkPlaceholder\": \"https://example.com or /about\",\n \"linkInvalid\": \"Use a web, email or phone link (https://, mailto:, tel:) or a path starting with /.\",\n \"applyLink\": \"Apply\",\n \"removeLink\": \"Remove link\",\n \"bulletList\": \"Bulleted list\",\n \"orderedList\": \"Numbered list\",\n \"blockquote\": \"Quote\",\n \"image\": \"Insert image\",\n \"imageMissing\": \"This image is no longer in the media library.\",\n \"altLabel\": \"Alt text\",\n \"altPlaceholder\": \"Describe the image\",\n \"removeImage\": \"Remove image\",\n \"table\": \"Table\",\n \"insertTable\": \"Insert table\",\n \"addRow\": \"Add row below\",\n \"addColumn\": \"Add column right\",\n \"toggleHeaderRow\": \"Toggle header row\",\n \"deleteRow\": \"Delete row\",\n \"deleteColumn\": \"Delete column\",\n \"deleteTable\": \"Delete table\",\n \"horizontalRule\": \"Divider\",\n \"undo\": \"Undo\",\n \"redo\": \"Redo\",\n \"shortcut\": \"{{action}} ({{keys}})\",\n \"newerVersion\": \"This text was saved by a newer version of Shapio (format {{version}}) and is read-only here.\",\n \"unreadable\": \"This value isn't rich text Shapio can open. Saving will replace it.\"\n }\n },\n \"place\": {\n \"new\": \"New\",\n \"newKind\": \"New {{kind}}\",\n \"newMenu\": \"Choose a kind\",\n \"count_one\": \"{{count}} entry\",\n \"count_other\": \"{{count}} entries\",\n \"tabs\": {\n \"label\": \"{{place}} sections\",\n \"entries\": \"Entries\",\n \"structure\": \"Structure\",\n \"api\": \"API\"\n },\n \"list\": {\n \"search\": \"Search entries\",\n \"searchPlaceholder\": \"Search by title…\",\n \"entry\": \"Entry\",\n \"status\": \"Status\",\n \"locale\": \"Locale\",\n \"createdAt\": \"Created\",\n \"updatedAt\": \"Updated\",\n \"sortBy\": \"Sort by {{field}}\",\n \"selectAll\": \"Select all entries on this page\",\n \"select\": \"Select {{entry}}\",\n \"emptyValue\": \"—\",\n \"itemCount_one\": \"{{count}} item\",\n \"itemCount_other\": \"{{count}} items\",\n \"empty\": \"No {{place}} entries yet\",\n \"emptyFiltered\": \"No entries match these filters.\",\n \"sort\": \"Sort\",\n \"sortField\": \"Sort by\",\n \"ascending\": \"Ascending\",\n \"descending\": \"Descending\",\n \"columns\": \"Columns\",\n \"columnsTitle\": \"Show columns\",\n \"resetColumns\": \"Reset to default\",\n \"author\": \"Created by\",\n \"localesOf\": \"Locales\",\n \"localeState\": \"{{locale}}: {{status}}\",\n \"rowsLabel\": \"{{place}} entries\",\n \"kind\": \"Kind\"\n },\n \"view\": {\n \"label\": \"View\",\n \"table\": \"Table view\",\n \"cards\": \"Cards view\",\n \"cardsLabel\": \"{{place}} entries\"\n },\n \"presence\": {\n \"editing_one\": \"{{names}} is editing\",\n \"editing_other\": \"{{names}} are editing\"\n },\n \"actions\": {\n \"edit\": \"Edit {{entry}}\",\n \"publish\": \"Publish {{entry}}\",\n \"unpublish\": \"Unpublish {{entry}}\",\n \"more\": \"More actions for {{entry}}\",\n \"quickEdit\": \"Quick edit\",\n \"preview\": \"Preview\",\n \"previewUnavailable\": \"No site is connected for previews yet. Add a preview URL to a deployment connection.\",\n \"publishTitle\": \"Publish “{{entry}}”?\",\n \"publishDescription\": \"Its current draft goes live in the API.\",\n \"publishLocaleDescription\": \"The {{locale}} draft goes live in the API.\",\n \"unpublishTitle\": \"Unpublish “{{entry}}”?\",\n \"unpublishDescription\": \"It leaves the API; the draft is kept.\",\n \"unpublishLocaleDescription\": \"The {{locale}} version leaves the API; the draft is kept.\",\n \"publishing\": \"Publishing…\",\n \"unpublishing\": \"Unpublishing…\",\n \"publishedToast\": \"“{{entry}}” is live.\",\n \"unpublishedToast\": \"“{{entry}}” was unpublished.\",\n \"duplicatedToast\": \"Copied “{{entry}}” as a new draft.\",\n \"openCopy\": \"Open copy\",\n \"deleteTitle\": \"Delete “{{entry}}”?\",\n \"deleteDescription\": \"It leaves the API; its history is kept. Entries other entries link to can’t be deleted.\",\n \"deletedToast\": \"“{{entry}}” was deleted.\"\n },\n \"filters\": {\n \"button\": \"Filters\",\n \"title\": \"Show entries where\",\n \"none\": \"No filters yet.\",\n \"add\": \"Add filter\",\n \"apply\": \"Apply\",\n \"clear\": \"Clear all\",\n \"clearChips\": \"Clear filters\",\n \"field\": \"Field of filter {{index}}\",\n \"operator\": \"Condition for {{field}}\",\n \"value\": \"Value for {{field}}\",\n \"remove\": \"Remove the {{field}} filter\",\n \"listPlaceholder\": \"Values, separated by commas\",\n \"active\": \"Active filters\",\n \"removeChip\": \"Remove filter: {{filter}}\",\n \"findEntry\": \"Find {{model}}…\",\n \"entriesOf\": \"{{model}} entries\",\n \"noEntries\": \"No entries found.\",\n \"entriesFailed\": \"Entries couldn’t be loaded.\",\n \"status\": \"Status\",\n \"statusIs\": \"Status is\",\n \"author\": \"Created by\",\n \"createdBy\": \"Created by\",\n \"authors\": \"People\",\n \"you\": \"{{name}} (you)\",\n \"kind\": \"Kind\",\n \"kindIs\": \"Kind is\"\n },\n \"bulk\": {\n \"label\": \"Bulk actions\",\n \"selected_one\": \"{{count}} entry selected\",\n \"selected_other\": \"{{count}} entries selected\",\n \"clear\": \"Clear selection\",\n \"published_one\": \"Published {{count}} entry.\",\n \"published_other\": \"Published {{count}} entries.\",\n \"unpublished_one\": \"Unpublished {{count}} entry.\",\n \"unpublished_other\": \"Unpublished {{count}} entries.\",\n \"deleted_one\": \"Deleted {{count}} entry.\",\n \"deleted_other\": \"Deleted {{count}} entries.\",\n \"publishFailed_one\": \"{{count}} entry couldn't be published: {{reason}}\",\n \"publishFailed_other\": \"{{count}} entries couldn't be published: {{reason}}\",\n \"unpublishFailed_one\": \"{{count}} entry couldn't be unpublished: {{reason}}\",\n \"unpublishFailed_other\": \"{{count}} entries couldn't be unpublished: {{reason}}\",\n \"deleteFailed_one\": \"{{count}} entry couldn't be deleted: {{reason}}\",\n \"deleteFailed_other\": \"{{count}} entries couldn't be deleted: {{reason}}\",\n \"deleteTitle_one\": \"Delete {{count}} entry?\",\n \"deleteTitle_other\": \"Delete {{count}} entries?\",\n \"deleteDescription\": \"Deleted entries leave the API; their history is kept. Entries still linked from others are skipped.\"\n },\n \"api\": {\n \"meta\": \"API ID {{apiKey}} · /api/content/{{routeKey}}\",\n \"explorer\": \"Open API explorer\",\n \"delivery\": \"Delivery API\",\n \"admin\": \"Admin API\",\n \"graphql\": \"GraphQL\",\n \"graphqlSchema\": \"GraphQL schema of {{place}}\"\n },\n \"quickEdit\": {\n \"label\": \"Quick edit {{entry}}\",\n \"save\": \"Save\",\n \"saved\": \"Saved “{{entry}}”.\",\n \"discardTitle\": \"Discard these changes?\",\n \"discardDescription\": \"Your edits to this row are not saved.\",\n \"discard\": \"Discard\"\n }\n },\n \"publishing\": {\n \"sections\": \"Publishing sections\",\n \"nav\": {\n \"scheduled\": \"Scheduled\",\n \"deployments\": \"Deployments\",\n \"webhooks\": \"Webhooks\"\n },\n \"actions\": {\n \"publish\": \"Publish\",\n \"unpublish\": \"Unpublish\"\n },\n \"fields\": {\n \"model\": \"Model\",\n \"modelPlaceholder\": \"Choose a model\",\n \"entryId\": \"Entry ID\",\n \"entryIdHint\": \"Shown in the entry's URL.\",\n \"locale\": \"Locale\",\n \"localeHint\": \"Models that aren't localized use the default locale.\",\n \"defaultLocale\": \"Default locale\",\n \"action\": \"Action\",\n \"status\": \"Status\",\n \"error\": \"Error\",\n \"runAt\": \"Run at\",\n \"localTimeHint\": \"In your time zone ({{timeZone}}).\",\n \"snapshot\": \"Snapshot\",\n \"created\": \"Created\",\n \"deletedModel\": \"Deleted model\",\n \"allowPrivateNetwork\": \"Allow private network addresses\",\n \"allowPrivateNetworkHint\": \"Lets this reach the server's own network (such as 127.0.0.1), for addresses in OUTBOUND_PRIVATE_NETWORK_ALLOWLIST.\"\n },\n \"filters\": {\n \"all\": \"All\"\n },\n \"snapshotNumber\": \"#{{snapshot}}\",\n \"secretDone\": \"I've copied it\",\n \"opensInNewTab\": \"(opens in a new tab)\",\n \"enabled\": \"Enabled\",\n \"disabled\": \"Disabled\",\n \"conflictReloaded\": \"Someone else changed this while you were editing. Their version has been loaded: review it and make your change again.\",\n \"scheduled\": {\n \"create\": \"Schedule\",\n \"createTitle\": \"Schedule a change\",\n \"created\": \"Change scheduled\",\n \"empty\": \"Nothing scheduled\",\n \"noMatches\": \"Nothing matches this filter\",\n \"cancel\": \"Cancel\",\n \"cancelLabel\": \"Cancel the scheduled change to {{entryId}}\",\n \"cancelTitle\": \"Cancel this scheduled change?\",\n \"cancelDescription\": \"Entry {{entryId}} stays as it is.\",\n \"keep\": \"Keep it\",\n \"canceled\": \"Scheduled change canceled\",\n \"statuses\": {\n \"scheduled\": \"Scheduled\",\n \"done\": \"Done\",\n \"failed\": \"Failed\",\n \"canceled\": \"Canceled\"\n }\n },\n \"webhooks\": {\n \"create\": \"New webhook\",\n \"createTitle\": \"New webhook\",\n \"name\": \"Name\",\n \"url\": \"URL\",\n \"urlPlaceholder\": \"https://example.com/hooks/shapio\",\n \"events\": \"Events\",\n \"eventsHint\": \"A whole group also includes events added later.\",\n \"allGroupEvents\": \"All {{group}} events\",\n \"maxAttempts\": \"Attempts\",\n \"maxAttemptsHint\": \"Tries for a failed delivery, with growing delays (1 to 20).\",\n \"enabled\": \"Enabled\",\n \"state\": \"State\",\n \"lastDelivery\": \"Last delivery\",\n \"empty\": \"No webhooks yet\",\n \"secretTitle\": \"Copy the signing secret\",\n \"secretDescription\": \"Shown only once. Your receiver uses it to verify requests.\",\n \"secretLabel\": \"Signing secret\",\n \"signatureTitle\": \"Verifying requests\",\n \"signatureDescription\": \"The signature is the HMAC-SHA256 of the timestamp, a dot and the raw body, keyed with the signing secret.\",\n \"signatureFormat\": \"v1=<hex HMAC-SHA256 of \\\"<timestamp>.<raw body>\\\">\",\n \"timestampFormat\": \"<unix seconds>\",\n \"eventFormat\": \"<event type>\",\n \"deliveryFormat\": \"<delivery ID, the same on every retry>\",\n \"settings\": \"Settings\",\n \"saved\": \"Webhook saved\",\n \"sendTest\": \"Send test\",\n \"testQueued\": \"Test delivery queued. Its result appears in the log below.\",\n \"enable\": \"Enable\",\n \"disable\": \"Disable\",\n \"enabledToast\": \"Webhook enabled\",\n \"disabledToast\": \"Webhook disabled\",\n \"rotateSecret\": \"Rotate secret\",\n \"secretUnreadable\": \"Secret can't be read. Rotate it.\",\n \"rotateTitle\": \"Rotate the signing secret?\",\n \"rotateDescription\": \"The current secret stops working at once.\",\n \"deleteTitle\": \"Delete “{{name}}”?\",\n \"deleteDescription\": \"Its delivery log is deleted too.\",\n \"deleted\": \"“{{name}}” deleted\",\n \"deliveries\": \"Deliveries\",\n \"noDeliveries\": \"No deliveries yet\",\n \"attemptLog\": \"Attempt log\",\n \"eventType\": \"Event\",\n \"attempts\": \"Attempts\",\n \"lastResponse\": \"Last response\",\n \"testBadge\": \"Test\",\n \"toggleAttempts\": \"Show or hide the attempts of {{event}}\",\n \"redeliver\": \"Redeliver\",\n \"redeliverLabel\": \"Redeliver {{event}}\",\n \"redelivered\": \"Sent again as a new delivery\",\n \"lastErrorValue\": \"Last error: {{error}}\",\n \"noAttempts\": \"No attempts yet.\",\n \"attemptHeading\": \"Attempt {{attempt}} · {{at}} · {{duration}} ms\",\n \"request\": \"Request\",\n \"requestHeaders\": \"Request headers\",\n \"response\": \"Response\",\n \"responseBody\": \"Response body\",\n \"httpStatus\": \"HTTP {{status}}\",\n \"bodyTruncated\": \"The response body was cut short.\",\n \"noResponse\": \"No response arrived.\",\n \"deliveryStatuses\": {\n \"pending\": \"Pending\",\n \"retrying\": \"Retrying\",\n \"succeeded\": \"Delivered\",\n \"dead\": \"Failed\"\n },\n \"scope\": \"Receives events from\",\n \"scopeSite\": \"This site ({{name}})\",\n \"scopeNetwork\": \"Every site's events; each delivery names its site. Can't be changed later.\"\n },\n \"deployments\": {\n \"create\": \"New connection\",\n \"createTitle\": \"New deployment connection\",\n \"connections\": \"Connections\",\n \"recentRuns\": \"Recent runs\",\n \"empty\": \"No connections yet\",\n \"name\": \"Name\",\n \"provider\": \"Provider\",\n \"providers\": {\n \"generic_webhook\": \"Build hook (generic webhook)\",\n \"cloudflare_pages\": \"Cloudflare Pages\",\n \"vercel\": \"Vercel\",\n \"netlify\": \"Netlify\",\n \"github\": \"GitHub\"\n },\n \"enabled\": \"Enabled\",\n \"latestRun\": \"Latest run\",\n \"open\": \"Open\",\n \"currentSnapshot\": \"Live snapshot\",\n \"liveSnapshot\": \"Live snapshot {{snapshot}}\",\n \"settings\": \"Settings\",\n \"saved\": \"Connection saved\",\n \"settingLabels\": {\n \"url\": \"Build hook URL\",\n \"accountId\": \"Account ID\",\n \"projectName\": \"Project name\",\n \"projectId\": \"Project ID\",\n \"teamId\": \"Team ID\",\n \"siteId\": \"Site ID\",\n \"owner\": \"Owner\",\n \"repo\": \"Repository\",\n \"branch\": \"Branch\",\n \"mode\": \"How changes are made\",\n \"directory\": \"Directory\"\n },\n \"settingHints\": {\n \"url\": \"Shapio sends a signed POST here to start a build.\",\n \"directory\": \"Where schema files go in the repository.\",\n \"teamId\": \"Leave empty for a project in your personal account.\"\n },\n \"githubModes\": {\n \"commit\": \"Commit to the branch\",\n \"pull_request\": \"Open a pull request\"\n },\n \"secretLabels\": {\n \"signingSecret\": \"Signing secret\",\n \"deployHookUrl\": \"Deploy hook URL\",\n \"apiToken\": \"API token\",\n \"token\": \"Access token\"\n },\n \"secretHints\": {\n \"signingSecret\": \"Signs triggers and callbacks. Leave empty to generate one.\",\n \"deployHookUrl\": \"From the project's build settings.\",\n \"apiToken\": \"Lets Shapio read the build's status.\",\n \"token\": \"Needs read and write access to the repository's contents.\"\n },\n \"providerSecretHints\": {\n \"netlify\": {\n \"apiToken\": \"A personal access token. Starts builds and reads their status.\"\n }\n },\n \"secretStored\": \"Stored\",\n \"replaceSecret\": \"Replace\",\n \"secretFromEnv\": \"From environment: {{name}}\",\n \"secretEnvHint\": \"Or enter ${ENV:SHAPIO_SECRET_NAME} to read it from that server variable.\",\n \"deliveryRole\": \"Preview as\",\n \"deliveryRoleHint\": \"Previews show exactly the fields this delivery role can read.\",\n \"deliveryRoleNone\": \"Public fields\",\n \"keepSecret\": \"Keep stored value\",\n \"secretsUnreadable\": \"Secret can't be read. Enter it again.\",\n \"secretUnreadableHelper\": \"Paste the secret your build uses, or leave it empty to generate a new one and update the build.\",\n \"previewUrlTemplate\": \"Preview URL\",\n \"previewUrlTemplateHint\": \"Placeholders: {token} {modelKey} {entryId} {locale} {path}.\",\n \"previewUrlTemplatePlaceholder\": \"https://preview.example.com/{path}?token={token}\",\n \"triggerPolicy\": \"Start a run on\",\n \"triggers\": {\n \"publish\": \"Publishing an entry\",\n \"changeSet\": \"Shipping a change set\",\n \"schema\": \"Schema changes\",\n \"manual\": \"Manual\"\n },\n \"debounceSeconds\": \"Wait before building (seconds)\",\n \"debounceSecondsHint\": \"Changes within this time start one run.\",\n \"test\": \"Test connection\",\n \"testPassed\": \"All checks passed\",\n \"testFailed\": \"Some checks failed\",\n \"checkPassed\": \"{{name}}: passed\",\n \"checkFailed\": \"{{name}}: failed\",\n \"triggerRun\": \"Deploy now\",\n \"triggered\": \"Run started\",\n \"deleteTitle\": \"Delete “{{name}}”?\",\n \"deleteDescription\": \"Past runs stay listed.\",\n \"deleted\": \"“{{name}}” deleted\",\n \"callbacks\": \"Build callbacks\",\n \"callbacksDescription\": \"Without callbacks, Shapio only knows that the trigger was sent.\",\n \"callbackUrl\": \"Callback URL\",\n \"callbackBody\": \"Callback body (JSON)\",\n \"callbackFields\": \"status is building, deployed or failed; logUrl, siteUrl and message are optional.\",\n \"callbackSignature\": \"Sign callbacks like webhooks, with this connection's signing secret.\",\n \"generatedSecretTitle\": \"Copy the signing secret\",\n \"generatedSecretDescription\": \"Shown only once. Your build uses it to verify triggers and sign callbacks.\",\n \"runs\": \"Runs\",\n \"details\": \"Details\",\n \"run\": \"Run\",\n \"openRun\": \"Open the {{connection}} run of {{at}}\",\n \"connection\": \"Connection\",\n \"trigger\": \"Trigger\",\n \"runTriggers\": {\n \"publish\": \"Publish\",\n \"changeSet\": \"Change set\",\n \"schema\": \"Schema change\",\n \"manual\": \"Manual\",\n \"retry\": \"Retry\"\n },\n \"finishedAt\": \"Finished\",\n \"triggeredAt\": \"Trigger sent\",\n \"noRuns\": \"No runs yet\",\n \"runTitle\": \"{{connection}} run\",\n \"watching\": \"Updating automatically…\",\n \"completionUnknown\": \"This connection can't tell Shapio when the build finishes. The trigger was sent; check your build service for the outcome, or set up callbacks.\",\n \"schemaVersion\": \"Schema version\",\n \"providerRef\": \"Provider reference\",\n \"logUrl\": \"Build log\",\n \"siteUrl\": \"Site\",\n \"retryOf\": \"Retry of\",\n \"previousRun\": \"Previous run\",\n \"retry\": \"Retry\",\n \"retried\": \"New run started\",\n \"timeline\": \"Timeline\",\n \"timelineEmpty\": \"Nothing has happened yet.\",\n \"reportedBy\": \"reported by {{source}}\",\n \"sources\": {\n \"shapio\": \"Shapio\",\n \"callback\": \"build callback\",\n \"provider\": \"provider\"\n },\n \"statuses\": {\n \"queued\": \"Queued\",\n \"triggered\": \"Trigger sent\",\n \"triggeredUnknown\": \"Trigger sent · completion unknown\",\n \"building\": \"Building\",\n \"deployed\": \"Deployed\",\n \"committed\": \"Committed\",\n \"failed\": \"Failed\",\n \"unknown\": \"Status unknown\"\n }\n }\n },\n \"appUsers\": {\n \"title\": \"App users\",\n \"search\": \"Search app users\",\n \"searchPlaceholder\": \"Search by email or name\",\n \"name\": \"Name\",\n \"signIn\": \"Signs in with\",\n \"password\": \"Password\",\n \"providerGoogle\": \"Google\",\n \"providerGithub\": \"GitHub\",\n \"roles\": \"Roles\",\n \"authenticatedOnly\": \"Authenticated only\",\n \"status\": \"Status\",\n \"active\": \"Active\",\n \"blocked\": \"Blocked\",\n \"unconfirmed\": \"Email not confirmed\",\n \"lastLogin\": \"Last sign-in\",\n \"editRoles\": \"Change roles\",\n \"rolesTitle\": \"Roles for {{name}}\",\n \"rolesDescription\": \"Every app user also holds the roles this site gives to everyone (Public) and to signed-in users (Authenticated).\",\n \"noCustomRoles\": \"There are no custom app roles yet. Create one in Settings → Roles → App roles.\",\n \"rolesSaved\": \"Roles updated.\",\n \"resendConfirmation\": \"Resend confirmation email\",\n \"confirmationSent\": \"Confirmation email sent to {{email}}.\",\n \"block\": \"Block\",\n \"unblock\": \"Unblock\",\n \"blockTitle\": \"Block {{name}}?\",\n \"blockDescription\": \"They are signed out everywhere at once and can't sign in until you unblock them.\",\n \"blockedToast\": \"App user blocked.\",\n \"unblockedToast\": \"App user unblocked.\",\n \"unblockTitle\": \"Unblock {{name}}?\",\n \"unblockDescription\": \"They can sign in again.\",\n \"removeTitle\": \"Delete {{name}}?\",\n \"removeDescription\": \"Their account and personal details are deleted and they are signed out. Entries they created stay. This can't be undone.\",\n \"removed\": \"App user deleted.\",\n \"empty\": \"No app users yet.\",\n \"emptyDescription\": \"People appear here when they sign up through /api/app-auth, Google, or GitHub.\",\n \"teamHint\": \"Looking for editors and admins? They're under <teamLink>Team</teamLink>.\",\n \"noMatches\": \"No app users match this search.\"\n },\n \"appRoles\": {\n \"title\": \"App roles\",\n \"create\": \"New app role\",\n \"createTitle\": \"Create app role\",\n \"created\": \"App role created.\",\n \"deleteDescription\": \"App users can't hold a role that's deleted. This can't be undone.\",\n \"heldBy\": \"Applies to\",\n \"holdersPublic\": \"Everyone, signed in or not\",\n \"holdersAuthenticated\": \"Every signed-in app user\",\n \"userCount_one\": \"{{count}} app user\",\n \"userCount_other\": \"{{count}} app users\",\n \"details\": \"Details\",\n \"publicExplained\": \"Applies to every request, with or without a token, so signed-in app users hold it too. It grants nothing until you add permissions; grant read access to serve content to anyone.\",\n \"authenticatedExplained\": \"Every signed-in app user holds this role, in addition to Public and their custom roles. It grants nothing until you add permissions.\",\n \"permissionsHint\": \"Reads return published content only. Without a field list, only public fields.\",\n \"denyByDefault\": \"Visitors and app users see nothing until you grant it. Grant read on all models to a built-in role to serve published content.\",\n \"grantReadAll\": \"Grant read on all models\",\n \"readAllGranted\": \"{{name}} can now read published content in every model.\"\n },\n \"changes\": {\n \"title\": \"Changes\",\n \"create\": \"New change set\",\n \"createTitle\": \"New change set\",\n \"openTitle\": \"Open change sets\",\n \"empty\": \"No open change sets\",\n \"emptyDescription\": \"Group schema edits and entry drafts, review them together, and ship them as one snapshot.\",\n \"itemCount_one\": \"{{count}} item\",\n \"itemCount_other\": \"{{count}} items\",\n \"scheduledFor\": \"Ships {{at}}\",\n \"deploysTo\": \"Deploys to {{name}}\",\n \"addTo\": \"Add to…\",\n \"addToLabel\": \"Add “{{title}}” to a change set\",\n \"addToTitle\": \"Add to a change set\",\n \"added\": \"Added to “{{title}}”\",\n \"noOpenSets\": \"No open change sets yet.\",\n \"newSetTitle\": \"New change set\",\n \"scheduledPublications\": \"Scheduled publications\",\n \"noScheduledPublications\": \"No single-entry publications are scheduled.\",\n \"reviewInChangeSet\": \"Review in a change set\",\n \"builderSetTitle\": \"Schema: {{label}}\",\n \"fields\": {\n \"title\": \"Title\",\n \"description\": \"Description\",\n \"status\": \"Status\",\n \"items\": \"Items\",\n \"author\": \"Author\",\n \"when\": \"When\",\n \"entry\": \"Entry\",\n \"model\": \"Model\",\n \"locale\": \"Locale\",\n \"action\": \"Action\",\n \"updated\": \"Updated\"\n },\n \"statuses\": {\n \"open\": \"Open\",\n \"scheduled\": \"Scheduled\",\n \"shipping\": \"Shipping\",\n \"shipped\": \"Shipped\",\n \"failed\": \"Failed\",\n \"discarded\": \"Discarded\"\n },\n \"unassigned\": {\n \"title\": \"Unassigned\",\n \"empty\": \"Every draft is in a change set.\",\n \"statuses\": {\n \"draft\": \"Never published\",\n \"modified\": \"Changed\"\n }\n },\n \"classes\": {\n \"breaking\": \"Breaking\",\n \"conversion\": \"Conversion\",\n \"validation\": \"Validation\",\n \"additive\": \"Additive\",\n \"metadata\": \"Metadata\"\n },\n \"tabs\": {\n \"label\": \"Review\",\n \"changes\": \"Changes\",\n \"checks\": \"Checks\",\n \"consumers\": \"Consumers\",\n \"timeline\": \"Timeline\"\n },\n \"review\": {\n \"openedBy\": \"Opened by {{name}} {{at}}\",\n \"rename\": \"Rename change set\",\n \"renamed\": \"Change set renamed\",\n \"ship\": \"Ship\",\n \"shipping\": \"Shipping…\",\n \"shipTitle\": \"Ship “{{title}}”?\",\n \"shipDescription_one\": \"{{count}} item goes live as one new snapshot.\",\n \"shipDescription_other\": \"{{count}} items go live together as one new snapshot.\",\n \"shipped\": \"Shipped as v{{seq}}\",\n \"shippingStarted\": \"Shipping: checks run first, then everything goes live together.\",\n \"shipFailed\": \"The ship failed; nothing went live. See the reason above.\",\n \"shipWithDeploy\": \"Ship with deploy\",\n \"shipWithDeployTitle\": \"Ship, then deploy\",\n \"shipWithDeployHint\": \"The build is pinned to the new snapshot.\",\n \"connection\": \"Deployment\",\n \"schedule\": \"Schedule…\",\n \"scheduleTitle\": \"Schedule this change set\",\n \"scheduleAt\": \"Ship at\",\n \"scheduled\": \"Change set scheduled\",\n \"unschedule\": \"Unschedule\",\n \"unscheduled\": \"Schedule removed\",\n \"discard\": \"Discard\",\n \"discardTitle\": \"Discard “{{title}}”?\",\n \"discardDescription\": \"Its schema drafts are deleted. Entry drafts stay as they are.\",\n \"discarded\": \"Change set discarded\",\n \"shippedAs\": \"Shipped as\",\n \"shippedByAt\": \"by {{name}} {{at}}\",\n \"failedTitle\": \"The last ship failed; nothing went live\",\n \"staleTitle\": \"Changed since you looked\",\n \"staleDescription\": \"Something in this change set moved after this review loaded. Refresh to review the latest before shipping.\",\n \"refresh\": \"Refresh\",\n \"acknowledgeInChecks\": \"This change set breaks the API contract or removes data. Confirm it in\",\n \"notices\": {\n \"newFieldsAfterShip\": \"Entries in this set can only use fields that are live now; fields this set adds are available after it ships.\"\n },\n \"noItems\": \"Nothing in this change set yet\",\n \"noItemsDescription\": \"Add entry drafts from the Changes page, or schema edits from the model builder.\",\n \"itemRemoved\": \"Item removed\",\n \"removeItem\": \"Remove “{{title}}”\",\n \"removeItemTitle\": \"Remove “{{title}}” from this change set?\",\n \"removeItemDescription\": \"The draft stays; it just won't ship with this set.\",\n \"openEntry\": \"Open\",\n \"field\": \"Field\",\n \"before\": \"Live now\",\n \"after\": \"After shipping\",\n \"beforeShip\": \"Before\",\n \"shippedValue\": \"Shipped\",\n \"empty\": \"empty\",\n \"raw\": \"Raw\",\n \"fieldChangesOf\": \"Field changes in {{title}}\",\n \"noFieldChanges\": \"No field values change.\",\n \"notRecorded\": \"This set shipped as a release, before change sets kept their diff.\",\n \"schemaChangesOf\": \"Schema changes to {{name}}\",\n \"noSchemaChanges\": \"No schema changes.\",\n \"schemaStale\": \"Based on version {{base}}, but version {{active}} is live now. Rebase the draft before shipping.\",\n \"alsoChangedIn\": \"Also changed in\",\n \"operations\": {\n \"create\": \"New\",\n \"update\": \"Changed\",\n \"delete\": \"Deleted\"\n },\n \"liveStates\": {\n \"unpublished\": \"Not live\",\n \"published\": \"Live, unchanged\",\n \"modified\": \"Live, changes\",\n \"missing\": \"Missing\"\n },\n \"blockingTitle\": \"Shipping is blocked\",\n \"warningsTitle\": \"Worth a look\",\n \"plannerTitle\": \"Schema plan: {{name}}\",\n \"affected_one\": \"{{count}} entry version affected\",\n \"affected_other\": \"{{count}} entry versions affected\",\n \"noPrerequisites\": \"Nothing to check first: this goes live immediately.\",\n \"validationTitle\": \"Entry validation\",\n \"allEntriesValid_one\": \"{{count}} entry passes validation against the schema it ships with.\",\n \"allEntriesValid_other\": \"All {{count}} entries pass validation against the schema they ship with.\",\n \"notRestorableTitle\": \"Can't be restored\",\n \"notRestorable\": {\n \"entry_deleted\": \"The entry was deleted.\",\n \"model_missing\": \"Its model no longer exists.\",\n \"publishing_disabled\": \"Its model no longer uses draft and publish.\",\n \"localization_changed\": \"Its model's localization changed.\",\n \"locale_missing\": \"The locale no longer exists.\",\n \"invalid\": \"That version doesn't fit the current schema.\",\n \"unique_conflict\": \"A unique value is now taken by another entry.\",\n \"kind_changed\": \"The entry has changed kind since.\"\n },\n \"healthTitle\": \"Content health\",\n \"noHealthFindings\": \"No open health findings on these entries.\",\n \"shared\": \"Shared, affects every site\",\n \"checksPassedAtShip\": \"Every check passed when this set shipped.\"\n },\n \"consumers\": {\n \"window_one\": \"Reads from delivery traffic over the last {{count}} day.\",\n \"window_other\": \"Reads from delivery traffic over the last {{count}} days.\",\n \"none\": \"Nobody read the affected fields\",\n \"notBreaking\": \"No breaking changes, so no readers to check\",\n \"readers_one\": \"{{count}} reader\",\n \"readers_other\": \"{{count}} readers\",\n \"reader\": \"Reader\",\n \"reads\": \"Reads\",\n \"lastRead\": \"Last read\",\n \"selection\": \"How\",\n \"explicit\": \"Selects this field\",\n \"implicit\": \"Reads the whole model\",\n \"site\": \"Site\",\n \"otherSites_one\": \"Other sites: {{count}} reader, {{reads}} reads\",\n \"otherSites_other\": \"Other sites: {{count}} readers, {{reads}} reads\"\n },\n \"timeline\": {\n \"empty\": \"Nothing has happened yet.\",\n \"created\": \"Created\",\n \"updated\": \"Updated\",\n \"itemAdded\": \"Entry added\",\n \"itemRemoved\": \"Item removed\",\n \"schemaDraftSaved\": \"Schema draft saved\",\n \"reviewed\": \"Reviewed\",\n \"scheduled\": \"Scheduled\",\n \"unscheduled\": \"Unscheduled\",\n \"shipping\": \"Shipping\",\n \"shipped\": \"Shipped\",\n \"failed\": \"Failed\",\n \"discarded\": \"Discarded\",\n \"deployTriggered\": \"Deploy triggered\",\n \"deployBuilding\": \"Deploy building\",\n \"deployDeployed\": \"Deployed\",\n \"deployFailed\": \"Deploy failed\",\n \"deployRun\": \"View run\"\n }\n },\n \"snapshots\": {\n \"title\": \"Snapshots\",\n \"current\": \"Serving v{{seq}}\",\n \"empty\": \"Nothing has been published yet\",\n \"version\": \"v{{seq}}\",\n \"live\": \"Live\",\n \"schemaVersion\": \"Schema v{{version}}\",\n \"compare\": \"Compare\",\n \"compareLabel\": \"Compare v{{seq}} with v{{current}}\",\n \"restore\": \"Restore\",\n \"restoreLabel\": \"Restore v{{seq}}\",\n \"restoreTitle\": \"Restore v{{seq}}?\",\n \"restoreDescription\": \"Creates a change set that puts the content back to v{{seq}}. Nothing is deleted.\",\n \"pin\": \"Pin\",\n \"pinLabel\": \"Pin a token to v{{seq}}\",\n \"pinTitle\": \"Pin a reader to v{{seq}}\",\n \"pinDescription\": \"Readers pin a snapshot themselves by sending snapshot={{seq}} with their requests.\",\n \"pinToken\": \"Token\",\n \"diffSummary_one\": \"v{{from}} → v{{to}}: {{count}} entry changed\",\n \"diffSummary_other\": \"v{{from}} → v{{to}}: {{count}} entries changed\",\n \"schemaMoved\": \"schema v{{from}} → v{{to}}\",\n \"noChanges\": \"No live content changed between these snapshots.\",\n \"localeChange\": \"{{locale}} {{change}}\",\n \"changes\": {\n \"published\": \"published\",\n \"updated\": \"updated\",\n \"unpublished\": \"unpublished\"\n },\n \"fields\": {\n \"version\": \"Version\",\n \"when\": \"When\",\n \"source\": \"Source\",\n \"entries\": \"Entries\",\n \"schema\": \"Schema\",\n \"pinnedBy\": \"Pinned by\",\n \"deploy\": \"Deploy\",\n \"locales\": \"Locales\"\n },\n \"sources\": {\n \"publish\": \"Publish\",\n \"unpublish\": \"Unpublish\",\n \"delete\": \"Delete\",\n \"schedule\": \"Scheduled\",\n \"change_set\": \"Change set\",\n \"schema\": \"Schema\",\n \"conversion\": \"Conversion\",\n \"import\": \"Import\",\n \"kind_change\": \"Kind change\",\n \"legacy\": \"Before the ledger\"\n },\n \"tabs\": {\n \"label\": \"Snapshot\",\n \"diff\": \"Changes\",\n \"timeline\": \"Timeline\"\n },\n \"scrubber\": {\n \"label\": \"Snapshot\",\n \"range\": \"v{{min}} – v{{max}}\"\n },\n \"diffSummaryMore_one\": \"v{{from}} → v{{to}}: the first {{count}} changed entry\",\n \"diffSummaryMore_other\": \"v{{from}} → v{{to}}: the first {{count}} changed entries\",\n \"timeline\": {\n \"label\": \"Time scrubber\",\n \"shippedBy\": \"shipped by {{name}}\",\n \"changedSince_one\": \"{{count}} entry changed since v{{seq}}\",\n \"changedSince_other\": \"{{count}} entries changed since v{{seq}}\",\n \"restoreHere\": \"Restore to here\",\n \"pinHere\": \"Pin a token here\",\n \"nothingLive\": \"Nothing was live at v{{seq}}\",\n \"liveCount_one\": \"{{count}} live\",\n \"liveCount_other\": \"{{count}} live\",\n \"untitled\": \"Untitled\",\n \"cardLabel\": \"{{title}}, {{state}}\",\n \"openVersion\": \"Open this version\",\n \"openVersionOf\": \"Open the version of “{{title}}” at this snapshot\",\n \"marks\": {\n \"unchanged\": \"Live\",\n \"added\": \"New\",\n \"changed\": \"Changed\",\n \"removed\": \"Removed\"\n }\n }\n },\n \"develop\": {\n \"schemaTitle\": \"Schema\",\n \"apiExplorerTitle\": \"API explorer\",\n \"graphql\": {\n \"title\": \"GraphQL\",\n \"hint\": \"GraphiQL on this site's GraphQL API, built live from its content types; the Docs panel describes every type and field. Your admin session can read drafts (publicationState: DRAFT); site tokens and visitors only ever see published content.\",\n \"frame\": \"GraphiQL playground\",\n \"unavailable\": \"GraphiQL is turned off\",\n \"unavailableDescription\": \"Set GRAPHQL_ENABLED and GRAPHQL_PLAYGROUND_ENABLED to use it here.\"\n },\n \"actors\": {\n \"admin\": \"An admin\",\n \"token\": \"An API token\",\n \"system\": \"Shapio\"\n },\n \"principals\": {\n \"appUsers\": \"App users\",\n \"anonymous\": \"Anonymous\",\n \"deletedToken\": \"Deleted token\"\n },\n \"health\": {\n \"error\": \"Errors\",\n \"warning\": \"Warnings\"\n },\n \"live\": {\n \"title\": \"Live\",\n \"snapshotTitle\": \"Serving\",\n \"since\": \"Since {{at}} · {{name}}\",\n \"healthTitle\": \"Content health\",\n \"healthClean\": \"No open findings.\",\n \"readersTitle\": \"Who reads what\",\n \"servedReads_one\": \"{{count}} request served in the last {{days}} days\",\n \"servedReads_other\": \"{{count}} requests served in the last {{days}} days\",\n \"noReaders_one\": \"No delivery reads in the last {{count}} day\",\n \"noReaders_other\": \"No delivery reads in the last {{count}} days\",\n \"fields\": \"Fields\",\n \"requests\": \"Requests\",\n \"pinned\": \"Snapshot\",\n \"followsLive\": \"Follows live\",\n \"wholeModel\": \"{{model}} (whole model)\",\n \"failedJobsTitle\": \"Failed jobs\",\n \"jobsFailed_one\": \"{{count}} job failed\",\n \"jobsFailed_other\": \"{{count}} jobs failed\",\n \"showFailedJobs\": \"Show and retry\",\n \"hideFailedJobs\": \"Hide\",\n \"retryJob\": \"Retry\",\n \"retryJobLabel\": \"Retry the {{type}} job\",\n \"jobRetried\": \"{{type}} job queued again\",\n \"webhooks\": \"Webhooks\",\n \"webhooksEnabled_one\": \"{{count}} on\",\n \"webhooksEnabled_other\": \"{{count}} on\",\n \"webhooksFailing_one\": \"{{count}} failing\",\n \"webhooksFailing_other\": \"{{count}} failing\",\n \"healthOpen_one\": \"{{count}} open finding\",\n \"healthOpen_other\": \"{{count}} open findings\",\n \"openInbox\": \"Open the Inbox\",\n \"notTracking\": \"Usage tracking is off on this server (USAGE_TRACKING=false); counts stop at the last flush.\"\n },\n \"schema\": {\n \"files\": \"Schema files\",\n \"modelsDir\": \"schema/models\",\n \"componentsDir\": \"schema/components\",\n \"lockDir\": \".shapio\",\n \"meta_one\": \"Loaded at schema version {{version}} · {{count}} file, as shapio schema pull writes it\",\n \"meta_other\": \"Loaded at schema version {{version}} · {{count}} files, as shapio schema pull writes them\",\n \"modified\": \"Modified\",\n \"reload\": \"Reload\",\n \"reloadTitle\": \"Discard your edits and reload?\",\n \"reloadDescription\": \"Every file is loaded again from the instance.\",\n \"applying\": \"Applying…\",\n \"apply\": {\n \"label_zero\": \"Apply\",\n \"label_one\": \"Apply {{count}} file\",\n \"label_other\": \"Apply {{count}} files\",\n \"newSetTitle\": \"Schema changes\",\n \"invalid\": \"Fix the problems in {{path}} before applying.\",\n \"nothing\": \"Nothing to apply: the instance already has these changes.\"\n },\n \"moved\": \"The instance is at schema version {{live}}; these files were loaded at {{loaded}}. Apply checks every changed file against the instance; Reload loads the latest.\",\n \"revert\": \"Revert\",\n \"revertTitle\": \"Revert this file?\",\n \"revertDescription\": \"Your edits to this file are discarded.\",\n \"editorLabel\": \"{{path}} (JSON)\",\n \"invalidJson\": \"Not valid JSON: {{message}}\",\n \"problems_one\": \"{{count}} problem\",\n \"problems_other\": \"{{count}} problems\",\n \"lockDescription\": \"Written by pull: the version each file was loaded from. Read-only.\",\n \"preview\": {\n \"title\": \"Preview\",\n \"tabs\": {\n \"form\": \"Form\",\n \"rest\": \"REST\",\n \"graphql\": \"GraphQL\",\n \"types\": \"Types\",\n \"plan\": \"Plan\"\n },\n \"invalidTitle\": \"Nothing to preview yet\",\n \"invalidDescription\": \"Fix the problems in the file to see what it produces.\",\n \"noFields\": \"This definition has no fields yet.\",\n \"document\": \"Document\",\n \"properties\": \"Properties\",\n \"endpoints\": \"Endpoints\",\n \"admin\": \"Admin\",\n \"componentEndpoints\": \"Components have no endpoints of their own: they appear inside entries.\",\n \"responseSample\": \"Example response\",\n \"componentSample\": \"Example value\",\n \"sdl\": \"GraphQL schema\",\n \"typescript\": \"TypeScript\",\n \"typesActive\": \"Types of the active version (schema version {{version}}). Your edits appear here once their change set ships.\",\n \"noTypes\": \"No types yet: this definition is not active.\"\n },\n \"plan\": {\n \"none\": \"No changes to this definition.\",\n \"breaking\": \"This changes the API contract. The change set's review asks for an acknowledgement.\",\n \"destructive\": \"This removes stored data. The change set's review asks for an acknowledgement.\",\n \"unsupported\": \"Shapio cannot convert existing content for one of these changes.\",\n \"serverChecks\": \"The change set's review plans this again with the content checks (conversions, required values, uniqueness).\"\n },\n \"conflicts\": {\n \"title_one\": \"Not applied: {{count}} file changed on the instance too\",\n \"title_other\": \"Not applied: {{count}} files changed on the instance too\",\n \"description\": \"Nothing was written. For each file, keep your version on top of the instance's or take the instance's, then apply again.\",\n \"fileTitle\": \"Conflict in {{path}}\",\n \"reasons\": {\n \"changedOnBoth\": \"Changed here and on the instance since you loaded it.\",\n \"deletedOnTarget\": \"Deleted on the instance since you loaded it.\",\n \"existsOnTarget\": \"The instance already has a definition with this ID.\",\n \"changedOnTargetBeforeDelete\": \"Changed on the instance before your deletion.\"\n },\n \"theirs\": \"On the instance since you loaded it\",\n \"yours\": \"Your changes\",\n \"keepLocal\": \"Keep my version\",\n \"takeRemote\": \"Use the instance's version\",\n \"takeRemoteTitle\": \"Use the instance's version?\",\n \"takeRemoteDescription\": \"Your edits to this file are discarded. Copy them first if you want to redo them.\"\n }\n },\n \"api\": {\n \"meta_one\": \"{{version}} · {{count}} delivery endpoint, live from the registry\",\n \"meta_other\": \"{{version}} · {{count}} delivery endpoints, live from the registry\",\n \"tabs\": {\n \"label\": \"API\",\n \"rest\": \"REST\"\n },\n \"endpoints\": \"Delivery endpoints\",\n \"empty\": \"No delivery endpoints yet\",\n \"emptyDescription\": \"Create a model and its endpoints appear here at once.\",\n \"send\": \"Send\",\n \"sending\": \"Sending…\",\n \"copyAs\": \"Copy as\",\n \"curl\": \"curl\",\n \"fetch\": \"fetch\",\n \"curlLabel\": \"curl\",\n \"fetchLabel\": \"fetch (JavaScript)\",\n \"request\": {\n \"id\": \"Entry ID\",\n \"locale\": \"Locale\",\n \"localeHint\": \"The locale to serve; entries without one fall back along the locale chain.\",\n \"defaultLocale\": \"Default locale\",\n \"localeOption\": \"{{label}} ({{code}})\",\n \"snapshot\": \"Snapshot\",\n \"snapshotHint\": \"Read content as of this publication snapshot (meta.snapshot), as a pinned site build does.\",\n \"fields\": \"Fields\",\n \"fieldsHint\": \"Comma-separated API IDs to return, e.g. title,cover. Empty returns every field you may read.\",\n \"populate\": \"Populate\",\n \"populateHint\": \"Relations to expand, e.g. author,tags.author or *.\",\n \"sort\": \"Sort\",\n \"sortHint\": \"Comma-separated field:asc or field:desc (sortable fields, id, createdAt, updatedAt).\",\n \"search\": \"Search\",\n \"page\": \"Page\",\n \"pageSize\": \"Page size\",\n \"filters\": \"Filters\",\n \"filterKey\": \"Filter {{index}} key\",\n \"filterValue\": \"Filter {{index}} value\",\n \"filterKeyPlaceholder\": \"title[$contains]\",\n \"filterValuePlaceholder\": \"Value\",\n \"addFilter\": \"Add filter\",\n \"removeFilter\": \"Remove filter {{index}}\",\n \"token\": \"API token\",\n \"tokenHint\": \"Requests are sent as a site would send them: without your admin session. Empty sends them anonymously (what the public app role grants). The token stays in memory for this visit only: it is never saved or put in a URL, and snippets show $SHAPIO_TOKEN instead.\",\n \"tokenPlaceholder\": \"shp_…\"\n },\n \"response\": {\n \"title\": \"Response\",\n \"empty\": \"Send the request to see the live response.\",\n \"body\": \"Body\",\n \"duration\": \"{{ms}} ms\",\n \"announce\": \"Response {{status}} in {{ms}} ms\",\n \"entries\": \"Returned entries\",\n \"idLocale\": \"{{id}} · {{locale}}\",\n \"editEntry\": \"Edit entry\",\n \"editEntryLabel\": \"Edit {{entry}}\"\n },\n \"shape\": {\n \"title\": \"Shape\",\n \"description\": \"{{model}} fields, and who read them in the last {{days}} days\",\n \"field\": \"Field\",\n \"readers\": \"Who reads it\",\n \"reads_one\": \"{{count}} read\",\n \"reads_other\": \"{{count}} reads\",\n \"noReads\": \"No reads\",\n \"trackingOff\": \"Usage tracking is off\",\n \"anonymous\": \"Anonymous\",\n \"appUsers\": \"App users\",\n \"flags\": {\n \"required\": \"Required\",\n \"localized\": \"Localized\",\n \"private\": \"Private\",\n \"unique\": \"Unique\",\n \"filterable\": \"Filterable\",\n \"sortable\": \"Sortable\"\n }\n },\n \"graphql\": {\n \"operations\": \"GraphQL queries\",\n \"example\": \"Example: {{name}}\",\n \"query\": \"Query\",\n \"fromRest\": \"The same request as the REST tab's for this endpoint.\",\n \"skipped\": \"Not carried over from REST: {{params}}\",\n \"openInPlayground\": \"Open in playground\"\n }\n }\n },\n \"sites\": {\n \"network\": \"Network\",\n \"switcher\": {\n \"label\": \"Switch site (current: {{name}})\",\n \"sites\": \"Sites\",\n \"allSites\": \"All sites\"\n },\n \"noAccess\": {\n \"title\": \"You have no role on this site\",\n \"description\": \"Ask an owner for access, or open a site you work on.\",\n \"noSites\": \"Ask an owner to give you a role on a site.\"\n },\n \"notFound\": {\n \"title\": \"This site doesn't exist\",\n \"description\": \"It may have been deleted, or the address has a typo.\"\n },\n \"title\": \"Sites\",\n \"count_one\": \"{{count}} site\",\n \"count_other\": \"{{count}} sites\",\n \"create\": \"New site\",\n \"createTitle\": \"Create site\",\n \"name\": \"Name\",\n \"key\": \"Key\",\n \"keyHint\": \"The site's key appears in its admin URLs and names the site in API calls (the Shapio-Site header or ?site=).\",\n \"keyFixed\": \"The key can't be changed once the site exists.\",\n \"createdAt\": \"Created\",\n \"created\": \"Site {{name}} created.\",\n \"empty\": \"No sites yet.\",\n \"primary\": \"Primary\",\n \"open\": \"Open\",\n \"openNamed\": \"Open {{name}}\",\n \"details\": \"Details\",\n \"renamed\": \"Site renamed.\",\n \"appRoles\": {\n \"title\": \"App roles\",\n \"description\": \"What everyone, and signed-in app users on top, may do on this site. Signed-in users also hold the Public roles.\",\n \"public\": \"Everyone, signed in or not (public)\",\n \"authenticated\": \"Signed-in app users (authenticated)\",\n \"saved\": \"App roles saved.\"\n },\n \"danger\": \"Delete site\",\n \"deleteDescription\": \"Only an empty site can be deleted.\",\n \"delete\": \"Delete site\",\n \"deleteTitle\": \"Delete {{name}}?\",\n \"deleteConsequence\": \"Its tokens, webhooks, deployment connections and role assignments go with it.\",\n \"deleted\": \"{{name}} deleted.\",\n \"everySite\": \"Every site\"\n },\n \"assist\": {\n \"working\": \"Writing…\",\n \"discard\": \"Discard\",\n \"truncated\": \"Shortened to fit the field's limit.\",\n \"errors\": {\n \"rateLimited\": \"Too many assist requests. Try again in a minute.\",\n \"runFailed\": \"The proposal run failed.\"\n },\n \"rewrite\": {\n \"open\": \"Rewrite…\",\n \"title\": \"Rewrite the selection\",\n \"instruction\": \"Instruction\",\n \"instructionPlaceholder\": \"Friendlier, for a general audience\",\n \"marksHint\": \"The proposal is plain text: bold, italic, links and code in the selection are not kept when you replace it.\",\n \"run\": \"Rewrite\",\n \"shorten\": \"Shorten\",\n \"expand\": \"Expand\",\n \"proposal\": \"Proposed by {{model}}\",\n \"replace\": \"Replace selection\",\n \"stale\": \"The selected text changed meanwhile. Select it again and rewrite.\",\n \"tooLong\": \"Select less text (at most {{max}} characters).\"\n },\n \"altText\": {\n \"suggest\": \"Suggest alt text\",\n \"pending\": \"Looking at the image…\"\n },\n \"saveFirst\": \"Save your changes first: assist reads the saved version.\",\n \"saveFailed\": \"Your changes couldn't be saved, so assist didn't run. Check the document and try again.\",\n \"summarize\": {\n \"run\": \"Summarize from body\",\n \"hint\": \"Writes a summary of the body into this field. Review it before you save: it's a proposal.\"\n },\n \"translate\": {\n \"run\": \"Translate {{locale}} from {{from}}\",\n \"pending\": \"Translating into {{locale}}…\"\n },\n \"proposal\": {\n \"title\": \"Proposed by {{model}}\",\n \"description\": \"Translated from {{from}} as a draft. Review it before publishing.\",\n \"issues\": \"Translation issues\",\n \"dismiss\": \"Dismiss\"\n },\n \"describe\": {\n \"title\": \"Describe it\",\n \"label\": \"What will editors write here?\",\n \"hint\": \"A model proposes the content types and fields from your description. Nothing changes until you ship the change set they go into.\",\n \"placeholder\": \"Recipes with a title, a cover photo, ingredients, steps and a cooking time\",\n \"run\": \"Propose content types\",\n \"proposedBy\": \"Proposed by {{model}}. Review it in a change set before shipping.\",\n \"proposalLabel\": \"Proposed content types\",\n \"fieldType\": \"({{type}})\",\n \"add\": \"Add to change set\",\n \"setTitle\": \"Content types proposed by {{model}}\"\n },\n \"fixes\": {\n \"propose\": \"Propose fixes\",\n \"again\": \"Propose again\",\n \"running\": \"Proposing fixes…\",\n \"review_one\": \"Review {{count}} proposal\",\n \"review_other\": \"Review {{count}} proposals\",\n \"none\": \"No fixes to propose.\",\n \"openSet_one\": \"{{count}} draft in a change set: review it\",\n \"openSet_other\": \"{{count}} drafts in a change set: review them\",\n \"nothingWritten\": \"No drafts written.\",\n \"skipped_one\": \"{{count}} left as it is\",\n \"skipped_other\": \"{{count}} left as they are\",\n \"altTitle\": \"Proposed alt text\",\n \"altDescription\": \"Proposed by {{model}}. Accepting saves the text to the file in the library.\",\n \"accept\": \"Accept\",\n \"reject\": \"Reject\",\n \"accepted\": \"Accepted\",\n \"rejected\": \"Rejected\"\n },\n \"settings\": {\n \"status\": \"Status\",\n \"on\": \"On\",\n \"off\": \"Off\",\n \"provider\": \"Provider\",\n \"model\": \"Model\",\n \"offDescription\": \"Editor assists are off: nothing is ever sent to a model provider. Whoever runs Shapio can turn them on with environment variables (AI_PROVIDER and AI_MODEL) and a restart.\",\n \"guide\": \"How to set up assist\",\n \"usage\": \"Usage in {{month}}\",\n \"runs\": \"Requests\",\n \"inputTokens\": \"Input tokens\",\n \"outputTokens\": \"Output tokens\",\n \"tryIt\": \"Try it\",\n \"tryText\": \"Text\"\n }\n },\n \"seo\": {\n \"builder\": {\n \"menu\": \"More ways to add\",\n \"field\": \"Field\",\n \"seoFields\": \"SEO fields\",\n \"askAdmin\": \"Ask a network admin to enable SEO.\",\n \"present\": \"This content type already has SEO fields.\",\n \"enableTitle\": \"Enable SEO for every site?\",\n \"enableDescription\": \"Adds a shared SEO component to the schema of every site in the network. Each content type still chooses whether to use it.\",\n \"enable\": \"Enable SEO\",\n \"enabling\": \"Enabling…\",\n \"added\": \"SEO fields added. Review to ship them.\",\n \"conflict\": \"A component called {{label}} already uses the API ID \\\"{{apiKey}}\\\". Change its API ID, then enable SEO again.\"\n },\n \"field\": {\n \"counter\": \"{{count}} of {{max}} characters\",\n \"counterOver\": \"{{count}} of {{max}} characters: search results may cut it off\",\n \"preview\": \"Search result preview\",\n \"noTitle\": \"No title yet\",\n \"noindex\": \"Hidden from search engines.\"\n },\n \"settings\": {\n \"title\": \"SEO\",\n \"textsTitle\": \"Default texts\",\n \"siteName\": \"Site name\",\n \"siteNameHint\": \"Shown as the title of pages that have none, and to social networks as the site's name.\",\n \"titleTemplate\": \"Title template\",\n \"titleTemplateHint\": \"How page titles appear in search results and browser tabs: %s is replaced by the page's title.\",\n \"titleTemplatePlaceholder\": \"%s · Site name\",\n \"description\": \"Default description\",\n \"descriptionHint\": \"Used for pages whose SEO description is empty.\",\n \"socialTitle\": \"Social sharing\",\n \"image\": \"Default social image\",\n \"imageHint\": \"Shown when a page with no image of its own is shared. Choose a public image.\",\n \"chooseImage\": \"Choose image\",\n \"changeImage\": \"Change image\",\n \"imagePrivate\": \"This image is private, so it would never be shown. Choose a public image or make this one public in the media library.\",\n \"twitterHandle\": \"Twitter handle\",\n \"twitterHandleHint\": \"The site's account on X (Twitter), for the twitter:site tag.\",\n \"twitterHandlePlaceholder\": \"@yoursite\",\n \"saved\": \"SEO settings saved.\",\n \"conflict\": \"Someone else changed the SEO settings. Reload to see their version, then make your changes again.\",\n \"reload\": \"Reload\"\n }\n }\n}\n","import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport en from '@/locales/en/translation.json';\n\nexport const DEFAULT_NAMESPACE = 'translation';\n\nexport const resources = { en: { [DEFAULT_NAMESPACE]: en } } as const;\n\n/** English is the only hand-edited source; other languages are added as translated copies of it. */\nexport const initI18n = () =>\n i18next.use(initReactI18next).init({\n resources,\n lng: 'en',\n fallbackLng: 'en',\n defaultNS: DEFAULT_NAMESPACE,\n // React escapes rendered strings already.\n interpolation: { escapeValue: false },\n returnNull: false,\n });\n\nexport { i18next };\n","import { ShapioApiError } from '@shapio/client';\nimport { i18next } from '@/app/i18n';\nimport en from '@/locales/en/translation.json';\n\ntype KnownErrorCode = keyof typeof en.errors.codes;\n\nconst isKnownErrorCode = (code: string): code is KnownErrorCode => Object.hasOwn(en.errors.codes, code);\n\n/** The translated sentence for a server error code, or undefined when the code has none. */\nexport const knownErrorMessage = (code: string): string | undefined =>\n isKnownErrorCode(code) ? i18next.t(`errors.codes.${code}`) : undefined;\n\n/**\n * A human-readable, translated message for a failed request. Known server error codes have their own\n * translation (`errors.codes.<CODE>`); otherwise the server's message is shown, which is more useful than a\n * generic one.\n */\nexport const describeError = (error: unknown): string => {\n if (error instanceof ShapioApiError) {\n return isKnownErrorCode(error.code) ? i18next.t(`errors.codes.${error.code}`) : error.message;\n }\n if (error instanceof TypeError) {\n return i18next.t('errors.network');\n }\n return i18next.t('errors.unexpected');\n};\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\n__name(setRef, \"setRef\");\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n__name(composeRefs, \"composeRefs\");\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\n__name(useComposedRefs, \"useComposedRefs\");\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/slot.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n let slottableElement = null;\n let hasSlottable = false;\n const newChildren = [];\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n React.Children.forEach(children, (maybeSlottable) => {\n if (isSlottable(maybeSlottable)) {\n hasSlottable = true;\n const slottable = maybeSlottable;\n let child = \"child\" in slottable.props ? slottable.props.child : slottable.props.children;\n if (isLazyComponent(child) && typeof use === \"function\") {\n child = use(child._payload);\n }\n slottableElement = getSlottableElementFromSlottable(slottable, child);\n newChildren.push(slottableElement?.props?.children);\n } else {\n newChildren.push(maybeSlottable);\n }\n });\n if (slottableElement) {\n slottableElement = React.cloneElement(slottableElement, void 0, newChildren);\n } else if (\n // A `Slottable` was found but it didn't resolve to a single element (e.g.\n // it wrapped multiple elements, text, or a render-prop `child` that\n // wasn't an element). Don't fall back to treating the `Slottable` wrapper\n // itself as the slot target — throw a descriptive error below instead.\n !hasSlottable && React.Children.count(children) === 1 && React.isValidElement(children)\n ) {\n slottableElement = children;\n }\n const slottableElementRef = slottableElement ? getElementRef(slottableElement) : void 0;\n const composedRef = useComposedRefs(forwardedRef, slottableElementRef);\n if (!slottableElement) {\n if (children || children === 0) {\n throw new Error(\n hasSlottable ? createSlottableError(ownerName) : createSlotError(ownerName)\n );\n }\n return children;\n }\n const mergedProps = mergeProps(slotProps, slottableElement.props ?? {});\n if (slottableElement.type !== React.Fragment) {\n mergedProps.ref = forwardedRef ? composedRef : slottableElementRef;\n }\n return React.cloneElement(slottableElement, mergedProps);\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\n__name(createSlot, \"createSlot\");\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\nvar SLOTTABLE_IDENTIFIER = Symbol.for(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = /* @__PURE__ */ __name((props) => \"child\" in props ? props.children(props.child) : props.children, \"Slottable\");\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\n__name(createSlottable, \"createSlottable\");\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nvar getSlottableElementFromSlottable = /* @__PURE__ */ __name((slottable, child) => {\n if (\"child\" in slottable.props) {\n const child2 = slottable.props.child;\n if (!React.isValidElement(child2)) return null;\n return React.cloneElement(child2, void 0, slottable.props.children(child2.props.children));\n }\n return React.isValidElement(child) ? child : null;\n}, \"getSlottableElementFromSlottable\");\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\n__name(mergeProps, \"mergeProps\");\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\n__name(getElementRef, \"getElementRef\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\n__name(isSlottable, \"isSlottable\");\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n__name(isLazyComponent, \"isLazyComponent\");\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\n__name(isPromiseLike, \"isPromiseLike\");\nvar createSlotError = /* @__PURE__ */ __name((ownerName) => {\n return `${ownerName} failed to slot onto its children. Expected a single React element child or \\`Slottable\\`.`;\n}, \"createSlotError\");\nvar createSlottableError = /* @__PURE__ */ __name((ownerName) => {\n return `${ownerName} failed to slot onto its \\`Slottable\\`. Expected \\`Slottable\\` to receive a single React element child.`;\n}, \"createSlottableError\");\nvar use = React[\" use \".trim().toString()];\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n__name(dispatchDiscreteCustomEvent, \"dispatchDiscreteCustomEvent\");\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n Context.displayName = rootComponentName + \"Context\";\n const Provider = /* @__PURE__ */ __name((props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n }, \"Provider\");\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, options = {}) {\n const { optional = false } = options;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n if (optional) return void 0;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n __name(useContext2, \"useContext\");\n return [Provider, useContext2];\n}\n__name(createContext2, \"createContext\");\n// @__NO_SIDE_EFFECTS__\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n BaseContext.displayName = rootComponentName + \"Context\";\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = /* @__PURE__ */ __name((props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n }, \"Provider\");\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope, options = {}) {\n const { optional = false } = options;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n if (optional) return void 0;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n __name(useContext2, \"useContext\");\n return [Provider, useContext2];\n }\n __name(createContext3, \"createContext\");\n const createScope = /* @__PURE__ */ __name(() => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return /* @__PURE__ */ __name(function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n }, \"useScope\");\n }, \"createScope\");\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\n__name(createContextScope, \"createContextScope\");\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = /* @__PURE__ */ __name(() => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return /* @__PURE__ */ __name(function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n }, \"useComposedScopes\");\n }, \"createScope\");\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n__name(composeContextScopes, \"composeContextScopes\");\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return /* @__PURE__ */ __name(function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n }, \"handleEvent\");\n}\n__name(composeEventHandlers, \"composeEventHandlers\");\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\n__name(getOwnerWindow, \"getOwnerWindow\");\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\n__name(getOwnerDocument, \"getOwnerDocument\");\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\n__name(getActiveElement, \"getActiveElement\");\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\n__name(isFrame, \"isFrame\");\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/use-effect-event.tsx\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport * as React from \"react\";\nvar useReactEffectEvent = React[\" useEffectEvent \".trim().toString()];\nvar useReactInsertionEffect = React[\" useInsertionEffect \".trim().toString()];\nfunction useEffectEvent(callback) {\n if (typeof useReactEffectEvent === \"function\") {\n return useReactEffectEvent(callback);\n }\n const ref = React.useRef(() => {\n throw new Error(\"Cannot call an event handler while rendering.\");\n });\n if (typeof useReactInsertionEffect === \"function\") {\n useReactInsertionEffect(() => {\n ref.current = callback;\n });\n } else {\n useLayoutEffect(() => {\n ref.current = callback;\n });\n }\n return React.useMemo(() => ((...args) => ref.current?.(...args)), []);\n}\n__name(useEffectEvent, \"useEffectEvent\");\nexport {\n useEffectEvent\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { IS_DEVELOPMENT } from \"@radix-ui/primitive/is-development\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = /* @__PURE__ */ __name(() => {\n }, \"onChange\"),\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (IS_DEVELOPMENT) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\n__name(useControllableState, \"useControllableState\");\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\n__name(useUncontrolledState, \"useUncontrolledState\");\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n__name(isFunction, \"isFunction\");\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { IS_DEVELOPMENT as IS_DEVELOPMENT2 } from \"@radix-ui/primitive/is-development\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (IS_DEVELOPMENT2) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\n__name(useControllableStateReducer, \"useControllableStateReducer\");\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n__name(useStateMachine, \"useStateMachine\");\n\n// src/presence.tsx\nvar Presence = /* @__PURE__ */ __name((props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useStableComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n}, \"Presence\");\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const mountAnimationNameRef = React2.useRef(void 0);\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n if (state === \"mounted\") {\n prevAnimationNameRef.current = mountAnimationNameRef.current ?? getAnimationName(stylesRef.current);\n mountAnimationNameRef.current = void 0;\n } else {\n prevAnimationNameRef.current = \"none\";\n }\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n mountAnimationNameRef.current = currentAnimationName;\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = /* @__PURE__ */ __name((event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n }, \"handleAnimationEnd\");\n const handleAnimationStart = /* @__PURE__ */ __name((event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n }, \"handleAnimationStart\");\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n if (node2) {\n const styles = getComputedStyle(node2);\n stylesRef.current = styles;\n mountAnimationNameRef.current = getAnimationName(styles);\n } else {\n stylesRef.current = null;\n }\n setNode(node2);\n }, [])\n };\n}\n__name(usePresence, \"usePresence\");\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\n__name(setRef, \"setRef\");\nfunction useStableComposedRefs(...refs) {\n const refsRef = React2.useRef(refs);\n refsRef.current = refs;\n return React2.useCallback((node) => {\n const currentRefs = refsRef.current;\n let hasCleanup = false;\n const cleanups = currentRefs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup === \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup === \"function\") {\n cleanup();\n } else {\n setRef(currentRefs[i], null);\n }\n }\n };\n }\n }, []);\n}\n__name(useStableComposedRefs, \"useStableComposedRefs\");\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\n__name(getAnimationName, \"getAnimationName\");\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\n__name(getElementRef, \"getElementRef\");\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\n__name(useId, \"useId\");\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => ((...args) => callbackRef.current?.(...args)), []);\n}\n__name(useCallbackRef, \"useCallbackRef\");\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set(),\n // Outside elements that belong to a layer's own dismiss affordance (eg, a\n // dialog overlay). Pressing them should dismiss the layer regardless of\n // whether or not they stop propagation.\n //\n // See https://github.com/radix-ui/primitives/issues/3346\n dismissableSurfaces: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function DismissableLayer2(props, forwardedRef) {\n const {\n disableOutsidePointerEvents = false,\n deferPointerDownOutside = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, setNode);\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [\n ...context.layersWithOutsidePointerEventsDisabled\n ].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = highestLayerWithOutsidePointerEventsDisabled ? layers.indexOf(highestLayerWithOutsidePointerEventsDisabled) : -1;\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const isDeferredPointerDownOutsideRef = React.useRef(false);\n const pointerDownOutside = usePointerDownOutside(\n (event) => {\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n },\n {\n ownerDocument,\n deferPointerDownOutside,\n isDeferredPointerDownOutsideRef,\n dismissableSurfaces: context.dismissableSurfaces,\n shouldHandlePointerDownOutside: React.useCallback(\n (target) => {\n if (!(target instanceof Node)) {\n return false;\n }\n const isPointerDownOnBranch = [...context.branches].some(\n (branch) => branch.contains(target)\n );\n return isPointerEventsEnabled && !isPointerDownOnBranch;\n },\n [context.branches, isPointerEventsEnabled]\n )\n }\n );\n const focusOutside = useFocusOutside((event) => {\n if (deferPointerDownOutside && isDeferredPointerDownOutsideRef.current) {\n return;\n }\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const isHighestLayer = node ? index === layers.length - 1 : false;\n const handleKeyDown = useCallbackRef((event) => {\n if (event.key !== \"Escape\") {\n return;\n }\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n });\n React.useEffect(() => {\n if (!isHighestLayer) {\n return;\n }\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [ownerDocument, isHighestLayer, handleKeyDown]);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents) {\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = /* @__PURE__ */ __name(() => force({}), \"handleUpdate\");\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }, \"DismissableLayer\")\n);\nvar DismissableLayerBranch = /* @__PURE__ */ React.forwardRef(/* @__PURE__ */ __name(function DismissableLayerBranch2(props, forwardedRef) {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n}, \"DismissableLayerBranch\"));\nfunction useDismissableLayerSurface() {\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n React.useEffect(() => {\n if (!node) {\n return;\n }\n context.dismissableSurfaces.add(node);\n return () => {\n context.dismissableSurfaces.delete(node);\n };\n }, [node, context.dismissableSurfaces]);\n return setNode;\n}\n__name(useDismissableLayerSurface, \"useDismissableLayerSurface\");\nvar IS_TRUE = /* @__PURE__ */ __name(() => true, \"IS_TRUE\");\nfunction usePointerDownOutside(onPointerDownOutside, args) {\n const {\n ownerDocument = globalThis?.document,\n deferPointerDownOutside = false,\n isDeferredPointerDownOutsideRef,\n dismissableSurfaces,\n shouldHandlePointerDownOutside = IS_TRUE\n } = args;\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const isPointerDownOutsideRef = React.useRef(false);\n const interceptedOutsideInteractionEventsRef = React.useRef(/* @__PURE__ */ new Map());\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n function resetOutsideInteraction() {\n isPointerDownOutsideRef.current = false;\n isDeferredPointerDownOutsideRef.current = false;\n interceptedOutsideInteractionEventsRef.current.clear();\n }\n __name(resetOutsideInteraction, \"resetOutsideInteraction\");\n function isOutsideInteractionIntercepted() {\n return Array.from(interceptedOutsideInteractionEventsRef.current.values()).some(Boolean);\n }\n __name(isOutsideInteractionIntercepted, \"isOutsideInteractionIntercepted\");\n function handleInteractionCapture(event) {\n if (!isPointerDownOutsideRef.current) {\n return;\n }\n const target = event.target;\n const isDismissableSurface = target instanceof Node && [...dismissableSurfaces].some((surface) => surface.contains(target));\n if (!isDismissableSurface) {\n interceptedOutsideInteractionEventsRef.current.set(event.type, true);\n }\n if (event.type === \"click\") {\n window.setTimeout(() => {\n if (isPointerDownOutsideRef.current) {\n handleClickRef.current();\n }\n }, 0);\n }\n }\n __name(handleInteractionCapture, \"handleInteractionCapture\");\n function handleInteractionBubble(event) {\n if (isPointerDownOutsideRef.current) {\n interceptedOutsideInteractionEventsRef.current.set(event.type, false);\n }\n }\n __name(handleInteractionBubble, \"handleInteractionBubble\");\n const handlePointerDown = /* @__PURE__ */ __name((event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n const wasOutsideInteractionIntercepted = isOutsideInteractionIntercepted();\n resetOutsideInteraction();\n if (!wasOutsideInteractionIntercepted) {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n }\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n __name(handleAndDispatchPointerDownOutsideEvent2, \"handleAndDispatchPointerDownOutsideEvent\");\n if (!shouldHandlePointerDownOutside(event.target)) {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n resetOutsideInteraction();\n isPointerInsideReactTreeRef.current = false;\n return;\n }\n const eventDetail = { originalEvent: event };\n isPointerDownOutsideRef.current = true;\n isDeferredPointerDownOutsideRef.current = deferPointerDownOutside && event.button === 0;\n interceptedOutsideInteractionEventsRef.current.clear();\n if (!deferPointerDownOutside || event.button !== 0) {\n handleAndDispatchPointerDownOutsideEvent2();\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n resetOutsideInteraction();\n }\n isPointerInsideReactTreeRef.current = false;\n }, \"handlePointerDown\");\n const outsideInteractionEvents = [\n \"pointerup\",\n \"mousedown\",\n \"mouseup\",\n \"touchstart\",\n \"touchend\",\n \"click\"\n ];\n for (const eventName of outsideInteractionEvents) {\n ownerDocument.addEventListener(eventName, handleInteractionCapture, true);\n ownerDocument.addEventListener(eventName, handleInteractionBubble);\n }\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n for (const eventName of outsideInteractionEvents) {\n ownerDocument.removeEventListener(eventName, handleInteractionCapture, true);\n ownerDocument.removeEventListener(eventName, handleInteractionBubble);\n }\n };\n }, [\n ownerDocument,\n handlePointerDownOutside,\n deferPointerDownOutside,\n isDeferredPointerDownOutsideRef,\n dismissableSurfaces,\n shouldHandlePointerDownOutside\n ]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: /* @__PURE__ */ __name(() => isPointerInsideReactTreeRef.current = true, \"onPointerDownCapture\")\n };\n}\n__name(usePointerDownOutside, \"usePointerDownOutside\");\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = /* @__PURE__ */ __name((event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n }, \"handleFocus\");\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: /* @__PURE__ */ __name(() => isFocusInsideReactTreeRef.current = true, \"onFocusCapture\"),\n onBlurCapture: /* @__PURE__ */ __name(() => isFocusInsideReactTreeRef.current = false, \"onBlurCapture\")\n };\n}\n__name(useFocusOutside, \"useFocusOutside\");\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\n__name(dispatchUpdate, \"dispatchUpdate\");\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\n__name(handleAndDispatchCustomEvent, \"handleAndDispatchCustomEvent\");\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root,\n useDismissableLayerSurface\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FocusScope = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function FocusScope2(props, forwardedRef) {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, setContainer);\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n __name(handleFocusIn2, \"handleFocusIn\");\n __name(handleFocusOut2, \"handleFocusOut\");\n __name(handleMutations2, \"handleMutations\");\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n }, \"FocusScope\")\n);\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\n__name(focusFirst, \"focusFirst\");\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\n__name(getTabbableEdges, \"getTabbableEdges\");\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: /* @__PURE__ */ __name((node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }, \"acceptNode\")\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\n__name(getTabbableCandidates, \"getTabbableCandidates\");\nfunction findVisible(elements, container) {\n const canUseCheckVisibility = typeof container.checkVisibility === \"function\" && container.checkVisibility({ checkVisibilityCSS: true });\n for (const element of elements) {\n const hidden = canUseCheckVisibility ? !element.checkVisibility({ checkVisibilityCSS: true }) : isHidden(element, { upTo: container });\n if (!hidden) {\n return element;\n }\n }\n}\n__name(findVisible, \"findVisible\");\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\n__name(isHidden, \"isHidden\");\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\n__name(isSelectableInput, \"isSelectableInput\");\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\n__name(focus, \"focus\");\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\n__name(createFocusScopesStack, \"createFocusScopesStack\");\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\n__name(arrayRemove, \"arrayRemove\");\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\n__name(removeLinks, \"removeLinks\");\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Portal = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function Portal2(props, forwardedRef) {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n }, \"Portal\")\n);\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nvar guards = null;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\n__name(FocusGuards, \"FocusGuards\");\nfunction useFocusGuards() {\n React.useEffect(() => {\n if (!guards) {\n guards = { start: createFocusGuard(), end: createFocusGuard() };\n }\n const { start, end } = guards;\n if (document.body.firstElementChild !== start) {\n document.body.insertAdjacentElement(\"afterbegin\", start);\n }\n if (document.body.lastElementChild !== end) {\n document.body.insertAdjacentElement(\"beforeend\", end);\n }\n count++;\n return () => {\n if (count === 1) {\n guards?.start.remove();\n guards?.end.remove();\n guards = null;\n }\n count = Math.max(0, count - 1);\n };\n }, []);\n}\n__name(useFocusGuards, \"useFocusGuards\");\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\n__name(createFocusGuard, \"createFocusGuard\");\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n"],"ignoreList":[0,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"mappings":"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"}