@websolutespa/payload-plugin-bowl 2.0.1 → 3.0.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 (455) hide show
  1. package/CHANGELOG.md +23 -4
  2. package/README.md +1 -1
  3. package/dist/blocks/MenuItem.js +219 -0
  4. package/dist/blocks/MenuItem.js.map +1 -0
  5. package/dist/blocks/index.js +4 -0
  6. package/dist/blocks/index.js.map +1 -0
  7. package/dist/blocks/withComponentBlock.js +31 -0
  8. package/dist/blocks/withComponentBlock.js.map +1 -0
  9. package/dist/bowl.js +331 -0
  10. package/dist/bowl.js.map +1 -0
  11. package/dist/collections/Address.js +7 -0
  12. package/dist/collections/Address.js.map +1 -0
  13. package/dist/collections/Category.js +94 -0
  14. package/dist/collections/Category.js.map +1 -0
  15. package/dist/collections/ConsentPreference.js +34 -0
  16. package/dist/collections/ConsentPreference.js.map +1 -0
  17. package/dist/collections/Continent.js +24 -0
  18. package/dist/collections/Continent.js.map +1 -0
  19. package/dist/collections/Country.js +66 -0
  20. package/dist/collections/Country.js.map +1 -0
  21. package/dist/collections/CountryZone.js +24 -0
  22. package/dist/collections/CountryZone.js.map +1 -0
  23. package/dist/collections/EmailConfig.js +84 -0
  24. package/dist/collections/EmailConfig.js.map +1 -0
  25. package/dist/collections/EndUsers.js +24 -0
  26. package/dist/collections/EndUsers.js.map +1 -0
  27. package/dist/collections/Label.js +26 -0
  28. package/dist/collections/Label.js.map +1 -0
  29. package/dist/collections/Language.js +35 -0
  30. package/dist/collections/Language.js.map +1 -0
  31. package/dist/collections/LegalNotice.js +29 -0
  32. package/dist/collections/LegalNotice.js.map +1 -0
  33. package/dist/collections/Market.js +106 -0
  34. package/dist/collections/Market.js.map +1 -0
  35. package/dist/collections/Media.js +40 -0
  36. package/dist/collections/Media.js.map +1 -0
  37. package/dist/collections/Menu.js +49 -0
  38. package/dist/collections/Menu.js.map +1 -0
  39. package/dist/collections/Municipality.js +68 -0
  40. package/dist/collections/Municipality.js.map +1 -0
  41. package/dist/collections/Province.js +59 -0
  42. package/dist/collections/Province.js.map +1 -0
  43. package/dist/collections/Redirect.js +90 -0
  44. package/dist/collections/Redirect.js.map +1 -0
  45. package/dist/collections/Region.js +45 -0
  46. package/dist/collections/Region.js.map +1 -0
  47. package/dist/collections/SubContinent.js +36 -0
  48. package/dist/collections/SubContinent.js.map +1 -0
  49. package/dist/collections/Template.js +79 -0
  50. package/dist/collections/Template.js.map +1 -0
  51. package/dist/collections/Users.js +11 -0
  52. package/dist/collections/Users.js.map +1 -0
  53. package/dist/components/Category/CategoryMenu.js +47 -0
  54. package/dist/components/Category/CategoryMenu.js.map +1 -0
  55. package/dist/components/Category/CategoryTree.js +430 -0
  56. package/dist/components/Category/CategoryTree.js.map +1 -0
  57. package/dist/components/Category/CategoryTree.scss +330 -0
  58. package/dist/components/Category/CategoryTreeRoute.js +51 -0
  59. package/dist/components/Category/CategoryTreeRoute.js.map +1 -0
  60. package/dist/components/Category/category.service.js +32 -0
  61. package/dist/components/Category/category.service.js.map +1 -0
  62. package/dist/components/DataTree/DataTree.js +281 -0
  63. package/dist/components/DataTree/DataTree.js.map +1 -0
  64. package/dist/components/DataTree/DataTree.scss +363 -0
  65. package/dist/components/DataTree/DataTreeProvider.js +67 -0
  66. package/dist/components/DataTree/DataTreeProvider.js.map +1 -0
  67. package/dist/components/DataTree/EventEmitter.js +38 -0
  68. package/dist/components/DataTree/EventEmitter.js.map +1 -0
  69. package/dist/components/DataTree/useDataTree.js +52 -0
  70. package/dist/components/DataTree/useDataTree.js.map +1 -0
  71. package/dist/components/DecoratedList/DecoratedList.js +17 -0
  72. package/dist/components/DecoratedList/DecoratedList.js.map +1 -0
  73. package/dist/components/IconServer/IconServer.js +15 -0
  74. package/dist/components/IconServer/IconServer.js.map +1 -0
  75. package/dist/components/IconServer/IconServer.scss +14 -0
  76. package/dist/components/ImportExport/ImportExportList.js +91 -0
  77. package/dist/components/ImportExport/ImportExportList.js.map +1 -0
  78. package/dist/components/ImportExport/ImportExportList.scss +70 -0
  79. package/dist/components/ImportExport/ImportExportRedirect.js +142 -0
  80. package/dist/components/ImportExport/ImportExportRedirect.js.map +1 -0
  81. package/dist/components/ImportExport/ImportModal.js +458 -0
  82. package/dist/components/ImportExport/ImportModal.js.map +1 -0
  83. package/dist/components/ImportExport/ImportModal.scss +99 -0
  84. package/dist/components/ImportExport/types.js +3 -0
  85. package/dist/components/ImportExport/types.js.map +1 -0
  86. package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.js +83 -0
  87. package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.js.map +1 -0
  88. package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.scss +46 -0
  89. package/dist/components/LeaveWithoutSaving/usePreventLeave.js +119 -0
  90. package/dist/components/LeaveWithoutSaving/usePreventLeave.js.map +1 -0
  91. package/dist/components/LocalizedDescription/LocalizedDescriptionClient.js +15 -0
  92. package/dist/components/LocalizedDescription/LocalizedDescriptionClient.js.map +1 -0
  93. package/dist/components/LocalizedDescription/LocalizedDescriptionServer.js +13 -0
  94. package/dist/components/LocalizedDescription/LocalizedDescriptionServer.js.map +1 -0
  95. package/dist/components/LogoServer/LogoServer.js +20 -0
  96. package/dist/components/LogoServer/LogoServer.js.map +1 -0
  97. package/dist/components/LogoServer/LogoServer.scss +21 -0
  98. package/dist/core/access/access.js +181 -0
  99. package/dist/core/access/access.js.map +1 -0
  100. package/dist/core/access/access.test.js +454 -0
  101. package/dist/core/access/access.test.js.map +1 -0
  102. package/dist/core/access/index.js +3 -0
  103. package/dist/core/access/index.js.map +1 -0
  104. package/dist/core/api/action.service.js +441 -0
  105. package/dist/core/api/action.service.js.map +1 -0
  106. package/dist/core/api/action.service.test.js +218 -0
  107. package/dist/core/api/action.service.test.js.map +1 -0
  108. package/dist/core/api/cache.service.js +33 -0
  109. package/dist/core/api/cache.service.js.map +1 -0
  110. package/dist/core/api/cache.service.test.js +33 -0
  111. package/dist/core/api/cache.service.test.js.map +1 -0
  112. package/dist/core/api/category.service.js +53 -0
  113. package/dist/core/api/category.service.js.map +1 -0
  114. package/dist/core/api/collection.service.js +457 -0
  115. package/dist/core/api/collection.service.js.map +1 -0
  116. package/dist/core/api/collection.service.test.js +318 -0
  117. package/dist/core/api/collection.service.test.js.map +1 -0
  118. package/dist/core/api/email.service.js +84 -0
  119. package/dist/core/api/email.service.js.map +1 -0
  120. package/dist/core/api/global.service.js +18 -0
  121. package/dist/core/api/global.service.js.map +1 -0
  122. package/dist/core/api/health.service.js +12 -0
  123. package/dist/core/api/health.service.js.map +1 -0
  124. package/dist/core/api/index.js +16 -0
  125. package/dist/core/api/index.js.map +1 -0
  126. package/dist/core/api/locale.service.js +58 -0
  127. package/dist/core/api/locale.service.js.map +1 -0
  128. package/dist/core/api/locale.service.test.js +46 -0
  129. package/dist/core/api/locale.service.test.js.map +1 -0
  130. package/dist/core/api/menu.service.js +81 -0
  131. package/dist/core/api/menu.service.js.map +1 -0
  132. package/dist/core/api/menu.service.test.js +300 -0
  133. package/dist/core/api/menu.service.test.js.map +1 -0
  134. package/dist/core/api/page.service.js +171 -0
  135. package/dist/core/api/page.service.js.map +1 -0
  136. package/dist/core/api/page.service.test.js +68 -0
  137. package/dist/core/api/page.service.test.js.map +1 -0
  138. package/dist/core/api/pagination.service.js +29 -0
  139. package/dist/core/api/pagination.service.js.map +1 -0
  140. package/dist/core/api/pagination.service.test.js +175 -0
  141. package/dist/core/api/pagination.service.test.js.map +1 -0
  142. package/dist/core/api/redirect.service.js +106 -0
  143. package/dist/core/api/redirect.service.js.map +1 -0
  144. package/dist/core/api/redirect.service.test.js +106 -0
  145. package/dist/core/api/redirect.service.test.js.map +1 -0
  146. package/dist/core/api/route.service.js +451 -0
  147. package/dist/core/api/route.service.js.map +1 -0
  148. package/dist/core/api/route.service.test.js +214 -0
  149. package/dist/core/api/route.service.test.js.map +1 -0
  150. package/dist/core/api/static.service.js +249 -0
  151. package/dist/core/api/static.service.js.map +1 -0
  152. package/dist/core/api/static.service.test.js +240 -0
  153. package/dist/core/api/static.service.test.js.map +1 -0
  154. package/dist/core/api/store.service.js +336 -0
  155. package/dist/core/api/store.service.js.map +1 -0
  156. package/dist/core/api/store.service.test.js +105 -0
  157. package/dist/core/api/store.service.test.js.map +1 -0
  158. package/dist/core/api/types.js +21 -0
  159. package/dist/core/api/types.js.map +1 -0
  160. package/dist/core/api/utils.js +83 -0
  161. package/dist/core/api/utils.js.map +1 -0
  162. package/dist/core/api/where.service.js +231 -0
  163. package/dist/core/api/where.service.js.map +1 -0
  164. package/dist/core/collections/index.js +12 -0
  165. package/dist/core/collections/index.js.map +1 -0
  166. package/dist/core/collections/withAction.js +91 -0
  167. package/dist/core/collections/withAction.js.map +1 -0
  168. package/dist/core/collections/withAction.test.js +68 -0
  169. package/dist/core/collections/withAction.test.js.map +1 -0
  170. package/dist/core/collections/withAddress.js +122 -0
  171. package/dist/core/collections/withAddress.js.map +1 -0
  172. package/dist/core/collections/withBlock.js +17 -0
  173. package/dist/core/collections/withBlock.js.map +1 -0
  174. package/dist/core/collections/withBlock.test.js +68 -0
  175. package/dist/core/collections/withBlock.test.js.map +1 -0
  176. package/dist/core/collections/withCollection.js +61 -0
  177. package/dist/core/collections/withCollection.js.map +1 -0
  178. package/dist/core/collections/withCollection.test.js +64 -0
  179. package/dist/core/collections/withCollection.test.js.map +1 -0
  180. package/dist/core/collections/withEndUser.js +301 -0
  181. package/dist/core/collections/withEndUser.js.map +1 -0
  182. package/dist/core/collections/withGlobal.js +27 -0
  183. package/dist/core/collections/withGlobal.js.map +1 -0
  184. package/dist/core/collections/withGlobal.test.js +57 -0
  185. package/dist/core/collections/withGlobal.test.js.map +1 -0
  186. package/dist/core/collections/withMenu.js +19 -0
  187. package/dist/core/collections/withMenu.js.map +1 -0
  188. package/dist/core/collections/withMenu.test.js +63 -0
  189. package/dist/core/collections/withMenu.test.js.map +1 -0
  190. package/dist/core/collections/withPage.js +126 -0
  191. package/dist/core/collections/withPage.js.map +1 -0
  192. package/dist/core/collections/withPage.test.js +103 -0
  193. package/dist/core/collections/withPage.test.js.map +1 -0
  194. package/dist/core/collections/withStaticCollection.js +60 -0
  195. package/dist/core/collections/withStaticCollection.js.map +1 -0
  196. package/dist/core/collections/withStaticCollection.test.js +84 -0
  197. package/dist/core/collections/withStaticCollection.test.js.map +1 -0
  198. package/dist/core/collections/withUser.js +56 -0
  199. package/dist/core/collections/withUser.js.map +1 -0
  200. package/dist/core/decorators/category.js +28 -0
  201. package/dist/core/decorators/category.js.map +1 -0
  202. package/dist/core/decorators/components.js +9 -0
  203. package/dist/core/decorators/components.js.map +1 -0
  204. package/dist/core/decorators/href.js +25 -0
  205. package/dist/core/decorators/href.js.map +1 -0
  206. package/dist/core/decorators/index.js +11 -0
  207. package/dist/core/decorators/index.js.map +1 -0
  208. package/dist/core/decorators/localize.js +27 -0
  209. package/dist/core/decorators/localize.js.map +1 -0
  210. package/dist/core/decorators/menu.js +246 -0
  211. package/dist/core/decorators/menu.js.map +1 -0
  212. package/dist/core/decorators/nav.js +42 -0
  213. package/dist/core/decorators/nav.js.map +1 -0
  214. package/dist/core/decorators/rich-text.js +39 -0
  215. package/dist/core/decorators/rich-text.js.map +1 -0
  216. package/dist/core/decorators/schema.js +16 -0
  217. package/dist/core/decorators/schema.js.map +1 -0
  218. package/dist/core/decorators/upload.js +44 -0
  219. package/dist/core/decorators/upload.js.map +1 -0
  220. package/dist/core/encryption/encryption.js +66 -0
  221. package/dist/core/encryption/encryption.js.map +1 -0
  222. package/dist/core/encryption/index.js +3 -0
  223. package/dist/core/encryption/index.js.map +1 -0
  224. package/dist/core/fields/index.js +28 -0
  225. package/dist/core/fields/index.js.map +1 -0
  226. package/dist/core/fields/withAbstract.js +15 -0
  227. package/dist/core/fields/withAbstract.js.map +1 -0
  228. package/dist/core/fields/withAbstract.test.js +72 -0
  229. package/dist/core/fields/withAbstract.test.js.map +1 -0
  230. package/dist/core/fields/withAnchor.js +56 -0
  231. package/dist/core/fields/withAnchor.js.map +1 -0
  232. package/dist/core/fields/withCategory.js +21 -0
  233. package/dist/core/fields/withCategory.js.map +1 -0
  234. package/dist/core/fields/withCategory.test.js +63 -0
  235. package/dist/core/fields/withCategory.test.js.map +1 -0
  236. package/dist/core/fields/withCheckbox.js +19 -0
  237. package/dist/core/fields/withCheckbox.js.map +1 -0
  238. package/dist/core/fields/withCheckbox.test.js +59 -0
  239. package/dist/core/fields/withCheckbox.test.js.map +1 -0
  240. package/dist/core/fields/withComponents.js +17 -0
  241. package/dist/core/fields/withComponents.js.map +1 -0
  242. package/dist/core/fields/withComponents.test.js +62 -0
  243. package/dist/core/fields/withComponents.test.js.map +1 -0
  244. package/dist/core/fields/withDate.js +18 -0
  245. package/dist/core/fields/withDate.js.map +1 -0
  246. package/dist/core/fields/withDate.test.js +56 -0
  247. package/dist/core/fields/withDate.test.js.map +1 -0
  248. package/dist/core/fields/withDescription.js +15 -0
  249. package/dist/core/fields/withDescription.js.map +1 -0
  250. package/dist/core/fields/withDescription.test.js +72 -0
  251. package/dist/core/fields/withDescription.test.js.map +1 -0
  252. package/dist/core/fields/withId.js +19 -0
  253. package/dist/core/fields/withId.js.map +1 -0
  254. package/dist/core/fields/withId.test.js +61 -0
  255. package/dist/core/fields/withId.test.js.map +1 -0
  256. package/dist/core/fields/withIsActive.js +15 -0
  257. package/dist/core/fields/withIsActive.js.map +1 -0
  258. package/dist/core/fields/withIsActive.test.js +59 -0
  259. package/dist/core/fields/withIsActive.test.js.map +1 -0
  260. package/dist/core/fields/withIsDefault.js +15 -0
  261. package/dist/core/fields/withIsDefault.js.map +1 -0
  262. package/dist/core/fields/withIsDefault.test.js +59 -0
  263. package/dist/core/fields/withIsDefault.test.js.map +1 -0
  264. package/dist/core/fields/withLink.js +116 -0
  265. package/dist/core/fields/withLink.js.map +1 -0
  266. package/dist/core/fields/withLink.test.js +144 -0
  267. package/dist/core/fields/withLink.test.js.map +1 -0
  268. package/dist/core/fields/withMarkets.js +21 -0
  269. package/dist/core/fields/withMarkets.js.map +1 -0
  270. package/dist/core/fields/withMarkets.test.js +65 -0
  271. package/dist/core/fields/withMarkets.test.js.map +1 -0
  272. package/dist/core/fields/withMedia.js +20 -0
  273. package/dist/core/fields/withMedia.js.map +1 -0
  274. package/dist/core/fields/withMedia.test.js +41 -0
  275. package/dist/core/fields/withMedia.test.js.map +1 -0
  276. package/dist/core/fields/withMedias.js +25 -0
  277. package/dist/core/fields/withMedias.js.map +1 -0
  278. package/dist/core/fields/withMedias.test.js +46 -0
  279. package/dist/core/fields/withMedias.test.js.map +1 -0
  280. package/dist/core/fields/withName.js +17 -0
  281. package/dist/core/fields/withName.js.map +1 -0
  282. package/dist/core/fields/withName.test.js +59 -0
  283. package/dist/core/fields/withName.test.js.map +1 -0
  284. package/dist/core/fields/withNav.js +28 -0
  285. package/dist/core/fields/withNav.js.map +1 -0
  286. package/dist/core/fields/withNavs.js +53 -0
  287. package/dist/core/fields/withNavs.js.map +1 -0
  288. package/dist/core/fields/withOrder.js +80 -0
  289. package/dist/core/fields/withOrder.js.map +1 -0
  290. package/dist/core/fields/withOrder.test.js +56 -0
  291. package/dist/core/fields/withOrder.test.js.map +1 -0
  292. package/dist/core/fields/withRelated.js +18 -0
  293. package/dist/core/fields/withRelated.js.map +1 -0
  294. package/dist/core/fields/withRelated.test.js +62 -0
  295. package/dist/core/fields/withRelated.test.js.map +1 -0
  296. package/dist/core/fields/withRichText.js +68 -0
  297. package/dist/core/fields/withRichText.js.map +1 -0
  298. package/dist/core/fields/withRichText.test.js +72 -0
  299. package/dist/core/fields/withRichText.test.js.map +1 -0
  300. package/dist/core/fields/withRoles.js +27 -0
  301. package/dist/core/fields/withRoles.js.map +1 -0
  302. package/dist/core/fields/withRoles.test.js +49 -0
  303. package/dist/core/fields/withRoles.test.js.map +1 -0
  304. package/dist/core/fields/withSelect.js +23 -0
  305. package/dist/core/fields/withSelect.js.map +1 -0
  306. package/dist/core/fields/withSelect.test.js +59 -0
  307. package/dist/core/fields/withSelect.test.js.map +1 -0
  308. package/dist/core/fields/withSeoWeight.js +19 -0
  309. package/dist/core/fields/withSeoWeight.js.map +1 -0
  310. package/dist/core/fields/withSlug.js +33 -0
  311. package/dist/core/fields/withSlug.js.map +1 -0
  312. package/dist/core/fields/withSlug.test.js +71 -0
  313. package/dist/core/fields/withSlug.test.js.map +1 -0
  314. package/dist/core/fields/withTemplate.js +49 -0
  315. package/dist/core/fields/withTemplate.js.map +1 -0
  316. package/dist/core/fields/withTemplate.test.js +93 -0
  317. package/dist/core/fields/withTemplate.test.js.map +1 -0
  318. package/dist/core/fields/withTenants.js +21 -0
  319. package/dist/core/fields/withTenants.js.map +1 -0
  320. package/dist/core/fields/withTenants.test.js +42 -0
  321. package/dist/core/fields/withTenants.test.js.map +1 -0
  322. package/dist/core/fields/withText.js +18 -0
  323. package/dist/core/fields/withText.js.map +1 -0
  324. package/dist/core/fields/withText.test.js +56 -0
  325. package/dist/core/fields/withText.test.js.map +1 -0
  326. package/dist/core/fields/withTitle.js +17 -0
  327. package/dist/core/fields/withTitle.js.map +1 -0
  328. package/dist/core/fields/withTitle.test.js +58 -0
  329. package/dist/core/fields/withTitle.test.js.map +1 -0
  330. package/dist/core/index.js +11 -0
  331. package/dist/core/index.js.map +1 -0
  332. package/dist/core/logger/index.js +3 -0
  333. package/dist/core/logger/index.js.map +1 -0
  334. package/dist/core/logger/logger.js +9 -0
  335. package/dist/core/logger/logger.js.map +1 -0
  336. package/dist/core/translations/index.js +3 -0
  337. package/dist/core/translations/index.js.map +1 -0
  338. package/dist/core/translations/translations.js +137 -0
  339. package/dist/core/translations/translations.js.map +1 -0
  340. package/dist/core/translations/translations.test.js +72 -0
  341. package/dist/core/translations/translations.test.js.map +1 -0
  342. package/dist/core/utils/findByIDHandler.js +28 -0
  343. package/dist/core/utils/findByIDHandler.js.map +1 -0
  344. package/dist/core/utils/findHandler.js +31 -0
  345. package/dist/core/utils/findHandler.js.map +1 -0
  346. package/dist/core/utils/getPreviewURL.js +45 -0
  347. package/dist/core/utils/getPreviewURL.js.map +1 -0
  348. package/dist/core/utils/getRequestCollection.js +49 -0
  349. package/dist/core/utils/getRequestCollection.js.map +1 -0
  350. package/dist/core/utils/index.js +7 -0
  351. package/dist/core/utils/index.js.map +1 -0
  352. package/dist/core/utils/mergeCollections.js +18 -0
  353. package/dist/core/utils/mergeCollections.js.map +1 -0
  354. package/dist/core/utils/mergeFields.js +20 -0
  355. package/dist/core/utils/mergeFields.js.map +1 -0
  356. package/dist/core/utils/mergeGlobals.js +17 -0
  357. package/dist/core/utils/mergeGlobals.js.map +1 -0
  358. package/dist/core/utils/richText.js +29 -0
  359. package/dist/core/utils/richText.js.map +1 -0
  360. package/dist/core/utils/sortByGroup.js +36 -0
  361. package/dist/core/utils/sortByGroup.js.map +1 -0
  362. package/dist/debug.js +25 -0
  363. package/dist/debug.js.map +1 -0
  364. package/dist/declaration.d.js +3 -0
  365. package/dist/declaration.d.js.map +1 -0
  366. package/dist/exports/client.d.ts +36 -0
  367. package/dist/exports/client.d.ts.map +1 -0
  368. package/dist/exports/client.js +8 -0
  369. package/dist/exports/client.js.map +1 -0
  370. package/dist/exports/rsc.d.ts +18 -0
  371. package/dist/exports/rsc.d.ts.map +1 -0
  372. package/dist/exports/rsc.js +5 -0
  373. package/dist/exports/rsc.js.map +1 -0
  374. package/dist/fields/color-picker/ColorCell.js +19 -0
  375. package/dist/fields/color-picker/ColorCell.js.map +1 -0
  376. package/dist/fields/color-picker/ColorField.js +131 -0
  377. package/dist/fields/color-picker/ColorField.js.map +1 -0
  378. package/dist/fields/color-picker/index.js +26 -0
  379. package/dist/fields/color-picker/index.js.map +1 -0
  380. package/dist/fields/color-picker/styles.scss +113 -0
  381. package/dist/fields/color-picker/utils.js +6 -0
  382. package/dist/fields/color-picker/utils.js.map +1 -0
  383. package/dist/fields/index.js +3 -0
  384. package/dist/fields/index.js.map +1 -0
  385. package/dist/globals/App.js +97 -0
  386. package/dist/globals/App.js.map +1 -0
  387. package/dist/globals/Locale.js +82 -0
  388. package/dist/globals/Locale.js.map +1 -0
  389. package/dist/globals/LocaleRowLabel.js +16 -0
  390. package/dist/globals/LocaleRowLabel.js.map +1 -0
  391. package/dist/index.d.ts +891 -844
  392. package/dist/index.d.ts.map +1 -0
  393. package/dist/index.js +11 -9263
  394. package/dist/index.js.map +1 -0
  395. package/dist/mapper.js +199 -0
  396. package/dist/mapper.js.map +1 -0
  397. package/dist/options.js +76 -0
  398. package/dist/options.js.map +1 -0
  399. package/dist/test/blocks/blocks.js +13 -0
  400. package/dist/test/blocks/blocks.js.map +1 -0
  401. package/dist/test/collections/ActionCollection.js +12 -0
  402. package/dist/test/collections/ActionCollection.js.map +1 -0
  403. package/dist/test/collections/AdminCollection.js +18 -0
  404. package/dist/test/collections/AdminCollection.js.map +1 -0
  405. package/dist/test/collections/BlockCollection.js +16 -0
  406. package/dist/test/collections/BlockCollection.js.map +1 -0
  407. package/dist/test/collections/Collection.js +12 -0
  408. package/dist/test/collections/Collection.js.map +1 -0
  409. package/dist/test/collections/FieldCollection.js +84 -0
  410. package/dist/test/collections/FieldCollection.js.map +1 -0
  411. package/dist/test/collections/GlobalCollection.js +12 -0
  412. package/dist/test/collections/GlobalCollection.js.map +1 -0
  413. package/dist/test/collections/LinkCollection.js +12 -0
  414. package/dist/test/collections/LinkCollection.js.map +1 -0
  415. package/dist/test/collections/MenuCollection.js +12 -0
  416. package/dist/test/collections/MenuCollection.js.map +1 -0
  417. package/dist/test/collections/PageCollection.js +12 -0
  418. package/dist/test/collections/PageCollection.js.map +1 -0
  419. package/dist/test/collections/RoleCollection.js +19 -0
  420. package/dist/test/collections/RoleCollection.js.map +1 -0
  421. package/dist/test/collections/RoleFieldCollection.js +40 -0
  422. package/dist/test/collections/RoleFieldCollection.js.map +1 -0
  423. package/dist/test/collections/StaticCollection.js +56 -0
  424. package/dist/test/collections/StaticCollection.js.map +1 -0
  425. package/dist/test/collections/StorePageCollection.js +12 -0
  426. package/dist/test/collections/StorePageCollection.js.map +1 -0
  427. package/dist/test/collections/TenantCollection.js +22 -0
  428. package/dist/test/collections/TenantCollection.js.map +1 -0
  429. package/dist/test/collections/TranslationCollection.js +16 -0
  430. package/dist/test/collections/TranslationCollection.js.map +1 -0
  431. package/dist/test/collections/TypeACollection.js +18 -0
  432. package/dist/test/collections/TypeACollection.js.map +1 -0
  433. package/dist/test/collections/TypeBCollection.js +18 -0
  434. package/dist/test/collections/TypeBCollection.js.map +1 -0
  435. package/dist/test/collections/actions/NewsletterAction.js +29 -0
  436. package/dist/test/collections/actions/NewsletterAction.js.map +1 -0
  437. package/dist/test/collections/actions/RegisterAction.js +44 -0
  438. package/dist/test/collections/actions/RegisterAction.js.map +1 -0
  439. package/dist/test/collections/users/EndUsers.js +40 -0
  440. package/dist/test/collections/users/EndUsers.js.map +1 -0
  441. package/dist/test/collections/users/Users.js +20 -0
  442. package/dist/test/collections/users/Users.js.map +1 -0
  443. package/dist/test/index.js +32 -0
  444. package/dist/test/index.js.map +1 -0
  445. package/dist/test/payload.config.js +106 -0
  446. package/dist/test/payload.config.js.map +1 -0
  447. package/dist/test/utils.js +52 -0
  448. package/dist/test/utils.js.map +1 -0
  449. package/dist/translations.js +467 -0
  450. package/dist/translations.js.map +1 -0
  451. package/dist/types.js +31 -0
  452. package/dist/types.js.map +1 -0
  453. package/package.json +119 -37
  454. package/scss/styles.scss +0 -1
  455. package/dist/index.css +0 -796
