@payloadcms/ui 3.0.0-alpha.0 → 3.0.0-alpha.1

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 (405) hide show
  1. package/dist/@types/assets.d.js +3 -0
  2. package/dist/config.js +13 -0
  3. package/dist/elements/ArrayAction/index.js +120 -0
  4. package/dist/elements/ArrayAction/types.js +6 -0
  5. package/dist/elements/Autosave/index.js +210 -0
  6. package/dist/elements/Autosave/types.js +6 -0
  7. package/dist/elements/Banner/index.js +52 -0
  8. package/dist/elements/Banner/types.js +6 -0
  9. package/dist/elements/Button/index.js +166 -0
  10. package/dist/elements/Button/types.js +6 -0
  11. package/dist/elements/Card/index.js +46 -0
  12. package/dist/elements/Card/types.js +6 -0
  13. package/dist/elements/CodeEditor/CodeEditor.js +53 -0
  14. package/dist/elements/CodeEditor/index.js +68 -0
  15. package/dist/elements/CodeEditor/types.js +6 -0
  16. package/dist/elements/Collapsible/index.js +128 -0
  17. package/dist/elements/Collapsible/provider.js +90 -0
  18. package/dist/elements/Collapsible/types.js +6 -0
  19. package/dist/elements/ColumnSelector/index.js +109 -0
  20. package/dist/elements/ColumnSelector/types.js +6 -0
  21. package/dist/elements/CopyToClipboard/index.js +98 -0
  22. package/dist/elements/CopyToClipboard/types.js +6 -0
  23. package/dist/elements/DatePicker/DatePicker.js +147 -0
  24. package/dist/elements/DatePicker/index.js +63 -0
  25. package/dist/elements/DatePicker/types.js +6 -0
  26. package/dist/elements/DeleteDocument/index.js +178 -0
  27. package/dist/elements/DeleteDocument/types.js +6 -0
  28. package/dist/elements/DeleteMany/index.js +176 -0
  29. package/dist/elements/DeleteMany/types.js +6 -0
  30. package/dist/elements/DocumentControls/index.js +159 -0
  31. package/dist/elements/DocumentDrawer/DrawerContent.js +219 -0
  32. package/dist/elements/DocumentDrawer/index.js +185 -0
  33. package/dist/elements/DocumentDrawer/types.js +6 -0
  34. package/dist/elements/DocumentFields/index.js +55 -0
  35. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +23 -0
  36. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +42 -0
  37. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +105 -0
  38. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +48 -0
  39. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +24 -0
  40. package/dist/elements/DocumentHeader/Tabs/index.js +84 -0
  41. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +27 -0
  42. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +75 -0
  43. package/dist/elements/DocumentHeader/index.js +81 -0
  44. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +82 -0
  45. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js +6 -0
  46. package/dist/elements/DraggableSortable/index.js +96 -0
  47. package/dist/elements/DraggableSortable/types.js +6 -0
  48. package/dist/elements/DraggableSortable/useDraggableSortable/index.js +32 -0
  49. package/dist/elements/DraggableSortable/useDraggableSortable/types.js +6 -0
  50. package/dist/elements/Drawer/index.js +156 -0
  51. package/dist/elements/Drawer/types.js +6 -0
  52. package/dist/elements/Drawer/useDrawerSlug.js +23 -0
  53. package/dist/elements/Dropzone/index.js +117 -0
  54. package/dist/elements/DuplicateDocument/index.js +217 -0
  55. package/dist/elements/DuplicateDocument/types.js +6 -0
  56. package/dist/elements/EditMany/index.js +274 -0
  57. package/dist/elements/EditMany/types.js +6 -0
  58. package/dist/elements/EditUpload/index.js +390 -0
  59. package/dist/elements/ErrorPill/index.js +37 -0
  60. package/dist/elements/ErrorPill/types.js +6 -0
  61. package/dist/elements/FieldSelect/index.js +138 -0
  62. package/dist/elements/FileDetails/FileMeta/index.js +96 -0
  63. package/dist/elements/FileDetails/FileMeta/types.js +6 -0
  64. package/dist/elements/FileDetails/index.js +59 -0
  65. package/dist/elements/FileDetails/types.js +6 -0
  66. package/dist/elements/GenerateConfirmation/index.js +72 -0
  67. package/dist/elements/GenerateConfirmation/types.js +6 -0
  68. package/dist/elements/GetFilterOptions/index.js +57 -0
  69. package/dist/elements/Gutter/index.js +72 -0
  70. package/dist/elements/Hamburger/index.js +54 -0
  71. package/dist/elements/Header/index.js +141 -0
  72. package/dist/elements/HydrateClientUser/index.js +28 -0
  73. package/dist/elements/IDLabel/index.js +28 -0
  74. package/dist/elements/ListControls/getTextFieldsToBeSearched.js +21 -0
  75. package/dist/elements/ListControls/index.js +149 -0
  76. package/dist/elements/ListControls/types.js +6 -0
  77. package/dist/elements/ListDrawer/DrawerContent.js +315 -0
  78. package/dist/elements/ListDrawer/index.js +198 -0
  79. package/dist/elements/ListDrawer/types.js +6 -0
  80. package/dist/elements/ListSelection/index.js +83 -0
  81. package/dist/elements/Loading/index.js +103 -0
  82. package/dist/elements/LoadingOverlay/index.js +130 -0
  83. package/dist/elements/LoadingOverlay/reducer.js +49 -0
  84. package/dist/elements/LoadingOverlay/types.js +6 -0
  85. package/dist/elements/Localizer/LocalizerLabel/index.js +43 -0
  86. package/dist/elements/Localizer/index.js +121 -0
  87. package/dist/elements/Logout/index.js +50 -0
  88. package/dist/elements/Nav/NavHamburger/index.js +34 -0
  89. package/dist/elements/Nav/NavToggler/index.js +53 -0
  90. package/dist/elements/Nav/NavWrapper/index.js +34 -0
  91. package/dist/elements/Nav/context.js +150 -0
  92. package/dist/elements/Nav/index.js +107 -0
  93. package/dist/elements/NavGroup/index.js +129 -0
  94. package/dist/elements/Pagination/ClickableArrow/index.js +36 -0
  95. package/dist/elements/Pagination/ClickableArrow/types.js +6 -0
  96. package/dist/elements/Pagination/Page/index.js +33 -0
  97. package/dist/elements/Pagination/Page/types.js +6 -0
  98. package/dist/elements/Pagination/Separator/index.js +22 -0
  99. package/dist/elements/Pagination/index.js +126 -0
  100. package/dist/elements/Pagination/types.js +6 -0
  101. package/dist/elements/PerPage/index.js +115 -0
  102. package/dist/elements/Pill/index.js +93 -0
  103. package/dist/elements/Pill/types.js +6 -0
  104. package/dist/elements/Popup/PopupButtonList/index.js +118 -0
  105. package/dist/elements/Popup/PopupTrigger/index.js +51 -0
  106. package/dist/elements/Popup/PopupTrigger/types.js +6 -0
  107. package/dist/elements/Popup/index.js +193 -0
  108. package/dist/elements/Popup/types.js +6 -0
  109. package/dist/elements/PreviewButton/index.js +129 -0
  110. package/dist/elements/PreviewSizes/index.js +163 -0
  111. package/dist/elements/Publish/index.js +153 -0
  112. package/dist/elements/PublishMany/index.js +169 -0
  113. package/dist/elements/PublishMany/types.js +6 -0
  114. package/dist/elements/ReactSelect/ClearIndicator/index.js +31 -0
  115. package/dist/elements/ReactSelect/Control/index.js +49 -0
  116. package/dist/elements/ReactSelect/MultiValue/index.js +55 -0
  117. package/dist/elements/ReactSelect/MultiValueLabel/index.js +34 -0
  118. package/dist/elements/ReactSelect/MultiValueRemove/index.js +48 -0
  119. package/dist/elements/ReactSelect/SingleValue/index.js +30 -0
  120. package/dist/elements/ReactSelect/ValueContainer/index.js +29 -0
  121. package/dist/elements/ReactSelect/index.js +177 -0
  122. package/dist/elements/ReactSelect/types.js +6 -0
  123. package/dist/elements/RenderCustomComponent/index.js +28 -0
  124. package/dist/elements/RenderCustomComponent/types.js +6 -0
  125. package/dist/elements/RenderTitle/index.js +42 -0
  126. package/dist/elements/RenderTitle/types.js +6 -0
  127. package/dist/elements/Save/index.js +103 -0
  128. package/dist/elements/SaveDraft/index.js +147 -0
  129. package/dist/elements/SearchFilter/index.js +138 -0
  130. package/dist/elements/SearchFilter/types.js +6 -0
  131. package/dist/elements/SelectAll/index.js +35 -0
  132. package/dist/elements/SelectRow/index.js +31 -0
  133. package/dist/elements/ShimmerEffect/index.js +96 -0
  134. package/dist/elements/SortColumn/index.js +138 -0
  135. package/dist/elements/SortColumn/types.js +6 -0
  136. package/dist/elements/SortComplex/index.js +156 -0
  137. package/dist/elements/SortComplex/types.js +6 -0
  138. package/dist/elements/Status/index.js +202 -0
  139. package/dist/elements/StayLoggedIn/index.js +57 -0
  140. package/dist/elements/StayLoggedIn/types.js +6 -0
  141. package/dist/elements/StepNav/SetStepNav.js +25 -0
  142. package/dist/elements/StepNav/index.js +129 -0
  143. package/dist/elements/StepNav/types.js +6 -0
  144. package/dist/elements/Table/TableCellProvider/index.js +47 -0
  145. package/dist/elements/Table/index.js +63 -0
  146. package/dist/elements/Table/types.js +6 -0
  147. package/dist/elements/TableColumns/buildColumns.js +77 -0
  148. package/dist/elements/TableColumns/columnReducer.js +47 -0
  149. package/dist/elements/TableColumns/index.js +199 -0
  150. package/dist/elements/Thumbnail/index.js +89 -0
  151. package/dist/elements/Thumbnail/types.js +6 -0
  152. package/dist/elements/ThumbnailCard/index.js +54 -0
  153. package/dist/elements/ThumbnailCard/types.js +6 -0
  154. package/dist/elements/Tooltip/index.js +114 -0
  155. package/dist/elements/Tooltip/types.js +6 -0
  156. package/dist/elements/Translation/index.js +81 -0
  157. package/dist/elements/UnpublishMany/index.js +169 -0
  158. package/dist/elements/UnpublishMany/types.js +6 -0
  159. package/dist/elements/Upload/index.js +250 -0
  160. package/dist/elements/Upload/types.js +6 -0
  161. package/dist/elements/ViewDescription/index.js +38 -0
  162. package/dist/elements/ViewDescription/types.js +21 -0
  163. package/dist/elements/WhereBuilder/Condition/Date/index.js +32 -0
  164. package/dist/elements/WhereBuilder/Condition/Date/types.js +6 -0
  165. package/dist/elements/WhereBuilder/Condition/Number/index.js +33 -0
  166. package/dist/elements/WhereBuilder/Condition/Number/types.js +6 -0
  167. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +337 -0
  168. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +98 -0
  169. package/dist/elements/WhereBuilder/Condition/Relationship/types.js +6 -0
  170. package/dist/elements/WhereBuilder/Condition/Select/index.js +96 -0
  171. package/dist/elements/WhereBuilder/Condition/Select/types.js +6 -0
  172. package/dist/elements/WhereBuilder/Condition/Text/index.js +33 -0
  173. package/dist/elements/WhereBuilder/Condition/Text/types.js +6 -0
  174. package/dist/elements/WhereBuilder/Condition/index.js +203 -0
  175. package/dist/elements/WhereBuilder/Condition/types.js +6 -0
  176. package/dist/elements/WhereBuilder/field-types.js +185 -0
  177. package/dist/elements/WhereBuilder/index.js +235 -0
  178. package/dist/elements/WhereBuilder/reducer.js +88 -0
  179. package/dist/elements/WhereBuilder/transformWhereQuery.js +57 -0
  180. package/dist/elements/WhereBuilder/types.js +6 -0
  181. package/dist/elements/WhereBuilder/validateWhereQuery.js +46 -0
  182. package/dist/exports/assets.js +27 -0
  183. package/dist/exports/elements.js +226 -0
  184. package/dist/exports/forms.js +158 -0
  185. package/dist/exports/graphics.js +27 -0
  186. package/dist/exports/hooks.js +55 -0
  187. package/dist/exports/icons.js +82 -0
  188. package/dist/exports/index.js +28 -0
  189. package/dist/exports/providers.js +116 -0
  190. package/dist/exports/templates.js +22 -0
  191. package/dist/exports/types.js +6 -0
  192. package/dist/exports/utilities.js +62 -0
  193. package/dist/forms/Error/index.js +43 -0
  194. package/dist/forms/FieldDescription/index.js +38 -0
  195. package/dist/forms/FieldDescription/types.js +6 -0
  196. package/dist/forms/FieldPathProvider/index.js +44 -0
  197. package/dist/forms/FieldPathProvider/types.js +6 -0
  198. package/dist/forms/Form/buildFieldSchemaMap.js +54 -0
  199. package/dist/forms/Form/buildInitialState.js +26 -0
  200. package/dist/forms/Form/context.js +84 -0
  201. package/dist/forms/Form/createNestedFieldPath.js +25 -0
  202. package/dist/forms/Form/errorMessages.js +15 -0
  203. package/dist/forms/Form/fieldReducer.js +286 -0
  204. package/dist/forms/Form/getDataByPath.js +29 -0
  205. package/dist/forms/Form/getSiblingData.js +50 -0
  206. package/dist/forms/Form/index.js +565 -0
  207. package/dist/forms/Form/initContextState.js +45 -0
  208. package/dist/forms/Form/mergeServerFormState.js +45 -0
  209. package/dist/forms/Form/reduceFieldsToValues.js +34 -0
  210. package/dist/forms/Form/rows.js +53 -0
  211. package/dist/forms/Form/types.js +6 -0
  212. package/dist/forms/Label/index.js +36 -0
  213. package/dist/forms/NullifyField/index.js +103 -0
  214. package/dist/forms/RenderFields/RenderField.js +30 -0
  215. package/dist/forms/RenderFields/index.js +66 -0
  216. package/dist/forms/RenderFields/types.js +6 -0
  217. package/dist/forms/RowLabel/index.js +50 -0
  218. package/dist/forms/RowLabel/types.js +21 -0
  219. package/dist/forms/Submit/index.js +75 -0
  220. package/dist/forms/WatchChildErrors/buildPathSegments.js +37 -0
  221. package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js +35 -0
  222. package/dist/forms/WatchChildErrors/getNestedFieldState.js +28 -0
  223. package/dist/forms/WatchChildErrors/index.js +41 -0
  224. package/dist/forms/fields/Array/ArrayRow.js +87 -0
  225. package/dist/forms/fields/Array/index.js +305 -0
  226. package/dist/forms/fields/Array/types.js +6 -0
  227. package/dist/forms/fields/Blocks/BlockRow.js +101 -0
  228. package/dist/forms/fields/Blocks/BlocksDrawer/BlockSearch/index.js +37 -0
  229. package/dist/forms/fields/Blocks/BlocksDrawer/index.js +134 -0
  230. package/dist/forms/fields/Blocks/BlocksDrawer/types.js +6 -0
  231. package/dist/forms/fields/Blocks/RowActions.js +52 -0
  232. package/dist/forms/fields/Blocks/SectionTitle/index.js +54 -0
  233. package/dist/forms/fields/Blocks/SectionTitle/types.js +6 -0
  234. package/dist/forms/fields/Blocks/index.js +317 -0
  235. package/dist/forms/fields/Blocks/types.js +6 -0
  236. package/dist/forms/fields/Checkbox/Input.js +56 -0
  237. package/dist/forms/fields/Checkbox/index.js +134 -0
  238. package/dist/forms/fields/Checkbox/types.js +6 -0
  239. package/dist/forms/fields/Code/index.js +115 -0
  240. package/dist/forms/fields/Code/types.js +6 -0
  241. package/dist/forms/fields/Collapsible/index.js +169 -0
  242. package/dist/forms/fields/Collapsible/types.js +6 -0
  243. package/dist/forms/fields/ConfirmPassword/index.js +112 -0
  244. package/dist/forms/fields/ConfirmPassword/types.js +6 -0
  245. package/dist/forms/fields/DateTime/index.js +115 -0
  246. package/dist/forms/fields/DateTime/types.js +6 -0
  247. package/dist/forms/fields/Email/index.js +121 -0
  248. package/dist/forms/fields/Email/types.js +6 -0
  249. package/dist/forms/fields/Group/index.js +127 -0
  250. package/dist/forms/fields/Group/provider.js +74 -0
  251. package/dist/forms/fields/Group/types.js +6 -0
  252. package/dist/forms/fields/HiddenInput/index.js +88 -0
  253. package/dist/forms/fields/HiddenInput/types.js +6 -0
  254. package/dist/forms/fields/JSON/index.js +137 -0
  255. package/dist/forms/fields/JSON/types.js +6 -0
  256. package/dist/forms/fields/Number/index.js +212 -0
  257. package/dist/forms/fields/Number/types.js +6 -0
  258. package/dist/forms/fields/Password/index.js +116 -0
  259. package/dist/forms/fields/Password/types.js +6 -0
  260. package/dist/forms/fields/Point/index.js +147 -0
  261. package/dist/forms/fields/Point/types.js +6 -0
  262. package/dist/forms/fields/RadioGroup/Radio/index.js +45 -0
  263. package/dist/forms/fields/RadioGroup/index.js +147 -0
  264. package/dist/forms/fields/RadioGroup/types.js +6 -0
  265. package/dist/forms/fields/Relationship/AddNew/index.js +216 -0
  266. package/dist/forms/fields/Relationship/AddNew/types.js +6 -0
  267. package/dist/forms/fields/Relationship/AddNew/useRelatedCollections.js +27 -0
  268. package/dist/forms/fields/Relationship/createRelationMap.js +59 -0
  269. package/dist/forms/fields/Relationship/findOptionsByValue.js +45 -0
  270. package/dist/forms/fields/Relationship/index.js +509 -0
  271. package/dist/forms/fields/Relationship/optionsReducer.js +126 -0
  272. package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.js +109 -0
  273. package/dist/forms/fields/Relationship/select-components/SingleValue/index.js +108 -0
  274. package/dist/forms/fields/Relationship/types.js +6 -0
  275. package/dist/forms/fields/RichText/index.js +16 -0
  276. package/dist/forms/fields/RichText/types.js +6 -0
  277. package/dist/forms/fields/Row/index.js +42 -0
  278. package/dist/forms/fields/Row/provider.js +74 -0
  279. package/dist/forms/fields/Row/types.js +6 -0
  280. package/dist/forms/fields/Select/index.js +183 -0
  281. package/dist/forms/fields/Select/types.js +6 -0
  282. package/dist/forms/fields/Tabs/Tab/index.js +85 -0
  283. package/dist/forms/fields/Tabs/index.js +167 -0
  284. package/dist/forms/fields/Tabs/provider.js +74 -0
  285. package/dist/forms/fields/Tabs/types.js +6 -0
  286. package/dist/forms/fields/Text/index.js +194 -0
  287. package/dist/forms/fields/Text/types.js +6 -0
  288. package/dist/forms/fields/Textarea/index.js +133 -0
  289. package/dist/forms/fields/Textarea/types.js +6 -0
  290. package/dist/forms/fields/UI/index.js +16 -0
  291. package/dist/forms/fields/Upload/Input.js +3 -0
  292. package/dist/forms/fields/Upload/index.js +210 -0
  293. package/dist/forms/fields/Upload/types.js +6 -0
  294. package/dist/forms/fields/getFilterOptionsQuery.js +39 -0
  295. package/dist/forms/fields/index.js +67 -0
  296. package/dist/forms/fields/shared.js +29 -0
  297. package/dist/forms/useField/index.js +169 -0
  298. package/dist/forms/useField/types.js +6 -0
  299. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +335 -0
  300. package/dist/forms/utilities/buildStateFromSchema/buildStateFromSchema.spec.js +76 -0
  301. package/dist/forms/utilities/buildStateFromSchema/index.js +35 -0
  302. package/dist/forms/utilities/buildStateFromSchema/iterateFields.js +48 -0
  303. package/dist/forms/withCondition/WatchCondition.js +66 -0
  304. package/dist/forms/withCondition/index.js +33 -0
  305. package/dist/graphics/Account/Default/index.js +43 -0
  306. package/dist/graphics/Account/Gravatar/index.js +42 -0
  307. package/dist/graphics/Account/index.js +50 -0
  308. package/dist/graphics/DefaultBlockImage/index.js +84 -0
  309. package/dist/graphics/ExternalLink/index.js +34 -0
  310. package/dist/graphics/File/index.js +36 -0
  311. package/dist/graphics/Icon/index.js +64 -0
  312. package/dist/graphics/Logo/index.js +60 -0
  313. package/dist/graphics/Search/index.js +42 -0
  314. package/dist/hooks/useAdminThumbnail.js +17 -0
  315. package/dist/hooks/useDebounce.js +31 -0
  316. package/dist/hooks/useDebouncedCallback.js +29 -0
  317. package/dist/hooks/useDebouncedEffect.js +32 -0
  318. package/dist/hooks/useDelay.js +82 -0
  319. package/dist/hooks/useDelayedRender.js +97 -0
  320. package/dist/hooks/useHotkey.js +129 -0
  321. package/dist/hooks/useIntersect.js +39 -0
  322. package/dist/hooks/usePayloadAPI.js +94 -0
  323. package/dist/hooks/useResize.js +59 -0
  324. package/dist/hooks/useThrottledEffect.js +31 -0
  325. package/dist/hooks/useThumbnail.js +57 -0
  326. package/dist/hooks/useUseAsTitle.js +19 -0
  327. package/dist/icons/Calendar/index.js +48 -0
  328. package/dist/icons/Check/index.js +34 -0
  329. package/dist/icons/Chevron/index.js +36 -0
  330. package/dist/icons/CloseMenu/index.js +39 -0
  331. package/dist/icons/CodeBlock/index.js +32 -0
  332. package/dist/icons/Copy/index.js +33 -0
  333. package/dist/icons/DragHandle/index.js +57 -0
  334. package/dist/icons/Edit/index.js +37 -0
  335. package/dist/icons/Line/index.js +30 -0
  336. package/dist/icons/Link/index.js +33 -0
  337. package/dist/icons/LogOut/index.js +37 -0
  338. package/dist/icons/Menu/index.js +45 -0
  339. package/dist/icons/MinimizeMaximize/index.js +87 -0
  340. package/dist/icons/More/index.js +42 -0
  341. package/dist/icons/Plus/index.js +36 -0
  342. package/dist/icons/Search/index.js +36 -0
  343. package/dist/icons/Swap/index.js +43 -0
  344. package/dist/icons/X/index.js +41 -0
  345. package/dist/index.js +20 -0
  346. package/dist/providers/ActionsProvider/index.js +89 -0
  347. package/dist/providers/Auth/HydrateClientUser/index.js +28 -0
  348. package/dist/providers/Auth/index.js +373 -0
  349. package/dist/providers/Auth/types.js +6 -0
  350. package/dist/providers/ClientFunction/index.js +65 -0
  351. package/dist/providers/ComponentMapProvider/index.js +98 -0
  352. package/dist/providers/Config/index.js +70 -0
  353. package/dist/providers/CustomProvider/index.js +38 -0
  354. package/dist/providers/DocumentEvents/index.js +77 -0
  355. package/dist/providers/DocumentEvents/types.js +6 -0
  356. package/dist/providers/DocumentInfo/SetDocumentInfo/index.js +34 -0
  357. package/dist/providers/DocumentInfo/index.js +353 -0
  358. package/dist/providers/DocumentInfo/types.js +6 -0
  359. package/dist/providers/EditDepth/index.js +71 -0
  360. package/dist/providers/FormQueryParams/index.js +77 -0
  361. package/dist/providers/ListInfo/index.js +78 -0
  362. package/dist/providers/ListInfo/types.js +6 -0
  363. package/dist/providers/Locale/index.js +122 -0
  364. package/dist/providers/OperationProvider/index.js +71 -0
  365. package/dist/providers/Params/index.js +72 -0
  366. package/dist/providers/Portal/index.js +20 -0
  367. package/dist/providers/Preferences/index.js +184 -0
  368. package/dist/providers/Root/index.js +103 -0
  369. package/dist/providers/SearchParams/index.js +119 -0
  370. package/dist/providers/SearchParams/types.js +6 -0
  371. package/dist/providers/SelectionProvider/index.js +218 -0
  372. package/dist/providers/Theme/index.js +123 -0
  373. package/dist/providers/Theme/types.js +6 -0
  374. package/dist/providers/Theme/utilities.js +35 -0
  375. package/dist/providers/Translation/index.js +92 -0
  376. package/dist/templates/Default/NavHamburger/index.js +28 -0
  377. package/dist/templates/Default/Wrapper/index.js +32 -0
  378. package/dist/templates/Default/index.js +88 -0
  379. package/dist/templates/Default/types.js +6 -0
  380. package/dist/templates/Minimal/index.js +34 -0
  381. package/dist/templates/Minimal/types.js +6 -0
  382. package/dist/utilities/api.js +98 -0
  383. package/dist/utilities/arraysHaveSameStrings.js +28 -0
  384. package/dist/utilities/buildComponentMap/index.js +101 -0
  385. package/dist/utilities/buildComponentMap/mapFields.js +318 -0
  386. package/dist/utilities/buildComponentMap/types.js +6 -0
  387. package/dist/utilities/buildFieldSchemaMap/index.js +36 -0
  388. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +94 -0
  389. package/dist/utilities/buildFieldSchemaMap/types.js +6 -0
  390. package/dist/utilities/canUseDOM.js +13 -0
  391. package/dist/utilities/findLocaleFromCode.js +18 -0
  392. package/dist/utilities/formatDate/getSupportedDateLocale.js +21 -0
  393. package/dist/utilities/formatDate/index.js +78 -0
  394. package/dist/utilities/formatDocTitle.js +33 -0
  395. package/dist/utilities/formatFields.js +14 -0
  396. package/dist/utilities/getFormState.js +28 -0
  397. package/dist/utilities/getOffsetTop.js +26 -0
  398. package/dist/utilities/getRequestLanguage.js +17 -0
  399. package/dist/utilities/getSupportedMonacoLocale.js +26 -0
  400. package/dist/utilities/groupNavItems.js +61 -0
  401. package/dist/utilities/scrollToID.js +22 -0
  402. package/dist/utilities/setsAreEqual.js +17 -0
  403. package/dist/utilities/withMergedProps/index.js +27 -0
  404. package/dist/views/Global/RenderCustomView.js +3 -0
  405. package/package.json +3 -3
