@payloadcms/ui 3.68.0-internal-debug.e9b66ee → 3.68.0-internal-debug.654e4ad

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 (779) hide show
  1. package/dist/elements/AddNewRelation/index.js +126 -37
  2. package/dist/elements/AddNewRelation/index.js.map +1 -1
  3. package/dist/elements/AnimateHeight/index.js +33 -17
  4. package/dist/elements/AnimateHeight/index.js.map +1 -1
  5. package/dist/elements/AppHeader/index.js +147 -35
  6. package/dist/elements/AppHeader/index.js.map +1 -1
  7. package/dist/elements/ArrayAction/index.d.ts +6 -6
  8. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  9. package/dist/elements/ArrayAction/index.js +184 -58
  10. package/dist/elements/ArrayAction/index.js.map +1 -1
  11. package/dist/elements/Autosave/index.js +28 -12
  12. package/dist/elements/Autosave/index.js.map +1 -1
  13. package/dist/elements/Banner/index.js +34 -5
  14. package/dist/elements/Banner/index.js.map +1 -1
  15. package/dist/elements/BulkUpload/ActionsBar/index.js +160 -56
  16. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  17. package/dist/elements/BulkUpload/AddFilesView/index.js +80 -23
  18. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  19. package/dist/elements/BulkUpload/AddingFilesView/index.js +78 -13
  20. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  21. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +14 -1
  22. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  23. package/dist/elements/BulkUpload/DrawerCloseButton/index.js +17 -3
  24. package/dist/elements/BulkUpload/DrawerCloseButton/index.js.map +1 -1
  25. package/dist/elements/BulkUpload/EditForm/index.js +89 -19
  26. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  27. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +134 -35
  28. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  29. package/dist/elements/BulkUpload/EditMany/index.js +44 -10
  30. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  31. package/dist/elements/BulkUpload/FileSidebar/index.js +326 -91
  32. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  33. package/dist/elements/BulkUpload/FormsManager/index.js +42 -25
  34. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  35. package/dist/elements/BulkUpload/Header/index.js +26 -4
  36. package/dist/elements/BulkUpload/Header/index.js.map +1 -1
  37. package/dist/elements/BulkUpload/index.js +94 -43
  38. package/dist/elements/BulkUpload/index.js.map +1 -1
  39. package/dist/elements/Button/index.js +155 -38
  40. package/dist/elements/Button/index.js.map +1 -1
  41. package/dist/elements/Card/index.js +40 -5
  42. package/dist/elements/Card/index.js.map +1 -1
  43. package/dist/elements/CheckboxPopup/index.js +41 -15
  44. package/dist/elements/CheckboxPopup/index.js.map +1 -1
  45. package/dist/elements/ClipboardAction/ClipboardActionLabel.js +20 -3
  46. package/dist/elements/ClipboardAction/ClipboardActionLabel.js.map +1 -1
  47. package/dist/elements/ClipboardAction/index.js +64 -14
  48. package/dist/elements/ClipboardAction/index.js.map +1 -1
  49. package/dist/elements/CloseModalButton/index.js +21 -8
  50. package/dist/elements/CloseModalButton/index.js.map +1 -1
  51. package/dist/elements/CodeEditor/CodeEditor.js +48 -27
  52. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  53. package/dist/elements/CodeEditor/index.js +21 -5
  54. package/dist/elements/CodeEditor/index.js.map +1 -1
  55. package/dist/elements/Collapsible/index.js +128 -40
  56. package/dist/elements/Collapsible/index.js.map +1 -1
  57. package/dist/elements/Collapsible/provider.js +10 -2
  58. package/dist/elements/Collapsible/provider.js.map +1 -1
  59. package/dist/elements/ColumnSelector/index.js +28 -12
  60. package/dist/elements/ColumnSelector/index.js.map +1 -1
  61. package/dist/elements/Combobox/index.js +71 -23
  62. package/dist/elements/Combobox/index.js.map +1 -1
  63. package/dist/elements/ConfirmationModal/index.js +81 -22
  64. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  65. package/dist/elements/CopyLocaleData/index.js +148 -56
  66. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  67. package/dist/elements/CopyToClipboard/index.js +41 -17
  68. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  69. package/dist/elements/DatePicker/DatePicker.js +56 -11
  70. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  71. package/dist/elements/DatePicker/index.js +23 -5
  72. package/dist/elements/DatePicker/index.js.map +1 -1
  73. package/dist/elements/DefaultListViewTabs/index.js +62 -22
  74. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  75. package/dist/elements/DeleteDocument/index.js +79 -19
  76. package/dist/elements/DeleteDocument/index.js.map +1 -1
  77. package/dist/elements/DeleteMany/index.js +131 -45
  78. package/dist/elements/DeleteMany/index.js.map +1 -1
  79. package/dist/elements/DocumentControls/index.js +442 -95
  80. package/dist/elements/DocumentControls/index.js.map +1 -1
  81. package/dist/elements/DocumentDrawer/DrawerContent.js +18 -4
  82. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  83. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +76 -15
  84. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  85. package/dist/elements/DocumentDrawer/Provider.js +12 -4
  86. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  87. package/dist/elements/DocumentDrawer/index.js +62 -14
  88. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  89. package/dist/elements/DocumentFields/index.js +86 -22
  90. package/dist/elements/DocumentFields/index.js.map +1 -1
  91. package/dist/elements/DocumentLocked/index.js +126 -41
  92. package/dist/elements/DocumentLocked/index.js.map +1 -1
  93. package/dist/elements/DocumentTakeOver/index.js +81 -24
  94. package/dist/elements/DocumentTakeOver/index.js.map +1 -1
  95. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +21 -16
  96. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
  97. package/dist/elements/DraggableSortable/index.js +29 -8
  98. package/dist/elements/DraggableSortable/index.js.map +1 -1
  99. package/dist/elements/Drawer/index.js +135 -38
  100. package/dist/elements/Drawer/index.js.map +1 -1
  101. package/dist/elements/DrawerActionHeader/index.js +57 -18
  102. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  103. package/dist/elements/DrawerContentContainer/index.js +13 -4
  104. package/dist/elements/DrawerContentContainer/index.js.map +1 -1
  105. package/dist/elements/Dropzone/index.js +22 -15
  106. package/dist/elements/Dropzone/index.js.map +1 -1
  107. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +98 -22
  108. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  109. package/dist/elements/DuplicateDocument/index.js +46 -15
  110. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  111. package/dist/elements/EditMany/DrawerContent.js +204 -49
  112. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  113. package/dist/elements/EditMany/index.js +66 -18
  114. package/dist/elements/EditMany/index.js.map +1 -1
  115. package/dist/elements/EditUpload/index.js +388 -105
  116. package/dist/elements/EditUpload/index.js.map +1 -1
  117. package/dist/elements/EmailAndUsername/index.js +64 -25
  118. package/dist/elements/EmailAndUsername/index.js.map +1 -1
  119. package/dist/elements/ErrorPill/index.js +27 -6
  120. package/dist/elements/ErrorPill/index.js.map +1 -1
  121. package/dist/elements/FieldDiffContainer/index.js +47 -17
  122. package/dist/elements/FieldDiffContainer/index.js.map +1 -1
  123. package/dist/elements/FieldDiffLabel/index.js +10 -1
  124. package/dist/elements/FieldDiffLabel/index.js.map +1 -1
  125. package/dist/elements/FieldSelect/index.js +37 -14
  126. package/dist/elements/FieldSelect/index.js.map +1 -1
  127. package/dist/elements/FileDetails/DraggableFileDetails/index.js +107 -26
  128. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  129. package/dist/elements/FileDetails/FileMeta/index.js +69 -19
  130. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  131. package/dist/elements/FileDetails/StaticFileDetails/index.js +72 -12
  132. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  133. package/dist/elements/FileDetails/index.js +16 -2
  134. package/dist/elements/FileDetails/index.js.map +1 -1
  135. package/dist/elements/FolderView/Breadcrumbs/index.js +51 -15
  136. package/dist/elements/FolderView/Breadcrumbs/index.js.map +1 -1
  137. package/dist/elements/FolderView/BrowseByFolderButton/index.js +26 -10
  138. package/dist/elements/FolderView/BrowseByFolderButton/index.js.map +1 -1
  139. package/dist/elements/FolderView/Cell/index.client.js +22 -4
  140. package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
  141. package/dist/elements/FolderView/Cell/index.server.js +14 -1
  142. package/dist/elements/FolderView/Cell/index.server.js.map +1 -1
  143. package/dist/elements/FolderView/ColoredFolderIcon/index.js +8 -1
  144. package/dist/elements/FolderView/ColoredFolderIcon/index.js.map +1 -1
  145. package/dist/elements/FolderView/CurrentFolderActions/index.js +138 -58
  146. package/dist/elements/FolderView/CurrentFolderActions/index.js.map +1 -1
  147. package/dist/elements/FolderView/DragOverlaySelection/index.js +56 -18
  148. package/dist/elements/FolderView/DragOverlaySelection/index.js.map +1 -1
  149. package/dist/elements/FolderView/DraggableTableRow/index.js +47 -20
  150. package/dist/elements/FolderView/DraggableTableRow/index.js.map +1 -1
  151. package/dist/elements/FolderView/DraggableWithClick/index.js +28 -16
  152. package/dist/elements/FolderView/DraggableWithClick/index.js.map +1 -1
  153. package/dist/elements/FolderView/Drawers/EditFolderAction/index.js +24 -10
  154. package/dist/elements/FolderView/Drawers/EditFolderAction/index.js.map +1 -1
  155. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +327 -105
  156. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -1
  157. package/dist/elements/FolderView/FilterFolderTypePill/index.js +39 -11
  158. package/dist/elements/FolderView/FilterFolderTypePill/index.js.map +1 -1
  159. package/dist/elements/FolderView/FolderField/index.server.js +10 -1
  160. package/dist/elements/FolderView/FolderField/index.server.js.map +1 -1
  161. package/dist/elements/FolderView/FolderFileCard/index.js +168 -50
  162. package/dist/elements/FolderView/FolderFileCard/index.js.map +1 -1
  163. package/dist/elements/FolderView/FolderFileTable/index.js +166 -97
  164. package/dist/elements/FolderView/FolderFileTable/index.js.map +1 -1
  165. package/dist/elements/FolderView/FolderTypeField/index.js +30 -1
  166. package/dist/elements/FolderView/FolderTypeField/index.js.map +1 -1
  167. package/dist/elements/FolderView/ItemCardGrid/index.js +34 -10
  168. package/dist/elements/FolderView/ItemCardGrid/index.js.map +1 -1
  169. package/dist/elements/FolderView/MoveDocToFolder/index.js +104 -54
  170. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  171. package/dist/elements/FolderView/SimpleTable/index.js +98 -31
  172. package/dist/elements/FolderView/SimpleTable/index.js.map +1 -1
  173. package/dist/elements/FolderView/SortByPill/index.js +135 -46
  174. package/dist/elements/FolderView/SortByPill/index.js.map +1 -1
  175. package/dist/elements/FolderView/ToggleViewButtons/index.js +45 -14
  176. package/dist/elements/FolderView/ToggleViewButtons/index.js.map +1 -1
  177. package/dist/elements/FullscreenModal/index.js +15 -5
  178. package/dist/elements/FullscreenModal/index.js.map +1 -1
  179. package/dist/elements/GenerateConfirmation/index.js +48 -10
  180. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  181. package/dist/elements/GroupByBuilder/index.js +113 -54
  182. package/dist/elements/GroupByBuilder/index.js.map +1 -1
  183. package/dist/elements/Gutter/index.js +18 -10
  184. package/dist/elements/Gutter/index.js.map +1 -1
  185. package/dist/elements/HTMLDiff/index.js +22 -6
  186. package/dist/elements/HTMLDiff/index.js.map +1 -1
  187. package/dist/elements/Hamburger/index.js +48 -9
  188. package/dist/elements/Hamburger/index.js.map +1 -1
  189. package/dist/elements/IDLabel/index.js +25 -8
  190. package/dist/elements/IDLabel/index.js.map +1 -1
  191. package/dist/elements/LeaveWithoutSaving/index.js +23 -2
  192. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  193. package/dist/elements/Link/index.js +36 -26
  194. package/dist/elements/Link/index.js.map +1 -1
  195. package/dist/elements/ListControls/index.js +199 -32
  196. package/dist/elements/ListControls/index.js.map +1 -1
  197. package/dist/elements/ListDrawer/DrawerContent.js +34 -6
  198. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  199. package/dist/elements/ListDrawer/Provider.js +13 -7
  200. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  201. package/dist/elements/ListDrawer/index.js +59 -12
  202. package/dist/elements/ListDrawer/index.js.map +1 -1
  203. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +34 -10
  204. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  205. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js +16 -3
  206. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
  207. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +12 -3
  208. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  209. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js +17 -5
  210. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js.map +1 -1
  211. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +110 -52
  212. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +1 -1
  213. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +64 -16
  214. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  215. package/dist/elements/ListHeader/index.js +64 -15
  216. package/dist/elements/ListHeader/index.js.map +1 -1
  217. package/dist/elements/ListSelection/index.js +79 -20
  218. package/dist/elements/ListSelection/index.js.map +1 -1
  219. package/dist/elements/LivePreview/Device/index.js +26 -13
  220. package/dist/elements/LivePreview/Device/index.js.map +1 -1
  221. package/dist/elements/LivePreview/DeviceContainer/index.js +15 -8
  222. package/dist/elements/LivePreview/DeviceContainer/index.js.map +1 -1
  223. package/dist/elements/LivePreview/IFrame/index.js +18 -5
  224. package/dist/elements/LivePreview/IFrame/index.js.map +1 -1
  225. package/dist/elements/LivePreview/Toggler/index.js +26 -8
  226. package/dist/elements/LivePreview/Toggler/index.js.map +1 -1
  227. package/dist/elements/LivePreview/Toolbar/Controls/index.js +197 -50
  228. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  229. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +14 -1
  230. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  231. package/dist/elements/LivePreview/Toolbar/index.js +75 -23
  232. package/dist/elements/LivePreview/Toolbar/index.js.map +1 -1
  233. package/dist/elements/LivePreview/ToolbarArea/index.js +11 -3
  234. package/dist/elements/LivePreview/ToolbarArea/index.js.map +1 -1
  235. package/dist/elements/LivePreview/Window/index.js +53 -13
  236. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  237. package/dist/elements/Loading/index.js +79 -18
  238. package/dist/elements/Loading/index.js.map +1 -1
  239. package/dist/elements/LoadingOverlay/index.js +25 -8
  240. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  241. package/dist/elements/Localizer/LocalizerLabel/index.js +51 -12
  242. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  243. package/dist/elements/Localizer/index.js +88 -39
  244. package/dist/elements/Localizer/index.js.map +1 -1
  245. package/dist/elements/Locked/index.js +34 -8
  246. package/dist/elements/Locked/index.js.map +1 -1
  247. package/dist/elements/Logout/index.js +22 -6
  248. package/dist/elements/Logout/index.js.map +1 -1
  249. package/dist/elements/Nav/NavToggler/index.js +28 -16
  250. package/dist/elements/Nav/NavToggler/index.js.map +1 -1
  251. package/dist/elements/Nav/context.js +16 -10
  252. package/dist/elements/Nav/context.js.map +1 -1
  253. package/dist/elements/NavGroup/index.js +76 -19
  254. package/dist/elements/NavGroup/index.js.map +1 -1
  255. package/dist/elements/NoListResults/index.js +25 -6
  256. package/dist/elements/NoListResults/index.js.map +1 -1
  257. package/dist/elements/PageControls/GroupByPageControls.js +13 -2
  258. package/dist/elements/PageControls/GroupByPageControls.js.map +1 -1
  259. package/dist/elements/PageControls/index.js +73 -14
  260. package/dist/elements/PageControls/index.js.map +1 -1
  261. package/dist/elements/Pagination/ClickableArrow/index.js +17 -3
  262. package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
  263. package/dist/elements/Pagination/Page/index.js +12 -3
  264. package/dist/elements/Pagination/Page/index.js.map +1 -1
  265. package/dist/elements/Pagination/Separator/index.js +10 -1
  266. package/dist/elements/Pagination/Separator/index.js.map +1 -1
  267. package/dist/elements/Pagination/index.js +30 -9
  268. package/dist/elements/Pagination/index.js.map +1 -1
  269. package/dist/elements/PerPage/index.js +90 -25
  270. package/dist/elements/PerPage/index.js.map +1 -1
  271. package/dist/elements/PermanentlyDeleteButton/index.js +53 -14
  272. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  273. package/dist/elements/Pill/index.js +68 -16
  274. package/dist/elements/Pill/index.js.map +1 -1
  275. package/dist/elements/PillSelector/index.js +63 -21
  276. package/dist/elements/PillSelector/index.js.map +1 -1
  277. package/dist/elements/Popup/PopupButtonList/index.js +50 -18
  278. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  279. package/dist/elements/Popup/PopupDivider/index.js +9 -1
  280. package/dist/elements/Popup/PopupDivider/index.js.map +1 -1
  281. package/dist/elements/Popup/PopupGroupLabel/index.js +10 -1
  282. package/dist/elements/Popup/PopupGroupLabel/index.js.map +1 -1
  283. package/dist/elements/Popup/PopupTrigger/index.js +33 -13
  284. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  285. package/dist/elements/Popup/index.js +102 -40
  286. package/dist/elements/Popup/index.js.map +1 -1
  287. package/dist/elements/PreviewButton/index.js +19 -3
  288. package/dist/elements/PreviewButton/index.js.map +1 -1
  289. package/dist/elements/PreviewSizes/index.js +160 -43
  290. package/dist/elements/PreviewSizes/index.js.map +1 -1
  291. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js +96 -24
  292. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
  293. package/dist/elements/PublishButton/ScheduleDrawer/index.js +244 -44
  294. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  295. package/dist/elements/PublishButton/index.js +78 -26
  296. package/dist/elements/PublishButton/index.js.map +1 -1
  297. package/dist/elements/PublishMany/DrawerContent.js +16 -3
  298. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  299. package/dist/elements/PublishMany/index.js +43 -9
  300. package/dist/elements/PublishMany/index.js.map +1 -1
  301. package/dist/elements/QueryPresets/QueryPresetBar/index.js +202 -68
  302. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  303. package/dist/elements/QueryPresets/QueryPresetToggler/index.js +75 -28
  304. package/dist/elements/QueryPresets/QueryPresetToggler/index.js.map +1 -1
  305. package/dist/elements/QueryPresets/cells/AccessCell/index.js +40 -15
  306. package/dist/elements/QueryPresets/cells/AccessCell/index.js.map +1 -1
  307. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js +25 -12
  308. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js.map +1 -1
  309. package/dist/elements/QueryPresets/cells/GroupByCell/index.js +21 -5
  310. package/dist/elements/QueryPresets/cells/GroupByCell/index.js.map +1 -1
  311. package/dist/elements/QueryPresets/cells/WhereCell/index.js +9 -1
  312. package/dist/elements/QueryPresets/cells/WhereCell/index.js.map +1 -1
  313. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +40 -11
  314. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
  315. package/dist/elements/QueryPresets/fields/GroupByField/index.js +49 -8
  316. package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
  317. package/dist/elements/QueryPresets/fields/WhereField/index.js +110 -21
  318. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  319. package/dist/elements/ReactSelect/ClearIndicator/index.js +27 -9
  320. package/dist/elements/ReactSelect/ClearIndicator/index.js.map +1 -1
  321. package/dist/elements/ReactSelect/Control/index.js +36 -25
  322. package/dist/elements/ReactSelect/Control/index.js.map +1 -1
  323. package/dist/elements/ReactSelect/DropdownIndicator/index.js +24 -7
  324. package/dist/elements/ReactSelect/DropdownIndicator/index.js.map +1 -1
  325. package/dist/elements/ReactSelect/Input/index.js +16 -4
  326. package/dist/elements/ReactSelect/Input/index.js.map +1 -1
  327. package/dist/elements/ReactSelect/MultiValue/index.js +32 -19
  328. package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
  329. package/dist/elements/ReactSelect/MultiValueLabel/index.js +22 -7
  330. package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
  331. package/dist/elements/ReactSelect/MultiValueRemove/index.js +44 -16
  332. package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
  333. package/dist/elements/ReactSelect/SingleValue/index.js +19 -8
  334. package/dist/elements/ReactSelect/SingleValue/index.js.map +1 -1
  335. package/dist/elements/ReactSelect/ValueContainer/index.js +28 -4
  336. package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
  337. package/dist/elements/ReactSelect/index.js +127 -36
  338. package/dist/elements/ReactSelect/index.js.map +1 -1
  339. package/dist/elements/RelationshipTable/AddNewButton.js +60 -20
  340. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  341. package/dist/elements/RelationshipTable/Pagination.js +19 -3
  342. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  343. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js +37 -8
  344. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
  345. package/dist/elements/RelationshipTable/index.js +189 -39
  346. package/dist/elements/RelationshipTable/index.js.map +1 -1
  347. package/dist/elements/RenderComponent/index.js +24 -3
  348. package/dist/elements/RenderComponent/index.js.map +1 -1
  349. package/dist/elements/RenderIfInViewport/index.js +10 -3
  350. package/dist/elements/RenderIfInViewport/index.js.map +1 -1
  351. package/dist/elements/RenderServerComponent/index.js +16 -2
  352. package/dist/elements/RenderServerComponent/index.js.map +1 -1
  353. package/dist/elements/RenderTitle/index.js +36 -11
  354. package/dist/elements/RenderTitle/index.js.map +1 -1
  355. package/dist/elements/RestoreButton/index.js +80 -19
  356. package/dist/elements/RestoreButton/index.js.map +1 -1
  357. package/dist/elements/RestoreMany/index.js +62 -16
  358. package/dist/elements/RestoreMany/index.js.map +1 -1
  359. package/dist/elements/SaveButton/index.js +15 -4
  360. package/dist/elements/SaveButton/index.js.map +1 -1
  361. package/dist/elements/SaveDraftButton/index.js +19 -6
  362. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  363. package/dist/elements/SearchBar/index.js +35 -8
  364. package/dist/elements/SearchBar/index.js.map +1 -1
  365. package/dist/elements/SearchFilter/index.js +25 -7
  366. package/dist/elements/SearchFilter/index.js.map +1 -1
  367. package/dist/elements/SelectAll/index.js +18 -4
  368. package/dist/elements/SelectAll/index.js.map +1 -1
  369. package/dist/elements/SelectMany/index.js +20 -7
  370. package/dist/elements/SelectMany/index.js.map +1 -1
  371. package/dist/elements/SelectRow/index.js +21 -5
  372. package/dist/elements/SelectRow/index.js.map +1 -1
  373. package/dist/elements/ShimmerEffect/index.js +51 -18
  374. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  375. package/dist/elements/SortColumn/index.js +83 -28
  376. package/dist/elements/SortColumn/index.js.map +1 -1
  377. package/dist/elements/SortComplex/index.js +77 -16
  378. package/dist/elements/SortComplex/index.js.map +1 -1
  379. package/dist/elements/SortHeader/index.js +37 -13
  380. package/dist/elements/SortHeader/index.js.map +1 -1
  381. package/dist/elements/SortRow/index.js +18 -3
  382. package/dist/elements/SortRow/index.js.map +1 -1
  383. package/dist/elements/Status/index.js +99 -20
  384. package/dist/elements/Status/index.js.map +1 -1
  385. package/dist/elements/StayLoggedIn/index.js +15 -2
  386. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  387. package/dist/elements/StepNav/context.js +14 -8
  388. package/dist/elements/StepNav/context.js.map +1 -1
  389. package/dist/elements/StepNav/index.js +139 -36
  390. package/dist/elements/StepNav/index.js.map +1 -1
  391. package/dist/elements/StickyToolbar/index.js +10 -1
  392. package/dist/elements/StickyToolbar/index.js.map +1 -1
  393. package/dist/elements/Table/DefaultCell/fields/Array/index.js +9 -1
  394. package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
  395. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +9 -1
  396. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  397. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js +16 -3
  398. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
  399. package/dist/elements/Table/DefaultCell/fields/Code/index.js +17 -3
  400. package/dist/elements/Table/DefaultCell/fields/Code/index.js.map +1 -1
  401. package/dist/elements/Table/DefaultCell/fields/Date/index.js +14 -8
  402. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  403. package/dist/elements/Table/DefaultCell/fields/File/index.js +37 -8
  404. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  405. package/dist/elements/Table/DefaultCell/fields/JSON/index.js +16 -3
  406. package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
  407. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +62 -36
  408. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  409. package/dist/elements/Table/DefaultCell/fields/Select/index.js +9 -1
  410. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  411. package/dist/elements/Table/DefaultCell/fields/Textarea/index.js +9 -1
  412. package/dist/elements/Table/DefaultCell/fields/Textarea/index.js.map +1 -1
  413. package/dist/elements/Table/DefaultCell/index.js +76 -20
  414. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  415. package/dist/elements/Table/OrderableRow.js +40 -18
  416. package/dist/elements/Table/OrderableRow.js.map +1 -1
  417. package/dist/elements/Table/OrderableRowDragPreview.js +23 -5
  418. package/dist/elements/Table/OrderableRowDragPreview.js.map +1 -1
  419. package/dist/elements/Table/OrderableTable.js +120 -37
  420. package/dist/elements/Table/OrderableTable.js.map +1 -1
  421. package/dist/elements/Table/RelationshipProvider/index.js +14 -6
  422. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  423. package/dist/elements/Table/index.js +79 -28
  424. package/dist/elements/Table/index.js.map +1 -1
  425. package/dist/elements/Thumbnail/index.js +69 -18
  426. package/dist/elements/Thumbnail/index.js.map +1 -1
  427. package/dist/elements/ThumbnailCard/index.js +30 -4
  428. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  429. package/dist/elements/TimezonePicker/index.js +38 -8
  430. package/dist/elements/TimezonePicker/index.js.map +1 -1
  431. package/dist/elements/Toasts/fieldErrors.js +33 -8
  432. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  433. package/dist/elements/Tooltip/index.js +56 -21
  434. package/dist/elements/Tooltip/index.js.map +1 -1
  435. package/dist/elements/Translation/index.js +39 -16
  436. package/dist/elements/Translation/index.js.map +1 -1
  437. package/dist/elements/TrashBanner/index.js +25 -8
  438. package/dist/elements/TrashBanner/index.js.map +1 -1
  439. package/dist/elements/UnpublishMany/DrawerContent.js +14 -3
  440. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  441. package/dist/elements/UnpublishMany/index.js +43 -9
  442. package/dist/elements/UnpublishMany/index.js.map +1 -1
  443. package/dist/elements/Upload/index.js +401 -109
  444. package/dist/elements/Upload/index.js.map +1 -1
  445. package/dist/elements/ViewDescription/index.js +10 -2
  446. package/dist/elements/ViewDescription/index.js.map +1 -1
  447. package/dist/elements/WhereBuilder/Condition/Date/index.js +20 -3
  448. package/dist/elements/WhereBuilder/Condition/Date/index.js.map +1 -1
  449. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js +72 -6
  450. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
  451. package/dist/elements/WhereBuilder/Condition/Number/index.js +28 -1
  452. package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
  453. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +52 -25
  454. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  455. package/dist/elements/WhereBuilder/Condition/Select/index.js +17 -4
  456. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  457. package/dist/elements/WhereBuilder/Condition/Text/index.js +27 -1
  458. package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
  459. package/dist/elements/WhereBuilder/Condition/index.js +128 -30
  460. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  461. package/dist/elements/WhereBuilder/index.js +159 -54
  462. package/dist/elements/WhereBuilder/index.js.map +1 -1
  463. package/dist/elements/WithServerSideProps/index.js +9 -1
  464. package/dist/elements/WithServerSideProps/index.js.map +1 -1
  465. package/dist/elements/withMergedProps/index.d.ts +1 -1
  466. package/dist/elements/withMergedProps/index.js +10 -2
  467. package/dist/elements/withMergedProps/index.js.map +1 -1
  468. package/dist/exports/client/index.d.ts +2 -0
  469. package/dist/exports/client/index.d.ts.map +1 -1
  470. package/dist/exports/client/index.js +2 -0
  471. package/dist/exports/client/index.js.map +1 -1
  472. package/dist/fields/Array/ArrayRow.d.ts +18 -7
  473. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  474. package/dist/fields/Array/ArrayRow.js +101 -17
  475. package/dist/fields/Array/ArrayRow.js.map +1 -1
  476. package/dist/fields/Array/index.d.ts.map +1 -1
  477. package/dist/fields/Array/index.js +297 -69
  478. package/dist/fields/Array/index.js.map +1 -1
  479. package/dist/fields/Blocks/BlockRow.js +130 -22
  480. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  481. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js +25 -4
  482. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js.map +1 -1
  483. package/dist/fields/Blocks/BlockSelector/index.js +101 -29
  484. package/dist/fields/Blocks/BlockSelector/index.js.map +1 -1
  485. package/dist/fields/Blocks/BlocksDrawer/index.js +23 -8
  486. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  487. package/dist/fields/Blocks/RowActions.js +44 -12
  488. package/dist/fields/Blocks/RowActions.js.map +1 -1
  489. package/dist/fields/Blocks/SectionTitle/index.js +24 -3
  490. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  491. package/dist/fields/Blocks/index.js +326 -83
  492. package/dist/fields/Blocks/index.js.map +1 -1
  493. package/dist/fields/Checkbox/Input.js +83 -21
  494. package/dist/fields/Checkbox/Input.js.map +1 -1
  495. package/dist/fields/Checkbox/index.js +68 -13
  496. package/dist/fields/Checkbox/index.js.map +1 -1
  497. package/dist/fields/Code/index.js +92 -18
  498. package/dist/fields/Code/index.js.map +1 -1
  499. package/dist/fields/Collapsible/index.js +103 -21
  500. package/dist/fields/Collapsible/index.js.map +1 -1
  501. package/dist/fields/ConfirmPassword/index.js +54 -11
  502. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  503. package/dist/fields/DateTime/index.js +102 -19
  504. package/dist/fields/DateTime/index.js.map +1 -1
  505. package/dist/fields/Email/index.js +91 -19
  506. package/dist/fields/Email/index.js.map +1 -1
  507. package/dist/fields/FieldDescription/index.js +15 -8
  508. package/dist/fields/FieldDescription/index.js.map +1 -1
  509. package/dist/fields/FieldError/index.js +13 -3
  510. package/dist/fields/FieldError/index.js.map +1 -1
  511. package/dist/fields/FieldLabel/index.js +32 -7
  512. package/dist/fields/FieldLabel/index.js.map +1 -1
  513. package/dist/fields/Group/index.js +132 -31
  514. package/dist/fields/Group/index.js.map +1 -1
  515. package/dist/fields/Group/provider.js +11 -3
  516. package/dist/fields/Group/provider.js.map +1 -1
  517. package/dist/fields/Hidden/index.js +13 -2
  518. package/dist/fields/Hidden/index.js.map +1 -1
  519. package/dist/fields/JSON/index.js +93 -18
  520. package/dist/fields/JSON/index.js.map +1 -1
  521. package/dist/fields/Join/index.js +88 -20
  522. package/dist/fields/Join/index.js.map +1 -1
  523. package/dist/fields/Number/index.js +134 -36
  524. package/dist/fields/Number/index.js.map +1 -1
  525. package/dist/fields/Password/index.js +29 -4
  526. package/dist/fields/Password/index.js.map +1 -1
  527. package/dist/fields/Password/input.js +105 -21
  528. package/dist/fields/Password/input.js.map +1 -1
  529. package/dist/fields/Point/index.js +157 -33
  530. package/dist/fields/Point/index.js.map +1 -1
  531. package/dist/fields/RadioGroup/Radio/index.js +51 -13
  532. package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
  533. package/dist/fields/RadioGroup/index.js +124 -42
  534. package/dist/fields/RadioGroup/index.js.map +1 -1
  535. package/dist/fields/Relationship/Input.js +242 -119
  536. package/dist/fields/Relationship/Input.js.map +1 -1
  537. package/dist/fields/Relationship/index.js +44 -11
  538. package/dist/fields/Relationship/index.js.map +1 -1
  539. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +85 -33
  540. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  541. package/dist/fields/Relationship/select-components/SingleValue/index.js +88 -32
  542. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  543. package/dist/fields/Row/index.js +35 -9
  544. package/dist/fields/Row/index.js.map +1 -1
  545. package/dist/fields/Row/provider.js +11 -3
  546. package/dist/fields/Row/provider.js.map +1 -1
  547. package/dist/fields/Select/Input.js +98 -19
  548. package/dist/fields/Select/Input.js.map +1 -1
  549. package/dist/fields/Select/index.js +30 -1
  550. package/dist/fields/Select/index.js.map +1 -1
  551. package/dist/fields/Slug/index.js +58 -13
  552. package/dist/fields/Slug/index.js.map +1 -1
  553. package/dist/fields/Tabs/Tab/index.js +43 -12
  554. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  555. package/dist/fields/Tabs/index.js +117 -31
  556. package/dist/fields/Tabs/index.js.map +1 -1
  557. package/dist/fields/Tabs/provider.js +11 -3
  558. package/dist/fields/Tabs/provider.js.map +1 -1
  559. package/dist/fields/Text/Input.js +129 -31
  560. package/dist/fields/Text/Input.js.map +1 -1
  561. package/dist/fields/Text/index.js +36 -6
  562. package/dist/fields/Text/index.js.map +1 -1
  563. package/dist/fields/Textarea/Input.js +101 -20
  564. package/dist/fields/Textarea/Input.js.map +1 -1
  565. package/dist/fields/Textarea/index.js +29 -4
  566. package/dist/fields/Textarea/index.js.map +1 -1
  567. package/dist/fields/Upload/HasMany/index.js +117 -52
  568. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  569. package/dist/fields/Upload/HasOne/index.js +34 -6
  570. package/dist/fields/Upload/HasOne/index.js.map +1 -1
  571. package/dist/fields/Upload/Input.js +248 -60
  572. package/dist/fields/Upload/Input.js.map +1 -1
  573. package/dist/fields/Upload/RelationshipContent/index.js +112 -23
  574. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  575. package/dist/fields/Upload/UploadCard/index.js +14 -7
  576. package/dist/fields/Upload/UploadCard/index.js.map +1 -1
  577. package/dist/fields/Upload/index.js +39 -3
  578. package/dist/fields/Upload/index.js.map +1 -1
  579. package/dist/forms/Form/index.js +87 -26
  580. package/dist/forms/Form/index.js.map +1 -1
  581. package/dist/forms/NullifyField/index.js +23 -6
  582. package/dist/forms/NullifyField/index.js.map +1 -1
  583. package/dist/forms/RenderFields/RenderField.js +203 -23
  584. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  585. package/dist/forms/RenderFields/index.js +72 -45
  586. package/dist/forms/RenderFields/index.js.map +1 -1
  587. package/dist/forms/RowLabel/Context/index.js +10 -2
  588. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  589. package/dist/forms/RowLabel/index.js +31 -10
  590. package/dist/forms/RowLabel/index.js.map +1 -1
  591. package/dist/forms/Submit/index.js +22 -5
  592. package/dist/forms/Submit/index.js.map +1 -1
  593. package/dist/forms/fieldSchemasToFormState/renderField.js +44 -26
  594. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  595. package/dist/forms/useField/index.js +1 -1
  596. package/dist/forms/useField/index.js.map +1 -1
  597. package/dist/forms/withCondition/index.js +16 -3
  598. package/dist/forms/withCondition/index.js.map +1 -1
  599. package/dist/graphics/Account/Default/index.js +46 -8
  600. package/dist/graphics/Account/Default/index.js.map +1 -1
  601. package/dist/graphics/Account/Gravatar/index.js +16 -3
  602. package/dist/graphics/Account/Gravatar/index.js.map +1 -1
  603. package/dist/graphics/Account/index.js +14 -2
  604. package/dist/graphics/Account/index.js.map +1 -1
  605. package/dist/graphics/DefaultBlockImage/index.js +115 -16
  606. package/dist/graphics/DefaultBlockImage/index.js.map +1 -1
  607. package/dist/graphics/File/index.js +33 -6
  608. package/dist/graphics/File/index.js.map +1 -1
  609. package/dist/graphics/Icon/index.js +31 -4
  610. package/dist/graphics/Icon/index.js.map +1 -1
  611. package/dist/graphics/Logo/index.js +112 -17
  612. package/dist/graphics/Logo/index.js.map +1 -1
  613. package/dist/icons/Calendar/index.js +20 -3
  614. package/dist/icons/Calendar/index.js.map +1 -1
  615. package/dist/icons/Check/index.js +20 -3
  616. package/dist/icons/Check/index.js.map +1 -1
  617. package/dist/icons/Chevron/index.js +30 -9
  618. package/dist/icons/Chevron/index.js.map +1 -1
  619. package/dist/icons/CloseMenu/index.js +20 -3
  620. package/dist/icons/CloseMenu/index.js.map +1 -1
  621. package/dist/icons/CodeBlock/index.js +22 -3
  622. package/dist/icons/CodeBlock/index.js.map +1 -1
  623. package/dist/icons/Copy/index.js +24 -3
  624. package/dist/icons/Copy/index.js.map +1 -1
  625. package/dist/icons/Document/index.js +24 -3
  626. package/dist/icons/Document/index.js.map +1 -1
  627. package/dist/icons/Dots/index.js +32 -10
  628. package/dist/icons/Dots/index.js.map +1 -1
  629. package/dist/icons/DragHandle/index.js +70 -11
  630. package/dist/icons/DragHandle/index.js.map +1 -1
  631. package/dist/icons/Edit/index.js +23 -6
  632. package/dist/icons/Edit/index.js.map +1 -1
  633. package/dist/icons/ExternalLink/index.js +23 -6
  634. package/dist/icons/ExternalLink/index.js.map +1 -1
  635. package/dist/icons/Eye/index.js +53 -12
  636. package/dist/icons/Eye/index.js.map +1 -1
  637. package/dist/icons/Folder/index.js +25 -6
  638. package/dist/icons/Folder/index.js.map +1 -1
  639. package/dist/icons/Gear/index.js +34 -8
  640. package/dist/icons/Gear/index.js.map +1 -1
  641. package/dist/icons/GridView/index.js +56 -6
  642. package/dist/icons/GridView/index.js.map +1 -1
  643. package/dist/icons/Line/index.js +23 -3
  644. package/dist/icons/Line/index.js.map +1 -1
  645. package/dist/icons/Link/index.js +25 -3
  646. package/dist/icons/Link/index.js.map +1 -1
  647. package/dist/icons/ListView/index.js +24 -3
  648. package/dist/icons/ListView/index.js.map +1 -1
  649. package/dist/icons/Lock/index.js +41 -7
  650. package/dist/icons/Lock/index.js.map +1 -1
  651. package/dist/icons/LogOut/index.js +23 -3
  652. package/dist/icons/LogOut/index.js.map +1 -1
  653. package/dist/icons/Menu/index.js +23 -3
  654. package/dist/icons/Menu/index.js.map +1 -1
  655. package/dist/icons/MinimizeMaximize/index.js +27 -3
  656. package/dist/icons/MinimizeMaximize/index.js.map +1 -1
  657. package/dist/icons/More/index.js +43 -8
  658. package/dist/icons/More/index.js.map +1 -1
  659. package/dist/icons/MoveFolder/index.js +62 -10
  660. package/dist/icons/MoveFolder/index.js.map +1 -1
  661. package/dist/icons/People/index.js +28 -7
  662. package/dist/icons/People/index.js.map +1 -1
  663. package/dist/icons/Plus/index.js +22 -3
  664. package/dist/icons/Plus/index.js.map +1 -1
  665. package/dist/icons/Search/index.js +21 -3
  666. package/dist/icons/Search/index.js.map +1 -1
  667. package/dist/icons/Sort/index.js +48 -6
  668. package/dist/icons/Sort/index.js.map +1 -1
  669. package/dist/icons/Swap/index.js +20 -3
  670. package/dist/icons/Swap/index.js.map +1 -1
  671. package/dist/icons/ThreeDots/index.js +26 -5
  672. package/dist/icons/ThreeDots/index.js.map +1 -1
  673. package/dist/icons/Trash/index.js +27 -6
  674. package/dist/icons/Trash/index.js.map +1 -1
  675. package/dist/icons/X/index.js +25 -6
  676. package/dist/icons/X/index.js.map +1 -1
  677. package/dist/providers/Actions/index.js +16 -10
  678. package/dist/providers/Actions/index.js.map +1 -1
  679. package/dist/providers/Auth/index.js +22 -16
  680. package/dist/providers/Auth/index.js.map +1 -1
  681. package/dist/providers/ClickOutside/index.js +14 -6
  682. package/dist/providers/ClickOutside/index.js.map +1 -1
  683. package/dist/providers/ClientFunction/index.js +21 -8
  684. package/dist/providers/ClientFunction/index.js.map +1 -1
  685. package/dist/providers/Config/index.js +19 -4
  686. package/dist/providers/Config/index.js.map +1 -1
  687. package/dist/providers/DocumentEvents/index.js +14 -6
  688. package/dist/providers/DocumentEvents/index.js.map +1 -1
  689. package/dist/providers/DocumentInfo/index.js +29 -7
  690. package/dist/providers/DocumentInfo/index.js.map +1 -1
  691. package/dist/providers/DocumentTitle/index.js +13 -5
  692. package/dist/providers/DocumentTitle/index.js.map +1 -1
  693. package/dist/providers/EditDepth/index.js +11 -3
  694. package/dist/providers/EditDepth/index.js.map +1 -1
  695. package/dist/providers/EntityVisibility/index.js +14 -8
  696. package/dist/providers/EntityVisibility/index.js.map +1 -1
  697. package/dist/providers/Folders/index.js +48 -42
  698. package/dist/providers/Folders/index.js.map +1 -1
  699. package/dist/providers/ListQuery/index.js +30 -17
  700. package/dist/providers/ListQuery/index.js.map +1 -1
  701. package/dist/providers/LivePreview/index.js +51 -39
  702. package/dist/providers/LivePreview/index.js.map +1 -1
  703. package/dist/providers/Locale/index.js +21 -10
  704. package/dist/providers/Locale/index.js.map +1 -1
  705. package/dist/providers/Operation/index.js +11 -3
  706. package/dist/providers/Operation/index.js.map +1 -1
  707. package/dist/providers/Params/index.js +11 -3
  708. package/dist/providers/Params/index.js.map +1 -1
  709. package/dist/providers/Preferences/index.js +11 -3
  710. package/dist/providers/Preferences/index.js.map +1 -1
  711. package/dist/providers/Root/index.js +187 -54
  712. package/dist/providers/Root/index.js.map +1 -1
  713. package/dist/providers/RouteCache/index.js +14 -6
  714. package/dist/providers/RouteCache/index.js.map +1 -1
  715. package/dist/providers/RouteTransition/ProgressBar/index.js +25 -11
  716. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  717. package/dist/providers/RouteTransition/index.js +14 -8
  718. package/dist/providers/RouteTransition/index.js.map +1 -1
  719. package/dist/providers/SearchParams/index.js +13 -5
  720. package/dist/providers/SearchParams/index.js.map +1 -1
  721. package/dist/providers/Selection/index.js +11 -3
  722. package/dist/providers/Selection/index.js.map +1 -1
  723. package/dist/providers/ServerFunctions/index.js +21 -15
  724. package/dist/providers/ServerFunctions/index.js.map +1 -1
  725. package/dist/providers/TableColumns/RenderDefaultCell/index.js +16 -4
  726. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
  727. package/dist/providers/TableColumns/buildColumnState/index.js +13 -1
  728. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  729. package/dist/providers/TableColumns/buildColumnState/renderCell.js +18 -1
  730. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  731. package/dist/providers/TableColumns/index.js +17 -11
  732. package/dist/providers/TableColumns/index.js.map +1 -1
  733. package/dist/providers/Theme/index.js +15 -7
  734. package/dist/providers/Theme/index.js.map +1 -1
  735. package/dist/providers/ToastContainer/icons/Error.js +33 -4
  736. package/dist/providers/ToastContainer/icons/Error.js.map +1 -1
  737. package/dist/providers/ToastContainer/icons/Info.js +33 -4
  738. package/dist/providers/ToastContainer/icons/Info.js.map +1 -1
  739. package/dist/providers/ToastContainer/icons/Success.js +33 -4
  740. package/dist/providers/ToastContainer/icons/Success.js.map +1 -1
  741. package/dist/providers/ToastContainer/icons/Warning.js +33 -4
  742. package/dist/providers/ToastContainer/icons/Warning.js.map +1 -1
  743. package/dist/providers/ToastContainer/index.js +53 -19
  744. package/dist/providers/ToastContainer/index.js.map +1 -1
  745. package/dist/providers/Translation/index.js +21 -15
  746. package/dist/providers/Translation/index.js.map +1 -1
  747. package/dist/providers/UploadControls/index.js +18 -12
  748. package/dist/providers/UploadControls/index.js.map +1 -1
  749. package/dist/providers/UploadEdits/index.js +15 -9
  750. package/dist/providers/UploadEdits/index.js.map +1 -1
  751. package/dist/providers/UploadHandlers/index.js +13 -5
  752. package/dist/providers/UploadHandlers/index.js.map +1 -1
  753. package/dist/utilities/combineFieldLabel.js +51 -13
  754. package/dist/utilities/combineFieldLabel.js.map +1 -1
  755. package/dist/utilities/getFolderResultsComponentAndData.js +39 -10
  756. package/dist/utilities/getFolderResultsComponentAndData.js.map +1 -1
  757. package/dist/utilities/renderTable.js +113 -23
  758. package/dist/utilities/renderTable.js.map +1 -1
  759. package/dist/views/BrowseByFolder/index.js +273 -74
  760. package/dist/views/BrowseByFolder/index.js.map +1 -1
  761. package/dist/views/CollectionFolder/ListSelection/index.js +130 -44
  762. package/dist/views/CollectionFolder/ListSelection/index.js.map +1 -1
  763. package/dist/views/CollectionFolder/index.js +268 -84
  764. package/dist/views/CollectionFolder/index.js.map +1 -1
  765. package/dist/views/Edit/Auth/APIKey.js +103 -23
  766. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  767. package/dist/views/Edit/Auth/index.js +165 -48
  768. package/dist/views/Edit/Auth/index.js.map +1 -1
  769. package/dist/views/Edit/index.js +272 -85
  770. package/dist/views/Edit/index.js.map +1 -1
  771. package/dist/views/List/GroupByHeader/index.js +34 -10
  772. package/dist/views/List/GroupByHeader/index.js.map +1 -1
  773. package/dist/views/List/ListHeader/index.js +103 -18
  774. package/dist/views/List/ListHeader/index.js.map +1 -1
  775. package/dist/views/List/ListSelection/index.js +93 -20
  776. package/dist/views/List/ListSelection/index.js.map +1 -1
  777. package/dist/views/List/index.js +243 -58
  778. package/dist/views/List/index.js.map +1 -1
  779. package/package.json +4 -4
