@payloadcms/ui 3.24.0-canary.72057b1 → 3.24.0-canary.80e034e

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 (346) hide show
  1. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  2. package/dist/elements/AppHeader/index.js +2 -4
  3. package/dist/elements/AppHeader/index.js.map +1 -1
  4. package/dist/elements/Autosave/index.d.ts.map +1 -1
  5. package/dist/elements/Autosave/index.js +143 -108
  6. package/dist/elements/Autosave/index.js.map +1 -1
  7. package/dist/elements/Banner/index.d.ts.map +1 -1
  8. package/dist/elements/Banner/index.js +1 -2
  9. package/dist/elements/Banner/index.js.map +1 -1
  10. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  11. package/dist/elements/BulkUpload/EditForm/index.js +6 -2
  12. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  13. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  14. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +22 -20
  15. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  16. package/dist/elements/Button/index.d.ts.map +1 -1
  17. package/dist/elements/Button/index.js +12 -12
  18. package/dist/elements/Button/index.js.map +1 -1
  19. package/dist/elements/Button/index.scss +21 -5
  20. package/dist/elements/Button/types.d.ts +5 -0
  21. package/dist/elements/Button/types.d.ts.map +1 -1
  22. package/dist/elements/Button/types.js.map +1 -1
  23. package/dist/elements/Card/index.d.ts +7 -3
  24. package/dist/elements/Card/index.d.ts.map +1 -1
  25. package/dist/elements/Card/index.js +0 -2
  26. package/dist/elements/Card/index.js.map +1 -1
  27. package/dist/elements/ConfirmationModal/index.d.ts +16 -0
  28. package/dist/elements/ConfirmationModal/index.d.ts.map +1 -0
  29. package/dist/elements/ConfirmationModal/index.js +158 -0
  30. package/dist/elements/ConfirmationModal/index.js.map +1 -0
  31. package/dist/elements/{GenerateConfirmation → ConfirmationModal}/index.scss +1 -1
  32. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  33. package/dist/elements/CopyLocaleData/index.js +220 -99
  34. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  35. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  36. package/dist/elements/DatePicker/DatePicker.js +2 -0
  37. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  38. package/dist/elements/DatePicker/types.d.ts +1 -0
  39. package/dist/elements/DatePicker/types.d.ts.map +1 -1
  40. package/dist/elements/DatePicker/types.js.map +1 -1
  41. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  42. package/dist/elements/DeleteDocument/index.js +37 -81
  43. package/dist/elements/DeleteDocument/index.js.map +1 -1
  44. package/dist/elements/DeleteDocument/index.scss +0 -29
  45. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  46. package/dist/elements/DeleteMany/index.js +17 -44
  47. package/dist/elements/DeleteMany/index.js.map +1 -1
  48. package/dist/elements/DeleteMany/index.scss +0 -29
  49. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  50. package/dist/elements/DocumentControls/index.js.map +1 -1
  51. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  52. package/dist/elements/DocumentLocked/index.js +67 -39
  53. package/dist/elements/DocumentLocked/index.js.map +1 -1
  54. package/dist/elements/DocumentTakeOver/index.d.ts.map +1 -1
  55. package/dist/elements/DocumentTakeOver/index.js +28 -12
  56. package/dist/elements/DocumentTakeOver/index.js.map +1 -1
  57. package/dist/elements/DuplicateDocument/index.d.ts +0 -1
  58. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  59. package/dist/elements/DuplicateDocument/index.js +31 -56
  60. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  61. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  62. package/dist/elements/EditMany/DrawerContent.js +3 -2
  63. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  64. package/dist/elements/EditUpload/index.js +1 -1
  65. package/dist/elements/EditUpload/index.js.map +1 -1
  66. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -0
  67. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  68. package/dist/elements/FileDetails/DraggableFileDetails/index.js +19 -17
  69. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  70. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +1 -0
  71. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  72. package/dist/elements/FileDetails/StaticFileDetails/index.js +2 -1
  73. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  74. package/dist/elements/FileDetails/index.d.ts +1 -0
  75. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  76. package/dist/elements/FileDetails/index.js.map +1 -1
  77. package/dist/elements/GenerateConfirmation/index.d.ts +1 -2
  78. package/dist/elements/GenerateConfirmation/index.d.ts.map +1 -1
  79. package/dist/elements/GenerateConfirmation/index.js +23 -47
  80. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  81. package/dist/elements/LeaveWithoutSaving/index.d.ts +0 -1
  82. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
  83. package/dist/elements/LeaveWithoutSaving/index.js +56 -113
  84. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  85. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  86. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +6 -2
  87. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  88. package/dist/elements/Link/formatUrl.d.ts +4 -0
  89. package/dist/elements/Link/formatUrl.d.ts.map +1 -0
  90. package/dist/elements/Link/formatUrl.js +87 -0
  91. package/dist/elements/Link/formatUrl.js.map +1 -0
  92. package/dist/elements/Link/index.d.ts +6 -0
  93. package/dist/elements/Link/index.d.ts.map +1 -0
  94. package/dist/elements/Link/index.js +58 -0
  95. package/dist/elements/Link/index.js.map +1 -0
  96. package/dist/elements/ListControls/index.d.ts +1 -0
  97. package/dist/elements/ListControls/index.d.ts.map +1 -1
  98. package/dist/elements/ListControls/index.js +14 -0
  99. package/dist/elements/ListControls/index.js.map +1 -1
  100. package/dist/elements/ListControls/index.scss +5 -0
  101. package/dist/elements/Localizer/LocalizerLabel/index.d.ts.map +1 -1
  102. package/dist/elements/Localizer/LocalizerLabel/index.js +11 -8
  103. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  104. package/dist/elements/Localizer/index.d.ts.map +1 -1
  105. package/dist/elements/Localizer/index.js +2 -0
  106. package/dist/elements/Localizer/index.js.map +1 -1
  107. package/dist/elements/Logout/index.d.ts +5 -0
  108. package/dist/elements/Logout/index.d.ts.map +1 -1
  109. package/dist/elements/Logout/index.js +10 -13
  110. package/dist/elements/Logout/index.js.map +1 -1
  111. package/dist/elements/Nav/context.d.ts.map +1 -1
  112. package/dist/elements/Nav/context.js +3 -1
  113. package/dist/elements/Nav/context.js.map +1 -1
  114. package/dist/elements/Pill/index.d.ts.map +1 -1
  115. package/dist/elements/Pill/index.js +1 -2
  116. package/dist/elements/Pill/index.js.map +1 -1
  117. package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  118. package/dist/elements/Popup/PopupButtonList/index.js +1 -2
  119. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  120. package/dist/elements/Popup/index.d.ts +1 -0
  121. package/dist/elements/Popup/index.d.ts.map +1 -1
  122. package/dist/elements/Popup/index.js +2 -0
  123. package/dist/elements/Popup/index.js.map +1 -1
  124. package/dist/elements/PreviewButton/index.d.ts +2 -1
  125. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  126. package/dist/elements/PreviewButton/index.js +2 -2
  127. package/dist/elements/PreviewButton/index.js.map +1 -1
  128. package/dist/elements/PreviewSizes/index.js +1 -1
  129. package/dist/elements/PreviewSizes/index.js.map +1 -1
  130. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts +1 -2
  131. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  132. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
  133. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts +2 -0
  134. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  135. package/dist/elements/PublishButton/ScheduleDrawer/index.js +6 -2
  136. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  137. package/dist/elements/PublishButton/index.d.ts +2 -3
  138. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  139. package/dist/elements/PublishButton/index.js +20 -17
  140. package/dist/elements/PublishButton/index.js.map +1 -1
  141. package/dist/elements/PublishMany/index.d.ts +0 -1
  142. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  143. package/dist/elements/PublishMany/index.js +19 -45
  144. package/dist/elements/PublishMany/index.js.map +1 -1
  145. package/dist/elements/RelationshipTable/index.d.ts +7 -2
  146. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  147. package/dist/elements/RelationshipTable/index.js +69 -23
  148. package/dist/elements/RelationshipTable/index.js.map +1 -1
  149. package/dist/elements/RelationshipTable/index.scss +6 -0
  150. package/dist/elements/SaveButton/index.d.ts +2 -3
  151. package/dist/elements/SaveButton/index.d.ts.map +1 -1
  152. package/dist/elements/SaveButton/index.js +3 -3
  153. package/dist/elements/SaveButton/index.js.map +1 -1
  154. package/dist/elements/SaveDraftButton/index.d.ts +2 -1
  155. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  156. package/dist/elements/SaveDraftButton/index.js +2 -2
  157. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  158. package/dist/elements/Status/index.d.ts.map +1 -1
  159. package/dist/elements/Status/index.js +173 -154
  160. package/dist/elements/Status/index.js.map +1 -1
  161. package/dist/elements/Status/index.scss +0 -41
  162. package/dist/elements/StayLoggedIn/index.d.ts +0 -1
  163. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  164. package/dist/elements/StayLoggedIn/index.js +48 -75
  165. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  166. package/dist/elements/StepNav/index.d.ts +5 -0
  167. package/dist/elements/StepNav/index.d.ts.map +1 -1
  168. package/dist/elements/StepNav/index.js +18 -25
  169. package/dist/elements/StepNav/index.js.map +1 -1
  170. package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts.map +1 -1
  171. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +12 -4
  172. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  173. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  174. package/dist/elements/Table/DefaultCell/index.js +1 -2
  175. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  176. package/dist/elements/Table/index.d.ts +1 -9
  177. package/dist/elements/Table/index.d.ts.map +1 -1
  178. package/dist/elements/Table/index.js.map +1 -1
  179. package/dist/elements/TableColumns/buildColumnState.d.ts +1 -2
  180. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
  181. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  182. package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts +20 -0
  183. package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts.map +1 -0
  184. package/dist/elements/TableColumns/buildPolymorphicColumnState.js +200 -0
  185. package/dist/elements/TableColumns/buildPolymorphicColumnState.js.map +1 -0
  186. package/dist/elements/TableColumns/index.d.ts +2 -3
  187. package/dist/elements/TableColumns/index.d.ts.map +1 -1
  188. package/dist/elements/TableColumns/index.js +4 -3
  189. package/dist/elements/TableColumns/index.js.map +1 -1
  190. package/dist/elements/Thumbnail/index.js +2 -2
  191. package/dist/elements/Thumbnail/index.js.map +1 -1
  192. package/dist/elements/UnpublishMany/index.d.ts +1 -2
  193. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  194. package/dist/elements/UnpublishMany/index.js +14 -42
  195. package/dist/elements/UnpublishMany/index.js.map +1 -1
  196. package/dist/elements/Upload/index.d.ts.map +1 -1
  197. package/dist/elements/Upload/index.js +5 -1
  198. package/dist/elements/Upload/index.js.map +1 -1
  199. package/dist/elements/ViewDescription/index.d.ts +2 -5
  200. package/dist/elements/ViewDescription/index.d.ts.map +1 -1
  201. package/dist/elements/ViewDescription/index.js +2 -2
  202. package/dist/elements/ViewDescription/index.js.map +1 -1
  203. package/dist/exports/client/{CodeEditor-BMYVMDNZ.js → CodeEditor-L6GW2VQ6.js} +2 -2
  204. package/dist/exports/client/{CodeEditor-BMYVMDNZ.js.map → CodeEditor-L6GW2VQ6.js.map} +0 -1
  205. package/dist/exports/client/{DatePicker-THCU4KZJ.js → DatePicker-HHQ6TPOW.js} +2 -2
  206. package/dist/exports/client/{DatePicker-THCU4KZJ.js.map → DatePicker-HHQ6TPOW.js.map} +0 -1
  207. package/dist/exports/client/chunk-5LKBKI4T.js.map +0 -1
  208. package/dist/exports/client/{chunk-EG3ZOHFS.js → chunk-IMEQ6NKQ.js} +2 -2
  209. package/dist/exports/client/{chunk-EG3ZOHFS.js.map → chunk-IMEQ6NKQ.js.map} +3 -4
  210. package/dist/exports/client/chunk-ZZDNSFEW.js +26 -0
  211. package/dist/exports/client/{chunk-CQQHQHCB.js.map → chunk-ZZDNSFEW.js.map} +4 -5
  212. package/dist/exports/client/index.d.ts +49 -4
  213. package/dist/exports/client/index.d.ts.map +1 -1
  214. package/dist/exports/client/index.js +23 -23
  215. package/dist/exports/client/index.js.map +4 -5
  216. package/dist/fields/Array/index.d.ts.map +1 -1
  217. package/dist/fields/Array/index.js +1 -2
  218. package/dist/fields/Array/index.js.map +1 -1
  219. package/dist/fields/Blocks/BlockRow.d.ts +1 -1
  220. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  221. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  222. package/dist/fields/Blocks/BlocksDrawer/index.d.ts +1 -1
  223. package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
  224. package/dist/fields/Blocks/BlocksDrawer/index.js +31 -23
  225. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  226. package/dist/fields/Blocks/RowActions.d.ts +1 -1
  227. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  228. package/dist/fields/Blocks/RowActions.js.map +1 -1
  229. package/dist/fields/Blocks/index.d.ts.map +1 -1
  230. package/dist/fields/Blocks/index.js +6 -4
  231. package/dist/fields/Blocks/index.js.map +1 -1
  232. package/dist/fields/DateTime/index.d.ts.map +1 -1
  233. package/dist/fields/DateTime/index.js +24 -6
  234. package/dist/fields/DateTime/index.js.map +1 -1
  235. package/dist/fields/JSON/index.d.ts.map +1 -1
  236. package/dist/fields/JSON/index.js +5 -6
  237. package/dist/fields/JSON/index.js.map +1 -1
  238. package/dist/fields/Join/index.d.ts.map +1 -1
  239. package/dist/fields/Join/index.js +28 -7
  240. package/dist/fields/Join/index.js.map +1 -1
  241. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  242. package/dist/fields/Relationship/optionsReducer.js +1 -0
  243. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  244. package/dist/fields/Select/Input.d.ts.map +1 -1
  245. package/dist/fields/Select/Input.js +2 -0
  246. package/dist/fields/Select/Input.js.map +1 -1
  247. package/dist/fields/Tabs/Tab/index.scss +2 -1
  248. package/dist/fields/Upload/Input.d.ts +1 -0
  249. package/dist/fields/Upload/Input.d.ts.map +1 -1
  250. package/dist/fields/Upload/Input.js.map +1 -1
  251. package/dist/fields/Upload/RelationshipContent/index.js +1 -1
  252. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  253. package/dist/forms/Form/index.d.ts.map +1 -1
  254. package/dist/forms/Form/index.js +24 -9
  255. package/dist/forms/Form/index.js.map +1 -1
  256. package/dist/forms/Form/initContextState.d.ts.map +1 -1
  257. package/dist/forms/Form/initContextState.js +2 -0
  258. package/dist/forms/Form/initContextState.js.map +1 -1
  259. package/dist/forms/Form/types.d.ts +6 -0
  260. package/dist/forms/Form/types.d.ts.map +1 -1
  261. package/dist/forms/Form/types.js.map +1 -1
  262. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  263. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +2 -1
  264. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  265. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  266. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js +1 -1
  267. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  268. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  269. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
  270. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  271. package/dist/icons/Dots/index.d.ts +7 -0
  272. package/dist/icons/Dots/index.d.ts.map +1 -0
  273. package/dist/icons/Dots/index.js +12 -0
  274. package/dist/icons/Dots/index.js.map +1 -0
  275. package/dist/icons/Dots/index.scss +27 -0
  276. package/dist/providers/Auth/index.d.ts.map +1 -1
  277. package/dist/providers/Auth/index.js +9 -13
  278. package/dist/providers/Auth/index.js.map +1 -1
  279. package/dist/providers/Config/index.d.ts +2 -2
  280. package/dist/providers/Config/index.d.ts.map +1 -1
  281. package/dist/providers/Config/index.js +17 -2
  282. package/dist/providers/Config/index.js.map +1 -1
  283. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  284. package/dist/providers/ListQuery/index.js +2 -1
  285. package/dist/providers/ListQuery/index.js.map +1 -1
  286. package/dist/providers/Root/index.d.ts.map +1 -1
  287. package/dist/providers/Root/index.js +44 -41
  288. package/dist/providers/Root/index.js.map +1 -1
  289. package/dist/providers/RouteTransition/ProgressBar/index.d.ts +17 -0
  290. package/dist/providers/RouteTransition/ProgressBar/index.d.ts.map +1 -0
  291. package/dist/providers/RouteTransition/ProgressBar/index.js +104 -0
  292. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -0
  293. package/dist/providers/RouteTransition/ProgressBar/index.scss +21 -0
  294. package/dist/providers/RouteTransition/index.d.ts +51 -0
  295. package/dist/providers/RouteTransition/index.d.ts.map +1 -0
  296. package/dist/providers/RouteTransition/index.js +133 -0
  297. package/dist/providers/RouteTransition/index.js.map +1 -0
  298. package/dist/providers/Selection/index.d.ts.map +1 -1
  299. package/dist/providers/Selection/index.js +5 -6
  300. package/dist/providers/Selection/index.js.map +1 -1
  301. package/dist/styles.css +1 -1
  302. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  303. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +3 -1
  304. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
  305. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
  306. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +4 -1
  307. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
  308. package/dist/utilities/buildTableState.d.ts +1 -2
  309. package/dist/utilities/buildTableState.d.ts.map +1 -1
  310. package/dist/utilities/buildTableState.js +72 -19
  311. package/dist/utilities/buildTableState.js.map +1 -1
  312. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  313. package/dist/utilities/copyDataFromLocale.js +22 -18
  314. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  315. package/dist/utilities/getClientConfig.js.map +1 -1
  316. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  317. package/dist/utilities/handleFormStateLocking.js +3 -6
  318. package/dist/utilities/handleFormStateLocking.js.map +1 -1
  319. package/dist/utilities/renderTable.d.ts +6 -4
  320. package/dist/utilities/renderTable.d.ts.map +1 -1
  321. package/dist/utilities/renderTable.js +49 -54
  322. package/dist/utilities/renderTable.js.map +1 -1
  323. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  324. package/dist/views/Edit/Auth/index.js +56 -55
  325. package/dist/views/Edit/Auth/index.js.map +1 -1
  326. package/dist/views/Edit/index.d.ts +2 -2
  327. package/dist/views/Edit/index.d.ts.map +1 -1
  328. package/dist/views/Edit/index.js +8 -4
  329. package/dist/views/Edit/index.js.map +1 -1
  330. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  331. package/dist/views/List/ListHeader/index.js +1 -4
  332. package/dist/views/List/ListHeader/index.js.map +1 -1
  333. package/dist/views/List/index.d.ts +2 -25
  334. package/dist/views/List/index.d.ts.map +1 -1
  335. package/dist/views/List/index.js +6 -6
  336. package/dist/views/List/index.js.map +1 -1
  337. package/dist/views/List/types.d.ts +1 -18
  338. package/dist/views/List/types.d.ts.map +1 -1
  339. package/dist/views/List/types.js.map +1 -1
  340. package/package.json +5 -5
  341. package/dist/elements/DuplicateDocument/index.scss +0 -42
  342. package/dist/elements/LeaveWithoutSaving/index.scss +0 -39
  343. package/dist/elements/PublishMany/index.scss +0 -39
  344. package/dist/elements/StayLoggedIn/index.scss +0 -40
  345. package/dist/elements/UnpublishMany/index.scss +0 -39
  346. package/dist/exports/client/chunk-CQQHQHCB.js +0 -26
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,CAAC,OAAO,KAAA,KAAK,IAAI,CAAA;IACjC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA0DpE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAS1C,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,CAAC,OAAO,KAAA,KAAK,IAAI,CAAA;IACjC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,qBA2CpE"}
@@ -1,16 +1,15 @@
1
1
  'use client';
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import { Modal, useModal } from '@faceless-ui/modal';
5
- import React from 'react';
4
+ import { useModal } from '@faceless-ui/modal';
5
+ import React, { useCallback } from 'react';
6
6
  import { toast } from 'sonner';
