@payloadcms/ui 3.68.0-internal-debug.185cc5f → 3.68.0-internal-debug.591ab42

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 (767) hide show
  1. package/dist/elements/AddNewRelation/index.js +83 -27
  2. package/dist/elements/AddNewRelation/index.js.map +1 -1
  3. package/dist/elements/AnimateHeight/index.js +13 -5
  4. package/dist/elements/AnimateHeight/index.js.map +1 -1
  5. package/dist/elements/AppHeader/index.js +107 -35
  6. package/dist/elements/AppHeader/index.js.map +1 -1
  7. package/dist/elements/ArrayAction/index.js +116 -36
  8. package/dist/elements/ArrayAction/index.js.map +1 -1
  9. package/dist/elements/Autosave/index.js +18 -6
  10. package/dist/elements/Autosave/index.js.map +1 -1
  11. package/dist/elements/Banner/index.js +25 -9
  12. package/dist/elements/Banner/index.js.map +1 -1
  13. package/dist/elements/BulkUpload/ActionsBar/index.js +97 -33
  14. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  15. package/dist/elements/BulkUpload/AddFilesView/index.js +43 -15
  16. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  17. package/dist/elements/BulkUpload/AddingFilesView/index.js +47 -15
  18. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  19. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +7 -3
  20. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  21. package/dist/elements/BulkUpload/DrawerCloseButton/index.js +12 -4
  22. package/dist/elements/BulkUpload/DrawerCloseButton/index.js.map +1 -1
  23. package/dist/elements/BulkUpload/EditForm/index.js +53 -17
  24. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  25. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +90 -30
  26. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  27. package/dist/elements/BulkUpload/EditMany/index.js +31 -11
  28. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  29. package/dist/elements/BulkUpload/FileSidebar/index.js +214 -70
  30. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  31. package/dist/elements/BulkUpload/FormsManager/index.js +13 -5
  32. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  33. package/dist/elements/BulkUpload/Header/index.js +19 -7
  34. package/dist/elements/BulkUpload/Header/index.js.map +1 -1
  35. package/dist/elements/BulkUpload/index.js +58 -18
  36. package/dist/elements/BulkUpload/index.js.map +1 -1
  37. package/dist/elements/Button/index.js +101 -33
  38. package/dist/elements/Button/index.js.map +1 -1
  39. package/dist/elements/Card/index.js +25 -9
  40. package/dist/elements/Card/index.js.map +1 -1
  41. package/dist/elements/CheckboxPopup/index.js +19 -7
  42. package/dist/elements/CheckboxPopup/index.js.map +1 -1
  43. package/dist/elements/ClipboardAction/ClipboardActionLabel.js +16 -4
  44. package/dist/elements/ClipboardAction/ClipboardActionLabel.js.map +1 -1
  45. package/dist/elements/ClipboardAction/index.js +42 -14
  46. package/dist/elements/ClipboardAction/index.js.map +1 -1
  47. package/dist/elements/CloseModalButton/index.js +12 -4
  48. package/dist/elements/CloseModalButton/index.js.map +1 -1
  49. package/dist/elements/CodeEditor/CodeEditor.js +13 -5
  50. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  51. package/dist/elements/CodeEditor/index.js +18 -6
  52. package/dist/elements/CodeEditor/index.js.map +1 -1
  53. package/dist/elements/Collapsible/index.js +84 -28
  54. package/dist/elements/Collapsible/index.js.map +1 -1
  55. package/dist/elements/Collapsible/provider.js +7 -3
  56. package/dist/elements/Collapsible/provider.js.map +1 -1
  57. package/dist/elements/ColumnSelector/index.js +13 -5
  58. package/dist/elements/ColumnSelector/index.js.map +1 -1
  59. package/dist/elements/Combobox/index.js +37 -13
  60. package/dist/elements/Combobox/index.js.map +1 -1
  61. package/dist/elements/ConfirmationModal/index.js +49 -17
  62. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  63. package/dist/elements/CopyLocaleData/index.js +73 -25
  64. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  65. package/dist/elements/CopyToClipboard/index.js +18 -6
  66. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  67. package/dist/elements/DatePicker/DatePicker.js +41 -13
  68. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  69. package/dist/elements/DatePicker/index.js +19 -7
  70. package/dist/elements/DatePicker/index.js.map +1 -1
  71. package/dist/elements/DefaultListViewTabs/index.js +25 -9
  72. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  73. package/dist/elements/DeleteDocument/index.js +49 -17
  74. package/dist/elements/DeleteDocument/index.js.map +1 -1
  75. package/dist/elements/DeleteMany/index.js +73 -25
  76. package/dist/elements/DeleteMany/index.js.map +1 -1
  77. package/dist/elements/DocumentControls/index.js +303 -95
  78. package/dist/elements/DocumentControls/index.js.map +1 -1
  79. package/dist/elements/DocumentDrawer/DrawerContent.js +12 -4
  80. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  81. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +59 -19
  82. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  83. package/dist/elements/DocumentDrawer/Provider.js +7 -3
  84. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  85. package/dist/elements/DocumentDrawer/index.js +32 -10
  86. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  87. package/dist/elements/DocumentFields/index.js +54 -18
  88. package/dist/elements/DocumentFields/index.js.map +1 -1
  89. package/dist/elements/DocumentLocked/index.js +73 -25
  90. package/dist/elements/DocumentLocked/index.js.map +1 -1
  91. package/dist/elements/DocumentTakeOver/index.js +49 -17
  92. package/dist/elements/DocumentTakeOver/index.js.map +1 -1
  93. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +7 -3
  94. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
  95. package/dist/elements/DraggableSortable/index.js +19 -7
  96. package/dist/elements/DraggableSortable/index.js.map +1 -1
  97. package/dist/elements/Drawer/index.js +78 -26
  98. package/dist/elements/Drawer/index.js.map +1 -1
  99. package/dist/elements/DrawerActionHeader/index.js +37 -13
  100. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  101. package/dist/elements/DrawerContentContainer/index.js +7 -3
  102. package/dist/elements/DrawerContentContainer/index.js.map +1 -1
  103. package/dist/elements/Dropzone/index.js +7 -3
  104. package/dist/elements/Dropzone/index.js.map +1 -1
  105. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +61 -21
  106. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  107. package/dist/elements/DuplicateDocument/index.js +25 -9
  108. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  109. package/dist/elements/EditMany/DrawerContent.js +131 -43
  110. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  111. package/dist/elements/EditMany/index.js +37 -13
  112. package/dist/elements/EditMany/index.js.map +1 -1
  113. package/dist/elements/EditUpload/index.js +232 -76
  114. package/dist/elements/EditUpload/index.js.map +1 -1
  115. package/dist/elements/EmailAndUsername/index.js +31 -11
  116. package/dist/elements/EmailAndUsername/index.js.map +1 -1
  117. package/dist/elements/ErrorPill/index.js +19 -7
  118. package/dist/elements/ErrorPill/index.js.map +1 -1
  119. package/dist/elements/FieldDiffContainer/index.js +25 -9
  120. package/dist/elements/FieldDiffContainer/index.js.map +1 -1
  121. package/dist/elements/FieldDiffLabel/index.js +7 -3
  122. package/dist/elements/FieldDiffLabel/index.js.map +1 -1
  123. package/dist/elements/FieldSelect/index.js +19 -7
  124. package/dist/elements/FieldSelect/index.js.map +1 -1
  125. package/dist/elements/FileDetails/DraggableFileDetails/index.js +70 -22
  126. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  127. package/dist/elements/FileDetails/FileMeta/index.js +43 -15
  128. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  129. package/dist/elements/FileDetails/StaticFileDetails/index.js +43 -15
  130. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  131. package/dist/elements/FileDetails/index.js +13 -5
  132. package/dist/elements/FileDetails/index.js.map +1 -1
  133. package/dist/elements/FolderView/Breadcrumbs/index.js +31 -11
  134. package/dist/elements/FolderView/Breadcrumbs/index.js.map +1 -1
  135. package/dist/elements/FolderView/BrowseByFolderButton/index.js +12 -4
  136. package/dist/elements/FolderView/BrowseByFolderButton/index.js.map +1 -1
  137. package/dist/elements/FolderView/Cell/index.client.js +7 -3
  138. package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
  139. package/dist/elements/FolderView/Cell/index.server.js +7 -3
  140. package/dist/elements/FolderView/Cell/index.server.js.map +1 -1
  141. package/dist/elements/FolderView/ColoredFolderIcon/index.js +7 -3
  142. package/dist/elements/FolderView/ColoredFolderIcon/index.js.map +1 -1
  143. package/dist/elements/FolderView/CurrentFolderActions/index.js +68 -24
  144. package/dist/elements/FolderView/CurrentFolderActions/index.js.map +1 -1
  145. package/dist/elements/FolderView/DragOverlaySelection/index.js +31 -11
  146. package/dist/elements/FolderView/DragOverlaySelection/index.js.map +1 -1
  147. package/dist/elements/FolderView/DraggableTableRow/index.js +25 -9
  148. package/dist/elements/FolderView/DraggableTableRow/index.js.map +1 -1
  149. package/dist/elements/FolderView/DraggableWithClick/index.js +7 -3
  150. package/dist/elements/FolderView/DraggableWithClick/index.js.map +1 -1
  151. package/dist/elements/FolderView/Drawers/EditFolderAction/index.js +15 -7
  152. package/dist/elements/FolderView/Drawers/EditFolderAction/index.js.map +1 -1
  153. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +181 -61
  154. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -1
  155. package/dist/elements/FolderView/FilterFolderTypePill/index.js +19 -7
  156. package/dist/elements/FolderView/FilterFolderTypePill/index.js.map +1 -1
  157. package/dist/elements/FolderView/FolderField/index.server.js +7 -3
  158. package/dist/elements/FolderView/FolderField/index.server.js.map +1 -1
  159. package/dist/elements/FolderView/FolderFileCard/index.js +103 -31
  160. package/dist/elements/FolderView/FolderFileCard/index.js.map +1 -1
  161. package/dist/elements/FolderView/FolderFileTable/index.js +49 -17
  162. package/dist/elements/FolderView/FolderFileTable/index.js.map +1 -1
  163. package/dist/elements/FolderView/FolderTypeField/index.js +7 -3
  164. package/dist/elements/FolderView/FolderTypeField/index.js.map +1 -1
  165. package/dist/elements/FolderView/ItemCardGrid/index.js +21 -9
  166. package/dist/elements/FolderView/ItemCardGrid/index.js.map +1 -1
  167. package/dist/elements/FolderView/MoveDocToFolder/index.js +26 -10
  168. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  169. package/dist/elements/FolderView/SimpleTable/index.js +67 -23
  170. package/dist/elements/FolderView/SimpleTable/index.js.map +1 -1
  171. package/dist/elements/FolderView/SortByPill/index.js +86 -30
  172. package/dist/elements/FolderView/SortByPill/index.js.map +1 -1
  173. package/dist/elements/FolderView/ToggleViewButtons/index.js +25 -9
  174. package/dist/elements/FolderView/ToggleViewButtons/index.js.map +1 -1
  175. package/dist/elements/FullscreenModal/index.js +7 -3
  176. package/dist/elements/FullscreenModal/index.js.map +1 -1
  177. package/dist/elements/GenerateConfirmation/index.js +31 -11
  178. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  179. package/dist/elements/GroupByBuilder/index.js +43 -15
  180. package/dist/elements/GroupByBuilder/index.js.map +1 -1
  181. package/dist/elements/Gutter/index.js +7 -3
  182. package/dist/elements/Gutter/index.js.map +1 -1
  183. package/dist/elements/HTMLDiff/index.js +13 -5
  184. package/dist/elements/HTMLDiff/index.js.map +1 -1
  185. package/dist/elements/Hamburger/index.js +35 -11
  186. package/dist/elements/Hamburger/index.js.map +1 -1
  187. package/dist/elements/IDLabel/index.js +13 -5
  188. package/dist/elements/IDLabel/index.js.map +1 -1
  189. package/dist/elements/LeaveWithoutSaving/index.js +13 -5
  190. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  191. package/dist/elements/Link/index.js +7 -3
  192. package/dist/elements/Link/index.js.map +1 -1
  193. package/dist/elements/ListControls/index.js +126 -42
  194. package/dist/elements/ListControls/index.js.map +1 -1
  195. package/dist/elements/ListDrawer/DrawerContent.js +18 -6
  196. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  197. package/dist/elements/ListDrawer/Provider.js +7 -3
  198. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  199. package/dist/elements/ListDrawer/index.js +32 -10
  200. package/dist/elements/ListDrawer/index.js.map +1 -1
  201. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +19 -7
  202. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  203. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js +13 -5
  204. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
  205. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +7 -3
  206. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  207. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js +7 -3
  208. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js.map +1 -1
  209. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +48 -16
  210. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +1 -1
  211. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +37 -13
  212. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  213. package/dist/elements/ListHeader/index.js +43 -15
  214. package/dist/elements/ListHeader/index.js.map +1 -1
  215. package/dist/elements/ListSelection/index.js +55 -19
  216. package/dist/elements/ListSelection/index.js.map +1 -1
  217. package/dist/elements/LivePreview/Device/index.js +13 -5
  218. package/dist/elements/LivePreview/Device/index.js.map +1 -1
  219. package/dist/elements/LivePreview/DeviceContainer/index.js +7 -3
  220. package/dist/elements/LivePreview/DeviceContainer/index.js.map +1 -1
  221. package/dist/elements/LivePreview/IFrame/index.js +7 -3
  222. package/dist/elements/LivePreview/IFrame/index.js.map +1 -1
  223. package/dist/elements/LivePreview/Toggler/index.js +13 -5
  224. package/dist/elements/LivePreview/Toggler/index.js.map +1 -1
  225. package/dist/elements/LivePreview/Toolbar/Controls/index.js +137 -45
  226. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  227. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +7 -3
  228. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  229. package/dist/elements/LivePreview/Toolbar/index.js +48 -16
  230. package/dist/elements/LivePreview/Toolbar/index.js.map +1 -1
  231. package/dist/elements/LivePreview/ToolbarArea/index.js +7 -3
  232. package/dist/elements/LivePreview/ToolbarArea/index.js.map +1 -1
  233. package/dist/elements/LivePreview/Window/index.js +41 -13
  234. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  235. package/dist/elements/Loading/index.js +55 -19
  236. package/dist/elements/Loading/index.js.map +1 -1
  237. package/dist/elements/LoadingOverlay/index.js +13 -5
  238. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  239. package/dist/elements/Localizer/LocalizerLabel/index.js +31 -11
  240. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  241. package/dist/elements/Localizer/index.js +47 -15
  242. package/dist/elements/Localizer/index.js.map +1 -1
  243. package/dist/elements/Locked/index.js +18 -6
  244. package/dist/elements/Locked/index.js.map +1 -1
  245. package/dist/elements/Logout/index.js +12 -4
  246. package/dist/elements/Logout/index.js.map +1 -1
  247. package/dist/elements/Nav/NavToggler/index.js +7 -3
  248. package/dist/elements/Nav/NavToggler/index.js.map +1 -1
  249. package/dist/elements/Nav/context.js +7 -3
  250. package/dist/elements/Nav/context.js.map +1 -1
  251. package/dist/elements/NavGroup/index.js +49 -17
  252. package/dist/elements/NavGroup/index.js.map +1 -1
  253. package/dist/elements/NoListResults/index.js +19 -7
  254. package/dist/elements/NoListResults/index.js.map +1 -1
  255. package/dist/elements/PageControls/GroupByPageControls.js +7 -3
  256. package/dist/elements/PageControls/GroupByPageControls.js.map +1 -1
  257. package/dist/elements/PageControls/index.js +37 -13
  258. package/dist/elements/PageControls/index.js.map +1 -1
  259. package/dist/elements/Pagination/ClickableArrow/index.js +12 -4
  260. package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
  261. package/dist/elements/Pagination/Page/index.js +7 -3
  262. package/dist/elements/Pagination/Page/index.js.map +1 -1
  263. package/dist/elements/Pagination/Separator/index.js +7 -3
  264. package/dist/elements/Pagination/Separator/index.js.map +1 -1
  265. package/dist/elements/Pagination/index.js +19 -7
  266. package/dist/elements/Pagination/index.js.map +1 -1
  267. package/dist/elements/PerPage/index.js +61 -21
  268. package/dist/elements/PerPage/index.js.map +1 -1
  269. package/dist/elements/PermanentlyDeleteButton/index.js +31 -11
  270. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  271. package/dist/elements/Pill/index.js +37 -13
  272. package/dist/elements/Pill/index.js.map +1 -1
  273. package/dist/elements/PillSelector/index.js +34 -10
  274. package/dist/elements/PillSelector/index.js.map +1 -1
  275. package/dist/elements/Popup/PopupButtonList/index.js +25 -9
  276. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  277. package/dist/elements/Popup/PopupDivider/index.js +7 -3
  278. package/dist/elements/Popup/PopupDivider/index.js.map +1 -1
  279. package/dist/elements/Popup/PopupGroupLabel/index.js +7 -3
  280. package/dist/elements/Popup/PopupGroupLabel/index.js.map +1 -1
  281. package/dist/elements/Popup/PopupTrigger/index.js +13 -5
  282. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  283. package/dist/elements/Popup/index.js +60 -20
  284. package/dist/elements/Popup/index.js.map +1 -1
  285. package/dist/elements/PreviewButton/index.js +12 -4
  286. package/dist/elements/PreviewButton/index.js.map +1 -1
  287. package/dist/elements/PreviewSizes/index.js +97 -33
  288. package/dist/elements/PreviewSizes/index.js.map +1 -1
  289. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js +67 -23
  290. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
  291. package/dist/elements/PublishButton/ScheduleDrawer/index.js +165 -53
  292. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  293. package/dist/elements/PublishButton/index.js +49 -17
  294. package/dist/elements/PublishButton/index.js.map +1 -1
  295. package/dist/elements/PublishMany/DrawerContent.js +7 -3
  296. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  297. package/dist/elements/PublishMany/index.js +25 -9
  298. package/dist/elements/PublishMany/index.js.map +1 -1
  299. package/dist/elements/QueryPresets/QueryPresetBar/index.js +108 -36
  300. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  301. package/dist/elements/QueryPresets/QueryPresetToggler/index.js +42 -14
  302. package/dist/elements/QueryPresets/QueryPresetToggler/index.js.map +1 -1
  303. package/dist/elements/QueryPresets/cells/AccessCell/index.js +25 -9
  304. package/dist/elements/QueryPresets/cells/AccessCell/index.js.map +1 -1
  305. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js +13 -5
  306. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js.map +1 -1
  307. package/dist/elements/QueryPresets/cells/GroupByCell/index.js +13 -5
  308. package/dist/elements/QueryPresets/cells/GroupByCell/index.js.map +1 -1
  309. package/dist/elements/QueryPresets/cells/WhereCell/index.js +7 -3
  310. package/dist/elements/QueryPresets/cells/WhereCell/index.js.map +1 -1
  311. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +25 -9
  312. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
  313. package/dist/elements/QueryPresets/fields/GroupByField/index.js +31 -11
  314. package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
  315. package/dist/elements/QueryPresets/fields/WhereField/index.js +79 -27
  316. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  317. package/dist/elements/ReactSelect/ClearIndicator/index.js +13 -5
  318. package/dist/elements/ReactSelect/ClearIndicator/index.js.map +1 -1
  319. package/dist/elements/ReactSelect/Control/index.js +13 -5
  320. package/dist/elements/ReactSelect/Control/index.js.map +1 -1
  321. package/dist/elements/ReactSelect/DropdownIndicator/index.js +13 -5
  322. package/dist/elements/ReactSelect/DropdownIndicator/index.js.map +1 -1
  323. package/dist/elements/ReactSelect/Input/index.js +13 -5
  324. package/dist/elements/ReactSelect/Input/index.js.map +1 -1
  325. package/dist/elements/ReactSelect/MultiValue/index.js +13 -5
  326. package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
  327. package/dist/elements/ReactSelect/MultiValueLabel/index.js +13 -5
  328. package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
  329. package/dist/elements/ReactSelect/MultiValueRemove/index.js +19 -7
  330. package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
  331. package/dist/elements/ReactSelect/SingleValue/index.js +13 -5
  332. package/dist/elements/ReactSelect/SingleValue/index.js.map +1 -1
  333. package/dist/elements/ReactSelect/ValueContainer/index.js +19 -7
  334. package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
  335. package/dist/elements/ReactSelect/index.js +43 -15
  336. package/dist/elements/ReactSelect/index.js.map +1 -1
  337. package/dist/elements/RelationshipTable/AddNewButton.js +37 -13
  338. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  339. package/dist/elements/RelationshipTable/Pagination.js +7 -3
  340. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  341. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js +24 -8
  342. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
  343. package/dist/elements/RelationshipTable/index.js +119 -39
  344. package/dist/elements/RelationshipTable/index.js.map +1 -1
  345. package/dist/elements/RenderComponent/index.js +19 -7
  346. package/dist/elements/RenderComponent/index.js.map +1 -1
  347. package/dist/elements/RenderIfInViewport/index.js +7 -3
  348. package/dist/elements/RenderIfInViewport/index.js.map +1 -1
  349. package/dist/elements/RenderServerComponent/index.js +13 -5
  350. package/dist/elements/RenderServerComponent/index.js.map +1 -1
  351. package/dist/elements/RenderTitle/index.js +25 -9
  352. package/dist/elements/RenderTitle/index.js.map +1 -1
  353. package/dist/elements/RestoreButton/index.js +49 -17
  354. package/dist/elements/RestoreButton/index.js.map +1 -1
  355. package/dist/elements/RestoreMany/index.js +37 -13
  356. package/dist/elements/RestoreMany/index.js.map +1 -1
  357. package/dist/elements/SaveButton/index.js +7 -3
  358. package/dist/elements/SaveButton/index.js.map +1 -1
  359. package/dist/elements/SaveDraftButton/index.js +7 -3
  360. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  361. package/dist/elements/SearchBar/index.js +24 -8
  362. package/dist/elements/SearchBar/index.js.map +1 -1
  363. package/dist/elements/SearchFilter/index.js +13 -5
  364. package/dist/elements/SearchFilter/index.js.map +1 -1
  365. package/dist/elements/SelectAll/index.js +7 -3
  366. package/dist/elements/SelectAll/index.js.map +1 -1
  367. package/dist/elements/SelectMany/index.js +7 -3
  368. package/dist/elements/SelectMany/index.js.map +1 -1
  369. package/dist/elements/SelectRow/index.js +13 -5
  370. package/dist/elements/SelectRow/index.js.map +1 -1
  371. package/dist/elements/ShimmerEffect/index.js +31 -11
  372. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  373. package/dist/elements/SortColumn/index.js +48 -16
  374. package/dist/elements/SortColumn/index.js.map +1 -1
  375. package/dist/elements/SortComplex/index.js +55 -19
  376. package/dist/elements/SortComplex/index.js.map +1 -1
  377. package/dist/elements/SortHeader/index.js +24 -8
  378. package/dist/elements/SortHeader/index.js.map +1 -1
  379. package/dist/elements/SortRow/index.js +13 -5
  380. package/dist/elements/SortRow/index.js.map +1 -1
  381. package/dist/elements/Status/index.js +61 -21
  382. package/dist/elements/Status/index.js.map +1 -1
  383. package/dist/elements/StayLoggedIn/index.js +7 -3
  384. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  385. package/dist/elements/StepNav/context.js +7 -3
  386. package/dist/elements/StepNav/context.js.map +1 -1
  387. package/dist/elements/StepNav/index.js +104 -32
  388. package/dist/elements/StepNav/index.js.map +1 -1
  389. package/dist/elements/StickyToolbar/index.js +7 -3
  390. package/dist/elements/StickyToolbar/index.js.map +1 -1
  391. package/dist/elements/Table/DefaultCell/fields/Array/index.js +7 -3
  392. package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
  393. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +7 -3
  394. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  395. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js +13 -5
  396. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
  397. package/dist/elements/Table/DefaultCell/fields/Code/index.js +13 -5
  398. package/dist/elements/Table/DefaultCell/fields/Code/index.js.map +1 -1
  399. package/dist/elements/Table/DefaultCell/fields/Date/index.js +7 -3
  400. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  401. package/dist/elements/Table/DefaultCell/fields/File/index.js +21 -9
  402. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  403. package/dist/elements/Table/DefaultCell/fields/JSON/index.js +13 -5
  404. package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
  405. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +19 -7
  406. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  407. package/dist/elements/Table/DefaultCell/fields/Select/index.js +7 -3
  408. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  409. package/dist/elements/Table/DefaultCell/fields/Textarea/index.js +7 -3
  410. package/dist/elements/Table/DefaultCell/fields/Textarea/index.js.map +1 -1
  411. package/dist/elements/Table/DefaultCell/index.js +43 -15
  412. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  413. package/dist/elements/Table/OrderableRow.js +25 -9
  414. package/dist/elements/Table/OrderableRow.js.map +1 -1
  415. package/dist/elements/Table/OrderableRowDragPreview.js +19 -7
  416. package/dist/elements/Table/OrderableRowDragPreview.js.map +1 -1
  417. package/dist/elements/Table/OrderableTable.js +79 -27
  418. package/dist/elements/Table/OrderableTable.js.map +1 -1
  419. package/dist/elements/Table/RelationshipProvider/index.js +7 -3
  420. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  421. package/dist/elements/Table/index.js +55 -19
  422. package/dist/elements/Table/index.js.map +1 -1
  423. package/dist/elements/Thumbnail/index.js +47 -15
  424. package/dist/elements/Thumbnail/index.js.map +1 -1
  425. package/dist/elements/ThumbnailCard/index.js +19 -7
  426. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  427. package/dist/elements/TimezonePicker/index.js +19 -7
  428. package/dist/elements/TimezonePicker/index.js.map +1 -1
  429. package/dist/elements/Toasts/fieldErrors.js +24 -8
  430. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  431. package/dist/elements/Tooltip/index.js +31 -11
  432. package/dist/elements/Tooltip/index.js.map +1 -1
  433. package/dist/elements/Translation/index.js +25 -9
  434. package/dist/elements/Translation/index.js.map +1 -1
  435. package/dist/elements/TrashBanner/index.js +18 -6
  436. package/dist/elements/TrashBanner/index.js.map +1 -1
  437. package/dist/elements/UnpublishMany/DrawerContent.js +7 -3
  438. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  439. package/dist/elements/UnpublishMany/index.js +25 -9
  440. package/dist/elements/UnpublishMany/index.js.map +1 -1
  441. package/dist/elements/Upload/index.js +229 -77
  442. package/dist/elements/Upload/index.js.map +1 -1
  443. package/dist/elements/ViewDescription/index.js +7 -3
  444. package/dist/elements/ViewDescription/index.js.map +1 -1
  445. package/dist/elements/WhereBuilder/Condition/Date/index.js +13 -5
  446. package/dist/elements/WhereBuilder/Condition/Date/index.js.map +1 -1
  447. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js +37 -13
  448. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
  449. package/dist/elements/WhereBuilder/Condition/Number/index.js +12 -4
  450. package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
  451. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +18 -6
  452. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  453. package/dist/elements/WhereBuilder/Condition/Select/index.js +7 -3
  454. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  455. package/dist/elements/WhereBuilder/Condition/Text/index.js +12 -4
  456. package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
  457. package/dist/elements/WhereBuilder/Condition/index.js +73 -25
  458. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  459. package/dist/elements/WhereBuilder/index.js +85 -29
  460. package/dist/elements/WhereBuilder/index.js.map +1 -1
  461. package/dist/elements/WithServerSideProps/index.js +7 -3
  462. package/dist/elements/WithServerSideProps/index.js.map +1 -1
  463. package/dist/elements/withMergedProps/index.js +7 -3
  464. package/dist/elements/withMergedProps/index.js.map +1 -1
  465. package/dist/fields/Array/ArrayRow.js +52 -16
  466. package/dist/fields/Array/ArrayRow.js.map +1 -1
  467. package/dist/fields/Array/index.js +169 -57
  468. package/dist/fields/Array/index.js.map +1 -1
  469. package/dist/fields/Blocks/BlockRow.js +72 -24
  470. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  471. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js +18 -6
  472. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js.map +1 -1
  473. package/dist/fields/Blocks/BlockSelector/index.js +71 -23
  474. package/dist/fields/Blocks/BlockSelector/index.js.map +1 -1
  475. package/dist/fields/Blocks/BlocksDrawer/index.js +13 -5
  476. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  477. package/dist/fields/Blocks/RowActions.js +19 -7
  478. package/dist/fields/Blocks/RowActions.js.map +1 -1
  479. package/dist/fields/Blocks/SectionTitle/index.js +13 -5
  480. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  481. package/dist/fields/Blocks/index.js +187 -63
  482. package/dist/fields/Blocks/index.js.map +1 -1
  483. package/dist/fields/Checkbox/Input.js +47 -15
  484. package/dist/fields/Checkbox/Input.js.map +1 -1
  485. package/dist/fields/Checkbox/index.js +37 -13
  486. package/dist/fields/Checkbox/index.js.map +1 -1
  487. package/dist/fields/Code/index.js +55 -19
  488. package/dist/fields/Code/index.js.map +1 -1
  489. package/dist/fields/Collapsible/index.js +61 -21
  490. package/dist/fields/Collapsible/index.js.map +1 -1
  491. package/dist/fields/ConfirmPassword/index.js +31 -11
  492. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  493. package/dist/fields/DateTime/index.js +61 -21
  494. package/dist/fields/DateTime/index.js.map +1 -1
  495. package/dist/fields/Email/index.js +55 -19
  496. package/dist/fields/Email/index.js.map +1 -1
  497. package/dist/fields/FieldDescription/index.js +7 -3
  498. package/dist/fields/FieldDescription/index.js.map +1 -1
  499. package/dist/fields/FieldError/index.js +7 -3
  500. package/dist/fields/FieldError/index.js.map +1 -1
  501. package/dist/fields/FieldLabel/index.js +19 -7
  502. package/dist/fields/FieldLabel/index.js.map +1 -1
  503. package/dist/fields/Group/index.js +78 -26
  504. package/dist/fields/Group/index.js.map +1 -1
  505. package/dist/fields/Group/provider.js +7 -3
  506. package/dist/fields/Group/provider.js.map +1 -1
  507. package/dist/fields/Hidden/index.js +7 -3
  508. package/dist/fields/Hidden/index.js.map +1 -1
  509. package/dist/fields/JSON/index.js +55 -19
  510. package/dist/fields/JSON/index.js.map +1 -1
  511. package/dist/fields/Join/index.js +49 -17
  512. package/dist/fields/Join/index.js.map +1 -1
  513. package/dist/fields/Number/index.js +66 -22
  514. package/dist/fields/Number/index.js.map +1 -1
  515. package/dist/fields/Password/index.js +7 -3
  516. package/dist/fields/Password/index.js.map +1 -1
  517. package/dist/fields/Password/input.js +61 -21
  518. package/dist/fields/Password/input.js.map +1 -1
  519. package/dist/fields/Point/index.js +97 -33
  520. package/dist/fields/Point/index.js.map +1 -1
  521. package/dist/fields/RadioGroup/Radio/index.js +31 -11
  522. package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
  523. package/dist/fields/RadioGroup/index.js +67 -23
  524. package/dist/fields/RadioGroup/index.js.map +1 -1
  525. package/dist/fields/Relationship/Input.js +84 -28
  526. package/dist/fields/Relationship/Input.js.map +1 -1
  527. package/dist/fields/Relationship/index.js +7 -3
  528. package/dist/fields/Relationship/index.js.map +1 -1
  529. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +43 -15
  530. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  531. package/dist/fields/Relationship/select-components/SingleValue/index.js +48 -16
  532. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  533. package/dist/fields/Row/index.js +19 -7
  534. package/dist/fields/Row/index.js.map +1 -1
  535. package/dist/fields/Row/provider.js +7 -3
  536. package/dist/fields/Row/provider.js.map +1 -1
  537. package/dist/fields/Select/Input.js +55 -19
  538. package/dist/fields/Select/Input.js.map +1 -1
  539. package/dist/fields/Select/index.js +7 -3
  540. package/dist/fields/Select/index.js.map +1 -1
  541. package/dist/fields/Slug/index.js +37 -13
  542. package/dist/fields/Slug/index.js.map +1 -1
  543. package/dist/fields/Tabs/Tab/index.js +25 -9
  544. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  545. package/dist/fields/Tabs/index.js +67 -23
  546. package/dist/fields/Tabs/index.js.map +1 -1
  547. package/dist/fields/Tabs/provider.js +7 -3
  548. package/dist/fields/Tabs/provider.js.map +1 -1
  549. package/dist/fields/Text/Input.js +60 -20
  550. package/dist/fields/Text/Input.js.map +1 -1
  551. package/dist/fields/Text/index.js +7 -3
  552. package/dist/fields/Text/index.js.map +1 -1
  553. package/dist/fields/Textarea/Input.js +61 -21
  554. package/dist/fields/Textarea/Input.js.map +1 -1
  555. package/dist/fields/Textarea/index.js +7 -3
  556. package/dist/fields/Textarea/index.js.map +1 -1
  557. package/dist/fields/Upload/HasMany/index.js +48 -16
  558. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  559. package/dist/fields/Upload/HasOne/index.js +13 -5
  560. package/dist/fields/Upload/HasOne/index.js.map +1 -1
  561. package/dist/fields/Upload/Input.js +151 -55
  562. package/dist/fields/Upload/Input.js.map +1 -1
  563. package/dist/fields/Upload/RelationshipContent/index.js +73 -25
  564. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  565. package/dist/fields/Upload/UploadCard/index.js +7 -3
  566. package/dist/fields/Upload/UploadCard/index.js.map +1 -1
  567. package/dist/fields/Upload/index.js +13 -5
  568. package/dist/fields/Upload/index.js.map +1 -1
  569. package/dist/forms/Form/index.js +67 -23
  570. package/dist/forms/Form/index.js.map +1 -1
  571. package/dist/forms/NullifyField/index.js +13 -5
  572. package/dist/forms/NullifyField/index.js.map +1 -1
  573. package/dist/forms/RenderFields/RenderField.js +138 -46
  574. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  575. package/dist/forms/RenderFields/index.js +19 -7
  576. package/dist/forms/RenderFields/index.js.map +1 -1
  577. package/dist/forms/RowLabel/Context/index.js +7 -3
  578. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  579. package/dist/forms/RowLabel/index.js +19 -7
  580. package/dist/forms/RowLabel/index.js.map +1 -1
  581. package/dist/forms/Submit/index.js +13 -5
  582. package/dist/forms/Submit/index.js.map +1 -1
  583. package/dist/forms/fieldSchemasToFormState/renderField.js +19 -7
  584. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  585. package/dist/forms/withCondition/index.js +13 -5
  586. package/dist/forms/withCondition/index.js.map +1 -1
  587. package/dist/graphics/Account/Default/index.js +25 -9
  588. package/dist/graphics/Account/Default/index.js.map +1 -1
  589. package/dist/graphics/Account/Gravatar/index.js +7 -3
  590. package/dist/graphics/Account/Gravatar/index.js.map +1 -1
  591. package/dist/graphics/Account/index.js +12 -4
  592. package/dist/graphics/Account/index.js.map +1 -1
  593. package/dist/graphics/DefaultBlockImage/index.js +67 -23
  594. package/dist/graphics/DefaultBlockImage/index.js.map +1 -1
  595. package/dist/graphics/File/index.js +19 -7
  596. package/dist/graphics/File/index.js.map +1 -1
  597. package/dist/graphics/Icon/index.js +19 -7
  598. package/dist/graphics/Icon/index.js.map +1 -1
  599. package/dist/graphics/Logo/index.js +85 -29
  600. package/dist/graphics/Logo/index.js.map +1 -1
  601. package/dist/icons/Calendar/index.js +13 -5
  602. package/dist/icons/Calendar/index.js.map +1 -1
  603. package/dist/icons/Check/index.js +13 -5
  604. package/dist/icons/Check/index.js.map +1 -1
  605. package/dist/icons/Chevron/index.js +13 -5
  606. package/dist/icons/Chevron/index.js.map +1 -1
  607. package/dist/icons/CloseMenu/index.js +13 -5
  608. package/dist/icons/CloseMenu/index.js.map +1 -1
  609. package/dist/icons/CodeBlock/index.js +13 -5
  610. package/dist/icons/CodeBlock/index.js.map +1 -1
  611. package/dist/icons/Copy/index.js +13 -5
  612. package/dist/icons/Copy/index.js.map +1 -1
  613. package/dist/icons/Document/index.js +13 -5
  614. package/dist/icons/Document/index.js.map +1 -1
  615. package/dist/icons/Dots/index.js +22 -6
  616. package/dist/icons/Dots/index.js.map +1 -1
  617. package/dist/icons/DragHandle/index.js +43 -15
  618. package/dist/icons/DragHandle/index.js.map +1 -1
  619. package/dist/icons/Edit/index.js +13 -5
  620. package/dist/icons/Edit/index.js.map +1 -1
  621. package/dist/icons/ExternalLink/index.js +13 -5
  622. package/dist/icons/ExternalLink/index.js.map +1 -1
  623. package/dist/icons/Eye/index.js +36 -12
  624. package/dist/icons/Eye/index.js.map +1 -1
  625. package/dist/icons/Folder/index.js +13 -5
  626. package/dist/icons/Folder/index.js.map +1 -1
  627. package/dist/icons/Gear/index.js +19 -7
  628. package/dist/icons/Gear/index.js.map +1 -1
  629. package/dist/icons/GridView/index.js +31 -11
  630. package/dist/icons/GridView/index.js.map +1 -1
  631. package/dist/icons/Line/index.js +13 -5
  632. package/dist/icons/Line/index.js.map +1 -1
  633. package/dist/icons/Link/index.js +13 -5
  634. package/dist/icons/Link/index.js.map +1 -1
  635. package/dist/icons/ListView/index.js +13 -5
  636. package/dist/icons/ListView/index.js.map +1 -1
  637. package/dist/icons/Lock/index.js +19 -7
  638. package/dist/icons/Lock/index.js.map +1 -1
  639. package/dist/icons/LogOut/index.js +13 -5
  640. package/dist/icons/LogOut/index.js.map +1 -1
  641. package/dist/icons/Menu/index.js +13 -5
  642. package/dist/icons/Menu/index.js.map +1 -1
  643. package/dist/icons/MinimizeMaximize/index.js +18 -6
  644. package/dist/icons/MinimizeMaximize/index.js.map +1 -1
  645. package/dist/icons/More/index.js +25 -9
  646. package/dist/icons/More/index.js.map +1 -1
  647. package/dist/icons/MoveFolder/index.js +37 -13
  648. package/dist/icons/MoveFolder/index.js.map +1 -1
  649. package/dist/icons/People/index.js +13 -5
  650. package/dist/icons/People/index.js.map +1 -1
  651. package/dist/icons/Plus/index.js +13 -5
  652. package/dist/icons/Plus/index.js.map +1 -1
  653. package/dist/icons/Search/index.js +13 -5
  654. package/dist/icons/Search/index.js.map +1 -1
  655. package/dist/icons/Sort/index.js +25 -9
  656. package/dist/icons/Sort/index.js.map +1 -1
  657. package/dist/icons/Swap/index.js +13 -5
  658. package/dist/icons/Swap/index.js.map +1 -1
  659. package/dist/icons/ThreeDots/index.js +22 -6
  660. package/dist/icons/ThreeDots/index.js.map +1 -1
  661. package/dist/icons/Trash/index.js +13 -5
  662. package/dist/icons/Trash/index.js.map +1 -1
  663. package/dist/icons/X/index.js +13 -5
  664. package/dist/icons/X/index.js.map +1 -1
  665. package/dist/providers/Actions/index.js +7 -3
  666. package/dist/providers/Actions/index.js.map +1 -1
  667. package/dist/providers/Auth/index.js +7 -3
  668. package/dist/providers/Auth/index.js.map +1 -1
  669. package/dist/providers/ClickOutside/index.js +7 -3
  670. package/dist/providers/ClickOutside/index.js.map +1 -1
  671. package/dist/providers/ClientFunction/index.js +13 -5
  672. package/dist/providers/ClientFunction/index.js.map +1 -1
  673. package/dist/providers/Config/index.js +13 -5
  674. package/dist/providers/Config/index.js.map +1 -1
  675. package/dist/providers/DocumentEvents/index.js +7 -3
  676. package/dist/providers/DocumentEvents/index.js.map +1 -1
  677. package/dist/providers/DocumentInfo/index.js +25 -9
  678. package/dist/providers/DocumentInfo/index.js.map +1 -1
  679. package/dist/providers/DocumentTitle/index.js +7 -3
  680. package/dist/providers/DocumentTitle/index.js.map +1 -1
  681. package/dist/providers/EditDepth/index.js +7 -3
  682. package/dist/providers/EditDepth/index.js.map +1 -1
  683. package/dist/providers/EntityVisibility/index.js +7 -3
  684. package/dist/providers/EntityVisibility/index.js.map +1 -1
  685. package/dist/providers/Folders/index.js +7 -3
  686. package/dist/providers/Folders/index.js.map +1 -1
  687. package/dist/providers/ListQuery/index.js +13 -5
  688. package/dist/providers/ListQuery/index.js.map +1 -1
  689. package/dist/providers/LivePreview/index.js +13 -5
  690. package/dist/providers/LivePreview/index.js.map +1 -1
  691. package/dist/providers/Locale/index.js +13 -5
  692. package/dist/providers/Locale/index.js.map +1 -1
  693. package/dist/providers/Operation/index.js +7 -3
  694. package/dist/providers/Operation/index.js.map +1 -1
  695. package/dist/providers/Params/index.js +7 -3
  696. package/dist/providers/Params/index.js.map +1 -1
  697. package/dist/providers/Preferences/index.js +7 -3
  698. package/dist/providers/Preferences/index.js.map +1 -1
  699. package/dist/providers/Root/index.js +154 -50
  700. package/dist/providers/Root/index.js.map +1 -1
  701. package/dist/providers/RouteCache/index.js +7 -3
  702. package/dist/providers/RouteCache/index.js.map +1 -1
  703. package/dist/providers/RouteTransition/ProgressBar/index.js +13 -5
  704. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  705. package/dist/providers/RouteTransition/index.js +7 -3
  706. package/dist/providers/RouteTransition/index.js.map +1 -1
  707. package/dist/providers/SearchParams/index.js +7 -3
  708. package/dist/providers/SearchParams/index.js.map +1 -1
  709. package/dist/providers/Selection/index.js +7 -3
  710. package/dist/providers/Selection/index.js.map +1 -1
  711. package/dist/providers/ServerFunctions/index.js +7 -3
  712. package/dist/providers/ServerFunctions/index.js.map +1 -1
  713. package/dist/providers/TableColumns/RenderDefaultCell/index.js +13 -5
  714. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
  715. package/dist/providers/TableColumns/buildColumnState/index.js +7 -3
  716. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  717. package/dist/providers/TableColumns/buildColumnState/renderCell.js +13 -5
  718. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  719. package/dist/providers/TableColumns/index.js +7 -3
  720. package/dist/providers/TableColumns/index.js.map +1 -1
  721. package/dist/providers/Theme/index.js +7 -3
  722. package/dist/providers/Theme/index.js.map +1 -1
  723. package/dist/providers/ToastContainer/icons/Error.js +19 -7
  724. package/dist/providers/ToastContainer/icons/Error.js.map +1 -1
  725. package/dist/providers/ToastContainer/icons/Info.js +19 -7
  726. package/dist/providers/ToastContainer/icons/Info.js.map +1 -1
  727. package/dist/providers/ToastContainer/icons/Success.js +19 -7
  728. package/dist/providers/ToastContainer/icons/Success.js.map +1 -1
  729. package/dist/providers/ToastContainer/icons/Warning.js +19 -7
  730. package/dist/providers/ToastContainer/icons/Warning.js.map +1 -1
  731. package/dist/providers/ToastContainer/index.js +27 -7
  732. package/dist/providers/ToastContainer/index.js.map +1 -1
  733. package/dist/providers/Translation/index.js +7 -3
  734. package/dist/providers/Translation/index.js.map +1 -1
  735. package/dist/providers/UploadControls/index.js +7 -3
  736. package/dist/providers/UploadControls/index.js.map +1 -1
  737. package/dist/providers/UploadEdits/index.js +7 -3
  738. package/dist/providers/UploadEdits/index.js.map +1 -1
  739. package/dist/providers/UploadHandlers/index.js +7 -3
  740. package/dist/providers/UploadHandlers/index.js.map +1 -1
  741. package/dist/utilities/combineFieldLabel.js +37 -13
  742. package/dist/utilities/combineFieldLabel.js.map +1 -1
  743. package/dist/utilities/getFolderResultsComponentAndData.js +29 -13
  744. package/dist/utilities/getFolderResultsComponentAndData.js.map +1 -1
  745. package/dist/utilities/renderTable.js +82 -26
  746. package/dist/utilities/renderTable.js.map +1 -1
  747. package/dist/views/BrowseByFolder/index.js +168 -56
  748. package/dist/views/BrowseByFolder/index.js.map +1 -1
  749. package/dist/views/CollectionFolder/ListSelection/index.js +67 -23
  750. package/dist/views/CollectionFolder/ListSelection/index.js.map +1 -1
  751. package/dist/views/CollectionFolder/index.js +147 -47
  752. package/dist/views/CollectionFolder/index.js.map +1 -1
  753. package/dist/views/Edit/Auth/APIKey.js +67 -23
  754. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  755. package/dist/views/Edit/Auth/index.js +91 -31
  756. package/dist/views/Edit/Auth/index.js.map +1 -1
  757. package/dist/views/Edit/index.js +117 -41
  758. package/dist/views/Edit/index.js.map +1 -1
  759. package/dist/views/List/GroupByHeader/index.js +19 -7
  760. package/dist/views/List/GroupByHeader/index.js.map +1 -1
  761. package/dist/views/List/ListHeader/index.js +62 -22
  762. package/dist/views/List/ListHeader/index.js.map +1 -1
  763. package/dist/views/List/ListSelection/index.js +49 -17
  764. package/dist/views/List/ListSelection/index.js.map +1 -1
  765. package/dist/views/List/index.js +162 -54
  766. package/dist/views/List/index.js.map +1 -1
  767. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/providers/Folders/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, CollectionSlug, FolderSortKeys } from 'payload'\nimport type { FolderBreadcrumb, FolderDocumentItemKey, FolderOrDocument } from 'payload/shared'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { extractID, formatAdminURL, formatFolderOrDocumentItem } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useDrawerDepth } from '../../elements/Drawer/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useConfig } from '../Config/index.js'\nimport { useLocale } from '../Locale/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { groupItemIDsByRelation } from './groupItemIDsByRelation.js'\n\ntype FolderQueryParams = {\n page?: string\n relationTo?: CollectionSlug[]\n search?: string\n sort?: string\n}\n\nexport type FileCardData = {\n filename: string\n id: number | string\n mimeType: string\n name: string\n url: string\n}\n\nexport type FolderContextValue = {\n /**\n * The collection slugs that a view can be filtered by\n * Used in the browse-by-folder view\n */\n activeCollectionFolderSlugs: CollectionSlug[]\n /**\n * Folder enabled collection slugs that can be populated within the provider\n */\n readonly allCollectionFolderSlugs?: CollectionSlug[]\n allowCreateCollectionSlugs: CollectionSlug[]\n breadcrumbs?: FolderBreadcrumb[]\n checkIfItemIsDisabled: (item: FolderOrDocument) => boolean\n clearSelections: () => void\n currentFolder?: FolderOrDocument | null\n documents?: FolderOrDocument[]\n dragOverlayItem?: FolderOrDocument | undefined\n focusedRowIndex: number\n folderCollectionConfig: ClientCollectionConfig\n folderCollectionSlug: string\n folderFieldName: string\n folderID?: number | string\n FolderResultsComponent: React.ReactNode\n folderType: CollectionSlug[] | undefined\n getFolderRoute: (toFolderID?: number | string) => string\n getSelectedItems?: () => FolderOrDocument[]\n isDragging: boolean\n itemKeysToMove?: Set<FolderDocumentItemKey>\n moveToFolder: (args: {\n itemsToMove: FolderOrDocument[]\n toFolderID?: number | string\n }) => Promise<void>\n onItemClick: (args: { event: React.MouseEvent; index: number; item: FolderOrDocument }) => void\n onItemKeyPress: (args: {\n event: React.KeyboardEvent\n index: number\n item: FolderOrDocument\n }) => void\n refineFolderData: (args: { query?: FolderQueryParams; updateURL: boolean }) => void\n search: string\n selectedFolderCollections?: CollectionSlug[]\n readonly selectedItemKeys: Set<FolderDocumentItemKey>\n setBreadcrumbs: React.Dispatch<React.SetStateAction<FolderBreadcrumb[]>>\n setFocusedRowIndex: React.Dispatch<React.SetStateAction<number>>\n setIsDragging: React.Dispatch<React.SetStateAction<boolean>>\n sort: FolderSortKeys\n subfolders?: FolderOrDocument[]\n}\n\nconst Context = React.createContext<FolderContextValue>({\n activeCollectionFolderSlugs: [],\n allCollectionFolderSlugs: [],\n allowCreateCollectionSlugs: [],\n breadcrumbs: [],\n checkIfItemIsDisabled: () => false,\n clearSelections: () => {},\n currentFolder: null,\n documents: [],\n dragOverlayItem: undefined,\n focusedRowIndex: -1,\n folderCollectionConfig: null,\n folderCollectionSlug: '',\n folderFieldName: 'folder',\n folderID: undefined,\n FolderResultsComponent: null,\n folderType: undefined,\n getFolderRoute: () => '',\n getSelectedItems: () => [],\n isDragging: false,\n itemKeysToMove: undefined,\n moveToFolder: () => Promise.resolve(undefined),\n onItemClick: () => undefined,\n onItemKeyPress: () => undefined,\n refineFolderData: () => undefined,\n search: '',\n selectedFolderCollections: undefined,\n selectedItemKeys: new Set<FolderDocumentItemKey>(),\n setBreadcrumbs: () => {},\n setFocusedRowIndex: () => -1,\n setIsDragging: () => false,\n sort: 'name',\n subfolders: [],\n})\n\nexport type FolderProviderProps = {\n /**\n * The collection slugs that are being viewed\n */\n readonly activeCollectionFolderSlugs?: CollectionSlug[]\n /**\n * Folder enabled collection slugs that can be populated within the provider\n */\n readonly allCollectionFolderSlugs: CollectionSlug[]\n /**\n * Array of slugs that can be created in the folder view\n */\n readonly allowCreateCollectionSlugs: CollectionSlug[]\n readonly allowMultiSelection?: boolean\n /**\n * The base folder route path\n *\n * @example\n * `/collections/:collectionSlug/:folderCollectionSlug`\n * or\n * `/browse-by-folder`\n */\n readonly baseFolderPath?: `/${string}`\n /**\n * Breadcrumbs for the current folder\n */\n readonly breadcrumbs?: FolderBreadcrumb[]\n /**\n * Children to render inside the provider\n */\n readonly children: React.ReactNode\n /**\n * All documents in the current folder\n */\n readonly documents: FolderOrDocument[]\n /**\n * The name of the field that contains the folder relation\n */\n readonly folderFieldName: string\n /**\n * The ID of the current folder\n */\n readonly folderID?: number | string\n /**\n * The component to render the folder results\n */\n readonly FolderResultsComponent: React.ReactNode\n /**\n * Optional function to call when an item is clicked\n */\n readonly onItemClick?: (itme: FolderOrDocument) => void\n /**\n * The intial search query\n */\n readonly search?: string\n /**\n * The sort order of the documents\n *\n * @example\n * `name` for descending\n * `-name` for ascending\n */\n readonly sort?: FolderSortKeys\n /**\n * All subfolders in the current folder\n */\n readonly subfolders: FolderOrDocument[]\n}\nexport function FolderProvider({\n activeCollectionFolderSlugs: activeCollectionSlugs,\n allCollectionFolderSlugs = [],\n allowCreateCollectionSlugs,\n allowMultiSelection = true,\n baseFolderPath,\n breadcrumbs: _breadcrumbsFromProps = [],\n children,\n documents,\n folderFieldName,\n folderID,\n FolderResultsComponent: InitialFolderResultsComponent,\n onItemClick: onItemClickFromProps,\n search,\n sort = 'name',\n subfolders,\n}: FolderProviderProps) {\n const parentFolderContext = useFolder()\n const { config } = useConfig()\n const { routes, serverURL } = config\n const drawerDepth = useDrawerDepth()\n const { t } = useTranslation()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n const locale = useLocale()\n const localeCode = locale ? locale.code : undefined\n\n const currentlySelectedIndexes = React.useRef(new Set<number>())\n\n const [selectedFolderCollections, setSelectedFolderCollections] = React.useState<\n CollectionSlug[]\n >([])\n const [FolderResultsComponent, setFolderResultsComponent] = React.useState(\n InitialFolderResultsComponent || (() => null),\n )\n const [folderCollectionConfig] = React.useState(() =>\n config.collections.find(\n (collection) => config.folders && collection.slug === config.folders.slug,\n ),\n )\n const folderCollectionSlug = folderCollectionConfig.slug\n\n const rawSearchParams = useSearchParams()\n const searchParams = React.useMemo(() => parseSearchParams(rawSearchParams), [rawSearchParams])\n const [currentQuery, setCurrentQuery] = React.useState<FolderQueryParams>(searchParams)\n\n const [isDragging, setIsDragging] = React.useState(false)\n const [selectedItemKeys, setSelectedItemKeys] = React.useState<Set<FolderDocumentItemKey>>(\n () => new Set(),\n )\n const [focusedRowIndex, setFocusedRowIndex] = React.useState(-1)\n // This is used to determine what data to display on the drag overlay\n const [dragOverlayItem, setDragOverlayItem] = React.useState<FolderOrDocument | undefined>()\n const [breadcrumbs, setBreadcrumbs] =\n React.useState<FolderContextValue['breadcrumbs']>(_breadcrumbsFromProps)\n const lastClickTime = React.useRef<null | number>(null)\n const totalCount = subfolders.length + documents.length\n\n const clearSelections = React.useCallback(() => {\n setFocusedRowIndex(-1)\n setSelectedItemKeys(new Set())\n setDragOverlayItem(undefined)\n currentlySelectedIndexes.current = new Set()\n }, [])\n\n const mergeQuery = React.useCallback(\n (newQuery: Partial<FolderQueryParams> = {}): Partial<FolderQueryParams> => {\n let page = 'page' in newQuery ? newQuery.page : currentQuery?.page\n\n if ('search' in newQuery) {\n page = '1'\n }\n\n const mergedQuery = {\n ...currentQuery,\n ...newQuery,\n locale: localeCode,\n page,\n relationTo: 'relationTo' in newQuery ? newQuery.relationTo : currentQuery?.relationTo,\n search: 'search' in newQuery ? newQuery.search : currentQuery?.search,\n sort: 'sort' in newQuery ? newQuery.sort : (currentQuery?.sort ?? undefined),\n }\n\n return mergedQuery\n },\n [currentQuery, localeCode],\n )\n\n const refineFolderData: FolderContextValue['refineFolderData'] = React.useCallback(\n ({ query, updateURL }) => {\n if (updateURL) {\n const queryParams = mergeQuery(query)\n\n startRouteTransition(() =>\n router.replace(\n `${qs.stringify({ ...queryParams, relationTo: JSON.stringify(queryParams.relationTo) }, { addQueryPrefix: true })}`,\n ),\n )\n\n setCurrentQuery(queryParams)\n }\n },\n [mergeQuery, router, startRouteTransition],\n )\n\n const getFolderRoute: FolderContextValue['getFolderRoute'] = React.useCallback(\n (toFolderID) => {\n const queryParams = qs.stringify(mergeQuery({ page: '1', search: '' }), {\n addQueryPrefix: true,\n })\n return formatAdminURL({\n adminRoute: config.routes.admin,\n path: `${baseFolderPath}${toFolderID ? `/${toFolderID}` : ''}${queryParams}`,\n serverURL: config.serverURL,\n })\n },\n [baseFolderPath, config.routes.admin, config.serverURL, mergeQuery],\n )\n\n const getItem = React.useCallback(\n (itemKey: FolderDocumentItemKey) => {\n return [...subfolders, ...documents].find((doc) => doc.itemKey === itemKey)\n },\n [documents, subfolders],\n )\n\n const getSelectedItems = React.useCallback(() => {\n return Array.from(selectedItemKeys).reduce((acc, itemKey) => {\n const item = getItem(itemKey)\n if (item) {\n acc.push(item)\n }\n return acc\n }, [])\n }, [selectedItemKeys, getItem])\n\n const navigateAfterSelection = React.useCallback(\n ({ collectionSlug, docID }: { collectionSlug: string; docID?: number | string }) => {\n if (drawerDepth === 1) {\n // not in a drawer (default is 1)\n if (collectionSlug === folderCollectionSlug) {\n // clicked on folder, take the user to the folder view\n startRouteTransition(() => {\n router.push(getFolderRoute(docID))\n clearSelections()\n })\n } else if (collectionSlug) {\n // clicked on document, take the user to the documet view\n startRouteTransition(() => {\n router.push(\n formatAdminURL({\n adminRoute: config.routes.admin,\n path: `/collections/${collectionSlug}/${docID}`,\n }),\n )\n clearSelections()\n })\n }\n } else {\n clearSelections()\n }\n\n if (typeof onItemClickFromProps === 'function') {\n onItemClickFromProps(getItem(`${collectionSlug}-${docID}`))\n }\n },\n [\n clearSelections,\n config.routes.admin,\n drawerDepth,\n folderCollectionSlug,\n getFolderRoute,\n getItem,\n onItemClickFromProps,\n router,\n startRouteTransition,\n ],\n )\n\n const handleShiftSelection = React.useCallback(\n (targetIndex: number) => {\n const allItems = [...subfolders, ...documents]\n\n // Find existing selection boundaries\n const existingIndexes = allItems.reduce((acc, item, idx) => {\n if (selectedItemKeys.has(item.itemKey)) {\n acc.push(idx)\n }\n return acc\n }, [])\n\n if (existingIndexes.length === 0) {\n // No existing selection, just select target\n return [targetIndex]\n }\n\n const firstSelectedIndex = Math.min(...existingIndexes)\n const lastSelectedIndex = Math.max(...existingIndexes)\n const isWithinBounds = targetIndex >= firstSelectedIndex && targetIndex <= lastSelectedIndex\n\n // Choose anchor based on whether we're contracting or extending\n let anchorIndex = targetIndex\n if (isWithinBounds) {\n // Contracting: if target is at a boundary, use target as anchor\n // Otherwise, use furthest boundary to maintain opposite edge\n if (targetIndex === firstSelectedIndex || targetIndex === lastSelectedIndex) {\n anchorIndex = targetIndex\n } else {\n const distanceToFirst = Math.abs(targetIndex - firstSelectedIndex)\n const distanceToLast = Math.abs(targetIndex - lastSelectedIndex)\n anchorIndex = distanceToFirst >= distanceToLast ? firstSelectedIndex : lastSelectedIndex\n }\n } else {\n // Extending: use closest boundary\n const distanceToFirst = Math.abs(targetIndex - firstSelectedIndex)\n const distanceToLast = Math.abs(targetIndex - lastSelectedIndex)\n anchorIndex = distanceToFirst <= distanceToLast ? firstSelectedIndex : lastSelectedIndex\n }\n\n // Create range from anchor to target\n const startIndex = Math.min(anchorIndex, targetIndex)\n const endIndex = Math.max(anchorIndex, targetIndex)\n const newRangeIndexes = Array.from(\n { length: endIndex - startIndex + 1 },\n (_, i) => startIndex + i,\n )\n\n if (isWithinBounds) {\n // Contracting: replace with new range\n return newRangeIndexes\n } else {\n // Extending: union with existing\n return [...new Set([...existingIndexes, ...newRangeIndexes])]\n }\n },\n [subfolders, documents, selectedItemKeys],\n )\n\n const updateSelections = React.useCallback(\n ({ indexes }: { indexes: number[] }) => {\n const allItems = [...subfolders, ...documents]\n const { newSelectedFolderCollections, newSelectedItemKeys } = allItems.reduce(\n (acc, item, index) => {\n if (indexes.includes(index)) {\n acc.newSelectedItemKeys.add(item.itemKey)\n if (item.relationTo === folderCollectionSlug) {\n item.value.folderType?.forEach((collectionSlug) => {\n if (!acc.newSelectedFolderCollections.includes(collectionSlug)) {\n acc.newSelectedFolderCollections.push(collectionSlug)\n }\n })\n } else {\n if (!acc.newSelectedFolderCollections.includes(item.relationTo)) {\n acc.newSelectedFolderCollections.push(item.relationTo)\n }\n }\n }\n return acc\n },\n {\n newSelectedFolderCollections: [] satisfies CollectionSlug[],\n newSelectedItemKeys: new Set<FolderDocumentItemKey>(),\n },\n )\n\n setSelectedFolderCollections(newSelectedFolderCollections)\n setSelectedItemKeys(newSelectedItemKeys)\n },\n [documents, folderCollectionSlug, subfolders],\n )\n\n const onItemKeyPress: FolderContextValue['onItemKeyPress'] = React.useCallback(\n ({ event, item: currentItem }) => {\n const { code, ctrlKey, metaKey, shiftKey } = event\n const isShiftPressed = shiftKey\n const isCtrlPressed = ctrlKey || metaKey\n const isCurrentlySelected = selectedItemKeys.has(currentItem.itemKey)\n const allItems = [...subfolders, ...documents]\n const currentItemIndex = allItems.findIndex((item) => item.itemKey === currentItem.itemKey)\n\n switch (code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp': {\n event.preventDefault()\n\n if (currentItemIndex === -1) {\n break\n }\n\n const isBackward = code === 'ArrowLeft' || code === 'ArrowUp'\n const newItemIndex = isBackward ? currentItemIndex - 1 : currentItemIndex + 1\n\n if (newItemIndex < 0 || newItemIndex > totalCount - 1) {\n // out of bounds, keep current selection\n return\n }\n\n setFocusedRowIndex(newItemIndex)\n\n if (isCtrlPressed) {\n break\n }\n\n if (isShiftPressed && allowMultiSelection) {\n const selectedIndexes = handleShiftSelection(newItemIndex)\n updateSelections({ indexes: selectedIndexes })\n return\n }\n\n // Single selection without shift\n if (!isShiftPressed) {\n const newItem = allItems[newItemIndex]\n setSelectedItemKeys(new Set([newItem.itemKey]))\n }\n\n break\n }\n case 'Enter': {\n if (selectedItemKeys.size === 1) {\n setFocusedRowIndex(undefined)\n navigateAfterSelection({\n collectionSlug: currentItem.relationTo,\n docID: extractID(currentItem.value),\n })\n return\n }\n break\n }\n case 'Escape': {\n clearSelections()\n break\n }\n case 'KeyA': {\n if (allowMultiSelection && isCtrlPressed) {\n event.preventDefault()\n setFocusedRowIndex(totalCount - 1)\n updateSelections({\n indexes: Array.from({ length: totalCount }, (_, i) => i),\n })\n }\n break\n }\n case 'Space': {\n if (allowMultiSelection && isShiftPressed) {\n event.preventDefault()\n const allItems = [...subfolders, ...documents]\n updateSelections({\n indexes: allItems.reduce((acc, item, idx) => {\n if (item.itemKey === currentItem.itemKey) {\n if (isCurrentlySelected) {\n return acc\n } else {\n acc.push(idx)\n }\n } else if (selectedItemKeys.has(item.itemKey)) {\n acc.push(idx)\n }\n return acc\n }, []),\n })\n } else {\n event.preventDefault()\n updateSelections({\n indexes: isCurrentlySelected ? [] : [currentItemIndex],\n })\n }\n break\n }\n case 'Tab': {\n if (allowMultiSelection && isShiftPressed) {\n const prevIndex = currentItemIndex - 1\n if (prevIndex < 0 && selectedItemKeys?.size > 0) {\n setFocusedRowIndex(prevIndex)\n }\n } else {\n const nextIndex = currentItemIndex + 1\n if (nextIndex === totalCount && selectedItemKeys.size > 0) {\n setFocusedRowIndex(totalCount - 1)\n }\n }\n break\n }\n }\n },\n [\n selectedItemKeys,\n subfolders,\n documents,\n allowMultiSelection,\n handleShiftSelection,\n updateSelections,\n navigateAfterSelection,\n clearSelections,\n totalCount,\n ],\n )\n\n const onItemClick: FolderContextValue['onItemClick'] = React.useCallback(\n ({ event, item: clickedItem }) => {\n let doubleClicked: boolean = false\n const isCtrlPressed = event.ctrlKey || event.metaKey\n const isShiftPressed = event.shiftKey\n const isCurrentlySelected = selectedItemKeys.has(clickedItem.itemKey)\n const allItems = [...subfolders, ...documents]\n const currentItemIndex = allItems.findIndex((item) => item.itemKey === clickedItem.itemKey)\n\n if (allowMultiSelection && isCtrlPressed) {\n event.preventDefault()\n let overlayItemKey: FolderDocumentItemKey | undefined\n const indexes = allItems.reduce((acc, item, idx) => {\n if (item.itemKey === clickedItem.itemKey) {\n if (isCurrentlySelected && event.type !== 'pointermove') {\n return acc\n } else {\n acc.push(idx)\n overlayItemKey = item.itemKey\n }\n } else if (selectedItemKeys.has(item.itemKey)) {\n acc.push(idx)\n }\n return acc\n }, [])\n\n updateSelections({ indexes })\n\n if (overlayItemKey) {\n setDragOverlayItem(getItem(overlayItemKey))\n }\n } else if (allowMultiSelection && isShiftPressed) {\n if (currentItemIndex !== -1) {\n const selectedIndexes = handleShiftSelection(currentItemIndex)\n updateSelections({ indexes: selectedIndexes })\n }\n } else if (allowMultiSelection && event.type === 'pointermove') {\n // on drag start of an unselected item\n if (!isCurrentlySelected) {\n updateSelections({\n indexes: allItems.reduce((acc, item, idx) => {\n if (item.itemKey === clickedItem.itemKey) {\n acc.push(idx)\n }\n return acc\n }, []),\n })\n }\n setDragOverlayItem(getItem(clickedItem.itemKey))\n } else {\n // Normal click - select single item\n const now = Date.now()\n doubleClicked =\n now - lastClickTime.current < 400 && dragOverlayItem?.itemKey === clickedItem.itemKey\n lastClickTime.current = now\n if (!doubleClicked) {\n updateSelections({\n indexes: isCurrentlySelected && selectedItemKeys.size === 1 ? [] : [currentItemIndex],\n })\n }\n setDragOverlayItem(getItem(clickedItem.itemKey))\n }\n\n if (doubleClicked) {\n navigateAfterSelection({\n collectionSlug: clickedItem.relationTo,\n docID: extractID(clickedItem.value),\n })\n }\n },\n [\n selectedItemKeys,\n subfolders,\n documents,\n allowMultiSelection,\n dragOverlayItem,\n getItem,\n updateSelections,\n navigateAfterSelection,\n handleShiftSelection,\n ],\n )\n\n /**\n * Makes requests to the server to update the folder field on passed in documents\n *\n * Might rewrite this in the future to return the promises so errors can be handled contextually\n */\n const moveToFolder: FolderContextValue['moveToFolder'] = React.useCallback(\n async (args) => {\n const { itemsToMove: items, toFolderID } = args\n if (!items.length) {\n return\n }\n\n const movingCurrentFolder =\n items.length === 1 &&\n items[0].relationTo === folderCollectionSlug &&\n items[0].value.id === folderID\n\n if (movingCurrentFolder) {\n const queryParams = qs.stringify(\n {\n depth: 0,\n locale: localeCode,\n },\n {\n addQueryPrefix: true,\n },\n )\n const req = await fetch(\n `${serverURL}${routes.api}/${folderCollectionSlug}/${folderID}${queryParams}`,\n {\n body: JSON.stringify({ [folderFieldName]: toFolderID || null }),\n credentials: 'include',\n headers: {\n 'content-type': 'application/json',\n },\n method: 'PATCH',\n },\n )\n if (req.status !== 200) {\n toast.error(t('general:error'))\n }\n } else {\n for (const [collectionSlug, ids] of Object.entries(groupItemIDsByRelation(items))) {\n const queryParams = qs.stringify(\n {\n depth: 0,\n limit: 0,\n locale: localeCode,\n where: {\n id: {\n in: ids,\n },\n },\n },\n {\n addQueryPrefix: true,\n },\n )\n try {\n await fetch(`${serverURL}${routes.api}/${collectionSlug}${queryParams}`, {\n body: JSON.stringify({ [folderFieldName]: toFolderID || null }),\n credentials: 'include',\n headers: {\n 'content-type': 'application/json',\n },\n method: 'PATCH',\n })\n } catch (error) {\n toast.error(t('general:error'))\n // eslint-disable-next-line no-console\n console.error(error)\n continue\n }\n }\n }\n\n clearSelections()\n },\n [\n folderID,\n clearSelections,\n folderCollectionSlug,\n folderFieldName,\n routes.api,\n serverURL,\n t,\n localeCode,\n ],\n )\n\n const checkIfItemIsDisabled: FolderContextValue['checkIfItemIsDisabled'] = React.useCallback(\n (item) => {\n function folderAcceptsItem({\n item,\n selectedFolderCollections,\n }: {\n item: FolderOrDocument\n selectedFolderCollections: string[]\n }): boolean {\n if (\n !item.value.folderType ||\n (Array.isArray(item.value.folderType) && item.value.folderType.length === 0)\n ) {\n // Enable folder that accept all collections\n return false\n }\n\n if (selectedFolderCollections.length === 0) {\n // If no collections are selected, enable folders that accept all collections\n return Boolean(item.value.folderType || item.value.folderType.length > 0)\n }\n\n // Disable folders that do not accept all of the selected collections\n return selectedFolderCollections.some((slug) => {\n return !item.value.folderType.includes(slug)\n })\n }\n\n if (isDragging) {\n const isSelected = selectedItemKeys.has(item.itemKey)\n if (isSelected) {\n return true\n } else if (item.relationTo === folderCollectionSlug) {\n return folderAcceptsItem({ item, selectedFolderCollections })\n } else {\n // Non folder items are disabled on drag\n return true\n }\n } else if (parentFolderContext?.selectedItemKeys?.size) {\n // Disable selected items from being navigated to in move to drawer\n if (parentFolderContext.selectedItemKeys.has(item.itemKey)) {\n return true\n }\n // Moving items to folder\n if (item.relationTo === folderCollectionSlug) {\n return folderAcceptsItem({\n item,\n selectedFolderCollections: parentFolderContext.selectedFolderCollections,\n })\n }\n // If the item is not a folder, it is disabled on move\n return true\n }\n },\n [\n selectedFolderCollections,\n isDragging,\n selectedItemKeys,\n folderCollectionSlug,\n parentFolderContext?.selectedFolderCollections,\n parentFolderContext?.selectedItemKeys,\n ],\n )\n\n // If a new component is provided, update the state so children can re-render with the new component\n React.useEffect(() => {\n if (InitialFolderResultsComponent) {\n setFolderResultsComponent(InitialFolderResultsComponent)\n }\n }, [InitialFolderResultsComponent])\n\n return (\n <Context\n value={{\n activeCollectionFolderSlugs: activeCollectionSlugs || allCollectionFolderSlugs,\n allCollectionFolderSlugs,\n allowCreateCollectionSlugs,\n breadcrumbs,\n checkIfItemIsDisabled,\n clearSelections,\n currentFolder:\n breadcrumbs?.[breadcrumbs.length - 1]?.id !== undefined\n ? formatFolderOrDocumentItem({\n folderFieldName,\n isUpload: false,\n relationTo: folderCollectionSlug,\n useAsTitle: folderCollectionConfig.admin.useAsTitle,\n value: breadcrumbs[breadcrumbs.length - 1],\n })\n : null,\n documents,\n dragOverlayItem,\n focusedRowIndex,\n folderCollectionConfig,\n folderCollectionSlug,\n folderFieldName,\n folderID,\n FolderResultsComponent,\n folderType: breadcrumbs?.[breadcrumbs.length - 1]?.folderType,\n getFolderRoute,\n getSelectedItems,\n isDragging,\n itemKeysToMove: parentFolderContext.selectedItemKeys,\n moveToFolder,\n onItemClick,\n onItemKeyPress,\n refineFolderData,\n search,\n selectedFolderCollections,\n selectedItemKeys,\n setBreadcrumbs,\n setFocusedRowIndex,\n setIsDragging,\n sort,\n subfolders,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport function useFolder(): FolderContextValue {\n const context = React.use(Context)\n\n if (context === undefined) {\n throw new Error('useFolder must be used within a FolderProvider')\n }\n\n return context\n}\n"],"names":["useRouter","useSearchParams","extractID","formatAdminURL","formatFolderOrDocumentItem","qs","React","toast","useDrawerDepth","parseSearchParams","useConfig","useLocale","useRouteTransition","useTranslation","groupItemIDsByRelation","Context","createContext","activeCollectionFolderSlugs","allCollectionFolderSlugs","allowCreateCollectionSlugs","breadcrumbs","checkIfItemIsDisabled","clearSelections","currentFolder","documents","dragOverlayItem","undefined","focusedRowIndex","folderCollectionConfig","folderCollectionSlug","folderFieldName","folderID","FolderResultsComponent","folderType","getFolderRoute","getSelectedItems","isDragging","itemKeysToMove","moveToFolder","Promise","resolve","onItemClick","onItemKeyPress","refineFolderData","search","selectedFolderCollections","selectedItemKeys","Set","setBreadcrumbs","setFocusedRowIndex","setIsDragging","sort","subfolders","FolderProvider","activeCollectionSlugs","allowMultiSelection","baseFolderPath","_breadcrumbsFromProps","children","InitialFolderResultsComponent","onItemClickFromProps","parentFolderContext","useFolder","config","routes","serverURL","drawerDepth","t","router","startRouteTransition","locale","localeCode","code","currentlySelectedIndexes","useRef","setSelectedFolderCollections","useState","setFolderResultsComponent","collections","find","collection","folders","slug","rawSearchParams","searchParams","useMemo","currentQuery","setCurrentQuery","setSelectedItemKeys","setDragOverlayItem","lastClickTime","totalCount","length","useCallback","current","mergeQuery","newQuery","page","mergedQuery","relationTo","query","updateURL","queryParams","replace","stringify","JSON","addQueryPrefix","toFolderID","adminRoute","admin","path","getItem","itemKey","doc","Array","from","reduce","acc","item","push","navigateAfterSelection","collectionSlug","docID","handleShiftSelection","targetIndex","allItems","existingIndexes","idx","has","firstSelectedIndex","Math","min","lastSelectedIndex","max","isWithinBounds","anchorIndex","distanceToFirst","abs","distanceToLast","startIndex","endIndex","newRangeIndexes","_","i","updateSelections","indexes","newSelectedFolderCollections","newSelectedItemKeys","index","includes","add","value","forEach","event","currentItem","ctrlKey","metaKey","shiftKey","isShiftPressed","isCtrlPressed","isCurrentlySelected","currentItemIndex","findIndex","preventDefault","isBackward","newItemIndex","selectedIndexes","newItem","size","prevIndex","nextIndex","clickedItem","doubleClicked","overlayItemKey","type","now","Date","args","itemsToMove","items","movingCurrentFolder","id","depth","req","fetch","api","body","credentials","headers","method","status","error","ids","Object","entries","limit","where","in","console","folderAcceptsItem","isArray","Boolean","some","isSelected","useEffect","isUpload","useAsTitle","context","use","Error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/providers/Folders/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, CollectionSlug, FolderSortKeys } from 'payload'\nimport type { FolderBreadcrumb, FolderDocumentItemKey, FolderOrDocument } from 'payload/shared'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { extractID, formatAdminURL, formatFolderOrDocumentItem } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useDrawerDepth } from '../../elements/Drawer/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useConfig } from '../Config/index.js'\nimport { useLocale } from '../Locale/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { groupItemIDsByRelation } from './groupItemIDsByRelation.js'\n\ntype FolderQueryParams = {\n page?: string\n relationTo?: CollectionSlug[]\n search?: string\n sort?: string\n}\n\nexport type FileCardData = {\n filename: string\n id: number | string\n mimeType: string\n name: string\n url: string\n}\n\nexport type FolderContextValue = {\n /**\n * The collection slugs that a view can be filtered by\n * Used in the browse-by-folder view\n */\n activeCollectionFolderSlugs: CollectionSlug[]\n /**\n * Folder enabled collection slugs that can be populated within the provider\n */\n readonly allCollectionFolderSlugs?: CollectionSlug[]\n allowCreateCollectionSlugs: CollectionSlug[]\n breadcrumbs?: FolderBreadcrumb[]\n checkIfItemIsDisabled: (item: FolderOrDocument) => boolean\n clearSelections: () => void\n currentFolder?: FolderOrDocument | null\n documents?: FolderOrDocument[]\n dragOverlayItem?: FolderOrDocument | undefined\n focusedRowIndex: number\n folderCollectionConfig: ClientCollectionConfig\n folderCollectionSlug: string\n folderFieldName: string\n folderID?: number | string\n FolderResultsComponent: React.ReactNode\n folderType: CollectionSlug[] | undefined\n getFolderRoute: (toFolderID?: number | string) => string\n getSelectedItems?: () => FolderOrDocument[]\n isDragging: boolean\n itemKeysToMove?: Set<FolderDocumentItemKey>\n moveToFolder: (args: {\n itemsToMove: FolderOrDocument[]\n toFolderID?: number | string\n }) => Promise<void>\n onItemClick: (args: { event: React.MouseEvent; index: number; item: FolderOrDocument }) => void\n onItemKeyPress: (args: {\n event: React.KeyboardEvent\n index: number\n item: FolderOrDocument\n }) => void\n refineFolderData: (args: { query?: FolderQueryParams; updateURL: boolean }) => void\n search: string\n selectedFolderCollections?: CollectionSlug[]\n readonly selectedItemKeys: Set<FolderDocumentItemKey>\n setBreadcrumbs: React.Dispatch<React.SetStateAction<FolderBreadcrumb[]>>\n setFocusedRowIndex: React.Dispatch<React.SetStateAction<number>>\n setIsDragging: React.Dispatch<React.SetStateAction<boolean>>\n sort: FolderSortKeys\n subfolders?: FolderOrDocument[]\n}\n\nconst Context = React.createContext<FolderContextValue>({\n activeCollectionFolderSlugs: [],\n allCollectionFolderSlugs: [],\n allowCreateCollectionSlugs: [],\n breadcrumbs: [],\n checkIfItemIsDisabled: () => false,\n clearSelections: () => {},\n currentFolder: null,\n documents: [],\n dragOverlayItem: undefined,\n focusedRowIndex: -1,\n folderCollectionConfig: null,\n folderCollectionSlug: '',\n folderFieldName: 'folder',\n folderID: undefined,\n FolderResultsComponent: null,\n folderType: undefined,\n getFolderRoute: () => '',\n getSelectedItems: () => [],\n isDragging: false,\n itemKeysToMove: undefined,\n moveToFolder: () => Promise.resolve(undefined),\n onItemClick: () => undefined,\n onItemKeyPress: () => undefined,\n refineFolderData: () => undefined,\n search: '',\n selectedFolderCollections: undefined,\n selectedItemKeys: new Set<FolderDocumentItemKey>(),\n setBreadcrumbs: () => {},\n setFocusedRowIndex: () => -1,\n setIsDragging: () => false,\n sort: 'name',\n subfolders: [],\n})\n\nexport type FolderProviderProps = {\n /**\n * The collection slugs that are being viewed\n */\n readonly activeCollectionFolderSlugs?: CollectionSlug[]\n /**\n * Folder enabled collection slugs that can be populated within the provider\n */\n readonly allCollectionFolderSlugs: CollectionSlug[]\n /**\n * Array of slugs that can be created in the folder view\n */\n readonly allowCreateCollectionSlugs: CollectionSlug[]\n readonly allowMultiSelection?: boolean\n /**\n * The base folder route path\n *\n * @example\n * `/collections/:collectionSlug/:folderCollectionSlug`\n * or\n * `/browse-by-folder`\n */\n readonly baseFolderPath?: `/${string}`\n /**\n * Breadcrumbs for the current folder\n */\n readonly breadcrumbs?: FolderBreadcrumb[]\n /**\n * Children to render inside the provider\n */\n readonly children: React.ReactNode\n /**\n * All documents in the current folder\n */\n readonly documents: FolderOrDocument[]\n /**\n * The name of the field that contains the folder relation\n */\n readonly folderFieldName: string\n /**\n * The ID of the current folder\n */\n readonly folderID?: number | string\n /**\n * The component to render the folder results\n */\n readonly FolderResultsComponent: React.ReactNode\n /**\n * Optional function to call when an item is clicked\n */\n readonly onItemClick?: (itme: FolderOrDocument) => void\n /**\n * The intial search query\n */\n readonly search?: string\n /**\n * The sort order of the documents\n *\n * @example\n * `name` for descending\n * `-name` for ascending\n */\n readonly sort?: FolderSortKeys\n /**\n * All subfolders in the current folder\n */\n readonly subfolders: FolderOrDocument[]\n}\nexport function FolderProvider({\n activeCollectionFolderSlugs: activeCollectionSlugs,\n allCollectionFolderSlugs = [],\n allowCreateCollectionSlugs,\n allowMultiSelection = true,\n baseFolderPath,\n breadcrumbs: _breadcrumbsFromProps = [],\n children,\n documents,\n folderFieldName,\n folderID,\n FolderResultsComponent: InitialFolderResultsComponent,\n onItemClick: onItemClickFromProps,\n search,\n sort = 'name',\n subfolders,\n}: FolderProviderProps) {\n const parentFolderContext = useFolder()\n const { config } = useConfig()\n const { routes, serverURL } = config\n const drawerDepth = useDrawerDepth()\n const { t } = useTranslation()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n const locale = useLocale()\n const localeCode = locale ? locale.code : undefined\n\n const currentlySelectedIndexes = React.useRef(new Set<number>())\n\n const [selectedFolderCollections, setSelectedFolderCollections] = React.useState<\n CollectionSlug[]\n >([])\n const [FolderResultsComponent, setFolderResultsComponent] = React.useState(\n InitialFolderResultsComponent || (() => null),\n )\n const [folderCollectionConfig] = React.useState(() =>\n config.collections.find(\n (collection) => config.folders && collection.slug === config.folders.slug,\n ),\n )\n const folderCollectionSlug = folderCollectionConfig.slug\n\n const rawSearchParams = useSearchParams()\n const searchParams = React.useMemo(() => parseSearchParams(rawSearchParams), [rawSearchParams])\n const [currentQuery, setCurrentQuery] = React.useState<FolderQueryParams>(searchParams)\n\n const [isDragging, setIsDragging] = React.useState(false)\n const [selectedItemKeys, setSelectedItemKeys] = React.useState<Set<FolderDocumentItemKey>>(\n () => new Set(),\n )\n const [focusedRowIndex, setFocusedRowIndex] = React.useState(-1)\n // This is used to determine what data to display on the drag overlay\n const [dragOverlayItem, setDragOverlayItem] = React.useState<FolderOrDocument | undefined>()\n const [breadcrumbs, setBreadcrumbs] =\n React.useState<FolderContextValue['breadcrumbs']>(_breadcrumbsFromProps)\n const lastClickTime = React.useRef<null | number>(null)\n const totalCount = subfolders.length + documents.length\n\n const clearSelections = React.useCallback(() => {\n setFocusedRowIndex(-1)\n setSelectedItemKeys(new Set())\n setDragOverlayItem(undefined)\n currentlySelectedIndexes.current = new Set()\n }, [])\n\n const mergeQuery = React.useCallback(\n (newQuery: Partial<FolderQueryParams> = {}): Partial<FolderQueryParams> => {\n let page = 'page' in newQuery ? newQuery.page : currentQuery?.page\n\n if ('search' in newQuery) {\n page = '1'\n }\n\n const mergedQuery = {\n ...currentQuery,\n ...newQuery,\n locale: localeCode,\n page,\n relationTo: 'relationTo' in newQuery ? newQuery.relationTo : currentQuery?.relationTo,\n search: 'search' in newQuery ? newQuery.search : currentQuery?.search,\n sort: 'sort' in newQuery ? newQuery.sort : (currentQuery?.sort ?? undefined),\n }\n\n return mergedQuery\n },\n [currentQuery, localeCode],\n )\n\n const refineFolderData: FolderContextValue['refineFolderData'] = React.useCallback(\n ({ query, updateURL }) => {\n if (updateURL) {\n const queryParams = mergeQuery(query)\n\n startRouteTransition(() =>\n router.replace(\n `${qs.stringify({ ...queryParams, relationTo: JSON.stringify(queryParams.relationTo) }, { addQueryPrefix: true })}`,\n ),\n )\n\n setCurrentQuery(queryParams)\n }\n },\n [mergeQuery, router, startRouteTransition],\n )\n\n const getFolderRoute: FolderContextValue['getFolderRoute'] = React.useCallback(\n (toFolderID) => {\n const queryParams = qs.stringify(mergeQuery({ page: '1', search: '' }), {\n addQueryPrefix: true,\n })\n return formatAdminURL({\n adminRoute: config.routes.admin,\n path: `${baseFolderPath}${toFolderID ? `/${toFolderID}` : ''}${queryParams}`,\n serverURL: config.serverURL,\n })\n },\n [baseFolderPath, config.routes.admin, config.serverURL, mergeQuery],\n )\n\n const getItem = React.useCallback(\n (itemKey: FolderDocumentItemKey) => {\n return [...subfolders, ...documents].find((doc) => doc.itemKey === itemKey)\n },\n [documents, subfolders],\n )\n\n const getSelectedItems = React.useCallback(() => {\n return Array.from(selectedItemKeys).reduce((acc, itemKey) => {\n const item = getItem(itemKey)\n if (item) {\n acc.push(item)\n }\n return acc\n }, [])\n }, [selectedItemKeys, getItem])\n\n const navigateAfterSelection = React.useCallback(\n ({ collectionSlug, docID }: { collectionSlug: string; docID?: number | string }) => {\n if (drawerDepth === 1) {\n // not in a drawer (default is 1)\n if (collectionSlug === folderCollectionSlug) {\n // clicked on folder, take the user to the folder view\n startRouteTransition(() => {\n router.push(getFolderRoute(docID))\n clearSelections()\n })\n } else if (collectionSlug) {\n // clicked on document, take the user to the documet view\n startRouteTransition(() => {\n router.push(\n formatAdminURL({\n adminRoute: config.routes.admin,\n path: `/collections/${collectionSlug}/${docID}`,\n }),\n )\n clearSelections()\n })\n }\n } else {\n clearSelections()\n }\n\n if (typeof onItemClickFromProps === 'function') {\n onItemClickFromProps(getItem(`${collectionSlug}-${docID}`))\n }\n },\n [\n clearSelections,\n config.routes.admin,\n drawerDepth,\n folderCollectionSlug,\n getFolderRoute,\n getItem,\n onItemClickFromProps,\n router,\n startRouteTransition,\n ],\n )\n\n const handleShiftSelection = React.useCallback(\n (targetIndex: number) => {\n const allItems = [...subfolders, ...documents]\n\n // Find existing selection boundaries\n const existingIndexes = allItems.reduce((acc, item, idx) => {\n if (selectedItemKeys.has(item.itemKey)) {\n acc.push(idx)\n }\n return acc\n }, [])\n\n if (existingIndexes.length === 0) {\n // No existing selection, just select target\n return [targetIndex]\n }\n\n const firstSelectedIndex = Math.min(...existingIndexes)\n const lastSelectedIndex = Math.max(...existingIndexes)\n const isWithinBounds = targetIndex >= firstSelectedIndex && targetIndex <= lastSelectedIndex\n\n // Choose anchor based on whether we're contracting or extending\n let anchorIndex = targetIndex\n if (isWithinBounds) {\n // Contracting: if target is at a boundary, use target as anchor\n // Otherwise, use furthest boundary to maintain opposite edge\n if (targetIndex === firstSelectedIndex || targetIndex === lastSelectedIndex) {\n anchorIndex = targetIndex\n } else {\n const distanceToFirst = Math.abs(targetIndex - firstSelectedIndex)\n const distanceToLast = Math.abs(targetIndex - lastSelectedIndex)\n anchorIndex = distanceToFirst >= distanceToLast ? firstSelectedIndex : lastSelectedIndex\n }\n } else {\n // Extending: use closest boundary\n const distanceToFirst = Math.abs(targetIndex - firstSelectedIndex)\n const distanceToLast = Math.abs(targetIndex - lastSelectedIndex)\n anchorIndex = distanceToFirst <= distanceToLast ? firstSelectedIndex : lastSelectedIndex\n }\n\n // Create range from anchor to target\n const startIndex = Math.min(anchorIndex, targetIndex)\n const endIndex = Math.max(anchorIndex, targetIndex)\n const newRangeIndexes = Array.from(\n { length: endIndex - startIndex + 1 },\n (_, i) => startIndex + i,\n )\n\n if (isWithinBounds) {\n // Contracting: replace with new range\n return newRangeIndexes\n } else {\n // Extending: union with existing\n return [...new Set([...existingIndexes, ...newRangeIndexes])]\n }\n },\n [subfolders, documents, selectedItemKeys],\n )\n\n const updateSelections = React.useCallback(\n ({ indexes }: { indexes: number[] }) => {\n const allItems = [...subfolders, ...documents]\n const { newSelectedFolderCollections, newSelectedItemKeys } = allItems.reduce(\n (acc, item, index) => {\n if (indexes.includes(index)) {\n acc.newSelectedItemKeys.add(item.itemKey)\n if (item.relationTo === folderCollectionSlug) {\n item.value.folderType?.forEach((collectionSlug) => {\n if (!acc.newSelectedFolderCollections.includes(collectionSlug)) {\n acc.newSelectedFolderCollections.push(collectionSlug)\n }\n })\n } else {\n if (!acc.newSelectedFolderCollections.includes(item.relationTo)) {\n acc.newSelectedFolderCollections.push(item.relationTo)\n }\n }\n }\n return acc\n },\n {\n newSelectedFolderCollections: [] satisfies CollectionSlug[],\n newSelectedItemKeys: new Set<FolderDocumentItemKey>(),\n },\n )\n\n setSelectedFolderCollections(newSelectedFolderCollections)\n setSelectedItemKeys(newSelectedItemKeys)\n },\n [documents, folderCollectionSlug, subfolders],\n )\n\n const onItemKeyPress: FolderContextValue['onItemKeyPress'] = React.useCallback(\n ({ event, item: currentItem }) => {\n const { code, ctrlKey, metaKey, shiftKey } = event\n const isShiftPressed = shiftKey\n const isCtrlPressed = ctrlKey || metaKey\n const isCurrentlySelected = selectedItemKeys.has(currentItem.itemKey)\n const allItems = [...subfolders, ...documents]\n const currentItemIndex = allItems.findIndex((item) => item.itemKey === currentItem.itemKey)\n\n switch (code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp': {\n event.preventDefault()\n\n if (currentItemIndex === -1) {\n break\n }\n\n const isBackward = code === 'ArrowLeft' || code === 'ArrowUp'\n const newItemIndex = isBackward ? currentItemIndex - 1 : currentItemIndex + 1\n\n if (newItemIndex < 0 || newItemIndex > totalCount - 1) {\n // out of bounds, keep current selection\n return\n }\n\n setFocusedRowIndex(newItemIndex)\n\n if (isCtrlPressed) {\n break\n }\n\n if (isShiftPressed && allowMultiSelection) {\n const selectedIndexes = handleShiftSelection(newItemIndex)\n updateSelections({ indexes: selectedIndexes })\n return\n }\n\n // Single selection without shift\n if (!isShiftPressed) {\n const newItem = allItems[newItemIndex]\n setSelectedItemKeys(new Set([newItem.itemKey]))\n }\n\n break\n }\n case 'Enter': {\n if (selectedItemKeys.size === 1) {\n setFocusedRowIndex(undefined)\n navigateAfterSelection({\n collectionSlug: currentItem.relationTo,\n docID: extractID(currentItem.value),\n })\n return\n }\n break\n }\n case 'Escape': {\n clearSelections()\n break\n }\n case 'KeyA': {\n if (allowMultiSelection && isCtrlPressed) {\n event.preventDefault()\n setFocusedRowIndex(totalCount - 1)\n updateSelections({\n indexes: Array.from({ length: totalCount }, (_, i) => i),\n })\n }\n break\n }\n case 'Space': {\n if (allowMultiSelection && isShiftPressed) {\n event.preventDefault()\n const allItems = [...subfolders, ...documents]\n updateSelections({\n indexes: allItems.reduce((acc, item, idx) => {\n if (item.itemKey === currentItem.itemKey) {\n if (isCurrentlySelected) {\n return acc\n } else {\n acc.push(idx)\n }\n } else if (selectedItemKeys.has(item.itemKey)) {\n acc.push(idx)\n }\n return acc\n }, []),\n })\n } else {\n event.preventDefault()\n updateSelections({\n indexes: isCurrentlySelected ? [] : [currentItemIndex],\n })\n }\n break\n }\n case 'Tab': {\n if (allowMultiSelection && isShiftPressed) {\n const prevIndex = currentItemIndex - 1\n if (prevIndex < 0 && selectedItemKeys?.size > 0) {\n setFocusedRowIndex(prevIndex)\n }\n } else {\n const nextIndex = currentItemIndex + 1\n if (nextIndex === totalCount && selectedItemKeys.size > 0) {\n setFocusedRowIndex(totalCount - 1)\n }\n }\n break\n }\n }\n },\n [\n selectedItemKeys,\n subfolders,\n documents,\n allowMultiSelection,\n handleShiftSelection,\n updateSelections,\n navigateAfterSelection,\n clearSelections,\n totalCount,\n ],\n )\n\n const onItemClick: FolderContextValue['onItemClick'] = React.useCallback(\n ({ event, item: clickedItem }) => {\n let doubleClicked: boolean = false\n const isCtrlPressed = event.ctrlKey || event.metaKey\n const isShiftPressed = event.shiftKey\n const isCurrentlySelected = selectedItemKeys.has(clickedItem.itemKey)\n const allItems = [...subfolders, ...documents]\n const currentItemIndex = allItems.findIndex((item) => item.itemKey === clickedItem.itemKey)\n\n if (allowMultiSelection && isCtrlPressed) {\n event.preventDefault()\n let overlayItemKey: FolderDocumentItemKey | undefined\n const indexes = allItems.reduce((acc, item, idx) => {\n if (item.itemKey === clickedItem.itemKey) {\n if (isCurrentlySelected && event.type !== 'pointermove') {\n return acc\n } else {\n acc.push(idx)\n overlayItemKey = item.itemKey\n }\n } else if (selectedItemKeys.has(item.itemKey)) {\n acc.push(idx)\n }\n return acc\n }, [])\n\n updateSelections({ indexes })\n\n if (overlayItemKey) {\n setDragOverlayItem(getItem(overlayItemKey))\n }\n } else if (allowMultiSelection && isShiftPressed) {\n if (currentItemIndex !== -1) {\n const selectedIndexes = handleShiftSelection(currentItemIndex)\n updateSelections({ indexes: selectedIndexes })\n }\n } else if (allowMultiSelection && event.type === 'pointermove') {\n // on drag start of an unselected item\n if (!isCurrentlySelected) {\n updateSelections({\n indexes: allItems.reduce((acc, item, idx) => {\n if (item.itemKey === clickedItem.itemKey) {\n acc.push(idx)\n }\n return acc\n }, []),\n })\n }\n setDragOverlayItem(getItem(clickedItem.itemKey))\n } else {\n // Normal click - select single item\n const now = Date.now()\n doubleClicked =\n now - lastClickTime.current < 400 && dragOverlayItem?.itemKey === clickedItem.itemKey\n lastClickTime.current = now\n if (!doubleClicked) {\n updateSelections({\n indexes: isCurrentlySelected && selectedItemKeys.size === 1 ? [] : [currentItemIndex],\n })\n }\n setDragOverlayItem(getItem(clickedItem.itemKey))\n }\n\n if (doubleClicked) {\n navigateAfterSelection({\n collectionSlug: clickedItem.relationTo,\n docID: extractID(clickedItem.value),\n })\n }\n },\n [\n selectedItemKeys,\n subfolders,\n documents,\n allowMultiSelection,\n dragOverlayItem,\n getItem,\n updateSelections,\n navigateAfterSelection,\n handleShiftSelection,\n ],\n )\n\n /**\n * Makes requests to the server to update the folder field on passed in documents\n *\n * Might rewrite this in the future to return the promises so errors can be handled contextually\n */\n const moveToFolder: FolderContextValue['moveToFolder'] = React.useCallback(\n async (args) => {\n const { itemsToMove: items, toFolderID } = args\n if (!items.length) {\n return\n }\n\n const movingCurrentFolder =\n items.length === 1 &&\n items[0].relationTo === folderCollectionSlug &&\n items[0].value.id === folderID\n\n if (movingCurrentFolder) {\n const queryParams = qs.stringify(\n {\n depth: 0,\n locale: localeCode,\n },\n {\n addQueryPrefix: true,\n },\n )\n const req = await fetch(\n `${serverURL}${routes.api}/${folderCollectionSlug}/${folderID}${queryParams}`,\n {\n body: JSON.stringify({ [folderFieldName]: toFolderID || null }),\n credentials: 'include',\n headers: {\n 'content-type': 'application/json',\n },\n method: 'PATCH',\n },\n )\n if (req.status !== 200) {\n toast.error(t('general:error'))\n }\n } else {\n for (const [collectionSlug, ids] of Object.entries(groupItemIDsByRelation(items))) {\n const queryParams = qs.stringify(\n {\n depth: 0,\n limit: 0,\n locale: localeCode,\n where: {\n id: {\n in: ids,\n },\n },\n },\n {\n addQueryPrefix: true,\n },\n )\n try {\n await fetch(`${serverURL}${routes.api}/${collectionSlug}${queryParams}`, {\n body: JSON.stringify({ [folderFieldName]: toFolderID || null }),\n credentials: 'include',\n headers: {\n 'content-type': 'application/json',\n },\n method: 'PATCH',\n })\n } catch (error) {\n toast.error(t('general:error'))\n // eslint-disable-next-line no-console\n console.error(error)\n continue\n }\n }\n }\n\n clearSelections()\n },\n [\n folderID,\n clearSelections,\n folderCollectionSlug,\n folderFieldName,\n routes.api,\n serverURL,\n t,\n localeCode,\n ],\n )\n\n const checkIfItemIsDisabled: FolderContextValue['checkIfItemIsDisabled'] = React.useCallback(\n (item) => {\n function folderAcceptsItem({\n item,\n selectedFolderCollections,\n }: {\n item: FolderOrDocument\n selectedFolderCollections: string[]\n }): boolean {\n if (\n !item.value.folderType ||\n (Array.isArray(item.value.folderType) && item.value.folderType.length === 0)\n ) {\n // Enable folder that accept all collections\n return false\n }\n\n if (selectedFolderCollections.length === 0) {\n // If no collections are selected, enable folders that accept all collections\n return Boolean(item.value.folderType || item.value.folderType.length > 0)\n }\n\n // Disable folders that do not accept all of the selected collections\n return selectedFolderCollections.some((slug) => {\n return !item.value.folderType.includes(slug)\n })\n }\n\n if (isDragging) {\n const isSelected = selectedItemKeys.has(item.itemKey)\n if (isSelected) {\n return true\n } else if (item.relationTo === folderCollectionSlug) {\n return folderAcceptsItem({ item, selectedFolderCollections })\n } else {\n // Non folder items are disabled on drag\n return true\n }\n } else if (parentFolderContext?.selectedItemKeys?.size) {\n // Disable selected items from being navigated to in move to drawer\n if (parentFolderContext.selectedItemKeys.has(item.itemKey)) {\n return true\n }\n // Moving items to folder\n if (item.relationTo === folderCollectionSlug) {\n return folderAcceptsItem({\n item,\n selectedFolderCollections: parentFolderContext.selectedFolderCollections,\n })\n }\n // If the item is not a folder, it is disabled on move\n return true\n }\n },\n [\n selectedFolderCollections,\n isDragging,\n selectedItemKeys,\n folderCollectionSlug,\n parentFolderContext?.selectedFolderCollections,\n parentFolderContext?.selectedItemKeys,\n ],\n )\n\n // If a new component is provided, update the state so children can re-render with the new component\n React.useEffect(() => {\n if (InitialFolderResultsComponent) {\n setFolderResultsComponent(InitialFolderResultsComponent)\n }\n }, [InitialFolderResultsComponent])\n\n return (\n <Context\n value={{\n activeCollectionFolderSlugs: activeCollectionSlugs || allCollectionFolderSlugs,\n allCollectionFolderSlugs,\n allowCreateCollectionSlugs,\n breadcrumbs,\n checkIfItemIsDisabled,\n clearSelections,\n currentFolder:\n breadcrumbs?.[breadcrumbs.length - 1]?.id !== undefined\n ? formatFolderOrDocumentItem({\n folderFieldName,\n isUpload: false,\n relationTo: folderCollectionSlug,\n useAsTitle: folderCollectionConfig.admin.useAsTitle,\n value: breadcrumbs[breadcrumbs.length - 1],\n })\n : null,\n documents,\n dragOverlayItem,\n focusedRowIndex,\n folderCollectionConfig,\n folderCollectionSlug,\n folderFieldName,\n folderID,\n FolderResultsComponent,\n folderType: breadcrumbs?.[breadcrumbs.length - 1]?.folderType,\n getFolderRoute,\n getSelectedItems,\n isDragging,\n itemKeysToMove: parentFolderContext.selectedItemKeys,\n moveToFolder,\n onItemClick,\n onItemKeyPress,\n refineFolderData,\n search,\n selectedFolderCollections,\n selectedItemKeys,\n setBreadcrumbs,\n setFocusedRowIndex,\n setIsDragging,\n sort,\n subfolders,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport function useFolder(): FolderContextValue {\n const context = React.use(Context)\n\n if (context === undefined) {\n throw new Error('useFolder must be used within a FolderProvider')\n }\n\n return context\n}\n"],"names":["useRouter","useSearchParams","extractID","formatAdminURL","formatFolderOrDocumentItem","qs","React","toast","useDrawerDepth","parseSearchParams","useConfig","useLocale","useRouteTransition","useTranslation","groupItemIDsByRelation","Context","createContext","activeCollectionFolderSlugs","allCollectionFolderSlugs","allowCreateCollectionSlugs","breadcrumbs","checkIfItemIsDisabled","clearSelections","currentFolder","documents","dragOverlayItem","undefined","focusedRowIndex","folderCollectionConfig","folderCollectionSlug","folderFieldName","folderID","FolderResultsComponent","folderType","getFolderRoute","getSelectedItems","isDragging","itemKeysToMove","moveToFolder","Promise","resolve","onItemClick","onItemKeyPress","refineFolderData","search","selectedFolderCollections","selectedItemKeys","Set","setBreadcrumbs","setFocusedRowIndex","setIsDragging","sort","subfolders","FolderProvider","activeCollectionSlugs","allowMultiSelection","baseFolderPath","_breadcrumbsFromProps","children","InitialFolderResultsComponent","onItemClickFromProps","parentFolderContext","useFolder","config","routes","serverURL","drawerDepth","t","router","startRouteTransition","locale","localeCode","code","currentlySelectedIndexes","useRef","setSelectedFolderCollections","useState","setFolderResultsComponent","collections","find","collection","folders","slug","rawSearchParams","searchParams","useMemo","currentQuery","setCurrentQuery","setSelectedItemKeys","setDragOverlayItem","lastClickTime","totalCount","length","useCallback","current","mergeQuery","newQuery","page","mergedQuery","relationTo","query","updateURL","queryParams","replace","stringify","JSON","addQueryPrefix","toFolderID","adminRoute","admin","path","getItem","itemKey","doc","Array","from","reduce","acc","item","push","navigateAfterSelection","collectionSlug","docID","handleShiftSelection","targetIndex","allItems","existingIndexes","idx","has","firstSelectedIndex","Math","min","lastSelectedIndex","max","isWithinBounds","anchorIndex","distanceToFirst","abs","distanceToLast","startIndex","endIndex","newRangeIndexes","_","i","updateSelections","indexes","newSelectedFolderCollections","newSelectedItemKeys","index","includes","add","value","forEach","event","currentItem","ctrlKey","metaKey","shiftKey","isShiftPressed","isCtrlPressed","isCurrentlySelected","currentItemIndex","findIndex","preventDefault","isBackward","newItemIndex","selectedIndexes","newItem","size","prevIndex","nextIndex","clickedItem","doubleClicked","overlayItemKey","type","now","Date","args","itemsToMove","items","movingCurrentFolder","id","depth","req","fetch","api","body","credentials","headers","method","status","error","ids","Object","entries","limit","where","in","console","folderAcceptsItem","isArray","Boolean","some","isSelected","useEffect","isUpload","useAsTitle","context","use","Error"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
3
3
  import { useRouter, useSearchParams } from 'next/navigation.js';
4
4
  import * as qs from 'qs-esm';
5
5
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
@@ -139,7 +139,7 @@ export const ListQueryProvider = ({ children, collectionSlug, data, modifySearch
139
139
  modifySearchParams,
140
140
  queryFromProps
141
141
  ]);
142
- return /*#__PURE__*/ _jsx(ListQueryContext, {
142
+ return /*#__PURE__*/ _jsxDEV(ListQueryContext, {
143
143
  value: {
144
144
  collectionSlug,
145
145
  data,
@@ -155,11 +155,19 @@ export const ListQueryProvider = ({ children, collectionSlug, data, modifySearch
155
155
  setModified,
156
156
  ...contextRef.current
157
157
  },
158
- children: /*#__PURE__*/ _jsx(ListQueryModifiedContext, {
158
+ children: /*#__PURE__*/ _jsxDEV(ListQueryModifiedContext, {
159
159
  value: modified,
160
160
  children: children
161
- })
162
- });
161
+ }, void 0, false, {
162
+ fileName: "src/providers/ListQuery/index.tsx",
163
+ lineNumber: 192,
164
+ columnNumber: 7
165
+ }, this)
166
+ }, void 0, false, {
167
+ fileName: "src/providers/ListQuery/index.tsx",
168
+ lineNumber: 175,
169
+ columnNumber: 5
170
+ }, this);
163
171
  };
164
172
 
165
173
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { type ListQuery, type Where } from 'payload'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useConfig } from '../Config/index.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\nimport { mergeQuery } from './mergeQuery.js'\nimport { sanitizeQuery } from './sanitizeQuery.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n query: queryFromProps,\n}) => {\n // TODO: Investigate if this is still needed\n 'use no memo'\n // TODO: Investigate if this is still needed\n\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n const { getEntityConfig } = useConfig()\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const searchParams = useMemo<ListQuery>(\n () => sanitizeQuery(parseSearchParams(rawSearchParams)),\n [rawSearchParams],\n )\n\n const contextRef = useRef({} as IListQueryContext)\n\n contextRef.current.modified = modified\n\n const { onQueryChange } = useListDrawerContext()\n\n const [query, setQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return searchParams\n } else {\n return {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n }\n }\n })\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (incomingQuery: ListQuery, modified?: boolean) => {\n if (modified !== undefined) {\n setModified(modified)\n } else {\n setModified(true)\n }\n\n const newQuery = mergeQuery(query, incomingQuery, {\n defaults: {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n },\n })\n\n if (modifySearchParams) {\n startRouteTransition(() =>\n router.replace(\n `${qs.stringify(\n {\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n },\n { addQueryPrefix: true },\n )}`,\n ),\n )\n } else if (\n typeof onQueryChange === 'function' ||\n typeof onQueryChangeFromProps === 'function'\n ) {\n const onChangeFn = onQueryChange || onQueryChangeFromProps\n onChangeFn(newQuery)\n }\n\n setQuery(newQuery)\n },\n [\n query,\n queryFromProps.limit,\n queryFromProps.sort,\n modifySearchParams,\n onQueryChange,\n onQueryChangeFromProps,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: arg })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: arg, page: 1 })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (sort: string) => {\n await refineListData({ sort })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (where: Where) => {\n await refineListData({ where })\n },\n [refineListData],\n )\n\n const mergeQueryFromPropsAndSyncToURL = useEffectEvent(() => {\n const newQuery = sanitizeQuery({ ...(query || {}), ...(queryFromProps || {}) })\n\n const search = `?${qs.stringify({\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n })}`\n\n if (window.location.search !== search) {\n setQuery(newQuery)\n\n // Important: do not use router.replace here to avoid re-rendering on initial load\n window.history.replaceState(null, '', search)\n }\n })\n\n // If `query` is updated externally, update the local state\n // E.g. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams) {\n mergeQueryFromPropsAndSyncToURL()\n }\n }, [modifySearchParams, queryFromProps])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n isGroupingBy: Boolean(collectionConfig?.admin?.groupBy && query?.groupBy),\n orderableFieldName,\n query,\n refineListData,\n setModified,\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"names":["useRouter","useSearchParams","qs","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","useConfig","ListQueryContext","ListQueryModifiedContext","mergeQuery","sanitizeQuery","useListQuery","ListQueryProvider","children","collectionSlug","data","modifySearchParams","onQueryChange","onQueryChangeFromProps","orderableFieldName","query","queryFromProps","router","rawSearchParams","startRouteTransition","modified","setModified","getEntityConfig","collectionConfig","searchParams","contextRef","current","setQuery","limit","sort","refineListData","incomingQuery","undefined","newQuery","defaults","replace","stringify","columns","JSON","queryByGroup","addQueryPrefix","onChangeFn","handlePageChange","arg","page","handlePerPageChange","handleSearchChange","search","handleSortChange","handleWhereChange","where","mergeQueryFromPropsAndSyncToURL","window","location","history","replaceState","value","isGroupingBy","Boolean","admin","groupBy"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { type ListQuery, type Where } from 'payload'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useConfig } from '../Config/index.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\nimport { mergeQuery } from './mergeQuery.js'\nimport { sanitizeQuery } from './sanitizeQuery.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n query: queryFromProps,\n}) => {\n // TODO: Investigate if this is still needed\n 'use no memo'\n // TODO: Investigate if this is still needed\n\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n const { getEntityConfig } = useConfig()\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const searchParams = useMemo<ListQuery>(\n () => sanitizeQuery(parseSearchParams(rawSearchParams)),\n [rawSearchParams],\n )\n\n const contextRef = useRef({} as IListQueryContext)\n\n contextRef.current.modified = modified\n\n const { onQueryChange } = useListDrawerContext()\n\n const [query, setQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return searchParams\n } else {\n return {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n }\n }\n })\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (incomingQuery: ListQuery, modified?: boolean) => {\n if (modified !== undefined) {\n setModified(modified)\n } else {\n setModified(true)\n }\n\n const newQuery = mergeQuery(query, incomingQuery, {\n defaults: {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n },\n })\n\n if (modifySearchParams) {\n startRouteTransition(() =>\n router.replace(\n `${qs.stringify(\n {\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n },\n { addQueryPrefix: true },\n )}`,\n ),\n )\n } else if (\n typeof onQueryChange === 'function' ||\n typeof onQueryChangeFromProps === 'function'\n ) {\n const onChangeFn = onQueryChange || onQueryChangeFromProps\n onChangeFn(newQuery)\n }\n\n setQuery(newQuery)\n },\n [\n query,\n queryFromProps.limit,\n queryFromProps.sort,\n modifySearchParams,\n onQueryChange,\n onQueryChangeFromProps,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: arg })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: arg, page: 1 })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (sort: string) => {\n await refineListData({ sort })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (where: Where) => {\n await refineListData({ where })\n },\n [refineListData],\n )\n\n const mergeQueryFromPropsAndSyncToURL = useEffectEvent(() => {\n const newQuery = sanitizeQuery({ ...(query || {}), ...(queryFromProps || {}) })\n\n const search = `?${qs.stringify({\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n })}`\n\n if (window.location.search !== search) {\n setQuery(newQuery)\n\n // Important: do not use router.replace here to avoid re-rendering on initial load\n window.history.replaceState(null, '', search)\n }\n })\n\n // If `query` is updated externally, update the local state\n // E.g. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams) {\n mergeQueryFromPropsAndSyncToURL()\n }\n }, [modifySearchParams, queryFromProps])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n isGroupingBy: Boolean(collectionConfig?.admin?.groupBy && query?.groupBy),\n orderableFieldName,\n query,\n refineListData,\n setModified,\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"names":["useRouter","useSearchParams","qs","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","useConfig","ListQueryContext","ListQueryModifiedContext","mergeQuery","sanitizeQuery","useListQuery","ListQueryProvider","children","collectionSlug","data","modifySearchParams","onQueryChange","onQueryChangeFromProps","orderableFieldName","query","queryFromProps","router","rawSearchParams","startRouteTransition","modified","setModified","getEntityConfig","collectionConfig","searchParams","contextRef","current","setQuery","limit","sort","refineListData","incomingQuery","undefined","newQuery","defaults","replace","stringify","columns","JSON","queryByGroup","addQueryPrefix","onChangeFn","handlePageChange","arg","page","handlePerPageChange","handleSearchChange","search","handleSortChange","handleWhereChange","where","mergeQueryFromPropsAndSyncToURL","window","location","history","replaceState","value","isGroupingBy","Boolean","admin","groupBy"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
3
3
  import { DndContext } from '@dnd-kit/core';
4
4
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
5
  import { usePopupWindow } from '../../hooks/usePopupWindow.js';
@@ -187,7 +187,7 @@ import { sizeReducer } from './sizeReducer.js';
187
187
  collectionSlug,
188
188
  globalSlug
189
189
  ]);