@@ -1,4 +1,5 @@
1
1
  'use client';
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
2
3
  import { useRouter, useSearchParams } from 'next/navigation.js';
3
4
  import { extractID, formatAdminURL, formatFolderOrDocumentItem } from 'payload/shared';
4
5
  import * as qs from 'qs-esm';
@@ -16,7 +17,7 @@ import { groupItemIDsByRelation } from './groupItemIDsByRelation.js';
16
17
  * Used in the browse-by-folder view
17
18
  */ /**
18
19
  * Folder enabled collection slugs that can be populated within the provider
19
- */ const Context = React.createContext({
20
+ */ const Context = /*#__PURE__*/ React.createContext({
20
21
  activeCollectionFolderSlugs: [],
21
22
  allCollectionFolderSlugs: [],
22
23
  allowCreateCollectionSlugs: [],
@@ -676,48 +677,53 @@ import { groupItemIDsByRelation } from './groupItemIDsByRelation.js';
676
677
  }, [
677
678
  InitialFolderResultsComponent
678
679
  ]);
679
- return <Context value={{
680
- activeCollectionFolderSlugs: activeCollectionSlugs || allCollectionFolderSlugs,
681
- allCollectionFolderSlugs,
682
- allowCreateCollectionSlugs,
683
- breadcrumbs,
684
- checkIfItemIsDisabled,
685
- clearSelections,
686
- currentFolder: breadcrumbs?.[breadcrumbs.length - 1]?.id !== undefined ? formatFolderOrDocumentItem({
680
+ return /*#__PURE__*/ _jsxDEV(Context, {
681
+ value: {
682
+ activeCollectionFolderSlugs: activeCollectionSlugs || allCollectionFolderSlugs,
683
+ allCollectionFolderSlugs,
684
+ allowCreateCollectionSlugs,
685
+ breadcrumbs,
686
+ checkIfItemIsDisabled,
687
+ clearSelections,
688
+ currentFolder: breadcrumbs?.[breadcrumbs.length - 1]?.id !== undefined ? formatFolderOrDocumentItem({
689
+ folderFieldName,
690
+ isUpload: false,
691
+ relationTo: folderCollectionSlug,
692
+ useAsTitle: folderCollectionConfig.admin.useAsTitle,
693
+ value: breadcrumbs[breadcrumbs.length - 1]
694
+ }) : null,
695
+ documents,
696
+ dragOverlayItem,
697
+ focusedRowIndex,
698
+ folderCollectionConfig,
699
+ folderCollectionSlug,
687
700
  folderFieldName,
688
- isUpload: false,
689
- relationTo: folderCollectionSlug,
690
- useAsTitle: folderCollectionConfig.admin.useAsTitle,
691
- value: breadcrumbs[breadcrumbs.length - 1]
692
- }) : null,
693
- documents,
694
- dragOverlayItem,
695
- focusedRowIndex,
696
- folderCollectionConfig,
697
- folderCollectionSlug,
698
- folderFieldName,
699
- folderID,
700
- FolderResultsComponent,
701
- folderType: breadcrumbs?.[breadcrumbs.length - 1]?.folderType,
702
- getFolderRoute,
703
- getSelectedItems,
704
- isDragging,
705
- itemKeysToMove: parentFolderContext.selectedItemKeys,
706
- moveToFolder,
707
- onItemClick,
708
- onItemKeyPress,
709
- refineFolderData,
710
- search,
711
- selectedFolderCollections,
712
- selectedItemKeys,
713
- setBreadcrumbs,
714
- setFocusedRowIndex,
715
- setIsDragging,
716
- sort,
717
- subfolders
718
- }}>
719
- {children}
720
- </Context>;
701
+ folderID,
702
+ FolderResultsComponent,
703
+ folderType: breadcrumbs?.[breadcrumbs.length - 1]?.folderType,
704
+ getFolderRoute,
705
+ getSelectedItems,
706
+ isDragging,
707
+ itemKeysToMove: parentFolderContext.selectedItemKeys,
708
+ moveToFolder,
709
+ onItemClick,
710
+ onItemKeyPress,
711
+ refineFolderData,
712
+ search,
713
+ selectedFolderCollections,
714
+ selectedItemKeys,
715
+ setBreadcrumbs,
716
+ setFocusedRowIndex,
717
+ setIsDragging,
718
+ sort,
719
+ subfolders
720
+ },
721
+ children: children
722
+ }, void 0, false, {
723
+ fileName: "src/providers/Folders/index.tsx",
724
+ lineNumber: 831,
725
+ columnNumber: 5
726
+ }, this);
721
727
  }
722
728
  export function useFolder() {
723
729
  const context = React.use(Context);
@@ -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,4 +1,5 @@
1
1
  'use client';
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
2
3
  import { useRouter, useSearchParams } from 'next/navigation.js';
3
4
  import * as qs from 'qs-esm';
4
5
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
@@ -138,23 +139,35 @@ export const ListQueryProvider = ({ children, collectionSlug, data, modifySearch
138
139
  modifySearchParams,
139
140
  queryFromProps
140
141
  ]);
141
- return <ListQueryContext value={{
142
- collectionSlug,
143
- data,
144
- handlePageChange,
145
- handlePerPageChange,
146
- handleSearchChange,
147
- handleSortChange,
148
- handleWhereChange,
149
- isGroupingBy: Boolean(collectionConfig?.admin?.groupBy && query?.groupBy),
150
- orderableFieldName,
151
- query,
152
- refineListData,
153
- setModified,
154
- ...contextRef.current
155
- }}>
156
- <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>
157
- </ListQueryContext>;
142
+ return /*#__PURE__*/ _jsxDEV(ListQueryContext, {
143
+ value: {
144
+ collectionSlug,
145
+ data,
146
+ handlePageChange,
147
+ handlePerPageChange,
148
+ handleSearchChange,
149
+ handleSortChange,
150
+ handleWhereChange,
151
+ isGroupingBy: Boolean(collectionConfig?.admin?.groupBy && query?.groupBy),
152
+ orderableFieldName,
153
+ query,
154
+ refineListData,
155
+ setModified,
156
+ ...contextRef.current
157
+ },
158
+ children: /*#__PURE__*/ _jsxDEV(ListQueryModifiedContext, {
159
+ value: modified,
160
+ children: children
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);
158
171
  };
159
172
 
160
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,4 +1,5 @@
1
1
  'use client';
2
+ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
2
3
  import { DndContext } from '@dnd-kit/core';
3
4
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
5
  import { usePopupWindow } from '../../hooks/usePopupWindow.js';
@@ -186,45 +187,56 @@ import { sizeReducer } from './sizeReducer.js';
186
187
  collectionSlug,
187
188
  globalSlug
188
189
  ]);
189
- return <LivePreviewContext value={{
190
- appIsReady,
191
- breakpoint,
192
- breakpoints,
193
- iframeRef,
194
- isLivePreviewEnabled,
195
- isLivePreviewing,
196
- isPopupOpen,
197
- isPreviewEnabled,
198
- listeningForMessages,
199
- loadedURL,
200
- measuredDeviceSize,
201
- openPopupWindow,
202
- popupRef,
203
- previewURL,
204
- previewWindowType,
205
- setAppIsReady,
206
- setBreakpoint,
207
- setHeight,
208
- setIsLivePreviewing,
209
- setLoadedURL,
210
- setMeasuredDeviceSize,
211
- setPreviewURL,
212
- setPreviewWindowType: handleWindowChange,
213
- setSize,
214
- setToolbarPosition: setPosition,
215
- setURL: setLivePreviewURL,
216
- setWidth,
217
- setZoom,
218
- size,
219
- toolbarPosition: position,
220
- typeofLivePreviewURL,
221
- url,
222
- zoom
223
- }}>
224
- <DndContext collisionDetection={customCollisionDetection} onDragEnd={handleDragEnd}>
225
- {children}
226
- </DndContext>
227
- </LivePreviewContext>;
190
+ return /*#__PURE__*/ _jsxDEV(LivePreviewContext, {
191
+ value: {
192
+ appIsReady,
193
+ breakpoint,
194
+ breakpoints,
195
+ iframeRef,
196
+ isLivePreviewEnabled,
197
+ isLivePreviewing,
198
+ isPopupOpen,
199
+ isPreviewEnabled,
200
+ listeningForMessages,
201
+ loadedURL,
202
+ measuredDeviceSize,
203
+ openPopupWindow,
204
+ popupRef,
205
+ previewURL,
206
+ previewWindowType,
207
+ setAppIsReady,
208
+ setBreakpoint,
209
+ setHeight,
210
+ setIsLivePreviewing,
211
+ setLoadedURL,
212
+ setMeasuredDeviceSize,
213
+ setPreviewURL,
214
+ setPreviewWindowType: handleWindowChange,
215
+ setSize,
216
+ setToolbarPosition: setPosition,
217
+ setURL: setLivePreviewURL,
218
+ setWidth,
219
+ setZoom,
220
+ size,
221
+ toolbarPosition: position,
222
+ typeofLivePreviewURL,
223
+ url,
224
+ zoom
225
+ },
226
+ children: /*#__PURE__*/ _jsxDEV(DndContext, {
227
+ collisionDetection: customCollisionDetection,
228
+ onDragEnd: handleDragEnd,
229
+ children: children
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);
228
240
  };
229
241
 
230
242
  //# sourceMappingURL=index.js.map