@payloadcms/ui 3.0.0-alpha.60 → 3.0.0-alpha.61

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 (399) hide show
  1. package/dist/@types/assets.d.js.map +1 -1
  2. package/dist/assets/index.js.map +1 -1
  3. package/dist/elements/AppHeader/index.js.map +1 -1
  4. package/dist/elements/ArrayAction/index.js.map +1 -1
  5. package/dist/elements/Autosave/index.js +4 -1
  6. package/dist/elements/Autosave/index.js.map +1 -1
  7. package/dist/elements/Banner/index.js.map +1 -1
  8. package/dist/elements/Button/index.js.map +1 -1
  9. package/dist/elements/Button/types.js.map +1 -1
  10. package/dist/elements/Card/index.js.map +1 -1
  11. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  12. package/dist/elements/CodeEditor/index.js.map +1 -1
  13. package/dist/elements/CodeEditor/types.js.map +1 -1
  14. package/dist/elements/Collapsible/index.js.map +1 -1
  15. package/dist/elements/Collapsible/provider.js.map +1 -1
  16. package/dist/elements/ColumnSelector/index.js.map +1 -1
  17. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  18. package/dist/elements/DatePicker/DatePicker.js +4 -4
  19. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  20. package/dist/elements/DatePicker/getFormattedLocale.d.ts +2 -0
  21. package/dist/elements/DatePicker/getFormattedLocale.d.ts.map +1 -0
  22. package/dist/elements/DatePicker/getFormattedLocale.js +12 -0
  23. package/dist/elements/DatePicker/getFormattedLocale.js.map +1 -0
  24. package/dist/elements/DatePicker/index.js.map +1 -1
  25. package/dist/elements/DatePicker/types.js.map +1 -1
  26. package/dist/elements/DeleteDocument/index.js.map +1 -1
  27. package/dist/elements/DeleteMany/index.js.map +1 -1
  28. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  29. package/dist/elements/DocumentControls/index.js +20 -4
  30. package/dist/elements/DocumentControls/index.js.map +1 -1
  31. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  32. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  33. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  34. package/dist/elements/DocumentFields/index.js.map +1 -1
  35. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  36. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  37. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  38. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js.map +1 -1
  39. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js.map +1 -1
  40. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  41. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  42. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  43. package/dist/elements/DocumentHeader/index.js.map +1 -1
  44. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
  45. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js.map +1 -1
  46. package/dist/elements/DraggableSortable/index.js.map +1 -1
  47. package/dist/elements/DraggableSortable/types.js.map +1 -1
  48. package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
  49. package/dist/elements/DraggableSortable/useDraggableSortable/types.js.map +1 -1
  50. package/dist/elements/Drawer/index.js.map +1 -1
  51. package/dist/elements/Drawer/types.js.map +1 -1
  52. package/dist/elements/Drawer/useDrawerSlug.js.map +1 -1
  53. package/dist/elements/Dropzone/index.js.map +1 -1
  54. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  55. package/dist/elements/EditMany/index.js.map +1 -1
  56. package/dist/elements/EditUpload/index.js.map +1 -1
  57. package/dist/elements/ErrorPill/index.js.map +1 -1
  58. package/dist/elements/FieldSelect/index.js.map +1 -1
  59. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  60. package/dist/elements/FileDetails/index.js.map +1 -1
  61. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  62. package/dist/elements/Gutter/index.js.map +1 -1
  63. package/dist/elements/Hamburger/index.js.map +1 -1
  64. package/dist/elements/HydrateClientUser/index.js.map +1 -1
  65. package/dist/elements/IDLabel/index.js.map +1 -1
  66. package/dist/elements/ListControls/getTextFieldsToBeSearched.js.map +1 -1
  67. package/dist/elements/ListControls/index.js.map +1 -1
  68. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  69. package/dist/elements/ListDrawer/index.js.map +1 -1
  70. package/dist/elements/ListDrawer/types.js.map +1 -1
  71. package/dist/elements/ListSelection/index.js.map +1 -1
  72. package/dist/elements/Loading/index.js.map +1 -1
  73. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  74. package/dist/elements/LoadingOverlay/reducer.js.map +1 -1
  75. package/dist/elements/LoadingOverlay/types.js.map +1 -1
  76. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  77. package/dist/elements/Localizer/index.js.map +1 -1
  78. package/dist/elements/Logout/index.js.map +1 -1
  79. package/dist/elements/Modal/index.js.map +1 -1
  80. package/dist/elements/Nav/NavHamburger/index.js.map +1 -1
  81. package/dist/elements/Nav/NavToggler/index.js.map +1 -1
  82. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  83. package/dist/elements/Nav/context.js.map +1 -1
  84. package/dist/elements/Nav/index.client.js.map +1 -1
  85. package/dist/elements/Nav/index.js.map +1 -1
  86. package/dist/elements/NavGroup/index.js.map +1 -1
  87. package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
  88. package/dist/elements/Pagination/Page/index.js.map +1 -1
  89. package/dist/elements/Pagination/Separator/index.js.map +1 -1
  90. package/dist/elements/Pagination/index.js.map +1 -1
  91. package/dist/elements/PerPage/index.js.map +1 -1
  92. package/dist/elements/Pill/index.js.map +1 -1
  93. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  94. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  95. package/dist/elements/Popup/PopupTrigger/types.js.map +1 -1
  96. package/dist/elements/Popup/index.js.map +1 -1
  97. package/dist/elements/PreviewButton/index.js.map +1 -1
  98. package/dist/elements/PreviewButton/usePreviewURL.js.map +1 -1
  99. package/dist/elements/PreviewSizes/index.js.map +1 -1
  100. package/dist/elements/Publish/index.js.map +1 -1
  101. package/dist/elements/PublishMany/index.js.map +1 -1
  102. package/dist/elements/ReactSelect/ClearIndicator/index.js.map +1 -1
  103. package/dist/elements/ReactSelect/Control/index.js.map +1 -1
  104. package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
  105. package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
  106. package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
  107. package/dist/elements/ReactSelect/SingleValue/index.js.map +1 -1
  108. package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
  109. package/dist/elements/ReactSelect/index.js.map +1 -1
  110. package/dist/elements/ReactSelect/types.js.map +1 -1
  111. package/dist/elements/RenderCustomComponent/index.js.map +1 -1
  112. package/dist/elements/RenderTitle/index.js.map +1 -1
  113. package/dist/elements/Save/index.js.map +1 -1
  114. package/dist/elements/SaveDraft/index.js.map +1 -1
  115. package/dist/elements/SearchFilter/index.js.map +1 -1
  116. package/dist/elements/SelectAll/index.js.map +1 -1
  117. package/dist/elements/SelectRow/index.js.map +1 -1
  118. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  119. package/dist/elements/SortColumn/index.js.map +1 -1
  120. package/dist/elements/SortComplex/index.js.map +1 -1
  121. package/dist/elements/Status/index.js.map +1 -1
  122. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  123. package/dist/elements/StepNav/SetStepNav.js.map +1 -1
  124. package/dist/elements/StepNav/index.d.ts +2 -1
  125. package/dist/elements/StepNav/index.d.ts.map +1 -1
  126. package/dist/elements/StepNav/index.js.map +1 -1
  127. package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
  128. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  129. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
  130. package/dist/elements/Table/DefaultCell/fields/Code/index.js.map +1 -1
  131. package/dist/elements/Table/DefaultCell/fields/Date/index.js +5 -1
  132. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  133. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  134. package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
  135. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  136. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  137. package/dist/elements/Table/DefaultCell/fields/Textarea/index.js.map +1 -1
  138. package/dist/elements/Table/DefaultCell/fields/index.js.map +1 -1
  139. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  140. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  141. package/dist/elements/Table/RelationshipProvider/reducer.js.map +1 -1
  142. package/dist/elements/Table/TableCellProvider/index.js.map +1 -1
  143. package/dist/elements/Table/index.js.map +1 -1
  144. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  145. package/dist/elements/TableColumns/columnReducer.js.map +1 -1
  146. package/dist/elements/TableColumns/filterFields.js.map +1 -1
  147. package/dist/elements/TableColumns/getInitialColumns.js.map +1 -1
  148. package/dist/elements/TableColumns/index.js.map +1 -1
  149. package/dist/elements/Thumbnail/index.js.map +1 -1
  150. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  151. package/dist/elements/Tooltip/index.js.map +1 -1
  152. package/dist/elements/Translation/index.js.map +1 -1
  153. package/dist/elements/UnpublishMany/index.js.map +1 -1
  154. package/dist/elements/Upload/index.js.map +1 -1
  155. package/dist/elements/ViewDescription/index.js.map +1 -1
  156. package/dist/elements/ViewDescription/types.js.map +1 -1
  157. package/dist/elements/WhereBuilder/Condition/Date/index.js.map +1 -1
  158. package/dist/elements/WhereBuilder/Condition/Date/types.js.map +1 -1
  159. package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
  160. package/dist/elements/WhereBuilder/Condition/Number/types.js.map +1 -1
  161. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  162. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js.map +1 -1
  163. package/dist/elements/WhereBuilder/Condition/Relationship/types.js.map +1 -1
  164. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  165. package/dist/elements/WhereBuilder/Condition/Select/types.js.map +1 -1
  166. package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
  167. package/dist/elements/WhereBuilder/Condition/Text/types.js.map +1 -1
  168. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  169. package/dist/elements/WhereBuilder/Condition/types.js.map +1 -1
  170. package/dist/elements/WhereBuilder/field-types.js.map +1 -1
  171. package/dist/elements/WhereBuilder/index.js.map +1 -1
  172. package/dist/elements/WhereBuilder/reduceFieldMap.js.map +1 -1
  173. package/dist/elements/WhereBuilder/transformWhereQuery.js.map +1 -1
  174. package/dist/elements/WhereBuilder/types.js.map +1 -1
  175. package/dist/elements/WhereBuilder/validateWhereQuery.js.map +1 -1
  176. package/dist/elements/WindowInfo/index.js.map +1 -1
  177. package/dist/elements/withMergedProps/index.js.map +1 -1
  178. package/dist/exports/elements.js.map +1 -1
  179. package/dist/fields/Array/ArrayRow.js.map +1 -1
  180. package/dist/fields/Array/index.js.map +1 -1
  181. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  182. package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.js.map +1 -1
  183. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  184. package/dist/fields/Blocks/RowActions.js.map +1 -1
  185. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  186. package/dist/fields/Blocks/index.js.map +1 -1
  187. package/dist/fields/Checkbox/Input.js.map +1 -1
  188. package/dist/fields/Checkbox/index.js.map +1 -1
  189. package/dist/fields/Checkbox/types.js.map +1 -1
  190. package/dist/fields/Code/index.js.map +1 -1
  191. package/dist/fields/Collapsible/index.js.map +1 -1
  192. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  193. package/dist/fields/DateTime/index.js.map +1 -1
  194. package/dist/fields/Email/index.js.map +1 -1
  195. package/dist/fields/Group/index.js.map +1 -1
  196. package/dist/fields/Group/provider.js.map +1 -1
  197. package/dist/fields/HiddenInput/index.js.map +1 -1
  198. package/dist/fields/JSON/index.js.map +1 -1
  199. package/dist/fields/Number/index.js.map +1 -1
  200. package/dist/fields/Password/index.js.map +1 -1
  201. package/dist/fields/Point/index.js.map +1 -1
  202. package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
  203. package/dist/fields/RadioGroup/index.js.map +1 -1
  204. package/dist/fields/Relationship/AddNew/index.js.map +1 -1
  205. package/dist/fields/Relationship/AddNew/types.js.map +1 -1
  206. package/dist/fields/Relationship/AddNew/useRelatedCollections.js.map +1 -1
  207. package/dist/fields/Relationship/createRelationMap.js.map +1 -1
  208. package/dist/fields/Relationship/findOptionsByValue.js.map +1 -1
  209. package/dist/fields/Relationship/index.js.map +1 -1
  210. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  211. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  212. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  213. package/dist/fields/Relationship/types.js.map +1 -1
  214. package/dist/fields/RichText/index.js.map +1 -1
  215. package/dist/fields/Row/index.js.map +1 -1
  216. package/dist/fields/Row/provider.js.map +1 -1
  217. package/dist/fields/Row/types.js.map +1 -1
  218. package/dist/fields/Select/index.js.map +1 -1
  219. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  220. package/dist/fields/Tabs/index.js.map +1 -1
  221. package/dist/fields/Tabs/provider.js.map +1 -1
  222. package/dist/fields/Text/Input.js.map +1 -1
  223. package/dist/fields/Text/index.js.map +1 -1
  224. package/dist/fields/Text/types.js.map +1 -1
  225. package/dist/fields/Textarea/Input.js.map +1 -1
  226. package/dist/fields/Textarea/index.js.map +1 -1
  227. package/dist/fields/Textarea/types.js.map +1 -1
  228. package/dist/fields/UI/index.js.map +1 -1
  229. package/dist/fields/Upload/Input.js.map +1 -1
  230. package/dist/fields/Upload/index.js.map +1 -1
  231. package/dist/fields/Upload/types.js.map +1 -1
  232. package/dist/fields/index.js.map +1 -1
  233. package/dist/fields/shared/index.js.map +1 -1
  234. package/dist/forms/FieldDescription/index.js.map +1 -1
  235. package/dist/forms/FieldError/index.js.map +1 -1
  236. package/dist/forms/FieldLabel/index.js.map +1 -1
  237. package/dist/forms/FieldPropsProvider/index.js.map +1 -1
  238. package/dist/forms/Form/context.js.map +1 -1
  239. package/dist/forms/Form/createNestedFieldPath.js.map +1 -1
  240. package/dist/forms/Form/errorMessages.js.map +1 -1
  241. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  242. package/dist/forms/Form/fieldReducer.js +53 -0
  243. package/dist/forms/Form/fieldReducer.js.map +1 -1
  244. package/dist/forms/Form/getDataByPath.js.map +1 -1
  245. package/dist/forms/Form/getSiblingData.js.map +1 -1
  246. package/dist/forms/Form/index.d.ts.map +1 -1
  247. package/dist/forms/Form/index.js +3 -8
  248. package/dist/forms/Form/index.js.map +1 -1
  249. package/dist/forms/Form/initContextState.js.map +1 -1
  250. package/dist/forms/Form/mergeErrorPaths.js.map +1 -1
  251. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  252. package/dist/forms/Form/rows.js.map +1 -1
  253. package/dist/forms/Form/types.d.ts +8 -1
  254. package/dist/forms/Form/types.d.ts.map +1 -1
  255. package/dist/forms/Form/types.js.map +1 -1
  256. package/dist/forms/NullifyField/index.js.map +1 -1
  257. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  258. package/dist/forms/RenderFields/index.js.map +1 -1
  259. package/dist/forms/RenderFields/types.js.map +1 -1
  260. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  261. package/dist/forms/RowLabel/index.js.map +1 -1
  262. package/dist/forms/RowLabel/types.js.map +1 -1
  263. package/dist/forms/Submit/index.js.map +1 -1
  264. package/dist/forms/WatchChildErrors/buildPathSegments.js.map +1 -1
  265. package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js.map +1 -1
  266. package/dist/forms/WatchChildErrors/getNestedFieldState.js.map +1 -1
  267. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  268. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  269. package/dist/forms/buildStateFromSchema/buildStateFromSchema.spec.js.map +1 -1
  270. package/dist/forms/buildStateFromSchema/calculateDefaultValues/index.js.map +1 -1
  271. package/dist/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.js.map +1 -1
  272. package/dist/forms/buildStateFromSchema/calculateDefaultValues/promise.js.map +1 -1
  273. package/dist/forms/buildStateFromSchema/getFilterOptionsQuery.js.map +1 -1
  274. package/dist/forms/buildStateFromSchema/index.js.map +1 -1
  275. package/dist/forms/buildStateFromSchema/iterateFields.js.map +1 -1
  276. package/dist/forms/useField/index.js.map +1 -1
  277. package/dist/forms/useField/types.js.map +1 -1
  278. package/dist/forms/withCondition/WatchCondition.js.map +1 -1
  279. package/dist/forms/withCondition/index.js.map +1 -1
  280. package/dist/graphics/Account/Default/index.js.map +1 -1
  281. package/dist/graphics/Account/Gravatar/index.js.map +1 -1
  282. package/dist/graphics/Account/index.js.map +1 -1
  283. package/dist/graphics/DefaultBlockImage/index.js.map +1 -1
  284. package/dist/graphics/ExternalLink/index.js.map +1 -1
  285. package/dist/graphics/File/index.js.map +1 -1
  286. package/dist/graphics/Icon/index.js.map +1 -1
  287. package/dist/graphics/Logo/index.js.map +1 -1
  288. package/dist/graphics/Search/index.js.map +1 -1
  289. package/dist/hooks/useDebounce.js.map +1 -1
  290. package/dist/hooks/useDebouncedCallback.js.map +1 -1
  291. package/dist/hooks/useDebouncedEffect.js.map +1 -1
  292. package/dist/hooks/useDelay.js.map +1 -1
  293. package/dist/hooks/useDelayedRender.js.map +1 -1
  294. package/dist/hooks/useHotkey.js.map +1 -1
  295. package/dist/hooks/useIntersect.js.map +1 -1
  296. package/dist/hooks/usePayloadAPI.js.map +1 -1
  297. package/dist/hooks/useResize.js.map +1 -1
  298. package/dist/hooks/useThrottledEffect.js.map +1 -1
  299. package/dist/hooks/useUseAsTitle.js.map +1 -1
  300. package/dist/icons/Calendar/index.js.map +1 -1
  301. package/dist/icons/Check/index.js.map +1 -1
  302. package/dist/icons/Chevron/index.js.map +1 -1
  303. package/dist/icons/CloseMenu/index.js.map +1 -1
  304. package/dist/icons/CodeBlock/index.js.map +1 -1
  305. package/dist/icons/Copy/index.js.map +1 -1
  306. package/dist/icons/DragHandle/index.js.map +1 -1
  307. package/dist/icons/Edit/index.js.map +1 -1
  308. package/dist/icons/Line/index.js.map +1 -1
  309. package/dist/icons/Link/index.js.map +1 -1
  310. package/dist/icons/LogOut/index.js.map +1 -1
  311. package/dist/icons/Menu/index.js.map +1 -1
  312. package/dist/icons/MinimizeMaximize/index.js.map +1 -1
  313. package/dist/icons/More/index.js.map +1 -1
  314. package/dist/icons/Plus/index.js.map +1 -1
  315. package/dist/icons/Search/index.js.map +1 -1
  316. package/dist/icons/Swap/index.js.map +1 -1
  317. package/dist/icons/X/index.js.map +1 -1
  318. package/dist/providers/Actions/SetViewActions/index.js.map +1 -1
  319. package/dist/providers/Actions/index.js.map +1 -1
  320. package/dist/providers/Auth/index.js.map +1 -1
  321. package/dist/providers/ClientFunction/index.js.map +1 -1
  322. package/dist/providers/ComponentMap/buildComponentMap/actions.js.map +1 -1
  323. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts +3 -1
  324. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts.map +1 -1
  325. package/dist/providers/ComponentMap/buildComponentMap/collections.js +2 -1
  326. package/dist/providers/ComponentMap/buildComponentMap/collections.js.map +1 -1
  327. package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts +2 -0
  328. package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
  329. package/dist/providers/ComponentMap/buildComponentMap/fields.js +30 -7
  330. package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
  331. package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts +3 -1
  332. package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts.map +1 -1
  333. package/dist/providers/ComponentMap/buildComponentMap/globals.js +2 -1
  334. package/dist/providers/ComponentMap/buildComponentMap/globals.js.map +1 -1
  335. package/dist/providers/ComponentMap/buildComponentMap/index.d.ts +2 -0
  336. package/dist/providers/ComponentMap/buildComponentMap/index.d.ts.map +1 -1
  337. package/dist/providers/ComponentMap/buildComponentMap/index.js +3 -1
  338. package/dist/providers/ComponentMap/buildComponentMap/index.js.map +1 -1
  339. package/dist/providers/ComponentMap/buildComponentMap/types.js.map +1 -1
  340. package/dist/providers/ComponentMap/index.js.map +1 -1
  341. package/dist/providers/Config/index.js.map +1 -1
  342. package/dist/providers/DocumentEvents/index.js.map +1 -1
  343. package/dist/providers/DocumentInfo/index.js.map +1 -1
  344. package/dist/providers/DocumentInfo/types.js.map +1 -1
  345. package/dist/providers/EditDepth/index.js.map +1 -1
  346. package/dist/providers/EntityVisibility/index.js.map +1 -1
  347. package/dist/providers/FieldComponents/index.js.map +1 -1
  348. package/dist/providers/FormQueryParams/index.js.map +1 -1
  349. package/dist/providers/FormQueryParams/types.js.map +1 -1
  350. package/dist/providers/ListInfo/index.js.map +1 -1
  351. package/dist/providers/ListQuery/index.js.map +1 -1
  352. package/dist/providers/Locale/index.js.map +1 -1
  353. package/dist/providers/Operation/index.js.map +1 -1
  354. package/dist/providers/Params/index.js.map +1 -1
  355. package/dist/providers/Preferences/index.js.map +1 -1
  356. package/dist/providers/Root/index.d.ts +4 -3
  357. package/dist/providers/Root/index.d.ts.map +1 -1
  358. package/dist/providers/Root/index.js +3 -2
  359. package/dist/providers/Root/index.js.map +1 -1
  360. package/dist/providers/RouteCache/index.js.map +1 -1
  361. package/dist/providers/SearchParams/index.js.map +1 -1
  362. package/dist/providers/Selection/index.js.map +1 -1
  363. package/dist/providers/Theme/index.js.map +1 -1
  364. package/dist/providers/Translation/index.d.ts +4 -3
  365. package/dist/providers/Translation/index.d.ts.map +1 -1
  366. package/dist/providers/Translation/index.js +20 -6
  367. package/dist/providers/Translation/index.js.map +1 -1
  368. package/dist/templates/Default/NavHamburger/index.js.map +1 -1
  369. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  370. package/dist/templates/Default/index.js.map +1 -1
  371. package/dist/templates/Minimal/index.js.map +1 -1
  372. package/dist/utilities/api.js.map +1 -1
  373. package/dist/utilities/arraysHaveSameStrings.js.map +1 -1
  374. package/dist/utilities/buildComponentMap.js.map +1 -1
  375. package/dist/utilities/canUseDOM.js.map +1 -1
  376. package/dist/utilities/dateLocales.js.map +1 -1
  377. package/dist/utilities/findLocaleFromCode.js.map +1 -1
  378. package/dist/utilities/flattenFieldMap.js.map +1 -1
  379. package/dist/utilities/formatDate.d.ts +13 -2
  380. package/dist/utilities/formatDate.d.ts.map +1 -1
  381. package/dist/utilities/formatDate.js +4 -7
  382. package/dist/utilities/formatDate.js.map +1 -1
  383. package/dist/utilities/formatDocTitle.js +5 -1
  384. package/dist/utilities/formatDocTitle.js.map +1 -1
  385. package/dist/utilities/formatFields.js.map +1 -1
  386. package/dist/utilities/generateFieldID.js.map +1 -1
  387. package/dist/utilities/getFormState.js.map +1 -1
  388. package/dist/utilities/getOffsetTop.js.map +1 -1
  389. package/dist/utilities/getRequestLanguage.js.map +1 -1
  390. package/dist/utilities/getSupportedMonacoLocale.js.map +1 -1
  391. package/dist/utilities/groupNavItems.js.map +1 -1
  392. package/dist/utilities/reduceFieldsToValues.js.map +1 -1
  393. package/dist/utilities/scrollToID.js.map +1 -1
  394. package/dist/utilities/setsAreEqual.js.map +1 -1
  395. package/package.json +4 -4
  396. package/dist/utilities/getDateLocale.d.ts +0 -7
  397. package/dist/utilities/getDateLocale.d.ts.map +0 -1
  398. package/dist/utilities/getDateLocale.js +0 -16
  399. package/dist/utilities/getDateLocale.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/elements/Table/TableCellProvider/index.tsx"],"sourcesContent":["'use client'\nimport type { CellComponentProps, DefaultCellComponentProps } from 'payload/types'\n\nimport React from 'react'\n\nexport type ITableCellContext = {\n cellData: DefaultCellComponentProps['cellData']\n cellProps?: Partial<CellComponentProps>\n columnIndex?: number\n customCellContext: DefaultCellComponentProps['customCellContext']\n richTextComponentMap?: DefaultCellComponentProps['richTextComponentMap']\n rowData: DefaultCellComponentProps['rowData']\n}\n\nconst TableCellContext = React.createContext<ITableCellContext>({} as ITableCellContext)\n\nexport const TableCellProvider: React.FC<{\n cellData?: DefaultCellComponentProps['cellData']\n cellProps?: Partial<CellComponentProps>\n children: React.ReactNode\n columnIndex?: number\n customCellContext?: DefaultCellComponentProps['customCellContext']\n richTextComponentMap?: DefaultCellComponentProps['richTextComponentMap']\n rowData?: DefaultCellComponentProps['rowData']\n}> = (props) => {\n const {\n cellData,\n cellProps,\n children,\n columnIndex,\n customCellContext,\n richTextComponentMap,\n rowData,\n } = props\n\n const contextToInherit = useTableCell()\n\n return (\n <TableCellContext.Provider\n value={{\n cellData,\n cellProps,\n columnIndex,\n customCellContext,\n rowData,\n ...contextToInherit,\n richTextComponentMap,\n }}\n >\n {children}\n </TableCellContext.Provider>\n )\n}\n\nexport const useTableCell = () => {\n const cell = React.useContext(TableCellContext)\n return cell\n}\n"],"names":["React","TableCellContext","createContext","TableCellProvider","props","cellData","cellProps","children","columnIndex","customCellContext","richTextComponentMap","rowData","contextToInherit","useTableCell","Provider","value","cell","useContext"],"mappings":"AAAA;AAGA,OAAOA,WAAW,QAAO;AAWzB,MAAMC,iCAAmBD,MAAME,aAAa,CAAoB,CAAC;AAEjE,OAAO,MAAMC,oBAQR,CAACC;IACJ,MAAM,EACJC,QAAQ,EACRC,SAAS,EACTC,QAAQ,EACRC,WAAW,EACXC,iBAAiB,EACjBC,oBAAoB,EACpBC,OAAO,EACR,GAAGP;IAEJ,MAAMQ,mBAAmBC;IAEzB,qBACE,oBAACZ,iBAAiBa,QAAQ;QACxBC,OAAO;YACLV;YACAC;YACAE;YACAC;YACAE;YACA,GAAGC,gBAAgB;YACnBF;QACF;OAECH;AAGP,EAAC;AAED,OAAO,MAAMM,eAAe;IAC1B,MAAMG,OAAOhB,MAAMiB,UAAU,CAAChB;IAC9B,OAAOe;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../../src/elements/Table/TableCellProvider/index.tsx"],"sourcesContent":["'use client'\nimport type { CellComponentProps, DefaultCellComponentProps } from 'payload/types'\n\nimport React from 'react'\n\nexport type ITableCellContext = {\n cellData: DefaultCellComponentProps['cellData']\n cellProps?: Partial<CellComponentProps>\n columnIndex?: number\n customCellContext: DefaultCellComponentProps['customCellContext']\n richTextComponentMap?: DefaultCellComponentProps['richTextComponentMap']\n rowData: DefaultCellComponentProps['rowData']\n}\n\nconst TableCellContext = React.createContext<ITableCellContext>({} as ITableCellContext)\n\nexport const TableCellProvider: React.FC<{\n cellData?: DefaultCellComponentProps['cellData']\n cellProps?: Partial<CellComponentProps>\n children: React.ReactNode\n columnIndex?: number\n customCellContext?: DefaultCellComponentProps['customCellContext']\n richTextComponentMap?: DefaultCellComponentProps['richTextComponentMap']\n rowData?: DefaultCellComponentProps['rowData']\n}> = (props) => {\n const {\n cellData,\n cellProps,\n children,\n columnIndex,\n customCellContext,\n richTextComponentMap,\n rowData,\n } = props\n\n const contextToInherit = useTableCell()\n\n return (\n <TableCellContext.Provider\n value={{\n cellData,\n cellProps,\n columnIndex,\n customCellContext,\n rowData,\n ...contextToInherit,\n richTextComponentMap,\n }}\n >\n {children}\n </TableCellContext.Provider>\n )\n}\n\nexport const useTableCell = () => {\n const cell = React.useContext(TableCellContext)\n return cell\n}\n"],"names":["React","TableCellContext","createContext","TableCellProvider","props","cellData","cellProps","children","columnIndex","customCellContext","richTextComponentMap","rowData","contextToInherit","useTableCell","Provider","value","cell","useContext"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,OAAOA,WAAW,QAAO;AAWzB,MAAMC,iCAAmBD,MAAME,aAAa,CAAoB,CAAC;AAEjE,OAAO,MAAMC,oBAQR,CAACC;IACJ,MAAM,EACJC,QAAQ,EACRC,SAAS,EACTC,QAAQ,EACRC,WAAW,EACXC,iBAAiB,EACjBC,oBAAoB,EACpBC,OAAO,EACR,GAAGP;IAEJ,MAAMQ,mBAAmBC;IAEzB,qBACE,oBAACZ,iBAAiBa,QAAQ;QACxBC,OAAO;YACLV;YACAC;YACAE;YACAC;YACAE;YACA,GAAGC,gBAAgB;YACnBF;QACF;OAECH;AAGP,EAAC;AAED,OAAO,MAAMM,eAAe;IAC1B,MAAMG,OAAOhB,MAAMiB,UAAU,CAAChB;IAC9B,OAAOe;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Table/index.tsx"],"sourcesContent":["'use client'\nimport type { CellComponentProps, FieldBase } from 'payload/types'\n\nimport React from 'react'\n\nexport * from './TableCellProvider/index.js'\n\nimport type { FieldTypes } from 'payload/config'\n\nimport type { FieldMap } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\nimport { useTableColumns } from '../TableColumns/index.js'\nimport { TableCellProvider } from './TableCellProvider/index.js'\nimport './index.scss'\n\nexport { TableCellProvider }\n\nconst baseClass = 'table'\n\nexport type Column = {\n Label: React.ReactNode\n accessor: string\n active: boolean\n cellProps?: Partial<CellComponentProps>\n components: {\n Cell: React.ReactNode\n Heading: React.ReactNode\n }\n name: FieldBase['name']\n type: keyof FieldTypes\n}\n\nexport type Props = {\n columns?: Column[]\n customCellContext?: Record<string, unknown>\n data: Record<string, unknown>[]\n fieldMap: FieldMap\n}\n\nexport const Table: React.FC<Props> = ({ columns: columnsFromProps, customCellContext, data }) => {\n const { columns: columnsFromContext } = useTableColumns()\n\n const columns = columnsFromProps || columnsFromContext\n\n const activeColumns = columns?.filter((col) => col?.active)\n\n if (!activeColumns || activeColumns.length === 0) {\n return <div>No columns selected</div>\n }\n\n return (\n <div className={baseClass}>\n <table cellPadding=\"0\" cellSpacing=\"0\">\n <thead>\n <tr>\n {activeColumns.map((col, i) => (\n <th id={`heading-${col.accessor}`} key={i}>\n {col.components.Heading}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data &&\n data.map((row, rowIndex) => (\n <tr className={`row-${rowIndex + 1}`} key={rowIndex}>\n {activeColumns.map((col, colIndex) => {\n return (\n <td className={`cell-${col.accessor}`} key={colIndex}>\n <TableCellProvider\n cellData={row[col.accessor]}\n cellProps={col?.cellProps}\n columnIndex={colIndex}\n customCellContext={customCellContext}\n rowData={row}\n >\n {col.components.Cell}\n </TableCellProvider>\n </td>\n )\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )\n}\n"],"names":["React","useTableColumns","TableCellProvider","baseClass","Table","columns","columnsFromProps","customCellContext","data","columnsFromContext","activeColumns","filter","col","active","length","div","className","table","cellPadding","cellSpacing","thead","tr","map","i","th","id","accessor","key","components","Heading","tbody","row","rowIndex","colIndex","td","cellData","cellProps","columnIndex","rowData","Cell"],"mappings":"AAAA;AAGA,OAAOA,WAAW,QAAO;AAEzB,cAAc,+BAA8B;AAM5C,SAASC,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,iBAAiB,QAAQ,+BAA8B;AAGhE,SAASA,iBAAiB,GAAE;AAE5B,MAAMC,YAAY;AAsBlB,OAAO,MAAMC,QAAyB,CAAC,EAAEC,SAASC,gBAAgB,EAAEC,iBAAiB,EAAEC,IAAI,EAAE;IAC3F,MAAM,EAAEH,SAASI,kBAAkB,EAAE,GAAGR;IAExC,MAAMI,UAAUC,oBAAoBG;IAEpC,MAAMC,gBAAgBL,SAASM,OAAO,CAACC,MAAQA,KAAKC;IAEpD,IAAI,CAACH,iBAAiBA,cAAcI,MAAM,KAAK,GAAG;QAChD,qBAAO,oBAACC,aAAI;IACd;IAEA,qBACE,oBAACA;QAAIC,WAAWb;qBACd,oBAACc;QAAMC,aAAY;QAAIC,aAAY;qBACjC,oBAACC,6BACC,oBAACC,YACEX,cAAcY,GAAG,CAAC,CAACV,KAAKW,kBACvB,oBAACC;YAAGC,IAAI,CAAC,QAAQ,EAAEb,IAAIc,QAAQ,CAAC,CAAC;YAAEC,KAAKJ;WACrCX,IAAIgB,UAAU,CAACC,OAAO,oBAK/B,oBAACC,eACEtB,QACCA,KAAKc,GAAG,CAAC,CAACS,KAAKC,yBACb,oBAACX;YAAGL,WAAW,CAAC,IAAI,EAAEgB,WAAW,EAAE,CAAC;YAAEL,KAAKK;WACxCtB,cAAcY,GAAG,CAAC,CAACV,KAAKqB;YACvB,qBACE,oBAACC;gBAAGlB,WAAW,CAAC,KAAK,EAAEJ,IAAIc,QAAQ,CAAC,CAAC;gBAAEC,KAAKM;6BAC1C,oBAAC/B;gBACCiC,UAAUJ,GAAG,CAACnB,IAAIc,QAAQ,CAAC;gBAC3BU,WAAWxB,KAAKwB;gBAChBC,aAAaJ;gBACb1B,mBAAmBA;gBACnB+B,SAASP;eAERnB,IAAIgB,UAAU,CAACW,IAAI;QAI5B;AAOhB,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/Table/index.tsx"],"sourcesContent":["'use client'\nimport type { CellComponentProps, FieldBase } from 'payload/types'\n\nimport React from 'react'\n\nexport * from './TableCellProvider/index.js'\n\nimport type { FieldTypes } from 'payload/config'\n\nimport type { FieldMap } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\nimport { useTableColumns } from '../TableColumns/index.js'\nimport { TableCellProvider } from './TableCellProvider/index.js'\nimport './index.scss'\n\nexport { TableCellProvider }\n\nconst baseClass = 'table'\n\nexport type Column = {\n Label: React.ReactNode\n accessor: string\n active: boolean\n cellProps?: Partial<CellComponentProps>\n components: {\n Cell: React.ReactNode\n Heading: React.ReactNode\n }\n name: FieldBase['name']\n type: keyof FieldTypes\n}\n\nexport type Props = {\n columns?: Column[]\n customCellContext?: Record<string, unknown>\n data: Record<string, unknown>[]\n fieldMap: FieldMap\n}\n\nexport const Table: React.FC<Props> = ({ columns: columnsFromProps, customCellContext, data }) => {\n const { columns: columnsFromContext } = useTableColumns()\n\n const columns = columnsFromProps || columnsFromContext\n\n const activeColumns = columns?.filter((col) => col?.active)\n\n if (!activeColumns || activeColumns.length === 0) {\n return <div>No columns selected</div>\n }\n\n return (\n <div className={baseClass}>\n <table cellPadding=\"0\" cellSpacing=\"0\">\n <thead>\n <tr>\n {activeColumns.map((col, i) => (\n <th id={`heading-${col.accessor}`} key={i}>\n {col.components.Heading}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data &&\n data.map((row, rowIndex) => (\n <tr className={`row-${rowIndex + 1}`} key={rowIndex}>\n {activeColumns.map((col, colIndex) => {\n return (\n <td className={`cell-${col.accessor}`} key={colIndex}>\n <TableCellProvider\n cellData={row[col.accessor]}\n cellProps={col?.cellProps}\n columnIndex={colIndex}\n customCellContext={customCellContext}\n rowData={row}\n >\n {col.components.Cell}\n </TableCellProvider>\n </td>\n )\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )\n}\n"],"names":["React","useTableColumns","TableCellProvider","baseClass","Table","columns","columnsFromProps","customCellContext","data","columnsFromContext","activeColumns","filter","col","active","length","div","className","table","cellPadding","cellSpacing","thead","tr","map","i","th","id","accessor","key","components","Heading","tbody","row","rowIndex","colIndex","td","cellData","cellProps","columnIndex","rowData","Cell"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,OAAOA,WAAW,QAAO;AAEzB,cAAc,+BAA8B;AAM5C,SAASC,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,iBAAiB,QAAQ,+BAA8B;AAGhE,SAASA,iBAAiB,GAAE;AAE5B,MAAMC,YAAY;AAsBlB,OAAO,MAAMC,QAAyB,CAAC,EAAEC,SAASC,gBAAgB,EAAEC,iBAAiB,EAAEC,IAAI,EAAE;IAC3F,MAAM,EAAEH,SAASI,kBAAkB,EAAE,GAAGR;IAExC,MAAMI,UAAUC,oBAAoBG;IAEpC,MAAMC,gBAAgBL,SAASM,OAAO,CAACC,MAAQA,KAAKC;IAEpD,IAAI,CAACH,iBAAiBA,cAAcI,MAAM,KAAK,GAAG;QAChD,qBAAO,oBAACC,aAAI;IACd;IAEA,qBACE,oBAACA;QAAIC,WAAWb;qBACd,oBAACc;QAAMC,aAAY;QAAIC,aAAY;qBACjC,oBAACC,6BACC,oBAACC,YACEX,cAAcY,GAAG,CAAC,CAACV,KAAKW,kBACvB,oBAACC;YAAGC,IAAI,CAAC,QAAQ,EAAEb,IAAIc,QAAQ,CAAC,CAAC;YAAEC,KAAKJ;WACrCX,IAAIgB,UAAU,CAACC,OAAO,oBAK/B,oBAACC,eACEtB,QACCA,KAAKc,GAAG,CAAC,CAACS,KAAKC,yBACb,oBAACX;YAAGL,WAAW,CAAC,IAAI,EAAEgB,WAAW,EAAE,CAAC;YAAEL,KAAKK;WACxCtB,cAAcY,GAAG,CAAC,CAACV,KAAKqB;YACvB,qBACE,oBAACC;gBAAGlB,WAAW,CAAC,KAAK,EAAEJ,IAAIc,QAAQ,CAAC,CAAC;gBAAEC,KAAKM;6BAC1C,oBAAC/B;gBACCiC,UAAUJ,GAAG,CAACnB,IAAIc,QAAQ,CAAC;gBAC3BU,WAAWxB,KAAKwB;gBAChBC,aAAaJ;gBACb1B,mBAAmBA;gBACnB+B,SAASP;eAERnB,IAAIgB,UAAU,CAACW,IAAI;QAI5B;AAOhB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/TableColumns/buildColumnState.tsx"],"sourcesContent":["import { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport { type CellComponentProps, type SanitizedCollectionConfig } from 'payload/types'\nimport React from 'react'\n\nimport type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js'\nimport type { ColumnPreferences } from '../../providers/ListInfo/index.js'\nimport type { Column } from '../Table/index.js'\n\nimport { flattenFieldMap } from '../../utilities/flattenFieldMap.js'\nimport { SelectAll } from '../SelectAll/index.js'\nimport { SelectRow } from '../SelectRow/index.js'\nimport { SortColumn } from '../SortColumn/index.js'\nimport { DefaultCell } from '../Table/DefaultCell/index.js'\n\nconst fieldIsPresentationalOnly = (field: MappedField): boolean => field.type === 'ui'\n\ntype Args = {\n cellProps: Partial<CellComponentProps>[]\n columnPreferences: ColumnPreferences\n columns?: ColumnPreferences\n enableRowSelections: boolean\n fieldMap: FieldMap\n useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\nexport const buildColumnState = (args: Args): Column[] => {\n const { cellProps, columnPreferences, columns, enableRowSelections, fieldMap, useAsTitle } = args\n\n let sortedFieldMap = flattenFieldMap(fieldMap)\n\n // place the `ID` field first, if it exists\n // do the same for the `useAsTitle` field with precedence over the `ID` field\n // then sort the rest of the fields based on the `defaultColumns` or `columnPreferences`\n const idFieldIndex = sortedFieldMap.findIndex((field) => field.name === 'id')\n\n if (idFieldIndex > -1) {\n const idField = sortedFieldMap.splice(idFieldIndex, 1)[0]\n sortedFieldMap.unshift(idField)\n }\n\n const useAsTitleFieldIndex = useAsTitle\n ? sortedFieldMap.findIndex((field) => field.name === useAsTitle)\n : -1\n\n if (useAsTitleFieldIndex > -1) {\n const useAsTitleField = sortedFieldMap.splice(useAsTitleFieldIndex, 1)[0]\n sortedFieldMap.unshift(useAsTitleField)\n }\n\n const sortTo = columnPreferences || columns\n\n if (sortTo) {\n // sort the fields to the order of `defaultColumns` or `columnPreferences`\n sortedFieldMap = sortedFieldMap.sort((a, b) => {\n const aIndex = sortTo.findIndex((column) => 'name' in a && column.accessor === a.name)\n const bIndex = sortTo.findIndex((column) => 'name' in b && column.accessor === b.name)\n if (aIndex === -1 && bIndex === -1) return 0\n if (aIndex === -1) return 1\n if (bIndex === -1) return -1\n return aIndex - bIndex\n })\n }\n\n const activeColumnsIndices = []\n\n const sorted = sortedFieldMap.reduce((acc, field, index) => {\n const columnPreference = columnPreferences?.find(\n (preference) => 'name' in field && preference.accessor === field.name,\n )\n\n let active = false\n\n if (columnPreference) {\n active = columnPreference.active\n } else if (columns && Array.isArray(columns) && columns.length > 0) {\n active = columns.find((column) => column.accessor === field.name)?.active\n } else if (activeColumnsIndices.length < 4) {\n active = true\n }\n\n if (active && !activeColumnsIndices.includes(index)) {\n activeColumnsIndices.push(index)\n }\n\n const isFirstActiveColumn = activeColumnsIndices[0] === index\n\n const name = 'name' in field ? field.name : undefined\n\n const Cell =\n field.CustomCell !== undefined ? (\n field.CustomCell\n ) : (\n <DefaultCell {...field.cellComponentProps} />\n )\n\n const CustomLabelToRender =\n field &&\n 'fieldComponentProps' in field &&\n 'CustomLabel' in field.fieldComponentProps &&\n field.fieldComponentProps.CustomLabel !== undefined\n ? field.fieldComponentProps.CustomLabel\n : undefined\n\n const Label = (\n <FieldLabel\n CustomLabel={CustomLabelToRender}\n {...field.fieldComponentProps?.labelProps}\n unstyled\n />\n )\n\n const Heading = (\n <SortColumn\n Label={Label}\n disable={\n ('disableSort' in field && Boolean(field.disableSort)) ||\n fieldIsPresentationalOnly(field) ||\n undefined\n }\n // eslint-disable-next-line react/jsx-no-duplicate-props\n label={\n 'fieldComponentProps' in field && 'label' in field.fieldComponentProps\n ? field.fieldComponentProps.label\n : undefined\n }\n name={'name' in field ? field.name : undefined}\n />\n )\n\n if (field) {\n const column: Column = {\n name,\n type: field.type,\n Label,\n accessor: name,\n active,\n cellProps: {\n ...cellProps?.[index],\n link: isFirstActiveColumn,\n relationTo:\n field.type === 'relationship' && 'relationTo' in field.fieldComponentProps\n ? field.fieldComponentProps.relationTo\n : undefined,\n },\n components: {\n Cell,\n Heading,\n },\n }\n\n acc.push(column)\n }\n\n return acc\n }, [])\n\n if (enableRowSelections) {\n sorted.unshift({\n name: '',\n accessor: '_select',\n active: true,\n components: {\n Cell: <SelectRow />,\n Heading: <SelectAll />,\n },\n label: null,\n })\n }\n\n return sorted\n}\n"],"names":["FieldLabel","React","flattenFieldMap","SelectAll","SelectRow","SortColumn","DefaultCell","fieldIsPresentationalOnly","field","type","buildColumnState","args","cellProps","columnPreferences","columns","enableRowSelections","fieldMap","useAsTitle","sortedFieldMap","idFieldIndex","findIndex","name","idField","splice","unshift","useAsTitleFieldIndex","useAsTitleField","sortTo","sort","a","b","aIndex","column","accessor","bIndex","activeColumnsIndices","sorted","reduce","acc","index","columnPreference","find","preference","active","Array","isArray","length","includes","push","isFirstActiveColumn","undefined","Cell","CustomCell","cellComponentProps","CustomLabelToRender","fieldComponentProps","CustomLabel","Label","labelProps","unstyled","Heading","disable","Boolean","disableSort","label","link","relationTo","components"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/TableColumns/buildColumnState.tsx"],"sourcesContent":["import { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport { type CellComponentProps, type SanitizedCollectionConfig } from 'payload/types'\nimport React from 'react'\n\nimport type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js'\nimport type { ColumnPreferences } from '../../providers/ListInfo/index.js'\nimport type { Column } from '../Table/index.js'\n\nimport { flattenFieldMap } from '../../utilities/flattenFieldMap.js'\nimport { SelectAll } from '../SelectAll/index.js'\nimport { SelectRow } from '../SelectRow/index.js'\nimport { SortColumn } from '../SortColumn/index.js'\nimport { DefaultCell } from '../Table/DefaultCell/index.js'\n\nconst fieldIsPresentationalOnly = (field: MappedField): boolean => field.type === 'ui'\n\ntype Args = {\n cellProps: Partial<CellComponentProps>[]\n columnPreferences: ColumnPreferences\n columns?: ColumnPreferences\n enableRowSelections: boolean\n fieldMap: FieldMap\n useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\nexport const buildColumnState = (args: Args): Column[] => {\n const { cellProps, columnPreferences, columns, enableRowSelections, fieldMap, useAsTitle } = args\n\n let sortedFieldMap = flattenFieldMap(fieldMap)\n\n // place the `ID` field first, if it exists\n // do the same for the `useAsTitle` field with precedence over the `ID` field\n // then sort the rest of the fields based on the `defaultColumns` or `columnPreferences`\n const idFieldIndex = sortedFieldMap.findIndex((field) => field.name === 'id')\n\n if (idFieldIndex > -1) {\n const idField = sortedFieldMap.splice(idFieldIndex, 1)[0]\n sortedFieldMap.unshift(idField)\n }\n\n const useAsTitleFieldIndex = useAsTitle\n ? sortedFieldMap.findIndex((field) => field.name === useAsTitle)\n : -1\n\n if (useAsTitleFieldIndex > -1) {\n const useAsTitleField = sortedFieldMap.splice(useAsTitleFieldIndex, 1)[0]\n sortedFieldMap.unshift(useAsTitleField)\n }\n\n const sortTo = columnPreferences || columns\n\n if (sortTo) {\n // sort the fields to the order of `defaultColumns` or `columnPreferences`\n sortedFieldMap = sortedFieldMap.sort((a, b) => {\n const aIndex = sortTo.findIndex((column) => 'name' in a && column.accessor === a.name)\n const bIndex = sortTo.findIndex((column) => 'name' in b && column.accessor === b.name)\n if (aIndex === -1 && bIndex === -1) return 0\n if (aIndex === -1) return 1\n if (bIndex === -1) return -1\n return aIndex - bIndex\n })\n }\n\n const activeColumnsIndices = []\n\n const sorted = sortedFieldMap.reduce((acc, field, index) => {\n const columnPreference = columnPreferences?.find(\n (preference) => 'name' in field && preference.accessor === field.name,\n )\n\n let active = false\n\n if (columnPreference) {\n active = columnPreference.active\n } else if (columns && Array.isArray(columns) && columns.length > 0) {\n active = columns.find((column) => column.accessor === field.name)?.active\n } else if (activeColumnsIndices.length < 4) {\n active = true\n }\n\n if (active && !activeColumnsIndices.includes(index)) {\n activeColumnsIndices.push(index)\n }\n\n const isFirstActiveColumn = activeColumnsIndices[0] === index\n\n const name = 'name' in field ? field.name : undefined\n\n const Cell =\n field.CustomCell !== undefined ? (\n field.CustomCell\n ) : (\n <DefaultCell {...field.cellComponentProps} />\n )\n\n const CustomLabelToRender =\n field &&\n 'fieldComponentProps' in field &&\n 'CustomLabel' in field.fieldComponentProps &&\n field.fieldComponentProps.CustomLabel !== undefined\n ? field.fieldComponentProps.CustomLabel\n : undefined\n\n const Label = (\n <FieldLabel\n CustomLabel={CustomLabelToRender}\n {...field.fieldComponentProps?.labelProps}\n unstyled\n />\n )\n\n const Heading = (\n <SortColumn\n Label={Label}\n disable={\n ('disableSort' in field && Boolean(field.disableSort)) ||\n fieldIsPresentationalOnly(field) ||\n undefined\n }\n // eslint-disable-next-line react/jsx-no-duplicate-props\n label={\n 'fieldComponentProps' in field && 'label' in field.fieldComponentProps\n ? field.fieldComponentProps.label\n : undefined\n }\n name={'name' in field ? field.name : undefined}\n />\n )\n\n if (field) {\n const column: Column = {\n name,\n type: field.type,\n Label,\n accessor: name,\n active,\n cellProps: {\n ...cellProps?.[index],\n link: isFirstActiveColumn,\n relationTo:\n field.type === 'relationship' && 'relationTo' in field.fieldComponentProps\n ? field.fieldComponentProps.relationTo\n : undefined,\n },\n components: {\n Cell,\n Heading,\n },\n }\n\n acc.push(column)\n }\n\n return acc\n }, [])\n\n if (enableRowSelections) {\n sorted.unshift({\n name: '',\n accessor: '_select',\n active: true,\n components: {\n Cell: <SelectRow />,\n Heading: <SelectAll />,\n },\n label: null,\n })\n }\n\n return sorted\n}\n"],"names":["FieldLabel","React","flattenFieldMap","SelectAll","SelectRow","SortColumn","DefaultCell","fieldIsPresentationalOnly","field","type","buildColumnState","args","cellProps","columnPreferences","columns","enableRowSelections","fieldMap","useAsTitle","sortedFieldMap","idFieldIndex","findIndex","name","idField","splice","unshift","useAsTitleFieldIndex","useAsTitleField","sortTo","sort","a","b","aIndex","column","accessor","bIndex","activeColumnsIndices","sorted","reduce","acc","index","columnPreference","find","preference","active","Array","isArray","length","includes","push","isFirstActiveColumn","undefined","Cell","CustomCell","cellComponentProps","CustomLabelToRender","fieldComponentProps","CustomLabel","Label","labelProps","unstyled","Heading","disable","Boolean","disableSort","label","link","relationTo","components"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/TableColumns/columnReducer.ts"],"sourcesContent":["import type { Column } from '../Table/index.js'\n\ntype TOGGLE = {\n payload: {\n column: string\n }\n type: 'toggle'\n}\n\ntype SET = {\n payload: {\n columns: Column[]\n }\n type: 'set'\n}\n\ntype MOVE = {\n payload: {\n fromIndex: number\n toIndex: number\n }\n type: 'move'\n}\n\nexport type Action = MOVE | SET | TOGGLE\n\nexport const columnReducer = (state: Column[], action: Action): Column[] => {\n let newState = [...state]\n\n switch (action.type) {\n case 'toggle': {\n const { column } = action.payload\n\n const withToggledColumn = state.map((col) => {\n if (col?.name === column) {\n return {\n ...col,\n active: !col.active,\n }\n }\n\n return col\n })\n\n newState = withToggledColumn\n break\n }\n case 'move': {\n const { fromIndex, toIndex } = action.payload\n const withMovedColumn = [...state]\n const [columnToMove] = withMovedColumn.splice(fromIndex, 1)\n withMovedColumn.splice(toIndex, 0, columnToMove)\n newState = withMovedColumn\n break\n }\n case 'set': {\n const { columns } = action.payload\n newState = columns\n break\n }\n default:\n break\n }\n\n const firstActiveColumnIndex = newState.findIndex((column, index) => {\n if (column.active && column.accessor !== '_select') {\n return index\n }\n })\n\n const withFirstLink = newState.map((column, index) => {\n const isFirstActiveColumn = column.active && firstActiveColumnIndex === index\n\n return {\n ...column,\n cellProps: {\n ...column.cellProps,\n link: isFirstActiveColumn,\n },\n }\n }, [])\n\n return withFirstLink\n}\n"],"names":["columnReducer","state","action","newState","type","column","payload","withToggledColumn","map","col","name","active","fromIndex","toIndex","withMovedColumn","columnToMove","splice","columns","firstActiveColumnIndex","findIndex","index","accessor","withFirstLink","isFirstActiveColumn","cellProps","link"],"mappings":"AA0BA,OAAO,MAAMA,gBAAgB,CAACC,OAAiBC;IAC7C,IAAIC,WAAW;WAAIF;KAAM;IAEzB,OAAQC,OAAOE,IAAI;QACjB,KAAK;YAAU;gBACb,MAAM,EAAEC,MAAM,EAAE,GAAGH,OAAOI,OAAO;gBAEjC,MAAMC,oBAAoBN,MAAMO,GAAG,CAAC,CAACC;oBACnC,IAAIA,KAAKC,SAASL,QAAQ;wBACxB,OAAO;4BACL,GAAGI,GAAG;4BACNE,QAAQ,CAACF,IAAIE,MAAM;wBACrB;oBACF;oBAEA,OAAOF;gBACT;gBAEAN,WAAWI;gBACX;YACF;QACA,KAAK;YAAQ;gBACX,MAAM,EAAEK,SAAS,EAAEC,OAAO,EAAE,GAAGX,OAAOI,OAAO;gBAC7C,MAAMQ,kBAAkB;uBAAIb;iBAAM;gBAClC,MAAM,CAACc,aAAa,GAAGD,gBAAgBE,MAAM,CAACJ,WAAW;gBACzDE,gBAAgBE,MAAM,CAACH,SAAS,GAAGE;gBACnCZ,WAAWW;gBACX;YACF;QACA,KAAK;YAAO;gBACV,MAAM,EAAEG,OAAO,EAAE,GAAGf,OAAOI,OAAO;gBAClCH,WAAWc;gBACX;YACF;QACA;YACE;IACJ;IAEA,MAAMC,yBAAyBf,SAASgB,SAAS,CAAC,CAACd,QAAQe;QACzD,IAAIf,OAAOM,MAAM,IAAIN,OAAOgB,QAAQ,KAAK,WAAW;YAClD,OAAOD;QACT;IACF;IAEA,MAAME,gBAAgBnB,SAASK,GAAG,CAAC,CAACH,QAAQe;QAC1C,MAAMG,sBAAsBlB,OAAOM,MAAM,IAAIO,2BAA2BE;QAExE,OAAO;YACL,GAAGf,MAAM;YACTmB,WAAW;gBACT,GAAGnB,OAAOmB,SAAS;gBACnBC,MAAMF;YACR;QACF;IACF,GAAG,EAAE;IAEL,OAAOD;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/TableColumns/columnReducer.ts"],"sourcesContent":["import type { Column } from '../Table/index.js'\n\ntype TOGGLE = {\n payload: {\n column: string\n }\n type: 'toggle'\n}\n\ntype SET = {\n payload: {\n columns: Column[]\n }\n type: 'set'\n}\n\ntype MOVE = {\n payload: {\n fromIndex: number\n toIndex: number\n }\n type: 'move'\n}\n\nexport type Action = MOVE | SET | TOGGLE\n\nexport const columnReducer = (state: Column[], action: Action): Column[] => {\n let newState = [...state]\n\n switch (action.type) {\n case 'toggle': {\n const { column } = action.payload\n\n const withToggledColumn = state.map((col) => {\n if (col?.name === column) {\n return {\n ...col,\n active: !col.active,\n }\n }\n\n return col\n })\n\n newState = withToggledColumn\n break\n }\n case 'move': {\n const { fromIndex, toIndex } = action.payload\n const withMovedColumn = [...state]\n const [columnToMove] = withMovedColumn.splice(fromIndex, 1)\n withMovedColumn.splice(toIndex, 0, columnToMove)\n newState = withMovedColumn\n break\n }\n case 'set': {\n const { columns } = action.payload\n newState = columns\n break\n }\n default:\n break\n }\n\n const firstActiveColumnIndex = newState.findIndex((column, index) => {\n if (column.active && column.accessor !== '_select') {\n return index\n }\n })\n\n const withFirstLink = newState.map((column, index) => {\n const isFirstActiveColumn = column.active && firstActiveColumnIndex === index\n\n return {\n ...column,\n cellProps: {\n ...column.cellProps,\n link: isFirstActiveColumn,\n },\n }\n }, [])\n\n return withFirstLink\n}\n"],"names":["columnReducer","state","action","newState","type","column","payload","withToggledColumn","map","col","name","active","fromIndex","toIndex","withMovedColumn","columnToMove","splice","columns","firstActiveColumnIndex","findIndex","index","accessor","withFirstLink","isFirstActiveColumn","cellProps","link"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AA0BA,OAAO,MAAMA,gBAAgB,CAACC,OAAiBC;IAC7C,IAAIC,WAAW;WAAIF;KAAM;IAEzB,OAAQC,OAAOE,IAAI;QACjB,KAAK;YAAU;gBACb,MAAM,EAAEC,MAAM,EAAE,GAAGH,OAAOI,OAAO;gBAEjC,MAAMC,oBAAoBN,MAAMO,GAAG,CAAC,CAACC;oBACnC,IAAIA,KAAKC,SAASL,QAAQ;wBACxB,OAAO;4BACL,GAAGI,GAAG;4BACNE,QAAQ,CAACF,IAAIE,MAAM;wBACrB;oBACF;oBAEA,OAAOF;gBACT;gBAEAN,WAAWI;gBACX;YACF;QACA,KAAK;YAAQ;gBACX,MAAM,EAAEK,SAAS,EAAEC,OAAO,EAAE,GAAGX,OAAOI,OAAO;gBAC7C,MAAMQ,kBAAkB;uBAAIb;iBAAM;gBAClC,MAAM,CAACc,aAAa,GAAGD,gBAAgBE,MAAM,CAACJ,WAAW;gBACzDE,gBAAgBE,MAAM,CAACH,SAAS,GAAGE;gBACnCZ,WAAWW;gBACX;YACF;QACA,KAAK;YAAO;gBACV,MAAM,EAAEG,OAAO,EAAE,GAAGf,OAAOI,OAAO;gBAClCH,WAAWc;gBACX;YACF;QACA;YACE;IACJ;IAEA,MAAMC,yBAAyBf,SAASgB,SAAS,CAAC,CAACd,QAAQe;QACzD,IAAIf,OAAOM,MAAM,IAAIN,OAAOgB,QAAQ,KAAK,WAAW;YAClD,OAAOD;QACT;IACF;IAEA,MAAME,gBAAgBnB,SAASK,GAAG,CAAC,CAACH,QAAQe;QAC1C,MAAMG,sBAAsBlB,OAAOM,MAAM,IAAIO,2BAA2BE;QAExE,OAAO;YACL,GAAGf,MAAM;YACTmB,WAAW;gBACT,GAAGnB,OAAOmB,SAAS;gBACnBC,MAAMF;YACR;QACF;IACF,GAAG,EAAE;IAEL,OAAOD;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/TableColumns/filterFields.tsx"],"sourcesContent":["import type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\n// 1. Skips fields that are hidden, disabled, or presentational-only (i.e. `ui` fields)\n// 2. Maps through top-level `tabs` fields and filters out the same\nexport const filterFields = (fieldMap: FieldMap): FieldMap => {\n const shouldSkipField = (field: MappedField): boolean =>\n field.type !== 'ui' && field.disabled === true\n\n const fields: FieldMap = fieldMap.reduce((formatted, field) => {\n if (shouldSkipField(field)) {\n return formatted\n }\n\n const formattedField: MappedField =\n field.type === 'tabs' && 'tabs' in field.fieldComponentProps\n ? {\n ...field,\n fieldComponentProps: {\n ...field.fieldComponentProps,\n tabs: field.fieldComponentProps.tabs.map((tab) => ({\n ...tab,\n fieldMap: tab.fieldMap.filter((tabField) => !shouldSkipField(tabField)),\n })),\n },\n }\n : field\n\n return [...formatted, formattedField]\n }, [])\n\n return fields\n}\n"],"names":["filterFields","fieldMap","shouldSkipField","field","type","disabled","fields","reduce","formatted","formattedField","fieldComponentProps","tabs","map","tab","filter","tabField"],"mappings":"AAEA,uFAAuF;AACvF,mEAAmE;AACnE,OAAO,MAAMA,eAAe,CAACC;IAC3B,MAAMC,kBAAkB,CAACC,QACvBA,MAAMC,IAAI,KAAK,QAAQD,MAAME,QAAQ,KAAK;IAE5C,MAAMC,SAAmBL,SAASM,MAAM,CAAC,CAACC,WAAWL;QACnD,IAAID,gBAAgBC,QAAQ;YAC1B,OAAOK;QACT;QAEA,MAAMC,iBACJN,MAAMC,IAAI,KAAK,UAAU,UAAUD,MAAMO,mBAAmB,GACxD;YACE,GAAGP,KAAK;YACRO,qBAAqB;gBACnB,GAAGP,MAAMO,mBAAmB;gBAC5BC,MAAMR,MAAMO,mBAAmB,CAACC,IAAI,CAACC,GAAG,CAAC,CAACC,MAAS,CAAA;wBACjD,GAAGA,GAAG;wBACNZ,UAAUY,IAAIZ,QAAQ,CAACa,MAAM,CAAC,CAACC,WAAa,CAACb,gBAAgBa;oBAC/D,CAAA;YACF;QACF,IACAZ;QAEN,OAAO;eAAIK;YAAWC;SAAe;IACvC,GAAG,EAAE;IAEL,OAAOH;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/TableColumns/filterFields.tsx"],"sourcesContent":["import type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\n// 1. Skips fields that are hidden, disabled, or presentational-only (i.e. `ui` fields)\n// 2. Maps through top-level `tabs` fields and filters out the same\nexport const filterFields = (fieldMap: FieldMap): FieldMap => {\n const shouldSkipField = (field: MappedField): boolean =>\n field.type !== 'ui' && field.disabled === true\n\n const fields: FieldMap = fieldMap.reduce((formatted, field) => {\n if (shouldSkipField(field)) {\n return formatted\n }\n\n const formattedField: MappedField =\n field.type === 'tabs' && 'tabs' in field.fieldComponentProps\n ? {\n ...field,\n fieldComponentProps: {\n ...field.fieldComponentProps,\n tabs: field.fieldComponentProps.tabs.map((tab) => ({\n ...tab,\n fieldMap: tab.fieldMap.filter((tabField) => !shouldSkipField(tabField)),\n })),\n },\n }\n : field\n\n return [...formatted, formattedField]\n }, [])\n\n return fields\n}\n"],"names":["filterFields","fieldMap","shouldSkipField","field","type","disabled","fields","reduce","formatted","formattedField","fieldComponentProps","tabs","map","tab","filter","tabField"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,uFAAuF;AACvF,mEAAmE;AACnE,OAAO,MAAMA,eAAe,CAACC;IAC3B,MAAMC,kBAAkB,CAACC,QACvBA,MAAMC,IAAI,KAAK,QAAQD,MAAME,QAAQ,KAAK;IAE5C,MAAMC,SAAmBL,SAASM,MAAM,CAAC,CAACC,WAAWL;QACnD,IAAID,gBAAgBC,QAAQ;YAC1B,OAAOK;QACT;QAEA,MAAMC,iBACJN,MAAMC,IAAI,KAAK,UAAU,UAAUD,MAAMO,mBAAmB,GACxD;YACE,GAAGP,KAAK;YACRO,qBAAqB;gBACnB,GAAGP,MAAMO,mBAAmB;gBAC5BC,MAAMR,MAAMO,mBAAmB,CAACC,IAAI,CAACC,GAAG,CAAC,CAACC,MAAS,CAAA;wBACjD,GAAGA,GAAG;wBACNZ,UAAUY,IAAIZ,QAAQ,CAACa,MAAM,CAAC,CAACC,WAAa,CAACb,gBAAgBa;oBAC/D,CAAA;YACF;QACF,IACAZ;QAEN,OAAO;eAAIK;YAAWC;SAAe;IACvC,GAAG,EAAE;IAEL,OAAOH;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/TableColumns/getInitialColumns.ts"],"sourcesContent":["import type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js'\nimport type { ColumnPreferences } from '../../providers/ListInfo/index.js'\n\nexport function fieldAffectsData(field: MappedField): boolean {\n return 'name' in field && field.type !== 'ui'\n}\n\nconst getRemainingColumns = (fieldMap: FieldMap, useAsTitle: string): ColumnPreferences =>\n fieldMap.reduce((remaining, field) => {\n if (fieldAffectsData(field) && field.name === useAsTitle) {\n return remaining\n }\n\n if (!fieldAffectsData(field) && 'fieldMap' in field.fieldComponentProps) {\n return [...remaining, ...getRemainingColumns(field.fieldComponentProps.fieldMap, useAsTitle)]\n }\n\n if (field.type === 'tabs' && 'tabs' in field.fieldComponentProps) {\n return [\n ...remaining,\n ...field.fieldComponentProps.tabs.reduce(\n (tabFieldColumns, tab) => [\n ...tabFieldColumns,\n ...('name' in tab ? [tab.name] : getRemainingColumns(tab.fieldMap, useAsTitle)),\n ],\n [],\n ),\n ]\n }\n\n return [...remaining, field.name]\n }, [])\n\nexport const getInitialColumns = (\n fieldMap: FieldMap,\n useAsTitle: string,\n defaultColumns: string[],\n): ColumnPreferences => {\n let initialColumns = []\n\n if (Array.isArray(defaultColumns) && defaultColumns.length >= 1) {\n initialColumns = defaultColumns\n } else {\n if (useAsTitle) {\n initialColumns.push(useAsTitle)\n }\n\n const remainingColumns = getRemainingColumns(fieldMap, useAsTitle)\n\n initialColumns = initialColumns.concat(remainingColumns)\n initialColumns = initialColumns.slice(0, 4)\n }\n\n return initialColumns.map((column) => ({\n accessor: column,\n active: true,\n }))\n}\n"],"names":["fieldAffectsData","field","type","getRemainingColumns","fieldMap","useAsTitle","reduce","remaining","name","fieldComponentProps","tabs","tabFieldColumns","tab","getInitialColumns","defaultColumns","initialColumns","Array","isArray","length","push","remainingColumns","concat","slice","map","column","accessor","active"],"mappings":"AAGA,OAAO,SAASA,iBAAiBC,KAAkB;IACjD,OAAO,UAAUA,SAASA,MAAMC,IAAI,KAAK;AAC3C;AAEA,MAAMC,sBAAsB,CAACC,UAAoBC,aAC/CD,SAASE,MAAM,CAAC,CAACC,WAAWN;QAC1B,IAAID,iBAAiBC,UAAUA,MAAMO,IAAI,KAAKH,YAAY;YACxD,OAAOE;QACT;QAEA,IAAI,CAACP,iBAAiBC,UAAU,cAAcA,MAAMQ,mBAAmB,EAAE;YACvE,OAAO;mBAAIF;mBAAcJ,oBAAoBF,MAAMQ,mBAAmB,CAACL,QAAQ,EAAEC;aAAY;QAC/F;QAEA,IAAIJ,MAAMC,IAAI,KAAK,UAAU,UAAUD,MAAMQ,mBAAmB,EAAE;YAChE,OAAO;mBACFF;mBACAN,MAAMQ,mBAAmB,CAACC,IAAI,CAACJ,MAAM,CACtC,CAACK,iBAAiBC,MAAQ;2BACrBD;2BACC,UAAUC,MAAM;4BAACA,IAAIJ,IAAI;yBAAC,GAAGL,oBAAoBS,IAAIR,QAAQ,EAAEC;qBACpE,EACD,EAAE;aAEL;QACH;QAEA,OAAO;eAAIE;YAAWN,MAAMO,IAAI;SAAC;IACnC,GAAG,EAAE;AAEP,OAAO,MAAMK,oBAAoB,CAC/BT,UACAC,YACAS;IAEA,IAAIC,iBAAiB,EAAE;IAEvB,IAAIC,MAAMC,OAAO,CAACH,mBAAmBA,eAAeI,MAAM,IAAI,GAAG;QAC/DH,iBAAiBD;IACnB,OAAO;QACL,IAAIT,YAAY;YACdU,eAAeI,IAAI,CAACd;QACtB;QAEA,MAAMe,mBAAmBjB,oBAAoBC,UAAUC;QAEvDU,iBAAiBA,eAAeM,MAAM,CAACD;QACvCL,iBAAiBA,eAAeO,KAAK,CAAC,GAAG;IAC3C;IAEA,OAAOP,eAAeQ,GAAG,CAAC,CAACC,SAAY,CAAA;YACrCC,UAAUD;YACVE,QAAQ;QACV,CAAA;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/TableColumns/getInitialColumns.ts"],"sourcesContent":["import type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js'\nimport type { ColumnPreferences } from '../../providers/ListInfo/index.js'\n\nexport function fieldAffectsData(field: MappedField): boolean {\n return 'name' in field && field.type !== 'ui'\n}\n\nconst getRemainingColumns = (fieldMap: FieldMap, useAsTitle: string): ColumnPreferences =>\n fieldMap.reduce((remaining, field) => {\n if (fieldAffectsData(field) && field.name === useAsTitle) {\n return remaining\n }\n\n if (!fieldAffectsData(field) && 'fieldMap' in field.fieldComponentProps) {\n return [...remaining, ...getRemainingColumns(field.fieldComponentProps.fieldMap, useAsTitle)]\n }\n\n if (field.type === 'tabs' && 'tabs' in field.fieldComponentProps) {\n return [\n ...remaining,\n ...field.fieldComponentProps.tabs.reduce(\n (tabFieldColumns, tab) => [\n ...tabFieldColumns,\n ...('name' in tab ? [tab.name] : getRemainingColumns(tab.fieldMap, useAsTitle)),\n ],\n [],\n ),\n ]\n }\n\n return [...remaining, field.name]\n }, [])\n\nexport const getInitialColumns = (\n fieldMap: FieldMap,\n useAsTitle: string,\n defaultColumns: string[],\n): ColumnPreferences => {\n let initialColumns = []\n\n if (Array.isArray(defaultColumns) && defaultColumns.length >= 1) {\n initialColumns = defaultColumns\n } else {\n if (useAsTitle) {\n initialColumns.push(useAsTitle)\n }\n\n const remainingColumns = getRemainingColumns(fieldMap, useAsTitle)\n\n initialColumns = initialColumns.concat(remainingColumns)\n initialColumns = initialColumns.slice(0, 4)\n }\n\n return initialColumns.map((column) => ({\n accessor: column,\n active: true,\n }))\n}\n"],"names":["fieldAffectsData","field","type","getRemainingColumns","fieldMap","useAsTitle","reduce","remaining","name","fieldComponentProps","tabs","tabFieldColumns","tab","getInitialColumns","defaultColumns","initialColumns","Array","isArray","length","push","remainingColumns","concat","slice","map","column","accessor","active"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAGA,OAAO,SAASA,iBAAiBC,KAAkB;IACjD,OAAO,UAAUA,SAASA,MAAMC,IAAI,KAAK;AAC3C;AAEA,MAAMC,sBAAsB,CAACC,UAAoBC,aAC/CD,SAASE,MAAM,CAAC,CAACC,WAAWN;QAC1B,IAAID,iBAAiBC,UAAUA,MAAMO,IAAI,KAAKH,YAAY;YACxD,OAAOE;QACT;QAEA,IAAI,CAACP,iBAAiBC,UAAU,cAAcA,MAAMQ,mBAAmB,EAAE;YACvE,OAAO;mBAAIF;mBAAcJ,oBAAoBF,MAAMQ,mBAAmB,CAACL,QAAQ,EAAEC;aAAY;QAC/F;QAEA,IAAIJ,MAAMC,IAAI,KAAK,UAAU,UAAUD,MAAMQ,mBAAmB,EAAE;YAChE,OAAO;mBACFF;mBACAN,MAAMQ,mBAAmB,CAACC,IAAI,CAACJ,MAAM,CACtC,CAACK,iBAAiBC,MAAQ;2BACrBD;2BACC,UAAUC,MAAM;4BAACA,IAAIJ,IAAI;yBAAC,GAAGL,oBAAoBS,IAAIR,QAAQ,EAAEC;qBACpE,EACD,EAAE;aAEL;QACH;QAEA,OAAO;eAAIE;YAAWN,MAAMO,IAAI;SAAC;IACnC,GAAG,EAAE;AAEP,OAAO,MAAMK,oBAAoB,CAC/BT,UACAC,YACAS;IAEA,IAAIC,iBAAiB,EAAE;IAEvB,IAAIC,MAAMC,OAAO,CAACH,mBAAmBA,eAAeI,MAAM,IAAI,GAAG;QAC/DH,iBAAiBD;IACnB,OAAO;QACL,IAAIT,YAAY;YACdU,eAAeI,IAAI,CAACd;QACtB;QAEA,MAAMe,mBAAmBjB,oBAAoBC,UAAUC;QAEvDU,iBAAiBA,eAAeM,MAAM,CAACD;QACvCL,iBAAiBA,eAAeO,KAAK,CAAC,GAAG;IAC3C;IAEA,OAAOP,eAAeQ,GAAG,CAAC,CAACC,SAAY,CAAA;YACrCC,UAAUD;YACVE,QAAQ;QACV,CAAA;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/TableColumns/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig } from 'payload/types'\nimport type { CellComponentProps } from 'payload/types'\n\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useReducer,\n useRef,\n useState,\n} from 'react'\n\nimport type { ColumnPreferences } from '../../providers/ListInfo/index.js'\nimport type { Column } from '../Table/index.js'\nimport type { Action } from './columnReducer.js'\n\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { buildColumnState } from './buildColumnState.js'\nimport { columnReducer } from './columnReducer.js'\nimport { filterFields } from './filterFields.js'\nimport { getInitialColumns } from './getInitialColumns.js'\n\nexport interface ITableColumns {\n columns: Column[]\n dispatchTableColumns: React.Dispatch<Action>\n moveColumn: (args: { fromIndex: number; toIndex: number }) => void\n setActiveColumns: (columns: string[]) => void\n toggleColumn: (column: string) => void\n}\n\nexport const TableColumnContext = createContext<ITableColumns>({} as ITableColumns)\n\nexport const useTableColumns = (): ITableColumns => useContext(TableColumnContext)\n\nexport type ListPreferences = {\n columns: ColumnPreferences\n}\n\ntype Props = {\n cellProps?: Partial<CellComponentProps>[]\n children: React.ReactNode\n collectionSlug: string\n enableRowSelections?: boolean\n listPreferences?: ListPreferences\n preferenceKey: string\n}\n\nexport const TableColumnsProvider: React.FC<Props> = ({\n cellProps,\n children,\n collectionSlug,\n enableRowSelections = false,\n listPreferences,\n preferenceKey,\n}) => {\n const config = useConfig()\n\n const { componentMap } = useComponentMap()\n\n const { fieldMap } = componentMap.collections[collectionSlug]\n\n const collectionConfig = config.collections.find(\n (collectionConfig) => collectionConfig.slug === collectionSlug,\n )\n\n const {\n admin: { defaultColumns, useAsTitle },\n } = collectionConfig\n\n const prevCollection = useRef<SanitizedCollectionConfig['slug']>(collectionSlug)\n const hasInitialized = useRef(false)\n const { getPreference, setPreference } = usePreferences()\n\n const [initialColumns] = useState<ColumnPreferences>(() =>\n getInitialColumns(filterFields(fieldMap), useAsTitle, defaultColumns),\n )\n\n const [tableColumns, dispatchTableColumns] = useReducer(columnReducer, {}, () => {\n return buildColumnState({\n cellProps,\n columnPreferences: listPreferences?.columns,\n columns: initialColumns,\n enableRowSelections,\n fieldMap,\n useAsTitle,\n })\n })\n\n // /////////////////////////////////////\n // Get preferences on collection change\n // /////////////////////////////////////\n\n useEffect(() => {\n const sync = async () => {\n const collectionHasChanged = prevCollection.current !== collectionSlug\n\n if (collectionHasChanged || !listPreferences) {\n const currentPreferences = await getPreference<{\n columns: ColumnPreferences\n }>(preferenceKey)\n prevCollection.current = collectionSlug\n\n if (currentPreferences?.columns) {\n dispatchTableColumns({\n type: 'set',\n payload: {\n columns: buildColumnState({\n cellProps,\n columnPreferences: currentPreferences?.columns,\n columns: initialColumns,\n enableRowSelections: true,\n fieldMap,\n useAsTitle,\n }),\n },\n })\n }\n }\n }\n\n void sync()\n }, [\n preferenceKey,\n getPreference,\n collectionSlug,\n fieldMap,\n cellProps,\n defaultColumns,\n useAsTitle,\n listPreferences,\n initialColumns,\n ])\n\n // /////////////////////////////////////\n // Set preferences on column change\n // /////////////////////////////////////\n\n useEffect(() => {\n if (!hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const columns = tableColumns.map((c) => ({\n accessor: c?.accessor,\n active: c?.active,\n }))\n\n void setPreference(preferenceKey, { columns }, true)\n }, [tableColumns, preferenceKey, setPreference])\n\n const setActiveColumns = useCallback(\n (columns: string[]) => {\n // dispatchTableColumns({\n // type: 'set',\n // payload: {\n // // onSelect,\n // cellProps,\n // collection: { ...collectionConfig, fields: formatFields(collectionConfig) },\n // columns: columns.map((column) => ({\n // accessor: column,\n // active: true,\n // })),\n // i18n,\n // },\n // })\n },\n [collectionConfig, cellProps],\n )\n\n const moveColumn = useCallback(\n (args: { fromIndex: number; toIndex: number }) => {\n const { fromIndex, toIndex } = args\n\n dispatchTableColumns({\n type: 'move',\n payload: {\n fromIndex,\n toIndex,\n },\n })\n },\n [dispatchTableColumns],\n )\n\n const toggleColumn = useCallback(\n (column: string) => {\n dispatchTableColumns({\n type: 'toggle',\n payload: {\n column,\n },\n })\n },\n [dispatchTableColumns],\n )\n\n return (\n <TableColumnContext.Provider\n value={{\n columns: tableColumns,\n dispatchTableColumns,\n moveColumn,\n setActiveColumns,\n toggleColumn,\n }}\n >\n {children}\n </TableColumnContext.Provider>\n )\n}\n"],"names":["React","createContext","useCallback","useContext","useEffect","useReducer","useRef","useState","useComponentMap","useConfig","usePreferences","buildColumnState","columnReducer","filterFields","getInitialColumns","TableColumnContext","useTableColumns","TableColumnsProvider","cellProps","children","collectionSlug","enableRowSelections","listPreferences","preferenceKey","config","componentMap","fieldMap","collections","collectionConfig","find","slug","admin","defaultColumns","useAsTitle","prevCollection","hasInitialized","getPreference","setPreference","initialColumns","tableColumns","dispatchTableColumns","columnPreferences","columns","sync","collectionHasChanged","current","currentPreferences","type","payload","map","c","accessor","active","setActiveColumns","moveColumn","args","fromIndex","toIndex","toggleColumn","column","Provider","value"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/TableColumns/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig } from 'payload/types'\nimport type { CellComponentProps } from 'payload/types'\n\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useReducer,\n useRef,\n useState,\n} from 'react'\n\nimport type { ColumnPreferences } from '../../providers/ListInfo/index.js'\nimport type { Column } from '../Table/index.js'\nimport type { Action } from './columnReducer.js'\n\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { buildColumnState } from './buildColumnState.js'\nimport { columnReducer } from './columnReducer.js'\nimport { filterFields } from './filterFields.js'\nimport { getInitialColumns } from './getInitialColumns.js'\n\nexport interface ITableColumns {\n columns: Column[]\n dispatchTableColumns: React.Dispatch<Action>\n moveColumn: (args: { fromIndex: number; toIndex: number }) => void\n setActiveColumns: (columns: string[]) => void\n toggleColumn: (column: string) => void\n}\n\nexport const TableColumnContext = createContext<ITableColumns>({} as ITableColumns)\n\nexport const useTableColumns = (): ITableColumns => useContext(TableColumnContext)\n\nexport type ListPreferences = {\n columns: ColumnPreferences\n}\n\ntype Props = {\n cellProps?: Partial<CellComponentProps>[]\n children: React.ReactNode\n collectionSlug: string\n enableRowSelections?: boolean\n listPreferences?: ListPreferences\n preferenceKey: string\n}\n\nexport const TableColumnsProvider: React.FC<Props> = ({\n cellProps,\n children,\n collectionSlug,\n enableRowSelections = false,\n listPreferences,\n preferenceKey,\n}) => {\n const config = useConfig()\n\n const { componentMap } = useComponentMap()\n\n const { fieldMap } = componentMap.collections[collectionSlug]\n\n const collectionConfig = config.collections.find(\n (collectionConfig) => collectionConfig.slug === collectionSlug,\n )\n\n const {\n admin: { defaultColumns, useAsTitle },\n } = collectionConfig\n\n const prevCollection = useRef<SanitizedCollectionConfig['slug']>(collectionSlug)\n const hasInitialized = useRef(false)\n const { getPreference, setPreference } = usePreferences()\n\n const [initialColumns] = useState<ColumnPreferences>(() =>\n getInitialColumns(filterFields(fieldMap), useAsTitle, defaultColumns),\n )\n\n const [tableColumns, dispatchTableColumns] = useReducer(columnReducer, {}, () => {\n return buildColumnState({\n cellProps,\n columnPreferences: listPreferences?.columns,\n columns: initialColumns,\n enableRowSelections,\n fieldMap,\n useAsTitle,\n })\n })\n\n // /////////////////////////////////////\n // Get preferences on collection change\n // /////////////////////////////////////\n\n useEffect(() => {\n const sync = async () => {\n const collectionHasChanged = prevCollection.current !== collectionSlug\n\n if (collectionHasChanged || !listPreferences) {\n const currentPreferences = await getPreference<{\n columns: ColumnPreferences\n }>(preferenceKey)\n prevCollection.current = collectionSlug\n\n if (currentPreferences?.columns) {\n dispatchTableColumns({\n type: 'set',\n payload: {\n columns: buildColumnState({\n cellProps,\n columnPreferences: currentPreferences?.columns,\n columns: initialColumns,\n enableRowSelections: true,\n fieldMap,\n useAsTitle,\n }),\n },\n })\n }\n }\n }\n\n void sync()\n }, [\n preferenceKey,\n getPreference,\n collectionSlug,\n fieldMap,\n cellProps,\n defaultColumns,\n useAsTitle,\n listPreferences,\n initialColumns,\n ])\n\n // /////////////////////////////////////\n // Set preferences on column change\n // /////////////////////////////////////\n\n useEffect(() => {\n if (!hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const columns = tableColumns.map((c) => ({\n accessor: c?.accessor,\n active: c?.active,\n }))\n\n void setPreference(preferenceKey, { columns }, true)\n }, [tableColumns, preferenceKey, setPreference])\n\n const setActiveColumns = useCallback(\n (columns: string[]) => {\n // dispatchTableColumns({\n // type: 'set',\n // payload: {\n // // onSelect,\n // cellProps,\n // collection: { ...collectionConfig, fields: formatFields(collectionConfig) },\n // columns: columns.map((column) => ({\n // accessor: column,\n // active: true,\n // })),\n // i18n,\n // },\n // })\n },\n [collectionConfig, cellProps],\n )\n\n const moveColumn = useCallback(\n (args: { fromIndex: number; toIndex: number }) => {\n const { fromIndex, toIndex } = args\n\n dispatchTableColumns({\n type: 'move',\n payload: {\n fromIndex,\n toIndex,\n },\n })\n },\n [dispatchTableColumns],\n )\n\n const toggleColumn = useCallback(\n (column: string) => {\n dispatchTableColumns({\n type: 'toggle',\n payload: {\n column,\n },\n })\n },\n [dispatchTableColumns],\n )\n\n return (\n <TableColumnContext.Provider\n value={{\n columns: tableColumns,\n dispatchTableColumns,\n moveColumn,\n setActiveColumns,\n toggleColumn,\n }}\n >\n {children}\n </TableColumnContext.Provider>\n )\n}\n"],"names":["React","createContext","useCallback","useContext","useEffect","useReducer","useRef","useState","useComponentMap","useConfig","usePreferences","buildColumnState","columnReducer","filterFields","getInitialColumns","TableColumnContext","useTableColumns","TableColumnsProvider","cellProps","children","collectionSlug","enableRowSelections","listPreferences","preferenceKey","config","componentMap","fieldMap","collections","collectionConfig","find","slug","admin","defaultColumns","useAsTitle","prevCollection","hasInitialized","getPreference","setPreference","initialColumns","tableColumns","dispatchTableColumns","columnPreferences","columns","sync","collectionHasChanged","current","currentPreferences","type","payload","map","c","accessor","active","setActiveColumns","moveColumn","args","fromIndex","toIndex","toggleColumn","column","Provider","value"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAIA,OAAOA,SACLC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,MAAM,EACNC,QAAQ,QACH,QAAO;AAMd,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,gBAAgB,QAAQ,wBAAuB;AACxD,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,YAAY,QAAQ,oBAAmB;AAChD,SAASC,iBAAiB,QAAQ,yBAAwB;AAU1D,OAAO,MAAMC,mCAAqBd,cAA6B,CAAC,GAAmB;AAEnF,OAAO,MAAMe,kBAAkB,IAAqBb,WAAWY,oBAAmB;AAelF,OAAO,MAAME,uBAAwC,CAAC,EACpDC,SAAS,EACTC,QAAQ,EACRC,cAAc,EACdC,sBAAsB,KAAK,EAC3BC,eAAe,EACfC,aAAa,EACd;IACC,MAAMC,SAASf;IAEf,MAAM,EAAEgB,YAAY,EAAE,GAAGjB;IAEzB,MAAM,EAAEkB,QAAQ,EAAE,GAAGD,aAAaE,WAAW,CAACP,eAAe;IAE7D,MAAMQ,mBAAmBJ,OAAOG,WAAW,CAACE,IAAI,CAC9C,CAACD,mBAAqBA,iBAAiBE,IAAI,KAAKV;IAGlD,MAAM,EACJW,OAAO,EAAEC,cAAc,EAAEC,UAAU,EAAE,EACtC,GAAGL;IAEJ,MAAMM,iBAAiB5B,OAA0Cc;IACjE,MAAMe,iBAAiB7B,OAAO;IAC9B,MAAM,EAAE8B,aAAa,EAAEC,aAAa,EAAE,GAAG3B;IAEzC,MAAM,CAAC4B,eAAe,GAAG/B,SAA4B,IACnDO,kBAAkBD,aAAaa,WAAWO,YAAYD;IAGxD,MAAM,CAACO,cAAcC,qBAAqB,GAAGnC,WAAWO,eAAe,CAAC,GAAG;QACzE,OAAOD,iBAAiB;YACtBO;YACAuB,mBAAmBnB,iBAAiBoB;YACpCA,SAASJ;YACTjB;YACAK;YACAO;QACF;IACF;IAEA,wCAAwC;IACxC,uCAAuC;IACvC,wCAAwC;IAExC7B,UAAU;QACR,MAAMuC,OAAO;YACX,MAAMC,uBAAuBV,eAAeW,OAAO,KAAKzB;YAExD,IAAIwB,wBAAwB,CAACtB,iBAAiB;gBAC5C,MAAMwB,qBAAqB,MAAMV,cAE9Bb;gBACHW,eAAeW,OAAO,GAAGzB;gBAEzB,IAAI0B,oBAAoBJ,SAAS;oBAC/BF,qBAAqB;wBACnBO,MAAM;wBACNC,SAAS;4BACPN,SAAS/B,iBAAiB;gCACxBO;gCACAuB,mBAAmBK,oBAAoBJ;gCACvCA,SAASJ;gCACTjB,qBAAqB;gCACrBK;gCACAO;4BACF;wBACF;oBACF;gBACF;YACF;QACF;QAEA,KAAKU;IACP,GAAG;QACDpB;QACAa;QACAhB;QACAM;QACAR;QACAc;QACAC;QACAX;QACAgB;KACD;IAED,wCAAwC;IACxC,mCAAmC;IACnC,wCAAwC;IAExClC,UAAU;QACR,IAAI,CAAC+B,eAAeU,OAAO,EAAE;YAC3BV,eAAeU,OAAO,GAAG;YACzB;QACF;QAEA,MAAMH,UAAUH,aAAaU,GAAG,CAAC,CAACC,IAAO,CAAA;gBACvCC,UAAUD,GAAGC;gBACbC,QAAQF,GAAGE;YACb,CAAA;QAEA,KAAKf,cAAcd,eAAe;YAAEmB;QAAQ,GAAG;IACjD,GAAG;QAACH;QAAchB;QAAec;KAAc;IAE/C,MAAMgB,mBAAmBnD,YACvB,CAACwC;IACC,yBAAyB;IACzB,iBAAiB;IACjB,eAAe;IACf,mBAAmB;IACnB,iBAAiB;IACjB,mFAAmF;IACnF,0CAA0C;IAC1C,0BAA0B;IAC1B,sBAAsB;IACtB,WAAW;IACX,YAAY;IACZ,OAAO;IACP,KAAK;IACP,GACA;QAACd;QAAkBV;KAAU;IAG/B,MAAMoC,aAAapD,YACjB,CAACqD;QACC,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAGF;QAE/Bf,qBAAqB;YACnBO,MAAM;YACNC,SAAS;gBACPQ;gBACAC;YACF;QACF;IACF,GACA;QAACjB;KAAqB;IAGxB,MAAMkB,eAAexD,YACnB,CAACyD;QACCnB,qBAAqB;YACnBO,MAAM;YACNC,SAAS;gBACPW;YACF;QACF;IACF,GACA;QAACnB;KAAqB;IAGxB,qBACE,oBAACzB,mBAAmB6C,QAAQ;QAC1BC,OAAO;YACLnB,SAASH;YACTC;YACAc;YACAD;YACAK;QACF;OAECvC;AAGP,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Thumbnail/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport { File } from '../../graphics/File/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n imageCacheTag?: string\n size?: 'expand' | 'large' | 'medium' | 'small'\n uploadConfig?: SanitizedCollectionConfig['upload']\n}\n\nconst ThumbnailContext = React.createContext({\n className: '',\n filename: '',\n size: 'medium',\n src: '',\n})\n\nexport const useThumbnailContext = () => React.useContext(ThumbnailContext)\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const { className = '', doc: { filename } = {}, fileSrc, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n React.useEffect(() => {\n if (!fileSrc) {\n setFileExists(false)\n return\n }\n\n const img = new Image()\n img.src = fileSrc\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [fileSrc])\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={filename as string} src={fileSrc} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n"],"names":["React","baseClass","File","ShimmerEffect","ThumbnailContext","createContext","className","filename","size","src","useThumbnailContext","useContext","Thumbnail","props","doc","fileSrc","fileExists","setFileExists","useState","undefined","classNames","join","useEffect","img","Image","onload","onerror","div","height","alt"],"mappings":"AAAA;AACA,OAAOA,WAAW,QAAO;AAIzB,MAAMC,YAAY;AAIlB,SAASC,IAAI,QAAQ,+BAA8B;AACnD,SAASC,aAAa,QAAQ,4BAA2B;AAYzD,MAAMC,iCAAmBJ,MAAMK,aAAa,CAAC;IAC3CC,WAAW;IACXC,UAAU;IACVC,MAAM;IACNC,KAAK;AACP;AAEA,OAAO,MAAMC,sBAAsB,IAAMV,MAAMW,UAAU,CAACP,kBAAiB;AAE3E,OAAO,MAAMQ,YAAsC,CAACC;IAClD,MAAM,EAAEP,YAAY,EAAE,EAAEQ,KAAK,EAAEP,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAEQ,OAAO,EAAEP,IAAI,EAAE,GAAGK;IAClE,MAAM,CAACG,YAAYC,cAAc,GAAGjB,MAAMkB,QAAQ,CAACC;IAEnD,MAAMC,aAAa;QAACnB;QAAW,CAAC,EAAEA,UAAU,OAAO,EAAEO,QAAQ,SAAS,CAAC;QAAEF;KAAU,CAACe,IAAI,CAAC;IAEzFrB,MAAMsB,SAAS,CAAC;QACd,IAAI,CAACP,SAAS;YACZE,cAAc;YACd;QACF;QAEA,MAAMM,MAAM,IAAIC;QAChBD,IAAId,GAAG,GAAGM;QACVQ,IAAIE,MAAM,GAAG;YACXR,cAAc;QAChB;QACAM,IAAIG,OAAO,GAAG;YACZT,cAAc;QAChB;IACF,GAAG;QAACF;KAAQ;IAEZ,qBACE,oBAACY;QAAIrB,WAAWc;OACbJ,eAAeG,2BAAa,oBAAChB;QAAcyB,QAAO;QAClDZ,4BAAc,oBAACO;QAAIM,KAAKtB;QAAoBE,KAAKM;QACjDC,eAAe,uBAAS,oBAACd;AAGhC,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/Thumbnail/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'thumbnail'\n\nimport type { SanitizedCollectionConfig } from 'payload/types'\n\nimport { File } from '../../graphics/File/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\n\nexport type ThumbnailProps = {\n className?: string\n collectionSlug?: string\n doc?: Record<string, unknown>\n fileSrc?: string\n imageCacheTag?: string\n size?: 'expand' | 'large' | 'medium' | 'small'\n uploadConfig?: SanitizedCollectionConfig['upload']\n}\n\nconst ThumbnailContext = React.createContext({\n className: '',\n filename: '',\n size: 'medium',\n src: '',\n})\n\nexport const useThumbnailContext = () => React.useContext(ThumbnailContext)\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const { className = '', doc: { filename } = {}, fileSrc, size } = props\n const [fileExists, setFileExists] = React.useState(undefined)\n\n const classNames = [baseClass, `${baseClass}--size-${size || 'medium'}`, className].join(' ')\n\n React.useEffect(() => {\n if (!fileSrc) {\n setFileExists(false)\n return\n }\n\n const img = new Image()\n img.src = fileSrc\n img.onload = () => {\n setFileExists(true)\n }\n img.onerror = () => {\n setFileExists(false)\n }\n }, [fileSrc])\n\n return (\n <div className={classNames}>\n {fileExists === undefined && <ShimmerEffect height=\"100%\" />}\n {fileExists && <img alt={filename as string} src={fileSrc} />}\n {fileExists === false && <File />}\n </div>\n )\n}\n"],"names":["React","baseClass","File","ShimmerEffect","ThumbnailContext","createContext","className","filename","size","src","useThumbnailContext","useContext","Thumbnail","props","doc","fileSrc","fileExists","setFileExists","useState","undefined","classNames","join","useEffect","img","Image","onload","onerror","div","height","alt"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,OAAOA,WAAW,QAAO;AAIzB,MAAMC,YAAY;AAIlB,SAASC,IAAI,QAAQ,+BAA8B;AACnD,SAASC,aAAa,QAAQ,4BAA2B;AAYzD,MAAMC,iCAAmBJ,MAAMK,aAAa,CAAC;IAC3CC,WAAW;IACXC,UAAU;IACVC,MAAM;IACNC,KAAK;AACP;AAEA,OAAO,MAAMC,sBAAsB,IAAMV,MAAMW,UAAU,CAACP,kBAAiB;AAE3E,OAAO,MAAMQ,YAAsC,CAACC;IAClD,MAAM,EAAEP,YAAY,EAAE,EAAEQ,KAAK,EAAEP,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAEQ,OAAO,EAAEP,IAAI,EAAE,GAAGK;IAClE,MAAM,CAACG,YAAYC,cAAc,GAAGjB,MAAMkB,QAAQ,CAACC;IAEnD,MAAMC,aAAa;QAACnB;QAAW,CAAC,EAAEA,UAAU,OAAO,EAAEO,QAAQ,SAAS,CAAC;QAAEF;KAAU,CAACe,IAAI,CAAC;IAEzFrB,MAAMsB,SAAS,CAAC;QACd,IAAI,CAACP,SAAS;YACZE,cAAc;YACd;QACF;QAEA,MAAMM,MAAM,IAAIC;QAChBD,IAAId,GAAG,GAAGM;QACVQ,IAAIE,MAAM,GAAG;YACXR,cAAc;QAChB;QACAM,IAAIG,OAAO,GAAG;YACZT,cAAc;QAChB;IACF,GAAG;QAACF;KAAQ;IAEZ,qBACE,oBAACY;QAAIrB,WAAWc;OACbJ,eAAeG,2BAAa,oBAAChB;QAAcyB,QAAO;QAClDZ,4BAAc,oBAACO;QAAIM,KAAKtB;QAAoBE,KAAKM;QACjDC,eAAe,uBAAS,oBAACd;AAGhC,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/ThumbnailCard/index.tsx"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from 'payload/types'\n\nimport React from 'react'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle.js'\nimport './index.scss'\n\nexport type ThumbnailCardProps = {\n alignLabel?: 'center' | 'left'\n className?: string\n collection?: SanitizedCollectionConfig\n doc?: TypeWithID & { filename?: string }\n label?: string\n onClick?: () => void\n onKeyDown?: () => void\n thumbnail: React.ReactNode\n}\n\nconst baseClass = 'thumbnail-card'\n\nexport const ThumbnailCard: React.FC<ThumbnailCardProps> = (props) => {\n const {\n alignLabel,\n className,\n collection,\n doc,\n label: labelFromProps,\n onClick,\n thumbnail,\n } = props\n\n const config = useConfig()\n\n const { i18n } = useTranslation()\n\n const classes = [\n baseClass,\n className,\n typeof onClick === 'function' && `${baseClass}--has-on-click`,\n alignLabel && `${baseClass}--align-label-${alignLabel}`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let title = labelFromProps\n\n if (!title) {\n title = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: doc?.filename,\n i18n,\n })\n }\n\n return (\n <button className={classes} onClick={onClick} title={title} type=\"button\">\n <div className={`${baseClass}__thumbnail`}>{thumbnail}</div>\n <div className={`${baseClass}__label`}>{title}</div>\n </button>\n )\n}\n"],"names":["React","useConfig","useTranslation","formatDocTitle","baseClass","ThumbnailCard","props","alignLabel","className","collection","doc","label","labelFromProps","onClick","thumbnail","config","i18n","classes","filter","Boolean","join","title","collectionConfig","data","dateFormat","admin","fallback","filename","button","type","div"],"mappings":"AAEA,OAAOA,WAAW,QAAO;AAEzB,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,oCAAmC;AAclE,MAAMC,YAAY;AAElB,OAAO,MAAMC,gBAA8C,CAACC;IAC1D,MAAM,EACJC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,GAAG,EACHC,OAAOC,cAAc,EACrBC,OAAO,EACPC,SAAS,EACV,GAAGR;IAEJ,MAAMS,SAASd;IAEf,MAAM,EAAEe,IAAI,EAAE,GAAGd;IAEjB,MAAMe,UAAU;QACdb;QACAI;QACA,OAAOK,YAAY,cAAc,CAAC,EAAET,UAAU,cAAc,CAAC;QAC7DG,cAAc,CAAC,EAAEH,UAAU,cAAc,EAAEG,WAAW,CAAC;KACxD,CACEW,MAAM,CAACC,SACPC,IAAI,CAAC;IAER,IAAIC,QAAQT;IAEZ,IAAI,CAACS,OAAO;QACVA,QAAQlB,eAAe;YACrBmB,kBAAkBb;YAClBc,MAAMb;YACNc,YAAYT,OAAOU,KAAK,CAACD,UAAU;YACnCE,UAAUhB,KAAKiB;YACfX;QACF;IACF;IAEA,qBACE,oBAACY;QAAOpB,WAAWS;QAASJ,SAASA;QAASQ,OAAOA;QAAOQ,MAAK;qBAC/D,oBAACC;QAAItB,WAAW,CAAC,EAAEJ,UAAU,WAAW,CAAC;OAAGU,0BAC5C,oBAACgB;QAAItB,WAAW,CAAC,EAAEJ,UAAU,OAAO,CAAC;OAAGiB;AAG9C,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/ThumbnailCard/index.tsx"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from 'payload/types'\n\nimport React from 'react'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle.js'\nimport './index.scss'\n\nexport type ThumbnailCardProps = {\n alignLabel?: 'center' | 'left'\n className?: string\n collection?: SanitizedCollectionConfig\n doc?: TypeWithID & { filename?: string }\n label?: string\n onClick?: () => void\n onKeyDown?: () => void\n thumbnail: React.ReactNode\n}\n\nconst baseClass = 'thumbnail-card'\n\nexport const ThumbnailCard: React.FC<ThumbnailCardProps> = (props) => {\n const {\n alignLabel,\n className,\n collection,\n doc,\n label: labelFromProps,\n onClick,\n thumbnail,\n } = props\n\n const config = useConfig()\n\n const { i18n } = useTranslation()\n\n const classes = [\n baseClass,\n className,\n typeof onClick === 'function' && `${baseClass}--has-on-click`,\n alignLabel && `${baseClass}--align-label-${alignLabel}`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let title = labelFromProps\n\n if (!title) {\n title = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: doc?.filename,\n i18n,\n })\n }\n\n return (\n <button className={classes} onClick={onClick} title={title} type=\"button\">\n <div className={`${baseClass}__thumbnail`}>{thumbnail}</div>\n <div className={`${baseClass}__label`}>{title}</div>\n </button>\n )\n}\n"],"names":["React","useConfig","useTranslation","formatDocTitle","baseClass","ThumbnailCard","props","alignLabel","className","collection","doc","label","labelFromProps","onClick","thumbnail","config","i18n","classes","filter","Boolean","join","title","collectionConfig","data","dateFormat","admin","fallback","filename","button","type","div"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,WAAW,QAAO;AAEzB,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,oCAAmC;AAclE,MAAMC,YAAY;AAElB,OAAO,MAAMC,gBAA8C,CAACC;IAC1D,MAAM,EACJC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,GAAG,EACHC,OAAOC,cAAc,EACrBC,OAAO,EACPC,SAAS,EACV,GAAGR;IAEJ,MAAMS,SAASd;IAEf,MAAM,EAAEe,IAAI,EAAE,GAAGd;IAEjB,MAAMe,UAAU;QACdb;QACAI;QACA,OAAOK,YAAY,cAAc,CAAC,EAAET,UAAU,cAAc,CAAC;QAC7DG,cAAc,CAAC,EAAEH,UAAU,cAAc,EAAEG,WAAW,CAAC;KACxD,CACEW,MAAM,CAACC,SACPC,IAAI,CAAC;IAER,IAAIC,QAAQT;IAEZ,IAAI,CAACS,OAAO;QACVA,QAAQlB,eAAe;YACrBmB,kBAAkBb;YAClBc,MAAMb;YACNc,YAAYT,OAAOU,KAAK,CAACD,UAAU;YACnCE,UAAUhB,KAAKiB;YACfX;QACF;IACF;IAEA,qBACE,oBAACY;QAAOpB,WAAWS;QAASJ,SAASA;QAASQ,OAAOA;QAAOQ,MAAK;qBAC/D,oBAACC;QAAItB,WAAW,CAAC,EAAEJ,UAAU,WAAW,CAAC;OAAGU,0BAC5C,oBAACgB;QAAItB,WAAW,CAAC,EAAEJ,UAAU,OAAO,CAAC;OAAGiB;AAG9C,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Tooltip/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect } from 'react'\n\nimport { useIntersect } from '../../hooks/useIntersect.js'\nimport './index.scss'\n\nexport type Props = {\n alignCaret?: 'center' | 'left' | 'right'\n boundingRef?: React.RefObject<HTMLElement>\n children: React.ReactNode\n className?: string\n delay?: number\n show?: boolean\n}\n\nexport const Tooltip: React.FC<Props> = (props) => {\n const {\n alignCaret = 'center',\n boundingRef,\n children,\n className,\n delay = 350,\n show: showFromProps = true,\n } = props\n\n const [show, setShow] = React.useState(showFromProps)\n const [position, setPosition] = React.useState<'bottom' | 'top'>('top')\n\n const getTitleAttribute = (content) => (typeof content === 'string' ? content : '')\n\n const [ref, intersectionEntry] = useIntersect({\n root: boundingRef?.current || null,\n rootMargin: '-145px 0px 0px 100px',\n threshold: 0,\n })\n\n useEffect(() => {\n let timerId: NodeJS.Timeout\n\n // do not use the delay on transition-out\n if (delay && showFromProps) {\n timerId = setTimeout(() => {\n setShow(showFromProps)\n }, delay)\n } else {\n setShow(showFromProps)\n }\n\n return () => {\n if (timerId) clearTimeout(timerId)\n }\n }, [showFromProps, delay])\n\n useEffect(() => {\n setPosition(intersectionEntry?.isIntersecting ? 'top' : 'bottom')\n }, [intersectionEntry])\n\n return (\n <React.Fragment>\n <aside\n aria-hidden=\"true\"\n className={['tooltip', className, `tooltip--caret-${alignCaret}`, 'tooltip--position-top']\n .filter(Boolean)\n .join(' ')}\n ref={ref}\n title={getTitleAttribute(children)}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n\n <aside\n className={[\n 'tooltip',\n className,\n show && 'tooltip--show',\n `tooltip--caret-${alignCaret}`,\n `tooltip--position-${position}`,\n ]\n .filter(Boolean)\n .join(' ')}\n title={getTitleAttribute(children)}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n </React.Fragment>\n )\n}\n"],"names":["React","useEffect","useIntersect","Tooltip","props","alignCaret","boundingRef","children","className","delay","show","showFromProps","setShow","useState","position","setPosition","getTitleAttribute","content","ref","intersectionEntry","root","current","rootMargin","threshold","timerId","setTimeout","clearTimeout","isIntersecting","Fragment","aside","aria-hidden","filter","Boolean","join","title","div"],"mappings":"AAAA;AACA,OAAOA,SAASC,SAAS,QAAQ,QAAO;AAExC,SAASC,YAAY,QAAQ,8BAA6B;AAY1D,OAAO,MAAMC,UAA2B,CAACC;IACvC,MAAM,EACJC,aAAa,QAAQ,EACrBC,WAAW,EACXC,QAAQ,EACRC,SAAS,EACTC,QAAQ,GAAG,EACXC,MAAMC,gBAAgB,IAAI,EAC3B,GAAGP;IAEJ,MAAM,CAACM,MAAME,QAAQ,GAAGZ,MAAMa,QAAQ,CAACF;IACvC,MAAM,CAACG,UAAUC,YAAY,GAAGf,MAAMa,QAAQ,CAAmB;IAEjE,MAAMG,oBAAoB,CAACC,UAAa,OAAOA,YAAY,WAAWA,UAAU;IAEhF,MAAM,CAACC,KAAKC,kBAAkB,GAAGjB,aAAa;QAC5CkB,MAAMd,aAAae,WAAW;QAC9BC,YAAY;QACZC,WAAW;IACb;IAEAtB,UAAU;QACR,IAAIuB;QAEJ,yCAAyC;QACzC,IAAIf,SAASE,eAAe;YAC1Ba,UAAUC,WAAW;gBACnBb,QAAQD;YACV,GAAGF;QACL,OAAO;YACLG,QAAQD;QACV;QAEA,OAAO;YACL,IAAIa,SAASE,aAAaF;QAC5B;IACF,GAAG;QAACb;QAAeF;KAAM;IAEzBR,UAAU;QACRc,YAAYI,mBAAmBQ,iBAAiB,QAAQ;IAC1D,GAAG;QAACR;KAAkB;IAEtB,qBACE,oBAACnB,MAAM4B,QAAQ,sBACb,oBAACC;QACCC,eAAY;QACZtB,WAAW;YAAC;YAAWA;YAAW,CAAC,eAAe,EAAEH,WAAW,CAAC;YAAE;SAAwB,CACvF0B,MAAM,CAACC,SACPC,IAAI,CAAC;QACRf,KAAKA;QACLgB,OAAOlB,kBAAkBT;qBAEzB,oBAAC4B;QAAI3B,WAAU;OAAmBD,0BAGpC,oBAACsB;QACCrB,WAAW;YACT;YACAA;YACAE,QAAQ;YACR,CAAC,eAAe,EAAEL,WAAW,CAAC;YAC9B,CAAC,kBAAkB,EAAES,SAAS,CAAC;SAChC,CACEiB,MAAM,CAACC,SACPC,IAAI,CAAC;QACRC,OAAOlB,kBAAkBT;qBAEzB,oBAAC4B;QAAI3B,WAAU;OAAmBD;AAI1C,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/Tooltip/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect } from 'react'\n\nimport { useIntersect } from '../../hooks/useIntersect.js'\nimport './index.scss'\n\nexport type Props = {\n alignCaret?: 'center' | 'left' | 'right'\n boundingRef?: React.RefObject<HTMLElement>\n children: React.ReactNode\n className?: string\n delay?: number\n show?: boolean\n}\n\nexport const Tooltip: React.FC<Props> = (props) => {\n const {\n alignCaret = 'center',\n boundingRef,\n children,\n className,\n delay = 350,\n show: showFromProps = true,\n } = props\n\n const [show, setShow] = React.useState(showFromProps)\n const [position, setPosition] = React.useState<'bottom' | 'top'>('top')\n\n const getTitleAttribute = (content) => (typeof content === 'string' ? content : '')\n\n const [ref, intersectionEntry] = useIntersect({\n root: boundingRef?.current || null,\n rootMargin: '-145px 0px 0px 100px',\n threshold: 0,\n })\n\n useEffect(() => {\n let timerId: NodeJS.Timeout\n\n // do not use the delay on transition-out\n if (delay && showFromProps) {\n timerId = setTimeout(() => {\n setShow(showFromProps)\n }, delay)\n } else {\n setShow(showFromProps)\n }\n\n return () => {\n if (timerId) clearTimeout(timerId)\n }\n }, [showFromProps, delay])\n\n useEffect(() => {\n setPosition(intersectionEntry?.isIntersecting ? 'top' : 'bottom')\n }, [intersectionEntry])\n\n return (\n <React.Fragment>\n <aside\n aria-hidden=\"true\"\n className={['tooltip', className, `tooltip--caret-${alignCaret}`, 'tooltip--position-top']\n .filter(Boolean)\n .join(' ')}\n ref={ref}\n title={getTitleAttribute(children)}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n\n <aside\n className={[\n 'tooltip',\n className,\n show && 'tooltip--show',\n `tooltip--caret-${alignCaret}`,\n `tooltip--position-${position}`,\n ]\n .filter(Boolean)\n .join(' ')}\n title={getTitleAttribute(children)}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n </React.Fragment>\n )\n}\n"],"names":["React","useEffect","useIntersect","Tooltip","props","alignCaret","boundingRef","children","className","delay","show","showFromProps","setShow","useState","position","setPosition","getTitleAttribute","content","ref","intersectionEntry","root","current","rootMargin","threshold","timerId","setTimeout","clearTimeout","isIntersecting","Fragment","aside","aria-hidden","filter","Boolean","join","title","div"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,OAAOA,SAASC,SAAS,QAAQ,QAAO;AAExC,SAASC,YAAY,QAAQ,8BAA6B;AAY1D,OAAO,MAAMC,UAA2B,CAACC;IACvC,MAAM,EACJC,aAAa,QAAQ,EACrBC,WAAW,EACXC,QAAQ,EACRC,SAAS,EACTC,QAAQ,GAAG,EACXC,MAAMC,gBAAgB,IAAI,EAC3B,GAAGP;IAEJ,MAAM,CAACM,MAAME,QAAQ,GAAGZ,MAAMa,QAAQ,CAACF;IACvC,MAAM,CAACG,UAAUC,YAAY,GAAGf,MAAMa,QAAQ,CAAmB;IAEjE,MAAMG,oBAAoB,CAACC,UAAa,OAAOA,YAAY,WAAWA,UAAU;IAEhF,MAAM,CAACC,KAAKC,kBAAkB,GAAGjB,aAAa;QAC5CkB,MAAMd,aAAae,WAAW;QAC9BC,YAAY;QACZC,WAAW;IACb;IAEAtB,UAAU;QACR,IAAIuB;QAEJ,yCAAyC;QACzC,IAAIf,SAASE,eAAe;YAC1Ba,UAAUC,WAAW;gBACnBb,QAAQD;YACV,GAAGF;QACL,OAAO;YACLG,QAAQD;QACV;QAEA,OAAO;YACL,IAAIa,SAASE,aAAaF;QAC5B;IACF,GAAG;QAACb;QAAeF;KAAM;IAEzBR,UAAU;QACRc,YAAYI,mBAAmBQ,iBAAiB,QAAQ;IAC1D,GAAG;QAACR;KAAkB;IAEtB,qBACE,oBAACnB,MAAM4B,QAAQ,sBACb,oBAACC;QACCC,eAAY;QACZtB,WAAW;YAAC;YAAWA;YAAW,CAAC,eAAe,EAAEH,WAAW,CAAC;YAAE;SAAwB,CACvF0B,MAAM,CAACC,SACPC,IAAI,CAAC;QACRf,KAAKA;QACLgB,OAAOlB,kBAAkBT;qBAEzB,oBAAC4B;QAAI3B,WAAU;OAAmBD,0BAGpC,oBAACsB;QACCrB,WAAW;YACT;YACAA;YACAE,QAAQ;YACR,CAAC,eAAe,EAAEL,WAAW,CAAC;YAC9B,CAAC,kBAAkB,EAAES,SAAS,CAAC;SAChC,CACEiB,MAAM,CAACC,SACPC,IAAI,CAAC;QACRC,OAAOlB,kBAAkBT;qBAEzB,oBAAC4B;QAAI3B,WAAU;OAAmBD;AAI1C,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Translation/index.tsx"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport * as React from 'react'\n\nconst RecursiveTranslation: React.FC<{\n elements?: Record<string, React.FC<{ children: React.ReactNode }>>\n translationString: string\n}> = ({ elements, translationString }) => {\n const regex = /(<[^>]+>.*?<\\/[^>]+>)/g\n const sections = translationString.split(regex)\n\n return (\n <span>\n {sections.map((section, index) => {\n if (elements && section.startsWith('<') && section.endsWith('>')) {\n const elementKey = section[1]\n const Element = elements[elementKey]\n\n if (Element) {\n const regex = new RegExp(`<${elementKey}>(.*?)<\\/${elementKey}>`, 'g')\n const children = section.replace(regex, (_, group) => group)\n\n return (\n <Element key={index}>\n <RecursiveTranslation translationString={children} />\n </Element>\n )\n }\n }\n\n return section\n })}\n </span>\n )\n}\n\nexport type TranslationProps = {\n elements?: Record<string, React.FC<{ children: React.ReactNode }>>\n i18nKey: string\n t: TFunction\n variables?: Record<string, unknown>\n}\n\nexport const Translation: React.FC<TranslationProps> = ({ elements, i18nKey, t, variables }) => {\n const stringWithVariables = t(i18nKey, variables || {})\n\n if (!elements) {\n return stringWithVariables\n }\n\n return <RecursiveTranslation elements={elements} translationString={stringWithVariables} />\n}\n"],"names":["React","RecursiveTranslation","elements","translationString","regex","sections","split","span","map","section","index","startsWith","endsWith","elementKey","Element","RegExp","children","replace","_","group","key","Translation","i18nKey","t","variables","stringWithVariables"],"mappings":"AAEA,YAAYA,WAAW,QAAO;AAE9B,MAAMC,uBAGD,CAAC,EAAEC,QAAQ,EAAEC,iBAAiB,EAAE;IACnC,MAAMC,QAAQ;IACd,MAAMC,WAAWF,kBAAkBG,KAAK,CAACF;IAEzC,qBACE,oBAACG,cACEF,SAASG,GAAG,CAAC,CAACC,SAASC;QACtB,IAAIR,YAAYO,QAAQE,UAAU,CAAC,QAAQF,QAAQG,QAAQ,CAAC,MAAM;YAChE,MAAMC,aAAaJ,OAAO,CAAC,EAAE;YAC7B,MAAMK,UAAUZ,QAAQ,CAACW,WAAW;YAEpC,IAAIC,SAAS;gBACX,MAAMV,QAAQ,IAAIW,OAAO,CAAC,CAAC,EAAEF,WAAW,SAAS,EAAEA,WAAW,CAAC,CAAC,EAAE;gBAClE,MAAMG,WAAWP,QAAQQ,OAAO,CAACb,OAAO,CAACc,GAAGC,QAAUA;gBAEtD,qBACE,oBAACL;oBAAQM,KAAKV;iCACZ,oBAACT;oBAAqBE,mBAAmBa;;YAG/C;QACF;QAEA,OAAOP;IACT;AAGN;AASA,OAAO,MAAMY,cAA0C,CAAC,EAAEnB,QAAQ,EAAEoB,OAAO,EAAEC,CAAC,EAAEC,SAAS,EAAE;IACzF,MAAMC,sBAAsBF,EAAED,SAASE,aAAa,CAAC;IAErD,IAAI,CAACtB,UAAU;QACb,OAAOuB;IACT;IAEA,qBAAO,oBAACxB;QAAqBC,UAAUA;QAAUC,mBAAmBsB;;AACtE,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/Translation/index.tsx"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport * as React from 'react'\n\nconst RecursiveTranslation: React.FC<{\n elements?: Record<string, React.FC<{ children: React.ReactNode }>>\n translationString: string\n}> = ({ elements, translationString }) => {\n const regex = /(<[^>]+>.*?<\\/[^>]+>)/g\n const sections = translationString.split(regex)\n\n return (\n <span>\n {sections.map((section, index) => {\n if (elements && section.startsWith('<') && section.endsWith('>')) {\n const elementKey = section[1]\n const Element = elements[elementKey]\n\n if (Element) {\n const regex = new RegExp(`<${elementKey}>(.*?)<\\/${elementKey}>`, 'g')\n const children = section.replace(regex, (_, group) => group)\n\n return (\n <Element key={index}>\n <RecursiveTranslation translationString={children} />\n </Element>\n )\n }\n }\n\n return section\n })}\n </span>\n )\n}\n\nexport type TranslationProps = {\n elements?: Record<string, React.FC<{ children: React.ReactNode }>>\n i18nKey: string\n t: TFunction\n variables?: Record<string, unknown>\n}\n\nexport const Translation: React.FC<TranslationProps> = ({ elements, i18nKey, t, variables }) => {\n const stringWithVariables = t(i18nKey, variables || {})\n\n if (!elements) {\n return stringWithVariables\n }\n\n return <RecursiveTranslation elements={elements} translationString={stringWithVariables} />\n}\n"],"names":["React","RecursiveTranslation","elements","translationString","regex","sections","split","span","map","section","index","startsWith","endsWith","elementKey","Element","RegExp","children","replace","_","group","key","Translation","i18nKey","t","variables","stringWithVariables"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,YAAYA,WAAW,QAAO;AAE9B,MAAMC,uBAGD,CAAC,EAAEC,QAAQ,EAAEC,iBAAiB,EAAE;IACnC,MAAMC,QAAQ;IACd,MAAMC,WAAWF,kBAAkBG,KAAK,CAACF;IAEzC,qBACE,oBAACG,cACEF,SAASG,GAAG,CAAC,CAACC,SAASC;QACtB,IAAIR,YAAYO,QAAQE,UAAU,CAAC,QAAQF,QAAQG,QAAQ,CAAC,MAAM;YAChE,MAAMC,aAAaJ,OAAO,CAAC,EAAE;YAC7B,MAAMK,UAAUZ,QAAQ,CAACW,WAAW;YAEpC,IAAIC,SAAS;gBACX,MAAMV,QAAQ,IAAIW,OAAO,CAAC,CAAC,EAAEF,WAAW,SAAS,EAAEA,WAAW,CAAC,CAAC,EAAE;gBAClE,MAAMG,WAAWP,QAAQQ,OAAO,CAACb,OAAO,CAACc,GAAGC,QAAUA;gBAEtD,qBACE,oBAACL;oBAAQM,KAAKV;iCACZ,oBAACT;oBAAqBE,mBAAmBa;;YAG/C;QACF;QAEA,OAAOP;IACT;AAGN;AASA,OAAO,MAAMY,cAA0C,CAAC,EAAEnB,QAAQ,EAAEoB,OAAO,EAAEC,CAAC,EAAEC,SAAS,EAAE;IACzF,MAAMC,sBAAsBF,EAAED,SAASE,aAAa,CAAC;IAErD,IAAI,CAACtB,UAAU;QACb,OAAOuB;IACT;IAEA,qBAAO,oBAACxB;QAAqBC,UAAUA;QAAUC,mBAAmBsB;;AACtE,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/UnpublishMany/index.tsx"],"sourcesContent":["'use client'\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { Pill } from '../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'unpublish-many'\n\nimport type { ClientCollectionConfig } from 'payload/types'\n\nexport type UnpublishManyProps = {\n collection: ClientCollectionConfig\n}\n\nexport const UnpublishMany: React.FC<UnpublishManyProps> = (props) => {\n const { collection: { slug, labels: { plural }, versions } = {} } = props\n const { Modal, useModal } = facelessUIImport\n\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const { permissions } = useAuth()\n const { toggleModal } = useModal()\n const { i18n, t } = useTranslation()\n const { getQueryParams, selectAll } = useSelection()\n const [submitted, setSubmitted] = useState(false)\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasPermission = collectionPermissions?.update?.permission\n\n const modalSlug = `unpublish-${slug}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const handleUnpublish = useCallback(async () => {\n setSubmitted(true)\n await requests\n .patch(`${serverURL}${api}/${slug}${getQueryParams({ _status: { not_equals: 'draft' } })}`, {\n body: JSON.stringify({\n _status: 'draft',\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n toggleModal(modalSlug)\n if (res.status < 400) {\n toast.success(t('general:updatedSuccessfully'))\n router.replace(\n stringifyParams({\n params: {\n page: selectAll ? '1' : undefined,\n },\n }),\n )\n clearRouteCache()\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (e) {\n return addDefaultError()\n }\n })\n }, [\n addDefaultError,\n api,\n getQueryParams,\n i18n.language,\n modalSlug,\n selectAll,\n serverURL,\n slug,\n t,\n toggleModal,\n router,\n clearRouteCache,\n stringifyParams,\n ])\n\n if (!versions?.drafts || selectAll === SelectAllStatus.None || !hasPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <Pill\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSubmitted(false)\n toggleModal(modalSlug)\n }}\n >\n {t('version:unpublish')}\n </Pill>\n <Modal className={baseClass} slug={modalSlug}>\n <MinimalTemplate className={`${baseClass}__template`}>\n <h1>{t('version:confirmUnpublish')}</h1>\n <p>{t('version:aboutToUnpublishSelection', { label: getTranslation(plural, i18n) })}</p>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={submitted ? undefined : () => toggleModal(modalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-unpublish\" onClick={submitted ? undefined : handleUnpublish}>\n {submitted ? t('version:unpublishing') : t('general:confirm')}\n </Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )\n}\n"],"names":["facelessUIImport","getTranslation","useRouter","React","useCallback","useState","toast","useAuth","useConfig","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","MinimalTemplate","requests","Button","Pill","baseClass","UnpublishMany","props","collection","slug","labels","plural","versions","Modal","useModal","routes","api","serverURL","permissions","toggleModal","i18n","t","getQueryParams","selectAll","submitted","setSubmitted","stringifyParams","router","clearRouteCache","collectionPermissions","collections","hasPermission","update","permission","modalSlug","addDefaultError","error","handleUnpublish","patch","_status","not_equals","body","JSON","stringify","headers","language","then","res","json","status","success","replace","params","page","undefined","errors","forEach","message","e","drafts","None","Fragment","className","onClick","h1","p","label","buttonStyle","id","type"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/UnpublishMany/index.tsx"],"sourcesContent":["'use client'\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { Pill } from '../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'unpublish-many'\n\nimport type { ClientCollectionConfig } from 'payload/types'\n\nexport type UnpublishManyProps = {\n collection: ClientCollectionConfig\n}\n\nexport const UnpublishMany: React.FC<UnpublishManyProps> = (props) => {\n const { collection: { slug, labels: { plural }, versions } = {} } = props\n const { Modal, useModal } = facelessUIImport\n\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const { permissions } = useAuth()\n const { toggleModal } = useModal()\n const { i18n, t } = useTranslation()\n const { getQueryParams, selectAll } = useSelection()\n const [submitted, setSubmitted] = useState(false)\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasPermission = collectionPermissions?.update?.permission\n\n const modalSlug = `unpublish-${slug}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const handleUnpublish = useCallback(async () => {\n setSubmitted(true)\n await requests\n .patch(`${serverURL}${api}/${slug}${getQueryParams({ _status: { not_equals: 'draft' } })}`, {\n body: JSON.stringify({\n _status: 'draft',\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n toggleModal(modalSlug)\n if (res.status < 400) {\n toast.success(t('general:updatedSuccessfully'))\n router.replace(\n stringifyParams({\n params: {\n page: selectAll ? '1' : undefined,\n },\n }),\n )\n clearRouteCache()\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (e) {\n return addDefaultError()\n }\n })\n }, [\n addDefaultError,\n api,\n getQueryParams,\n i18n.language,\n modalSlug,\n selectAll,\n serverURL,\n slug,\n t,\n toggleModal,\n router,\n clearRouteCache,\n stringifyParams,\n ])\n\n if (!versions?.drafts || selectAll === SelectAllStatus.None || !hasPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <Pill\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSubmitted(false)\n toggleModal(modalSlug)\n }}\n >\n {t('version:unpublish')}\n </Pill>\n <Modal className={baseClass} slug={modalSlug}>\n <MinimalTemplate className={`${baseClass}__template`}>\n <h1>{t('version:confirmUnpublish')}</h1>\n <p>{t('version:aboutToUnpublishSelection', { label: getTranslation(plural, i18n) })}</p>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={submitted ? undefined : () => toggleModal(modalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-unpublish\" onClick={submitted ? undefined : handleUnpublish}>\n {submitted ? t('version:unpublishing') : t('general:confirm')}\n </Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )\n}\n"],"names":["facelessUIImport","getTranslation","useRouter","React","useCallback","useState","toast","useAuth","useConfig","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","MinimalTemplate","requests","Button","Pill","baseClass","UnpublishMany","props","collection","slug","labels","plural","versions","Modal","useModal","routes","api","serverURL","permissions","toggleModal","i18n","t","getQueryParams","selectAll","submitted","setSubmitted","stringifyParams","router","clearRouteCache","collectionPermissions","collections","hasPermission","update","permission","modalSlug","addDefaultError","error","handleUnpublish","patch","_status","not_equals","body","JSON","stringify","headers","language","then","res","json","status","success","replace","params","page","undefined","errors","forEach","message","e","drafts","None","Fragment","className","onClick","h1","p","label","buttonStyle","id","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig } from 'payload/types'\n\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { isImage } from 'payload/utilities'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToValues } from '../../utilities/reduceFieldsToValues.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\nexport const UploadActions = ({ canEdit, showSizePreviews }) => {\n const { t } = useTranslation()\n return (\n <div className={`${baseClass}__file-mutation`}>\n {showSizePreviews && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {canEdit && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </div>\n )\n}\n\nexport type UploadProps = {\n collectionSlug: string\n initialState?: FormState\n onChange?: (file?: File) => void\n updatedAt?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, initialState, onChange, updatedAt, uploadConfig } = props\n\n const submitted = useFormSubmitted()\n const [replacingFile, setReplacingFile] = useState(false)\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const { t } = useTranslation()\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const handleFileNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n if (value) {\n const fileValue = value\n // Creating a new File object with updated properties\n const newFile = new File([fileValue], updatedFileName, { type: fileValue.type })\n setValue(newFile) // Updating the state with the new File object\n }\n }\n\n const handleFileSelection = React.useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n setValue(fileToUpload)\n },\n [setValue],\n )\n\n const handleFileRemoval = useCallback(() => {\n setReplacingFile(true)\n setValue(null)\n setFileSrc('')\n }, [setValue])\n\n useEffect(() => {\n setDoc(reduceFieldsToValues(initialState || {}, true))\n setReplacingFile(false)\n }, [initialState])\n\n useEffect(() => {\n if (value instanceof File) {\n const fileReader = new FileReader()\n fileReader.onload = (e) => {\n const imgSrc = e.target?.result\n\n if (typeof imgSrc === 'string') {\n setFileSrc(imgSrc)\n }\n }\n fileReader.readAsDataURL(value)\n }\n\n if (typeof onChange === 'function') {\n onChange(value)\n }\n }, [value, onChange, updatedAt])\n\n const canRemoveUpload =\n docPermissions?.update?.permission &&\n 'delete' in docPermissions &&\n docPermissions?.delete?.permission\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions)\n\n const lastSubmittedTime = submitted ? new Date().toISOString() : null\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {doc.filename && !replacingFile && (\n <FileDetails\n canEdit={showCrop || showFocalPoint}\n collectionSlug={collectionSlug}\n doc={doc}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n imageCacheTag={lastSubmittedTime}\n uploadConfig={uploadConfig}\n />\n )}\n {(!doc.filename || replacingFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && (\n <Dropzone\n className={`${baseClass}__dropzone`}\n mimeTypes={uploadConfig?.mimeTypes}\n onChange={handleFileSelection}\n />\n )}\n\n {value && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={value.name}\n />\n\n {isImage(value.type) && value.type !== 'image/svg+xml' && (\n <UploadActions\n canEdit={showCrop || showFocalPoint}\n showSizePreviews={hasImageSizes && doc.filename && !replacingFile}\n />\n )}\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || doc.filename) && (\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n doc={doc || undefined}\n fileName={value?.name || doc?.filename}\n fileSrc={fileSrc || doc?.url}\n imageCacheTag={lastSubmittedTime}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n )}\n {doc && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: doc?.filename })}\n >\n <PreviewSizes doc={doc} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"names":["FieldError","isImage","React","useCallback","useEffect","useState","fieldBaseClass","useFormSubmitted","useField","useDocumentInfo","useTranslation","reduceFieldsToValues","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","canEdit","showSizePreviews","t","div","className","slug","Upload","props","collectionSlug","initialState","onChange","updatedAt","uploadConfig","submitted","replacingFile","setReplacingFile","fileSrc","setFileSrc","doc","setDoc","docPermissions","errorMessage","setValue","showError","path","handleFileNameChange","e","updatedFileName","target","fileValue","newFile","File","type","handleFileSelection","files","fileToUpload","handleFileRemoval","fileReader","FileReader","onload","imgSrc","result","readAsDataURL","canRemoveUpload","update","permission","delete","hasImageSizes","imageSizes","length","hasResizeOptions","Boolean","resizeOptions","crop","showCrop","focalPoint","showFocalPoint","lastSubmittedTime","Date","toISOString","filter","join","message","filename","handleRemove","imageCacheTag","mimeTypes","Fragment","input","name","buttonStyle","icon","iconStyle","onClick","round","tooltip","Header","fileName","url","hoverTitle","title","label"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig } from 'payload/types'\n\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { isImage } from 'payload/utilities'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToValues } from '../../utilities/reduceFieldsToValues.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\nexport const UploadActions = ({ canEdit, showSizePreviews }) => {\n const { t } = useTranslation()\n return (\n <div className={`${baseClass}__file-mutation`}>\n {showSizePreviews && (\n <DrawerToggler className={`${baseClass}__previewSizes`} slug={sizePreviewSlug}>\n {t('upload:previewSizes')}\n </DrawerToggler>\n )}\n {canEdit && (\n <DrawerToggler className={`${baseClass}__edit`} slug={editDrawerSlug}>\n {t('upload:editImage')}\n </DrawerToggler>\n )}\n </div>\n )\n}\n\nexport type UploadProps = {\n collectionSlug: string\n initialState?: FormState\n onChange?: (file?: File) => void\n updatedAt?: string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { collectionSlug, initialState, onChange, updatedAt, uploadConfig } = props\n\n const submitted = useFormSubmitted()\n const [replacingFile, setReplacingFile] = useState(false)\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const { t } = useTranslation()\n const [doc, setDoc] = useState(reduceFieldsToValues(initialState || {}, true))\n const { docPermissions } = useDocumentInfo()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const handleFileNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n if (value) {\n const fileValue = value\n // Creating a new File object with updated properties\n const newFile = new File([fileValue], updatedFileName, { type: fileValue.type })\n setValue(newFile) // Updating the state with the new File object\n }\n }\n\n const handleFileSelection = React.useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n setValue(fileToUpload)\n },\n [setValue],\n )\n\n const handleFileRemoval = useCallback(() => {\n setReplacingFile(true)\n setValue(null)\n setFileSrc('')\n }, [setValue])\n\n useEffect(() => {\n setDoc(reduceFieldsToValues(initialState || {}, true))\n setReplacingFile(false)\n }, [initialState])\n\n useEffect(() => {\n if (value instanceof File) {\n const fileReader = new FileReader()\n fileReader.onload = (e) => {\n const imgSrc = e.target?.result\n\n if (typeof imgSrc === 'string') {\n setFileSrc(imgSrc)\n }\n }\n fileReader.readAsDataURL(value)\n }\n\n if (typeof onChange === 'function') {\n onChange(value)\n }\n }, [value, onChange, updatedAt])\n\n const canRemoveUpload =\n docPermissions?.update?.permission &&\n 'delete' in docPermissions &&\n docPermissions?.delete?.permission\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions)\n\n const lastSubmittedTime = submitted ? new Date().toISOString() : null\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {doc.filename && !replacingFile && (\n <FileDetails\n canEdit={showCrop || showFocalPoint}\n collectionSlug={collectionSlug}\n doc={doc}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n imageCacheTag={lastSubmittedTime}\n uploadConfig={uploadConfig}\n />\n )}\n {(!doc.filename || replacingFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && (\n <Dropzone\n className={`${baseClass}__dropzone`}\n mimeTypes={uploadConfig?.mimeTypes}\n onChange={handleFileSelection}\n />\n )}\n\n {value && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n type=\"text\"\n value={value.name}\n />\n\n {isImage(value.type) && value.type !== 'image/svg+xml' && (\n <UploadActions\n canEdit={showCrop || showFocalPoint}\n showSizePreviews={hasImageSizes && doc.filename && !replacingFile}\n />\n )}\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || doc.filename) && (\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n doc={doc || undefined}\n fileName={value?.name || doc?.filename}\n fileSrc={fileSrc || doc?.url}\n imageCacheTag={lastSubmittedTime}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n )}\n {doc && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: doc?.filename })}\n >\n <PreviewSizes doc={doc} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"names":["FieldError","isImage","React","useCallback","useEffect","useState","fieldBaseClass","useFormSubmitted","useField","useDocumentInfo","useTranslation","reduceFieldsToValues","Button","Drawer","DrawerToggler","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","canEdit","showSizePreviews","t","div","className","slug","Upload","props","collectionSlug","initialState","onChange","updatedAt","uploadConfig","submitted","replacingFile","setReplacingFile","fileSrc","setFileSrc","doc","setDoc","docPermissions","errorMessage","setValue","showError","path","handleFileNameChange","e","updatedFileName","target","fileValue","newFile","File","type","handleFileSelection","files","fileToUpload","handleFileRemoval","fileReader","FileReader","onload","imgSrc","result","readAsDataURL","canRemoveUpload","update","permission","delete","hasImageSizes","imageSizes","length","hasResizeOptions","Boolean","resizeOptions","crop","showCrop","focalPoint","showFocalPoint","lastSubmittedTime","Date","toISOString","filter","join","message","filename","handleRemove","imageCacheTag","mimeTypes","Fragment","input","name","buttonStyle","icon","iconStyle","onClick","round","tooltip","Header","fileName","url","hoverTitle","title","label"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/ViewDescription/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nexport type DescriptionFunction = () => string\n\nexport type DescriptionComponent = React.ComponentType<any>\n\ntype Description = DescriptionComponent | DescriptionFunction | Record<string, string> | string\n\nexport type ViewDescriptionProps = {\n description?: Description\n}\n\nexport function isComponent(description: Description): description is DescriptionComponent {\n return React.isValidElement(description)\n}\n\nexport const ViewDescription: React.FC<ViewDescriptionProps> = (props) => {\n const { i18n } = useTranslation()\n const { description } = props\n\n if (isComponent(description)) {\n const Description = description\n return <Description />\n }\n\n if (description) {\n return (\n <div className=\"view-description\">\n {typeof description === 'function' ? description() : getTranslation(description, i18n)}\n </div>\n )\n }\n\n return null\n}\n"],"names":["getTranslation","React","useTranslation","isComponent","description","isValidElement","ViewDescription","props","i18n","Description","div","className"],"mappings":"AAAA;AACA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAEzB,SAASC,cAAc,QAAQ,uCAAsC;AAarE,OAAO,SAASC,YAAYC,WAAwB;IAClD,qBAAOH,MAAMI,cAAc,CAACD;AAC9B;AAEA,OAAO,MAAME,kBAAkD,CAACC;IAC9D,MAAM,EAAEC,IAAI,EAAE,GAAGN;IACjB,MAAM,EAAEE,WAAW,EAAE,GAAGG;IAExB,IAAIJ,YAAYC,cAAc;QAC5B,MAAMK,cAAcL;QACpB,qBAAO,oBAACK;IACV;IAEA,IAAIL,aAAa;QACf,qBACE,oBAACM;YAAIC,WAAU;WACZ,OAAOP,gBAAgB,aAAaA,gBAAgBJ,eAAeI,aAAaI;IAGvF;IAEA,OAAO;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/ViewDescription/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\n\nexport type DescriptionFunction = () => string\n\nexport type DescriptionComponent = React.ComponentType<any>\n\ntype Description = DescriptionComponent | DescriptionFunction | Record<string, string> | string\n\nexport type ViewDescriptionProps = {\n description?: Description\n}\n\nexport function isComponent(description: Description): description is DescriptionComponent {\n return React.isValidElement(description)\n}\n\nexport const ViewDescription: React.FC<ViewDescriptionProps> = (props) => {\n const { i18n } = useTranslation()\n const { description } = props\n\n if (isComponent(description)) {\n const Description = description\n return <Description />\n }\n\n if (description) {\n return (\n <div className=\"view-description\">\n {typeof description === 'function' ? description() : getTranslation(description, i18n)}\n </div>\n )\n }\n\n return null\n}\n"],"names":["getTranslation","React","useTranslation","isComponent","description","isValidElement","ViewDescription","props","i18n","Description","div","className"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAEzB,SAASC,cAAc,QAAQ,uCAAsC;AAarE,OAAO,SAASC,YAAYC,WAAwB;IAClD,qBAAOH,MAAMI,cAAc,CAACD;AAC9B;AAEA,OAAO,MAAME,kBAAkD,CAACC;IAC9D,MAAM,EAAEC,IAAI,EAAE,GAAGN;IACjB,MAAM,EAAEE,WAAW,EAAE,GAAGG;IAExB,IAAIJ,YAAYC,cAAc;QAC5B,MAAMK,cAAcL;QACpB,qBAAO,oBAACK;IACV;IAEA,IAAIL,aAAa;QACf,qBACE,oBAACM;YAAIC,WAAU;WACZ,OAAOP,gBAAgB,aAAaA,gBAAgBJ,eAAeI,aAAaI;IAGvF;IAEA,OAAO;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/ViewDescription/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../../../src/elements/ViewDescription/types.ts"],"names":[],"rangeMappings":"","mappings":""}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/elements/WhereBuilder/Condition/Date/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport type { Props } from './types.js'\n\nimport { DatePickerField } from '../../../DatePicker/index.js'\n\nconst baseClass = 'condition-value-date'\n\nexport const DateField: React.FC<Props> = ({ admin, disabled, onChange, value }) => {\n const { date } = admin || {}\n\n return (\n <div className={baseClass}>\n <DatePickerField {...date} onChange={onChange} readOnly={disabled} value={value} />\n </div>\n )\n}\n"],"names":["React","DatePickerField","baseClass","DateField","admin","disabled","onChange","value","date","div","className","readOnly"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,eAAe,QAAQ,+BAA8B;AAE9D,MAAMC,YAAY;AAElB,OAAO,MAAMC,YAA6B,CAAC,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;IAC7E,MAAM,EAAEC,IAAI,EAAE,GAAGJ,SAAS,CAAC;IAE3B,qBACE,oBAACK;QAAIC,WAAWR;qBACd,oBAACD;QAAiB,GAAGO,IAAI;QAAEF,UAAUA;QAAUK,UAAUN;QAAUE,OAAOA;;AAGhF,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/elements/WhereBuilder/Condition/Date/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport type { Props } from './types.js'\n\nimport { DatePickerField } from '../../../DatePicker/index.js'\n\nconst baseClass = 'condition-value-date'\n\nexport const DateField: React.FC<Props> = ({ admin, disabled, onChange, value }) => {\n const { date } = admin || {}\n\n return (\n <div className={baseClass}>\n <DatePickerField {...date} onChange={onChange} readOnly={disabled} value={value} />\n </div>\n )\n}\n"],"names":["React","DatePickerField","baseClass","DateField","admin","disabled","onChange","value","date","div","className","readOnly"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,eAAe,QAAQ,+BAA8B;AAE9D,MAAMC,YAAY;AAElB,OAAO,MAAMC,YAA6B,CAAC,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;IAC7E,MAAM,EAAEC,IAAI,EAAE,GAAGJ,SAAS,CAAC;IAE3B,qBACE,oBAACK;QAAIC,WAAWR;qBACd,oBAACD;QAAiB,GAAGO,IAAI;QAAEF,UAAUA;QAAUK,UAAUN;QAAUE,OAAOA;;AAGhF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/elements/WhereBuilder/Condition/Date/types.ts"],"sourcesContent":["import type { Props as DateType } from '../../../../elements/DatePicker/types.js'\n\nexport type Props = {\n admin?: {\n date?: DateType\n }\n disabled?: boolean\n onChange: () => void\n value: Date\n}\n"],"names":[],"mappings":"AAEA,WAOC"}
1
+ {"version":3,"sources":["../../../../../src/elements/WhereBuilder/Condition/Date/types.ts"],"sourcesContent":["import type { Props as DateType } from '../../../../elements/DatePicker/types.js'\n\nexport type Props = {\n admin?: {\n date?: DateType\n }\n disabled?: boolean\n onChange: () => void\n value: Date\n}\n"],"names":[],"rangeMappings":"","mappings":"AAEA,WAOC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/elements/WhereBuilder/Condition/Number/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'condition-value-number'\n\nexport const NumberField: React.FC<Props> = ({ disabled, onChange, value }) => {\n const { t } = useTranslation()\n return (\n <input\n className={baseClass}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n placeholder={t('general:enterAValue')}\n type=\"number\"\n value={value}\n />\n )\n}\n"],"names":["React","useTranslation","baseClass","NumberField","disabled","onChange","value","t","input","className","e","target","placeholder","type"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,cAAc,QAAQ,6CAA4C;AAG3E,MAAMC,YAAY;AAElB,OAAO,MAAMC,cAA+B,CAAC,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;IACxE,MAAM,EAAEC,CAAC,EAAE,GAAGN;IACd,qBACE,oBAACO;QACCC,WAAWP;QACXE,UAAUA;QACVC,UAAU,CAACK,IAAML,SAASK,EAAEC,MAAM,CAACL,KAAK;QACxCM,aAAaL,EAAE;QACfM,MAAK;QACLP,OAAOA;;AAGb,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/elements/WhereBuilder/Condition/Number/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'condition-value-number'\n\nexport const NumberField: React.FC<Props> = ({ disabled, onChange, value }) => {\n const { t } = useTranslation()\n return (\n <input\n className={baseClass}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n placeholder={t('general:enterAValue')}\n type=\"number\"\n value={value}\n />\n )\n}\n"],"names":["React","useTranslation","baseClass","NumberField","disabled","onChange","value","t","input","className","e","target","placeholder","type"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,cAAc,QAAQ,6CAA4C;AAG3E,MAAMC,YAAY;AAElB,OAAO,MAAMC,cAA+B,CAAC,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAE;IACxE,MAAM,EAAEC,CAAC,EAAE,GAAGN;IACd,qBACE,oBAACO;QACCC,WAAWP;QACXE,UAAUA;QACVC,UAAU,CAACK,IAAML,SAASK,EAAEC,MAAM,CAACL,KAAK;QACxCM,aAAaL,EAAE;QACfM,MAAK;QACLP,OAAOA;;AAGb,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/elements/WhereBuilder/Condition/Number/types.ts"],"sourcesContent":["export type Props = {\n disabled?: boolean\n onChange: (e: string) => void\n value: string\n}\n"],"names":[],"mappings":"AAAA,WAIC"}
1
+ {"version":3,"sources":["../../../../../src/elements/WhereBuilder/Condition/Number/types.ts"],"sourcesContent":["export type Props = {\n disabled?: boolean\n onChange: (e: string) => void\n value: string\n}\n"],"names":[],"rangeMappings":"","mappings":"AAAA,WAIC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-floating-promises */\nimport type { PaginatedDocs } from 'payload/database'\n\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { GetResults, Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport './index.scss'\nimport optionsReducer from './optionsReducer.js'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipField: React.FC<Props> = (props) => {\n const { admin: { isSortable } = {}, disabled, hasMany, onChange, relationTo, value } = props\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1)\n const [lastLoadedPage, setLastLoadedPage] = useState(1)\n const [search, setSearch] = useState('')\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const debouncedSearch = useDebounce(search, 300)\n const { i18n, t } = useTranslation()\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = collections.find((coll) => coll.slug === relation)\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [collections, hasMultipleRelations, i18n],\n )\n\n const getResults = useCallback<GetResults>(\n async ({\n lastFullyLoadedRelation: lastFullyLoadedRelationArg,\n lastLoadedPage: lastLoadedPageArg,\n search: searchArg,\n // eslint-disable-next-line @typescript-eslint/require-await\n }) => {\n let lastLoadedPageToUse = typeof lastLoadedPageArg !== 'undefined' ? lastLoadedPageArg : 1\n const lastFullyLoadedRelationToUse =\n typeof lastFullyLoadedRelationArg !== 'undefined' ? lastFullyLoadedRelationArg : -1\n\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const relationsToFetch =\n lastFullyLoadedRelationToUse === -1\n ? relations\n : relations.slice(lastFullyLoadedRelationToUse + 1)\n\n let resultsFetched = 0\n\n if (!errorLoading) {\n relationsToFetch.reduce(async (priorRelation, relation) => {\n await priorRelation\n\n if (resultsFetched < 10) {\n const collection = collections.find((coll) => coll.slug === relation)\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n const searchParam = searchArg ? `&where[${fieldToSearch}][like]=${searchArg}` : ''\n\n const response = await fetch(\n `${serverURL}${api}/${relation}?limit=${maxResultsPerRequest}&page=${lastLoadedPageToUse}&depth=0${searchParam}`,\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n resultsFetched += data.docs.length\n addOptions(data, relation)\n setLastLoadedPage(data.page)\n\n if (!data.nextPage) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n\n // If there are more relations to search, need to reset lastLoadedPage to 1\n // both locally within function and state\n if (relations.indexOf(relation) + 1 < relations.length) {\n lastLoadedPageToUse = 1\n }\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n }\n }, Promise.resolve())\n }\n },\n [i18n, relationTo, errorLoading, collections, serverURL, api, addOptions, t],\n )\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (hasMany) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value === val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value === val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value === valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value === value)\n }\n\n return undefined\n }, [hasMany, hasMultipleRelations, value, options])\n\n const handleInputChange = useCallback(\n (newSearch) => {\n if (search !== newSearch) {\n setSearch(newSearch)\n }\n },\n [search],\n )\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(`${serverURL}${api}/${relation}/${id}?depth=0`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, serverURL, t],\n )\n\n // ///////////////////////////\n // Get results when search input changes\n // ///////////////////////////\n\n useEffect(() => {\n dispatchOptions({\n type: 'CLEAR',\n i18n,\n required: true,\n })\n\n setHasLoadedFirstOptions(true)\n setLastLoadedPage(1)\n setLastFullyLoadedRelation(-1)\n getResults({ search: debouncedSearch })\n }, [getResults, debouncedSearch, relationTo, i18n])\n\n // ///////////////////////////\n // Format options once first options have been retrieved\n // ///////////////////////////\n\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (hasMany) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n addOptionByID(value[i].value, value[i].relationTo)\n } else {\n addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n hasMany,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {!errorLoading && (\n <ReactSelect\n disabled={disabled}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n if (hasMany) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={() => {\n getResults({ lastFullyLoadedRelation, lastLoadedPage: lastLoadedPage + 1 })\n }}\n options={options}\n placeholder={t('general:selectValue')}\n value={valueToRender}\n />\n )}\n {errorLoading && <div className={`${baseClass}__error-loading`}>{errorLoading}</div>}\n </div>\n )\n}\n"],"names":["React","useCallback","useEffect","useReducer","useState","useDebounce","useConfig","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipField","props","admin","isSortable","disabled","hasMany","onChange","relationTo","value","collections","routes","api","serverURL","hasMultipleRelations","Array","isArray","options","dispatchOptions","lastFullyLoadedRelation","setLastFullyLoadedRelation","lastLoadedPage","setLastLoadedPage","search","setSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","debouncedSearch","i18n","t","addOptions","data","relation","collection","find","coll","slug","type","getResults","lastFullyLoadedRelationArg","lastLoadedPageArg","searchArg","lastLoadedPageToUse","lastFullyLoadedRelationToUse","relations","relationsToFetch","slice","resultsFetched","reduce","priorRelation","fieldToSearch","useAsTitle","searchParam","response","fetch","credentials","headers","language","ok","json","docs","length","page","nextPage","indexOf","Promise","resolve","findOptionsByValue","map","val","matchedOption","forEach","opt","some","subOpt","undefined","valueWithRelation","handleInputChange","newSearch","addOptionByID","id","console","error","required","matchedOptions","option","i","classes","filter","Boolean","join","valueToRender","div","className","isMulti","selected","onInputChange","onMenuScrollToBottom","placeholder"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-floating-promises */\nimport type { PaginatedDocs } from 'payload/database'\n\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { GetResults, Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport './index.scss'\nimport optionsReducer from './optionsReducer.js'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipField: React.FC<Props> = (props) => {\n const { admin: { isSortable } = {}, disabled, hasMany, onChange, relationTo, value } = props\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1)\n const [lastLoadedPage, setLastLoadedPage] = useState(1)\n const [search, setSearch] = useState('')\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const debouncedSearch = useDebounce(search, 300)\n const { i18n, t } = useTranslation()\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = collections.find((coll) => coll.slug === relation)\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [collections, hasMultipleRelations, i18n],\n )\n\n const getResults = useCallback<GetResults>(\n async ({\n lastFullyLoadedRelation: lastFullyLoadedRelationArg,\n lastLoadedPage: lastLoadedPageArg,\n search: searchArg,\n // eslint-disable-next-line @typescript-eslint/require-await\n }) => {\n let lastLoadedPageToUse = typeof lastLoadedPageArg !== 'undefined' ? lastLoadedPageArg : 1\n const lastFullyLoadedRelationToUse =\n typeof lastFullyLoadedRelationArg !== 'undefined' ? lastFullyLoadedRelationArg : -1\n\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const relationsToFetch =\n lastFullyLoadedRelationToUse === -1\n ? relations\n : relations.slice(lastFullyLoadedRelationToUse + 1)\n\n let resultsFetched = 0\n\n if (!errorLoading) {\n relationsToFetch.reduce(async (priorRelation, relation) => {\n await priorRelation\n\n if (resultsFetched < 10) {\n const collection = collections.find((coll) => coll.slug === relation)\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n const searchParam = searchArg ? `&where[${fieldToSearch}][like]=${searchArg}` : ''\n\n const response = await fetch(\n `${serverURL}${api}/${relation}?limit=${maxResultsPerRequest}&page=${lastLoadedPageToUse}&depth=0${searchParam}`,\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n resultsFetched += data.docs.length\n addOptions(data, relation)\n setLastLoadedPage(data.page)\n\n if (!data.nextPage) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n\n // If there are more relations to search, need to reset lastLoadedPage to 1\n // both locally within function and state\n if (relations.indexOf(relation) + 1 < relations.length) {\n lastLoadedPageToUse = 1\n }\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n }\n }, Promise.resolve())\n }\n },\n [i18n, relationTo, errorLoading, collections, serverURL, api, addOptions, t],\n )\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (hasMany) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value === val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value === val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value === valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value === value)\n }\n\n return undefined\n }, [hasMany, hasMultipleRelations, value, options])\n\n const handleInputChange = useCallback(\n (newSearch) => {\n if (search !== newSearch) {\n setSearch(newSearch)\n }\n },\n [search],\n )\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(`${serverURL}${api}/${relation}/${id}?depth=0`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, serverURL, t],\n )\n\n // ///////////////////////////\n // Get results when search input changes\n // ///////////////////////////\n\n useEffect(() => {\n dispatchOptions({\n type: 'CLEAR',\n i18n,\n required: true,\n })\n\n setHasLoadedFirstOptions(true)\n setLastLoadedPage(1)\n setLastFullyLoadedRelation(-1)\n getResults({ search: debouncedSearch })\n }, [getResults, debouncedSearch, relationTo, i18n])\n\n // ///////////////////////////\n // Format options once first options have been retrieved\n // ///////////////////////////\n\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (hasMany) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n addOptionByID(value[i].value, value[i].relationTo)\n } else {\n addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n hasMany,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {!errorLoading && (\n <ReactSelect\n disabled={disabled}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n if (hasMany) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={() => {\n getResults({ lastFullyLoadedRelation, lastLoadedPage: lastLoadedPage + 1 })\n }}\n options={options}\n placeholder={t('general:selectValue')}\n value={valueToRender}\n />\n )}\n {errorLoading && <div className={`${baseClass}__error-loading`}>{errorLoading}</div>}\n </div>\n )\n}\n"],"names":["React","useCallback","useEffect","useReducer","useState","useDebounce","useConfig","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipField","props","admin","isSortable","disabled","hasMany","onChange","relationTo","value","collections","routes","api","serverURL","hasMultipleRelations","Array","isArray","options","dispatchOptions","lastFullyLoadedRelation","setLastFullyLoadedRelation","lastLoadedPage","setLastLoadedPage","search","setSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","debouncedSearch","i18n","t","addOptions","data","relation","collection","find","coll","slug","type","getResults","lastFullyLoadedRelationArg","lastLoadedPageArg","searchArg","lastLoadedPageToUse","lastFullyLoadedRelationToUse","relations","relationsToFetch","slice","resultsFetched","reduce","priorRelation","fieldToSearch","useAsTitle","searchParam","response","fetch","credentials","headers","language","ok","json","docs","length","page","nextPage","indexOf","Promise","resolve","findOptionsByValue","map","val","matchedOption","forEach","opt","some","subOpt","undefined","valueWithRelation","handleInputChange","newSearch","addOptionByID","id","console","error","required","matchedOptions","option","i","classes","filter","Boolean","join","valueToRender","div","className","isMulti","selected","onInputChange","onMenuScrollToBottom","placeholder"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}