190
- return /*#__PURE__*/ _jsx(LivePreviewContext, {
190
+ return /*#__PURE__*/ _jsxDEV(LivePreviewContext, {
191
191
  value: {
192
192
  appIsReady,
193
193
  breakpoint,
@@ -223,12 +223,20 @@ import { sizeReducer } from './sizeReducer.js';
223
223
  url,
224
224
  zoom
225
225
  },
226
- children: /*#__PURE__*/ _jsx(DndContext, {
226
+ children: /*#__PURE__*/ _jsxDEV(DndContext, {
227
227
  collisionDetection: customCollisionDetection,
228
228
  onDragEnd: handleDragEnd,
229
229
  children: children
230
- })
231
- });
230
+ }, void 0, false, {
231
+ fileName: "src/providers/LivePreview/index.tsx",
232
+ lineNumber: 289,
233
+ columnNumber: 7
234
+ }, this)
235
+ }, void 0, false, {
236
+ fileName: "src/providers/LivePreview/index.tsx",
237
+ lineNumber: 252,
238
+ columnNumber: 5
239
+ }, this);
232
240
  };
233
241
 
234
242
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/providers/LivePreview/index.tsx"],"sourcesContent":["'use client'\nimport type { CollectionPreferences, LivePreviewConfig, LivePreviewURLType } from 'payload'\n\nimport { DndContext } from '@dnd-kit/core'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { LivePreviewContextType } from './context.js'\n\nimport { usePopupWindow } from '../../hooks/usePopupWindow.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { formatAbsoluteURL } from '../../utilities/formatAbsoluteURL.js'\nimport { customCollisionDetection } from './collisionDetection.js'\nimport { LivePreviewContext } from './context.js'\nimport { sizeReducer } from './sizeReducer.js'\n\nexport type LivePreviewProviderProps = {\n appIsReady?: boolean\n breakpoints?: LivePreviewConfig['breakpoints']\n children: React.ReactNode\n deviceSize?: {\n height: number\n width: number\n }\n isLivePreviewEnabled?: boolean\n isLivePreviewing: boolean\n /**\n * This specifically relates to `admin.preview` function in the config instead of live preview.\n */\n isPreviewEnabled?: boolean\n /**\n * This specifically relates to `admin.preview` function in the config instead of live preview.\n */\n previewURL?: string\n} & Pick<LivePreviewContextType, 'typeofLivePreviewURL' | 'url'>\n\nexport const LivePreviewProvider: React.FC<LivePreviewProviderProps> = ({\n breakpoints: incomingBreakpoints,\n children,\n isLivePreviewEnabled,\n isLivePreviewing: incomingIsLivePreviewing,\n isPreviewEnabled,\n previewURL: previewURLFromProps,\n typeofLivePreviewURL,\n url: urlFromProps,\n}) => {\n const [previewWindowType, setPreviewWindowType] = useState<'iframe' | 'popup'>('iframe')\n const [isLivePreviewing, setIsLivePreviewing] = useState(incomingIsLivePreviewing)\n\n const breakpoints: LivePreviewConfig['breakpoints'] = useMemo(\n () => [\n ...(incomingBreakpoints || []),\n {\n name: 'responsive',\n height: '100%',\n label: 'Responsive',\n width: '100%',\n },\n ],\n [incomingBreakpoints],\n )\n\n const [url, setURL] = useState<string>('')\n const [previewURL, setPreviewURL] = useState<string>(previewURLFromProps)\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const [appIsReady, setAppIsReady] = useState(false)\n const [listeningForMessages, setListeningForMessages] = useState(false)\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const isFirstRender = useRef(true)\n\n const { setPreference } = usePreferences()\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null)\n\n const [loadedURL, setLoadedURL] = useState<string>()\n\n const [zoom, setZoom] = useState(1)\n\n const [position, setPosition] = useState({ x: 0, y: 0 })\n\n const [size, setSize] = React.useReducer(sizeReducer, { height: 0, width: 0 })\n\n const [measuredDeviceSize, setMeasuredDeviceSize] = useState({\n height: 0,\n width: 0,\n })\n\n const [breakpoint, setBreakpoint] =\n React.useState<LivePreviewConfig['breakpoints'][0]['name']>('responsive')\n\n /**\n * A \"middleware\" callback fn that does some additional work before `setURL`.\n * This is what we provide through context, bc it:\n * - ensures the URL is absolute\n * - resets `appIsReady` to `false` while the new URL is loading\n */\n const setLivePreviewURL = useCallback<LivePreviewContextType['setURL']>(\n (_incomingURL) => {\n let incomingURL: LivePreviewURLType\n\n if (typeof _incomingURL === 'string') {\n incomingURL = formatAbsoluteURL(_incomingURL)\n }\n\n if (!incomingURL) {\n setIsLivePreviewing(false)\n }\n\n if (incomingURL !== url) {\n setAppIsReady(false)\n setURL(incomingURL)\n }\n },\n [url],\n )\n\n /**\n * `url` needs to be relative to the window, which cannot be done on initial render.\n */\n useEffect(() => {\n if (typeof urlFromProps === 'string') {\n setURL(formatAbsoluteURL(urlFromProps))\n }\n }, [urlFromProps])\n\n // The toolbar needs to freely drag and drop around the page\n const handleDragEnd = (ev) => {\n // only update position if the toolbar is completely within the preview area\n // otherwise reset it back to the previous position\n // TODO: reset to the nearest edge of the preview area\n if (ev.over && ev.over.id === 'live-preview-area') {\n const newPos = {\n x: position.x + ev.delta.x,\n y: position.y + ev.delta.y,\n }\n\n setPosition(newPos)\n } else {\n // reset\n }\n }\n\n const setWidth = useCallback(\n (width) => {\n setSize({ type: 'width', value: width })\n },\n [setSize],\n )\n\n const setHeight = useCallback(\n (height) => {\n setSize({ type: 'height', value: height })\n },\n [setSize],\n )\n\n // explicitly set new width and height when as new breakpoints are selected\n // exclude `custom` breakpoint as it is handled by the `setWidth` and `setHeight` directly\n useEffect(() => {\n const foundBreakpoint = breakpoints?.find((bp) => bp.name === breakpoint)\n\n if (\n foundBreakpoint &&\n breakpoint !== 'responsive' &&\n breakpoint !== 'custom' &&\n typeof foundBreakpoint?.width === 'number' &&\n typeof foundBreakpoint?.height === 'number'\n ) {\n setSize({\n type: 'reset',\n value: {\n height: foundBreakpoint.height,\n width: foundBreakpoint.width,\n },\n })\n }\n }, [breakpoint, breakpoints])\n\n /**\n * Receive the `ready` message from the popup window\n * This indicates that the app is ready to receive `window.postMessage` events\n * This is also the only cross-origin way of detecting when a popup window has loaded\n * Unlike iframe elements which have an `onLoad` handler, there is no way to access `window.open` on popups\n */\n useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (\n url?.startsWith(event.origin) &&\n event.data &&\n typeof event.data === 'object' &&\n event.data.type === 'payload-live-preview'\n ) {\n if (event.data.ready) {\n setAppIsReady(true)\n }\n }\n }\n\n window.addEventListener('message', handleMessage)\n\n setListeningForMessages(true)\n\n return () => {\n window.removeEventListener('message', handleMessage)\n }\n }, [url, listeningForMessages])\n\n const handleWindowChange = useCallback(\n (type: 'iframe' | 'popup') => {\n setAppIsReady(false)\n setPreviewWindowType(type)\n if (type === 'popup') {\n openPopupWindow()\n }\n },\n [openPopupWindow],\n )\n\n // when the user closes the popup window, switch back to the iframe\n // the `usePopupWindow` reports the `isPopupOpen` state for us to use here\n useEffect(() => {\n const newPreviewWindowType = isPopupOpen ? 'popup' : 'iframe'\n\n if (newPreviewWindowType !== previewWindowType) {\n handleWindowChange('iframe')\n }\n }, [previewWindowType, isPopupOpen, handleWindowChange])\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false\n return\n }\n\n void setPreference<CollectionPreferences>(\n collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`,\n {\n editViewType: isLivePreviewing ? 'live-preview' : 'default',\n },\n true,\n )\n }, [isLivePreviewing, setPreference, collectionSlug, globalSlug])\n\n return (\n <LivePreviewContext\n value={{\n appIsReady,\n breakpoint,\n breakpoints,\n iframeRef,\n isLivePreviewEnabled,\n isLivePreviewing,\n isPopupOpen,\n isPreviewEnabled,\n listeningForMessages,\n loadedURL,\n measuredDeviceSize,\n openPopupWindow,\n popupRef,\n previewURL,\n previewWindowType,\n setAppIsReady,\n setBreakpoint,\n setHeight,\n setIsLivePreviewing,\n setLoadedURL,\n setMeasuredDeviceSize,\n setPreviewURL,\n setPreviewWindowType: handleWindowChange,\n setSize,\n setToolbarPosition: setPosition,\n setURL: setLivePreviewURL,\n setWidth,\n setZoom,\n size,\n toolbarPosition: position,\n typeofLivePreviewURL,\n url,\n zoom,\n }}\n >\n <DndContext collisionDetection={customCollisionDetection} onDragEnd={handleDragEnd}>\n {children}\n </DndContext>\n </LivePreviewContext>\n )\n}\n"],"names":["DndContext","React","useCallback","useEffect","useMemo","useRef","useState","usePopupWindow","useDocumentInfo","usePreferences","formatAbsoluteURL","customCollisionDetection","LivePreviewContext","sizeReducer","LivePreviewProvider","breakpoints","incomingBreakpoints","children","isLivePreviewEnabled","isLivePreviewing","incomingIsLivePreviewing","isPreviewEnabled","previewURL","previewURLFromProps","typeofLivePreviewURL","url","urlFromProps","previewWindowType","setPreviewWindowType","setIsLivePreviewing","name","height","label","width","setURL","setPreviewURL","isPopupOpen","openPopupWindow","popupRef","eventType","appIsReady","setAppIsReady","listeningForMessages","setListeningForMessages","collectionSlug","globalSlug","isFirstRender","setPreference","iframeRef","loadedURL","setLoadedURL","zoom","setZoom","position","setPosition","x","y","size","setSize","useReducer","measuredDeviceSize","setMeasuredDeviceSize","breakpoint","setBreakpoint","setLivePreviewURL","_incomingURL","incomingURL","handleDragEnd","ev","over","id","newPos","delta","setWidth","type","value","setHeight","foundBreakpoint","find","bp","handleMessage","event","startsWith","origin","data","ready","window","addEventListener","removeEventListener","handleWindowChange","newPreviewWindowType","current","editViewType","setToolbarPosition","toolbarPosition","collisionDetection","onDragEnd"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/providers/LivePreview/index.tsx"],"sourcesContent":["'use client'\nimport type { CollectionPreferences, LivePreviewConfig, LivePreviewURLType } from 'payload'\n\nimport { DndContext } from '@dnd-kit/core'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { LivePreviewContextType } from './context.js'\n\nimport { usePopupWindow } from '../../hooks/usePopupWindow.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { formatAbsoluteURL } from '../../utilities/formatAbsoluteURL.js'\nimport { customCollisionDetection } from './collisionDetection.js'\nimport { LivePreviewContext } from './context.js'\nimport { sizeReducer } from './sizeReducer.js'\n\nexport type LivePreviewProviderProps = {\n appIsReady?: boolean\n breakpoints?: LivePreviewConfig['breakpoints']\n children: React.ReactNode\n deviceSize?: {\n height: number\n width: number\n }\n isLivePreviewEnabled?: boolean\n isLivePreviewing: boolean\n /**\n * This specifically relates to `admin.preview` function in the config instead of live preview.\n */\n isPreviewEnabled?: boolean\n /**\n * This specifically relates to `admin.preview` function in the config instead of live preview.\n */\n previewURL?: string\n} & Pick<LivePreviewContextType, 'typeofLivePreviewURL' | 'url'>\n\nexport const LivePreviewProvider: React.FC<LivePreviewProviderProps> = ({\n breakpoints: incomingBreakpoints,\n children,\n isLivePreviewEnabled,\n isLivePreviewing: incomingIsLivePreviewing,\n isPreviewEnabled,\n previewURL: previewURLFromProps,\n typeofLivePreviewURL,\n url: urlFromProps,\n}) => {\n const [previewWindowType, setPreviewWindowType] = useState<'iframe' | 'popup'>('iframe')\n const [isLivePreviewing, setIsLivePreviewing] = useState(incomingIsLivePreviewing)\n\n const breakpoints: LivePreviewConfig['breakpoints'] = useMemo(\n () => [\n ...(incomingBreakpoints || []),\n {\n name: 'responsive',\n height: '100%',\n label: 'Responsive',\n width: '100%',\n },\n ],\n [incomingBreakpoints],\n )\n\n const [url, setURL] = useState<string>('')\n const [previewURL, setPreviewURL] = useState<string>(previewURLFromProps)\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const [appIsReady, setAppIsReady] = useState(false)\n const [listeningForMessages, setListeningForMessages] = useState(false)\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const isFirstRender = useRef(true)\n\n const { setPreference } = usePreferences()\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null)\n\n const [loadedURL, setLoadedURL] = useState<string>()\n\n const [zoom, setZoom] = useState(1)\n\n const [position, setPosition] = useState({ x: 0, y: 0 })\n\n const [size, setSize] = React.useReducer(sizeReducer, { height: 0, width: 0 })\n\n const [measuredDeviceSize, setMeasuredDeviceSize] = useState({\n height: 0,\n width: 0,\n })\n\n const [breakpoint, setBreakpoint] =\n React.useState<LivePreviewConfig['breakpoints'][0]['name']>('responsive')\n\n /**\n * A \"middleware\" callback fn that does some additional work before `setURL`.\n * This is what we provide through context, bc it:\n * - ensures the URL is absolute\n * - resets `appIsReady` to `false` while the new URL is loading\n */\n const setLivePreviewURL = useCallback<LivePreviewContextType['setURL']>(\n (_incomingURL) => {\n let incomingURL: LivePreviewURLType\n\n if (typeof _incomingURL === 'string') {\n incomingURL = formatAbsoluteURL(_incomingURL)\n }\n\n if (!incomingURL) {\n setIsLivePreviewing(false)\n }\n\n if (incomingURL !== url) {\n setAppIsReady(false)\n setURL(incomingURL)\n }\n },\n [url],\n )\n\n /**\n * `url` needs to be relative to the window, which cannot be done on initial render.\n */\n useEffect(() => {\n if (typeof urlFromProps === 'string') {\n setURL(formatAbsoluteURL(urlFromProps))\n }\n }, [urlFromProps])\n\n // The toolbar needs to freely drag and drop around the page\n const handleDragEnd = (ev) => {\n // only update position if the toolbar is completely within the preview area\n // otherwise reset it back to the previous position\n // TODO: reset to the nearest edge of the preview area\n if (ev.over && ev.over.id === 'live-preview-area') {\n const newPos = {\n x: position.x + ev.delta.x,\n y: position.y + ev.delta.y,\n }\n\n setPosition(newPos)\n } else {\n // reset\n }\n }\n\n const setWidth = useCallback(\n (width) => {\n setSize({ type: 'width', value: width })\n },\n [setSize],\n )\n\n const setHeight = useCallback(\n (height) => {\n setSize({ type: 'height', value: height })\n },\n [setSize],\n )\n\n // explicitly set new width and height when as new breakpoints are selected\n // exclude `custom` breakpoint as it is handled by the `setWidth` and `setHeight` directly\n useEffect(() => {\n const foundBreakpoint = breakpoints?.find((bp) => bp.name === breakpoint)\n\n if (\n foundBreakpoint &&\n breakpoint !== 'responsive' &&\n breakpoint !== 'custom' &&\n typeof foundBreakpoint?.width === 'number' &&\n typeof foundBreakpoint?.height === 'number'\n ) {\n setSize({\n type: 'reset',\n value: {\n height: foundBreakpoint.height,\n width: foundBreakpoint.width,\n },\n })\n }\n }, [breakpoint, breakpoints])\n\n /**\n * Receive the `ready` message from the popup window\n * This indicates that the app is ready to receive `window.postMessage` events\n * This is also the only cross-origin way of detecting when a popup window has loaded\n * Unlike iframe elements which have an `onLoad` handler, there is no way to access `window.open` on popups\n */\n useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (\n url?.startsWith(event.origin) &&\n event.data &&\n typeof event.data === 'object' &&\n event.data.type === 'payload-live-preview'\n ) {\n if (event.data.ready) {\n setAppIsReady(true)\n }\n }\n }\n\n window.addEventListener('message', handleMessage)\n\n setListeningForMessages(true)\n\n return () => {\n window.removeEventListener('message', handleMessage)\n }\n }, [url, listeningForMessages])\n\n const handleWindowChange = useCallback(\n (type: 'iframe' | 'popup') => {\n setAppIsReady(false)\n setPreviewWindowType(type)\n if (type === 'popup') {\n openPopupWindow()\n }\n },\n [openPopupWindow],\n )\n\n // when the user closes the popup window, switch back to the iframe\n // the `usePopupWindow` reports the `isPopupOpen` state for us to use here\n useEffect(() => {\n const newPreviewWindowType = isPopupOpen ? 'popup' : 'iframe'\n\n if (newPreviewWindowType !== previewWindowType) {\n handleWindowChange('iframe')\n }\n }, [previewWindowType, isPopupOpen, handleWindowChange])\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false\n return\n }\n\n void setPreference<CollectionPreferences>(\n collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`,\n {\n editViewType: isLivePreviewing ? 'live-preview' : 'default',\n },\n true,\n )\n }, [isLivePreviewing, setPreference, collectionSlug, globalSlug])\n\n return (\n <LivePreviewContext\n value={{\n appIsReady,\n breakpoint,\n breakpoints,\n iframeRef,\n isLivePreviewEnabled,\n isLivePreviewing,\n isPopupOpen,\n isPreviewEnabled,\n listeningForMessages,\n loadedURL,\n measuredDeviceSize,\n openPopupWindow,\n popupRef,\n previewURL,\n previewWindowType,\n setAppIsReady,\n setBreakpoint,\n setHeight,\n setIsLivePreviewing,\n setLoadedURL,\n setMeasuredDeviceSize,\n setPreviewURL,\n setPreviewWindowType: handleWindowChange,\n setSize,\n setToolbarPosition: setPosition,\n setURL: setLivePreviewURL,\n setWidth,\n setZoom,\n size,\n toolbarPosition: position,\n typeofLivePreviewURL,\n url,\n zoom,\n }}\n >\n <DndContext collisionDetection={customCollisionDetection} onDragEnd={handleDragEnd}>\n {children}\n </DndContext>\n </LivePreviewContext>\n )\n}\n"],"names":["DndContext","React","useCallback","useEffect","useMemo","useRef","useState","usePopupWindow","useDocumentInfo","usePreferences","formatAbsoluteURL","customCollisionDetection","LivePreviewContext","sizeReducer","LivePreviewProvider","breakpoints","incomingBreakpoints","children","isLivePreviewEnabled","isLivePreviewing","incomingIsLivePreviewing","isPreviewEnabled","previewURL","previewURLFromProps","typeofLivePreviewURL","url","urlFromProps","previewWindowType","setPreviewWindowType","setIsLivePreviewing","name","height","label","width","setURL","setPreviewURL","isPopupOpen","openPopupWindow","popupRef","eventType","appIsReady","setAppIsReady","listeningForMessages","setListeningForMessages","collectionSlug","globalSlug","isFirstRender","setPreference","iframeRef","loadedURL","setLoadedURL","zoom","setZoom","position","setPosition","x","y","size","setSize","useReducer","measuredDeviceSize","setMeasuredDeviceSize","breakpoint","setBreakpoint","setLivePreviewURL","_incomingURL","incomingURL","handleDragEnd","ev","over","id","newPos","delta","setWidth","type","value","setHeight","foundBreakpoint","find","bp","handleMessage","event","startsWith","origin","data","ready","window","addEventListener","removeEventListener","handleWindowChange","newPreviewWindowType","current","editViewType","setToolbarPosition","toolbarPosition","collisionDetection","onDragEnd"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
3
3
  import { useSearchParams } from 'next/navigation.js';