@@ -0,0 +1,67 @@
1
+ import { EventEmitter } from './EventEmitter';
2
+ export class DataTreeProvider {
3
+ data;
4
+ onDidChangeTreeDataEmitter = new EventEmitter();
5
+ onSetData;
6
+ constructor(items, onSetData){
7
+ this.data = {
8
+ items: {
9
+ ...items
10
+ }
11
+ };
12
+ this.onSetData = onSetData;
13
+ }
14
+ async getTreeItem(itemId) {
15
+ // console.log('getTreeItem', itemId);
16
+ return this.data.items[itemId];
17
+ }
18
+ async onChangeItemChildren(itemId, children) {
19
+ // console.log('onChangeItemChildren', itemId);
20
+ /*
21
+ const items = { ...this.data.items };
22
+ const item = { ...items[itemId] };
23
+ item.children = [...children];
24
+ items[itemId] = item;
25
+ this.data = { items };
26
+ console.log(this.data);
27
+ */ this.data.items[itemId].children = children;
28
+ this.onItemsDidChange_(this.data.items);
29
+ this.onDidChangeTreeDataEmitter.emit([
30
+ itemId
31
+ ]);
32
+ }
33
+ async onRenameItem(item, name) {
34
+ // console.log('onRenameItem', item, name);
35
+ if (typeof this.onSetData === 'function') {
36
+ /*
37
+ const items = { ...this.data.items };
38
+ const newItem = { ...item };
39
+ items[item.index] = this.onSetData(newItem, {
40
+ ...newItem.data,
41
+ title: name
42
+ });
43
+ this.data = { items };
44
+ */ this.data.items[item.index] = this.onSetData(item, {
45
+ ...item.data,
46
+ title: name
47
+ });
48
+ this.onItemsDidChange_(this.data.items);
49
+ // this.onDidChangeTreeDataEmitter.emit(item.index);
50
+ }
51
+ }
52
+ onDidChangeTreeData(callback) {
53
+ // console.log('onDidChangeTreeData', callback);
54
+ const handlerId = this.onDidChangeTreeDataEmitter.on((payload)=>callback(payload));
55
+ return {
56
+ dispose: ()=>this.onDidChangeTreeDataEmitter.off(handlerId)
57
+ };
58
+ }
59
+ onItemsDidChange_(items) {
60
+ console.log('onItemsDidChange_', items);
61
+ }
62
+ onItemsDidChange(callback) {
63
+ this.onItemsDidChange_ = callback;
64
+ }
65
+ }
66
+
67
+ //# sourceMappingURL=DataTreeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/DataTree/DataTreeProvider.ts"],"sourcesContent":["import { ReactNode } from 'react';\r\nimport { Disposable, ExplicitDataSource, TreeDataProvider, TreeItem, TreeItemIndex } from 'react-complex-tree';\r\nimport { EventEmitter } from './EventEmitter';\r\n\r\nexport type TreeItemData = {\r\n title: string;\r\n extra?: ReactNode;\r\n};\r\n\r\nexport class DataTreeProvider<T extends TreeItemData> implements TreeDataProvider {\r\n private data: ExplicitDataSource;\r\n private onDidChangeTreeDataEmitter = new EventEmitter<TreeItemIndex[]>();\r\n private onSetData?: (item: TreeItem<T>, data: T) => TreeItem<T>;\r\n\r\n constructor(\r\n items: Record<TreeItemIndex, TreeItem<T>>,\r\n onSetData?: (item: TreeItem<T>, data: T) => TreeItem<T>\r\n ) {\r\n this.data = { items: { ...items } };\r\n this.onSetData = onSetData;\r\n }\r\n\r\n public async getTreeItem(itemId: TreeItemIndex): Promise<TreeItem> {\r\n // console.log('getTreeItem', itemId);\r\n return this.data.items[itemId]!;\r\n }\r\n\r\n public async onChangeItemChildren(\r\n itemId: TreeItemIndex,\r\n children: TreeItemIndex[]\r\n ): Promise<void> {\r\n // console.log('onChangeItemChildren', itemId);\r\n /*\r\n const items = { ...this.data.items };\r\n const item = { ...items[itemId] };\r\n item.children = [...children];\r\n items[itemId] = item;\r\n this.data = { items };\r\n console.log(this.data);\r\n */\r\n this.data.items[itemId]!.children = children;\r\n this.onItemsDidChange_(this.data.items);\r\n this.onDidChangeTreeDataEmitter.emit([itemId]);\r\n }\r\n\r\n public async onRenameItem(item: TreeItem<T>, name: string): Promise<void> {\r\n // console.log('onRenameItem', item, name);\r\n if (typeof this.onSetData === 'function') {\r\n /*\r\n const items = { ...this.data.items };\r\n const newItem = { ...item };\r\n items[item.index] = this.onSetData(newItem, {\r\n ...newItem.data,\r\n title: name\r\n });\r\n this.data = { items };\r\n */\r\n this.data.items[item.index] = this.onSetData(item, {\r\n ...item.data,\r\n title: name,\r\n });\r\n this.onItemsDidChange_(this.data.items);\r\n // this.onDidChangeTreeDataEmitter.emit(item.index);\r\n }\r\n }\r\n\r\n public onDidChangeTreeData(callback: (changedItemIds: TreeItemIndex[]) => void): Disposable {\r\n // console.log('onDidChangeTreeData', callback);\r\n const handlerId = this.onDidChangeTreeDataEmitter.on(payload => callback(payload));\r\n return {\r\n dispose: () => this.onDidChangeTreeDataEmitter.off(handlerId),\r\n };\r\n }\r\n\r\n public onItemsDidChange_(items: Record<TreeItemIndex, TreeItem<T>>): void {\r\n console.log('onItemsDidChange_', items);\r\n }\r\n\r\n public onItemsDidChange(callback: (items: Record<TreeItemIndex, TreeItem<T>>) => void): void {\r\n this.onItemsDidChange_ = callback;\r\n }\r\n}\r\n"],"names":["EventEmitter","DataTreeProvider","data","onDidChangeTreeDataEmitter","onSetData","constructor","items","getTreeItem","itemId","onChangeItemChildren","children","onItemsDidChange_","emit","onRenameItem","item","name","index","title","onDidChangeTreeData","callback","handlerId","on","payload","dispose","off","console","log","onItemsDidChange"],"mappings":"AAEA,SAASA,YAAY,QAAQ,iBAAiB;AAO9C,OAAO,MAAMC;IACHC,KAAyB;IACzBC,6BAA6B,IAAIH,eAAgC;IACjEI,UAAwD;IAEhEC,YACEC,KAAyC,EACzCF,SAAuD,CACvD;QACA,IAAI,CAACF,IAAI,GAAG;YAAEI,OAAO;gBAAE,GAAGA,KAAK;YAAC;QAAE;QAClC,IAAI,CAACF,SAAS,GAAGA;IACnB;IAEA,MAAaG,YAAYC,MAAqB,EAAqB;QACjE,sCAAsC;QACtC,OAAO,IAAI,CAACN,IAAI,CAACI,KAAK,CAACE,OAAO;IAChC;IAEA,MAAaC,qBACXD,MAAqB,EACrBE,QAAyB,EACV;QACf,+CAA+C;QAC/C;;;;;;;IAOA,GACA,IAAI,CAACR,IAAI,CAACI,KAAK,CAACE,OAAO,CAAEE,QAAQ,GAAGA;QACpC,IAAI,CAACC,iBAAiB,CAAC,IAAI,CAACT,IAAI,CAACI,KAAK;QACtC,IAAI,CAACH,0BAA0B,CAACS,IAAI,CAAC;YAACJ;SAAO;IAC/C;IAEA,MAAaK,aAAaC,IAAiB,EAAEC,IAAY,EAAiB;QACxE,2CAA2C;QAC3C,IAAI,OAAO,IAAI,CAACX,SAAS,KAAK,YAAY;YACxC;;;;;;;;MAQA,GACA,IAAI,CAACF,IAAI,CAACI,KAAK,CAACQ,KAAKE,KAAK,CAAC,GAAG,IAAI,CAACZ,SAAS,CAACU,MAAM;gBACjD,GAAGA,KAAKZ,IAAI;gBACZe,OAAOF;YACT;YACA,IAAI,CAACJ,iBAAiB,CAAC,IAAI,CAACT,IAAI,CAACI,KAAK;QACtC,oDAAoD;QACtD;IACF;IAEOY,oBAAoBC,QAAmD,EAAc;QAC1F,gDAAgD;QAChD,MAAMC,YAAY,IAAI,CAACjB,0BAA0B,CAACkB,EAAE,CAACC,CAAAA,UAAWH,SAASG;QACzE,OAAO;YACLC,SAAS,IAAM,IAAI,CAACpB,0BAA0B,CAACqB,GAAG,CAACJ;QACrD;IACF;IAEOT,kBAAkBL,KAAyC,EAAQ;QACxEmB,QAAQC,GAAG,CAAC,qBAAqBpB;IACnC;IAEOqB,iBAAiBR,QAA6D,EAAQ;QAC3F,IAAI,CAACR,iBAAiB,GAAGQ;IAC3B;AACF"}
@@ -0,0 +1,38 @@
1
+ export class EventEmitter {
2
+ handlerCount = 0;
3
+ handlers = [];
4
+ options;
5
+ constructor(options){
6
+ this.options = options;
7
+ }
8
+ get numberOfHandlers() {
9
+ return this.handlers.filter((h)=>!!h).length;
10
+ }
11
+ async emit(payload) {
12
+ const promises = [];
13
+ this.options?.logger?.('emit', payload);
14
+ for (const handler of this.handlers){
15
+ if (handler) {
16
+ const res = handler(payload);
17
+ if (typeof res?.then === 'function') {
18
+ promises.push(res);
19
+ }
20
+ }
21
+ }
22
+ await Promise.all(promises);
23
+ }
24
+ on(handler) {
25
+ this.options?.logger?.('on');
26
+ this.handlers.push(handler);
27
+ return this.handlerCount++;
28
+ }
29
+ off(handlerId) {
30
+ this.delete(handlerId);
31
+ }
32
+ delete(handlerId) {
33
+ this.options?.logger?.('off');
34
+ this.handlers[handlerId] = null;
35
+ }
36
+ }
37
+
38
+ //# sourceMappingURL=EventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/DataTree/EventEmitter.ts"],"sourcesContent":["export interface EventEmitterOptions<EventPayload = any> {\r\n logger?: (log: string, payload?: EventPayload) => void;\r\n}\r\n\r\nexport type EventHandler<EventPayload> =\r\n | ((payload: EventPayload) => Promise<void> | void)\r\n | null\r\n | undefined;\r\n\r\nexport class EventEmitter<EventPayload> {\r\n private handlerCount = 0;\r\n\r\n private handlers: Array<EventHandler<EventPayload>> = [];\r\n\r\n private options?: EventEmitterOptions<EventPayload>;\r\n\r\n constructor(options?: EventEmitterOptions<EventPayload>) {\r\n this.options = options;\r\n }\r\n\r\n public get numberOfHandlers() {\r\n return this.handlers.filter(h => !!h).length;\r\n }\r\n\r\n public async emit(payload: EventPayload): Promise<void> {\r\n const promises: Array<Promise<void>> = [];\r\n\r\n this.options?.logger?.('emit', payload);\r\n\r\n for (const handler of this.handlers) {\r\n if (handler) {\r\n const res = handler(payload) as Promise<void>;\r\n if (typeof res?.then === 'function') {\r\n promises.push(res);\r\n }\r\n }\r\n }\r\n\r\n await Promise.all(promises);\r\n }\r\n\r\n public on(handler: EventHandler<EventPayload>): number {\r\n this.options?.logger?.('on');\r\n this.handlers.push(handler);\r\n\r\n return this.handlerCount++;\r\n }\r\n\r\n public off(handlerId: number) {\r\n this.delete(handlerId);\r\n }\r\n\r\n public delete(handlerId: number) {\r\n this.options?.logger?.('off');\r\n this.handlers[handlerId] = null;\r\n }\r\n}\r\n"],"names":["EventEmitter","handlerCount","handlers","options","constructor","numberOfHandlers","filter","h","length","emit","payload","promises","logger","handler","res","then","push","Promise","all","on","off","handlerId","delete"],"mappings":"AASA,OAAO,MAAMA;IACHC,eAAe,EAAE;IAEjBC,WAA8C,EAAE,CAAC;IAEjDC,QAA4C;IAEpDC,YAAYD,OAA2C,CAAE;QACvD,IAAI,CAACA,OAAO,GAAGA;IACjB;IAEA,IAAWE,mBAAmB;QAC5B,OAAO,IAAI,CAACH,QAAQ,CAACI,MAAM,CAACC,CAAAA,IAAK,CAAC,CAACA,GAAGC,MAAM;IAC9C;IAEA,MAAaC,KAAKC,OAAqB,EAAiB;QACtD,MAAMC,WAAiC,EAAE;QAEzC,IAAI,CAACR,OAAO,EAAES,SAAS,QAAQF;QAE/B,KAAK,MAAMG,WAAW,IAAI,CAACX,QAAQ,CAAE;YACnC,IAAIW,SAAS;gBACX,MAAMC,MAAMD,QAAQH;gBACpB,IAAI,OAAOI,KAAKC,SAAS,YAAY;oBACnCJ,SAASK,IAAI,CAACF;gBAChB;YACF;QACF;QAEA,MAAMG,QAAQC,GAAG,CAACP;IACpB;IAEOQ,GAAGN,OAAmC,EAAU;QACrD,IAAI,CAACV,OAAO,EAAES,SAAS;QACvB,IAAI,CAACV,QAAQ,CAACc,IAAI,CAACH;QAEnB,OAAO,IAAI,CAACZ,YAAY;IAC1B;IAEOmB,IAAIC,SAAiB,EAAE;QAC5B,IAAI,CAACC,MAAM,CAACD;IACd;IAEOC,OAAOD,SAAiB,EAAE;QAC/B,IAAI,CAAClB,OAAO,EAAES,SAAS;QACvB,IAAI,CAACV,QAAQ,CAACmB,UAAU,GAAG;IAC7B;AACF"}
@@ -0,0 +1,52 @@
1
+ import { useState } from 'react';
2
+ export function useDataTree(items) {
3
+ const [data, setData] = useState({
4
+ items
5
+ });
6
+ return {
7
+ getTreeItem: async (itemId)=>{
8
+ console.log('getTreeItem', itemId);
9
+ return data.items[itemId];
10
+ },
11
+ onChangeItemChildren: async (itemId, children)=>{
12
+ console.log('onChangeItemChildren', itemId);
13
+ const items = {
14
+ ...data.items
15
+ };
16
+ const item = {
17
+ ...items[itemId]
18
+ };
19
+ item.children = children;
20
+ items[itemId] = item;
21
+ setData({
22
+ items
23
+ });
24
+ // this.data.items[itemId].children = children;
25
+ // this.onItemsDidChange_(items);
26
+ // this.onDidChangeTreeDataEmitter.emit([itemId]);
27
+ },
28
+ onRenameItem: async (item, name)=>{
29
+ console.log('onRenameItem', item, name);
30
+ const items = {
31
+ ...data.items
32
+ };
33
+ const newItem = {
34
+ ...item
35
+ };
36
+ newItem.data = name;
37
+ items[item.index] = newItem;
38
+ setData({
39
+ items
40
+ });
41
+ // this.data.items[item.index] = this.setItemName(item, name);
42
+ // this.onItemsDidChange_(items);
43
+ // this.onDidChangeTreeDataEmitter.emit(item.index);
44
+ },
45
+ onDidChangeTreeData: (listener)=>{
46
+ console.log('onDidChangeTreeData', listener);
47
+ return null;
48
+ }
49
+ };
50
+ }
51
+
52
+ //# sourceMappingURL=useDataTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/DataTree/useDataTree.ts"],"sourcesContent":["import { useState } from 'react';\r\nimport { TreeDataProvider, TreeItem, TreeItemIndex } from 'react-complex-tree';\r\n\r\nexport function useDataTree<T = any>(items: Record<TreeItemIndex, TreeItem<T>>): TreeDataProvider {\r\n\r\n const [data, setData] = useState({ items });\r\n\r\n return {\r\n getTreeItem: async (itemId: TreeItemIndex): Promise<TreeItem<T>> => {\r\n console.log('getTreeItem', itemId);\r\n return data.items[itemId]!;\r\n },\r\n onChangeItemChildren: async (itemId: TreeItemIndex, children: TreeItemIndex[]): Promise<void> => {\r\n console.log('onChangeItemChildren', itemId);\r\n const items = { ...data.items };\r\n const item = { ...items[itemId]! };\r\n item.children = children;\r\n items[itemId] = item;\r\n setData({ items });\r\n // this.data.items[itemId].children = children;\r\n // this.onItemsDidChange_(items);\r\n // this.onDidChangeTreeDataEmitter.emit([itemId]);\r\n },\r\n onRenameItem: async (item: TreeItem<T>, name: string): Promise<void> => {\r\n console.log('onRenameItem', item, name);\r\n const items = { ...data.items };\r\n const newItem = { ...item };\r\n newItem.data = name as T;\r\n items[item.index] = newItem;\r\n setData({ items });\r\n // this.data.items[item.index] = this.setItemName(item, name);\r\n // this.onItemsDidChange_(items);\r\n // this.onDidChangeTreeDataEmitter.emit(item.index);\r\n },\r\n onDidChangeTreeData: (listener: (changedItemIds: TreeItemIndex[]) => void) => {\r\n console.log('onDidChangeTreeData', listener);\r\n return null as any;\r\n },\r\n };\r\n}\r\n"],"names":["useState","useDataTree","items","data","setData","getTreeItem","itemId","console","log","onChangeItemChildren","children","item","onRenameItem","name","newItem","index","onDidChangeTreeData","listener"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,QAAQ;AAGjC,OAAO,SAASC,YAAqBC,KAAyC;IAE5E,MAAM,CAACC,MAAMC,QAAQ,GAAGJ,SAAS;QAAEE;IAAM;IAEzC,OAAO;QACLG,aAAa,OAAOC;YAClBC,QAAQC,GAAG,CAAC,eAAeF;YAC3B,OAAOH,KAAKD,KAAK,CAACI,OAAO;QAC3B;QACAG,sBAAsB,OAAOH,QAAuBI;YAClDH,QAAQC,GAAG,CAAC,wBAAwBF;YACpC,MAAMJ,QAAQ;gBAAE,GAAGC,KAAKD,KAAK;YAAC;YAC9B,MAAMS,OAAO;gBAAE,GAAGT,KAAK,CAACI,OAAO;YAAE;YACjCK,KAAKD,QAAQ,GAAGA;YAChBR,KAAK,CAACI,OAAO,GAAGK;YAChBP,QAAQ;gBAAEF;YAAM;QAChB,+CAA+C;QAC/C,iCAAiC;QACjC,kDAAkD;QACpD;QACAU,cAAc,OAAOD,MAAmBE;YACtCN,QAAQC,GAAG,CAAC,gBAAgBG,MAAME;YAClC,MAAMX,QAAQ;gBAAE,GAAGC,KAAKD,KAAK;YAAC;YAC9B,MAAMY,UAAU;gBAAE,GAAGH,IAAI;YAAC;YAC1BG,QAAQX,IAAI,GAAGU;YACfX,KAAK,CAACS,KAAKI,KAAK,CAAC,GAAGD;YACpBV,QAAQ;gBAAEF;YAAM;QAChB,8DAA8D;QAC9D,iCAAiC;QACjC,oDAAoD;QACtD;QACAc,qBAAqB,CAACC;YACpBV,QAAQC,GAAG,CAAC,uBAAuBS;YACnC,OAAO;QACT;IACF;AACF"}
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { DefaultListView } from '@payloadcms/ui';
4
+ import React from 'react';
5
+ export const DecoratedList = ({ props, before, after })=>{
6
+ return /*#__PURE__*/ _jsxs(_Fragment, {
7
+ children: [
8
+ before && before,
9
+ /*#__PURE__*/ _jsx(DefaultListView, {
10
+ ...props
11
+ }),
12
+ after && after
13
+ ]
14
+ });
15
+ };
16
+
17
+ //# sourceMappingURL=DecoratedList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/DecoratedList/DecoratedList.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { DefaultListView } from '@payloadcms/ui';\r\nimport type { ListViewClientProps } from 'payload';\r\nimport React, { ReactNode } from 'react';\r\n\r\nexport type DecoratedListProps = {\r\n props: ListViewClientProps,\r\n before?: ReactNode,\r\n after?: ReactNode,\r\n};\r\n\r\nexport const DecoratedList: React.FC<DecoratedListProps> = ({ props, before, after }) => {\r\n return (\r\n <>\r\n {before && before}\r\n <DefaultListView {...props} />\r\n {after && after}\r\n </>\r\n );\r\n};\r\n"],"names":["DefaultListView","React","DecoratedList","props","before","after"],"mappings":"AAAA;;AAEA,SAASA,eAAe,QAAQ,iBAAiB;AAEjD,OAAOC,WAA0B,QAAQ;AAQzC,OAAO,MAAMC,gBAA8C,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAEC,KAAK,EAAE;IAClF,qBACE;;YACGD,UAAUA;0BACX,KAACJ;gBAAiB,GAAGG,KAAK;;YACzBE,SAASA;;;AAGhB,EAAE"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { LOGO } from '../LogoServer/LogoServer';
4
+ import './IconServer.scss';
5
+ export const IconServer = ()=>{
6
+ return /*#__PURE__*/ _jsx("div", {
7
+ className: "icon",
8
+ children: /*#__PURE__*/ _jsx("img", {
9
+ src: LOGO,
10
+ alt: "Bowl Logo"
11
+ })
12
+ });
13
+ };
14
+
15
+ //# sourceMappingURL=IconServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/IconServer/IconServer.tsx"],"sourcesContent":["import React from 'react';\r\nimport { LOGO } from '../LogoServer/LogoServer';\r\nimport './IconServer.scss';\r\n\r\nexport const IconServer: React.FC = () => {\r\n return (\r\n <div className=\"icon\">\r\n <img src={LOGO} alt=\"Bowl Logo\" />\r\n </div>\r\n );\r\n};\r\n"],"names":["React","LOGO","IconServer","div","className","img","src","alt"],"mappings":";AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,IAAI,QAAQ,2BAA2B;AAChD,OAAO,oBAAoB;AAE3B,OAAO,MAAMC,aAAuB;IAClC,qBACE,KAACC;QAAIC,WAAU;kBACb,cAAA,KAACC;YAAIC,KAAKL;YAAMM,KAAI;;;AAG1B,EAAE"}
@@ -0,0 +1,14 @@
1
+ .icon {
2
+ flex-shrink: 0;
3
+ width: 18px;
4
+ height: 18px;
5
+ display: flex;
6
+ justify-content: center;
7
+ align-items: center;
8
+
9
+ img {
10
+ width: 18px;
11
+ height: 18px;
12
+ margin: auto;
13
+ }
14
+ }
@@ -0,0 +1,91 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Button, Modal, useConfig, useModal, useTranslation } from '@payloadcms/ui';
4
+ import { getRouteResolver } from '@websolutespa/payload-utils';
5
+ import React from 'react';
6
+ import { DecoratedList } from '../DecoratedList/DecoratedList';
7
+ import './ImportExportList.scss';
8
+ import { ImportModal } from './ImportModal';
9
+ const baseClass = 'import-export-list';
10
+ export const ImportExportList = ({ parser, exampleCSV = '', ...props })=>{
11
+ // !!! check translations
12
+ const { t } = useTranslation();
13
+ const slug = props.collectionSlug;
14
+ const { config } = useConfig();
15
+ const routeResolver = getRouteResolver(config);
16
+ const exportUrl = routeResolver.api(`/${slug}/export`);
17
+ const { openModal, isModalOpen } = useModal();
18
+ const modalKey = `${slug}-import-modal`;
19
+ const isModalOpened = isModalOpen(modalKey);
20
+ const downloadExampleCSV = ()=>{
21
+ const element = document.createElement('a');
22
+ element.style.position = 'absolute';
23
+ const file = new Blob([
24
+ exampleCSV
25
+ ], {
26
+ type: 'text/plain'
27
+ });
28
+ element.href = URL.createObjectURL(file);
29
+ element.download = 'example.csv';
30
+ document.body.appendChild(element); // Required for this to work in FireFox
31
+ element.click();
32
+ element.remove();
33
+ };
34
+ return /*#__PURE__*/ _jsx(DecoratedList, {
35
+ props: props,
36
+ after: /*#__PURE__*/ _jsxs(_Fragment, {
37
+ children: [
38
+ /*#__PURE__*/ _jsxs("div", {
39
+ className: "gutter--left gutter--right import-export-list__actions",
40
+ children: [
41
+ /*#__PURE__*/ _jsx(Button, {
42
+ className: "pill pill--style-light pill--has-link pill--has-action",
43
+ onClick: ()=>openModal(modalKey),
44
+ children: /*#__PURE__*/ _jsx("span", {
45
+ children: t('importExport:importCSV')
46
+ })
47
+ }),
48
+ /*#__PURE__*/ _jsx("a", {
49
+ className: "pill pill--style-light pill--has-link pill--has-action",
50
+ href: exportUrl,
51
+ download: `${slug}.csv`,
52
+ children: /*#__PURE__*/ _jsx("span", {
53
+ children: t('importExport:exportCSV')
54
+ })
55
+ }),
56
+ exampleCSV && /*#__PURE__*/ _jsx(Button, {
57
+ className: "pill pill--style-light pill--has-link pill--has-action",
58
+ onClick: ()=>downloadExampleCSV(),
59
+ children: /*#__PURE__*/ _jsx("span", {
60
+ children: t('importExport:exampleCSV')
61
+ })
62
+ })
63
+ ]
64
+ }),
65
+ /*#__PURE__*/ _jsx(Modal, {
66
+ slug: modalKey,
67
+ className: `${baseClass}__modal`,
68
+ children: isModalOpened && /*#__PURE__*/ _jsx(ImportModal, {
69
+ parser: parser,
70
+ slug: props.collectionSlug
71
+ })
72
+ })
73
+ ]
74
+ })
75
+ });
76
+ };
77
+ export function importExportListWithParser(parser, exampleCSV) {
78
+ // console.log('importExportListWithParser', 'parser', parser);
79
+ const WithParserImportExportList = ({ ...props })=>{
80
+ return /*#__PURE__*/ _jsx(ImportExportList, {
81
+ parser: parser,
82
+ exampleCSV: exampleCSV,
83
+ ...props
84
+ });
85
+ };
86
+ // WithParserImportExportList.displayName = `WithParserImportExportList(${getDisplayName(WrappedComponent)})`;
87
+ WithParserImportExportList.displayName = 'WithParserImportExportList(ImportExportList)';
88
+ return WithParserImportExportList;
89
+ }
90
+
91
+ //# sourceMappingURL=ImportExportList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/ImportExport/ImportExportList.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { Button, Modal, useConfig, useModal, useTranslation } from '@payloadcms/ui';\r\nimport { getRouteResolver } from '@websolutespa/payload-utils';\r\nimport type { ListViewClientProps } from 'payload';\r\nimport React from 'react';\r\nimport { DecoratedList } from '../DecoratedList/DecoratedList';\r\nimport './ImportExportList.scss';\r\nimport { ImportModal } from './ImportModal';\r\nimport { IImportItem } from './types';\r\n\r\nconst baseClass = 'import-export-list';\r\n\r\nexport type ImportExportListProps<T = any> = ListViewClientProps & {\r\n parser?: (items: IImportItem[]) => T[];\r\n exampleCSV?: string;\r\n};\r\n\r\nexport const ImportExportList: React.FC<ImportExportListProps> = ({\r\n parser,\r\n exampleCSV = '',\r\n ...props\r\n}) => {\r\n // !!! check translations\r\n const { t } = useTranslation<any, any>();\r\n\r\n const slug = props.collectionSlug;\r\n\r\n const { config } = useConfig();\r\n const routeResolver = getRouteResolver(config);\r\n\r\n const exportUrl = routeResolver.api(`/${slug}/export`);\r\n\r\n const { openModal, isModalOpen } = useModal();\r\n const modalKey = `${slug}-import-modal`;\r\n const isModalOpened = isModalOpen(modalKey);\r\n\r\n const downloadExampleCSV = () => {\r\n const element = document.createElement('a');\r\n element.style.position = 'absolute';\r\n const file = new Blob([exampleCSV], {type: 'text/plain'});\r\n element.href = URL.createObjectURL(file);\r\n element.download = 'example.csv';\r\n document.body.appendChild(element); // Required for this to work in FireFox\r\n element.click();\r\n element.remove();\r\n };\r\n\r\n return (\r\n <DecoratedList props={props}\r\n after={(\r\n <>\r\n {(\r\n <div className=\"gutter--left gutter--right import-export-list__actions\">\r\n <Button className=\"pill pill--style-light pill--has-link pill--has-action\" onClick={() => openModal(modalKey)}>\r\n <span>{t('importExport:importCSV')}</span>\r\n </Button>\r\n <a className=\"pill pill--style-light pill--has-link pill--has-action\" href={exportUrl} download={`${slug}.csv`}>\r\n <span>{t('importExport:exportCSV')}</span>\r\n </a>\r\n {exampleCSV && (\r\n <Button className=\"pill pill--style-light pill--has-link pill--has-action\" onClick={() => downloadExampleCSV()}>\r\n <span>{t('importExport:exampleCSV')}</span>\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n <Modal slug={modalKey} className={`${baseClass}__modal`}>\r\n {isModalOpened && (\r\n <ImportModal parser={parser} slug={props.collectionSlug} />\r\n )}\r\n </Modal>\r\n </>\r\n )}\r\n />\r\n );\r\n};\r\n\r\nexport function importExportListWithParser<T>(\r\n parser: (items: IImportItem[]) => T[],\r\n exampleCSV?: string\r\n) {\r\n // console.log('importExportListWithParser', 'parser', parser);\r\n const WithParserImportExportList: React.FC<ListViewClientProps> = ({\r\n ...props\r\n }) => {\r\n return (\r\n <ImportExportList parser={parser} exampleCSV={exampleCSV} {...props} />\r\n );\r\n };\r\n // WithParserImportExportList.displayName = `WithParserImportExportList(${getDisplayName(WrappedComponent)})`;\r\n WithParserImportExportList.displayName = 'WithParserImportExportList(ImportExportList)';\r\n return WithParserImportExportList;\r\n}\r\n"],"names":["Button","Modal","useConfig","useModal","useTranslation","getRouteResolver","React","DecoratedList","ImportModal","baseClass","ImportExportList","parser","exampleCSV","props","t","slug","collectionSlug","config","routeResolver","exportUrl","api","openModal","isModalOpen","modalKey","isModalOpened","downloadExampleCSV","element","document","createElement","style","position","file","Blob","type","href","URL","createObjectURL","download","body","appendChild","click","remove","after","div","className","onClick","span","a","importExportListWithParser","WithParserImportExportList","displayName"],"mappings":"AAAA;;AAEA,SAASA,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,cAAc,QAAQ,iBAAiB;AACpF,SAASC,gBAAgB,QAAQ,8BAA8B;AAE/D,OAAOC,WAAW,QAAQ;AAC1B,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,OAAO,0BAA0B;AACjC,SAASC,WAAW,QAAQ,gBAAgB;AAG5C,MAAMC,YAAY;AAOlB,OAAO,MAAMC,mBAAoD,CAAC,EAChEC,MAAM,EACNC,aAAa,EAAE,EACf,GAAGC,OACJ;IACC,yBAAyB;IACzB,MAAM,EAAEC,CAAC,EAAE,GAAGV;IAEd,MAAMW,OAAOF,MAAMG,cAAc;IAEjC,MAAM,EAAEC,MAAM,EAAE,GAAGf;IACnB,MAAMgB,gBAAgBb,iBAAiBY;IAEvC,MAAME,YAAYD,cAAcE,GAAG,CAAC,CAAC,CAAC,EAAEL,KAAK,OAAO,CAAC;IAErD,MAAM,EAAEM,SAAS,EAAEC,WAAW,EAAE,GAAGnB;IACnC,MAAMoB,WAAW,CAAC,EAAER,KAAK,aAAa,CAAC;IACvC,MAAMS,gBAAgBF,YAAYC;IAElC,MAAME,qBAAqB;QACzB,MAAMC,UAAUC,SAASC,aAAa,CAAC;QACvCF,QAAQG,KAAK,CAACC,QAAQ,GAAG;QACzB,MAAMC,OAAO,IAAIC,KAAK;YAACpB;SAAW,EAAE;YAACqB,MAAM;QAAY;QACvDP,QAAQQ,IAAI,GAAGC,IAAIC,eAAe,CAACL;QACnCL,QAAQW,QAAQ,GAAG;QACnBV,SAASW,IAAI,CAACC,WAAW,CAACb,UAAU,uCAAuC;QAC3EA,QAAQc,KAAK;QACbd,QAAQe,MAAM;IAChB;IAEA,qBACE,KAAClC;QAAcM,OAAOA;QACpB6B,qBACE;;8BAEI,MAACC;oBAAIC,WAAU;;sCACb,KAAC5C;4BAAO4C,WAAU;4BAAyDC,SAAS,IAAMxB,UAAUE;sCAClG,cAAA,KAACuB;0CAAMhC,EAAE;;;sCAEX,KAACiC;4BAAEH,WAAU;4BAAyDV,MAAMf;4BAAWkB,UAAU,CAAC,EAAEtB,KAAK,IAAI,CAAC;sCAC5G,cAAA,KAAC+B;0CAAMhC,EAAE;;;wBAEVF,4BACC,KAACZ;4BAAO4C,WAAU;4BAAyDC,SAAS,IAAMpB;sCACxF,cAAA,KAACqB;0CAAMhC,EAAE;;;;;8BAKjB,KAACb;oBAAMc,MAAMQ;oBAAUqB,WAAW,CAAC,EAAEnC,UAAU,OAAO,CAAC;8BACpDe,+BACC,KAAChB;wBAAYG,QAAQA;wBAAQI,MAAMF,MAAMG,cAAc;;;;;;AAOrE,EAAE;AAEF,OAAO,SAASgC,2BACdrC,MAAqC,EACrCC,UAAmB;IAEnB,+DAA+D;IAC/D,MAAMqC,6BAA4D,CAAC,EACjE,GAAGpC,OACJ;QACC,qBACE,KAACH;YAAiBC,QAAQA;YAAQC,YAAYA;YAAa,GAAGC,KAAK;;IAEvE;IACA,8GAA8G;IAC9GoC,2BAA2BC,WAAW,GAAG;IACzC,OAAOD;AACT"}
@@ -0,0 +1,70 @@
1
+ @use "sass:math";
2
+
3
+ .import-export-list {
4
+ padding-top: 0.4807692308rem;
5
+ padding-bottom: 0.4807692308rem;
6
+ color: var(--theme-elevation-400);
7
+ transform: translateY(-1.9230769231rem);
8
+
9
+ &__actions {
10
+ display: flex;
11
+ justify-content: flex-end;
12
+ align-items: center;
13
+ column-gap: 10px;
14
+ margin-top: -3.8461538462rem;
15
+ margin-bottom: 3.8461538462rem;
16
+
17
+ .btn {
18
+ margin: 0;
19
+ }
20
+
21
+ svg {
22
+ fill: currentColor;
23
+ }
24
+ }
25
+
26
+ &__modal {
27
+
28
+ &:before,
29
+ &:after {
30
+ content: " ";
31
+ position: absolute;
32
+ top: 0;
33
+ right: 0;
34
+ bottom: 0;
35
+ left: 0;
36
+ pointer-events: none;
37
+ }
38
+
39
+ &:before {
40
+ background: var(--theme-bg);
41
+ opacity: 0.85;
42
+ }
43
+
44
+ &:after {
45
+ backdrop-filter: blur(5px);
46
+ }
47
+
48
+ .template-minimal {
49
+ display: flex;
50
+ width: 100%;
51
+ justify-content: center;
52
+ align-items: center;
53
+ padding: 1.9230769231rem;
54
+ margin-left: auto;
55
+ margin-right: auto;
56
+ min-height: 100%;
57
+ min-height: 100vh;
58
+ z-index: 1;
59
+ position: relative;
60
+
61
+ /*
62
+ &__wrap {
63
+ padding: 20px;
64
+ border-radius: 4px;
65
+ background: var(--theme-bg);
66
+ }
67
+ */
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,142 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Button, Modal, useConfig, useModal, useTranslation } from '@payloadcms/ui';
4
+ import { getRouteResolver } from '@websolutespa/payload-utils';
5
+ import React from 'react';
6
+ import './ImportExportList.scss';
7
+ import { ImportModal } from './ImportModal';
8
+ export const redirectParser = (items)=>{
9
+ const parsedItems = [];
10
+ // console.log('redirectParser', 'items', items);
11
+ const prefixedItems = items.map((item)=>{
12
+ const prefixedItem = {
13
+ ...item
14
+ };
15
+ if (prefixedItem.from && typeof prefixedItem.from === 'string' && prefixedItem.to && typeof prefixedItem.to === 'string') {
16
+ const from = prefixedItem.from.split('/');
17
+ const to = prefixedItem.to.split('/');
18
+ const match = [];
19
+ const fromLength = from.length;
20
+ const toLength = to.length;
21
+ const min = Math.min(fromLength, toLength);
22
+ // const max = Math.max(fromLength, toLength);
23
+ // const diff = max - min;
24
+ for(let i = 0; i < min; i++){
25
+ const a = from[fromLength - 1 - i];
26
+ const b = to[toLength - 1 - i];
27
+ if (a === b && !a.match(/[*(.:]/g)) {
28
+ match.unshift(a);
29
+ } else {
30
+ i = min;
31
+ }
32
+ }
33
+ const matchedText = match.join('/');
34
+ const matchedLength = matchedText.length;
35
+ // console.log('match', matchedText);
36
+ prefixedItem.fromPrefix = prefixedItem.from.substring(0, prefixedItem.from.length - matchedLength);
37
+ prefixedItem.toPrefix = prefixedItem.to.substring(0, prefixedItem.to.length - matchedLength);
38
+ // console.log(prefixedItem.fromPrefix, prefixedItem.toPrefix);
39
+ }
40
+ return prefixedItem;
41
+ });
42
+ prefixedItems.forEach((a)=>{
43
+ const nextPrefix = prefixedItems.find((b)=>b !== a && a.fromPrefix === b.fromPrefix);
44
+ if (nextPrefix) {
45
+ const fromPrefix = a.fromPrefix + '*';
46
+ if (!parsedItems.find((x)=>x.from === fromPrefix)) {
47
+ const toPrefix = a.toPrefix + '*';
48
+ parsedItems.push({
49
+ ...a,
50
+ from: fromPrefix,
51
+ to: toPrefix
52
+ });
53
+ }
54
+ } else {
55
+ parsedItems.push(a);
56
+ }
57
+ });
58
+ prefixedItems.sort((a, b)=>{
59
+ if (a.from && typeof a.from === 'string' && b.from && typeof b.from === 'string') {
60
+ return b.from.split('/').length - a.from.split('/').length;
61
+ } else {
62
+ return 0;
63
+ }
64
+ });
65
+ // console.log('redirectParser', 'parsedItems', parsedItems);
66
+ return parsedItems;
67
+ };
68
+ const exampleCSV = `from,to,status
69
+ https://www.mydomain.com/some-path-to-redirect,https://www.mydomain.com/a-new-redirect-path,301
70
+ https://www.mydomain.com/some-path-to-redirect-temporarily,https://www.mydomain.com/a-new-redirect-path,307
71
+ https://www.mydomain.com/some-path-to-redirect-found-temporarily,https://www.mydomain.com/a-new-redirect-path,302
72
+ https://www.mydomain.com/some-path-to-redirect-gone,,410
73
+ https://www.mydomain.com/some-path-to-redirect-with-catchall/*,https://www.mydomain.com/a-new-redirect-path,301
74
+ https://www.mydomain.com/some-path-to-redirect-with-catchall/*,https://www.mydomain.com/a-new-redirect-path-with-catchall/*,301`;
75
+ export const ImportExportRedirect = (props)=>{
76
+ const { t } = useTranslation();
77
+ const { openModal, isModalOpen } = useModal();
78
+ const { config } = useConfig();
79
+ const slug = props.collectionSlug;
80
+ /*
81
+ const { collections } = config;
82
+ const collection = collections.find(x => x.slug === slug);
83
+ */ const routeResolver = getRouteResolver(config);
84
+ const exportUrl = routeResolver.api(`/${slug}/export`);
85
+ const modalKey = `${slug}-import-modal`;
86
+ const isModalOpened = isModalOpen(modalKey);
87
+ const downloadExampleCSV = ()=>{
88
+ const element = document.createElement('a');
89
+ element.style.position = 'absolute';
90
+ const file = new Blob([
91
+ exampleCSV
92
+ ], {
93
+ type: 'text/plain'
94
+ });
95
+ element.href = URL.createObjectURL(file);
96
+ element.download = 'example.csv';
97
+ document.body.appendChild(element); // Required for this to work in FireFox
98
+ element.click();
99
+ element.remove();
100
+ };
101
+ return /*#__PURE__*/ _jsxs(_Fragment, {
102
+ children: [
103
+ /*#__PURE__*/ _jsxs("div", {
104
+ className: "gutter--left gutter--right import-export-list__actions",
105
+ children: [
106
+ /*#__PURE__*/ _jsx(Button, {
107
+ className: "pill pill--style-light pill--size-small list-controls__toggle-columns pill--has-action pill--has-icon pill--align-icon-right",
108
+ onClick: ()=>openModal(modalKey),
109
+ children: /*#__PURE__*/ _jsx("span", {
110
+ children: t('importExport:importCSV')
111
+ })
112
+ }),
113
+ /*#__PURE__*/ _jsx("a", {
114
+ className: "pill pill--style-light pill--size-small list-controls__toggle-columns pill--has-action pill--has-icon pill--align-icon-right",
115
+ href: exportUrl,
116
+ download: `${slug}.csv`,
117
+ children: /*#__PURE__*/ _jsx("span", {
118
+ children: t('importExport:exportCSV')
119
+ })
120
+ }),
121
+ exampleCSV && /*#__PURE__*/ _jsx(Button, {
122
+ className: "pill pill--style-light pill--has-link pill--has-action",
123
+ onClick: ()=>downloadExampleCSV(),
124
+ children: /*#__PURE__*/ _jsx("span", {
125
+ children: t('importExport:exampleCSV')
126
+ })
127
+ })
128
+ ]
129
+ }),
130
+ /*#__PURE__*/ _jsx(Modal, {
131
+ slug: modalKey,
132
+ className: "import-export-list__modal",
133
+ children: isModalOpened && /*#__PURE__*/ _jsx(ImportModal, {
134
+ parser: redirectParser,
135
+ slug: slug
136
+ })
137
+ })
138
+ ]
139
+ });
140
+ };
141
+
142
+ //# sourceMappingURL=ImportExportRedirect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/ImportExport/ImportExportRedirect.tsx"],"sourcesContent":["'use client';\r\n\r\nimport { Button, Modal, useConfig, useModal, useTranslation } from '@payloadcms/ui';\r\nimport { getRouteResolver } from '@websolutespa/payload-utils';\r\nimport type { AfterListClientProps } from 'payload';\r\nimport React from 'react';\r\nimport './ImportExportList.scss';\r\nimport { ImportModal } from './ImportModal';\r\nimport { IImportItem } from './types';\r\n\r\nexport const redirectParser = (items: IImportItem[]) => {\r\n const parsedItems: IImportItem[] = [];\r\n // console.log('redirectParser', 'items', items);\r\n const prefixedItems = items.map(item => {\r\n const prefixedItem = { ...item };\r\n if (\r\n prefixedItem.from && typeof prefixedItem.from === 'string' &&\r\n prefixedItem.to && typeof prefixedItem.to === 'string'\r\n ) {\r\n const from = prefixedItem.from.split('/');\r\n const to = prefixedItem.to.split('/');\r\n const match = [];\r\n const fromLength = from.length;\r\n const toLength = to.length;\r\n const min = Math.min(fromLength, toLength);\r\n // const max = Math.max(fromLength, toLength);\r\n // const diff = max - min;\r\n for (let i = 0; i < min; i++) {\r\n const a = from[fromLength - 1 - i]!;\r\n const b = to[toLength - 1 - i];\r\n if (a === b && !a.match(/[*(.:]/g)) {\r\n match.unshift(a);\r\n } else {\r\n i = min;\r\n }\r\n }\r\n const matchedText = match.join('/');\r\n const matchedLength = matchedText.length;\r\n // console.log('match', matchedText);\r\n prefixedItem.fromPrefix = prefixedItem.from.substring(0, prefixedItem.from.length - matchedLength);\r\n prefixedItem.toPrefix = prefixedItem.to.substring(0, prefixedItem.to.length - matchedLength);\r\n // console.log(prefixedItem.fromPrefix, prefixedItem.toPrefix);\r\n }\r\n return prefixedItem;\r\n });\r\n prefixedItems.forEach(a => {\r\n const nextPrefix = prefixedItems.find(b => b !== a && a.fromPrefix === b.fromPrefix);\r\n if (nextPrefix) {\r\n const fromPrefix = a.fromPrefix + '*';\r\n if (!parsedItems.find(x => x.from === fromPrefix)) {\r\n const toPrefix = a.toPrefix + '*';\r\n parsedItems.push({\r\n ...a,\r\n from: fromPrefix,\r\n to: toPrefix,\r\n });\r\n }\r\n } else {\r\n parsedItems.push(a);\r\n }\r\n });\r\n prefixedItems.sort((a, b) => {\r\n if (\r\n a.from && typeof a.from === 'string' &&\r\n b.from && typeof b.from === 'string'\r\n ) {\r\n return b.from.split('/').length - a.from.split('/').length;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n // console.log('redirectParser', 'parsedItems', parsedItems);\r\n return parsedItems;\r\n};\r\n\r\nconst exampleCSV = `from,to,status\r\nhttps://www.mydomain.com/some-path-to-redirect,https://www.mydomain.com/a-new-redirect-path,301\r\nhttps://www.mydomain.com/some-path-to-redirect-temporarily,https://www.mydomain.com/a-new-redirect-path,307\r\nhttps://www.mydomain.com/some-path-to-redirect-found-temporarily,https://www.mydomain.com/a-new-redirect-path,302\r\nhttps://www.mydomain.com/some-path-to-redirect-gone,,410\r\nhttps://www.mydomain.com/some-path-to-redirect-with-catchall/*,https://www.mydomain.com/a-new-redirect-path,301\r\nhttps://www.mydomain.com/some-path-to-redirect-with-catchall/*,https://www.mydomain.com/a-new-redirect-path-with-catchall/*,301`;\r\n\r\nexport const ImportExportRedirect: React.FC<AfterListClientProps> = (props) => {\r\n const { t } = useTranslation<any, any>();\r\n const { openModal, isModalOpen } = useModal();\r\n const { config } = useConfig();\r\n\r\n const slug = props.collectionSlug;\r\n\r\n /*\r\n const { collections } = config;\r\n const collection = collections.find(x => x.slug === slug);\r\n */\r\n\r\n const routeResolver = getRouteResolver(config);\r\n const exportUrl = routeResolver.api(`/${slug}/export`);\r\n\r\n const modalKey = `${slug}-import-modal`;\r\n const isModalOpened = isModalOpen(modalKey);\r\n\r\n const downloadExampleCSV = () => {\r\n const element = document.createElement('a');\r\n element.style.position = 'absolute';\r\n const file = new Blob([exampleCSV], {type: 'text/plain'});\r\n element.href = URL.createObjectURL(file);\r\n element.download = 'example.csv';\r\n document.body.appendChild(element); // Required for this to work in FireFox\r\n element.click();\r\n element.remove();\r\n };\r\n\r\n return (\r\n <>\r\n {(\r\n <div className=\"gutter--left gutter--right import-export-list__actions\">\r\n <Button className=\"pill pill--style-light pill--size-small list-controls__toggle-columns pill--has-action pill--has-icon pill--align-icon-right\" onClick={() => openModal(modalKey)}>\r\n <span>{t('importExport:importCSV')}</span>\r\n </Button>\r\n <a className=\"pill pill--style-light pill--size-small list-controls__toggle-columns pill--has-action pill--has-icon pill--align-icon-right\" href={exportUrl} download={`${slug}.csv`}>\r\n <span>{t('importExport:exportCSV')}</span>\r\n </a>\r\n {exampleCSV && (\r\n <Button className=\"pill pill--style-light pill--has-link pill--has-action\" onClick={() => downloadExampleCSV()}>\r\n <span>{t('importExport:exampleCSV')}</span>\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n <Modal slug={modalKey} className=\"import-export-list__modal\">\r\n {isModalOpened && (\r\n <ImportModal parser={redirectParser} slug={slug} />\r\n )}\r\n </Modal>\r\n </>\r\n );\r\n};\r\n"],"names":["Button","Modal","useConfig","useModal","useTranslation","getRouteResolver","React","ImportModal","redirectParser","items","parsedItems","prefixedItems","map","item","prefixedItem","from","to","split","match","fromLength","length","toLength","min","Math","i","a","b","unshift","matchedText","join","matchedLength","fromPrefix","substring","toPrefix","forEach","nextPrefix","find","x","push","sort","exampleCSV","ImportExportRedirect","props","t","openModal","isModalOpen","config","slug","collectionSlug","routeResolver","exportUrl","api","modalKey","isModalOpened","downloadExampleCSV","element","document","createElement","style","position","file","Blob","type","href","URL","createObjectURL","download","body","appendChild","click","remove","div","className","onClick","span","parser"],"mappings":"AAAA;;AAEA,SAASA,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,cAAc,QAAQ,iBAAiB;AACpF,SAASC,gBAAgB,QAAQ,8BAA8B;AAE/D,OAAOC,WAAW,QAAQ;AAC1B,OAAO,0BAA0B;AACjC,SAASC,WAAW,QAAQ,gBAAgB;AAG5C,OAAO,MAAMC,iBAAiB,CAACC;IAC7B,MAAMC,cAA6B,EAAE;IACrC,iDAAiD;IACjD,MAAMC,gBAAgBF,MAAMG,GAAG,CAACC,CAAAA;QAC9B,MAAMC,eAAe;YAAE,GAAGD,IAAI;QAAC;QAC/B,IACEC,aAAaC,IAAI,IAAI,OAAOD,aAAaC,IAAI,KAAK,YAClDD,aAAaE,EAAE,IAAI,OAAOF,aAAaE,EAAE,KAAK,UAC9C;YACA,MAAMD,OAAOD,aAAaC,IAAI,CAACE,KAAK,CAAC;YACrC,MAAMD,KAAKF,aAAaE,EAAE,CAACC,KAAK,CAAC;YACjC,MAAMC,QAAQ,EAAE;YAChB,MAAMC,aAAaJ,KAAKK,MAAM;YAC9B,MAAMC,WAAWL,GAAGI,MAAM;YAC1B,MAAME,MAAMC,KAAKD,GAAG,CAACH,YAAYE;YACjC,8CAA8C;YAC9C,0BAA0B;YAC1B,IAAK,IAAIG,IAAI,GAAGA,IAAIF,KAAKE,IAAK;gBAC5B,MAAMC,IAAIV,IAAI,CAACI,aAAa,IAAIK,EAAE;gBAClC,MAAME,IAAIV,EAAE,CAACK,WAAW,IAAIG,EAAE;gBAC9B,IAAIC,MAAMC,KAAK,CAACD,EAAEP,KAAK,CAAC,YAAY;oBAClCA,MAAMS,OAAO,CAACF;gBAChB,OAAO;oBACLD,IAAIF;gBACN;YACF;YACA,MAAMM,cAAcV,MAAMW,IAAI,CAAC;YAC/B,MAAMC,gBAAgBF,YAAYR,MAAM;YACxC,qCAAqC;YACrCN,aAAaiB,UAAU,GAAGjB,aAAaC,IAAI,CAACiB,SAAS,CAAC,GAAGlB,aAAaC,IAAI,CAACK,MAAM,GAAGU;YACpFhB,aAAamB,QAAQ,GAAGnB,aAAaE,EAAE,CAACgB,SAAS,CAAC,GAAGlB,aAAaE,EAAE,CAACI,MAAM,GAAGU;QAC9E,+DAA+D;QACjE;QACA,OAAOhB;IACT;IACAH,cAAcuB,OAAO,CAACT,CAAAA;QACpB,MAAMU,aAAaxB,cAAcyB,IAAI,CAACV,CAAAA,IAAKA,MAAMD,KAAKA,EAAEM,UAAU,KAAKL,EAAEK,UAAU;QACnF,IAAII,YAAY;YACd,MAAMJ,aAAaN,EAAEM,UAAU,GAAG;YAClC,IAAI,CAACrB,YAAY0B,IAAI,CAACC,CAAAA,IAAKA,EAAEtB,IAAI,KAAKgB,aAAa;gBACjD,MAAME,WAAWR,EAAEQ,QAAQ,GAAG;gBAC9BvB,YAAY4B,IAAI,CAAC;oBACf,GAAGb,CAAC;oBACJV,MAAMgB;oBACNf,IAAIiB;gBACN;YACF;QACF,OAAO;YACLvB,YAAY4B,IAAI,CAACb;QACnB;IACF;IACAd,cAAc4B,IAAI,CAAC,CAACd,GAAGC;QACrB,IACED,EAAEV,IAAI,IAAI,OAAOU,EAAEV,IAAI,KAAK,YAC5BW,EAAEX,IAAI,IAAI,OAAOW,EAAEX,IAAI,KAAK,UAC5B;YACA,OAAOW,EAAEX,IAAI,CAACE,KAAK,CAAC,KAAKG,MAAM,GAAGK,EAAEV,IAAI,CAACE,KAAK,CAAC,KAAKG,MAAM;QAC5D,OAAO;YACL,OAAO;QACT;IACF;IACA,6DAA6D;IAC7D,OAAOV;AACT,EAAE;AAEF,MAAM8B,aAAa,CAAC;;;;;;+HAM2G,CAAC;AAEhI,OAAO,MAAMC,uBAAuD,CAACC;IACnE,MAAM,EAAEC,CAAC,EAAE,GAAGvC;IACd,MAAM,EAAEwC,SAAS,EAAEC,WAAW,EAAE,GAAG1C;IACnC,MAAM,EAAE2C,MAAM,EAAE,GAAG5C;IAEnB,MAAM6C,OAAOL,MAAMM,cAAc;IAEjC;;;EAGA,GAEA,MAAMC,gBAAgB5C,iBAAiByC;IACvC,MAAMI,YAAYD,cAAcE,GAAG,CAAC,CAAC,CAAC,EAAEJ,KAAK,OAAO,CAAC;IAErD,MAAMK,WAAW,CAAC,EAAEL,KAAK,aAAa,CAAC;IACvC,MAAMM,gBAAgBR,YAAYO;IAElC,MAAME,qBAAqB;QACzB,MAAMC,UAAUC,SAASC,aAAa,CAAC;QACvCF,QAAQG,KAAK,CAACC,QAAQ,GAAG;QACzB,MAAMC,OAAO,IAAIC,KAAK;YAACrB;SAAW,EAAE;YAACsB,MAAM;QAAY;QACvDP,QAAQQ,IAAI,GAAGC,IAAIC,eAAe,CAACL;QACnCL,QAAQW,QAAQ,GAAG;QACnBV,SAASW,IAAI,CAACC,WAAW,CAACb,UAAU,uCAAuC;QAC3EA,QAAQc,KAAK;QACbd,QAAQe,MAAM;IAChB;IAEA,qBACE;;0BAEI,MAACC;gBAAIC,WAAU;;kCACb,KAACxE;wBAAOwE,WAAU;wBAA+HC,SAAS,IAAM7B,UAAUQ;kCACxK,cAAA,KAACsB;sCAAM/B,EAAE;;;kCAEX,KAAClB;wBAAE+C,WAAU;wBAA+HT,MAAMb;wBAAWgB,UAAU,CAAC,EAAEnB,KAAK,IAAI,CAAC;kCAClL,cAAA,KAAC2B;sCAAM/B,EAAE;;;oBAEVH,4BACC,KAACxC;wBAAOwE,WAAU;wBAAyDC,SAAS,IAAMnB;kCACxF,cAAA,KAACoB;sCAAM/B,EAAE;;;;;0BAKjB,KAAC1C;gBAAM8C,MAAMK;gBAAUoB,WAAU;0BAC9BnB,+BACC,KAAC9C;oBAAYoE,QAAQnE;oBAAgBuC,MAAMA;;;;;AAKrD,EAAE"}