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

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 (419) 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.d.ts.map +1 -1
  6. package/dist/elements/Autosave/index.js +207 -0
  7. package/dist/elements/Autosave/types.js +6 -0
  8. package/dist/elements/Banner/index.js +52 -0
  9. package/dist/elements/Banner/types.js +6 -0
  10. package/dist/elements/Button/index.js +166 -0
  11. package/dist/elements/Button/types.js +6 -0
  12. package/dist/elements/Card/index.js +46 -0
  13. package/dist/elements/Card/types.js +6 -0
  14. package/dist/elements/CodeEditor/CodeEditor.js +53 -0
  15. package/dist/elements/CodeEditor/index.js +68 -0
  16. package/dist/elements/CodeEditor/types.js +6 -0
  17. package/dist/elements/Collapsible/index.js +128 -0
  18. package/dist/elements/Collapsible/provider.js +90 -0
  19. package/dist/elements/Collapsible/types.js +6 -0
  20. package/dist/elements/ColumnSelector/index.js +109 -0
  21. package/dist/elements/ColumnSelector/types.js +6 -0
  22. package/dist/elements/CopyToClipboard/index.js +98 -0
  23. package/dist/elements/CopyToClipboard/types.js +6 -0
  24. package/dist/elements/DatePicker/DatePicker.js +147 -0
  25. package/dist/elements/DatePicker/index.js +63 -0
  26. package/dist/elements/DatePicker/types.js +6 -0
  27. package/dist/elements/DeleteDocument/index.js +178 -0
  28. package/dist/elements/DeleteDocument/types.js +6 -0
  29. package/dist/elements/DeleteMany/index.js +176 -0
  30. package/dist/elements/DeleteMany/types.js +6 -0
  31. package/dist/elements/DocumentControls/index.d.ts +2 -2
  32. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  33. package/dist/elements/DocumentControls/index.js +159 -0
  34. package/dist/elements/DocumentDrawer/DrawerContent.js +219 -0
  35. package/dist/elements/DocumentDrawer/index.js +185 -0
  36. package/dist/elements/DocumentDrawer/types.js +6 -0
  37. package/dist/elements/DocumentFields/index.js +55 -0
  38. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +23 -0
  39. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +42 -0
  40. package/dist/elements/DocumentHeader/Tabs/Tab/index.js +105 -0
  41. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +48 -0
  42. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +24 -0
  43. package/dist/elements/DocumentHeader/Tabs/index.js +84 -0
  44. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +27 -0
  45. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +75 -0
  46. package/dist/elements/DocumentHeader/index.js +81 -0
  47. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +82 -0
  48. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js +6 -0
  49. package/dist/elements/DraggableSortable/index.js +96 -0
  50. package/dist/elements/DraggableSortable/types.js +6 -0
  51. package/dist/elements/DraggableSortable/useDraggableSortable/index.js +32 -0
  52. package/dist/elements/DraggableSortable/useDraggableSortable/types.js +6 -0
  53. package/dist/elements/Drawer/index.js +156 -0
  54. package/dist/elements/Drawer/types.js +6 -0
  55. package/dist/elements/Drawer/useDrawerSlug.js +23 -0
  56. package/dist/elements/Dropzone/index.js +117 -0
  57. package/dist/elements/DuplicateDocument/index.js +217 -0
  58. package/dist/elements/DuplicateDocument/types.js +6 -0
  59. package/dist/elements/EditMany/index.js +274 -0
  60. package/dist/elements/EditMany/types.js +6 -0
  61. package/dist/elements/EditUpload/index.js +390 -0
  62. package/dist/elements/ErrorPill/index.js +37 -0
  63. package/dist/elements/ErrorPill/types.js +6 -0
  64. package/dist/elements/FieldSelect/index.js +138 -0
  65. package/dist/elements/FileDetails/FileMeta/index.js +96 -0
  66. package/dist/elements/FileDetails/FileMeta/types.js +6 -0
  67. package/dist/elements/FileDetails/index.js +59 -0
  68. package/dist/elements/FileDetails/types.js +6 -0
  69. package/dist/elements/GenerateConfirmation/index.js +72 -0
  70. package/dist/elements/GenerateConfirmation/types.js +6 -0
  71. package/dist/elements/GetFilterOptions/index.js +57 -0
  72. package/dist/elements/Gutter/index.js +72 -0
  73. package/dist/elements/Hamburger/index.js +54 -0
  74. package/dist/elements/Header/index.d.ts.map +1 -1
  75. package/dist/elements/Header/index.js +140 -0
  76. package/dist/elements/HydrateClientUser/index.js +28 -0
  77. package/dist/elements/IDLabel/index.js +28 -0
  78. package/dist/elements/ListControls/getTextFieldsToBeSearched.js +21 -0
  79. package/dist/elements/ListControls/index.js +149 -0
  80. package/dist/elements/ListControls/types.js +6 -0
  81. package/dist/elements/ListDrawer/DrawerContent.js +315 -0
  82. package/dist/elements/ListDrawer/index.js +198 -0
  83. package/dist/elements/ListDrawer/types.js +6 -0
  84. package/dist/elements/ListSelection/index.js +83 -0
  85. package/dist/elements/Loading/index.js +103 -0
  86. package/dist/elements/LoadingOverlay/index.js +130 -0
  87. package/dist/elements/LoadingOverlay/reducer.js +49 -0
  88. package/dist/elements/LoadingOverlay/types.js +6 -0
  89. package/dist/elements/Localizer/LocalizerLabel/index.js +43 -0
  90. package/dist/elements/Localizer/index.js +121 -0
  91. package/dist/elements/Logout/index.d.ts.map +1 -1
  92. package/dist/elements/Logout/index.js +49 -0
  93. package/dist/elements/Nav/NavHamburger/index.js +34 -0
  94. package/dist/elements/Nav/NavToggler/index.js +53 -0
  95. package/dist/elements/Nav/NavWrapper/index.js +34 -0
  96. package/dist/elements/Nav/context.js +150 -0
  97. package/dist/elements/Nav/index.d.ts.map +1 -1
  98. package/dist/elements/Nav/index.js +106 -0
  99. package/dist/elements/NavGroup/index.js +129 -0
  100. package/dist/elements/Pagination/ClickableArrow/index.js +36 -0
  101. package/dist/elements/Pagination/ClickableArrow/types.js +6 -0
  102. package/dist/elements/Pagination/Page/index.js +33 -0
  103. package/dist/elements/Pagination/Page/types.js +6 -0
  104. package/dist/elements/Pagination/Separator/index.js +22 -0
  105. package/dist/elements/Pagination/index.js +126 -0
  106. package/dist/elements/Pagination/types.js +6 -0
  107. package/dist/elements/PerPage/index.d.ts.map +1 -1
  108. package/dist/elements/PerPage/index.js +115 -0
  109. package/dist/elements/Pill/index.js +93 -0
  110. package/dist/elements/Pill/types.js +6 -0
  111. package/dist/elements/Popup/PopupButtonList/index.d.ts +2 -2
  112. package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  113. package/dist/elements/Popup/PopupButtonList/index.js +118 -0
  114. package/dist/elements/Popup/PopupTrigger/index.js +51 -0
  115. package/dist/elements/Popup/PopupTrigger/types.js +6 -0
  116. package/dist/elements/Popup/index.js +193 -0
  117. package/dist/elements/Popup/types.js +6 -0
  118. package/dist/elements/PreviewButton/index.js +129 -0
  119. package/dist/elements/PreviewSizes/index.js +163 -0
  120. package/dist/elements/Publish/index.js +153 -0
  121. package/dist/elements/PublishMany/index.js +169 -0
  122. package/dist/elements/PublishMany/types.js +6 -0
  123. package/dist/elements/ReactSelect/ClearIndicator/index.js +31 -0
  124. package/dist/elements/ReactSelect/Control/index.js +49 -0
  125. package/dist/elements/ReactSelect/MultiValue/index.js +55 -0
  126. package/dist/elements/ReactSelect/MultiValueLabel/index.js +34 -0
  127. package/dist/elements/ReactSelect/MultiValueRemove/index.js +48 -0
  128. package/dist/elements/ReactSelect/SingleValue/index.js +30 -0
  129. package/dist/elements/ReactSelect/ValueContainer/index.js +29 -0
  130. package/dist/elements/ReactSelect/index.js +177 -0
  131. package/dist/elements/ReactSelect/types.js +6 -0
  132. package/dist/elements/RenderCustomComponent/index.js +28 -0
  133. package/dist/elements/RenderCustomComponent/types.js +6 -0
  134. package/dist/elements/RenderTitle/index.js +42 -0
  135. package/dist/elements/RenderTitle/types.js +6 -0
  136. package/dist/elements/Save/index.js +103 -0
  137. package/dist/elements/SaveDraft/index.js +147 -0
  138. package/dist/elements/SearchFilter/index.d.ts.map +1 -1
  139. package/dist/elements/SearchFilter/index.js +139 -0
  140. package/dist/elements/SearchFilter/types.js +6 -0
  141. package/dist/elements/SelectAll/index.js +35 -0
  142. package/dist/elements/SelectRow/index.js +31 -0
  143. package/dist/elements/ShimmerEffect/index.js +96 -0
  144. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  145. package/dist/elements/SortColumn/index.js +139 -0
  146. package/dist/elements/SortColumn/types.js +6 -0
  147. package/dist/elements/SortComplex/index.d.ts.map +1 -1
  148. package/dist/elements/SortComplex/index.js +157 -0
  149. package/dist/elements/SortComplex/types.js +6 -0
  150. package/dist/elements/Status/index.js +202 -0
  151. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  152. package/dist/elements/StayLoggedIn/index.js +57 -0
  153. package/dist/elements/StayLoggedIn/types.js +6 -0
  154. package/dist/elements/StepNav/SetStepNav.js +25 -0
  155. package/dist/elements/StepNav/index.d.ts.map +1 -1
  156. package/dist/elements/StepNav/index.js +127 -0
  157. package/dist/elements/StepNav/types.js +6 -0
  158. package/dist/elements/Table/TableCellProvider/index.js +47 -0
  159. package/dist/elements/Table/index.js +63 -0
  160. package/dist/elements/Table/types.js +6 -0
  161. package/dist/elements/TableColumns/buildColumns.js +77 -0
  162. package/dist/elements/TableColumns/columnReducer.js +47 -0
  163. package/dist/elements/TableColumns/index.js +199 -0
  164. package/dist/elements/Thumbnail/index.js +89 -0
  165. package/dist/elements/Thumbnail/types.js +6 -0
  166. package/dist/elements/ThumbnailCard/index.js +54 -0
  167. package/dist/elements/ThumbnailCard/types.js +6 -0
  168. package/dist/elements/Tooltip/index.js +114 -0
  169. package/dist/elements/Tooltip/types.js +6 -0
  170. package/dist/elements/Translation/index.js +81 -0
  171. package/dist/elements/UnpublishMany/index.js +169 -0
  172. package/dist/elements/UnpublishMany/types.js +6 -0
  173. package/dist/elements/Upload/index.js +250 -0
  174. package/dist/elements/Upload/types.js +6 -0
  175. package/dist/elements/ViewDescription/index.js +38 -0
  176. package/dist/elements/ViewDescription/types.js +21 -0
  177. package/dist/elements/WhereBuilder/Condition/Date/index.js +32 -0
  178. package/dist/elements/WhereBuilder/Condition/Date/types.js +6 -0
  179. package/dist/elements/WhereBuilder/Condition/Number/index.js +33 -0
  180. package/dist/elements/WhereBuilder/Condition/Number/types.js +6 -0
  181. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +337 -0
  182. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +98 -0
  183. package/dist/elements/WhereBuilder/Condition/Relationship/types.js +6 -0
  184. package/dist/elements/WhereBuilder/Condition/Select/index.js +96 -0
  185. package/dist/elements/WhereBuilder/Condition/Select/types.js +6 -0
  186. package/dist/elements/WhereBuilder/Condition/Text/index.js +33 -0
  187. package/dist/elements/WhereBuilder/Condition/Text/types.js +6 -0
  188. package/dist/elements/WhereBuilder/Condition/index.js +203 -0
  189. package/dist/elements/WhereBuilder/Condition/types.js +6 -0
  190. package/dist/elements/WhereBuilder/field-types.js +185 -0
  191. package/dist/elements/WhereBuilder/index.js +235 -0
  192. package/dist/elements/WhereBuilder/reducer.js +88 -0
  193. package/dist/elements/WhereBuilder/transformWhereQuery.js +57 -0
  194. package/dist/elements/WhereBuilder/types.js +6 -0
  195. package/dist/elements/WhereBuilder/validateWhereQuery.js +46 -0
  196. package/dist/exports/assets.js +27 -0
  197. package/dist/exports/elements.js +226 -0
  198. package/dist/exports/forms.js +158 -0
  199. package/dist/exports/graphics.js +27 -0
  200. package/dist/exports/hooks.js +55 -0
  201. package/dist/exports/icons.js +82 -0
  202. package/dist/exports/index.js +28 -0
  203. package/dist/exports/providers.js +116 -0
  204. package/dist/exports/templates.js +22 -0
  205. package/dist/exports/types.js +6 -0
  206. package/dist/exports/utilities.js +62 -0
  207. package/dist/forms/Error/index.js +43 -0
  208. package/dist/forms/FieldDescription/index.js +38 -0
  209. package/dist/forms/FieldDescription/types.js +6 -0
  210. package/dist/forms/FieldPathProvider/index.js +44 -0
  211. package/dist/forms/FieldPathProvider/types.js +6 -0
  212. package/dist/forms/Form/buildFieldSchemaMap.js +54 -0
  213. package/dist/forms/Form/buildInitialState.js +26 -0
  214. package/dist/forms/Form/context.js +84 -0
  215. package/dist/forms/Form/createNestedFieldPath.js +25 -0
  216. package/dist/forms/Form/errorMessages.js +15 -0
  217. package/dist/forms/Form/fieldReducer.js +286 -0
  218. package/dist/forms/Form/getDataByPath.js +29 -0
  219. package/dist/forms/Form/getSiblingData.js +50 -0
  220. package/dist/forms/Form/index.js +565 -0
  221. package/dist/forms/Form/initContextState.js +45 -0
  222. package/dist/forms/Form/mergeServerFormState.js +45 -0
  223. package/dist/forms/Form/reduceFieldsToValues.js +34 -0
  224. package/dist/forms/Form/rows.js +53 -0
  225. package/dist/forms/Form/types.js +6 -0
  226. package/dist/forms/Label/index.js +36 -0
  227. package/dist/forms/NullifyField/index.js +103 -0
  228. package/dist/forms/RenderFields/RenderField.js +30 -0
  229. package/dist/forms/RenderFields/index.js +66 -0
  230. package/dist/forms/RenderFields/types.js +6 -0
  231. package/dist/forms/RowLabel/index.js +50 -0
  232. package/dist/forms/RowLabel/types.js +21 -0
  233. package/dist/forms/Submit/index.js +75 -0
  234. package/dist/forms/WatchChildErrors/buildPathSegments.js +37 -0
  235. package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js +35 -0
  236. package/dist/forms/WatchChildErrors/getNestedFieldState.js +28 -0
  237. package/dist/forms/WatchChildErrors/index.js +41 -0
  238. package/dist/forms/fields/Array/ArrayRow.js +87 -0
  239. package/dist/forms/fields/Array/index.js +305 -0
  240. package/dist/forms/fields/Array/types.js +6 -0
  241. package/dist/forms/fields/Blocks/BlockRow.js +101 -0
  242. package/dist/forms/fields/Blocks/BlocksDrawer/BlockSearch/index.js +37 -0
  243. package/dist/forms/fields/Blocks/BlocksDrawer/index.js +134 -0
  244. package/dist/forms/fields/Blocks/BlocksDrawer/types.js +6 -0
  245. package/dist/forms/fields/Blocks/RowActions.js +52 -0
  246. package/dist/forms/fields/Blocks/SectionTitle/index.js +54 -0
  247. package/dist/forms/fields/Blocks/SectionTitle/types.js +6 -0
  248. package/dist/forms/fields/Blocks/index.js +317 -0
  249. package/dist/forms/fields/Blocks/types.js +6 -0
  250. package/dist/forms/fields/Checkbox/Input.js +56 -0
  251. package/dist/forms/fields/Checkbox/index.js +134 -0
  252. package/dist/forms/fields/Checkbox/types.js +6 -0
  253. package/dist/forms/fields/Code/index.js +115 -0
  254. package/dist/forms/fields/Code/types.js +6 -0
  255. package/dist/forms/fields/Collapsible/index.js +169 -0
  256. package/dist/forms/fields/Collapsible/types.js +6 -0
  257. package/dist/forms/fields/ConfirmPassword/index.js +112 -0
  258. package/dist/forms/fields/ConfirmPassword/types.js +6 -0
  259. package/dist/forms/fields/DateTime/index.js +115 -0
  260. package/dist/forms/fields/DateTime/types.js +6 -0
  261. package/dist/forms/fields/Email/index.js +121 -0
  262. package/dist/forms/fields/Email/types.js +6 -0
  263. package/dist/forms/fields/Group/index.js +127 -0
  264. package/dist/forms/fields/Group/provider.js +74 -0
  265. package/dist/forms/fields/Group/types.js +6 -0
  266. package/dist/forms/fields/HiddenInput/index.js +88 -0
  267. package/dist/forms/fields/HiddenInput/types.js +6 -0
  268. package/dist/forms/fields/JSON/index.js +137 -0
  269. package/dist/forms/fields/JSON/types.js +6 -0
  270. package/dist/forms/fields/Number/index.js +212 -0
  271. package/dist/forms/fields/Number/types.js +6 -0
  272. package/dist/forms/fields/Password/index.js +116 -0
  273. package/dist/forms/fields/Password/types.js +6 -0
  274. package/dist/forms/fields/Point/index.js +147 -0
  275. package/dist/forms/fields/Point/types.js +6 -0
  276. package/dist/forms/fields/RadioGroup/Radio/index.js +45 -0
  277. package/dist/forms/fields/RadioGroup/index.js +147 -0
  278. package/dist/forms/fields/RadioGroup/types.js +6 -0
  279. package/dist/forms/fields/Relationship/AddNew/index.js +216 -0
  280. package/dist/forms/fields/Relationship/AddNew/types.js +6 -0
  281. package/dist/forms/fields/Relationship/AddNew/useRelatedCollections.js +27 -0
  282. package/dist/forms/fields/Relationship/createRelationMap.js +59 -0
  283. package/dist/forms/fields/Relationship/findOptionsByValue.js +45 -0
  284. package/dist/forms/fields/Relationship/index.js +509 -0
  285. package/dist/forms/fields/Relationship/optionsReducer.js +126 -0
  286. package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.js +109 -0
  287. package/dist/forms/fields/Relationship/select-components/SingleValue/index.js +108 -0
  288. package/dist/forms/fields/Relationship/types.js +6 -0
  289. package/dist/forms/fields/RichText/index.js +16 -0
  290. package/dist/forms/fields/RichText/types.js +6 -0
  291. package/dist/forms/fields/Row/index.js +42 -0
  292. package/dist/forms/fields/Row/provider.js +74 -0
  293. package/dist/forms/fields/Row/types.js +6 -0
  294. package/dist/forms/fields/Select/index.js +183 -0
  295. package/dist/forms/fields/Select/types.js +6 -0
  296. package/dist/forms/fields/Tabs/Tab/index.js +85 -0
  297. package/dist/forms/fields/Tabs/index.js +167 -0
  298. package/dist/forms/fields/Tabs/provider.js +74 -0
  299. package/dist/forms/fields/Tabs/types.js +6 -0
  300. package/dist/forms/fields/Text/index.js +194 -0
  301. package/dist/forms/fields/Text/types.js +6 -0
  302. package/dist/forms/fields/Textarea/index.js +133 -0
  303. package/dist/forms/fields/Textarea/types.js +6 -0
  304. package/dist/forms/fields/UI/index.js +16 -0
  305. package/dist/forms/fields/Upload/Input.js +3 -0
  306. package/dist/forms/fields/Upload/index.js +210 -0
  307. package/dist/forms/fields/Upload/types.js +6 -0
  308. package/dist/forms/fields/getFilterOptionsQuery.js +39 -0
  309. package/dist/forms/fields/index.js +67 -0
  310. package/dist/forms/fields/shared.js +29 -0
  311. package/dist/forms/useField/index.js +169 -0
  312. package/dist/forms/useField/types.js +6 -0
  313. package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +335 -0
  314. package/dist/forms/utilities/buildStateFromSchema/buildStateFromSchema.spec.js +76 -0
  315. package/dist/forms/utilities/buildStateFromSchema/index.js +35 -0
  316. package/dist/forms/utilities/buildStateFromSchema/iterateFields.js +48 -0
  317. package/dist/forms/withCondition/WatchCondition.js +66 -0
  318. package/dist/forms/withCondition/index.js +33 -0
  319. package/dist/graphics/Account/Default/index.js +43 -0
  320. package/dist/graphics/Account/Gravatar/index.js +42 -0
  321. package/dist/graphics/Account/index.js +50 -0
  322. package/dist/graphics/DefaultBlockImage/index.js +84 -0
  323. package/dist/graphics/ExternalLink/index.js +34 -0
  324. package/dist/graphics/File/index.js +36 -0
  325. package/dist/graphics/Icon/index.js +64 -0
  326. package/dist/graphics/Logo/index.js +60 -0
  327. package/dist/graphics/Search/index.js +42 -0
  328. package/dist/hooks/useAdminThumbnail.js +17 -0
  329. package/dist/hooks/useDebounce.js +31 -0
  330. package/dist/hooks/useDebouncedCallback.js +29 -0
  331. package/dist/hooks/useDebouncedEffect.js +32 -0
  332. package/dist/hooks/useDelay.js +82 -0
  333. package/dist/hooks/useDelayedRender.js +97 -0
  334. package/dist/hooks/useHotkey.js +129 -0
  335. package/dist/hooks/useIntersect.js +39 -0
  336. package/dist/hooks/usePayloadAPI.js +94 -0
  337. package/dist/hooks/useResize.js +59 -0
  338. package/dist/hooks/useThrottledEffect.js +31 -0
  339. package/dist/hooks/useThumbnail.js +57 -0
  340. package/dist/hooks/useUseAsTitle.js +19 -0
  341. package/dist/icons/Calendar/index.js +48 -0
  342. package/dist/icons/Check/index.js +34 -0
  343. package/dist/icons/Chevron/index.js +36 -0
  344. package/dist/icons/CloseMenu/index.js +39 -0
  345. package/dist/icons/CodeBlock/index.js +32 -0
  346. package/dist/icons/Copy/index.js +33 -0
  347. package/dist/icons/DragHandle/index.js +57 -0
  348. package/dist/icons/Edit/index.js +37 -0
  349. package/dist/icons/Line/index.js +30 -0
  350. package/dist/icons/Link/index.js +33 -0
  351. package/dist/icons/LogOut/index.js +37 -0
  352. package/dist/icons/Menu/index.js +45 -0
  353. package/dist/icons/MinimizeMaximize/index.js +87 -0
  354. package/dist/icons/More/index.js +42 -0
  355. package/dist/icons/Plus/index.js +36 -0
  356. package/dist/icons/Search/index.js +36 -0
  357. package/dist/icons/Swap/index.js +43 -0
  358. package/dist/icons/X/index.js +41 -0
  359. package/dist/index.js +20 -0
  360. package/dist/providers/ActionsProvider/index.js +89 -0
  361. package/dist/providers/Auth/HydrateClientUser/index.js +28 -0
  362. package/dist/providers/Auth/index.js +373 -0
  363. package/dist/providers/Auth/types.js +6 -0
  364. package/dist/providers/ClientFunction/index.js +65 -0
  365. package/dist/providers/ComponentMapProvider/index.js +98 -0
  366. package/dist/providers/Config/index.js +70 -0
  367. package/dist/providers/CustomProvider/index.js +38 -0
  368. package/dist/providers/DocumentEvents/index.js +77 -0
  369. package/dist/providers/DocumentEvents/types.js +6 -0
  370. package/dist/providers/DocumentInfo/SetDocumentInfo/index.js +34 -0
  371. package/dist/providers/DocumentInfo/index.js +353 -0
  372. package/dist/providers/DocumentInfo/types.js +6 -0
  373. package/dist/providers/EditDepth/index.js +71 -0
  374. package/dist/providers/FormQueryParams/index.js +77 -0
  375. package/dist/providers/ListInfo/index.js +78 -0
  376. package/dist/providers/ListInfo/types.js +6 -0
  377. package/dist/providers/Locale/index.js +122 -0
  378. package/dist/providers/OperationProvider/index.js +71 -0
  379. package/dist/providers/Params/index.js +72 -0
  380. package/dist/providers/Portal/index.js +20 -0
  381. package/dist/providers/Preferences/index.js +184 -0
  382. package/dist/providers/Root/index.js +103 -0
  383. package/dist/providers/SearchParams/index.js +119 -0
  384. package/dist/providers/SearchParams/types.js +6 -0
  385. package/dist/providers/SelectionProvider/index.js +218 -0
  386. package/dist/providers/Theme/index.js +123 -0
  387. package/dist/providers/Theme/types.js +6 -0
  388. package/dist/providers/Theme/utilities.js +35 -0
  389. package/dist/providers/Translation/index.js +92 -0
  390. package/dist/templates/Default/NavHamburger/index.js +28 -0
  391. package/dist/templates/Default/Wrapper/index.js +32 -0
  392. package/dist/templates/Default/index.js +88 -0
  393. package/dist/templates/Default/types.js +6 -0
  394. package/dist/templates/Minimal/index.js +34 -0
  395. package/dist/templates/Minimal/types.js +6 -0
  396. package/dist/utilities/api.js +98 -0
  397. package/dist/utilities/arraysHaveSameStrings.js +28 -0
  398. package/dist/utilities/buildComponentMap/index.js +101 -0
  399. package/dist/utilities/buildComponentMap/mapFields.js +318 -0
  400. package/dist/utilities/buildComponentMap/types.js +6 -0
  401. package/dist/utilities/buildFieldSchemaMap/index.js +36 -0
  402. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +94 -0
  403. package/dist/utilities/buildFieldSchemaMap/types.js +6 -0
  404. package/dist/utilities/canUseDOM.js +13 -0
  405. package/dist/utilities/findLocaleFromCode.js +18 -0
  406. package/dist/utilities/formatDate/getSupportedDateLocale.js +21 -0
  407. package/dist/utilities/formatDate/index.js +78 -0
  408. package/dist/utilities/formatDocTitle.js +33 -0
  409. package/dist/utilities/formatFields.js +14 -0
  410. package/dist/utilities/getFormState.js +28 -0
  411. package/dist/utilities/getOffsetTop.js +26 -0
  412. package/dist/utilities/getRequestLanguage.js +17 -0
  413. package/dist/utilities/getSupportedMonacoLocale.js +26 -0
  414. package/dist/utilities/groupNavItems.js +61 -0
  415. package/dist/utilities/scrollToID.js +22 -0
  416. package/dist/utilities/setsAreEqual.js +17 -0
  417. package/dist/utilities/withMergedProps/index.js +27 -0
  418. package/dist/views/Global/RenderCustomView.js +3 -0
  419. package/package.json +5 -5