7
7
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
8
8
  import { useTranslation } from '../../providers/Translation/index.js';
9
9
  import { Button } from '../Button/index.js';
10
+ import { ConfirmationModal } from '../ConfirmationModal/index.js';
10
11
  import { Translation } from '../Translation/index.js';
11
- import './index.scss';
12
- const baseClass = 'generate-confirmation';
13
- export const GenerateConfirmation = props => {
12
+ export function GenerateConfirmation(props) {
14
13
  const {
15
14
  highlightField,
16
15
  setKey
@@ -25,12 +24,11 @@ export const GenerateConfirmation = props => {
25
24
  t
26
25
  } = useTranslation();
27
26
  const modalSlug = `generate-confirmation-${id}`;
28
- const handleGenerate = () => {
27
+ const handleGenerate = useCallback(() => {
29
28
  setKey();
30
- toggleModal(modalSlug);
31
29
  toast.success(t('authentication:newAPIKeyGenerated'));
32
30
  highlightField(true);
33
- };
31
+ }, [highlightField, setKey, t]);
34
32
  return /*#__PURE__*/_jsxs(React.Fragment, {
35
33
  children: [/*#__PURE__*/_jsx(Button, {
36
34
  buttonStyle: "secondary",
@@ -39,45 +37,23 @@ export const GenerateConfirmation = props => {
39
37
  },
40
38
  size: "small",
41
39
  children: t('authentication:generateNewAPIKey')
42
- }), /*#__PURE__*/_jsx(Modal, {
43
- className: baseClass,
44
- slug: modalSlug,
45
- children: /*#__PURE__*/_jsxs("div", {
46
- className: `${baseClass}__wrapper`,
47
- children: [/*#__PURE__*/_jsxs("div", {
48
- className: `${baseClass}__content`,
49
- children: [/*#__PURE__*/_jsx("h1", {
50
- children: t('authentication:confirmGeneration')
51
- }), /*#__PURE__*/_jsx("p", {
52
- children: /*#__PURE__*/_jsx(Translation, {
53
- elements: {
54
- 1: ({
55
- children
56
- }) => /*#__PURE__*/_jsx("strong", {
57
- children: children
58
- })
59
- },
60
- i18nKey: "authentication:generatingNewAPIKeyWillInvalidate",
61
- t: t
62
- })
63
- })]
64
- }), /*#__PURE__*/_jsxs("div", {
65
- className: `${baseClass}__controls`,
66
- children: [/*#__PURE__*/_jsx(Button, {
67
- buttonStyle: "secondary",
68
- onClick: () => {
69
- toggleModal(modalSlug);
70
- },
71
- size: "large",
72
- type: "button",
73
- children: t('general:cancel')
74
- }), /*#__PURE__*/_jsx(Button, {
75
- onClick: handleGenerate,
76
- children: t('authentication:generate')
77
- })]
78
- })]
79
- })
40
+ }), /*#__PURE__*/_jsx(ConfirmationModal, {
41
+ body: /*#__PURE__*/_jsx(Translation, {
42
+ elements: {
43
+ 1: ({
44
+ children
45
+ }) => /*#__PURE__*/_jsx("strong", {
46
+ children: children
47
+ })
48
+ },
49
+ i18nKey: "authentication:generatingNewAPIKeyWillInvalidate",
50
+ t: t
51
+ }),
52
+ confirmLabel: t('authentication:generate'),
53
+ heading: t('authentication:confirmGeneration'),
54
+ modalSlug: modalSlug,
55
+ onConfirm: handleGenerate
80
56
  })]
81
57
  });
82
- };
58
+ }
83
59
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Modal","useModal","React","toast","useDocumentInfo","useTranslation","Button","Translation","baseClass","GenerateConfirmation","props","highlightField","setKey","id","toggleModal","t","modalSlug","handleGenerate","success","_jsxs","Fragment","_jsx","buttonStyle","onClick","size","className","slug","elements","children","i18nKey","type"],"sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"sourcesContent":["'use client'\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Translation } from '../Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'generate-confirmation'\n\nexport type GenerateConfirmationProps = {\n highlightField: (Boolean) => void\n setKey: () => void\n}\n\nexport const GenerateConfirmation: React.FC<GenerateConfirmationProps> = (props) => {\n const { highlightField, setKey } = props\n\n const { id } = useDocumentInfo()\n const { toggleModal } = useModal()\n const { t } = useTranslation()\n\n const modalSlug = `generate-confirmation-${id}`\n\n const handleGenerate = () => {\n setKey()\n toggleModal(modalSlug)\n toast.success(t('authentication:newAPIKeyGenerated'))\n highlightField(true)\n }\n\n return (\n <React.Fragment>\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n size=\"small\"\n >\n {t('authentication:generateNewAPIKey')}\n </Button>\n <Modal className={baseClass} slug={modalSlug}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('authentication:confirmGeneration')}</h1>\n <p>\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"authentication:generatingNewAPIKeyWillInvalidate\"\n t={t}\n />\n </p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button onClick={handleGenerate}>{t('authentication:generate')}</Button>\n </div>\n </div>\n </Modal>\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AACA,SAASA,KAAK,EAAEC,QAAQ,QAAQ;AAChC,OAAOC,KAAA,MAAW;AAClB,SAASC,KAAK,QAAQ;AAEtB,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,WAAW,QAAQ;AAC5B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAOlB,OAAO,MAAMC,oBAAA,GAA6DC,KAAA;EACxE,MAAM;IAAEC,cAAc;IAAEC;EAAM,CAAE,GAAGF,KAAA;EAEnC,MAAM;IAAEG;EAAE,CAAE,GAAGT,eAAA;EACf,MAAM;IAAEU;EAAW,CAAE,GAAGb,QAAA;EACxB,MAAM;IAAEc;EAAC,CAAE,GAAGV,cAAA;EAEd,MAAMW,SAAA,GAAY,yBAAyBH,EAAA,EAAI;EAE/C,MAAMI,cAAA,GAAiBA,CAAA;IACrBL,MAAA;IACAE,WAAA,CAAYE,SAAA;IACZb,KAAA,CAAMe,OAAO,CAACH,CAAA,CAAE;IAChBJ,cAAA,CAAe;EACjB;EAEA,oBACEQ,KAAA,CAACjB,KAAA,CAAMkB,QAAQ;4BACbC,IAAA,CAACf,MAAA;MACCgB,WAAA,EAAY;MACZC,OAAA,EAASA,CAAA;QACPT,WAAA,CAAYE,SAAA;MACd;MACAQ,IAAA,EAAK;gBAEJT,CAAA,CAAE;qBAELM,IAAA,CAACrB,KAAA;MAAMyB,SAAA,EAAWjB,SAAA;MAAWkB,IAAA,EAAMV,SAAA;gBACjC,aAAAG,KAAA,CAAC;QAAIM,SAAA,EAAW,GAAGjB,SAAA,WAAoB;gCACrCW,KAAA,CAAC;UAAIM,SAAA,EAAW,GAAGjB,SAAA,WAAoB;kCACrCa,IAAA,CAAC;sBAAIN,CAAA,CAAE;2BACPM,IAAA,CAAC;sBACC,aAAAA,IAAA,CAACd,WAAA;cACCoB,QAAA,EAAU;gBACR,GAAG,CAAC;kBAAEC;gBAAQ,CAAE,kBAAKP,IAAA,CAAC;4BAAQO;;cAChC;cACAC,OAAA,EAAQ;cACRd,CAAA,EAAGA;;;yBAITI,KAAA,CAAC;UAAIM,SAAA,EAAW,GAAGjB,SAAA,YAAqB;kCACtCa,IAAA,CAACf,MAAA;YACCgB,WAAA,EAAY;YACZC,OAAA,EAASA,CAAA;cACPT,WAAA,CAAYE,SAAA;YACd;YACAQ,IAAA,EAAK;YACLM,IAAA,EAAK;sBAEJf,CAAA,CAAE;2BAELM,IAAA,CAACf,MAAA;YAAOiB,OAAA,EAASN,cAAA;sBAAiBF,CAAA,CAAE;;;;;;AAMhD","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","React","useCallback","toast","useDocumentInfo","useTranslation","Button","ConfirmationModal","Translation","GenerateConfirmation","props","highlightField","setKey","id","toggleModal","t","modalSlug","handleGenerate","success","_jsxs","Fragment","_jsx","buttonStyle","onClick","size","body","elements","children","i18nKey","confirmLabel","heading","onConfirm"],"sources":["../../../src/elements/GenerateConfirmation/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { Translation } from '../Translation/index.js'\n\nexport type GenerateConfirmationProps = {\n highlightField: (Boolean) => void\n setKey: () => void\n}\n\nexport function GenerateConfirmation(props: GenerateConfirmationProps) {\n const { highlightField, setKey } = props\n\n const { id } = useDocumentInfo()\n const { toggleModal } = useModal()\n const { t } = useTranslation()\n\n const modalSlug = `generate-confirmation-${id}`\n\n const handleGenerate = useCallback(() => {\n setKey()\n toast.success(t('authentication:newAPIKeyGenerated'))\n highlightField(true)\n }, [highlightField, setKey, t])\n\n return (\n <React.Fragment>\n <Button\n buttonStyle=\"secondary\"\n onClick={() => {\n toggleModal(modalSlug)\n }}\n size=\"small\"\n >\n {t('authentication:generateNewAPIKey')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n 1: ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"authentication:generatingNewAPIKeyWillInvalidate\"\n t={t}\n />\n }\n confirmLabel={t('authentication:generate')}\n heading={t('authentication:confirmGeneration')}\n modalSlug={modalSlug}\n onConfirm={handleGenerate}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AACA,SAASA,QAAQ,QAAQ;AACzB,OAAOC,KAAA,IAASC,WAAW,QAAQ;AACnC,SAASC,KAAK,QAAQ;AAEtB,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,WAAW,QAAQ;AAO5B,OAAO,SAASC,qBAAqBC,KAAgC;EACnE,MAAM;IAAEC,cAAc;IAAEC;EAAM,CAAE,GAAGF,KAAA;EAEnC,MAAM;IAAEG;EAAE,CAAE,GAAGT,eAAA;EACf,MAAM;IAAEU;EAAW,CAAE,GAAGd,QAAA;EACxB,MAAM;IAAEe;EAAC,CAAE,GAAGV,cAAA;EAEd,MAAMW,SAAA,GAAY,yBAAyBH,EAAA,EAAI;EAE/C,MAAMI,cAAA,GAAiBf,WAAA,CAAY;IACjCU,MAAA;IACAT,KAAA,CAAMe,OAAO,CAACH,CAAA,CAAE;IAChBJ,cAAA,CAAe;EACjB,GAAG,CAACA,cAAA,EAAgBC,MAAA,EAAQG,CAAA,CAAE;EAE9B,oBACEI,KAAA,CAAClB,KAAA,CAAMmB,QAAQ;4BACbC,IAAA,CAACf,MAAA;MACCgB,WAAA,EAAY;MACZC,OAAA,EAASA,CAAA;QACPT,WAAA,CAAYE,SAAA;MACd;MACAQ,IAAA,EAAK;gBAEJT,CAAA,CAAE;qBAELM,IAAA,CAACd,iBAAA;MACCkB,IAAA,eACEJ,IAAA,CAACb,WAAA;QACCkB,QAAA,EAAU;UACR,GAAG,CAAC;YAAEC;UAAQ,CAAE,kBAAKN,IAAA,CAAC;sBAAQM;;QAChC;QACAC,OAAA,EAAQ;QACRb,CAAA,EAAGA;;MAGPc,YAAA,EAAcd,CAAA,CAAE;MAChBe,OAAA,EAASf,CAAA,CAAE;MACXC,SAAA,EAAWA,SAAA;MACXe,SAAA,EAAWd;;;AAInB","ignoreList":[]}
@@ -1,4 +1,3 @@
1
1
  import React from 'react';
2
- import './index.scss';
3
2
  export declare const LeaveWithoutSaving: React.FC;
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/LeaveWithoutSaving/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiC,MAAM,OAAO,CAAA;AAOrD,OAAO,cAAc,CAAA;AAkDrB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EA8BtC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/LeaveWithoutSaving/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsB,MAAM,OAAO,CAAA;AAa1C,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAuCtC,CAAA"}
@@ -1,166 +1,109 @@
1
1
  'use client';
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
- import React, { useCallback, useEffect } from 'react';
6
- import { useFormModified } from '../../forms/Form/index.js';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import React, { useCallback } from 'react';
6
+ import { useForm, useFormModified } from '../../forms/Form/index.js';
7
7
  import { useAuth } from '../../providers/Auth/index.js';
8
8
  import { useTranslation } from '../../providers/Translation/index.js';
9
- import { Button } from '../Button/index.js';
10
- import { Modal, useModal } from '../Modal/index.js';
11
- import './index.scss';
9
+ import { ConfirmationModal } from '../ConfirmationModal/index.js';
10
+ import { useModal } from '../Modal/index.js';
12
11
  import { usePreventLeave } from './usePreventLeave.js';
13
12
  const modalSlug = 'leave-without-saving';
14
- const baseClass = 'leave-without-saving';
15
- const Component = t0 => {
16
- const $ = _c(9);
17
- const {
18
- isActive,
19
- onCancel,
20
- onConfirm
21
- } = t0;
13
+ export const LeaveWithoutSaving = () => {
14
+ const $ = _c(15);
22
15
  const {
23
16
  closeModal,
24
17
  openModal
25
18
  } = useModal();
26
- const {
27
- t
28
- } = useTranslation();
29
- let t1;
30
- let t2;
31
- if ($[0] !== closeModal || $[1] !== isActive || $[2] !== openModal) {
32
- t1 = () => {
33
- if (isActive) {
34
- openModal(modalSlug);
35
- } else {
36
- closeModal(modalSlug);
37
- }
38
- };
39
- t2 = [isActive, openModal, closeModal];
40
- $[0] = closeModal;
41
- $[1] = isActive;
42
- $[2] = openModal;
43
- $[3] = t1;
44
- $[4] = t2;
45
- } else {
46
- t1 = $[3];
47
- t2 = $[4];
48
- }
49
- useEffect(t1, t2);
50
- let t3;
51
- if ($[5] !== onCancel || $[6] !== onConfirm || $[7] !== t) {
52
- t3 = _jsx(Modal, {
53
- className: baseClass,
54
- onClose: onCancel,
55
- slug: modalSlug,
56
- children: _jsxs("div", {
57
- className: `${baseClass}__wrapper`,
58
- children: [_jsxs("div", {
59
- className: `${baseClass}__content`,
60
- children: [_jsx("h1", {
61
- children: t("general:leaveWithoutSaving")
62
- }), _jsx("p", {
63
- children: t("general:changesNotSaved")
64
- })]
65
- }), _jsxs("div", {
66
- className: `${baseClass}__controls`,
67
- children: [_jsx(Button, {
68
- buttonStyle: "secondary",
69
- onClick: onCancel,
70
- size: "large",
71
- children: t("general:stayOnThisPage")
72
- }), _jsx(Button, {
73
- onClick: onConfirm,
74
- size: "large",
75
- children: t("general:leaveAnyway")
76
- })]
77
- })]
78
- })
79
- });
80
- $[5] = onCancel;
81
- $[6] = onConfirm;
82
- $[7] = t;
83
- $[8] = t3;
84
- } else {
85
- t3 = $[8];
86
- }
87
- return t3;
88
- };
89
- export const LeaveWithoutSaving = () => {
90
- const $ = _c(11);
91
- const {
92
- closeModal
93
- } = useModal();
94
19
  const modified = useFormModified();
20
+ const {
21
+ isValid
22
+ } = useForm();
95
23
  const {
96
24
  user
97
25
  } = useAuth();
98
- const [show, setShow] = React.useState(false);
99
26
  const [hasAccepted, setHasAccepted] = React.useState(false);
100
- const prevent = Boolean(modified && user);
27
+ const {
28
+ t
29
+ } = useTranslation();
30
+ const prevent = Boolean((modified || !isValid) && user);
101
31
  let t0;
102
- if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
32
+ if ($[0] !== openModal) {
103
33
  t0 = () => {
104
- setShow(true);
34
+ openModal(modalSlug);
105
35
  };
106
- $[0] = t0;
36
+ $[0] = openModal;
37
+ $[1] = t0;
107
38
  } else {
108
- t0 = $[0];
39
+ t0 = $[1];
109
40
  }
110
41
  const onPrevent = t0;
111
42
  let t1;
112
- if ($[1] !== closeModal) {
43
+ if ($[2] !== closeModal) {
113
44
  t1 = () => {
114
45
  closeModal(modalSlug);
115
46
  };
116
- $[1] = closeModal;
117
- $[2] = t1;
47
+ $[2] = closeModal;
48
+ $[3] = t1;
118
49
  } else {
119
- t1 = $[2];
50
+ t1 = $[3];
120
51
  }
121
52
  const handleAccept = t1;
122
53
  let t2;
123
- if ($[3] !== handleAccept || $[4] !== hasAccepted || $[5] !== prevent) {
54
+ if ($[4] !== handleAccept || $[5] !== hasAccepted || $[6] !== onPrevent || $[7] !== prevent) {
124
55
  t2 = {
125
56
  hasAccepted,
126
57
  onAccept: handleAccept,
127
58
  onPrevent,
128
59
  prevent
129
60
  };
130
- $[3] = handleAccept;
131
- $[4] = hasAccepted;
132
- $[5] = prevent;
133
- $[6] = t2;
61
+ $[4] = handleAccept;
62
+ $[5] = hasAccepted;
63
+ $[6] = onPrevent;
64
+ $[7] = prevent;
65
+ $[8] = t2;
134
66
  } else {
135
- t2 = $[6];
67
+ t2 = $[8];
136
68
  }
137
69
  usePreventLeave(t2);
138
70
  let t3;
139
- let t4;
140
- if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
71
+ if ($[9] !== closeModal) {
141
72
  t3 = () => {
142
- setShow(false);
73
+ closeModal(modalSlug);
143
74
  };
75
+ $[9] = closeModal;
76
+ $[10] = t3;
77
+ } else {
78
+ t3 = $[10];
79
+ }
80
+ const onCancel = t3;
81
+ let t4;
82
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
144
83
  t4 = () => {
145
84
  setHasAccepted(true);
146
85
  };
147
- $[7] = t3;
148
- $[8] = t4;
86
+ $[11] = t4;
149
87
  } else {
150
- t3 = $[7];
151
- t4 = $[8];
88
+ t4 = $[11];
152
89
  }
90
+ const onConfirm = t4;
153
91
  let t5;
154
- if ($[9] !== show) {
155
- t5 = _jsx(Component, {
156
- isActive: show,
157
- onCancel: t3,
158
- onConfirm: t4
92
+ if ($[12] !== onCancel || $[13] !== t) {
93
+ t5 = _jsx(ConfirmationModal, {
94
+ body: t("general:changesNotSaved"),
95
+ cancelLabel: t("general:stayOnThisPage"),
96
+ confirmLabel: t("general:leaveAnyway"),
97
+ heading: t("general:leaveWithoutSaving"),
98
+ modalSlug,
99
+ onCancel,
100
+ onConfirm
159
101
  });
160
- $[9] = show;
161
- $[10] = t5;
102
+ $[12] = onCancel;
103
+ $[13] = t;
104
+ $[14] = t5;
162
105
  } else {
163
- t5 = $[10];
106
+ t5 = $[14];
164
107
  }
165
108
  return t5;
166
109
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useEffect","useFormModified","useAuth","useTranslation","Button","Modal","useModal","usePreventLeave","modalSlug","baseClass","Component","t0","$","isActive","onCancel","onConfirm","closeModal","openModal","t","t1","t2","t3","_jsx","className","onClose","slug","children","_jsxs","buttonStyle","onClick","size","LeaveWithoutSaving","modified","user","show","setShow","useState","hasAccepted","setHasAccepted","prevent","Boolean","Symbol","for","onPrevent","handleAccept","onAccept","t4","t5"],"sources":["../../../src/elements/LeaveWithoutSaving/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useEffect } from 'react'\n\nimport { useFormModified } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Modal, useModal } from '../Modal/index.js'\nimport './index.scss'\nimport { usePreventLeave } from './usePreventLeave.js'\n\nconst modalSlug = 'leave-without-saving'\n\nconst baseClass = 'leave-without-saving'\n\nconst Component: React.FC<{\n isActive: boolean\n onCancel: () => void\n onConfirm: () => void\n}> = ({ isActive, onCancel, onConfirm }) => {\n const { closeModal, modalState, openModal } = useModal()\n const { t } = useTranslation()\n\n // Manually check for modal state as 'esc' key will not trigger the nav inactivity\n // useEffect(() => {\n // if (!modalState?.[modalSlug]?.isOpen && isActive) {\n // onCancel()\n // }\n // }, [modalState, isActive, onCancel])\n\n useEffect(() => {\n if (isActive) {\n openModal(modalSlug)\n } else {\n closeModal(modalSlug)\n }\n }, [isActive, openModal, closeModal])\n\n return (\n <Modal className={baseClass} onClose={onCancel} slug={modalSlug}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('general:leaveWithoutSaving')}</h1>\n <p>{t('general:changesNotSaved')}</p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button buttonStyle=\"secondary\" onClick={onCancel} size=\"large\">\n {t('general:stayOnThisPage')}\n </Button>\n <Button onClick={onConfirm} size=\"large\">\n {t('general:leaveAnyway')}\n </Button>\n </div>\n </div>\n </Modal>\n )\n}\n\nexport const LeaveWithoutSaving: React.FC = () => {\n const { closeModal } = useModal()\n const modified = useFormModified()\n const { user } = useAuth()\n const [show, setShow] = React.useState(false)\n const [hasAccepted, setHasAccepted] = React.useState(false)\n\n const prevent = Boolean(modified && user)\n\n const onPrevent = useCallback(() => {\n setShow(true)\n }, [])\n\n const handleAccept = useCallback(() => {\n closeModal(modalSlug)\n }, [closeModal])\n\n usePreventLeave({ hasAccepted, onAccept: handleAccept, onPrevent, prevent })\n\n return (\n <Component\n isActive={show}\n onCancel={() => {\n setShow(false)\n }}\n onConfirm={() => {\n setHasAccepted(true)\n }}\n />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,QAAQ;AAE9C,SAASC,eAAe,QAAQ;AAChC,SAASC,OAAO,QAAQ;AACxB,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,KAAK,EAAEC,QAAQ,QAAQ;AAChC,OAAO;AACP,SAASC,eAAe,QAAQ;AAEhC,MAAMC,SAAA,GAAY;AAElB,MAAMC,SAAA,GAAY;AAElB,MAAMC,SAAA,GAIDC,EAAA;EAAA,MAAAC,CAAA,GAAAf,EAAA;EAAC;IAAAgB,QAAA;IAAAC,QAAA;IAAAC;EAAA,IAAAJ,EAAiC;EACrC;IAAAK,UAAA;IAAAC;EAAA,IAA8CX,QAAA;EAC9C;IAAAY;EAAA,IAAcf,cAAA;EAAA,IAAAgB,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAI,UAAA,IAAAJ,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAK,SAAA;IASJE,EAAA,GAAAA,CAAA;MAAA,IACJN,QAAA;QACFI,SAAA,CAAAT,SAAU;MAAA;QAEVQ,UAAA,CAAAR,SAAW;MAAA;IAAA;IAEZY,EAAA,IAACP,QAAA,EAAUI,SAAA,EAAWD,UAAA;IAAWJ,CAAA,MAAAI,UAAA;IAAAJ,CAAA,MAAAC,QAAA;IAAAD,CAAA,MAAAK,SAAA;IAAAL,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;EAAA;IAAAD,EAAA,GAAAP,CAAA;IAAAQ,EAAA,GAAAR,CAAA;EAAA;EANpCZ,SAAA,CAAUmB,EAMV,EAAGC,EAAiC;EAAA,IAAAC,EAAA;EAAA,IAAAT,CAAA,QAAAE,QAAA,IAAAF,CAAA,QAAAG,SAAA,IAAAH,CAAA,QAAAM,CAAA;IAGlCG,EAAA,GAAAC,IAAA,CAAAjB,KAAA;MAAAkB,SAAA,EAAAd,SAAA;MAAAe,OAAA,EAAsCV,QAAA;MAAAW,IAAA,EAAAjB,SAAA;MAAAkB,QAAA,EACpCC,KAAA,CAAC;QAAAJ,SAAA,EAAe,GAAAd,SAAA,WAAuB;QAAAiB,QAAA,GACrCC,KAAA,CAAC;UAAAJ,SAAA,EAAe,GAAAd,SAAA,WAAuB;UAAAiB,QAAA,GACrCJ,IAAA,CAAC;YAAAI,QAAA,EAAIR,CAAA,CAAE;UAAA,C,GACPI,IAAA,CAAC;YAAAI,QAAA,EAAGR,CAAA,CAAE;UAAA,C;YAERS,KAAA,CAAC;UAAAJ,SAAA,EAAe,GAAAd,SAAA,YAAwB;UAAAiB,QAAA,GACtCJ,IAAA,CAAAlB,MAAA;YAAAwB,WAAA,EAAoB;YAAAC,OAAA,EAAqBf,QAAA;YAAAgB,IAAA,EAAe;YAAAJ,QAAA,EACrDR,CAAA,CAAE;UAAA,C,GAELI,IAAA,CAAAlB,MAAA;YAAAyB,OAAA,EAAiBd,SAAA;YAAAe,IAAA,EAAgB;YAAAJ,QAAA,EAC9BR,CAAA,CAAE;UAAA,C;;;;;;;;;;;SAXXG,E;CAiBJ;AAEA,OAAO,MAAMU,kBAAA,GAA+BA,CAAA;EAAA,MAAAnB,CAAA,GAAAf,EAAA;EAC1C;IAAAmB;EAAA,IAAuBV,QAAA;EACvB,MAAA0B,QAAA,GAAiB/B,eAAA;EACjB;IAAAgC;EAAA,IAAiB/B,OAAA;EACjB,OAAAgC,IAAA,EAAAC,OAAA,IAAwBrC,KAAA,CAAAsC,QAAA,MAAe;EACvC,OAAAC,WAAA,EAAAC,cAAA,IAAsCxC,KAAA,CAAAsC,QAAA,MAAe;EAErD,MAAAG,OAAA,GAAgBC,OAAA,CAAQR,QAAA,IAAYC,IAAA;EAAA,IAAAtB,EAAA;EAAA,IAAAC,CAAA,QAAA6B,MAAA,CAAAC,GAAA;IAEN/B,EAAA,GAAAA,CAAA;MAC5BwB,OAAA,KAAQ;IAAA;IACVvB,CAAA,MAAAD,EAAA;EAAA;IAAAA,EAAA,GAAAC,CAAA;EAAA;EAFA,MAAA+B,SAAA,GAAkBhC,EAEb;EAAA,IAAAQ,EAAA;EAAA,IAAAP,CAAA,QAAAI,UAAA;IAE4BG,EAAA,GAAAA,CAAA;MAC/BH,UAAA,CAAAR,SAAW;IAAA;IACbI,CAAA,MAAAI,UAAA;IAAAJ,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAFA,MAAAgC,YAAA,GAAqBzB,EAEN;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAgC,YAAA,IAAAhC,CAAA,QAAAyB,WAAA,IAAAzB,CAAA,QAAA2B,OAAA;IAECnB,EAAA;MAAAiB,WAAA;MAAAQ,QAAA,EAAyBD,YAAA;MAAAD,SAAA;MAAAJ;IAAA;IAAiC3B,CAAA,MAAAgC,YAAA;IAAAhC,CAAA,MAAAyB,WAAA;IAAAzB,CAAA,MAAA2B,OAAA;IAAA3B,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAA1EL,eAAA,CAAgBa,EAA0D;EAAA,IAAAC,EAAA;EAAA,IAAAyB,EAAA;EAAA,IAAAlC,CAAA,QAAA6B,MAAA,CAAAC,GAAA;IAK5DrB,EAAA,GAAAA,CAAA;MACRc,OAAA,MAAQ;IAAA;IAECW,EAAA,GAAAA,CAAA;MACTR,cAAA,KAAe;IAAA;IACjB1B,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAkC,EAAA;EAAA;IAAAzB,EAAA,GAAAT,CAAA;IAAAkC,EAAA,GAAAlC,CAAA;EAAA;EAAA,IAAAmC,EAAA;EAAA,IAAAnC,CAAA,QAAAsB,IAAA;IAPFa,EAAA,GAAAzB,IAAA,CAAAZ,SAAA;MAAAG,QAAA,EACYqB,IAAA;MAAApB,QAAA,EACAO,EAEV;MAAAN,SAAA,EACW+B;IAEX,C;;;;;;SAPFC,E;CAUJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useForm","useFormModified","useAuth","useTranslation","ConfirmationModal","useModal","usePreventLeave","modalSlug","LeaveWithoutSaving","$","closeModal","openModal","modified","isValid","user","hasAccepted","setHasAccepted","useState","t","prevent","Boolean","t0","onPrevent","t1","handleAccept","t2","onAccept","t3","onCancel","t4","Symbol","for","onConfirm","t5","_jsx","body","cancelLabel","confirmLabel","heading"],"sources":["../../../src/elements/LeaveWithoutSaving/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback } from 'react'\n\nimport type { OnCancel } from '../ConfirmationModal/index.js'\n\nimport { useForm, useFormModified } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { useModal } from '../Modal/index.js'\nimport { usePreventLeave } from './usePreventLeave.js'\n\nconst modalSlug = 'leave-without-saving'\n\nexport const LeaveWithoutSaving: React.FC = () => {\n const { closeModal, openModal } = useModal()\n const modified = useFormModified()\n const { isValid } = useForm()\n const { user } = useAuth()\n const [hasAccepted, setHasAccepted] = React.useState(false)\n const { t } = useTranslation()\n\n const prevent = Boolean((modified || !isValid) && user)\n\n const onPrevent = useCallback(() => {\n openModal(modalSlug)\n }, [openModal])\n\n const handleAccept = useCallback(() => {\n closeModal(modalSlug)\n }, [closeModal])\n\n usePreventLeave({ hasAccepted, onAccept: handleAccept, onPrevent, prevent })\n\n const onCancel: OnCancel = useCallback(() => {\n closeModal(modalSlug)\n }, [closeModal])\n\n const onConfirm = useCallback(() => {\n setHasAccepted(true)\n }, [])\n\n return (\n <ConfirmationModal\n body={t('general:changesNotSaved')}\n cancelLabel={t('general:stayOnThisPage')}\n confirmLabel={t('general:leaveAnyway')}\n heading={t('general:leaveWithoutSaving')}\n modalSlug={modalSlug}\n onCancel={onCancel}\n onConfirm={onConfirm}\n />\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,WAAW,QAAQ;AAInC,SAASC,OAAO,EAAEC,eAAe,QAAQ;AACzC,SAASC,OAAO,QAAQ;AACxB,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,QAAQ,QAAQ;AACzB,SAASC,eAAe,QAAQ;AAEhC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,kBAAA,GAA+BA,CAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EAC1C;IAAAa,UAAA;IAAAC;EAAA,IAAkCN,QAAA;EAClC,MAAAO,QAAA,GAAiBX,eAAA;EACjB;IAAAY;EAAA,IAAoBb,OAAA;EACpB;IAAAc;EAAA,IAAiBZ,OAAA;EACjB,OAAAa,WAAA,EAAAC,cAAA,IAAsClB,KAAA,CAAAmB,QAAA,MAAe;EACrD;IAAAC;EAAA,IAAcf,cAAA;EAEd,MAAAgB,OAAA,GAAgBC,OAAA,CAAQ,CAACR,QAAA,KAAaC,OAAM,KAAMC,IAAA;EAAA,IAAAO,EAAA;EAAA,IAAAZ,CAAA,QAAAE,SAAA;IAEpBU,EAAA,GAAAA,CAAA;MAC5BV,SAAA,CAAAJ,SAAU;IAAA;IACZE,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAY,EAAA;EAAA;IAAAA,EAAA,GAAAZ,CAAA;EAAA;EAFA,MAAAa,SAAA,GAAkBD,EAEJ;EAAA,IAAAE,EAAA;EAAA,IAAAd,CAAA,QAAAC,UAAA;IAEmBa,EAAA,GAAAA,CAAA;MAC/Bb,UAAA,CAAAH,SAAW;IAAA;IACbE,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAFA,MAAAe,YAAA,GAAqBD,EAEN;EAAA,IAAAE,EAAA;EAAA,IAAAhB,CAAA,QAAAe,YAAA,IAAAf,CAAA,QAAAM,WAAA,IAAAN,CAAA,QAAAa,SAAA,IAAAb,CAAA,QAAAU,OAAA;IAECM,EAAA;MAAAV,WAAA;MAAAW,QAAA,EAAyBF,YAAA;MAAAF,SAAA;MAAAH;IAAA;IAAiCV,CAAA,MAAAe,YAAA;IAAAf,CAAA,MAAAM,WAAA;IAAAN,CAAA,MAAAa,SAAA;IAAAb,CAAA,MAAAU,OAAA;IAAAV,CAAA,MAAAgB,EAAA;EAAA;IAAAA,EAAA,GAAAhB,CAAA;EAAA;EAA1EH,eAAA,CAAgBmB,EAA0D;EAAA,IAAAE,EAAA;EAAA,IAAAlB,CAAA,QAAAC,UAAA;IAEnCiB,EAAA,GAAAA,CAAA;MACrCjB,UAAA,CAAAH,SAAW;IAAA;IACbE,CAAA,MAAAC,UAAA;IAAAD,CAAA,OAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EAFA,MAAAmB,QAAA,GAA2BD,EAEZ;EAAA,IAAAE,EAAA;EAAA,IAAApB,CAAA,SAAAqB,MAAA,CAAAC,GAAA;IAEeF,EAAA,GAAAA,CAAA;MAC5Bb,cAAA,KAAe;IAAA;IACjBP,CAAA,OAAAoB,EAAA;EAAA;IAAAA,EAAA,GAAApB,CAAA;EAAA;EAFA,MAAAuB,SAAA,GAAkBH,EAEb;EAAA,IAAAI,EAAA;EAAA,IAAAxB,CAAA,SAAAmB,QAAA,IAAAnB,CAAA,SAAAS,CAAA;IAGHe,EAAA,GAAAC,IAAA,CAAA9B,iBAAA;MAAA+B,IAAA,EACQjB,CAAA,CAAE;MAAAkB,WAAA,EACKlB,CAAA,CAAE;MAAAmB,YAAA,EACDnB,CAAA,CAAE;MAAAoB,OAAA,EACPpB,CAAA,CAAE;MAAAX,SAAA;MAAAqB,QAAA;MAAAI;IAAA,C;;;;;;;SAJbC,E;CAUJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePreventLeave.d.ts","sourceRoot":"","sources":["../../../src/elements/LeaveWithoutSaving/usePreventLeave.tsx"],"names":[],"mappings":"AA0BA,eAAO,MAAM,eAAe,aAAa,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,YAAmB,MAAM,SA6B1F,CAAA;AAED,eAAO,MAAM,eAAe,4DAMzB;IACD,WAAW,EAAE,OAAO,CAAA;IAEpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAErB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB,SAkFA,CAAA"}
1
+ {"version":3,"file":"usePreventLeave.d.ts","sourceRoot":"","sources":["../../../src/elements/LeaveWithoutSaving/usePreventLeave.tsx"],"names":[],"mappings":"AA4BA,eAAO,MAAM,eAAe,aAAa,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,YAAmB,MAAM,SA6B1F,CAAA;AAED,eAAO,MAAM,eAAe,4DAMzB;IACD,WAAW,EAAE,OAAO,CAAA;IAEpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAErB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;CACjB,SAqFA,CAAA"}
@@ -7,6 +7,7 @@
7
7
  import { c as _c } from "react/compiler-runtime";
8
8
  import { useRouter } from 'next/navigation.js';
9
9
  import { useCallback, useEffect, useRef } from 'react';
10
+ import { useRouteTransition } from '../../providers/RouteTransition/index.js';
10
11
  function on(obj, ...args) {
11
12
  if (obj && obj.addEventListener) {
12
13
  obj.addEventListener(...args);
@@ -70,6 +71,9 @@ export const usePreventLeave = ({
70
71
  }) => {
71
72
  // check when page is about to be reloaded
72
73
  useBeforeUnload(prevent, message);
74
+ const {
75
+ startRouteTransition
76
+ } = useRouteTransition();
73
77
  const router = useRouter();
74
78
  const cancelledURL = useRef('');
75
79
  // check when page is about to be changed
@@ -129,8 +133,8 @@ export const usePreventLeave = ({
129
133
  if (onAccept) {
130
134
  onAccept();
131
135
  }
132
- router.push(cancelledURL.current);
136
+ startRouteTransition(() => router.push(cancelledURL.current));
133
137
  }
134
- }, [hasAccepted, onAccept, router]);
138
+ }, [hasAccepted, onAccept, router, startRouteTransition]);
135
139
  };
136
140
  //# sourceMappingURL=usePreventLeave.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePreventLeave.js","names":["c","_c","useRouter","useCallback","useEffect","useRef","on","obj","args","addEventListener","off","removeEventListener","useBeforeUnload","t0","message","$","enabled","undefined","t1","event","finalEnabled","preventDefault","returnValue","handler","t2","t3","window","usePreventLeave","hasAccepted","onAccept","onPrevent","prevent","router","cancelledURL","isAnchorOfCurrentUrl","currentUrl","newUrl","currentUrlObj","URL","newUrlObj","hostname","pathname","search","currentHash","hash","newHash","href","replace","findClosestAnchor","element","tagName","toLowerCase","parentElement","handleClick","target","anchor","location","isAnchor","isDownloadLink","download","isPageLeaving","confirm","current","stopPropagation","err","alert","document","push"],"sources":["../../../src/elements/LeaveWithoutSaving/usePreventLeave.tsx"],"sourcesContent":["'use client'\n// Credit: @Taiki92777\n// - Source: https://github.com/vercel/next.js/discussions/32231#discussioncomment-7284386\n// Credit: `react-use` maintainers\n// - Source: https://github.com/streamich/react-use/blob/ade8d3905f544305515d010737b4ae604cc51024/src/useBeforeUnload.ts#L2\nimport { useRouter } from 'next/navigation.js'\nimport { useCallback, useEffect, useRef } from 'react'\n\nfunction on<T extends Document | EventTarget | HTMLElement | Window>(\n obj: null | T,\n ...args: [string, Function | null, ...any] | Parameters<T['addEventListener']>\n): void {\n if (obj && obj.addEventListener) {\n obj.addEventListener(...(args as Parameters<HTMLElement['addEventListener']>))\n }\n}\n\nfunction off<T extends Document | EventTarget | HTMLElement | Window>(\n obj: null | T,\n ...args: [string, Function | null, ...any] | Parameters<T['removeEventListener']>\n): void {\n if (obj && obj.removeEventListener) {\n obj.removeEventListener(...(args as Parameters<HTMLElement['removeEventListener']>))\n }\n}\n\nexport const useBeforeUnload = (enabled: (() => boolean) | boolean = true, message?: string) => {\n const handler = useCallback(\n (event: BeforeUnloadEvent) => {\n const finalEnabled = typeof enabled === 'function' ? enabled() : true\n\n if (!finalEnabled) {\n return\n }\n\n event.preventDefault()\n\n if (message) {\n event.returnValue = message\n }\n\n return message\n },\n [enabled, message],\n )\n\n useEffect(() => {\n if (!enabled) {\n return\n }\n\n on(window, 'beforeunload', handler)\n\n return () => off(window, 'beforeunload', handler)\n }, [enabled, handler])\n}\n\nexport const usePreventLeave = ({\n hasAccepted = false,\n message = 'Are you sure want to leave this page?',\n onAccept,\n onPrevent,\n prevent = true,\n}: {\n hasAccepted: boolean\n // if no `onPrevent` is provided, the message will be displayed in a confirm dialog\n message?: string\n onAccept?: () => void\n // to use a custom confirmation dialog, provide a function that returns a boolean\n onPrevent?: () => void\n prevent: boolean\n}) => {\n // check when page is about to be reloaded\n useBeforeUnload(prevent, message)\n\n const router = useRouter()\n const cancelledURL = useRef<string>('')\n\n // check when page is about to be changed\n useEffect(() => {\n function isAnchorOfCurrentUrl(currentUrl: string, newUrl: string) {\n const currentUrlObj = new URL(currentUrl)\n const newUrlObj = new URL(newUrl)\n // Compare hostname, pathname, and search parameters\n if (\n currentUrlObj.hostname === newUrlObj.hostname &&\n currentUrlObj.pathname === newUrlObj.pathname &&\n currentUrlObj.search === newUrlObj.search\n ) {\n // Check if the new URL is just an anchor of the current URL page\n const currentHash = currentUrlObj.hash\n const newHash = newUrlObj.hash\n return (\n currentHash !== newHash &&\n currentUrlObj.href.replace(currentHash, '') === newUrlObj.href.replace(newHash, '')\n )\n }\n return false\n }\n\n function findClosestAnchor(element: HTMLElement | null): HTMLAnchorElement | null {\n while (element && element.tagName.toLowerCase() !== 'a') {\n element = element.parentElement\n }\n return element as HTMLAnchorElement\n }\n function handleClick(event: MouseEvent) {\n try {\n const target = event.target as HTMLElement\n const anchor = findClosestAnchor(target)\n if (anchor) {\n const currentUrl = window.location.href\n const newUrl = anchor.href\n const isAnchor = isAnchorOfCurrentUrl(currentUrl, newUrl)\n const isDownloadLink = anchor.download !== ''\n\n const isPageLeaving = !(newUrl === currentUrl || isAnchor || isDownloadLink)\n\n if (isPageLeaving && prevent && (!onPrevent ? !window.confirm(message) : true)) {\n // Keep a reference of the href\n cancelledURL.current = newUrl\n\n // Cancel the route change\n event.preventDefault()\n event.stopPropagation()\n\n if (typeof onPrevent === 'function') {\n onPrevent()\n }\n }\n }\n } catch (err) {\n alert(err)\n }\n }\n\n // Add the global click event listener\n document.addEventListener('click', handleClick, true)\n\n // Clean up the global click event listener when the component is unmounted\n return () => {\n document.removeEventListener('click', handleClick, true)\n }\n }, [onPrevent, prevent, message])\n\n useEffect(() => {\n if (hasAccepted && cancelledURL.current) {\n if (onAccept) {\n onAccept()\n }\n router.push(cancelledURL.current)\n }\n }, [hasAccepted, onAccept, router])\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"usePreventLeave.js","names":["c","_c","useRouter","useCallback","useEffect","useRef","useRouteTransition","on","obj","args","addEventListener","off","removeEventListener","useBeforeUnload","t0","message","$","enabled","undefined","t1","event","finalEnabled","preventDefault","returnValue","handler","t2","t3","window","usePreventLeave","hasAccepted","onAccept","onPrevent","prevent","startRouteTransition","router","cancelledURL","isAnchorOfCurrentUrl","currentUrl","newUrl","currentUrlObj","URL","newUrlObj","hostname","pathname","search","currentHash","hash","newHash","href","replace","findClosestAnchor","element","tagName","toLowerCase","parentElement","handleClick","target","anchor","location","isAnchor","isDownloadLink","download","isPageLeaving","confirm","current","stopPropagation","err","alert","document","push"],"sources":["../../../src/elements/LeaveWithoutSaving/usePreventLeave.tsx"],"sourcesContent":["'use client'\n// Credit: @Taiki92777\n// - Source: https://github.com/vercel/next.js/discussions/32231#discussioncomment-7284386\n// Credit: `react-use` maintainers\n// - Source: https://github.com/streamich/react-use/blob/ade8d3905f544305515d010737b4ae604cc51024/src/useBeforeUnload.ts#L2\nimport { useRouter } from 'next/navigation.js'\nimport { useCallback, useEffect, useRef } from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\n\nfunction on<T extends Document | EventTarget | HTMLElement | Window>(\n obj: null | T,\n ...args: [string, (() => void) | null, ...any] | Parameters<T['addEventListener']>\n): void {\n if (obj && obj.addEventListener) {\n obj.addEventListener(...(args as Parameters<HTMLElement['addEventListener']>))\n }\n}\n\nfunction off<T extends Document | EventTarget | HTMLElement | Window>(\n obj: null | T,\n ...args: [string, (() => void) | null, ...any] | Parameters<T['removeEventListener']>\n): void {\n if (obj && obj.removeEventListener) {\n obj.removeEventListener(...(args as Parameters<HTMLElement['removeEventListener']>))\n }\n}\n\nexport const useBeforeUnload = (enabled: (() => boolean) | boolean = true, message?: string) => {\n const handler = useCallback(\n (event: BeforeUnloadEvent) => {\n const finalEnabled = typeof enabled === 'function' ? enabled() : true\n\n if (!finalEnabled) {\n return\n }\n\n event.preventDefault()\n\n if (message) {\n event.returnValue = message\n }\n\n return message\n },\n [enabled, message],\n )\n\n useEffect(() => {\n if (!enabled) {\n return\n }\n\n on(window, 'beforeunload', handler)\n\n return () => off(window, 'beforeunload', handler)\n }, [enabled, handler])\n}\n\nexport const usePreventLeave = ({\n hasAccepted = false,\n message = 'Are you sure want to leave this page?',\n onAccept,\n onPrevent,\n prevent = true,\n}: {\n hasAccepted: boolean\n // if no `onPrevent` is provided, the message will be displayed in a confirm dialog\n message?: string\n onAccept?: () => void\n // to use a custom confirmation dialog, provide a function that returns a boolean\n onPrevent?: () => void\n prevent: boolean\n}) => {\n // check when page is about to be reloaded\n useBeforeUnload(prevent, message)\n const { startRouteTransition } = useRouteTransition()\n\n const router = useRouter()\n const cancelledURL = useRef<string>('')\n\n // check when page is about to be changed\n useEffect(() => {\n function isAnchorOfCurrentUrl(currentUrl: string, newUrl: string) {\n const currentUrlObj = new URL(currentUrl)\n const newUrlObj = new URL(newUrl)\n // Compare hostname, pathname, and search parameters\n if (\n currentUrlObj.hostname === newUrlObj.hostname &&\n currentUrlObj.pathname === newUrlObj.pathname &&\n currentUrlObj.search === newUrlObj.search\n ) {\n // Check if the new URL is just an anchor of the current URL page\n const currentHash = currentUrlObj.hash\n const newHash = newUrlObj.hash\n return (\n currentHash !== newHash &&\n currentUrlObj.href.replace(currentHash, '') === newUrlObj.href.replace(newHash, '')\n )\n }\n return false\n }\n\n function findClosestAnchor(element: HTMLElement | null): HTMLAnchorElement | null {\n while (element && element.tagName.toLowerCase() !== 'a') {\n element = element.parentElement\n }\n return element as HTMLAnchorElement\n }\n\n function handleClick(event: MouseEvent) {\n try {\n const target = event.target as HTMLElement\n const anchor = findClosestAnchor(target)\n if (anchor) {\n const currentUrl = window.location.href\n const newUrl = anchor.href\n const isAnchor = isAnchorOfCurrentUrl(currentUrl, newUrl)\n const isDownloadLink = anchor.download !== ''\n\n const isPageLeaving = !(newUrl === currentUrl || isAnchor || isDownloadLink)\n\n if (isPageLeaving && prevent && (!onPrevent ? !window.confirm(message) : true)) {\n // Keep a reference of the href\n cancelledURL.current = newUrl\n\n // Cancel the route change\n event.preventDefault()\n event.stopPropagation()\n\n if (typeof onPrevent === 'function') {\n onPrevent()\n }\n }\n }\n } catch (err) {\n alert(err)\n }\n }\n\n // Add the global click event listener\n document.addEventListener('click', handleClick, true)\n\n // Clean up the global click event listener when the component is unmounted\n return () => {\n document.removeEventListener('click', handleClick, true)\n }\n }, [onPrevent, prevent, message])\n\n useEffect(() => {\n if (hasAccepted && cancelledURL.current) {\n if (onAccept) {\n onAccept()\n }\n\n startRouteTransition(() => router.push(cancelledURL.current))\n }\n }, [hasAccepted, onAccept, router, startRouteTransition])\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import type { UrlObject } from 'url';
2
+ export declare function urlQueryToSearchParams(urlQuery: UrlObject['query']): URLSearchParams;
3
+ export declare function formatUrl(urlObj: UrlObject): string;
4
+ //# sourceMappingURL=formatUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatUrl.d.ts","sourceRoot":"","sources":["../../../src/elements/Link/formatUrl.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAgBpC,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,eAAe,CAUpF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,UAkD1C"}
@@ -0,0 +1,87 @@
1
+ // Format function modified from nodejs
2
+ // Copyright Joyent, Inc. and other Node contributors.
3
+ //
4
+ // Permission is hereby granted, free of charge, to any person obtaining a
5
+ // copy of this software and associated documentation files (the
6
+ // "Software"), to deal in the Software without restriction, including
7
+ // without limitation the rights to use, copy, modify, merge, publish,
8
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
9
+ // persons to whom the Software is furnished to do so, subject to the
10
+ // following conditions:
11
+ //
12
+ // The above copyright notice and this permission notice shall be included
13
+ // in all copies or substantial portions of the Software.
14
+ //
15
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
18
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
19
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
21
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ const slashedProtocols = /https?|ftp|gopher|file/;
23
+ function stringifyUrlQueryParam(param) {
24
+ if (typeof param === 'string' || typeof param === 'number' && !isNaN(param) || typeof param === 'boolean') {
25
+ return String(param);
26
+ } else {
27
+ return '';
28
+ }
29
+ }
30
+ export function urlQueryToSearchParams(urlQuery) {
31
+ const result = new URLSearchParams();
32
+ Object.entries(urlQuery).forEach(([key, value]) => {
33
+ if (Array.isArray(value)) {
34
+ value.forEach(item => result.append(key, stringifyUrlQueryParam(item)));
35
+ } else {
36
+ result.set(key, stringifyUrlQueryParam(value));
37
+ }
38
+ });
39
+ return result;
40
+ }
41
+ export function formatUrl(urlObj) {
42
+ let {
43
+ auth
44
+ } = urlObj;
45
+ const {
46
+ hostname
47
+ } = urlObj;
48
+ let protocol = urlObj.protocol || '';
49
+ let pathname = urlObj.pathname || '';
50
+ let hash = urlObj.hash || '';
51
+ let query = urlObj.query || '';
52
+ let host = false;
53
+ auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : '';
54
+ if (urlObj.host) {
55
+ host = auth + urlObj.host;
56
+ } else if (hostname) {
57
+ host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname);
58
+ if (urlObj.port) {
59
+ host += ':' + urlObj.port;
60
+ }
61
+ }
62
+ if (query && typeof query === 'object') {
63
+ query = String(urlQueryToSearchParams(query));
64
+ }
65
+ let search = urlObj.search || query && `?${query}` || '';
66
+ if (protocol && !protocol.endsWith(':')) {
67
+ protocol += ':';
68
+ }
69
+ if (urlObj.slashes || (!protocol || slashedProtocols.test(protocol)) && host !== false) {
70
+ host = '//' + (host || '');
71
+ if (pathname && pathname[0] !== '/') {
72
+ pathname = '/' + pathname;
73
+ }
74
+ } else if (!host) {
75
+ host = '';
76
+ }
77
+ if (hash && hash[0] !== '#') {
78
+ hash = '#' + hash;
79
+ }
80
+ if (search && search[0] !== '?') {
81
+ search = '?' + search;
82
+ }
83
+ pathname = pathname.replace(/[?#]/g, encodeURIComponent);
84
+ search = search.replace('#', '%23');
85
+ return `${protocol}${host}${pathname}${search}${hash}`;
86
+ }
87
+ //# sourceMappingURL=formatUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatUrl.js","names":["slashedProtocols","stringifyUrlQueryParam","param","isNaN","String","urlQueryToSearchParams","urlQuery","result","URLSearchParams","Object","entries","forEach","key","value","Array","isArray","item","append","set","formatUrl","urlObj","auth","hostname","protocol","pathname","hash","query","host","encodeURIComponent","replace","indexOf","port","search","endsWith","slashes","test"],"sources":["../../../src/elements/Link/formatUrl.ts"],"sourcesContent":["// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { UrlObject } from 'url'\n\nconst slashedProtocols = /https?|ftp|gopher|file/\n\nfunction stringifyUrlQueryParam(param: unknown): string {\n if (\n typeof param === 'string' ||\n (typeof param === 'number' && !isNaN(param)) ||\n typeof param === 'boolean'\n ) {\n return String(param)\n } else {\n return ''\n }\n}\n\nexport function urlQueryToSearchParams(urlQuery: UrlObject['query']): URLSearchParams {\n const result = new URLSearchParams()\n Object.entries(urlQuery).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach((item) => result.append(key, stringifyUrlQueryParam(item)))\n } else {\n result.set(key, stringifyUrlQueryParam(value))\n }\n })\n return result\n}\n\nexport function formatUrl(urlObj: UrlObject) {\n let { auth } = urlObj\n const { hostname } = urlObj\n let protocol = urlObj.protocol || ''\n let pathname = urlObj.pathname || ''\n let hash = urlObj.hash || ''\n let query = urlObj.query || ''\n let host: false | string = false\n\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : ''\n\n if (urlObj.host) {\n host = auth + urlObj.host\n } else if (hostname) {\n host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname)\n if (urlObj.port) {\n host += ':' + urlObj.port\n }\n }\n\n if (query && typeof query === 'object') {\n query = String(urlQueryToSearchParams(query))\n }\n\n let search = urlObj.search || (query && `?${query}`) || ''\n\n if (protocol && !protocol.endsWith(':')) {\n protocol += ':'\n }\n\n if (urlObj.slashes || ((!protocol || slashedProtocols.test(protocol)) && host !== false)) {\n host = '//' + (host || '')\n if (pathname && pathname[0] !== '/') {\n pathname = '/' + pathname\n }\n } else if (!host) {\n host = ''\n }\n\n if (hash && hash[0] !== '#') {\n hash = '#' + hash\n }\n if (search && search[0] !== '?') {\n search = '?' + search\n }\n\n pathname = pathname.replace(/[?#]/g, encodeURIComponent)\n search = search.replace('#', '%23')\n\n return `${protocol}${host}${pathname}${search}${hash}`\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ import NextLinkImport from 'next/link.js';
2
+ import React from 'react';
3
+ declare const NextLink: typeof NextLinkImport.default;
4
+ export declare const Link: React.FC<Parameters<typeof NextLink>[0]>;
5
+ export {};
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Link/index.tsx"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,QAAQ,EACkB,OAAO,cAAc,CAAC,OAAO,CAAA;AAgB7D,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAwCzD,CAAA"}