4
4
  import React, { createContext, use, useEffect, useRef, useState } from 'react';
5
5
  import { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js';
@@ -71,16 +71,24 @@ export const LocaleProvider = ({ children, /**
71
71
  localeFromParams,
72
72
  user?.id
73
73
  ]);
74
- return /*#__PURE__*/ _jsx(LocaleContext, {
74
+ return /*#__PURE__*/ _jsxDEV(LocaleContext, {
75
75
  value: locale,
76
- children: /*#__PURE__*/ _jsx(LocaleLoadingContext, {
76
+ children: /*#__PURE__*/ _jsxDEV(LocaleLoadingContext, {
77
77
  value: {
78
78
  localeIsLoading: isLoading,
79
79
  setLocaleIsLoading
80
80
  },
81
81
  children: children
82
- })
83
- });
82
+ }, void 0, false, {
83
+ fileName: "src/providers/Locale/index.tsx",
84
+ lineNumber: 116,
85
+ columnNumber: 7
86
+ }, this)
87
+ }, void 0, false, {
88
+ fileName: "src/providers/Locale/index.tsx",
89
+ lineNumber: 115,
90
+ columnNumber: 5
91
+ }, this);
84
92
  };
85
93
  export const useLocaleLoading = ()=>use(LocaleLoadingContext);
86
94
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/providers/Locale/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Locale } from 'payload'\n\nimport { useSearchParams } from 'next/navigation.js'\nimport React, { createContext, use, useEffect, useRef, useState } from 'react'\n\nimport { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\nconst LocaleContext = createContext({} as Locale)\n\nexport const LocaleLoadingContext = createContext({\n localeIsLoading: false,\n setLocaleIsLoading: (_: boolean) => undefined,\n})\n\nconst fetchPreferences = async <T extends Record<string, unknown> | string>(\n key: string,\n baseURL: string,\n): Promise<{ id: string; value: T }> =>\n await fetch(`${baseURL}/payload-preferences/${key}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n })?.then((res) => res.json() as Promise<{ id: string; value: T }>)\n\nexport const LocaleProvider: React.FC<{ children?: React.ReactNode; locale?: Locale['code'] }> = ({\n children,\n /**\n The `locale` prop originates from the root layout, which does not have access to search params\n This component uses the `useSearchParams` hook to get the locale from the URL as precedence over this prop\n This prop does not update as the user navigates the site, because the root layout does not re-render\n */\n locale: initialLocaleFromPrefs,\n}) => {\n const {\n config: {\n localization = false,\n routes: { api: apiRoute },\n serverURL,\n },\n } = useConfig()\n\n const { user } = useAuth()\n\n const defaultLocale = localization ? localization.defaultLocale : 'en'\n\n const localeFromParams = useSearchParams().get('locale')\n\n const [locale, setLocale] = React.useState<Locale>(() => {\n if (!localization || (localization && !localization.locales.length)) {\n // TODO: return null V4\n return {} as Locale\n }\n\n return (\n findLocaleFromCode(localization, localeFromParams) ||\n findLocaleFromCode(localization, initialLocaleFromPrefs) ||\n findLocaleFromCode(localization, defaultLocale) ||\n findLocaleFromCode(localization, localization.locales[0].code)\n )\n })\n\n const [isLoading, setLocaleIsLoading] = useState(false)\n\n const prevLocale = useRef<Locale>(locale)\n\n useEffect(() => {\n /**\n * We need to set `isLoading` back to false once the locale is detected to be different\n * This happens when the user clicks an anchor link which appends the `?locale=` query param\n * This triggers a client-side navigation, which re-renders the page with the new locale\n * In Next.js, local state is persisted during this type of navigation because components are not unmounted\n */\n if (locale.code !== prevLocale.current.code) {\n setLocaleIsLoading(false)\n }\n\n prevLocale.current = locale\n }, [locale])\n\n const fetchURL = `${serverURL}${apiRoute}`\n\n useEffect(() => {\n /**\n * This effect should only run when `localeFromParams` changes, i.e. when the user clicks an anchor link\n * The root layout, which sends the initial locale from prefs, will not re-render as the user navigates the site\n * For this reason, we need to fetch the locale from prefs if the search params clears the `locale` query param\n */\n async function resetLocale() {\n if (localization && user?.id) {\n const localeToUse =\n localeFromParams ||\n (await fetchPreferences<Locale['code']>('locale', fetchURL)?.then((res) => res.value))\n\n const newLocale =\n findLocaleFromCode(localization, localeToUse) ||\n findLocaleFromCode(localization, defaultLocale) ||\n findLocaleFromCode(localization, localization?.locales?.[0]?.code)\n\n if (newLocale) {\n setLocale(newLocale)\n }\n }\n }\n\n void resetLocale()\n }, [defaultLocale, localization, fetchURL, localeFromParams, user?.id])\n\n return (\n <LocaleContext value={locale}>\n <LocaleLoadingContext value={{ localeIsLoading: isLoading, setLocaleIsLoading }}>\n {children}\n </LocaleLoadingContext>\n </LocaleContext>\n )\n}\n\nexport const useLocaleLoading = () => use(LocaleLoadingContext)\n\n/**\n * TODO: V4\n * The return type of the `useLocale` hook will change in v4. It will return `null | Locale` instead of `false | {} | Locale`.\n */\nexport const useLocale = (): Locale => use(LocaleContext)\n"],"names":["useSearchParams","React","createContext","use","useEffect","useRef","useState","findLocaleFromCode","useAuth","useConfig","LocaleContext","LocaleLoadingContext","localeIsLoading","setLocaleIsLoading","_","undefined","fetchPreferences","key","baseURL","fetch","credentials","headers","method","then","res","json","LocaleProvider","children","locale","initialLocaleFromPrefs","config","localization","routes","api","apiRoute","serverURL","user","defaultLocale","localeFromParams","get","setLocale","locales","length","code","isLoading","prevLocale","current","fetchURL","resetLocale","id","localeToUse","value","newLocale","useLocaleLoading","useLocale"],"mappings":"AAAA;;AAIA,SAASA,eAAe,QAAQ,qBAAoB;AACpD,OAAOC,SAASC,aAAa,EAAEC,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAE9E,SAASC,kBAAkB,QAAQ,wCAAuC;AAC1E,SAASC,OAAO,QAAQ,mBAAkB;AAC1C,SAASC,SAAS,QAAQ,qBAAoB;AAE9C,MAAMC,8BAAgBR,cAAc,CAAC;AAErC,OAAO,MAAMS,qCAAuBT,cAAc;IAChDU,iBAAiB;IACjBC,oBAAoB,CAACC,IAAeC;AACtC,GAAE;AAEF,MAAMC,mBAAmB,OACvBC,KACAC,UAEA,MAAMC,MAAM,GAAGD,QAAQ,qBAAqB,EAAED,KAAK,EAAE;QACnDG,aAAa;QACbC,SAAS;YACP,gBAAgB;QAClB;QACAC,QAAQ;IACV,IAAIC,KAAK,CAACC,MAAQA,IAAIC,IAAI;AAE5B,OAAO,MAAMC,iBAAoF,CAAC,EAChGC,QAAQ,EACR;;;;EAIA,GACAC,QAAQC,sBAAsB,EAC/B;IACC,MAAM,EACJC,QAAQ,EACNC,eAAe,KAAK,EACpBC,QAAQ,EAAEC,KAAKC,QAAQ,EAAE,EACzBC,SAAS,EACV,EACF,GAAG1B;IAEJ,MAAM,EAAE2B,IAAI,EAAE,GAAG5B;IAEjB,MAAM6B,gBAAgBN,eAAeA,aAAaM,aAAa,GAAG;IAElE,MAAMC,mBAAmBtC,kBAAkBuC,GAAG,CAAC;IAE/C,MAAM,CAACX,QAAQY,UAAU,GAAGvC,MAAMK,QAAQ,CAAS;QACjD,IAAI,CAACyB,gBAAiBA,gBAAgB,CAACA,aAAaU,OAAO,CAACC,MAAM,EAAG;YACnE,uBAAuB;YACvB,OAAO,CAAC;QACV;QAEA,OACEnC,mBAAmBwB,cAAcO,qBACjC/B,mBAAmBwB,cAAcF,2BACjCtB,mBAAmBwB,cAAcM,kBACjC9B,mBAAmBwB,cAAcA,aAAaU,OAAO,CAAC,EAAE,CAACE,IAAI;IAEjE;IAEA,MAAM,CAACC,WAAW/B,mBAAmB,GAAGP,SAAS;IAEjD,MAAMuC,aAAaxC,OAAeuB;IAElCxB,UAAU;QACR;;;;;KAKC,GACD,IAAIwB,OAAOe,IAAI,KAAKE,WAAWC,OAAO,CAACH,IAAI,EAAE;YAC3C9B,mBAAmB;QACrB;QAEAgC,WAAWC,OAAO,GAAGlB;IACvB,GAAG;QAACA;KAAO;IAEX,MAAMmB,WAAW,GAAGZ,YAAYD,UAAU;IAE1C9B,UAAU;QACR;;;;KAIC,GACD,eAAe4C;YACb,IAAIjB,gBAAgBK,MAAMa,IAAI;gBAC5B,MAAMC,cACJZ,oBACC,MAAMtB,iBAAiC,UAAU+B,WAAWxB,KAAK,CAACC,MAAQA,IAAI2B,KAAK;gBAEtF,MAAMC,YACJ7C,mBAAmBwB,cAAcmB,gBACjC3C,mBAAmBwB,cAAcM,kBACjC9B,mBAAmBwB,cAAcA,cAAcU,SAAS,CAAC,EAAE,EAAEE;gBAE/D,IAAIS,WAAW;oBACbZ,UAAUY;gBACZ;YACF;QACF;QAEA,KAAKJ;IACP,GAAG;QAACX;QAAeN;QAAcgB;QAAUT;QAAkBF,MAAMa;KAAG;IAEtE,qBACE,KAACvC;QAAcyC,OAAOvB;kBACpB,cAAA,KAACjB;YAAqBwC,OAAO;gBAAEvC,iBAAiBgC;gBAAW/B;YAAmB;sBAC3Ec;;;AAIT,EAAC;AAED,OAAO,MAAM0B,mBAAmB,IAAMlD,IAAIQ,sBAAqB;AAE/D;;;CAGC,GACD,OAAO,MAAM2C,YAAY,IAAcnD,IAAIO,eAAc"}
1
+ {"version":3,"sources":["../../../src/providers/Locale/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Locale } from 'payload'\n\nimport { useSearchParams } from 'next/navigation.js'\nimport React, { createContext, use, useEffect, useRef, useState } from 'react'\n\nimport { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\nconst LocaleContext = createContext({} as Locale)\n\nexport const LocaleLoadingContext = createContext({\n localeIsLoading: false,\n setLocaleIsLoading: (_: boolean) => undefined,\n})\n\nconst fetchPreferences = async <T extends Record<string, unknown> | string>(\n key: string,\n baseURL: string,\n): Promise<{ id: string; value: T }> =>\n await fetch(`${baseURL}/payload-preferences/${key}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n })?.then((res) => res.json() as Promise<{ id: string; value: T }>)\n\nexport const LocaleProvider: React.FC<{ children?: React.ReactNode; locale?: Locale['code'] }> = ({\n children,\n /**\n The `locale` prop originates from the root layout, which does not have access to search params\n This component uses the `useSearchParams` hook to get the locale from the URL as precedence over this prop\n This prop does not update as the user navigates the site, because the root layout does not re-render\n */\n locale: initialLocaleFromPrefs,\n}) => {\n const {\n config: {\n localization = false,\n routes: { api: apiRoute },\n serverURL,\n },\n } = useConfig()\n\n const { user } = useAuth()\n\n const defaultLocale = localization ? localization.defaultLocale : 'en'\n\n const localeFromParams = useSearchParams().get('locale')\n\n const [locale, setLocale] = React.useState<Locale>(() => {\n if (!localization || (localization && !localization.locales.length)) {\n // TODO: return null V4\n return {} as Locale\n }\n\n return (\n findLocaleFromCode(localization, localeFromParams) ||\n findLocaleFromCode(localization, initialLocaleFromPrefs) ||\n findLocaleFromCode(localization, defaultLocale) ||\n findLocaleFromCode(localization, localization.locales[0].code)\n )\n })\n\n const [isLoading, setLocaleIsLoading] = useState(false)\n\n const prevLocale = useRef<Locale>(locale)\n\n useEffect(() => {\n /**\n * We need to set `isLoading` back to false once the locale is detected to be different\n * This happens when the user clicks an anchor link which appends the `?locale=` query param\n * This triggers a client-side navigation, which re-renders the page with the new locale\n * In Next.js, local state is persisted during this type of navigation because components are not unmounted\n */\n if (locale.code !== prevLocale.current.code) {\n setLocaleIsLoading(false)\n }\n\n prevLocale.current = locale\n }, [locale])\n\n const fetchURL = `${serverURL}${apiRoute}`\n\n useEffect(() => {\n /**\n * This effect should only run when `localeFromParams` changes, i.e. when the user clicks an anchor link\n * The root layout, which sends the initial locale from prefs, will not re-render as the user navigates the site\n * For this reason, we need to fetch the locale from prefs if the search params clears the `locale` query param\n */\n async function resetLocale() {\n if (localization && user?.id) {\n const localeToUse =\n localeFromParams ||\n (await fetchPreferences<Locale['code']>('locale', fetchURL)?.then((res) => res.value))\n\n const newLocale =\n findLocaleFromCode(localization, localeToUse) ||\n findLocaleFromCode(localization, defaultLocale) ||\n findLocaleFromCode(localization, localization?.locales?.[0]?.code)\n\n if (newLocale) {\n setLocale(newLocale)\n }\n }\n }\n\n void resetLocale()\n }, [defaultLocale, localization, fetchURL, localeFromParams, user?.id])\n\n return (\n <LocaleContext value={locale}>\n <LocaleLoadingContext value={{ localeIsLoading: isLoading, setLocaleIsLoading }}>\n {children}\n </LocaleLoadingContext>\n </LocaleContext>\n )\n}\n\nexport const useLocaleLoading = () => use(LocaleLoadingContext)\n\n/**\n * TODO: V4\n * The return type of the `useLocale` hook will change in v4. It will return `null | Locale` instead of `false | {} | Locale`.\n */\nexport const useLocale = (): Locale => use(LocaleContext)\n"],"names":["useSearchParams","React","createContext","use","useEffect","useRef","useState","findLocaleFromCode","useAuth","useConfig","LocaleContext","LocaleLoadingContext","localeIsLoading","setLocaleIsLoading","_","undefined","fetchPreferences","key","baseURL","fetch","credentials","headers","method","then","res","json","LocaleProvider","children","locale","initialLocaleFromPrefs","config","localization","routes","api","apiRoute","serverURL","user","defaultLocale","localeFromParams","get","setLocale","locales","length","code","isLoading","prevLocale","current","fetchURL","resetLocale","id","localeToUse","value","newLocale","useLocaleLoading","useLocale"],"mappings":"AAAA;;AAIA,SAASA,eAAe,QAAQ,qBAAoB;AACpD,OAAOC,SAASC,aAAa,EAAEC,GAAG,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAE9E,SAASC,kBAAkB,QAAQ,wCAAuC;AAC1E,SAASC,OAAO,QAAQ,mBAAkB;AAC1C,SAASC,SAAS,QAAQ,qBAAoB;AAE9C,MAAMC,8BAAgBR,cAAc,CAAC;AAErC,OAAO,MAAMS,qCAAuBT,cAAc;IAChDU,iBAAiB;IACjBC,oBAAoB,CAACC,IAAeC;AACtC,GAAE;AAEF,MAAMC,mBAAmB,OACvBC,KACAC,UAEA,MAAMC,MAAM,GAAGD,QAAQ,qBAAqB,EAAED,KAAK,EAAE;QACnDG,aAAa;QACbC,SAAS;YACP,gBAAgB;QAClB;QACAC,QAAQ;IACV,IAAIC,KAAK,CAACC,MAAQA,IAAIC,IAAI;AAE5B,OAAO,MAAMC,iBAAoF,CAAC,EAChGC,QAAQ,EACR;;;;EAIA,GACAC,QAAQC,sBAAsB,EAC/B;IACC,MAAM,EACJC,QAAQ,EACNC,eAAe,KAAK,EACpBC,QAAQ,EAAEC,KAAKC,QAAQ,EAAE,EACzBC,SAAS,EACV,EACF,GAAG1B;IAEJ,MAAM,EAAE2B,IAAI,EAAE,GAAG5B;IAEjB,MAAM6B,gBAAgBN,eAAeA,aAAaM,aAAa,GAAG;IAElE,MAAMC,mBAAmBtC,kBAAkBuC,GAAG,CAAC;IAE/C,MAAM,CAACX,QAAQY,UAAU,GAAGvC,MAAMK,QAAQ,CAAS;QACjD,IAAI,CAACyB,gBAAiBA,gBAAgB,CAACA,aAAaU,OAAO,CAACC,MAAM,EAAG;YACnE,uBAAuB;YACvB,OAAO,CAAC;QACV;QAEA,OACEnC,mBAAmBwB,cAAcO,qBACjC/B,mBAAmBwB,cAAcF,2BACjCtB,mBAAmBwB,cAAcM,kBACjC9B,mBAAmBwB,cAAcA,aAAaU,OAAO,CAAC,EAAE,CAACE,IAAI;IAEjE;IAEA,MAAM,CAACC,WAAW/B,mBAAmB,GAAGP,SAAS;IAEjD,MAAMuC,aAAaxC,OAAeuB;IAElCxB,UAAU;QACR;;;;;KAKC,GACD,IAAIwB,OAAOe,IAAI,KAAKE,WAAWC,OAAO,CAACH,IAAI,EAAE;YAC3C9B,mBAAmB;QACrB;QAEAgC,WAAWC,OAAO,GAAGlB;IACvB,GAAG;QAACA;KAAO;IAEX,MAAMmB,WAAW,GAAGZ,YAAYD,UAAU;IAE1C9B,UAAU;QACR;;;;KAIC,GACD,eAAe4C;YACb,IAAIjB,gBAAgBK,MAAMa,IAAI;gBAC5B,MAAMC,cACJZ,oBACC,MAAMtB,iBAAiC,UAAU+B,WAAWxB,KAAK,CAACC,MAAQA,IAAI2B,KAAK;gBAEtF,MAAMC,YACJ7C,mBAAmBwB,cAAcmB,gBACjC3C,mBAAmBwB,cAAcM,kBACjC9B,mBAAmBwB,cAAcA,cAAcU,SAAS,CAAC,EAAE,EAAEE;gBAE/D,IAAIS,WAAW;oBACbZ,UAAUY;gBACZ;YACF;QACF;QAEA,KAAKJ;IACP,GAAG;QAACX;QAAeN;QAAcgB;QAAUT;QAAkBF,MAAMa;KAAG;IAEtE,qBACE,QAACvC;QAAcyC,OAAOvB;kBACpB,cAAA,QAACjB;YAAqBwC,OAAO;gBAAEvC,iBAAiBgC;gBAAW/B;YAAmB;sBAC3Ec;;;;;;;;;;;AAIT,EAAC;AAED,OAAO,MAAM0B,mBAAmB,IAAMlD,IAAIQ,sBAAqB;AAE/D;;;CAGC,GACD,OAAO,MAAM2C,YAAY,IAAcnD,IAAIO,eAAc"}
@@ -1,11 +1,15 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
3
3
  import React, { createContext, use } from 'react';
4
4
  export const OperationContext = /*#__PURE__*/ createContext('');
5
- export const OperationProvider = ({ children, operation })=>/*#__PURE__*/ _jsx(OperationContext, {
5
+ export const OperationProvider = ({ children, operation })=>/*#__PURE__*/ _jsxDEV(OperationContext, {
6
6
  value: operation,
7
7
  children: children
8
- });
8
+ }, void 0, false, {
9
+ fileName: "src/providers/Operation/index.tsx",
10
+ lineNumber: 9,
11
+ columnNumber: 7
12
+ }, this);
9
13
  export const useOperation = ()=>use(OperationContext);
10
14
 
11
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/providers/Operation/index.tsx"],"sourcesContent":["'use client'\nimport React, { createContext, use } from 'react'\n\nexport const OperationContext = createContext('' as Operation)\n\nexport const OperationProvider: React.FC<{ children: React.ReactNode; operation: Operation }> = ({\n children,\n operation,\n}) => <OperationContext value={operation}>{children}</OperationContext>\n\nexport type Operation = 'create' | 'update'\n\nexport const useOperation = (): Operation | undefined => use(OperationContext)\n"],"names":["React","createContext","use","OperationContext","OperationProvider","children","operation","value","useOperation"],"mappings":"AAAA;;AACA,OAAOA,SAASC,aAAa,EAAEC,GAAG,QAAQ,QAAO;AAEjD,OAAO,MAAMC,iCAAmBF,cAAc,IAAgB;AAE9D,OAAO,MAAMG,oBAAmF,CAAC,EAC/FC,QAAQ,EACRC,SAAS,EACV,iBAAK,KAACH;QAAiBI,OAAOD;kBAAYD;OAA4B;AAIvE,OAAO,MAAMG,eAAe,IAA6BN,IAAIC,kBAAiB"}
1
+ {"version":3,"sources":["../../../src/providers/Operation/index.tsx"],"sourcesContent":["'use client'\nimport React, { createContext, use } from 'react'\n\nexport const OperationContext = createContext('' as Operation)\n\nexport const OperationProvider: React.FC<{ children: React.ReactNode; operation: Operation }> = ({\n children,\n operation,\n}) => <OperationContext value={operation}>{children}</OperationContext>\n\nexport type Operation = 'create' | 'update'\n\nexport const useOperation = (): Operation | undefined => use(OperationContext)\n"],"names":["React","createContext","use","OperationContext","OperationProvider","children","operation","value","useOperation"],"mappings":"AAAA;;AACA,OAAOA,SAASC,aAAa,EAAEC,GAAG,QAAQ,QAAO;AAEjD,OAAO,MAAMC,iCAAmBF,cAAc,IAAgB;AAE9D,OAAO,MAAMG,oBAAmF,CAAC,EAC/FC,QAAQ,EACRC,SAAS,EACV,iBAAK,QAACH;QAAiBI,OAAOD;kBAAYD;;;;;aAA4B;AAIvE,OAAO,MAAMG,eAAe,IAA6BN,IAAIC,kBAAiB"}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
3
3
  import { useParams as useNextParams } from 'next/navigation.js';
4
4
  import React, { createContext, use } from 'react';
5
5
  const Context = /*#__PURE__*/ createContext({});
@@ -12,10 +12,14 @@ const Context = /*#__PURE__*/ createContext({});
12
12
  * ```
13
13
  */ export const ParamsProvider = ({ children })=>{
14
14
  const params = useNextParams();
15
- return /*#__PURE__*/ _jsx(Context, {
15
+ return /*#__PURE__*/ _jsxDEV(Context, {
16
16
  value: params,
17
17
  children: children
18
- });
18
+ }, void 0, false, {
19
+ fileName: "src/providers/Params/index.tsx",
20
+ lineNumber: 21,
21
+ columnNumber: 10
22
+ }, this);
19
23
  };
20
24
  /**
21
25
  * @deprecated
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/providers/Params/index.tsx"],"sourcesContent":["'use client'\n\nimport { useParams as useNextParams } from 'next/navigation.js'\nimport React, { createContext, use } from 'react'\n\nexport type Params = ReturnType<typeof useNextParams>\ninterface IParamsContext extends Params {}\n\nconst Context = createContext<IParamsContext>({} as IParamsContext)\n\n/**\n * @deprecated\n * The ParamsProvider is deprecated and will be removed in the next major release. Instead, use the `useParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useParams } from 'next/navigation'\n * ```\n */\nexport const ParamsProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const params = useNextParams()\n return <Context value={params}>{children}</Context>\n}\n\n/**\n * @deprecated\n * The `useParams` hook is deprecated and will be removed in the next major release. Instead, use the `useParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useParams } from 'next/navigation'\n * ```\n */\nexport const useParams = (): IParamsContext => use(Context)\n"],"names":["useParams","useNextParams","React","createContext","use","Context","ParamsProvider","children","params","value"],"mappings":"AAAA;;AAEA,SAASA,aAAaC,aAAa,QAAQ,qBAAoB;AAC/D,OAAOC,SAASC,aAAa,EAAEC,GAAG,QAAQ,QAAO;AAKjD,MAAMC,wBAAUF,cAA8B,CAAC;AAE/C;;;;;;;CAOC,GACD,OAAO,MAAMG,iBAA2D,CAAC,EAAEC,QAAQ,EAAE;IACnF,MAAMC,SAASP;IACf,qBAAO,KAACI;QAAQI,OAAOD;kBAASD;;AAClC,EAAC;AAED;;;;;;;CAOC,GACD,OAAO,MAAMP,YAAY,IAAsBI,IAAIC,SAAQ"}
1
+ {"version":3,"sources":["../../../src/providers/Params/index.tsx"],"sourcesContent":["'use client'\n\nimport { useParams as useNextParams } from 'next/navigation.js'\nimport React, { createContext, use } from 'react'\n\nexport type Params = ReturnType<typeof useNextParams>\ninterface IParamsContext extends Params {}\n\nconst Context = createContext<IParamsContext>({} as IParamsContext)\n\n/**\n * @deprecated\n * The ParamsProvider is deprecated and will be removed in the next major release. Instead, use the `useParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useParams } from 'next/navigation'\n * ```\n */\nexport const ParamsProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const params = useNextParams()\n return <Context value={params}>{children}</Context>\n}\n\n/**\n * @deprecated\n * The `useParams` hook is deprecated and will be removed in the next major release. Instead, use the `useParams` hook from `next/navigation` directly. See https://github.com/payloadcms/payload/pull/9581.\n * @example\n * ```tsx\n * import { useParams } from 'next/navigation'\n * ```\n */\nexport const useParams = (): IParamsContext => use(Context)\n"],"names":["useParams","useNextParams","React","createContext","use","Context","ParamsProvider","children","params","value"],"mappings":"AAAA;;AAEA,SAASA,aAAaC,aAAa,QAAQ,qBAAoB;AAC/D,OAAOC,SAASC,aAAa,EAAEC,GAAG,QAAQ,QAAO;AAKjD,MAAMC,wBAAUF,cAA8B,CAAC;AAE/C;;;;;;;CAOC,GACD,OAAO,MAAMG,iBAA2D,CAAC,EAAEC,QAAQ,EAAE;IACnF,MAAMC,SAASP;IACf,qBAAO,QAACI;QAAQI,OAAOD;kBAASD;;;;;;AAClC,EAAC;AAED;;;;;;;CAOC,GACD,OAAO,MAAMP,YAAY,IAAsBI,IAAIC,SAAQ"}