@@ -0,0 +1,390 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "EditUpload", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return EditUpload;
10
+ }
11
+ });
12
+ const _modal = require("@faceless-ui/modal");
13
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
14
+ const _reactimagecrop = /*#__PURE__*/ _interop_require_default(require("react-image-crop"));
15
+ require("react-image-crop/dist/ReactCrop.css");
16
+ const _Upload = require("../../elements/Upload");
17
+ const _Plus = require("../../icons/Plus");
18
+ const _FormQueryParams = require("../../providers/FormQueryParams");
19
+ const _Translation = require("../../providers/Translation");
20
+ const _Button = require("../Button");
21
+ require("./index.scss");
22
+ function _interop_require_default(obj) {
23
+ return obj && obj.__esModule ? obj : {
24
+ default: obj
25
+ };
26
+ }
27
+ function _getRequireWildcardCache(nodeInterop) {
28
+ if (typeof WeakMap !== "function") return null;
29
+ var cacheBabelInterop = new WeakMap();
30
+ var cacheNodeInterop = new WeakMap();
31
+ return (_getRequireWildcardCache = function(nodeInterop) {
32
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
33
+ })(nodeInterop);
34
+ }
35
+ function _interop_require_wildcard(obj, nodeInterop) {
36
+ if (!nodeInterop && obj && obj.__esModule) {
37
+ return obj;
38
+ }
39
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
40
+ return {
41
+ default: obj
42
+ };
43
+ }
44
+ var cache = _getRequireWildcardCache(nodeInterop);
45
+ if (cache && cache.has(obj)) {
46
+ return cache.get(obj);
47
+ }
48
+ var newObj = {
49
+ __proto__: null
50
+ };
51
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
52
+ for(var key in obj){
53
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
54
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
55
+ if (desc && (desc.get || desc.set)) {
56
+ Object.defineProperty(newObj, key, desc);
57
+ } else {
58
+ newObj[key] = obj[key];
59
+ }
60
+ }
61
+ }
62
+ newObj.default = obj;
63
+ if (cache) {
64
+ cache.set(obj, newObj);
65
+ }
66
+ return newObj;
67
+ }
68
+ const baseClass = 'edit-upload';
69
+ const Input = ({ name, onChange, value })=>/*#__PURE__*/ _react.default.createElement("div", {
70
+ className: `${baseClass}__input`
71
+ }, name, /*#__PURE__*/ _react.default.createElement("input", {
72
+ name: name,
73
+ onChange: (e)=>onChange(e.target.value),
74
+ type: "number",
75
+ value: value
76
+ }));
77
+ const EditUpload = ({ fileName, fileSrc, imageCacheTag, showCrop, showFocalPoint })=>{
78
+ const { closeModal } = (0, _modal.useModal)();
79
+ const { t } = (0, _Translation.useTranslation)();
80
+ const { formQueryParams, setFormQueryParams } = (0, _FormQueryParams.useFormQueryParams)();
81
+ const { uploadEdits } = formQueryParams || {};
82
+ const [crop, setCrop] = (0, _react.useState)({
83
+ height: uploadEdits?.crop?.height || 100,
84
+ unit: '%',
85
+ width: uploadEdits?.crop?.width || 100,
86
+ x: uploadEdits?.crop?.x || 0,
87
+ y: uploadEdits?.crop?.y || 0
88
+ });
89
+ const [pointPosition, setPointPosition] = (0, _react.useState)({
90
+ x: uploadEdits?.focalPoint?.x || 50,
91
+ y: uploadEdits?.focalPoint?.y || 50
92
+ });
93
+ const [checkBounds, setCheckBounds] = (0, _react.useState)(false);
94
+ const [originalHeight, setOriginalHeight] = (0, _react.useState)(0);
95
+ const [originalWidth, setOriginalWidth] = (0, _react.useState)(0);
96
+ const focalWrapRef = (0, _react.useRef)();
97
+ const imageRef = (0, _react.useRef)();
98
+ const cropRef = (0, _react.useRef)();
99
+ const fineTuneCrop = ({ dimension, value })=>{
100
+ const intValue = parseInt(value);
101
+ if (dimension === 'width' && intValue >= originalWidth) return null;
102
+ if (dimension === 'height' && intValue >= originalHeight) return null;
103
+ const percentage = 100 * (intValue / (dimension === 'width' ? originalWidth : originalHeight));
104
+ if (percentage === 100 || percentage === 0) return null;
105
+ setCrop({
106
+ ...crop,
107
+ [dimension]: percentage
108
+ });
109
+ };
110
+ const fineTuneFocalPoint = ({ coordinate, value })=>{
111
+ const intValue = parseInt(value);
112
+ if (intValue >= 0 && intValue <= 100) {
113
+ setPointPosition((prevPosition)=>({
114
+ ...prevPosition,
115
+ [coordinate]: intValue
116
+ }));
117
+ }
118
+ };
119
+ const saveEdits = ()=>{
120
+ setFormQueryParams({
121
+ ...formQueryParams,
122
+ uploadEdits: {
123
+ crop: crop || undefined,
124
+ focalPoint: pointPosition ? pointPosition : undefined
125
+ }
126
+ });
127
+ closeModal(_Upload.editDrawerSlug);
128
+ };
129
+ const onDragEnd = _react.default.useCallback(({ x, y })=>{
130
+ setPointPosition({
131
+ x,
132
+ y
133
+ });
134
+ setCheckBounds(false);
135
+ }, []);
136
+ const centerFocalPoint = ()=>{
137
+ const containerRect = focalWrapRef.current.getBoundingClientRect();
138
+ const boundsRect = showCrop ? cropRef.current.getBoundingClientRect() : imageRef.current.getBoundingClientRect();
139
+ const xCenter = (boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width * 100;
140
+ const yCenter = (boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height * 100;
141
+ setPointPosition({
142
+ x: xCenter,
143
+ y: yCenter
144
+ });
145
+ };
146
+ const fileSrcToUse = imageCacheTag ? `${fileSrc}?${imageCacheTag}` : fileSrc;
147
+ return /*#__PURE__*/ _react.default.createElement("div", {
148
+ className: baseClass
149
+ }, /*#__PURE__*/ _react.default.createElement("div", {
150
+ className: `${baseClass}__header`
151
+ }, /*#__PURE__*/ _react.default.createElement("h2", {
152
+ title: `${t('general:editing')} ${fileName}`
153
+ }, t('general:editing'), " ", fileName), /*#__PURE__*/ _react.default.createElement("div", {
154
+ className: `${baseClass}__actions`
155
+ }, /*#__PURE__*/ _react.default.createElement(_Button.Button, {
156
+ "aria-label": t('general:cancel'),
157
+ buttonStyle: "secondary",
158
+ className: `${baseClass}__cancel`,
159
+ onClick: ()=>closeModal(_Upload.editDrawerSlug)
160
+ }, t('general:cancel')), /*#__PURE__*/ _react.default.createElement(_Button.Button, {
161
+ "aria-label": t('general:applyChanges'),
162
+ buttonStyle: "primary",
163
+ className: `${baseClass}__save`,
164
+ onClick: ()=>saveEdits()
165
+ }, t('general:applyChanges')))), /*#__PURE__*/ _react.default.createElement("div", {
166
+ className: `${baseClass}__toolWrap`
167
+ }, /*#__PURE__*/ _react.default.createElement("div", {
168
+ className: `${baseClass}__crop`
169
+ }, /*#__PURE__*/ _react.default.createElement("div", {
170
+ className: `${baseClass}__focal-wrapper`,
171
+ ref: focalWrapRef,
172
+ style: {
173
+ aspectRatio: `${originalWidth / originalHeight}`
174
+ }
175
+ }, showCrop ? /*#__PURE__*/ _react.default.createElement(_reactimagecrop.default, {
176
+ className: `${baseClass}__reactCrop`,
177
+ crop: crop,
178
+ onChange: (_, c)=>setCrop(c),
179
+ onComplete: ()=>setCheckBounds(true),
180
+ renderSelectionAddon: ()=>{
181
+ return /*#__PURE__*/ _react.default.createElement("div", {
182
+ className: `${baseClass}__crop-window`,
183
+ ref: cropRef
184
+ });
185
+ }
186
+ }, /*#__PURE__*/ _react.default.createElement("img", {
187
+ alt: t('upload:setCropArea'),
188
+ onLoad: (e)=>{
189
+ setOriginalHeight(e.currentTarget.naturalHeight);
190
+ setOriginalWidth(e.currentTarget.naturalWidth);
191
+ },
192
+ ref: imageRef,
193
+ src: fileSrcToUse
194
+ })) : /*#__PURE__*/ _react.default.createElement("img", {
195
+ alt: t('upload:setFocalPoint'),
196
+ onLoad: (e)=>{
197
+ setOriginalHeight(e.currentTarget.naturalHeight);
198
+ setOriginalWidth(e.currentTarget.naturalWidth);
199
+ },
200
+ ref: imageRef,
201
+ src: fileSrcToUse
202
+ }), showFocalPoint && /*#__PURE__*/ _react.default.createElement(DraggableElement, {
203
+ boundsRef: showCrop ? cropRef : imageRef,
204
+ checkBounds: showCrop ? checkBounds : false,
205
+ className: `${baseClass}__focalPoint`,
206
+ containerRef: focalWrapRef,
207
+ initialPosition: pointPosition,
208
+ onDragEnd: onDragEnd,
209
+ setCheckBounds: showCrop ? setCheckBounds : false
210
+ }, /*#__PURE__*/ _react.default.createElement(_Plus.Plus, null)))), (showCrop || showFocalPoint) && /*#__PURE__*/ _react.default.createElement("div", {
211
+ className: `${baseClass}__sidebar`
212
+ }, showCrop && /*#__PURE__*/ _react.default.createElement("div", {
213
+ className: `${baseClass}__groupWrap`
214
+ }, /*#__PURE__*/ _react.default.createElement("div", null, /*#__PURE__*/ _react.default.createElement("div", {
215
+ className: `${baseClass}__titleWrap`
216
+ }, /*#__PURE__*/ _react.default.createElement("h3", null, t('upload:crop')), /*#__PURE__*/ _react.default.createElement(_Button.Button, {
217
+ buttonStyle: "none",
218
+ className: `${baseClass}__reset`,
219
+ onClick: ()=>setCrop({
220
+ height: 100,
221
+ unit: '%',
222
+ width: 100,
223
+ x: 0,
224
+ y: 0
225
+ })
226
+ }, t('general:reset')))), /*#__PURE__*/ _react.default.createElement("span", {
227
+ className: `${baseClass}__description`
228
+ }, t('upload:cropToolDescription')), /*#__PURE__*/ _react.default.createElement("div", {
229
+ className: `${baseClass}__inputsWrap`
230
+ }, /*#__PURE__*/ _react.default.createElement(Input, {
231
+ name: `${t('upload:width')} (px)`,
232
+ onChange: (value)=>fineTuneCrop({
233
+ dimension: 'width',
234
+ value
235
+ }),
236
+ value: (crop.width / 100 * originalWidth).toFixed(0)
237
+ }), /*#__PURE__*/ _react.default.createElement(Input, {
238
+ name: `${t('upload:height')} (px)`,
239
+ onChange: (value)=>fineTuneCrop({
240
+ dimension: 'height',
241
+ value
242
+ }),
243
+ value: (crop.height / 100 * originalHeight).toFixed(0)
244
+ }))), showFocalPoint && /*#__PURE__*/ _react.default.createElement("div", {
245
+ className: `${baseClass}__groupWrap`
246
+ }, /*#__PURE__*/ _react.default.createElement("div", null, /*#__PURE__*/ _react.default.createElement("div", {
247
+ className: `${baseClass}__titleWrap`
248
+ }, /*#__PURE__*/ _react.default.createElement("h3", null, t('upload:focalPoint')), /*#__PURE__*/ _react.default.createElement(_Button.Button, {
249
+ buttonStyle: "none",
250
+ className: `${baseClass}__reset`,
251
+ onClick: centerFocalPoint
252
+ }, t('general:reset')))), /*#__PURE__*/ _react.default.createElement("span", {
253
+ className: `${baseClass}__description`
254
+ }, t('upload:focalPointDescription')), /*#__PURE__*/ _react.default.createElement("div", {
255
+ className: `${baseClass}__inputsWrap`
256
+ }, /*#__PURE__*/ _react.default.createElement(Input, {
257
+ name: "X %",
258
+ onChange: (value)=>fineTuneFocalPoint({
259
+ coordinate: 'x',
260
+ value
261
+ }),
262
+ value: pointPosition.x.toFixed(0)
263
+ }), /*#__PURE__*/ _react.default.createElement(Input, {
264
+ name: "Y %",
265
+ onChange: (value)=>fineTuneFocalPoint({
266
+ coordinate: 'y',
267
+ value
268
+ }),
269
+ value: pointPosition.y.toFixed(0)
270
+ }))))));
271
+ };
272
+ const DraggableElement = ({ boundsRef, checkBounds, children, className, containerRef, initialPosition = {
273
+ x: 50,
274
+ y: 50
275
+ }, onDragEnd, setCheckBounds })=>{
276
+ const [position, setPosition] = (0, _react.useState)({
277
+ x: initialPosition.x,
278
+ y: initialPosition.y
279
+ });
280
+ const [isDragging, setIsDragging] = (0, _react.useState)(false);
281
+ const dragRef = (0, _react.useRef)();
282
+ const getCoordinates = _react.default.useCallback((mouseXArg, mouseYArg, recenter)=>{
283
+ const containerRect = containerRef.current.getBoundingClientRect();
284
+ const boundsRect = boundsRef.current.getBoundingClientRect();
285
+ const mouseX = mouseXArg ?? boundsRect.left;
286
+ const mouseY = mouseYArg ?? boundsRect.top;
287
+ const xOutOfBounds = mouseX < boundsRect.left || mouseX > boundsRect.right;
288
+ const yOutOfBounds = mouseY < boundsRect.top || mouseY > boundsRect.bottom;
289
+ let x = (mouseX - containerRect.left) / containerRect.width * 100;
290
+ let y = (mouseY - containerRect.top) / containerRect.height * 100;
291
+ const xCenter = (boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width * 100;
292
+ const yCenter = (boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height * 100;
293
+ if (xOutOfBounds || yOutOfBounds) {
294
+ setIsDragging(false);
295
+ if (mouseX < boundsRect.left) {
296
+ x = (boundsRect.left - containerRect.left) / containerRect.width * 100;
297
+ } else if (mouseX > boundsRect.right) {
298
+ x = (containerRect.width - (containerRect.right - boundsRect.right)) / containerRect.width * 100;
299
+ }
300
+ if (mouseY < boundsRect.top) {
301
+ y = (boundsRect.top - containerRect.top) / containerRect.height * 100;
302
+ } else if (mouseY > boundsRect.bottom) {
303
+ y = (containerRect.height - (containerRect.bottom - boundsRect.bottom)) / containerRect.height * 100;
304
+ }
305
+ if (recenter) {
306
+ x = xOutOfBounds ? xCenter : x;
307
+ y = yOutOfBounds ? yCenter : y;
308
+ }
309
+ }
310
+ return {
311
+ x,
312
+ y
313
+ };
314
+ }, [
315
+ boundsRef,
316
+ containerRef
317
+ ]);
318
+ const handleMouseDown = (event)=>{
319
+ event.preventDefault();
320
+ setIsDragging(true);
321
+ };
322
+ const handleMouseMove = (event)=>{
323
+ if (!isDragging) return null;
324
+ const { x, y } = getCoordinates(event.clientX, event.clientY);
325
+ setPosition({
326
+ x,
327
+ y
328
+ });
329
+ };
330
+ const onDrop = ()=>{
331
+ setIsDragging(false);
332
+ onDragEnd(position);
333
+ };
334
+ _react.default.useEffect(()=>{
335
+ if (isDragging || !dragRef.current) return;
336
+ if (checkBounds) {
337
+ const { height, left, top, width } = dragRef.current.getBoundingClientRect();
338
+ const { x, y } = getCoordinates(left + width / 2, top + height / 2, true);
339
+ onDragEnd({
340
+ x,
341
+ y
342
+ });
343
+ setPosition({
344
+ x,
345
+ y
346
+ });
347
+ setCheckBounds(false);
348
+ return;
349
+ }
350
+ }, [
351
+ getCoordinates,
352
+ isDragging,
353
+ checkBounds,
354
+ setCheckBounds,
355
+ position.x,
356
+ position.y,
357
+ onDragEnd
358
+ ]);
359
+ _react.default.useEffect(()=>{
360
+ setPosition({
361
+ x: initialPosition.x,
362
+ y: initialPosition.y
363
+ });
364
+ }, [
365
+ initialPosition.x,
366
+ initialPosition.y
367
+ ]);
368
+ return /*#__PURE__*/ _react.default.createElement("div", {
369
+ className: [
370
+ `${baseClass}__draggable-container`,
371
+ isDragging && `${baseClass}__draggable-container--dragging`
372
+ ].filter(Boolean).join(' '),
373
+ onMouseMove: handleMouseMove
374
+ }, /*#__PURE__*/ _react.default.createElement("button", {
375
+ className: [
376
+ `${baseClass}__draggable`,
377
+ className
378
+ ].filter(Boolean).join(' '),
379
+ onMouseDown: handleMouseDown,
380
+ onMouseUp: onDrop,
381
+ ref: dragRef,
382
+ style: {
383
+ left: `${position.x}%`,
384
+ top: `${position.y}%`
385
+ },
386
+ type: "button"
387
+ }, children), /*#__PURE__*/ _react.default.createElement("div", null));
388
+ };
389
+
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9FZGl0VXBsb2FkL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgRGF0YSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IHVzZU1vZGFsIH0gZnJvbSAnQGZhY2VsZXNzLXVpL21vZGFsJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdENyb3AsIHsgdHlwZSBDcm9wIGFzIENyb3BUeXBlIH0gZnJvbSAncmVhY3QtaW1hZ2UtY3JvcCdcbmltcG9ydCAncmVhY3QtaW1hZ2UtY3JvcC9kaXN0L1JlYWN0Q3JvcC5jc3MnXG5cbmltcG9ydCB7IGVkaXREcmF3ZXJTbHVnIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvVXBsb2FkJ1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJy4uLy4uL2ljb25zL1BsdXMnXG5pbXBvcnQgeyB1c2VGb3JtUXVlcnlQYXJhbXMgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvRm9ybVF1ZXJ5UGFyYW1zJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvVHJhbnNsYXRpb24nXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2VkaXQtdXBsb2FkJ1xuXG5jb25zdCBJbnB1dDogUmVhY3QuRkM8eyBuYW1lOiBzdHJpbmc7IG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDsgdmFsdWU6IHN0cmluZyB9PiA9ICh7XG4gIG5hbWUsXG4gIG9uQ2hhbmdlLFxuICB2YWx1ZSxcbn0pID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2lucHV0YH0+XG4gICAge25hbWV9XG4gICAgPGlucHV0IG5hbWU9e25hbWV9IG9uQ2hhbmdlPXsoZSkgPT4gb25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfSB0eXBlPVwibnVtYmVyXCIgdmFsdWU9e3ZhbHVlfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IEVkaXRVcGxvYWQ6IFJlYWN0LkZDPHtcbiAgZG9jPzogRGF0YVxuICBmaWxlTmFtZTogc3RyaW5nXG4gIGZpbGVTcmM6IHN0cmluZ1xuICBpbWFnZUNhY2hlVGFnPzogc3RyaW5nXG4gIHNob3dDcm9wPzogYm9vbGVhblxuICBzaG93Rm9jYWxQb2ludD86IGJvb2xlYW5cbn0+ID0gKHsgZmlsZU5hbWUsIGZpbGVTcmMsIGltYWdlQ2FjaGVUYWcsIHNob3dDcm9wLCBzaG93Rm9jYWxQb2ludCB9KSA9PiB7XG4gIGNvbnN0IHsgY2xvc2VNb2RhbCB9ID0gdXNlTW9kYWwoKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBmb3JtUXVlcnlQYXJhbXMsIHNldEZvcm1RdWVyeVBhcmFtcyB9ID0gdXNlRm9ybVF1ZXJ5UGFyYW1zKClcbiAgY29uc3QgeyB1cGxvYWRFZGl0cyB9ID0gZm9ybVF1ZXJ5UGFyYW1zIHx8IHt9XG4gIGNvbnN0IFtjcm9wLCBzZXRDcm9wXSA9IHVzZVN0YXRlPENyb3BUeXBlPih7XG4gICAgaGVpZ2h0OiB1cGxvYWRFZGl0cz8uY3JvcD8uaGVpZ2h0IHx8IDEwMCxcbiAgICB1bml0OiAnJScsXG4gICAgd2lkdGg6IHVwbG9hZEVkaXRzPy5jcm9wPy53aWR0aCB8fCAxMDAsXG4gICAgeDogdXBsb2FkRWRpdHM/LmNyb3A/LnggfHwgMCxcbiAgICB5OiB1cGxvYWRFZGl0cz8uY3JvcD8ueSB8fCAwLFxuICB9KVxuXG4gIGNvbnN0IFtwb2ludFBvc2l0aW9uLCBzZXRQb2ludFBvc2l0aW9uXSA9IHVzZVN0YXRlPHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfT4oe1xuICAgIHg6IHVwbG9hZEVkaXRzPy5mb2NhbFBvaW50Py54IHx8IDUwLFxuICAgIHk6IHVwbG9hZEVkaXRzPy5mb2NhbFBvaW50Py55IHx8IDUwLFxuICB9KVxuICBjb25zdCBbY2hlY2tCb3VuZHMsIHNldENoZWNrQm91bmRzXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbb3JpZ2luYWxIZWlnaHQsIHNldE9yaWdpbmFsSGVpZ2h0XSA9IHVzZVN0YXRlPG51bWJlcj4oMClcbiAgY29uc3QgW29yaWdpbmFsV2lkdGgsIHNldE9yaWdpbmFsV2lkdGhdID0gdXNlU3RhdGU8bnVtYmVyPigwKVxuXG4gIGNvbnN0IGZvY2FsV3JhcFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZD4oKVxuICBjb25zdCBpbWFnZVJlZiA9IHVzZVJlZjxIVE1MSW1hZ2VFbGVtZW50IHwgdW5kZWZpbmVkPigpXG4gIGNvbnN0IGNyb3BSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQ+KClcblxuICBjb25zdCBmaW5lVHVuZUNyb3AgPSAoeyBkaW1lbnNpb24sIHZhbHVlIH06IHsgZGltZW5zaW9uOiAnaGVpZ2h0JyB8ICd3aWR0aCc7IHZhbHVlOiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IGludFZhbHVlID0gcGFyc2VJbnQodmFsdWUpXG4gICAgaWYgKGRpbWVuc2lvbiA9PT0gJ3dpZHRoJyAmJiBpbnRWYWx1ZSA+PSBvcmlnaW5hbFdpZHRoKSByZXR1cm4gbnVsbFxuICAgIGlmIChkaW1lbnNpb24gPT09ICdoZWlnaHQnICYmIGludFZhbHVlID49IG9yaWdpbmFsSGVpZ2h0KSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgcGVyY2VudGFnZSA9IDEwMCAqIChpbnRWYWx1ZSAvIChkaW1lbnNpb24gPT09ICd3aWR0aCcgPyBvcmlnaW5hbFdpZHRoIDogb3JpZ2luYWxIZWlnaHQpKVxuXG4gICAgaWYgKHBlcmNlbnRhZ2UgPT09IDEwMCB8fCBwZXJjZW50YWdlID09PSAwKSByZXR1cm4gbnVsbFxuXG4gICAgc2V0Q3JvcCh7XG4gICAgICAuLi5jcm9wLFxuICAgICAgW2RpbWVuc2lvbl06IHBlcmNlbnRhZ2UsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGZpbmVUdW5lRm9jYWxQb2ludCA9ICh7IGNvb3JkaW5hdGUsIHZhbHVlIH06IHsgY29vcmRpbmF0ZTogJ3gnIHwgJ3knOyB2YWx1ZTogc3RyaW5nIH0pID0+IHtcbiAgICBjb25zdCBpbnRWYWx1ZSA9IHBhcnNlSW50KHZhbHVlKVxuICAgIGlmIChpbnRWYWx1ZSA+PSAwICYmIGludFZhbHVlIDw9IDEwMCkge1xuICAgICAgc2V0UG9pbnRQb3NpdGlvbigocHJldlBvc2l0aW9uKSA9PiAoeyAuLi5wcmV2UG9zaXRpb24sIFtjb29yZGluYXRlXTogaW50VmFsdWUgfSkpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2F2ZUVkaXRzID0gKCkgPT4ge1xuICAgIHNldEZvcm1RdWVyeVBhcmFtcyh7XG4gICAgICAuLi5mb3JtUXVlcnlQYXJhbXMsXG4gICAgICB1cGxvYWRFZGl0czoge1xuICAgICAgICBjcm9wOiBjcm9wIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZm9jYWxQb2ludDogcG9pbnRQb3NpdGlvbiA/IHBvaW50UG9zaXRpb24gOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0pXG4gICAgY2xvc2VNb2RhbChlZGl0RHJhd2VyU2x1ZylcbiAgfVxuXG4gIGNvbnN0IG9uRHJhZ0VuZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCh7IHgsIHkgfSkgPT4ge1xuICAgIHNldFBvaW50UG9zaXRpb24oeyB4LCB5IH0pXG4gICAgc2V0Q2hlY2tCb3VuZHMoZmFsc2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGNlbnRlckZvY2FsUG9pbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGZvY2FsV3JhcFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgYm91bmRzUmVjdCA9IHNob3dDcm9wXG4gICAgICA/IGNyb3BSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgOiBpbWFnZVJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgeENlbnRlciA9XG4gICAgICAoKGJvdW5kc1JlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdCArIGJvdW5kc1JlY3Qud2lkdGggLyAyKSAvIGNvbnRhaW5lclJlY3Qud2lkdGgpICogMTAwXG4gICAgY29uc3QgeUNlbnRlciA9XG4gICAgICAoKGJvdW5kc1JlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBib3VuZHNSZWN0LmhlaWdodCAvIDIpIC8gY29udGFpbmVyUmVjdC5oZWlnaHQpICogMTAwXG4gICAgc2V0UG9pbnRQb3NpdGlvbih7IHg6IHhDZW50ZXIsIHk6IHlDZW50ZXIgfSlcbiAgfVxuXG4gIGNvbnN0IGZpbGVTcmNUb1VzZSA9IGltYWdlQ2FjaGVUYWcgPyBgJHtmaWxlU3JjfT8ke2ltYWdlQ2FjaGVUYWd9YCA6IGZpbGVTcmNcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2hlYWRlcmB9PlxuICAgICAgICA8aDIgdGl0bGU9e2Ake3QoJ2dlbmVyYWw6ZWRpdGluZycpfSAke2ZpbGVOYW1lfWB9PlxuICAgICAgICAgIHt0KCdnZW5lcmFsOmVkaXRpbmcnKX0ge2ZpbGVOYW1lfVxuICAgICAgICA8L2gyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fYWN0aW9uc2B9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2dlbmVyYWw6Y2FuY2VsJyl9XG4gICAgICAgICAgICBidXR0b25TdHlsZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2NhbmNlbGB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjbG9zZU1vZGFsKGVkaXREcmF3ZXJTbHVnKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dCgnZ2VuZXJhbDpjYW5jZWwnKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdnZW5lcmFsOmFwcGx5Q2hhbmdlcycpfVxuICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fc2F2ZWB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzYXZlRWRpdHMoKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dCgnZ2VuZXJhbDphcHBseUNoYW5nZXMnKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X190b29sV3JhcGB9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fY3JvcGB9PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZm9jYWwtd3JhcHBlcmB9XG4gICAgICAgICAgICByZWY9e2ZvY2FsV3JhcFJlZn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGFzcGVjdFJhdGlvOiBgJHtvcmlnaW5hbFdpZHRoIC8gb3JpZ2luYWxIZWlnaHR9YCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDcm9wID8gKFxuICAgICAgICAgICAgICA8UmVhY3RDcm9wXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19yZWFjdENyb3BgfVxuICAgICAgICAgICAgICAgIGNyb3A9e2Nyb3B9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhfLCBjKSA9PiBzZXRDcm9wKGMpfVxuICAgICAgICAgICAgICAgIG9uQ29tcGxldGU9eygpID0+IHNldENoZWNrQm91bmRzKHRydWUpfVxuICAgICAgICAgICAgICAgIHJlbmRlclNlbGVjdGlvbkFkZG9uPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Nyb3Atd2luZG93YH0gcmVmPXtjcm9wUmVmfSAvPlxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBhbHQ9e3QoJ3VwbG9hZDpzZXRDcm9wQXJlYScpfVxuICAgICAgICAgICAgICAgICAgb25Mb2FkPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRPcmlnaW5hbEhlaWdodChlLmN1cnJlbnRUYXJnZXQubmF0dXJhbEhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgc2V0T3JpZ2luYWxXaWR0aChlLmN1cnJlbnRUYXJnZXQubmF0dXJhbFdpZHRoKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIHJlZj17aW1hZ2VSZWZ9XG4gICAgICAgICAgICAgICAgICBzcmM9e2ZpbGVTcmNUb1VzZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1JlYWN0Q3JvcD5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBhbHQ9e3QoJ3VwbG9hZDpzZXRGb2NhbFBvaW50Jyl9XG4gICAgICAgICAgICAgICAgb25Mb2FkPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgc2V0T3JpZ2luYWxIZWlnaHQoZS5jdXJyZW50VGFyZ2V0Lm5hdHVyYWxIZWlnaHQpXG4gICAgICAgICAgICAgICAgICBzZXRPcmlnaW5hbFdpZHRoKGUuY3VycmVudFRhcmdldC5uYXR1cmFsV2lkdGgpXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICByZWY9e2ltYWdlUmVmfVxuICAgICAgICAgICAgICAgIHNyYz17ZmlsZVNyY1RvVXNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtzaG93Rm9jYWxQb2ludCAmJiAoXG4gICAgICAgICAgICAgIDxEcmFnZ2FibGVFbGVtZW50XG4gICAgICAgICAgICAgICAgYm91bmRzUmVmPXtzaG93Q3JvcCA/IGNyb3BSZWYgOiBpbWFnZVJlZn1cbiAgICAgICAgICAgICAgICBjaGVja0JvdW5kcz17c2hvd0Nyb3AgPyBjaGVja0JvdW5kcyA6IGZhbHNlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZm9jYWxQb2ludGB9XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmPXtmb2NhbFdyYXBSZWZ9XG4gICAgICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uPXtwb2ludFBvc2l0aW9ufVxuICAgICAgICAgICAgICAgIG9uRHJhZ0VuZD17b25EcmFnRW5kfVxuICAgICAgICAgICAgICAgIHNldENoZWNrQm91bmRzPXtzaG93Q3JvcCA/IHNldENoZWNrQm91bmRzIDogZmFsc2V9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UGx1cyAvPlxuICAgICAgICAgICAgICA8L0RyYWdnYWJsZUVsZW1lbnQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgeyhzaG93Q3JvcCB8fCBzaG93Rm9jYWxQb2ludCkgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19zaWRlYmFyYH0+XG4gICAgICAgICAgICB7c2hvd0Nyb3AgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZ3JvdXBXcmFwYH0+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X190aXRsZVdyYXBgfT5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt0KCd1cGxvYWQ6Y3JvcCcpfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fcmVzZXRgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDcm9wKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQ6ICclJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3QoJ2dlbmVyYWw6cmVzZXQnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Rlc2NyaXB0aW9uYH0+XG4gICAgICAgICAgICAgICAgICB7dCgndXBsb2FkOmNyb3BUb29sRGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2lucHV0c1dyYXBgfT5cbiAgICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgICBuYW1lPXtgJHt0KCd1cGxvYWQ6d2lkdGgnKX0gKHB4KWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IGZpbmVUdW5lQ3JvcCh7IGRpbWVuc2lvbjogJ3dpZHRoJywgdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsoKGNyb3Aud2lkdGggLyAxMDApICogb3JpZ2luYWxXaWR0aCkudG9GaXhlZCgwKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17YCR7dCgndXBsb2FkOmhlaWdodCcpfSAocHgpYH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gZmluZVR1bmVDcm9wKHsgZGltZW5zaW9uOiAnaGVpZ2h0JywgdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsoKGNyb3AuaGVpZ2h0IC8gMTAwKSAqIG9yaWdpbmFsSGVpZ2h0KS50b0ZpeGVkKDApfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7c2hvd0ZvY2FsUG9pbnQgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZ3JvdXBXcmFwYH0+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X190aXRsZVdyYXBgfT5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt0KCd1cGxvYWQ6Zm9jYWxQb2ludCcpfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fcmVzZXRgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NlbnRlckZvY2FsUG9pbnR9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7dCgnZ2VuZXJhbDpyZXNldCcpfVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZGVzY3JpcHRpb25gfT5cbiAgICAgICAgICAgICAgICAgIHt0KCd1cGxvYWQ6Zm9jYWxQb2ludERlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19pbnB1dHNXcmFwYH0+XG4gICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlggJVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IGZpbmVUdW5lRm9jYWxQb2ludCh7IGNvb3JkaW5hdGU6ICd4JywgdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwb2ludFBvc2l0aW9uLngudG9GaXhlZCgwKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlkgJVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IGZpbmVUdW5lRm9jYWxQb2ludCh7IGNvb3JkaW5hdGU6ICd5JywgdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwb2ludFBvc2l0aW9uLnkudG9GaXhlZCgwKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmNvbnN0IERyYWdnYWJsZUVsZW1lbnQgPSAoe1xuICBib3VuZHNSZWYsXG4gIGNoZWNrQm91bmRzLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb250YWluZXJSZWYsXG4gIGluaXRpYWxQb3NpdGlvbiA9IHsgeDogNTAsIHk6IDUwIH0sXG4gIG9uRHJhZ0VuZCxcbiAgc2V0Q2hlY2tCb3VuZHMsXG59KSA9PiB7XG4gIGNvbnN0IFtwb3NpdGlvbiwgc2V0UG9zaXRpb25dID0gdXNlU3RhdGUoeyB4OiBpbml0aWFsUG9zaXRpb24ueCwgeTogaW5pdGlhbFBvc2l0aW9uLnkgfSlcbiAgY29uc3QgW2lzRHJhZ2dpbmcsIHNldElzRHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGRyYWdSZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgfCB1bmRlZmluZWQ+KClcblxuICBjb25zdCBnZXRDb29yZGluYXRlcyA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgIChtb3VzZVhBcmc/OiBudW1iZXIsIG1vdXNlWUFyZz86IG51bWJlciwgcmVjZW50ZXI/OiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGJvdW5kc1JlY3QgPSBib3VuZHNSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgbW91c2VYID0gbW91c2VYQXJnID8/IGJvdW5kc1JlY3QubGVmdFxuICAgICAgY29uc3QgbW91c2VZID0gbW91c2VZQXJnID8/IGJvdW5kc1JlY3QudG9wXG5cbiAgICAgIGNvbnN0IHhPdXRPZkJvdW5kcyA9IG1vdXNlWCA8IGJvdW5kc1JlY3QubGVmdCB8fCBtb3VzZVggPiBib3VuZHNSZWN0LnJpZ2h0XG4gICAgICBjb25zdCB5T3V0T2ZCb3VuZHMgPSBtb3VzZVkgPCBib3VuZHNSZWN0LnRvcCB8fCBtb3VzZVkgPiBib3VuZHNSZWN0LmJvdHRvbVxuXG4gICAgICBsZXQgeCA9ICgobW91c2VYIC0gY29udGFpbmVyUmVjdC5sZWZ0KSAvIGNvbnRhaW5lclJlY3Qud2lkdGgpICogMTAwXG4gICAgICBsZXQgeSA9ICgobW91c2VZIC0gY29udGFpbmVyUmVjdC50b3ApIC8gY29udGFpbmVyUmVjdC5oZWlnaHQpICogMTAwXG4gICAgICBjb25zdCB4Q2VudGVyID1cbiAgICAgICAgKChib3VuZHNSZWN0LmxlZnQgLSBjb250YWluZXJSZWN0LmxlZnQgKyBib3VuZHNSZWN0LndpZHRoIC8gMikgLyBjb250YWluZXJSZWN0LndpZHRoKSAqIDEwMFxuICAgICAgY29uc3QgeUNlbnRlciA9XG4gICAgICAgICgoYm91bmRzUmVjdC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGJvdW5kc1JlY3QuaGVpZ2h0IC8gMikgLyBjb250YWluZXJSZWN0LmhlaWdodCkgKiAxMDBcbiAgICAgIGlmICh4T3V0T2ZCb3VuZHMgfHwgeU91dE9mQm91bmRzKSB7XG4gICAgICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpXG4gICAgICAgIGlmIChtb3VzZVggPCBib3VuZHNSZWN0LmxlZnQpIHtcbiAgICAgICAgICB4ID0gKChib3VuZHNSZWN0LmxlZnQgLSBjb250YWluZXJSZWN0LmxlZnQpIC8gY29udGFpbmVyUmVjdC53aWR0aCkgKiAxMDBcbiAgICAgICAgfSBlbHNlIGlmIChtb3VzZVggPiBib3VuZHNSZWN0LnJpZ2h0KSB7XG4gICAgICAgICAgeCA9XG4gICAgICAgICAgICAoKGNvbnRhaW5lclJlY3Qud2lkdGggLSAoY29udGFpbmVyUmVjdC5yaWdodCAtIGJvdW5kc1JlY3QucmlnaHQpKSAvXG4gICAgICAgICAgICAgIGNvbnRhaW5lclJlY3Qud2lkdGgpICpcbiAgICAgICAgICAgIDEwMFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vdXNlWSA8IGJvdW5kc1JlY3QudG9wKSB7XG4gICAgICAgICAgeSA9ICgoYm91bmRzUmVjdC50b3AgLSBjb250YWluZXJSZWN0LnRvcCkgLyBjb250YWluZXJSZWN0LmhlaWdodCkgKiAxMDBcbiAgICAgICAgfSBlbHNlIGlmIChtb3VzZVkgPiBib3VuZHNSZWN0LmJvdHRvbSkge1xuICAgICAgICAgIHkgPVxuICAgICAgICAgICAgKChjb250YWluZXJSZWN0LmhlaWdodCAtIChjb250YWluZXJSZWN0LmJvdHRvbSAtIGJvdW5kc1JlY3QuYm90dG9tKSkgL1xuICAgICAgICAgICAgICBjb250YWluZXJSZWN0LmhlaWdodCkgKlxuICAgICAgICAgICAgMTAwXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVjZW50ZXIpIHtcbiAgICAgICAgICB4ID0geE91dE9mQm91bmRzID8geENlbnRlciA6IHhcbiAgICAgICAgICB5ID0geU91dE9mQm91bmRzID8geUNlbnRlciA6IHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4geyB4LCB5IH1cbiAgICB9LFxuICAgIFtib3VuZHNSZWYsIGNvbnRhaW5lclJlZl0sXG4gIClcblxuICBjb25zdCBoYW5kbGVNb3VzZURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgc2V0SXNEcmFnZ2luZyh0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlTW91c2VNb3ZlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFpc0RyYWdnaW5nKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IHsgeCwgeSB9ID0gZ2V0Q29vcmRpbmF0ZXMoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcblxuICAgIHNldFBvc2l0aW9uKHsgeCwgeSB9KVxuICB9XG5cbiAgY29uc3Qgb25Ecm9wID0gKCkgPT4ge1xuICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpXG4gICAgb25EcmFnRW5kKHBvc2l0aW9uKVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNEcmFnZ2luZyB8fCAhZHJhZ1JlZi5jdXJyZW50KSByZXR1cm5cbiAgICBpZiAoY2hlY2tCb3VuZHMpIHtcbiAgICAgIGNvbnN0IHsgaGVpZ2h0LCBsZWZ0LCB0b3AsIHdpZHRoIH0gPSBkcmFnUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IHsgeCwgeSB9ID0gZ2V0Q29vcmRpbmF0ZXMobGVmdCArIHdpZHRoIC8gMiwgdG9wICsgaGVpZ2h0IC8gMiwgdHJ1ZSlcbiAgICAgIG9uRHJhZ0VuZCh7IHgsIHkgfSlcbiAgICAgIHNldFBvc2l0aW9uKHsgeCwgeSB9KVxuICAgICAgc2V0Q2hlY2tCb3VuZHMoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0sIFtnZXRDb29yZGluYXRlcywgaXNEcmFnZ2luZywgY2hlY2tCb3VuZHMsIHNldENoZWNrQm91bmRzLCBwb3NpdGlvbi54LCBwb3NpdGlvbi55LCBvbkRyYWdFbmRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UG9zaXRpb24oeyB4OiBpbml0aWFsUG9zaXRpb24ueCwgeTogaW5pdGlhbFBvc2l0aW9uLnkgfSlcbiAgfSwgW2luaXRpYWxQb3NpdGlvbi54LCBpbml0aWFsUG9zaXRpb24ueV0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e1tcbiAgICAgICAgYCR7YmFzZUNsYXNzfV9fZHJhZ2dhYmxlLWNvbnRhaW5lcmAsXG4gICAgICAgIGlzRHJhZ2dpbmcgJiYgYCR7YmFzZUNsYXNzfV9fZHJhZ2dhYmxlLWNvbnRhaW5lci0tZHJhZ2dpbmdgLFxuICAgICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyl9XG4gICAgICBvbk1vdXNlTW92ZT17aGFuZGxlTW91c2VNb3ZlfVxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtbYCR7YmFzZUNsYXNzfV9fZHJhZ2dhYmxlYCwgY2xhc3NOYW1lXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpfVxuICAgICAgICBvbk1vdXNlRG93bj17aGFuZGxlTW91c2VEb3dufVxuICAgICAgICBvbk1vdXNlVXA9e29uRHJvcH1cbiAgICAgICAgcmVmPXtkcmFnUmVmfVxuICAgICAgICBzdHlsZT17eyBsZWZ0OiBgJHtwb3NpdGlvbi54fSVgLCB0b3A6IGAke3Bvc2l0aW9uLnl9JWAgfX1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiAvPlxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibmFtZXMiOlsiRWRpdFVwbG9hZCIsImJhc2VDbGFzcyIsIklucHV0IiwibmFtZSIsIm9uQ2hhbmdlIiwidmFsdWUiLCJkaXYiLCJjbGFzc05hbWUiLCJpbnB1dCIsImUiLCJ0YXJnZXQiLCJ0eXBlIiwiZmlsZU5hbWUiLCJmaWxlU3JjIiwiaW1hZ2VDYWNoZVRhZyIsInNob3dDcm9wIiwic2hvd0ZvY2FsUG9pbnQiLCJjbG9zZU1vZGFsIiwidXNlTW9kYWwiLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJmb3JtUXVlcnlQYXJhbXMiLCJzZXRGb3JtUXVlcnlQYXJhbXMiLCJ1c2VGb3JtUXVlcnlQYXJhbXMiLCJ1cGxvYWRFZGl0cyIsImNyb3AiLCJzZXRDcm9wIiwidXNlU3RhdGUiLCJoZWlnaHQiLCJ1bml0Iiwid2lkdGgiLCJ4IiwieSIsInBvaW50UG9zaXRpb24iLCJzZXRQb2ludFBvc2l0aW9uIiwiZm9jYWxQb2ludCIsImNoZWNrQm91bmRzIiwic2V0Q2hlY2tCb3VuZHMiLCJvcmlnaW5hbEhlaWdodCIsInNldE9yaWdpbmFsSGVpZ2h0Iiwib3JpZ2luYWxXaWR0aCIsInNldE9yaWdpbmFsV2lkdGgiLCJmb2NhbFdyYXBSZWYiLCJ1c2VSZWYiLCJpbWFnZVJlZiIsImNyb3BSZWYiLCJmaW5lVHVuZUNyb3AiLCJkaW1lbnNpb24iLCJpbnRWYWx1ZSIsInBhcnNlSW50IiwicGVyY2VudGFnZSIsImZpbmVUdW5lRm9jYWxQb2ludCIsImNvb3JkaW5hdGUiLCJwcmV2UG9zaXRpb24iLCJzYXZlRWRpdHMiLCJ1bmRlZmluZWQiLCJlZGl0RHJhd2VyU2x1ZyIsIm9uRHJhZ0VuZCIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJjZW50ZXJGb2NhbFBvaW50IiwiY29udGFpbmVyUmVjdCIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3VuZHNSZWN0IiwieENlbnRlciIsImxlZnQiLCJ5Q2VudGVyIiwidG9wIiwiZmlsZVNyY1RvVXNlIiwiaDIiLCJ0aXRsZSIsIkJ1dHRvbiIsImFyaWEtbGFiZWwiLCJidXR0b25TdHlsZSIsIm9uQ2xpY2siLCJyZWYiLCJzdHlsZSIsImFzcGVjdFJhdGlvIiwiUmVhY3RDcm9wIiwiXyIsImMiLCJvbkNvbXBsZXRlIiwicmVuZGVyU2VsZWN0aW9uQWRkb24iLCJpbWciLCJhbHQiLCJvbkxvYWQiLCJjdXJyZW50VGFyZ2V0IiwibmF0dXJhbEhlaWdodCIsIm5hdHVyYWxXaWR0aCIsInNyYyIsIkRyYWdnYWJsZUVsZW1lbnQiLCJib3VuZHNSZWYiLCJjb250YWluZXJSZWYiLCJpbml0aWFsUG9zaXRpb24iLCJQbHVzIiwiaDMiLCJzcGFuIiwidG9GaXhlZCIsImNoaWxkcmVuIiwicG9zaXRpb24iLCJzZXRQb3NpdGlvbiIsImlzRHJhZ2dpbmciLCJzZXRJc0RyYWdnaW5nIiwiZHJhZ1JlZiIsImdldENvb3JkaW5hdGVzIiwibW91c2VYQXJnIiwibW91c2VZQXJnIiwicmVjZW50ZXIiLCJtb3VzZVgiLCJtb3VzZVkiLCJ4T3V0T2ZCb3VuZHMiLCJyaWdodCIsInlPdXRPZkJvdW5kcyIsImJvdHRvbSIsImhhbmRsZU1vdXNlRG93biIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVNb3VzZU1vdmUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm9uRHJvcCIsInVzZUVmZmVjdCIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwib25Nb3VzZU1vdmUiLCJidXR0b24iLCJvbk1vdXNlRG93biIsIm9uTW91c2VVcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OytCQTRCYUE7OztlQUFBQTs7O3VCQXpCWTsrREFDZTt1RUFDUztRQUMxQzt3QkFFd0I7c0JBQ1Y7aUNBQ2M7NkJBQ0o7d0JBQ1I7UUFDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsTUFBTUMsWUFBWTtBQUVsQixNQUFNQyxRQUFzRixDQUFDLEVBQzNGQyxJQUFJLEVBQ0pDLFFBQVEsRUFDUkMsS0FBSyxFQUNOLGlCQUNDLDZCQUFDQztRQUFJQyxXQUFXLENBQUMsRUFBRU4sVUFBVSxPQUFPLENBQUM7T0FDbENFLG9CQUNELDZCQUFDSztRQUFNTCxNQUFNQTtRQUFNQyxVQUFVLENBQUNLLElBQU1MLFNBQVNLLEVBQUVDLE1BQU0sQ0FBQ0wsS0FBSztRQUFHTSxNQUFLO1FBQVNOLE9BQU9BOztBQUloRixNQUFNTCxhQU9SLENBQUMsRUFBRVksUUFBUSxFQUFFQyxPQUFPLEVBQUVDLGFBQWEsRUFBRUMsUUFBUSxFQUFFQyxjQUFjLEVBQUU7SUFDbEUsTUFBTSxFQUFFQyxVQUFVLEVBQUUsR0FBR0MsSUFBQUEsZUFBUTtJQUMvQixNQUFNLEVBQUVDLENBQUMsRUFBRSxHQUFHQyxJQUFBQSwyQkFBYztJQUM1QixNQUFNLEVBQUVDLGVBQWUsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR0MsSUFBQUEsbUNBQWtCO0lBQ2xFLE1BQU0sRUFBRUMsV0FBVyxFQUFFLEdBQUdILG1CQUFtQixDQUFDO0lBQzVDLE1BQU0sQ0FBQ0ksTUFBTUMsUUFBUSxHQUFHQyxJQUFBQSxlQUFRLEVBQVc7UUFDekNDLFFBQVFKLGFBQWFDLE1BQU1HLFVBQVU7UUFDckNDLE1BQU07UUFDTkMsT0FBT04sYUFBYUMsTUFB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
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ErrorPill", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ErrorPill;
9
+ }
10
+ });
11
+ const _react = /*#__PURE__*/ _interop_require_default(require("react"));
12
+ require("./index.scss");
13
+ function _interop_require_default(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ const baseClass = 'error-pill';
19
+ const ErrorPill = (props)=>{
20
+ const { className, count, i18n, withMessage } = props;
21
+ const lessThan3Chars = !withMessage && count < 99;
22
+ const classes = [
23
+ baseClass,
24
+ lessThan3Chars && `${baseClass}--fixed-width`,
25
+ className && className
26
+ ].filter(Boolean).join(' ');
27
+ if (count === 0) return null;
28
+ return /*#__PURE__*/ _react.default.createElement("div", {
29
+ className: classes
30
+ }, /*#__PURE__*/ _react.default.createElement("div", {
31
+ className: `${baseClass}__content`
32
+ }, /*#__PURE__*/ _react.default.createElement("span", {
33
+ className: `${baseClass}__count`
34
+ }, count), withMessage && ` ${count > 1 ? i18n.t('general:errors') : i18n.t('general:error')}`));
35
+ };
36
+
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9FcnJvclBpbGwvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBQcm9wcyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnZXJyb3ItcGlsbCdcblxuZXhwb3J0IGNvbnN0IEVycm9yUGlsbDogUmVhY3QuRkM8UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjb3VudCwgaTE4biwgd2l0aE1lc3NhZ2UgfSA9IHByb3BzXG4gIGNvbnN0IGxlc3NUaGFuM0NoYXJzID0gIXdpdGhNZXNzYWdlICYmIGNvdW50IDwgOTlcblxuICBjb25zdCBjbGFzc2VzID0gW2Jhc2VDbGFzcywgbGVzc1RoYW4zQ2hhcnMgJiYgYCR7YmFzZUNsYXNzfS0tZml4ZWQtd2lkdGhgLCBjbGFzc05hbWUgJiYgY2xhc3NOYW1lXVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAuam9pbignICcpXG5cbiAgaWYgKGNvdW50ID09PSAwKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2NvbnRlbnRgfT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jb3VudGB9Pntjb3VudH08L3NwYW4+XG4gICAgICAgIHt3aXRoTWVzc2FnZSAmJiBgICR7Y291bnQgPiAxID8gaTE4bi50KCdnZW5lcmFsOmVycm9ycycpIDogaTE4bi50KCdnZW5lcmFsOmVycm9yJyl9YH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibmFtZXMiOlsiRXJyb3JQaWxsIiwiYmFzZUNsYXNzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJjb3VudCIsImkxOG4iLCJ3aXRoTWVzc2FnZSIsImxlc3NUaGFuM0NoYXJzIiwiY2xhc3NlcyIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwiZGl2Iiwic3BhbiIsInQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBUWFBOzs7ZUFBQUE7Ozs4REFSSztRQUlYOzs7Ozs7QUFFUCxNQUFNQyxZQUFZO0FBRVgsTUFBTUQsWUFBNkIsQ0FBQ0U7SUFDekMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxXQUFXLEVBQUUsR0FBR0o7SUFDaEQsTUFBTUssaUJBQWlCLENBQUNELGVBQWVGLFFBQVE7SUFFL0MsTUFBTUksVUFBVTtRQUFDUDtRQUFXTSxrQkFBa0IsQ0FBQyxFQUFFTixVQUFVLGFBQWEsQ0FBQztRQUFFRSxhQUFhQTtLQUFVLENBQy9GTSxNQUFNLENBQUNDLFNBQ1BDLElBQUksQ0FBQztJQUVSLElBQUlQLFVBQVUsR0FBRyxPQUFPO0lBRXhCLHFCQUNFLDZCQUFDUTtRQUFJVCxXQUFXSztxQkFDZCw2QkFBQ0k7UUFBSVQsV0FBVyxDQUFDLEVBQUVGLFVBQVUsU0FBUyxDQUFDO3FCQUNyQyw2QkFBQ1k7UUFBS1YsV0FBVyxDQUFDLEVBQUVGLFVBQVUsT0FBTyxDQUFDO09BQUdHLFFBQ3hDRSxlQUFlLENBQUMsQ0FBQyxFQUFFRixRQUFRLElBQUlDLEtBQUtTLENBQUMsQ0FBQyxvQkFBb0JULEtBQUtTLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztBQUk1RiJ9
@@ -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,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "FieldSelect", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return FieldSelect;
9
+ }
10
+ });
11
+ const _translations = require("@payloadcms/translations");
12
+ const _types = require("payload/types");
13
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
14
+ const _context = require("../../forms/Form/context");
15
+ const _createNestedFieldPath = require("../../forms/Form/createNestedFieldPath");
16
+ const _Label = /*#__PURE__*/ _interop_require_default(require("../../forms/Label"));
17
+ const _Translation = require("../../providers/Translation");
18
+ const _ReactSelect = /*#__PURE__*/ _interop_require_default(require("../ReactSelect"));
19
+ require("./index.scss");
20
+ function _interop_require_default(obj) {
21
+ return obj && obj.__esModule ? obj : {
22
+ default: obj
23
+ };
24
+ }
25
+ function _getRequireWildcardCache(nodeInterop) {
26
+ if (typeof WeakMap !== "function") return null;
27
+ var cacheBabelInterop = new WeakMap();
28
+ var cacheNodeInterop = new WeakMap();
29
+ return (_getRequireWildcardCache = function(nodeInterop) {
30
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
31
+ })(nodeInterop);
32
+ }
33
+ function _interop_require_wildcard(obj, nodeInterop) {
34
+ if (!nodeInterop && obj && obj.__esModule) {
35
+ return obj;
36
+ }
37
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
38
+ return {
39
+ default: obj
40
+ };
41
+ }
42
+ var cache = _getRequireWildcardCache(nodeInterop);
43
+ if (cache && cache.has(obj)) {
44
+ return cache.get(obj);
45
+ }
46
+ var newObj = {
47
+ __proto__: null
48
+ };
49
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
50
+ for(var key in obj){
51
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
52
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
53
+ if (desc && (desc.get || desc.set)) {
54
+ Object.defineProperty(newObj, key, desc);
55
+ } else {
56
+ newObj[key] = obj[key];
57
+ }
58
+ }
59
+ }
60
+ newObj.default = obj;
61
+ if (cache) {
62
+ cache.set(obj, newObj);
63
+ }
64
+ return newObj;
65
+ }
66
+ const baseClass = 'field-select';
67
+ const combineLabel = (prefix, field, i18n)=>`${prefix === '' ? '' : `${prefix} > `}${(0, _translations.getTranslation)(field.label || field.name, i18n) || ''}`;
68
+ const reduceFields = (fields, i18n, path = '', labelPrefix = '')=>fields.reduce((fieldsToUse, field)=>{
69
+ // escape for a variety of reasons
70
+ if ((0, _types.fieldAffectsData)(field) && (field.admin?.disableBulkEdit || field.unique || field.hidden || field.admin?.hidden || field.admin?.readOnly)) {
71
+ return fieldsToUse;
72
+ }
73
+ if (!(field.type === 'array' || field.type === 'blocks') && (0, _types.fieldHasSubFields)(field)) {
74
+ return [
75
+ ...fieldsToUse,
76
+ ...reduceFields(field.fields, i18n, (0, _createNestedFieldPath.createNestedFieldPath)(path, field), combineLabel(labelPrefix, field, i18n))
77
+ ];
78
+ }
79
+ if (field.type === 'tabs') {
80
+ return [
81
+ ...fieldsToUse,
82
+ ...field.tabs.reduce((tabFields, tab)=>{
83
+ return [
84
+ ...tabFields,
85
+ ...reduceFields(tab.fields, i18n, (0, _types.tabHasName)(tab) ? (0, _createNestedFieldPath.createNestedFieldPath)(path, field) : path, combineLabel(labelPrefix, field, i18n))
86
+ ];
87
+ }, [])
88
+ ];
89
+ }
90
+ const formattedField = {
91
+ label: combineLabel(labelPrefix, field, i18n),
92
+ value: {
93
+ ...field,
94
+ path: (0, _createNestedFieldPath.createNestedFieldPath)(path, field)
95
+ }
96
+ };
97
+ return [
98
+ ...fieldsToUse,
99
+ formattedField
100
+ ];
101
+ }, []);
102
+ const FieldSelect = ({ fields, setSelected })=>{
103
+ const { i18n, t } = (0, _Translation.useTranslation)();
104
+ const [options] = (0, _react.useState)(()=>reduceFields(fields, i18n));
105
+ const { dispatchFields, getFields } = (0, _context.useForm)();
106
+ const handleChange = (selected)=>{
107
+ const activeFields = getFields();
108
+ if (selected === null) {
109
+ setSelected([]);
110
+ } else {
111
+ setSelected(selected.map(({ value })=>value));
112
+ }
113
+ // remove deselected values from form state
114
+ if (selected === null || Object.keys(activeFields || []).length > selected.length) {
115
+ Object.keys(activeFields).forEach((path)=>{
116
+ if (selected === null || !selected.find((field)=>{
117
+ return field.value.path === path;
118
+ })) {
119
+ dispatchFields({
120
+ type: 'REMOVE',
121
+ path
122
+ });
123
+ }
124
+ });
125
+ }
126
+ };
127
+ return /*#__PURE__*/ _react.default.createElement("div", {
128
+ className: baseClass
129
+ }, /*#__PURE__*/ _react.default.createElement(_Label.default, {
130
+ label: t('fields:selectFieldsToEdit')
131
+ }), /*#__PURE__*/ _react.default.createElement(_ReactSelect.default, {
132
+ isMulti: true,
133
+ onChange: handleChange,
134
+ options: options
135
+ }));
136
+ };
137
+
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9GaWVsZFNlbGVjdC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGaWVsZCwgRmllbGRXaXRoUGF0aCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSAnQHBheWxvYWRjbXMvdHJhbnNsYXRpb25zJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgZmllbGRIYXNTdWJGaWVsZHMsIHRhYkhhc05hbWUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IHVzZUZvcm0gfSBmcm9tICcuLi8uLi9mb3Jtcy9Gb3JtL2NvbnRleHQnXG5pbXBvcnQgeyBjcmVhdGVOZXN0ZWRGaWVsZFBhdGggfSBmcm9tICcuLi8uLi9mb3Jtcy9Gb3JtL2NyZWF0ZU5lc3RlZEZpZWxkUGF0aCdcbmltcG9ydCBMYWJlbCBmcm9tICcuLi8uLi9mb3Jtcy9MYWJlbCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL1RyYW5zbGF0aW9uJ1xuaW1wb3J0IFJlYWN0U2VsZWN0IGZyb20gJy4uL1JlYWN0U2VsZWN0J1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdmaWVsZC1zZWxlY3QnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGZpZWxkczogRmllbGRbXVxuICBzZXRTZWxlY3RlZDogKGZpZWxkczogRmllbGRXaXRoUGF0aFtdKSA9PiB2b2lkXG59XG5cbmNvbnN0IGNvbWJpbmVMYWJlbCA9IChwcmVmaXgsIGZpZWxkLCBpMThuKTogc3RyaW5nID0+XG4gIGAke3ByZWZpeCA9PT0gJycgPyAnJyA6IGAke3ByZWZpeH0gPiBgfSR7Z2V0VHJhbnNsYXRpb24oZmllbGQubGFiZWwgfHwgZmllbGQubmFtZSwgaTE4bikgfHwgJyd9YFxuY29uc3QgcmVkdWNlRmllbGRzID0gKFxuICBmaWVsZHM6IEZpZWxkW10sXG4gIGkxOG4sXG4gIHBhdGggPSAnJyxcbiAgbGFiZWxQcmVmaXggPSAnJyxcbik6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IEZpZWxkV2l0aFBhdGggfVtdID0+XG4gIGZpZWxkcy5yZWR1Y2UoKGZpZWxkc1RvVXNlLCBmaWVsZCkgPT4ge1xuICAgIC8vIGVzY2FwZSBmb3IgYSB2YXJpZXR5IG9mIHJlYXNvbnNcbiAgICBpZiAoXG4gICAgICBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJlxuICAgICAgKGZpZWxkLmFkbWluPy5kaXNhYmxlQnVsa0VkaXQgfHxcbiAgICAgICAgZmllbGQudW5pcXVlIHx8XG4gICAgICAgIGZpZWxkLmhpZGRlbiB8fFxuICAgICAgICBmaWVsZC5hZG1pbj8uaGlkZGVuIHx8XG4gICAgICAgIGZpZWxkLmFkbWluPy5yZWFkT25seSlcbiAgICApIHtcbiAgICAgIHJldHVybiBmaWVsZHNUb1VzZVxuICAgIH1cbiAgICBpZiAoIShmaWVsZC50eXBlID09PSAnYXJyYXknIHx8IGZpZWxkLnR5cGUgPT09ICdibG9ja3MnKSAmJiBmaWVsZEhhc1N1YkZpZWxkcyhmaWVsZCkpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmZpZWxkc1RvVXNlLFxuICAgICAgICAuLi5yZWR1Y2VGaWVsZHMoXG4gICAgICAgICAgZmllbGQuZmllbGRzLFxuICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgY3JlYXRlTmVzdGVkRmllbGRQYXRoKHBhdGgsIGZpZWxkKSxcbiAgICAgICAgICBjb21iaW5lTGFiZWwobGFiZWxQcmVmaXgsIGZpZWxkLCBpMThuKSxcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICB9XG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0YWJzJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uZmllbGRzVG9Vc2UsXG4gICAgICAgIC4uLmZpZWxkLnRhYnMucmVkdWNlKCh0YWJGaWVsZHMsIHRhYikgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi50YWJGaWVsZHMsXG4gICAgICAgICAgICAuLi5yZWR1Y2VGaWVsZHMoXG4gICAgICAgICAgICAgIHRhYi5maWVsZHMsXG4gICAgICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgICAgIHRhYkhhc05hbWUodGFiKSA/IGNyZWF0ZU5lc3RlZEZpZWxkUGF0aChwYXRoLCBmaWVsZCkgOiBwYXRoLFxuICAgICAgICAgICAgICBjb21iaW5lTGFiZWwobGFiZWxQcmVmaXgsIGZpZWxkLCBpMThuKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXVxuICAgICAgICB9LCBbXSksXG4gICAgICBdXG4gICAgfVxuICAgIGNvbnN0IGZvcm1hdHRlZEZpZWxkID0ge1xuICAgICAgbGFiZWw6IGNvbWJpbmVMYWJlbChsYWJlbFByZWZpeCwgZmllbGQsIGkxOG4pLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIHBhdGg6IGNyZWF0ZU5lc3RlZEZpZWxkUGF0aChwYXRoLCBmaWVsZCksXG4gICAgICB9LFxuICAgIH1cblxuICAgIHJldHVybiBbLi4uZmllbGRzVG9Vc2UsIGZvcm1hdHRlZEZpZWxkXVxuICB9LCBbXSlcbmV4cG9ydCBjb25zdCBGaWVsZFNlbGVjdDogUmVhY3QuRkM8UHJvcHM+ID0gKHsgZmllbGRzLCBzZXRTZWxlY3RlZCB9KSA9PiB7XG4gIGNvbnN0IHsgaTE4biwgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCBbb3B0aW9uc10gPSB1c2VTdGF0ZSgoKSA9PiByZWR1Y2VGaWVsZHMoZmllbGRzLCBpMThuKSlcbiAgY29uc3QgeyBkaXNwYXRjaEZpZWxkcywgZ2V0RmllbGRzIH0gPSB1c2VGb3JtKClcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKHNlbGVjdGVkKSA9PiB7XG4gICAgY29uc3QgYWN0aXZlRmllbGRzID0gZ2V0RmllbGRzKClcbiAgICBpZiAoc2VsZWN0ZWQgPT09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkKFtdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTZWxlY3RlZChzZWxlY3RlZC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpKVxuICAgIH1cbiAgICAvLyByZW1vdmUgZGVzZWxlY3RlZCB2YWx1ZXMgZnJvbSBmb3JtIHN0YXRlXG4gICAgaWYgKHNlbGVjdGVkID09PSBudWxsIHx8IE9iamVjdC5rZXlzKGFjdGl2ZUZpZWxkcyB8fCBbXSkubGVuZ3RoID4gc2VsZWN0ZWQubGVuZ3RoKSB7XG4gICAgICBPYmplY3Qua2V5cyhhY3RpdmVGaWVsZHMpLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNlbGVjdGVkID09PSBudWxsIHx8XG4gICAgICAgICAgIXNlbGVjdGVkLmZpbmQoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmllbGQudmFsdWUucGF0aCA9PT0gcGF0aFxuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgICAgIHR5cGU6ICdSRU1PVkUnLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2Jhc2VDbGFzc30+XG4gICAgICA8TGFiZWwgbGFiZWw9e3QoJ2ZpZWxkczpzZWxlY3RGaWVsZHNUb0VkaXQnKX0gLz5cbiAgICAgIDxSZWFjdFNlbGVjdCBpc011bHRpIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IG9wdGlvbnM9e29wdGlvbnN9IC8+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJGaWVsZFNlbGVjdCIsImJhc2VDbGFzcyIsImNvbWJpbmVMYWJlbCIsInByZWZpeCIsImZpZWxkIiwiaTE4biIsImdldFRyYW5zbGF0aW9uIiwibGFiZWwiLCJuYW1lIiwicmVkdWNlRmllbGRzIiwiZmllbGRzIiwicGF0aCIsImxhYmVsUHJlZml4IiwicmVkdWNlIiwiZmllbGRzVG9Vc2UiLCJmaWVsZEFmZmVjdHNEYXRhIiwiYWRtaW4iLCJkaXNhYmxlQnVsa0VkaXQiLCJ1bmlxdWUiLCJoaWRkZW4iLCJyZWFkT25seSIsInR5cGUiLCJmaWVsZEhhc1N1YkZpZWxkcyIsImNyZWF0ZU5lc3RlZEZpZWxkUGF0aCIsInRhYnMiLCJ0YWJGaWVsZHMiLCJ0YWIiLCJ0YWJIYXNOYW1lIiwiZm9ybWF0dGVkRmllbGQiLCJ2YWx1ZSIsInNldFNlbGVjdGVkIiwidCIsInVzZVRyYW5zbGF0aW9uIiwib3B0aW9ucyIsInVzZVN0YXRlIiwiZGlzcGF0Y2hGaWVsZHMiLCJnZXRGaWVsZHMiLCJ1c2VGb3JtIiwiaGFuZGxlQ2hhbmdlIiwic2VsZWN0ZWQiLCJhY3RpdmVGaWVsZHMiLCJtYXAiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZm9yRWFjaCIsImZpbmQiLCJkaXYiLCJjbGFzc05hbWUiLCJMYWJlbCIsIlJlYWN0U2VsZWN0IiwiaXNNdWx0aSIsIm9uQ2hhbmdlIl0sIm1hcHBpbmdzIjoiOzs7OytCQTZFYUE7OztlQUFBQTs7OzhCQTNFa0I7dUJBQ2lDOytEQUNoQzt5QkFFUjt1Q0FDYzs4REFDcEI7NkJBQ2E7b0VBQ1A7UUFDakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsTUFBTUMsWUFBWTtBQU9sQixNQUFNQyxlQUFlLENBQUNDLFFBQVFDLE9BQU9DLE9BQ25DLENBQUMsRUFBRUYsV0FBVyxLQUFLLEtBQUssQ0FBQyxFQUFFQSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUVHLElBQUFBLDRCQUFjLEVBQUNGLE1BQU1HLEtBQUssSUFBSUgsTUFBTUksSUFBSSxFQUFFSCxTQUFTLEdBQUcsQ0FBQztBQUNsRyxNQUFNSSxlQUFlLENBQ25CQyxRQUNBTCxNQUNBTSxPQUFPLEVBQUUsRUFDVEMsY0FBYyxFQUFFLEdB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