@@ -0,0 +1,176 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ function _export(target, all) {
7
+ for(var name in all)Object.defineProperty(target, name, {
8
+ enumerable: true,
9
+ get: all[name]
10
+ });
11
+ }
12
+ _export(exports, {
13
+ DeleteMany: function() {
14
+ return DeleteMany;
15
+ },
16
+ default: function() {
17
+ return _default;
18
+ }
19
+ });
20
+ const _modal = require("@faceless-ui/modal");
21
+ const _translations = require("@payloadcms/translations");
22
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
23
+ const _reacttoastify = require("react-toastify");
24
+ const _Auth = require("../../providers/Auth");
25
+ const _Config = require("../../providers/Config");
26
+ const _SearchParams = require("../../providers/SearchParams");
27
+ const _SelectionProvider = require("../../providers/SelectionProvider");
28
+ const _Translation = require("../../providers/Translation");
29
+ const _Minimal = require("../../templates/Minimal");
30
+ const _api = require("../../utilities/api");
31
+ const _Button = require("../Button");
32
+ const _Pill = /*#__PURE__*/ _interop_require_default(require("../Pill"));
33
+ require("./index.scss");
34
+ function _interop_require_default(obj) {
35
+ return obj && obj.__esModule ? obj : {
36
+ default: obj
37
+ };
38
+ }
39
+ function _getRequireWildcardCache(nodeInterop) {
40
+ if (typeof WeakMap !== "function") return null;
41
+ var cacheBabelInterop = new WeakMap();
42
+ var cacheNodeInterop = new WeakMap();
43
+ return (_getRequireWildcardCache = function(nodeInterop) {
44
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
45
+ })(nodeInterop);
46
+ }
47
+ function _interop_require_wildcard(obj, nodeInterop) {
48
+ if (!nodeInterop && obj && obj.__esModule) {
49
+ return obj;
50
+ }
51
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
52
+ return {
53
+ default: obj
54
+ };
55
+ }
56
+ var cache = _getRequireWildcardCache(nodeInterop);
57
+ if (cache && cache.has(obj)) {
58
+ return cache.get(obj);
59
+ }
60
+ var newObj = {
61
+ __proto__: null
62
+ };
63
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
64
+ for(var key in obj){
65
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
66
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
67
+ if (desc && (desc.get || desc.set)) {
68
+ Object.defineProperty(newObj, key, desc);
69
+ } else {
70
+ newObj[key] = obj[key];
71
+ }
72
+ }
73
+ }
74
+ newObj.default = obj;
75
+ if (cache) {
76
+ cache.set(obj, newObj);
77
+ }
78
+ return newObj;
79
+ }
80
+ const baseClass = 'delete-documents';
81
+ const DeleteMany = (props)=>{
82
+ const { collection: { slug, labels: { plural } } = {} } = props;
83
+ const { permissions } = (0, _Auth.useAuth)();
84
+ const { routes: { api }, serverURL } = (0, _Config.useConfig)();
85
+ const { toggleModal } = (0, _modal.useModal)();
86
+ const { count, getQueryParams, selectAll, toggleAll } = (0, _SelectionProvider.useSelection)();
87
+ const { i18n, t } = (0, _Translation.useTranslation)();
88
+ const [deleting, setDeleting] = (0, _react.useState)(false);
89
+ const { dispatchSearchParams } = (0, _SearchParams.useSearchParams)();
90
+ const collectionPermissions = permissions?.collections?.[slug];
91
+ const hasDeletePermission = collectionPermissions?.delete?.permission;
92
+ const modalSlug = `delete-${slug}`;
93
+ const addDefaultError = (0, _react.useCallback)(()=>{
94
+ _reacttoastify.toast.error(t('error:unknown'));
95
+ }, [
96
+ t
97
+ ]);
98
+ const handleDelete = (0, _react.useCallback)(async ()=>{
99
+ setDeleting(true);
100
+ await _api.requests.delete(`${serverURL}${api}/${slug}${getQueryParams()}`, {
101
+ headers: {
102
+ 'Accept-Language': i18n.language,
103
+ 'Content-Type': 'application/json'
104
+ }
105
+ }).then(async (res)=>{
106
+ try {
107
+ const json = await res.json();
108
+ toggleModal(modalSlug);
109
+ if (res.status < 400) {
110
+ _reacttoastify.toast.success(json.message || t('general:deletedSuccessfully'), {
111
+ autoClose: 3000
112
+ });
113
+ toggleAll();
114
+ dispatchSearchParams({
115
+ type: 'set',
116
+ browserHistory: 'replace',
117
+ params: {
118
+ page: selectAll ? '1' : undefined
119
+ }
120
+ });
121
+ return null;
122
+ }
123
+ if (json.errors) {
124
+ _reacttoastify.toast.error(json.message);
125
+ } else {
126
+ addDefaultError();
127
+ }
128
+ return false;
129
+ } catch (e) {
130
+ return addDefaultError();
131
+ }
132
+ });
133
+ }, [
134
+ addDefaultError,
135
+ api,
136
+ dispatchSearchParams,
137
+ getQueryParams,
138
+ i18n.language,
139
+ modalSlug,
140
+ selectAll,
141
+ serverURL,
142
+ slug,
143
+ t,
144
+ toggleAll,
145
+ toggleModal
146
+ ]);
147
+ if (selectAll === _SelectionProvider.SelectAllStatus.None || !hasDeletePermission) {
148
+ return null;
149
+ }
150
+ return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_Pill.default, {
151
+ className: `${baseClass}__toggle`,
152
+ onClick: ()=>{
153
+ setDeleting(false);
154
+ toggleModal(modalSlug);
155
+ }
156
+ }, t('general:delete')), /*#__PURE__*/ _react.default.createElement(_modal.Modal, {
157
+ className: baseClass,
158
+ slug: modalSlug
159
+ }, /*#__PURE__*/ _react.default.createElement(_Minimal.MinimalTemplate, {
160
+ className: `${baseClass}__template`
161
+ }, /*#__PURE__*/ _react.default.createElement("h1", null, t('general:confirmDeletion')), /*#__PURE__*/ _react.default.createElement("p", null, t('general:aboutToDeleteCount', {
162
+ count,
163
+ label: (0, _translations.getTranslation)(plural, i18n)
164
+ })), /*#__PURE__*/ _react.default.createElement(_Button.Button, {
165
+ buttonStyle: "secondary",
166
+ id: "confirm-cancel",
167
+ onClick: deleting ? undefined : ()=>toggleModal(modalSlug),
168
+ type: "button"
169
+ }, t('general:cancel')), /*#__PURE__*/ _react.default.createElement(_Button.Button, {
170
+ id: "confirm-delete",
171
+ onClick: deleting ? undefined : handleDelete
172
+ }, deleting ? t('general:deleting') : t('general:confirm')))));
173
+ };
174
+ const _default = DeleteMany;
175
+
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9EZWxldGVNYW55L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB7IE1vZGFsLCB1c2VNb2RhbCB9IGZyb20gJ0BmYWNlbGVzcy11aS9tb2RhbCdcbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSAnQHBheWxvYWRjbXMvdHJhbnNsYXRpb25zJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSdcblxuaW1wb3J0IHR5cGUgeyBQcm9wcyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvQXV0aCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9Db25maWcnXG5pbXBvcnQgeyB1c2VTZWFyY2hQYXJhbXMgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvU2VhcmNoUGFyYW1zJ1xuaW1wb3J0IHsgU2VsZWN0QWxsU3RhdHVzLCB1c2VTZWxlY3Rpb24gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvU2VsZWN0aW9uUHJvdmlkZXInXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9UcmFuc2xhdGlvbidcbmltcG9ydCB7IE1pbmltYWxUZW1wbGF0ZSB9IGZyb20gJy4uLy4uL3RlbXBsYXRlcy9NaW5pbWFsJ1xuaW1wb3J0IHsgcmVxdWVzdHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvYXBpJ1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJ1xuaW1wb3J0IFBpbGwgZnJvbSAnLi4vUGlsbCdcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnZGVsZXRlLWRvY3VtZW50cydcblxuZXhwb3J0IGNvbnN0IERlbGV0ZU1hbnk6IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNvbGxlY3Rpb246IHsgc2x1ZywgbGFiZWxzOiB7IHBsdXJhbCB9IH0gPSB7fSB9ID0gcHJvcHNcblxuICBjb25zdCB7IHBlcm1pc3Npb25zIH0gPSB1c2VBdXRoKClcbiAgY29uc3Qge1xuICAgIHJvdXRlczogeyBhcGkgfSxcbiAgICBzZXJ2ZXJVUkwsXG4gIH0gPSB1c2VDb25maWcoKVxuICBjb25zdCB7IHRvZ2dsZU1vZGFsIH0gPSB1c2VNb2RhbCgpXG4gIGNvbnN0IHsgY291bnQsIGdldFF1ZXJ5UGFyYW1zLCBzZWxlY3RBbGwsIHRvZ2dsZUFsbCB9ID0gdXNlU2VsZWN0aW9uKClcbiAgY29uc3QgeyBpMThuLCB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IFtkZWxldGluZywgc2V0RGVsZXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHsgZGlzcGF0Y2hTZWFyY2hQYXJhbXMgfSA9IHVzZVNlYXJjaFBhcmFtcygpXG5cbiAgY29uc3QgY29sbGVjdGlvblBlcm1pc3Npb25zID0gcGVybWlzc2lvbnM/LmNvbGxlY3Rpb25zPy5bc2x1Z11cbiAgY29uc3QgaGFzRGVsZXRlUGVybWlzc2lvbiA9IGNvbGxlY3Rpb25QZXJtaXNzaW9ucz8uZGVsZXRlPy5wZXJtaXNzaW9uXG5cbiAgY29uc3QgbW9kYWxTbHVnID0gYGRlbGV0ZS0ke3NsdWd9YFxuXG4gIGNvbnN0IGFkZERlZmF1bHRFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB0b2FzdC5lcnJvcih0KCdlcnJvcjp1bmtub3duJykpXG4gIH0sIFt0XSlcblxuICBjb25zdCBoYW5kbGVEZWxldGUgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0RGVsZXRpbmcodHJ1ZSlcbiAgICBhd2FpdCByZXF1ZXN0c1xuICAgICAgLmRlbGV0ZShgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7c2x1Z30ke2dldFF1ZXJ5UGFyYW1zKCl9YCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAudGhlbihhc3luYyAocmVzKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcy5qc29uKClcbiAgICAgICAgICB0b2dnbGVNb2RhbChtb2RhbFNsdWcpXG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPCA0MDApIHtcbiAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoanNvbi5tZXNzYWdlIHx8IHQoJ2dlbmVyYWw6ZGVsZXRlZFN1Y2Nlc3NmdWxseScpLCB7IGF1dG9DbG9zZTogMzAwMCB9KVxuICAgICAgICAgICAgdG9nZ2xlQWxsKClcbiAgICAgICAgICAgIGRpc3BhdGNoU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgICAgICAgdHlwZTogJ3NldCcsXG4gICAgICAgICAgICAgIGJyb3dzZXJIaXN0b3J5OiAncmVwbGFjZScsXG4gICAgICAgICAgICAgIHBhcmFtczogeyBwYWdlOiBzZWxlY3RBbGwgPyAnMScgOiB1bmRlZmluZWQgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChqc29uLmVycm9ycykge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoanNvbi5tZXNzYWdlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZGREZWZhdWx0RXJyb3IoKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiBhZGREZWZhdWx0RXJyb3IoKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9LCBbXG4gICAgYWRkRGVmYXVsdEVycm9yLFxuICAgIGFwaSxcbiAgICBkaXNwYXRjaFNlYXJjaFBhcmFtcyxcbiAgICBnZXRRdWVyeVBhcmFtcyxcbiAgICBpMThuLmxhbmd1YWdlLFxuICAgIG1vZGFsU2x1ZyxcbiAgICBzZWxlY3RBbGwsXG4gICAgc2VydmVyVVJMLFxuICAgIHNsdWcsXG4gICAgdCxcbiAgICB0b2dnbGVBbGwsXG4gICAgdG9nZ2xlTW9kYWwsXG4gIF0pXG5cbiAgaWYgKHNlbGVjdEFsbCA9PT0gU2VsZWN0QWxsU3RhdHVzLk5vbmUgfHwgIWhhc0RlbGV0ZVBlcm1pc3Npb24pIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICA8UGlsbFxuICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3RvZ2dsZWB9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBzZXREZWxldGluZyhmYWxzZSlcbiAgICAgICAgICB0b2dnbGVNb2RhbChtb2RhbFNsdWcpXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHt0KCdnZW5lcmFsOmRlbGV0ZScpfVxuICAgICAgPC9QaWxsPlxuICAgICAgPE1vZGFsIGNsYXNzTmFtZT17YmFzZUNsYXNzfSBzbHVnPXttb2RhbFNsdWd9PlxuICAgICAgICA8TWluaW1hbFRlbXBsYXRlIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdGVtcGxhdGVgfT5cbiAgICAgICAgICA8aDE+e3QoJ2dlbmVyYWw6Y29uZmlybURlbGV0aW9uJyl9PC9oMT5cbiAgICAgICAgICA8cD57dCgnZ2VuZXJhbDphYm91dFRvRGVsZXRlQ291bnQnLCB7IGNvdW50LCBsYWJlbDogZ2V0VHJhbnNsYXRpb24ocGx1cmFsLCBpMThuKSB9KX08L3A+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgaWQ9XCJjb25maXJtLWNhbmNlbFwiXG4gICAgICAgICAgICBvbkNsaWNrPXtkZWxldGluZyA/IHVuZGVmaW5lZCA6ICgpID0+IHRvZ2dsZU1vZGFsKG1vZGFsU2x1Zyl9XG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dCgnZ2VuZXJhbDpjYW5jZWwnKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uIGlkPVwiY29uZmlybS1kZWxldGVcIiBvbkNsaWNrPXtkZWxldGluZyA/IHVuZGVmaW5lZCA6IGhhbmRsZURlbGV0ZX0+XG4gICAgICAgICAgICB7ZGVsZXRpbmcgPyB0KCdnZW5lcmFsOmRlbGV0aW5nJykgOiB0KCdnZW5lcmFsOmNvbmZpcm0nKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9NaW5pbWFsVGVtcGxhdGU+XG4gICAgICA8L01vZGFsPlxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGVsZXRlTWFueVxuIl0sIm5hbWVzIjpbIkRlbGV0ZU1hbnkiLCJiYXNlQ2xhc3MiLCJwcm9wcyIsImNvbGxlY3Rpb24iLCJzbHVnIiwibGFiZWxzIiwicGx1cmFsIiwicGVybWlzc2lvbnMiLCJ1c2VBdXRoIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwidXNlQ29uZmlnIiwidG9nZ2xlTW9kYWwiLCJ1c2VNb2RhbCIsImNvdW50IiwiZ2V0UXVlcnlQYXJhbXMiLCJzZWxlY3RBbGwiLCJ0b2dnbGVBbGwiLCJ1c2VTZWxlY3Rpb24iLCJpMThuIiwidCIsInVzZVRyYW5zbGF0aW9uIiwiZGVsZXRpbmciLCJzZXREZWxldGluZyIsInVzZVN0YXRlIiwiZGlzcGF0Y2hTZWFyY2hQYXJhbXMiLCJ1c2VTZWFyY2hQYXJhbXMiLCJjb2xsZWN0aW9uUGVybWlzc2lvbnMiLCJjb2xsZWN0aW9ucyIsImhhc0RlbGV0ZVBlcm1pc3Npb24iLCJkZWxldGUiLCJwZXJtaXNzaW9uIiwibW9kYWxTbHVnIiwiYWRkRGVmYXVsdEVycm9yIiwidXNlQ2FsbGJhY2siLCJ0b2FzdCIsImVycm9yIiwiaGFuZGxlRGVsZXRlIiwicmVxdWVzdHMiLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJ0aGVuIiwicmVzIiwianNvbiIsInN0YXR1cyIsInN1Y2Nlc3MiLCJtZXNzYWdlIiwiYXV0b0Nsb3NlIiwidHlwZSIsImJyb3dzZXJIaXN0b3J5IiwicGFyYW1zIiwicGFnZSIsInVuZGVmaW5lZCIsImVycm9ycyIsImUiLCJTZWxlY3RBbGxTdGF0dXMiLCJOb25lIiwiUmVhY3QiLCJGcmFnbWVudCIsIlBpbGwiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiTW9kYWwiLCJNaW5pbWFsVGVtcGxhdGUiLCJoMSIsInAiLCJsYWJlbCIsImdldFRyYW5zbGF0aW9uIiwiQnV0dG9uIiwiYnV0dG9uU3R5bGUiLCJpZCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztJQXFCYUEsVUFBVTtlQUFWQTs7SUE0R2IsT0FBeUI7ZUFBekI7Ozt1QkFoSWdDOzhCQUNEOytEQUNjOytCQUN2QjtzQkFJRTt3QkFDRTs4QkFDTTttQ0FDYzs2QkFDZjt5QkFDQztxQkFDUDt3QkFDRjs2REFDTjtRQUNWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVQLE1BQU1DLFlBQVk7QUFFWCxNQUFNRCxhQUE4QixDQUFDRTtJQUMxQyxNQUFNLEVBQUVDLFlBQVksRUFBRUMsSUFBSSxFQUFFQyxRQUFRLEVBQUVDLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBR0o7SUFFMUQsTUFBTSxFQUFFSyxXQUFXLEVBQUUsR0FBR0MsSUFBQUEsYUFBTztJQUMvQixNQUFNLEVBQ0pDLFFBQVEsRUFBRUMsR0FBRyxFQUFFLEVBQ2ZDLFNBQVMsRUFDVixHQUFHQyxJQUFBQSxpQkFBUztJQUNiLE1BQU0sRUFBRUMsV0FBVyxFQUFFLEdBQUdDLElBQUFBLGVBQVE7SUFDaEMsTUFBTSxFQUFFQyxLQUFL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
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,159 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "DocumentControls", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return DocumentControls;
10
+ }
11
+ });
12
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
13
+ const _Config = require("../../providers/Config");
14
+ const _Translation = require("../../providers/Translation");
15
+ const _formatDate = require("../../utilities/formatDate");
16
+ const _DeleteDocument = /*#__PURE__*/ _interop_require_default(require("../DeleteDocument"));
17
+ const _DuplicateDocument = /*#__PURE__*/ _interop_require_default(require("../DuplicateDocument"));
18
+ const _Gutter = require("../Gutter");
19
+ const _Popup = /*#__PURE__*/ _interop_require_default(require("../Popup"));
20
+ const _PopupButtonList = /*#__PURE__*/ _interop_require_wildcard(require("../Popup/PopupButtonList"));
21
+ const _Publish = require("../Publish");
22
+ const _Save = require("../Save");
23
+ const _SaveDraft = require("../SaveDraft");
24
+ const _Status = /*#__PURE__*/ _interop_require_default(require("../Status"));
25
+ require("./index.scss");
26
+ function _interop_require_default(obj) {
27
+ return obj && obj.__esModule ? obj : {
28
+ default: obj
29
+ };
30
+ }
31
+ function _getRequireWildcardCache(nodeInterop) {
32
+ if (typeof WeakMap !== "function") return null;
33
+ var cacheBabelInterop = new WeakMap();
34
+ var cacheNodeInterop = new WeakMap();
35
+ return (_getRequireWildcardCache = function(nodeInterop) {
36
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
37
+ })(nodeInterop);
38
+ }
39
+ function _interop_require_wildcard(obj, nodeInterop) {
40
+ if (!nodeInterop && obj && obj.__esModule) {
41
+ return obj;
42
+ }
43
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
44
+ return {
45
+ default: obj
46
+ };
47
+ }
48
+ var cache = _getRequireWildcardCache(nodeInterop);
49
+ if (cache && cache.has(obj)) {
50
+ return cache.get(obj);
51
+ }
52
+ var newObj = {
53
+ __proto__: null
54
+ };
55
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
56
+ for(var key in obj){
57
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
58
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
59
+ if (desc && (desc.get || desc.set)) {
60
+ Object.defineProperty(newObj, key, desc);
61
+ } else {
62
+ newObj[key] = obj[key];
63
+ }
64
+ }
65
+ }
66
+ newObj.default = obj;
67
+ if (cache) {
68
+ cache.set(obj, newObj);
69
+ }
70
+ return newObj;
71
+ }
72
+ const baseClass = 'doc-controls';
73
+ const DocumentControls = (props)=>{
74
+ const { id, data, disableActions, hasSavePermission, isAccountView, isEditing, permissions, slug } = props;
75
+ const { i18n } = (0, _Translation.useTranslation)();
76
+ const config = (0, _Config.useConfig)();
77
+ const collectionConfig = config.collections.find((coll)=>coll.slug === slug);
78
+ const { admin: { dateFormat }, routes: { admin: adminRoute } } = config;
79
+ const hasCreatePermission = permissions && 'create' in permissions && permissions.create?.permission;
80
+ const hasDeletePermission = permissions && 'delete' in permissions && permissions.delete?.permission;
81
+ const showDotMenu = Boolean(collectionConfig && id && !disableActions && (hasCreatePermission || hasDeletePermission));
82
+ return /*#__PURE__*/ _react.default.createElement(_Gutter.Gutter, {
83
+ className: baseClass
84
+ }, /*#__PURE__*/ _react.default.createElement("div", {
85
+ className: `${baseClass}__wrapper`
86
+ }, /*#__PURE__*/ _react.default.createElement("div", {
87
+ className: `${baseClass}__content`
88
+ }, /*#__PURE__*/ _react.default.createElement("ul", {
89
+ className: `${baseClass}__meta`
90
+ }, collectionConfig && !isEditing && !isAccountView && /*#__PURE__*/ _react.default.createElement("li", {
91
+ className: `${baseClass}__list-item`
92
+ }, /*#__PURE__*/ _react.default.createElement("p", {
93
+ className: `${baseClass}__value`
94
+ }, i18n.t('general:creatingNewLabel', {
95
+ label: typeof collectionConfig?.labels?.singular === 'string' ? collectionConfig.labels.singular : 'document'
96
+ }))), (collectionConfig?.versions?.drafts || global?.versions?.drafts) && /*#__PURE__*/ _react.default.createElement(_react.Fragment, null, (global || collectionConfig && isEditing) && /*#__PURE__*/ _react.default.createElement("li", {
97
+ className: [
98
+ `${baseClass}__status`,
99
+ `${baseClass}__list-item`
100
+ ].filter(Boolean).join(' ')
101
+ }, /*#__PURE__*/ _react.default.createElement(_Status.default, null)), (collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave || global?.versions?.drafts && global?.versions?.drafts?.autosave) && hasSavePermission && /*#__PURE__*/ _react.default.createElement("li", {
102
+ className: `${baseClass}__list-item`
103
+ })), collectionConfig?.timestamps && (isEditing || isAccountView) && /*#__PURE__*/ _react.default.createElement(_react.Fragment, null, /*#__PURE__*/ _react.default.createElement("li", {
104
+ className: [
105
+ `${baseClass}__list-item`,
106
+ `${baseClass}__value-wrap`
107
+ ].filter(Boolean).join(' '),
108
+ title: data?.updatedAt ? (0, _formatDate.formatDate)(data?.updatedAt, dateFormat, i18n.language) : ''
109
+ }, /*#__PURE__*/ _react.default.createElement("p", {
110
+ className: `${baseClass}__label`
111
+ }, i18n.t('general:lastModified'), ": "), data?.updatedAt && /*#__PURE__*/ _react.default.createElement("p", {
112
+ className: `${baseClass}__value`
113
+ }, (0, _formatDate.formatDate)(data.updatedAt, dateFormat, i18n.language))), /*#__PURE__*/ _react.default.createElement("li", {
114
+ className: [
115
+ `${baseClass}__list-item`,
116
+ `${baseClass}__value-wrap`
117
+ ].filter(Boolean).join(' '),
118
+ title: data?.createdAt ? (0, _formatDate.formatDate)(data?.createdAt, dateFormat, i18n.language) : ''
119
+ }, /*#__PURE__*/ _react.default.createElement("p", {
120
+ className: `${baseClass}__label`
121
+ }, i18n.t('general:created'), ": "), data?.createdAt && /*#__PURE__*/ _react.default.createElement("p", {
122
+ className: `${baseClass}__value`
123
+ }, (0, _formatDate.formatDate)(data?.createdAt, dateFormat, i18n.language)))))), /*#__PURE__*/ _react.default.createElement("div", {
124
+ className: `${baseClass}__controls-wrapper`
125
+ }, /*#__PURE__*/ _react.default.createElement("div", {
126
+ className: `${baseClass}__controls`
127
+ }, hasSavePermission && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, collectionConfig?.versions?.drafts || global?.versions?.drafts ? /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, (collectionConfig?.versions?.drafts && !collectionConfig?.versions?.drafts?.autosave || global?.versions?.drafts && !global?.versions?.drafts?.autosave) && /*#__PURE__*/ _react.default.createElement(_SaveDraft.SaveDraft, {
128
+ CustomComponent: collectionConfig?.admin?.components?.edit?.SaveDraftButton || global?.admin?.components?.elements?.SaveDraftButton
129
+ }), /*#__PURE__*/ _react.default.createElement(_Publish.Publish, {
130
+ CustomComponent: collectionConfig?.admin?.components?.edit?.PublishButton || global?.admin?.components?.elements?.PublishButton
131
+ })) : /*#__PURE__*/ _react.default.createElement(_Save.Save, {
132
+ CustomComponent: collectionConfig?.admin?.components?.edit?.SaveButton || global?.admin?.components?.elements?.SaveButton
133
+ }))), showDotMenu && /*#__PURE__*/ _react.default.createElement(_Popup.default, {
134
+ button: /*#__PURE__*/ _react.default.createElement("div", {
135
+ className: `${baseClass}__dots`
136
+ }, /*#__PURE__*/ _react.default.createElement("div", null), /*#__PURE__*/ _react.default.createElement("div", null), /*#__PURE__*/ _react.default.createElement("div", null)),
137
+ className: `${baseClass}__popup`,
138
+ horizontalAlign: "right",
139
+ size: "large",
140
+ verticalAlign: "bottom"
141
+ }, /*#__PURE__*/ _react.default.createElement(_PopupButtonList.ButtonGroup, null, hasCreatePermission && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_PopupButtonList.Button, {
142
+ id: "action-create",
143
+ to: `${adminRoute}/collections/${collectionConfig?.slug}/create`
144
+ }, i18n.t('general:createNew')), !collectionConfig?.admin?.disableDuplicate && isEditing && /*#__PURE__*/ _react.default.createElement(_DuplicateDocument.default, {
145
+ id: id.toString(),
146
+ singularLabel: collectionConfig?.labels?.singular,
147
+ slug: collectionConfig?.slug
148
+ })), hasDeletePermission && /*#__PURE__*/ _react.default.createElement(_DeleteDocument.default, {
149
+ buttonId: "action-delete",
150
+ collectionSlug: collectionConfig?.slug,
151
+ id: id.toString(),
152
+ singularLabel: collectionConfig?.labels?.singular,
153
+ useAsTitle: collectionConfig?.admin?.useAsTitle
154
+ }))))), /*#__PURE__*/ _react.default.createElement("div", {
155
+ className: `${baseClass}__divider`
156
+ }));
157
+ };
158
+
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9Eb2N1bWVudENvbnRyb2xzL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvblBlcm1pc3Npb24sIEdsb2JhbFBlcm1pc3Npb24gfSBmcm9tICdwYXlsb2FkL2F1dGgnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcsIFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvQ29uZmlnJ1xuaW1wb3J0IHsgdXNlRG9jdW1lbnRJbmZvIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0RvY3VtZW50SW5mbydcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL1RyYW5zbGF0aW9uJ1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9mb3JtYXREYXRlJ1xuaW1wb3J0IEF1dG9zYXZlIGZyb20gJy4uL0F1dG9zYXZlJ1xuaW1wb3J0IERlbGV0ZURvY3VtZW50IGZyb20gJy4uL0RlbGV0ZURvY3VtZW50J1xuaW1wb3J0IER1cGxpY2F0ZURvY3VtZW50IGZyb20gJy4uL0R1cGxpY2F0ZURvY3VtZW50J1xuaW1wb3J0IHsgR3V0dGVyIH0gZnJvbSAnLi4vR3V0dGVyJ1xuaW1wb3J0IFBvcHVwIGZyb20gJy4uL1BvcHVwJ1xuaW1wb3J0ICogYXMgUG9wdXBMaXN0IGZyb20gJy4uL1BvcHVwL1BvcHVwQnV0dG9uTGlzdCdcbmltcG9ydCBQcmV2aWV3QnV0dG9uIGZyb20gJy4uL1ByZXZpZXdCdXR0b24nXG5pbXBvcnQgeyBQdWJsaXNoIH0gZnJvbSAnLi4vUHVibGlzaCdcbmltcG9ydCB7IFNhdmUgfSBmcm9tICcuLi9TYXZlJ1xuaW1wb3J0IHsgU2F2ZURyYWZ0IH0gZnJvbSAnLi4vU2F2ZURyYWZ0J1xuaW1wb3J0IFN0YXR1cyBmcm9tICcuLi9TdGF0dXMnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2RvYy1jb250cm9scydcblxuZXhwb3J0IGNvbnN0IERvY3VtZW50Q29udHJvbHM6IFJlYWN0LkZDPHtcbiAgYXBpVVJMOiBzdHJpbmdcbiAgZGF0YT86IGFueVxuICBkaXNhYmxlQWN0aW9ucz86IGJvb2xlYW5cbiAgaGFzU2F2ZVBlcm1pc3Npb24/OiBib29sZWFuXG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nXG4gIGlzQWNjb3VudFZpZXc/OiBib29sZWFuXG4gIGlzRWRpdGluZz86IGJvb2xlYW5cbiAgcGVybWlzc2lvbnM6IENvbGxlY3Rpb25QZXJtaXNzaW9uIHwgR2xvYmFsUGVybWlzc2lvbiB8IG51bGxcbiAgc2x1ZzogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZ1snc2x1ZyddIHwgU2FuaXRpemVkR2xvYmFsQ29uZmlnWydzbHVnJ11cbn0+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICBkYXRhLFxuICAgIGRpc2FibGVBY3Rpb25zLFxuICAgIGhhc1NhdmVQZXJtaXNzaW9uLFxuICAgIGlzQWNjb3VudFZpZXcsXG4gICAgaXNFZGl0aW5nLFxuICAgIHBlcm1pc3Npb25zLFxuICAgIHNsdWcsXG4gIH0gPSBwcm9wc1xuXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKVxuXG4gIGNvbnN0IGNvbmZpZyA9IHVzZUNvbmZpZygpXG5cbiAgY29uc3QgY29sbGVjdGlvbkNvbmZpZyA9IGNvbmZpZy5jb2xsZWN0aW9ucy5maW5kKChjb2xsKSA9PiBjb2xsLnNsdWcgPT09IHNsdWcpXG5cbiAgY29uc3Qge1xuICAgIGFkbWluOiB7IGRhdGVGb3JtYXQgfSxcbiAgICByb3V0ZXM6IHsgYWRtaW46IGFkbWluUm91dGUgfSxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IGhhc0NyZWF0ZVBlcm1pc3Npb24gPVxuICAgIHBlcm1pc3Npb25zICYmICdjcmVhdGUnIGluIHBlcm1pc3Npb25zICYmIHBlcm1pc3Npb25zLmNyZWF0ZT8ucGVybWlzc2lvblxuXG4gIGNvbnN0IGhhc0RlbGV0ZVBlcm1pc3Npb24gPVxuICAgIHBlcm1pc3Npb25zICYmICdkZWxldGUnIGluIHBlcm1pc3Npb25zICYmIHBlcm1pc3Npb25zLmRlbGV0ZT8ucGVybWlzc2lvblxuXG4gIGNvbnN0IHNob3dEb3RNZW51ID0gQm9vbGVhbihcbiAgICBjb2xsZWN0aW9uQ29uZmlnICYmIGlkICYmICFkaXNhYmxlQWN0aW9ucyAmJiAoaGFzQ3JlYXRlUGVybWlzc2lvbiB8fCBoYXNEZWxldGVQZXJtaXNzaW9uKSxcbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEd1dHRlciBjbGFzc05hbWU9e2Jhc2VDbGFzc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcHBlcmB9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fY29udGVudGB9PlxuICAgICAgICAgIDx1bCBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX21ldGFgfT5cbiAgICAgICAgICAgIHtjb2xsZWN0aW9uQ29uZmlnICYmICFpc0VkaXRpbmcgJiYgIWlzQWNjb3VudFZpZXcgJiYgKFxuICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19saXN0LWl0ZW1gfT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3ZhbHVlYH0+XG4gICAgICAgICAgICAgICAgICB7aTE4bi50KCdnZW5lcmFsOmNyZWF0aW5nTmV3TGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBjb2xsZWN0aW9uQ29uZmlnPy5sYWJlbHM/LnNpbmd1bGFyID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBjb2xsZWN0aW9uQ29uZmlnLmxhYmVscy5zaW5ndWxhclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnZG9jdW1lbnQnLFxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHsoY29sbGVjdGlvbkNvbmZpZz8udmVyc2lvbnM/LmRyYWZ0cyB8fCBnbG9iYWw/LnZlcnNpb25zPy5kcmFmdHMpICYmIChcbiAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHsoZ2xvYmFsIHx8IChjb2xsZWN0aW9uQ29uZmlnICYmIGlzRWRpdGluZykpICYmIChcbiAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1tgJHtiYXNlQ2xhc3N9X19zdGF0dXNgLCBgJHtiYXNlQ2xhc3N9X19saXN0LWl0ZW1gXVxuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U3RhdHVzIC8+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgeygoY29sbGVjdGlvbkNvbmZpZz8udmVyc2lvbnM/LmRyYWZ0cyAmJlxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbkNvbmZpZz8udmVyc2lvbnM/LmRyYWZ0cz8uYXV0b3NhdmUpIHx8XG4gICAgICAgICAgICAgICAgICAoZ2xvYmFsPy52ZXJzaW9ucz8uZHJhZnRzICYmIGdsb2JhbD8udmVyc2lvbnM/LmRyYWZ0cz8uYXV0b3NhdmUpKSAmJlxuICAgICAgICAgICAgICAgICAgaGFzU2F2ZVBlcm1pc3Npb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19saXN0LWl0ZW1gfT5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogPEF1dG9zYXZlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uPXtjb2xsZWN0aW9uQ29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsPXtnbG9iYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZD17aWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaXNoZWREb2NVcGRhdGVkQXQ9e2RhdGE/LmNyZWF0ZWRBdH1cbiAgICAgICAgICAgICAgICAgICAgICAvPiAqL31cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2NvbGxlY3Rpb25Db25maWc/LnRpbWVzdGFtcHMgJiYgKGlzRWRpdGluZyB8fCBpc0FjY291bnRWaWV3KSAmJiAoXG4gICAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17W2Ake2Jhc2VDbGFzc31fX2xpc3QtaXRlbWAsIGAke2Jhc2VDbGFzc31fX3ZhbHVlLXdyYXBgXVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcgJyl9XG4gICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgIGRhdGE/LnVwZGF0ZWRBdCA/IGZvcm1hdERhdGUoZGF0YT8udXBkYXRlZEF0LCBkYXRlRm9ybWF0LCBpMThuLmxhbmd1YWdlKSA6ICcnXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19sYWJlbGB9PntpMThuLnQoJ2dlbmVyYWw6bGFzdE1vZGlmaWVkJyl9OiZuYnNwOzwvcD5cbiAgICAgICAgICAgICAgICAgIHtkYXRhPy51cGRhdGVkQXQgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3ZhbHVlYH0+XG4gICAgICAgICAgICAgICAgICAgICAge2Zvcm1hdERhdGUoZGF0YS51cGRhdGVkQXQsIGRhdGVGb3JtYXQsIGkxOG4ubGFuZ3VhZ2UpfVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1tgJHtiYXNlQ2xhc3N9X19saXN0LWl0ZW1gLCBgJHtiYXNlQ2xhc3N9X192YWx1ZS13cmFwYF1cbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAuam9pbignICcpfVxuICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICBkYXRhPy5jcmVhdGVkQXQgPyBmb3JtYXREYXRlKGRhdGE/LmNyZWF0ZWRBdCwgZGF0ZUZvcm1hdCwgaTE4bi5sYW5ndWFnZSkgOiAnJ1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fbGFiZWxgfT57aTE4bi50KCdnZW5lcmFsOmNyZWF0ZWQnKX06Jm5ic3A7PC9wPlxuICAgICAgICAgICAgICAgICAge2RhdGE/LmNyZWF0ZWRBdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdmFsdWVgfT5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0RGF0ZShkYXRhPy5jcmVhdGVkQXQsIGRhdGVGb3JtYXQsIGkxOG4ubGFuZ3VhZ2UpfVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fY29udHJvbHMtd3JhcHBlcmB9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jb250cm9sc2B9PlxuICAgICAgICAgICAgey8qIHsoY29sbGVjdGlvbkNvbmZpZz8uYWRtaW4/LnByZXZpZXcgfHwgZ2xvYmFsPy5hZG1pbj8ucHJldmlldykgJiYgKFxuICAgICAgICAgICAgICA8UHJldmlld0J1dHRvblxuICAgICAgICAgICAgICAgIEN1c3RvbUNvbXBvbmVudD17XG4gICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uQ29uZmlnPy5hZG1pbj8uY29tcG9uZW50cz8uZWRpdD8uUHJldmlld0J1dHRvbiB8fFxuICAgICAgICAgICAgICAgICAgZ2xvYmFsPy5hZG1pbj8uY29tcG9uZW50cz8uZWxlbWVudHM/LlByZXZpZXdCdXR0b25cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVQcmV2aWV3VVJMPXtjb2xsZWN0aW9uQ29uZmlnPy5hZG1pbj8ucHJldmlldyB8fCBnbG9iYWw/LmFkbWluPy5wcmV2aWV3fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX0gKi99XG4gICAgICAgICAgICB7aGFzU2F2ZVBlcm1pc3Npb24gJiYgKFxuICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAge2NvbGxlY3Rpb25Db25maWc/LnZlcnNpb25zPy5kcmFmdHMgfHwgZ2xvYmFsPy52ZXJzaW9ucz8uZHJhZnRzID8gKFxuICAgICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICB7KChjb2xsZWN0aW9uQ29uZmlnPy52ZXJzaW9ucz8uZHJhZnRzICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWNvbGxlY3Rpb25Db25maWc/LnZlcnNpb25zPy5kcmFmdHM/LmF1dG9zYXZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChnbG9iYWw/LnZlcnNpb25zPy5kcmFmdHMgJiYgIWdsb2JhbD8udmVyc2lvbnM/LmRyYWZ0cz8uYXV0b3NhdmUpKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNhdmVEcmFmdFxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tQ29tcG9uZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbkNvbmZpZz8uYWRtaW4/LmNvbXBvbmVudHM/LmVkaXQ/LlNhdmVEcmFmdEJ1dHRvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWw/LmFkbWluPy5jb21wb25lbnRzPy5lbGVtZW50cz8uU2F2ZURyYWZ0QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFB1Ymxpc2hcbiAgICAgICAgICAgICAgICAgICAgICBDdXN0b21Db21wb25lbnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbkNvbmZpZz8uYWRtaW4/LmNvbXBvbmVudHM/LmVkaXQ/LlB1Ymxpc2hCdXR0b24gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbD8uYWRtaW4/LmNvbXBvbmVudHM/LmVsZW1lbnRzPy5QdWJsaXNoQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPFNhdmVcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tQ29tcG9uZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uQ29uZmlnPy5hZG1pbj8uY29tcG9uZW50cz8uZWRpdD8uU2F2ZUJ1dHRvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbD8uYWRtaW4/LmNvbXBvbmVudHM/LmVsZW1lbnRzPy5TYXZlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge3Nob3dEb3RNZW51ICYmIChcbiAgICAgICAgICAgIDxQb3B1cFxuICAgICAgICAgICAgICBidXR0b249e1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19kb3RzYH0+XG4gICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19wb3B1cGB9XG4gICAgICAgICAgICAgIGhvcml6b250YWxBbGlnbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgdmVydGljYWxBbGlnbj1cImJvdHRvbVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxQb3B1cExpc3QuQnV0dG9uR3JvdXA+XG4gICAgICAgICAgICAgICAge2hhc0NyZWF0ZVBlcm1pc3Npb24gJiYgKFxuICAgICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICA8UG9wdXBMaXN0LkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWN0aW9uLWNyZWF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdG89e2Ake2FkbWluUm91dGV9L2NvbGxlY3Rpb25zLyR7Y29sbGVjdGlvbkNvbmZpZz8uc2x1Z30vY3JlYXRlYH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtpMThuLnQoJ2dlbmVyYWw6Y3JlYXRlTmV3Jyl9XG4gICAgICAgICAgICAgICAgICAgIDwvUG9wdXBMaXN0LkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgeyFjb2xsZWN0aW9uQ29uZmlnPy5hZG1pbj8uZGlzYWJsZUR1cGxpY2F0ZSAmJiBpc0VkaXRpbmcgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxEdXBsaWNhdGVEb2N1bWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2lkLnRvU3RyaW5nKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5ndWxhckxhYmVsPXtjb2xsZWN0aW9uQ29uZmlnPy5sYWJlbHM/LnNpbmd1bGFyfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zz17Y29sbGVjdGlvbkNvbmZpZz8uc2x1Z31cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtoYXNEZWxldGVQZXJtaXNzaW9uICYmIChcbiAgICAgICAgICAgICAgICAgIDxEZWxldGVEb2N1bWVudFxuICAgICAgICAgICAgICAgICAgICBidXR0b25JZD1cImFjdGlvbi1kZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1Zz17Y29sbGVjdGlvbkNvbmZpZz8uc2x1Z31cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2lkLnRvU3RyaW5nKCl9XG4gICAgICAgICAgICAgICAgICAgIHNpbmd1bGFyTGFiZWw9e2NvbGxlY3Rpb25Db25maWc/LmxhYmVscz8uc2luZ3VsYXJ9XG4gICAgICAgICAgICAgICAgICAgIHVzZUFzVGl0bGU9e2NvbGxlY3Rpb25Db25maWc/LmFkbWluPy51c2VBc1RpdGxlfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1BvcHVwTGlzdC5CdXR0b25Hcm91cD5cbiAgICAgICAgICAgIDwvUG9wdXA+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19kaXZpZGVyYH0gLz5cbiAgICA8L0d1dHRlcj5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkRvY3VtZW50Q29udHJvbHMiLCJiYXNlQ2xhc3MiLCJwcm9wcyIsImlkIiwiZGF0YSIsImRpc2FibGVBY3Rpb25zIiwiaGFzU2F2ZVBlcm1pc3Npb24iLCJpc0FjY291bnRWaWV3IiwiaXNFZGl0aW5nIiwicGVybWlzc2lvbnMiLCJzbHVnIiwiaTE4biIsInVzZVRyYW5zbGF0aW9uIiwiY29uZmlnIiwidXNlQ29uZmlnIiwiY29sbGVjdGlvbkNvbmZpZyIsImNvbGxlY3Rpb25zIiwiZmluZCIsImNvbGwiLCJhZG1pbiIsImRhdGVGb3JtYXQiLCJyb3V0ZXMiLCJhZG1pblJvdXRlIiwiaGFzQ3JlYXRlUGVybWlzc2lvbiIsImNyZWF0ZSIsInBlcm1pc3Npb24iLCJoYXNEZWxldGVQZXJtaXNzaW9uIiwiZGVsZXRlIiwic2hvd0RvdE1lbnUiLCJCb29sZWFuIiwiR3V0dGVyIiwiY2xhc3NOYW1lIiwiZGl2IiwidWwiLCJsaSIsInAiLCJ0IiwibGFiZWwiLCJsYWJlbHMiLCJzaW5ndWxhciIsInZlcnNpb25zIiwiZHJhZnRzIiwiZ2xvYmFsIiwiRnJhZ21lbnQiLCJmaWx0ZXIiLCJqb2luIiwiU3RhdHVzIiwiYXV0b3NhdmUiLCJ0aW1lc3RhbXBzIiwidGl0bGUiLCJ1cGRhdGVkQXQiLCJmb3JtYXREYXRlIiwibGFuZ3VhZ2UiLCJjcmVhdGVkQXQiLCJSZWFjdCIsIlNhdmVEcmFmdCIsIkN1c3RvbUNvbXBvbmVudCIsImNvbXBvbmVudHMiLCJlZGl0IiwiU2F2ZURyYWZ0QnV0dG9uIiwiZWxlbWVudHMiLCJQdWJsaXNoIiwiUHVibGlzaEJ1dHRvbiIsIlNhdmUiLCJTYXZlQnV0dG9uIiwiUG9wdXAiLCJidXR0b24iLCJob3Jpem9udGFsQWxpZ24iLCJzaXplIiwidmVydGljYWxBbGlnbiIsIlBvcHVwTGlzdCIsIkJ1dHRvbkdyb3VwIiwiQnV0dG9uIiwidG8iLCJkaXNhYmxlRHVwbGljYXRlIiwiRHVwbGljYXRlRG9jdW1lbnQiLCJ0b1N0cmluZyIsInNpbmd1bGFyTGFiZWwiLCJEZWxldGVEb2N1bWVudCIsImJ1dHRvbklkIiwiY29sbGVjdGlvblNsdWciLCJ1c2VBc1RpdGxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBeUJhQTs7O2VBQUFBOzs7K0RBckJtQjt3QkFFTjs2QkFFSzs0QkFDSjt1RUFFQTswRUFDRzt3QkFDUDs4REFDTDt5RUFDUzt5QkFFSDtzQkFDSDsyQkFDSzsrREFDUDtRQUNaOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVQLE1BQU1DLFlBQVk7QUFFWCxNQUFNRCxtQkFVUixDQUFDRTtJQUNKLE1BQU0sRUFDSkMsRUFBRSxFQUNGQyxJQUFJLEVBQ0pDLGNBQWMsRUFDZEMsaUJBQWlCLEVBQ2pCQyxhQUFhLEVBQ2JDLFNBQVMsRUFDVEMsV0FBVyxFQUNYQyxJQUFJLEVBQ0wsR0FBR1I7SUFFSixNQUFNLEVBQUVTLElBQUksRUFBRSxHQUFHQyxJQUFBQSwyQkFBYztJQUUvQixNQUFNQyxTQUFTQyxJQUFBQSxpQkFBUztJQUV4QixNQUFNQyxtQkFB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
@@ -0,0 +1,219 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "DocumentDrawerContent", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return DocumentDrawerContent;
10
+ }
11
+ });
12
+ const _modal = require("@faceless-ui/modal");
13
+ const _translations = require("@payloadcms/translations");
14
+ const _qs = /*#__PURE__*/ _interop_require_default(require("qs"));
15
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
16
+ const _reacttoastify = require("react-toastify");
17
+ const _ = require(".");
18
+ const _FieldPathProvider = require("../../forms/FieldPathProvider");
19
+ const _useRelatedCollections = require("../../forms/fields/Relationship/AddNew/useRelatedCollections");
20
+ const _usePayloadAPI = /*#__PURE__*/ _interop_require_default(require("../../hooks/usePayloadAPI"));
21
+ const _X = require("../../icons/X");
22
+ const _ComponentMapProvider = require("../../providers/ComponentMapProvider");
23
+ const _Config = require("../../providers/Config");
24
+ const _DocumentInfo = require("../../providers/DocumentInfo");
25
+ const _FormQueryParams = require("../../providers/FormQueryParams");
26
+ const _Locale = require("../../providers/Locale");
27
+ const _Translation = require("../../providers/Translation");
28
+ const _getFormState = require("../../utilities/getFormState");
29
+ const _Gutter = require("../Gutter");
30
+ const _IDLabel = /*#__PURE__*/ _interop_require_default(require("../IDLabel"));
31
+ const _Loading = require("../Loading");
32
+ function _interop_require_default(obj) {
33
+ return obj && obj.__esModule ? obj : {
34
+ default: obj
35
+ };
36
+ }
37
+ function _getRequireWildcardCache(nodeInterop) {
38
+ if (typeof WeakMap !== "function") return null;
39
+ var cacheBabelInterop = new WeakMap();
40
+ var cacheNodeInterop = new WeakMap();
41
+ return (_getRequireWildcardCache = function(nodeInterop) {
42
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
43
+ })(nodeInterop);
44
+ }
45
+ function _interop_require_wildcard(obj, nodeInterop) {
46
+ if (!nodeInterop && obj && obj.__esModule) {
47
+ return obj;
48
+ }
49
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
50
+ return {
51
+ default: obj
52
+ };
53
+ }
54
+ var cache = _getRequireWildcardCache(nodeInterop);
55
+ if (cache && cache.has(obj)) {
56
+ return cache.get(obj);
57
+ }
58
+ var newObj = {
59
+ __proto__: null
60
+ };
61
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
62
+ for(var key in obj){
63
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
64
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
65
+ if (desc && (desc.get || desc.set)) {
66
+ Object.defineProperty(newObj, key, desc);
67
+ } else {
68
+ newObj[key] = obj[key];
69
+ }
70
+ }
71
+ }
72
+ newObj.default = obj;
73
+ if (cache) {
74
+ cache.set(obj, newObj);
75
+ }
76
+ return newObj;
77
+ }
78
+ const Content = ({ id, Header, collectionSlug, drawerSlug, onSave })=>{
79
+ const config = (0, _Config.useConfig)();
80
+ const { routes: { api: apiRoute }, serverURL } = config;
81
+ const { closeModal, modalState, toggleModal } = (0, _modal.useModal)();
82
+ const locale = (0, _Locale.useLocale)();
83
+ const [initialState, setInitialState] = (0, _react.useState)();
84
+ const { i18n, t } = (0, _Translation.useTranslation)();
85
+ const hasInitializedState = (0, _react.useRef)(false);
86
+ const [isOpen, setIsOpen] = (0, _react.useState)(false);
87
+ const [collectionConfig] = (0, _useRelatedCollections.useRelatedCollections)(collectionSlug);
88
+ const { formQueryParams } = (0, _FormQueryParams.useFormQueryParams)();
89
+ const formattedQueryParams = _qs.default.stringify(formQueryParams);
90
+ const { fields: fieldsFromConfig } = collectionConfig;
91
+ const { schemaPath } = (0, _FieldPathProvider.useFieldPath)();
92
+ const { componentMap } = (0, _ComponentMapProvider.useComponentMap)();
93
+ const { Edit } = componentMap[`${collectionSlug ? 'collections' : 'globals'}`][collectionSlug];
94
+ // no need to an additional requests when creating new documents
95
+ const initialID = (0, _react.useRef)(id);
96
+ const [{ data, isError, isLoading: isLoadingDocument }] = (0, _usePayloadAPI.default)(initialID.current ? `${serverURL}${apiRoute}/${collectionSlug}/${initialID.current}` : null, {
97
+ initialParams: {
98
+ depth: 0,
99
+ draft: 'true',
100
+ 'fallback-locale': 'null'
101
+ }
102
+ });
103
+ (0, _react.useEffect)(()=>{
104
+ setIsOpen(Boolean(modalState[drawerSlug]?.isOpen));
105
+ }, [
106
+ modalState,
107
+ drawerSlug
108
+ ]);
109
+ (0, _react.useEffect)(()=>{
110
+ if (isOpen && !isLoadingDocument && isError) {
111
+ closeModal(drawerSlug);
112
+ _reacttoastify.toast.error(data.errors?.[0].message || t('error:unspecific'));
113
+ }
114
+ }, [
115
+ isError,
116
+ t,
117
+ isOpen,
118
+ data,
119
+ drawerSlug,
120
+ closeModal,
121
+ isLoadingDocument
122
+ ]);
123
+ const isEditing = Boolean(id);
124
+ const apiURL = id ? `${serverURL}${apiRoute}/${collectionSlug}/${id}?locale=${locale.code}` : null;
125
+ const action = `${serverURL}${apiRoute}/${collectionSlug}${isEditing ? `/${id}` : ''}?${formattedQueryParams}`;
126
+ // const hasSavePermission =
127
+ // (isEditing && docPermissions?.update?.permission) ||
128
+ // (!isEditing && (docPermissions as CollectionPermission)?.create?.permission)
129
+ (0, _react.useEffect)(()=>{
130
+ if (!hasInitializedState.current && (!initialID.current || initialID.current && data)) {
131
+ const getInitialState = async ()=>{
132
+ const result = await (0, _getFormState.getFormState)({
133
+ apiRoute,
134
+ body: {
135
+ id,
136
+ collectionSlug,
137
+ data: data || {},
138
+ operation: isEditing ? 'update' : 'create',
139
+ schemaPath
140
+ },
141
+ serverURL
142
+ });
143
+ setInitialState(result);
144
+ hasInitializedState.current = true;
145
+ };
146
+ void getInitialState();
147
+ }
148
+ }, [
149
+ apiRoute,
150
+ data,
151
+ id,
152
+ isEditing,
153
+ schemaPath,
154
+ serverURL,
155
+ collectionSlug
156
+ ]);
157
+ if (isError) return null;
158
+ if (!initialState || isLoadingDocument) {
159
+ return /*#__PURE__*/ _react.default.createElement(_Loading.LoadingOverlay, null);
160
+ }
161
+ return /*#__PURE__*/ _react.default.createElement(_DocumentInfo.DocumentInfoProvider, {
162
+ BeforeDocument: /*#__PURE__*/ _react.default.createElement(_Gutter.Gutter, {
163
+ className: `${_.baseClass}__header`
164
+ }, /*#__PURE__*/ _react.default.createElement("div", {
165
+ className: `${_.baseClass}__header-content`
166
+ }, /*#__PURE__*/ _react.default.createElement("h2", {
167
+ className: `${_.baseClass}__header-text`
168
+ }, Header || t(!id ? 'fields:addNewLabel' : 'general:editLabel', {
169
+ label: (0, _translations.getTranslation)(collectionConfig.labels.singular, i18n)
170
+ })), /*#__PURE__*/ _react.default.createElement("button", {
171
+ "aria-label": t('general:close'),
172
+ className: `${_.baseClass}__header-close`,
173
+ onClick: ()=>toggleModal(drawerSlug),
174
+ type: "button"
175
+ }, /*#__PURE__*/ _react.default.createElement(_X.X, null))), id && /*#__PURE__*/ _react.default.createElement(_IDLabel.default, {
176
+ id: id.toString()
177
+ })),
178
+ action: action,
179
+ apiURL: apiURL,
180
+ collectionSlug: collectionConfig.slug,
181
+ disableActions: true,
182
+ disableLeaveWithoutSaving: true,
183
+ // hasSavePermission={hasSavePermission}
184
+ // isEditing={isEditing}
185
+ // isLoading,
186
+ id: id,
187
+ initialData: data,
188
+ initialState: initialState,
189
+ // me: true,
190
+ onSave: onSave
191
+ }, Edit);
192
+ };
193
+ const DocumentDrawerContent = (props)=>{
194
+ const { id: idFromProps, collectionSlug, onSave: onSaveFromProps } = props;
195
+ const [collectionConfig] = (0, _useRelatedCollections.useRelatedCollections)(collectionSlug);
196
+ const [id, setId] = (0, _react.useState)(idFromProps);
197
+ const onSave = (0, _react.useCallback)(async (args)=>{
198
+ setId(args.doc.id);
199
+ if (typeof onSaveFromProps === 'function') {
200
+ onSaveFromProps({
201
+ ...args,
202
+ collectionConfig
203
+ });
204
+ }
205
+ }, [
206
+ onSaveFromProps,
207
+ collectionConfig
208
+ ]);
209
+ return /*#__PURE__*/ _react.default.createElement(_FieldPathProvider.FieldPathProvider, {
210
+ path: "",
211
+ schemaPath: collectionSlug
212
+ }, /*#__PURE__*/ _react.default.createElement(Content, {
213
+ ...props,
214
+ id: id,
215
+ onSave: onSave
216
+ }));
217
+ };
218
+
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9Eb2N1bWVudERyYXdlci9EcmF3ZXJDb250ZW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgdXNlTW9kYWwgfSBmcm9tICdAZmFjZWxlc3MtdWkvbW9kYWwnXG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gJ0BwYXlsb2FkY21zL3RyYW5zbGF0aW9ucydcbmltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxcydcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gJ3JlYWN0LXRvYXN0aWZ5J1xuXG5pbXBvcnQgdHlwZSB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uL2Zvcm1zL0Zvcm0vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IERvY3VtZW50RHJhd2VyUHJvcHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBiYXNlQ2xhc3MgfSBmcm9tICcuJ1xuaW1wb3J0IHsgRmllbGRQYXRoUHJvdmlkZXIsIHVzZUZpZWxkUGF0aCB9IGZyb20gJy4uLy4uL2Zvcm1zL0ZpZWxkUGF0aFByb3ZpZGVyJ1xuaW1wb3J0IHsgdXNlUmVsYXRlZENvbGxlY3Rpb25zIH0gZnJvbSAnLi4vLi4vZm9ybXMvZmllbGRzL1JlbGF0aW9uc2hpcC9BZGROZXcvdXNlUmVsYXRlZENvbGxlY3Rpb25zJ1xuaW1wb3J0IHVzZVBheWxvYWRBUEkgZnJvbSAnLi4vLi4vaG9va3MvdXNlUGF5bG9hZEFQSSdcbmltcG9ydCB7IFggfSBmcm9tICcuLi8uLi9pY29ucy9YJ1xuaW1wb3J0IHsgdXNlQ29tcG9uZW50TWFwIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0NvbXBvbmVudE1hcFByb3ZpZGVyJ1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0NvbmZpZydcbmltcG9ydCB7IERvY3VtZW50SW5mb1Byb3ZpZGVyIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL0RvY3VtZW50SW5mbydcbmltcG9ydCB7IHVzZUZvcm1RdWVyeVBhcmFtcyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9Gb3JtUXVlcnlQYXJhbXMnXG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvTG9jYWxlJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvVHJhbnNsYXRpb24nXG5pbXBvcnQgeyBnZXRGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZ2V0Rm9ybVN0YXRlJ1xuaW1wb3J0IHsgR3V0dGVyIH0gZnJvbSAnLi4vR3V0dGVyJ1xuaW1wb3J0IElETGFiZWwgZnJvbSAnLi4vSURMYWJlbCdcbmltcG9ydCB7IExvYWRpbmdPdmVybGF5IH0gZnJvbSAnLi4vTG9hZGluZydcblxuY29uc3QgQ29udGVudDogUmVhY3QuRkM8RG9jdW1lbnREcmF3ZXJQcm9wcz4gPSAoe1xuICBpZCxcbiAgSGVhZGVyLFxuICBjb2xsZWN0aW9uU2x1ZyxcbiAgZHJhd2VyU2x1ZyxcbiAgb25TYXZlLFxufSkgPT4ge1xuICBjb25zdCBjb25maWcgPSB1c2VDb25maWcoKVxuXG4gIGNvbnN0IHtcbiAgICByb3V0ZXM6IHsgYXBpOiBhcGlSb3V0ZSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IHsgY2xvc2VNb2RhbCwgbW9kYWxTdGF0ZSwgdG9nZ2xlTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgbG9jYWxlID0gdXNlTG9jYWxlKClcbiAgY29uc3QgW2luaXRpYWxTdGF0ZSwgc2V0SW5pdGlhbFN0YXRlXSA9IHVzZVN0YXRlPEZvcm1TdGF0ZT4oKVxuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgaGFzSW5pdGlhbGl6ZWRTdGF0ZSA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY29sbGVjdGlvbkNvbmZpZ10gPSB1c2VSZWxhdGVkQ29sbGVjdGlvbnMoY29sbGVjdGlvblNsdWcpXG4gIGNvbnN0IHsgZm9ybVF1ZXJ5UGFyYW1zIH0gPSB1c2VGb3JtUXVlcnlQYXJhbXMoKVxuICBjb25zdCBmb3JtYXR0ZWRRdWVyeVBhcmFtcyA9IHF1ZXJ5U3RyaW5nLnN0cmluZ2lmeShmb3JtUXVlcnlQYXJhbXMpXG5cbiAgY29uc3QgeyBmaWVsZHM6IGZpZWxkc0Zyb21Db25maWcgfSA9IGNvbGxlY3Rpb25Db25maWdcblxuICBjb25zdCB7IHNjaGVtYVBhdGggfSA9IHVzZUZpZWxkUGF0aCgpXG5cbiAgY29uc3QgeyBjb21wb25lbnRNYXAgfSA9IHVzZUNvbXBvbmVudE1hcCgpXG5cbiAgY29uc3QgeyBFZGl0IH0gPSBjb21wb25lbnRNYXBbYCR7Y29sbGVjdGlvblNsdWcgPyAnY29sbGVjdGlvbnMnIDogJ2dsb2JhbHMnfWBdW2NvbGxlY3Rpb25TbHVnXVxuXG4gIC8vIG5vIG5lZWQgdG8gYW4gYWRkaXRpb25hbCByZXF1ZXN0cyB3aGVuIGNyZWF0aW5nIG5ldyBkb2N1bWVudHNcbiAgY29uc3QgaW5pdGlhbElEID0gdXNlUmVmKGlkKVxuXG4gIGNvbnN0IFt7IGRhdGEsIGlzRXJyb3IsIGlzTG9hZGluZzogaXNMb2FkaW5nRG9jdW1lbnQgfV0gPSB1c2VQYXlsb2FkQVBJKFxuICAgIGluaXRpYWxJRC5jdXJyZW50ID8gYCR7c2VydmVyVVJMfSR7YXBpUm91dGV9LyR7Y29sbGVjdGlvblNsdWd9LyR7aW5pdGlhbElELmN1cnJlbnR9YCA6IG51bGwsXG4gICAgeyBpbml0aWFsUGFyYW1zOiB7IGRlcHRoOiAwLCBkcmFmdDogJ3RydWUnLCAnZmFsbGJhY2stbG9jYWxlJzogJ251bGwnIH0gfSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNPcGVuKEJvb2xlYW4obW9kYWxTdGF0ZVtkcmF3ZXJTbHVnXT8uaXNPcGVuKSlcbiAgfSwgW21vZGFsU3RhdGUsIGRyYXdlclNsdWddKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiAhaXNMb2FkaW5nRG9jdW1lbnQgJiYgaXNFcnJvcikge1xuICAgICAgY2xvc2VNb2RhbChkcmF3ZXJTbHVnKVxuICAgICAgdG9hc3QuZXJyb3IoZGF0YS5lcnJvcnM/LlswXS5tZXNzYWdlIHx8IHQoJ2Vycm9yOnVuc3BlY2lmaWMnKSlcbiAgICB9XG4gIH0sIFtpc0Vycm9yLCB0LCBpc09wZW4sIGRhdGEsIGRyYXdlclNsdWcsIGNsb3NlTW9kYWwsIGlzTG9hZGluZ0RvY3VtZW50XSlcblxuICBjb25zdCBpc0VkaXRpbmcgPSBCb29sZWFuKGlkKVxuXG4gIGNvbnN0IGFwaVVSTCA9IGlkID8gYCR7c2VydmVyVVJMfSR7YXBpUm91dGV9LyR7Y29sbGVjdGlvblNsdWd9LyR7aWR9P2xvY2FsZT0ke2xvY2FsZS5jb2RlfWAgOiBudWxsXG5cbiAgY29uc3QgYWN0aW9uID0gYCR7c2VydmVyVVJMfSR7YXBpUm91dGV9LyR7Y29sbGVjdGlvblNsdWd9JHtcbiAgICBpc0VkaXRpbmcgPyBgLyR7aWR9YCA6ICcnXG4gIH0/JHtmb3JtYXR0ZWRRdWVyeVBhcmFtc31gXG5cbiAgLy8gY29uc3QgaGFzU2F2ZVBlcm1pc3Npb24gPVxuICAvLyAgIChpc0VkaXRpbmcgJiYgZG9jUGVybWlzc2lvbnM/LnVwZGF0ZT8ucGVybWlzc2lvbikgfHxcbiAgLy8gICAoIWlzRWRpdGluZyAmJiAoZG9jUGVybWlzc2lvbnMgYXMgQ29sbGVjdGlvblBlcm1pc3Npb24pPy5jcmVhdGU/LnBlcm1pc3Npb24pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWhhc0luaXRpYWxpemVkU3RhdGUuY3VycmVudCAmJiAoIWluaXRpYWxJRC5jdXJyZW50IHx8IChpbml0aWFsSUQuY3VycmVudCAmJiBkYXRhKSkpIHtcbiAgICAgIGNvbnN0IGdldEluaXRpYWxTdGF0ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0Rm9ybVN0YXRlKHtcbiAgICAgICAgICBhcGlSb3V0ZSxcbiAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgZGF0YTogZGF0YSB8fCB7fSxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogaXNFZGl0aW5nID8gJ3VwZGF0ZScgOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIHNjaGVtYVBhdGgsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXJ2ZXJVUkwsXG4gICAgICAgIH0pXG5cbiAgICAgICAgc2V0SW5pdGlhbFN0YXRlKHJlc3VsdClcbiAgICAgICAgaGFzSW5pdGlhbGl6ZWRTdGF0ZS5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICB2b2lkIGdldEluaXRpYWxTdGF0ZSgpXG4gICAgfVxuICB9LCBbYXBpUm91dGUsIGRhdGEsIGlkLCBpc0VkaXRpbmcsIHNjaGVtYVBhdGgsIHNlcnZlclVSTCwgY29sbGVjdGlvblNsdWddKVxuXG4gIGlmIChpc0Vycm9yKSByZXR1cm4gbnVsbFxuXG4gIGlmICghaW5pdGlhbFN0YXRlIHx8IGlzTG9hZGluZ0RvY3VtZW50KSB7XG4gICAgcmV0dXJuIDxMb2FkaW5nT3ZlcmxheSAvPlxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8RG9jdW1lbnRJbmZvUHJvdmlkZXJcbiAgICAgIEJlZm9yZURvY3VtZW50PXtcbiAgICAgICAgPEd1dHRlciBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2hlYWRlcmB9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19oZWFkZXItY29udGVudGB9PlxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faGVhZGVyLXRleHRgfT5cbiAgICAgICAgICAgICAge0hlYWRlciB8fFxuICAgICAgICAgICAgICAgIHQoIWlkID8gJ2ZpZWxkczphZGROZXdMYWJlbCcgOiAnZ2VuZXJhbDplZGl0TGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0VHJhbnNsYXRpb24oY29sbGVjdGlvbkNvbmZpZy5sYWJlbHMuc2luZ3VsYXIsIGkxOG4pLFxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgIHsvKiBUT0RPOiB0aGUgYGJ1dHRvbmAgSFRNTCBlbGVtZW50IGJyZWFrcyBDU1MgdHJhbnNpdGlvbnMgb24gdGhlIGRyYXdlciBmb3Igc29tZSByZWFzb24uLi5cbiAgICAgICAgICAgIGkuZS4gY2hhbmdpbmcgdG8gYSBgZGl2YCBlbGVtZW50IHdpbGwgZml4IHRoZSBhbmltYXRpb24gaXNzdWUgYnV0IHdpbGwgYnJlYWsgYWNjZXNzaWJpbGl0eVxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdnZW5lcmFsOmNsb3NlJyl9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faGVhZGVyLWNsb3NlYH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlTW9kYWwoZHJhd2VyU2x1Zyl9XG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8WCAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge2lkICYmIDxJRExhYmVsIGlkPXtpZC50b1N0cmluZygpfSAvPn1cbiAgICAgICAgPC9HdXR0ZXI+XG4gICAgICB9XG4gICAgICBhY3Rpb249e2FjdGlvbn1cbiAgICAgIGFwaVVSTD17YXBpVVJMfVxuICAgICAgY29sbGVjdGlvblNsdWc9e2NvbGxlY3Rpb25Db25maWcuc2x1Z31cbiAgICAgIGRpc2FibGVBY3Rpb25zXG4gICAgICBkaXNhYmxlTGVhdmVXaXRob3V0U2F2aW5nXG4gICAgICAvLyBoYXNTYXZlUGVybWlzc2lvbj17aGFzU2F2ZVBlcm1pc3Npb259XG4gICAgICAvLyBpc0VkaXRpbmc9e2lzRWRpdGluZ31cbiAgICAgIC8vIGlzTG9hZGluZyxcbiAgICAgIGlkPXtpZH1cbiAgICAgIGluaXRpYWxEYXRhPXtkYXRhfVxuICAgICAgaW5pdGlhbFN0YXRlPXtpbml0aWFsU3RhdGV9XG4gICAgICAvLyBtZTogdHJ1ZSxcbiAgICAgIG9uU2F2ZT17b25TYXZlfVxuICAgID5cbiAgICAgIHtFZGl0fVxuICAgIDwvRG9jdW1lbnRJbmZvUHJvdmlkZXI+XG4gIClcbn1cblxuLy8gRmlyc3QgcHJvdmlkZSB0aGUgZG9jdW1lbnQgY29udGV4dCB1c2luZyBgRG9jdW1lbnRJbmZvUHJvdmlkZXJgXG4vLyB0aGlzIGlzIHNvIHdlIGNhbiB1dGlsaXplIHRoZSBgdXNlRG9jdW1lbnRJbmZvYCBob29rIGluIHRoZSBgQ29udGVudGAgY29tcG9uZW50XG4vLyB0aGlzIGRyYXdlciBpcyB1c2VkIGZvciBib3RoIGNyZWF0aW5nIGFuZCBlZGl0aW5nIGRvY3VtZW50c1xuLy8gdGhpcyBtZWFucyB0aGF0IHRoZSBgaWRgIG1heSBiZSB1bmtub3duIHVudGlsIHRoZSBkb2N1bWVudCBpcyBjcmVhdGVkXG5leHBvcnQgY29uc3QgRG9jdW1lbnREcmF3ZXJDb250ZW50OiBSZWFjdC5GQzxEb2N1bWVudERyYXdlclByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGlkOiBpZEZyb21Qcm9wcywgY29sbGVjdGlvblNsdWcsIG9uU2F2ZTogb25TYXZlRnJvbVByb3BzIH0gPSBwcm9wc1xuICBjb25zdCBbY29sbGVjdGlvbkNvbmZpZ10gPSB1c2VSZWxhdGVkQ29sbGVjdGlvbnMoY29sbGVjdGlvblNsdWcpXG4gIGNvbnN0IFtpZCwgc2V0SWRdID0gdXNlU3RhdGU8bnVsbCB8IG51bWJlciB8IHN0cmluZz4oaWRGcm9tUHJvcHMpXG5cbiAgY29uc3Qgb25TYXZlID0gdXNlQ2FsbGJhY2s8RG9jdW1lbnREcmF3ZXJQcm9wc1snb25TYXZlJ10+KFxuICAgIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBzZXRJZChhcmdzLmRvYy5pZClcblxuICAgICAgaWYgKHR5cGVvZiBvblNhdmVGcm9tUHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25TYXZlRnJvbVByb3BzKHtcbiAgICAgICAgICAuLi5hcmdzLFxuICAgICAgICAgIGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbb25TYXZlRnJvbVByb3BzLCBjb2xsZWN0aW9uQ29uZmlnXSxcbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEZpZWxkUGF0aFByb3ZpZGVyIHBhdGg9XCJcIiBzY2hlbWFQYXRoPXtjb2xsZWN0aW9uU2x1Z30+XG4gICAgICA8Q29udGVudCB7Li4ucHJvcHN9IGlkPXtpZH0gb25TYXZlPXtvblNhdmV9IC8+XG4gICAgPC9GaWVsZFBhdGhQcm92aWRlcj5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkRvY3VtZW50RHJhd2VyQ29udGVudCIsIkNvbnRlbnQiLCJpZCIsIkhlYWRlciIsImNvbGxlY3Rpb25TbHVnIiwiZHJhd2VyU2x1ZyIsIm9uU2F2ZSIsImNvbmZpZyIsInVzZUNvbmZpZyIsInJvdXRlcyIsImFwaSIsImFwaVJvdXRlIiwic2VydmVyVVJMIiwiY2xvc2VNb2RhbCIsIm1vZGFsU3RhdGUiLCJ0b2dnbGVNb2RhbCIsInVzZU1vZGFsIiwibG9jYWxlIiwidXNlTG9jYWxlIiwiaW5pdGlhbFN0YXRlIiwic2V0SW5pdGlhbFN0YXRlIiwidXNlU3RhdGUiLCJpMThuIiwidCIsInVzZVRyYW5zbGF0aW9uIiwiaGFzSW5pdGlhbGl6ZWRTdGF0ZSIsInVzZVJlZiIsImlzT3BlbiIsInNldElzT3BlbiIsImNvbGxlY3Rpb25Db25maWciLCJ1c2VSZWxhdGVkQ29sbGVjdGlvbnMiLCJmb3JtUXVlcnlQYXJhbXMiLCJ1c2VGb3JtUXVlcnlQYXJhbXMiLCJmb3JtYXR0ZWRRdWVyeVBhcmFtcyIsInF1ZXJ5U3RyaW5nIiwic3RyaW5naWZ5IiwiZmllbGRzIiwiZmllbGRzRnJvbUNvbmZpZyIsInNjaGVtYVBhdGgiLCJ1c2VGaWVsZFBhdGgiLCJjb21wb25lbnRNYXAiLCJ1c2VDb21wb25lbnRNYXAiLCJFZGl0IiwiaW5pdGlhbElEIiwiZGF0YSIsImlzRXJyb3IiLCJpc0xvYWRpbmciLCJpc0xvYWRpbmdEb2N1bWVudCIsInVzZVBheWxvYWRBUEkiLCJjdXJyZW50IiwiaW5pdGlhbFBhcmFtcyIsImRlcHRoIiwiZHJhZnQiLCJ1c2VFZmZlY3QiLCJCb29sZWFuIiwidG9hc3QiLCJlcnJvciIsImVycm9ycyIsIm1lc3NhZ2UiLCJpc0VkaXRpbmciLCJhcGlVUkwiLCJjb2RlIiwiYWN0aW9uIiwiZ2V0SW5pdGlhbFN0YXRlIiwicmVzdWx0IiwiZ2V0Rm9ybVN0YXRlIiwiYm9keSIsIm9wZXJhdGlvbiIsIkxvYWRpbmdPdmVybGF5IiwiRG9jdW1lbnRJbmZvUHJvdmlkZXIiLCJCZWZvcmVEb2N1bWVudCIsIkd1dHRlciIsImNsYXNzTmFtZSIsImJhc2VDbGFzcyIsImRpdiIsImgyIiwibGFiZWwiLCJnZXRUcmFuc2xhdGlvbiIsImxhYmVscyIsInNpbmd1bGFyIiwiYnV0dG9uIiwiYXJpYS1sYWJlbCIsIm9uQ2xpY2siLCJ0eXBlIiwiWCIsIklETGFiZWwiLCJ0b1N0cmluZyIsInNsdWciLCJkaXNhYmxlQWN0aW9ucyIsImRpc2FibGVMZWF2ZVdpdGhvdXRTYXZpbmciLCJpbml0aWFsRGF0YSIsInByb3BzIiwiaWRGcm9tUHJvcHMiLCJvblNhdmVGcm9tUHJvcHMiLCJzZXRJZCIsInVzZUNhbGxiYWNrIiwiYXJncyIsImRvYyIsIkZpZWxkUGF0aFByb3ZpZGVyIiwicGF0aCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OytCQXdLYUE7OztlQUFBQTs7O3VCQXRLWTs4QkFDTTsyREFDUDsrREFDd0M7K0JBQzFDO2tC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