@strapi/admin 4.2.0-beta.1 → 4.2.0-beta.4

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 (166) hide show
  1. package/admin/src/assets/images/homepage-logo.png +0 -0
  2. package/admin/src/components/AutoReloadOverlayBlockerProvider/Blocker.js +2 -6
  3. package/admin/src/components/ConfigurationsProvider/index.js +51 -0
  4. package/admin/src/components/ConfigurationsProvider/reducer.js +28 -0
  5. package/admin/src/components/GuidedTour/Homepage/index.js +1 -2
  6. package/admin/src/components/GuidedTour/Modal/components/Stepper.js +1 -2
  7. package/admin/src/components/LeftMenu/index.js +19 -7
  8. package/admin/src/components/Notifications/Notification/index.js +2 -2
  9. package/admin/src/components/Providers/index.js +8 -4
  10. package/admin/src/components/UnauthenticatedLogo/index.js +4 -2
  11. package/admin/src/components/UpgradePlanModal/index.js +6 -2
  12. package/admin/src/content-manager/components/DynamicZone/components/ComponentPicker/Category/ComponentCard/index.js +1 -1
  13. package/admin/src/content-manager/components/SelectMany/ListItem.js +1 -2
  14. package/admin/src/content-manager/components/SelectWrapper/index.js +8 -7
  15. package/admin/src/content-manager/components/SelectWrapper/utils/getSelectStyles.js +1 -1
  16. package/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +2 -2
  17. package/admin/src/content-manager/components/Wysiwyg/Editor.js +2 -0
  18. package/admin/src/content-manager/pages/App/LeftMenu/index.js +8 -7
  19. package/admin/src/content-manager/pages/EditSettingsView/components/ComponentFieldList.js +1 -1
  20. package/admin/src/content-manager/pages/EditSettingsView/components/LinkToCTB.js +1 -2
  21. package/admin/src/content-manager/pages/EditSettingsView/index.js +1 -2
  22. package/admin/src/content-manager/pages/EditView/Header/index.js +3 -3
  23. package/admin/src/content-manager/pages/EditView/index.js +1 -4
  24. package/admin/src/content-manager/pages/ListSettingsView/index.js +1 -2
  25. package/admin/src/content-manager/pages/ListView/index.js +1 -1
  26. package/admin/src/content-manager/pages/NoContentType/index.js +1 -2
  27. package/admin/src/pages/App/index.js +7 -2
  28. package/admin/src/pages/AuthPage/components/ForgotPassword/index.js +1 -2
  29. package/admin/src/pages/AuthPage/components/ForgotPasswordSuccess/index.js +1 -1
  30. package/admin/src/pages/AuthPage/components/Login/BaseLogin.js +1 -2
  31. package/admin/src/pages/AuthPage/components/Oops/index.js +1 -2
  32. package/admin/src/pages/AuthPage/components/Register/index.js +12 -12
  33. package/admin/src/pages/AuthPage/components/ResetPassword/index.js +3 -4
  34. package/admin/src/pages/HomePage/ContentBlocks.js +15 -2
  35. package/admin/src/pages/HomePage/HomeHeader.js +2 -2
  36. package/admin/src/pages/HomePage/SocialLinks.js +4 -3
  37. package/admin/src/pages/InternalErrorPage/index.js +1 -2
  38. package/admin/src/pages/MarketplacePage/components/PageHeader/index.js +2 -1
  39. package/admin/src/pages/MarketplacePage/components/PluginCard/index.js +4 -3
  40. package/admin/src/pages/NotFoundPage/index.js +1 -2
  41. package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +5 -4
  42. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +1 -1
  43. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/UpdateButton/index.js +1 -1
  44. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/index.js +1 -1
  45. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/index.js +85 -0
  46. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/init.js +13 -0
  47. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/Form/reducer.js +43 -0
  48. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/index.js +118 -0
  49. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/reducer.js +28 -0
  50. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoInput/stepper.js +25 -0
  51. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/AddLogoDialog.js +67 -0
  52. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromComputerForm.js +176 -0
  53. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/FromUrlForm.js +82 -0
  54. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/ImageCardAsset.js +51 -0
  55. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/PendingLogoDialog.js +97 -0
  56. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/index.js +85 -0
  57. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/components/LogoModalStepper/reducer.js +28 -0
  58. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +155 -87
  59. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/api.js +16 -0
  60. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/constants.js +3 -0
  61. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/getFormData.js +17 -0
  62. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/parseFileMetadatas.js +76 -0
  63. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/prefixAllUrls.js +17 -0
  64. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/urlToFile.js +21 -0
  65. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js +1 -1
  66. package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +1 -1
  67. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js +1 -2
  68. package/admin/src/pages/SettingsPage/pages/Webhooks/ListView/index.js +1 -1
  69. package/admin/src/translations/ca.json +699 -0
  70. package/admin/src/translations/en.json +26 -0
  71. package/admin/src/translations/languageNativeNames.js +1 -0
  72. package/admin/src/translations/ru.json +34 -0
  73. package/build/1541.6c1c96f9.chunk.js +307 -0
  74. package/build/1856.521a99fd.chunk.js +172 -0
  75. package/build/2077.51485bfb.chunk.js +194 -0
  76. package/build/2912.79c2b3c8.chunk.js +253 -0
  77. package/build/3214.9196aeff.chunk.js +235 -0
  78. package/build/3865.21cec9de.chunk.js +310 -0
  79. package/build/4073.e144a91a.chunk.js +1 -0
  80. package/build/4715.77e04177.chunk.js +385 -0
  81. package/build/{272.d442e5ca.chunk.js → 472.0350a5bd.chunk.js} +91 -102
  82. package/build/4982.f53b78a4.chunk.js +308 -0
  83. package/build/6229.a5cca9f2.chunk.js +194 -0
  84. package/build/7351.b95e65ae.chunk.js +428 -0
  85. package/build/7418.6db737ce.chunk.js +112 -0
  86. package/build/7841.f0e7d629.chunk.js +253 -0
  87. package/build/8826.58e236d4.chunk.js +1057 -0
  88. package/build/9066.118ecccd.chunk.js +101 -0
  89. package/build/{9298.dab64a1b.chunk.js → 9298.aff28744.chunk.js} +80 -91
  90. package/build/9420.cb0b75e8.chunk.js +508 -0
  91. package/build/{9988.9b6e1d79.chunk.js → 9988.f84412d9.chunk.js} +15 -14
  92. package/build/Admin-authenticatedApp.162a5805.chunk.js +80 -0
  93. package/build/Admin_homePage.0ac648e8.chunk.js +71 -0
  94. package/build/Admin_marketplace.0bb91ec8.chunk.js +11 -0
  95. package/build/Admin_settingsPage.23e873f0.chunk.js +178 -0
  96. package/build/admin-edit-roles-page.fb374555.chunk.js +1 -0
  97. package/build/admin-edit-users.a360deaf.chunk.js +10 -0
  98. package/build/api-tokens-create-page.698f132d.chunk.js +1 -0
  99. package/build/api-tokens-edit-page.afece2fe.chunk.js +1 -0
  100. package/build/api-tokens-list-page.46d96dee.chunk.js +15 -0
  101. package/build/ca-json.0097e443.chunk.js +1 -0
  102. package/build/content-manager.7cd28f84.chunk.js +1204 -0
  103. package/build/content-type-builder.7456cabe.chunk.js +141 -0
  104. package/build/{email-settings-page.d807edfd.chunk.js → email-settings-page.f67d13b2.chunk.js} +5 -5
  105. package/build/en-json.40ee00aa.chunk.js +1 -0
  106. package/build/fb376b132d18bf4522ca.png +0 -0
  107. package/build/{i18n-settings-page.c8f3b78b.chunk.js → i18n-settings-page.6b67cb75.chunk.js} +5 -5
  108. package/build/index.html +1 -1
  109. package/build/main.b632a0d6.js +11625 -0
  110. package/build/ru-json.28147733.chunk.js +1 -0
  111. package/build/runtime~main.38d418e9.js +2 -0
  112. package/build/{upload-settings.17202e3b.chunk.js → upload-settings.3db55de0.chunk.js} +5 -5
  113. package/build/upload-translation-ca-json.79159984.chunk.js +1 -0
  114. package/build/{upload.d647d59d.chunk.js → upload.070c189b.chunk.js} +5 -5
  115. package/build/{users-advanced-settings-page.22690469.chunk.js → users-advanced-settings-page.a23cda17.chunk.js} +5 -5
  116. package/build/users-roles-settings-page.988ebc3b.chunk.js +30 -0
  117. package/build/{webhook-edit-page.043fe03f.chunk.js → webhook-edit-page.a7ae6e3b.chunk.js} +3 -3
  118. package/build/webhook-list-page.83297d98.chunk.js +133 -0
  119. package/ee/admin/pages/AuthPage/components/Providers/index.js +1 -1
  120. package/ee/admin/pages/SettingsPage/pages/Roles/CreatePage/index.js +1 -1
  121. package/ee/server/controllers/user.js +4 -0
  122. package/package.json +9 -9
  123. package/server/config/admin-actions.js +14 -0
  124. package/server/controllers/admin.js +33 -1
  125. package/server/controllers/user.js +4 -0
  126. package/server/routes/admin.js +28 -0
  127. package/server/services/index.js +1 -0
  128. package/server/services/permission/permissions-manager/sanitize.js +22 -0
  129. package/server/services/project-settings.js +173 -0
  130. package/server/services/user.js +1 -1
  131. package/server/utils/index.d.ts +2 -0
  132. package/server/validation/project-settings.js +39 -0
  133. package/utils/create-cache-dir.js +2 -5
  134. package/webpack.config.js +2 -2
  135. package/admin/src/content-manager/components/DynamicComponentCard/index.js +0 -43
  136. package/build/1856.e2bce2e8.chunk.js +0 -171
  137. package/build/2481.5fe150c7.chunk.js +0 -184
  138. package/build/2912.5a7b0406.chunk.js +0 -252
  139. package/build/2a9e9ef5c4c775bb7c7b.png +0 -0
  140. package/build/306.28d21ab8.chunk.js +0 -896
  141. package/build/4073.4765687b.chunk.js +0 -1
  142. package/build/4715.7f616cf6.chunk.js +0 -387
  143. package/build/497.2ba35e90.chunk.js +0 -284
  144. package/build/4982.91235074.chunk.js +0 -310
  145. package/build/6229.f558fd19.chunk.js +0 -194
  146. package/build/6404.25d0f0d8.chunk.js +0 -508
  147. package/build/7841.0d73dde1.chunk.js +0 -252
  148. package/build/7863.996e70df.chunk.js +0 -112
  149. package/build/9853.6cc1043a.chunk.js +0 -354
  150. package/build/Admin-authenticatedApp.d26b3032.chunk.js +0 -80
  151. package/build/Admin_homePage.fc4a8408.chunk.js +0 -71
  152. package/build/Admin_marketplace.c406a140.chunk.js +0 -11
  153. package/build/Admin_settingsPage.c40fdef1.chunk.js +0 -170
  154. package/build/admin-edit-roles-page.c69fe8ab.chunk.js +0 -1
  155. package/build/admin-edit-users.be232f6b.chunk.js +0 -10
  156. package/build/api-tokens-create-page.9774f0fe.chunk.js +0 -1
  157. package/build/api-tokens-edit-page.8f03c9a1.chunk.js +0 -1
  158. package/build/api-tokens-list-page.126fbca6.chunk.js +0 -15
  159. package/build/content-manager.ca66b566.chunk.js +0 -1204
  160. package/build/content-type-builder.d12fd5cd.chunk.js +0 -141
  161. package/build/en-json.3e1a222e.chunk.js +0 -1
  162. package/build/main.36da7eeb.js +0 -7918
  163. package/build/ru-json.4560906c.chunk.js +0 -1
  164. package/build/runtime~main.251e9cca.js +0 -2
  165. package/build/users-roles-settings-page.487f3346.chunk.js +0 -30
  166. package/build/webhook-list-page.2d2d71a1.chunk.js +0 -132
@@ -0,0 +1,30 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[8853],{79634:(te,G,a)=>{a.r(G),a.d(G,{default:()=>bs});var s=a(32735),C=a(5141),p=a(10938),b=a(42296),T=a(8091),_=a(44526),D=a(11856),E=a(16540),f=a(53214),U=a(28004),P=a(95602),B=a(29270),F=a(59290),N=a.n(F),v=a(5636),A=a(84968),V=a(58469),x=a(33234),re=(r,e,t)=>new Promise((i,u)=>{var l=n=>{try{o(t.next(n))}catch(c){u(c)}},d=n=>{try{o(t.throw(n))}catch(c){u(c)}},o=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);o((t=t.apply(r,e)).next())});const Je=(r,e)=>re(void 0,null,function*(){try{const{data:t}=yield x.be.get((0,x.Gc)("roles"));return e("The roles have loaded successfully"),t}catch(t){throw r({type:"warning",message:{id:"notification.error"}}),new Error("error")}}),qe=(r,e)=>re(void 0,null,function*(){try{yield x.be.delete(`${(0,x.Gc)("roles")}/${r}`)}catch(t){e({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}});var et=a(60216),h=a.n(et),se=a(20763),Q=a(19192),tt=a(95717),rt=a.n(tt),st=a(76470),nt=a.n(st),ot=Object.defineProperty,ne=Object.getOwnPropertySymbols,at=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable,oe=(r,e,t)=>e in r?ot(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ae=(r,e)=>{for(var t in e||(e={}))at.call(e,t)&&oe(r,t,e[t]);if(ne)for(var t of ne(e))it.call(e,t)&&oe(r,t,e[t]);return r};const X=({sortedRoles:r,canDelete:e,permissions:t,setRoleToDelete:i,onDelete:u})=>{const{formatMessage:l}=(0,v.useIntl)(),{push:d}=(0,C.useHistory)(),[o,n]=u,c=m=>e&&!["public","authenticated"].includes(m.type),g=m=>{i(m),n(!o)},y=m=>{d(`/settings/${b.Z}/roles/${m}`)};return s.createElement(f.Tbody,null,r==null?void 0:r.map(m=>s.createElement(f.Tr,ae({key:m.name},(0,p.onRowClick)({fn:()=>y(m.id)})),s.createElement(f.Td,{width:"20%"},s.createElement(P.Typography,null,m.name)),s.createElement(f.Td,{width:"50%"},s.createElement(P.Typography,null,m.description)),s.createElement(f.Td,{width:"30%"},s.createElement(P.Typography,null,`${m.nb_users} ${l({id:"global.users",defaultMessage:"users"}).toLowerCase()}`)),s.createElement(f.Td,null,s.createElement(Q.Flex,ae({justifyContent:"end"},p.stopPropagation),s.createElement(p.CheckPermissions,{permissions:t.updateRole},s.createElement(se.IconButton,{onClick:()=>y(m.id),noBorder:!0,icon:s.createElement(rt(),null),label:l({id:"app.component.table.edit",defaultMessage:"Edit {target}"},{target:`${m.name}`})})),c(m)&&s.createElement(p.CheckPermissions,{permissions:t.deleteRole},s.createElement(se.IconButton,{onClick:()=>g(m.id),noBorder:!0,icon:s.createElement(nt(),null),label:l({id:"global.delete-target",defaultMessage:"Delete {target}"},{target:`${m.name}`})})))))))},lt=X;X.defaultProps={canDelete:!1},X.propTypes={onDelete:h().array.isRequired,permissions:h().object.isRequired,setRoleToDelete:h().func.isRequired,sortedRoles:h().array.isRequired,canDelete:h().bool};var ie=(r,e,t)=>new Promise((i,u)=>{var l=n=>{try{o(t.next(n))}catch(c){u(c)}},d=n=>{try{o(t.throw(n))}catch(c){u(c)}},o=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);o((t=t.apply(r,e)).next())});const ct=()=>{const{trackUsage:r}=(0,p.useTracking)(),{formatMessage:e}=(0,v.useIntl)(),{push:t}=(0,C.useHistory)(),i=(0,p.useNotification)(),{notifyStatus:u}=(0,B.useNotifyAT)(),[{query:l}]=(0,p.useQueryParams)(),d=(l==null?void 0:l._q)||"",[o,n]=(0,s.useState)(!1),[c,g]=(0,s.useState)(!1),[y,m]=(0,s.useState)();(0,p.useFocusWhenNavigate)();const R=(0,A.useQueryClient)(),O=(0,s.useMemo)(()=>({create:T.Z.createRole,read:T.Z.readRoles,update:T.Z.updateRole,delete:T.Z.deleteRole}),[]),{isLoading:w,allowedActions:{canRead:M,canDelete:k}}=(0,p.useRBAC)(O),{isLoading:Ts,data:{roles:ee},isFetching:Ds}=(0,A.useQuery)("get-roles",()=>Je(i,u),{initialData:{},enabled:M}),Ye=Ts||Ds,As=()=>{r("willCreateRole"),t(`/settings/${b.Z}/roles/new`)},Ls=()=>{n(!o)},Ss={roles:{id:(0,x.OB)("Roles.empty"),defaultMessage:"You don't have any roles yet."},search:{id:(0,x.OB)("Roles.empty.search"),defaultMessage:"No roles match the search."}},ws=e({id:"global.roles",defaultMessage:"Roles"}),Ms=(0,A.useMutation)(Bs=>qe(Bs,i),{onSuccess:()=>ie(void 0,null,function*(){yield R.invalidateQueries("get-roles")})}),Us=()=>ie(void 0,null,function*(){g(!0),yield Ms.mutateAsync(y),n(!o),g(!1)}),H=(0,V.ZP)(ee||[],d,{keys:["name","description"]}),Is=d&&!H.length?"search":"roles",js=4,_s=((ee==null?void 0:ee.length)||0)+1;return s.createElement(D.Layout,null,s.createElement(p.SettingsPageTitle,{name:ws}),s.createElement(E.Main,{"aria-busy":Ye},s.createElement(D.HeaderLayout,{title:e({id:"global.roles",defaultMessage:"Roles"}),subtitle:e({id:"Settings.roles.list.description",defaultMessage:"List of roles"}),primaryAction:s.createElement(p.CheckPermissions,{permissions:T.Z.createRole},s.createElement(_.Button,{onClick:As,startIcon:s.createElement(N(),null),size:"L"},e({id:(0,x.OB)("List.button.roles"),defaultMessage:"Add new role"})))}),s.createElement(D.ActionLayout,{startActions:s.createElement(p.SearchURLQuery,{label:e({id:"app.component.search.label",defaultMessage:"Search"})})}),s.createElement(D.ContentLayout,null,!M&&s.createElement(p.NoPermissions,null),(Ye||w)&&s.createElement(p.LoadingIndicatorPage,null),M&&H&&(H==null?void 0:H.length)?s.createElement(f.Table,{colCount:js,rowCount:_s},s.createElement(f.Thead,null,s.createElement(f.Tr,null,s.createElement(f.Th,null,s.createElement(P.Typography,{variant:"sigma",textColor:"neutral600"},e({id:"global.name",defaultMessage:"Name"}))),s.createElement(f.Th,null,s.createElement(P.Typography,{variant:"sigma",textColor:"neutral600"},e({id:"global.description",defaultMessage:"Description"}))),s.createElement(f.Th,null,s.createElement(P.Typography,{variant:"sigma",textColor:"neutral600"},e({id:"global.users",defaultMessage:"Users"}))),s.createElement(f.Th,null,s.createElement(U.VisuallyHidden,null,e({id:"global.actions",defaultMessage:"Actions"}))))),s.createElement(lt,{sortedRoles:H,canDelete:k,permissions:T.Z,setRoleToDelete:m,onDelete:[o,n]})):s.createElement(p.EmptyStateLayout,{content:Ss[Is]})),s.createElement(p.ConfirmDialog,{isConfirmButtonLoading:c,onConfirm:Us,onToggleDialog:Ls,isOpen:o})))},ut=()=>s.createElement(p.CheckPagePermissions,{permissions:T.Z.accessRoles},s.createElement(ct,null));var le=a(83281),L=a(90662),I=a(9808),ce=a(37178),ue=a(90353),dt=a(98599),pt=a.n(dt),mt=a(88677),de=a.n(mt),S=a(78330),Z=a(71810),j=a(92891);const pe=(0,s.createContext)({}),me=({children:r,value:e})=>s.createElement(pe.Provider,{value:e},r),Y=()=>(0,s.useContext)(pe);me.propTypes={children:h().node.isRequired,value:h().object.isRequired};var W=a(19615),gt=a(37213),ft=a.n(gt),Pt=a(15738),yt=a.n(Pt);const Et=r=>{switch(r){case"POST":return{text:"success600",border:"success200",background:"success100"};case"GET":return{text:"secondary600",border:"secondary200",background:"secondary100"};case"PUT":return{text:"warning600",border:"warning200",background:"warning100"};case"DELETE":return{text:"danger600",border:"danger200",background:"danger100"};default:return{text:"neutral600",border:"neutral200",background:"neutral100"}}},vt=(0,W.default)(I.Box)`
2
+ margin: -1px;
3
+ border-radius: ${({theme:r})=>r.spaces[1]} 0 0 ${({theme:r})=>r.spaces[1]};
4
+ `;function J({route:r}){const{formatMessage:e}=(0,v.useIntl)(),{method:t,handler:i,path:u}=r,l=u?yt()(u.split("/")):[],[d="",o=""]=i?i.split("."):[],n=Et(r.method);return s.createElement(L.Stack,{spacing:2},s.createElement(P.Typography,{variant:"delta",as:"h3"},e({id:"users-permissions.BoundRoute.title",defaultMessage:"Bound route to"}),"\xA0",s.createElement("span",null,d),s.createElement(P.Typography,{variant:"delta",textColor:"primary600"},".",o)),s.createElement(L.Stack,{horizontal:!0,hasRadius:!0,background:"neutral0",borderColor:"neutral200",spacing:0},s.createElement(vt,{background:n.background,borderColor:n.border,padding:2},s.createElement(P.Typography,{fontWeight:"bold",textColor:n.text},t)),s.createElement(I.Box,{paddingLeft:2,paddingRight:2},ft()(l,c=>s.createElement(P.Typography,{key:c,textColor:c.includes(":")?"neutral600":"neutral900"},"/",c)))))}J.defaultProps={route:{handler:"Nocontroller.error",method:"GET",path:"/there-is-no-path"}},J.propTypes={route:h().shape({handler:h().string,method:h().string,path:h().string})};const ht=J,Ot=()=>{const{formatMessage:r}=(0,v.useIntl)(),{selectedAction:e,routes:t}=Y(),i=(0,j.without)(e.split("."),"controllers"),u=(0,j.get)(t,i[0]),l=i.slice(1).join("."),d=(0,j.isEmpty)(u)?[]:u.filter(o=>o.handler.endsWith(l));return s.createElement(S.GridItem,{col:5,background:"neutral150",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,style:{minHeight:"100%"}},e?s.createElement(L.Stack,{spacing:2},d.map((o,n)=>s.createElement(ht,{key:n,route:o}))):s.createElement(L.Stack,{spacing:2},s.createElement(P.Typography,{variant:"delta",as:"h3"},r({id:"users-permissions.Policies.header.title",defaultMessage:"Advanced settings"})),s.createElement(P.Typography,{as:"p",textColor:"neutral600"},r({id:"users-permissions.Policies.header.hint",defaultMessage:"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route"}))))};var q=a(12001),Rt=a(23940),Ct=a.n(Rt);function bt(r){switch(r){case"application":return"Application";case"plugin::content-manager":return"Content manager";case"plugin::content-type-builder":return"Content types builder";case"plugin::documentation":return"Documentation";case"plugin::email":return"Email";case"plugin::i18n":return"i18n";case"plugin::upload":return"Upload";case"plugin::users-permissions":return"Users-permissions";default:return Ct()(r.replace("api::","").replace("plugin::",""))}}const Tt=bt;var Dt=a(98978),ge=a.n(Dt),fe=a(52111),At=a(42258),Lt=a.n(At);const Pe=W.css`
5
+ background: ${r=>r.theme.colors.primary100};
6
+ svg {
7
+ opacity: 1;
8
+ }
9
+ `,St=(0,W.default)(I.Box)`
10
+ display: flex;
11
+ justify-content: space-between;
12
+ align-items: center;
13
+
14
+ svg {
15
+ opacity: 0;
16
+ path {
17
+ fill: ${r=>r.theme.colors.primary600};
18
+ }
19
+ }
20
+
21
+ /* Show active style both on hover and when the action is selected */
22
+ ${r=>r.isActive&&Pe}
23
+ &:hover {
24
+ ${Pe}
25
+ }
26
+ `,wt=W.default.div`
27
+ flex: 1;
28
+ align-self: center;
29
+ border-top: 1px solid ${({theme:r})=>r.colors.neutral150};
30
+ `,ye=({subCategory:r})=>{const{formatMessage:e}=(0,v.useIntl)(),{onChange:t,onChangeSelectAll:i,onSelectedAction:u,selectedAction:l,modifiedData:d}=Y(),o=(0,s.useMemo)(()=>(0,j.get)(d,r.name,{}),[d,r]),n=(0,s.useMemo)(()=>Object.values(o).every(m=>m.enabled===!0),[o]),c=(0,s.useMemo)(()=>Object.values(o).some(m=>m.enabled===!0)&&!n,[o,n]),g=(0,s.useCallback)(({target:{name:m}})=>{i({target:{name:m,value:!n}})},[n,i]),y=(0,s.useCallback)(m=>l===m,[l]);return s.createElement(I.Box,null,s.createElement(Q.Flex,{justifyContent:"space-between",alignItems:"center"},s.createElement(I.Box,{paddingRight:4},s.createElement(P.Typography,{variant:"sigma",textColor:"neutral600"},r.label)),s.createElement(wt,null),s.createElement(I.Box,{paddingLeft:4},s.createElement(fe.Checkbox,{name:r.name,value:n,onValueChange:m=>g({target:{name:r.name,value:m}}),indeterminate:c},e({id:"app.utils.select-all",defaultMessage:"Select all"})))),s.createElement(Q.Flex,{paddingTop:6,paddingBottom:6},s.createElement(S.Grid,{gap:2,style:{flex:1}},r.actions.map(m=>{const R=`${m.name}.enabled`;return s.createElement(S.GridItem,{col:6,key:m.name},s.createElement(St,{isActive:y(m.name),padding:2,hasRadius:!0},s.createElement(fe.Checkbox,{value:(0,j.get)(d,R,!1),name:R,onValueChange:O=>t({target:{name:R,value:O}})},m.label),s.createElement("button",{type:"button","data-testid":"action-cog",onClick:()=>u(m.name),style:{display:"inline-flex",alignItems:"center"}},s.createElement(Lt(),null))))}))))};ye.propTypes={subCategory:h().object.isRequired};const Mt=ye;var Ut=Object.defineProperty,It=Object.defineProperties,jt=Object.getOwnPropertyDescriptors,Ee=Object.getOwnPropertySymbols,_t=Object.prototype.hasOwnProperty,Bt=Object.prototype.propertyIsEnumerable,ve=(r,e,t)=>e in r?Ut(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,xt=(r,e)=>{for(var t in e||(e={}))_t.call(e,t)&&ve(r,t,e[t]);if(Ee)for(var t of Ee(e))Bt.call(e,t)&&ve(r,t,e[t]);return r},Nt=(r,e)=>It(r,jt(e));const he=({name:r,permissions:e})=>{const t=(0,s.useMemo)(()=>ge()(Object.values(e.controllers).reduce((i,u,l)=>{const d=`${r}.controllers.${Object.keys(e.controllers)[l]}`,o=ge()(Object.keys(u).reduce((n,c)=>[...n,Nt(xt({},u[c]),{label:c,name:`${d}.${c}`})],[]),"label");return[...i,{actions:o,label:Object.keys(e.controllers)[l],name:d}]},[]),"label"),[r,e]);return s.createElement(I.Box,{padding:6},t.map(i=>s.createElement(Mt,{key:i.name,subCategory:i})))};he.propTypes={name:h().string.isRequired,permissions:h().object.isRequired};const Gt=he;var Ft=Object.defineProperty,Zt=Object.defineProperties,$t=Object.getOwnPropertyDescriptors,Oe=Object.getOwnPropertySymbols,kt=Object.prototype.hasOwnProperty,Vt=Object.prototype.propertyIsEnumerable,Re=(r,e,t)=>e in r?Ft(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ht=(r,e)=>{for(var t in e||(e={}))kt.call(e,t)&&Re(r,t,e[t]);if(Oe)for(var t of Oe(e))Vt.call(e,t)&&Re(r,t,e[t]);return r},Wt=(r,e)=>Zt(r,$t(e));const zt=(r,e)=>{const t=Object.keys(e).sort().map(i=>({name:i,isOpen:!1}));return Wt(Ht({},r),{collapses:t})};var z=a(49415),Kt=Object.defineProperty,Qt=Object.defineProperties,Xt=Object.getOwnPropertyDescriptors,Ce=Object.getOwnPropertySymbols,Yt=Object.prototype.hasOwnProperty,Jt=Object.prototype.propertyIsEnumerable,be=(r,e,t)=>e in r?Kt(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Te=(r,e)=>{for(var t in e||(e={}))Yt.call(e,t)&&be(r,t,e[t]);if(Ce)for(var t of Ce(e))Jt.call(e,t)&&be(r,t,e[t]);return r},De=(r,e)=>Qt(r,Xt(e));const qt={collapses:[]},er=(r,e)=>(0,z.default)(r,t=>{switch(e.type){case"TOGGLE_COLLAPSE":{t.collapses=r.collapses.map((i,u)=>u===e.index?De(Te({},i),{isOpen:!i.isOpen}):De(Te({},i),{isOpen:!1}));break}default:return t}}),tr=()=>{const{modifiedData:r}=Y(),{formatMessage:e}=(0,v.useIntl)(),[{collapses:t},i]=(0,s.useReducer)(er,qt,l=>zt(l,r)),u=l=>i({type:"TOGGLE_COLLAPSE",index:l});return s.createElement(L.Stack,{spacing:1},t.map((l,d)=>s.createElement(q.Accordion,{expanded:l.isOpen,onToggle:()=>u(d),key:l.name,variant:d%2===0?"secondary":void 0},s.createElement(q.AccordionToggle,{title:Tt(l.name),description:e({id:"users-permissions.Plugin.permissions.plugins.description",defaultMessage:"Define all allowed actions for the {name} plugin."},{name:l.name}),variant:d%2?"primary":"secondary"}),s.createElement(q.AccordionContent,null,s.createElement(I.Box,null,s.createElement(Gt,{permissions:r[l.name],name:l.name}))))))};var rr=Object.defineProperty,sr=Object.defineProperties,nr=Object.getOwnPropertyDescriptors,Ae=Object.getOwnPropertySymbols,or=Object.prototype.hasOwnProperty,ar=Object.prototype.propertyIsEnumerable,Le=(r,e,t)=>e in r?rr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ir=(r,e)=>{for(var t in e||(e={}))or.call(e,t)&&Le(r,t,e[t]);if(Ae)for(var t of Ae(e))ar.call(e,t)&&Le(r,t,e[t]);return r},lr=(r,e)=>sr(r,nr(e));const cr={initialData:{},modifiedData:{},routes:{},selectedAction:"",policies:[]},ur=(r,e)=>(0,z.default)(r,t=>{switch(e.type){case"ON_CHANGE":{const i=e.keys.length,u=e.keys[i-1]==="enabled";if(e.value&&u){const l=(0,j.take)(e.keys,i-1).join(".");t.selectedAction=l}(0,j.set)(t,["modifiedData",...e.keys],e.value);break}case"ON_CHANGE_SELECT_ALL":{const i=["modifiedData",...e.keys],u=(0,j.get)(r,i,{}),l=Object.keys(u).reduce((d,o)=>(d[o]=lr(ir({},u[o]),{enabled:e.value}),d),{});(0,j.set)(t,i,l);break}case"ON_RESET":{t.modifiedData=r.initialData;break}case"ON_SUBMIT_SUCCEEDED":{t.initialData=r.modifiedData;break}case"SELECT_ACTION":{const{actionToSelect:i}=e;t.selectedAction=i===r.selectedAction?"":i;break}default:return t}});var dr=Object.defineProperty,pr=Object.defineProperties,mr=Object.getOwnPropertyDescriptors,Se=Object.getOwnPropertySymbols,gr=Object.prototype.hasOwnProperty,fr=Object.prototype.propertyIsEnumerable,we=(r,e,t)=>e in r?dr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Pr=(r,e)=>{for(var t in e||(e={}))gr.call(e,t)&&we(r,t,e[t]);if(Se)for(var t of Se(e))fr.call(e,t)&&we(r,t,e[t]);return r},yr=(r,e)=>pr(r,mr(e));const Er=(r,e,t)=>yr(Pr({},r),{initialData:e,modifiedData:e,routes:t});var vr=Object.defineProperty,hr=Object.defineProperties,Or=Object.getOwnPropertyDescriptors,Me=Object.getOwnPropertySymbols,Rr=Object.prototype.hasOwnProperty,Cr=Object.prototype.propertyIsEnumerable,Ue=(r,e,t)=>e in r?vr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,br=(r,e)=>{for(var t in e||(e={}))Rr.call(e,t)&&Ue(r,t,e[t]);if(Me)for(var t of Me(e))Cr.call(e,t)&&Ue(r,t,e[t]);return r},Tr=(r,e)=>hr(r,Or(e));const Ie=(0,s.forwardRef)(({permissions:r,routes:e},t)=>{const{formatMessage:i}=(0,v.useIntl)(),[u,l]=(0,s.useReducer)(ur,cr,g=>Er(g,r,e));(0,s.useImperativeHandle)(t,()=>({getPermissions:()=>({permissions:u.modifiedData}),resetForm:()=>{l({type:"ON_RESET"})},setFormAfterSubmit:()=>{l({type:"ON_SUBMIT_SUCCEEDED"})}}));const d=({target:{name:g,value:y}})=>l({type:"ON_CHANGE",keys:g.split("."),value:y==="empty__string_value"?"":y}),o=({target:{name:g,value:y}})=>l({type:"ON_CHANGE_SELECT_ALL",keys:g.split("."),value:y}),n=g=>l({type:"SELECT_ACTION",actionToSelect:g}),c=Tr(br({},u),{onChange:d,onChangeSelectAll:o,onSelectedAction:n});return s.createElement(me,{value:c},s.createElement(S.Grid,{gap:0,shadow:"filterShadow",hasRadius:!0,background:"neutral0"},s.createElement(S.GridItem,{col:7,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},s.createElement(L.Stack,{spacing:6},s.createElement(L.Stack,{spacing:2},s.createElement(P.Typography,{variant:"delta",as:"h2"},i({id:(0,Z.Z)("Plugins.header.title"),defaultMessage:"Permissions"})),s.createElement(P.Typography,{as:"p",textColor:"neutral600"},i({id:(0,Z.Z)("Plugins.header.description"),defaultMessage:"Only actions bound by a route are listed below."}))),s.createElement(tr,null))),s.createElement(Ot,null)))});Ie.propTypes={permissions:h().object.isRequired,routes:h().object.isRequired};const je=(0,s.memo)(Ie),Ws={isLoading:!0,modifiedData:{}},zs=(r,e)=>produce(r,t=>{switch(e.type){case"GET_DATA":{t.isLoading=!0,t.modifiedData={};break}case"GET_DATA_SUCCEEDED":{t.isLoading=!1,t.modifiedData=e.data;break}case"GET_DATA_ERROR":{t.isLoading=!0;break}case"ON_SUBMIT_SUCCEEDED":{t.modifiedData=e.data;break}default:return t}}),Ks=null;var Dr=a(98399),Ar=(r,e,t)=>new Promise((i,u)=>{var l=n=>{try{o(t.next(n))}catch(c){u(c)}},d=n=>{try{o(t.throw(n))}catch(c){u(c)}},o=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);o((t=t.apply(r,e)).next())});const Qs=(r,e)=>{const{isLoading:t,allowedActions:i}=useRBAC(e),[{isLoading:u,modifiedData:l},d]=useReducer(reducer,initialState),o=useNotification(),n=useRef(!0),c=new AbortController,{signal:g}=c;useEffect(()=>(t||(()=>Ar(void 0,null,function*(){try{d({type:"GET_DATA"});const R=yield request(getRequestURL(r),{method:"GET",signal:g});d({type:"GET_DATA_SUCCEEDED",data:R})}catch(R){n.current&&(d({type:"GET_DATA_ERROR"}),Dr.error(R),o({type:"warning",message:{id:"notification.error"}}))}}))(),()=>{c.abort(),n.current=!1}),[t,r]);const y=useCallback(m=>{d({type:"ON_SUBMIT_SUCCEEDED",data:m})},[]);return{allowedActions:i,dispatchSubmitSucceeded:y,isLoading:u,isLoadingForPermissions:t,modifiedData:l}},Xs=null;var Lr=Object.defineProperty,Sr=Object.defineProperties,wr=Object.getOwnPropertyDescriptors,_e=Object.getOwnPropertySymbols,Mr=Object.prototype.hasOwnProperty,Ur=Object.prototype.propertyIsEnumerable,Be=(r,e,t)=>e in r?Lr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ir=(r,e)=>{for(var t in e||(e={}))Mr.call(e,t)&&Be(r,t,e[t]);if(_e)for(var t of _e(e))Ur.call(e,t)&&Be(r,t,e[t]);return r},jr=(r,e)=>Sr(r,wr(e));const Ys=(r,e)=>jr(Ir({},r),{isLoading:e}),Js=null,qs={roles:[],isLoading:!0},en=(r,e)=>produce(r,t=>{switch(e.type){case"GET_DATA":{t.isLoading=!0,t.roles=[];break}case"GET_DATA_SUCCEEDED":{t.roles=e.data,t.isLoading=!1;break}case"GET_DATA_ERROR":{t.isLoading=!1;break}default:return t}}),tn=null;var _r=(r,e,t)=>new Promise((i,u)=>{var l=n=>{try{o(t.next(n))}catch(c){u(c)}},d=n=>{try{o(t.throw(n))}catch(c){u(c)}},o=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);o((t=t.apply(r,e)).next())});const rn=(r=!0)=>{const[{roles:e,isLoading:t},i]=useReducer(reducer,initialState,()=>init(initialState,r)),u=useNotification(),l=useRef(!0),d=new AbortController,{signal:o}=d;useEffect(()=>(r&&n(),()=>{d.abort(),l.current=!1}),[r]);const n=()=>_r(void 0,null,function*(){try{i({type:"GET_DATA"});const{roles:c}=yield request(`/${pluginId}/roles`,{method:"GET",signal:o});i({type:"GET_DATA_SUCCEEDED",data:c})}catch(c){const g=get(c,["response","payload","message"],"An error occured");l.current&&(i({type:"GET_DATA_ERROR"}),g!=="Forbidden"&&u({type:"warning",message:g}))}});return{roles:e,isLoading:t,getData:n}},sn=null;var Br=Object.defineProperty,xr=Object.defineProperties,Nr=Object.getOwnPropertyDescriptors,xe=Object.getOwnPropertySymbols,Gr=Object.prototype.hasOwnProperty,Fr=Object.prototype.propertyIsEnumerable,Ne=(r,e,t)=>e in r?Br(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Zr=(r,e)=>{for(var t in e||(e={}))Gr.call(e,t)&&Ne(r,t,e[t]);if(xe)for(var t of xe(e))Fr.call(e,t)&&Ne(r,t,e[t]);return r},$r=(r,e)=>xr(r,Nr(e));const kr=(r,e)=>$r(Zr({},r),{isLoading:e});var K=a(15506);const Ge={permissions:{},routes:{},isLoading:!0},Vr=(r,e)=>(0,z.default)(r,t=>{switch(e.type){case"GET_DATA":{t.isLoading=!0,t.permissions={},t.routes={};break}case"GET_DATA_SUCCEEDED":{t.permissions=e.permissions,t.routes=e.routes,t.isLoading=!1;break}case"GET_DATA_ERROR":{t.isLoading=!1;break}default:return t}});var Fe=(r,e,t)=>new Promise((i,u)=>{var l=n=>{try{o(t.next(n))}catch(c){u(c)}},d=n=>{try{o(t.throw(n))}catch(c){u(c)}},o=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);o((t=t.apply(r,e)).next())});const Ze=(r=!0)=>{const e=(0,p.useNotification)(),[{permissions:t,routes:i,isLoading:u},l]=(0,s.useReducer)(Vr,Ge,()=>kr(Ge,r)),d=(0,s.useCallback)(()=>Fe(void 0,null,function*(){try{l({type:"GET_DATA"});const[{permissions:o},{routes:n}]=yield Promise.all([`/${b.Z}/permissions`,`/${b.Z}/routes`].map(c=>Fe(this,null,function*(){return(yield K.Z.get(c)).data})));l({type:"GET_DATA_SUCCEEDED",permissions:(0,x.YX)(o),routes:n})}catch(o){const n=(0,j.get)(o,["response","payload","message"],"An error occured");l({type:"GET_DATA_ERROR"}),n!=="Forbidden"&&e({type:"warning",message:n})}}),[e]);return(0,s.useEffect)(()=>{r&&d()},[d,r]),{permissions:t,routes:i,getData:d,isLoading:u}},Hr={role:{},isLoading:!0},Wr=(r,e)=>(0,z.default)(r,t=>{switch(e.type){case"GET_DATA_SUCCEEDED":{t.role=e.role,t.isLoading=!1;break}case"GET_DATA_ERROR":{t.isLoading=!1;break}case"ON_SUBMIT_SUCCEEDED":{t.role.name=e.name,t.role.description=e.description;break}default:return t}});var zr=a(98399),Kr=Object.defineProperty,Qr=Object.defineProperties,Xr=Object.getOwnPropertyDescriptors,$e=Object.getOwnPropertySymbols,Yr=Object.prototype.hasOwnProperty,Jr=Object.prototype.propertyIsEnumerable,ke=(r,e,t)=>e in r?Kr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ve=(r,e)=>{for(var t in e||(e={}))Yr.call(e,t)&&ke(r,t,e[t]);if($e)for(var t of $e(e))Jr.call(e,t)&&ke(r,t,e[t]);return r},qr=(r,e)=>Qr(r,Xr(e)),es=(r,e,t)=>new Promise((i,u)=>{var l=n=>{try{o(t.next(n))}catch(c){u(c)}},d=n=>{try{o(t.throw(n))}catch(c){u(c)}},o=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);o((t=t.apply(r,e)).next())});const ts=r=>{const[e,t]=(0,s.useReducer)(Wr,Hr),i=(0,p.useNotification)(),u=(0,s.useRef)(null);(0,s.useEffect)(()=>(u.current=!0,r?l(r):t({type:"GET_DATA_SUCCEEDED",role:{}}),()=>u.current=!1),[r]);const l=o=>es(void 0,null,function*(){try{const{data:{role:n}}=yield K.Z.get(`/${b.Z}/roles/${o}`);u.current&&t({type:"GET_DATA_SUCCEEDED",role:n})}catch(n){zr.error(n),t({type:"GET_DATA_ERROR"}),i({type:"warning",message:{id:"notification.error"}})}}),d=(0,s.useCallback)(o=>{t(Ve({type:"ON_SUBMIT_SUCCEEDED"},o))},[]);return qr(Ve({},e),{onSubmitSucceeded:d})};var $=a(5173);const rs=$.Ry().shape({name:$.Z_().required(p.translatedErrors.required),description:$.Z_().required(p.translatedErrors.required)});var ss=a(98399),ns=Object.defineProperty,os=Object.defineProperties,as=Object.getOwnPropertyDescriptors,He=Object.getOwnPropertySymbols,is=Object.prototype.hasOwnProperty,ls=Object.prototype.propertyIsEnumerable,We=(r,e,t)=>e in r?ns(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ze=(r,e)=>{for(var t in e||(e={}))is.call(e,t)&&We(r,t,e[t]);if(He)for(var t of He(e))ls.call(e,t)&&We(r,t,e[t]);return r},cs=(r,e)=>os(r,as(e)),us=(r,e,t)=>new Promise((i,u)=>{var l=n=>{try{o(t.next(n))}catch(c){u(c)}},d=n=>{try{o(t.throw(n))}catch(c){u(c)}},o=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);o((t=t.apply(r,e)).next())});const ds=()=>{const{formatMessage:r}=(0,v.useIntl)(),[e,t]=(0,s.useState)(!1),i=(0,p.useNotification)(),{lockApp:u,unlockApp:l}=(0,p.useOverlayBlocker)(),{params:{id:d}}=(0,C.useRouteMatch)(`/settings/${b.Z}/roles/:id`),{isLoading:o,routes:n}=Ze(),{role:c,onSubmitSucceeded:g,isLoading:y}=ts(d),m=(0,s.useRef)(),R=O=>us(void 0,null,function*(){u(),t(!0);try{const w=m.current.getPermissions();yield K.Z.put(`/${b.Z}/roles/${d}`,cs(ze(ze({},O),w),{users:[]})),g({name:O.name,description:O.description}),i({type:"success",message:{id:(0,Z.Z)("Settings.roles.edited"),defaultMessage:"Role edited"}})}catch(w){ss.error(w),i({type:"warning",message:{id:"notification.error",defaultMessage:"An error occurred"}})}t(!1),l()});return y?s.createElement(p.LoadingIndicatorPage,null):s.createElement(E.Main,null,s.createElement(p.SettingsPageTitle,{name:"Roles"}),s.createElement(le.Formik,{enableReinitialize:!0,initialValues:{name:c.name,description:c.description},onSubmit:R,validationSchema:rs},({handleSubmit:O,values:w,handleChange:M,errors:k})=>s.createElement(p.Form,{noValidate:!0,onSubmit:O},s.createElement(D.HeaderLayout,{primaryAction:!o&&s.createElement(_.Button,{disabled:c.code==="strapi-super-admin",type:"submit",loading:e,startIcon:s.createElement(de(),null)},r({id:"global.save",defaultMessage:"Save"})),title:c.name,subtitle:c.description,navigationAction:s.createElement(p.Link,{startIcon:s.createElement(pt(),null),to:"/settings/users-permissions/roles"},r({id:"global.back",defaultMessage:"Back"}))}),s.createElement(D.ContentLayout,null,s.createElement(L.Stack,{spacing:7},s.createElement(I.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},s.createElement(L.Stack,{spacing:4},s.createElement(P.Typography,{variant:"delta",as:"h2"},r({id:(0,Z.Z)("EditPage.form.roles"),defaultMessage:"Role details"})),s.createElement(S.Grid,{gap:4},s.createElement(S.GridItem,{col:6},s.createElement(ce.TextInput,{name:"name",value:w.name||"",onChange:M,label:r({id:"global.name",defaultMessage:"Name"}),error:k.name?r({id:k.name,defaultMessage:"Invalid value"}):null})),s.createElement(S.GridItem,{col:6},s.createElement(ue.Textarea,{name:"description",value:w.description||"",onChange:M,label:r({id:"global.description",defaultMessage:"Description"}),error:k.description?r({id:k.description,defaultMessage:"Invalid value"}):null}))))),!o&&s.createElement(je,{ref:m,permissions:c.permissions,routes:n}))))))},ps=()=>s.createElement(p.CheckPagePermissions,{permissions:T.Z.updateRole},s.createElement(ds,null)),ms=$.Ry().shape({name:$.Z_().required(p.translatedErrors.required),description:$.Z_().required(p.translatedErrors.required)});var gs=a(98399),fs=Object.defineProperty,Ps=Object.defineProperties,ys=Object.getOwnPropertyDescriptors,Ke=Object.getOwnPropertySymbols,Es=Object.prototype.hasOwnProperty,vs=Object.prototype.propertyIsEnumerable,Qe=(r,e,t)=>e in r?fs(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Xe=(r,e)=>{for(var t in e||(e={}))Es.call(e,t)&&Qe(r,t,e[t]);if(Ke)for(var t of Ke(e))vs.call(e,t)&&Qe(r,t,e[t]);return r},hs=(r,e)=>Ps(r,ys(e)),Os=(r,e,t)=>new Promise((i,u)=>{var l=n=>{try{o(t.next(n))}catch(c){u(c)}},d=n=>{try{o(t.throw(n))}catch(c){u(c)}},o=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,d);o((t=t.apply(r,e)).next())});const Rs=()=>{const{formatMessage:r}=(0,v.useIntl)(),[e,t]=(0,s.useState)(!1),i=(0,p.useNotification)(),{goBack:u}=(0,C.useHistory)(),{lockApp:l,unlockApp:d}=(0,p.useOverlayBlocker)(),{isLoading:o,permissions:n,routes:c}=Ze(),{trackUsage:g}=(0,p.useTracking)(),y=(0,s.useRef)(),m=R=>Os(void 0,null,function*(){l(),t(!0);try{const O=y.current.getPermissions();yield K.Z.post(`/${b.Z}/roles`,hs(Xe(Xe({},R),O),{users:[]})),g("didCreateRole"),i({type:"success",message:{id:(0,Z.Z)("Settings.roles.created"),defaultMessage:"Role created"}}),u()}catch(O){gs.error(O),i({type:"warning",message:{id:"notification.error",defaultMessage:"An error occurred"}})}t(!1),d()});return s.createElement(E.Main,null,s.createElement(p.SettingsPageTitle,{name:"Roles"}),s.createElement(le.Formik,{enableReinitialize:!0,initialValues:{name:"",description:""},onSubmit:m,validationSchema:ms},({handleSubmit:R,values:O,handleChange:w,errors:M})=>s.createElement(p.Form,{noValidate:!0,onSubmit:R},s.createElement(D.HeaderLayout,{primaryAction:!o&&s.createElement(_.Button,{type:"submit",loading:e,startIcon:s.createElement(de(),null)},r({id:"global.save",defaultMessage:"Save"})),title:r({id:"Settings.roles.create.title",defaultMessage:"Create a role"}),subtitle:r({id:"Settings.roles.create.description",defaultMessage:"Define the rights given to the role"})}),s.createElement(D.ContentLayout,null,s.createElement(L.Stack,{spacing:7},s.createElement(I.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},s.createElement(L.Stack,{spacing:4},s.createElement(P.Typography,{variant:"delta",as:"h2"},r({id:(0,Z.Z)("EditPage.form.roles"),defaultMessage:"Role details"})),s.createElement(S.Grid,{gap:4},s.createElement(S.GridItem,{col:6},s.createElement(ce.TextInput,{name:"name",value:O.name||"",onChange:w,label:r({id:"global.name",defaultMessage:"Name"}),error:M.name?r({id:M.name,defaultMessage:"Invalid value"}):null})),s.createElement(S.GridItem,{col:6},s.createElement(ue.Textarea,{name:"description",value:O.description||"",onChange:w,label:r({id:"global.description",defaultMessage:"Description"}),error:M.description?r({id:M.description,defaultMessage:"Invalid value"}):null}))))),!o&&s.createElement(je,{ref:y,permissions:n,routes:c}))))))},Cs=()=>s.createElement(p.CheckPagePermissions,{permissions:T.Z.createRole},s.createElement(Rs,null)),bs=()=>s.createElement(p.CheckPagePermissions,{permissions:T.Z.accessRoles},s.createElement(C.Switch,null,s.createElement(C.Route,{path:`/settings/${b.Z}/roles/new`,component:Cs,exact:!0}),s.createElement(C.Route,{path:`/settings/${b.Z}/roles/:id`,component:ps,exact:!0}),s.createElement(C.Route,{path:`/settings/${b.Z}/roles`,component:ut,exact:!0}),s.createElement(C.Route,{path:"",component:p.NotFound})))},15506:(te,G,a)=>{a.d(G,{Z:()=>D});var s=a(43653),C=a.n(s),p=a(10938),b=a.n(p),T=(E,f,U)=>new Promise((P,B)=>{var F=A=>{try{v(U.next(A))}catch(V){B(V)}},N=A=>{try{v(U.throw(A))}catch(V){B(V)}},v=A=>A.done?P(A.value):Promise.resolve(A.value).then(F,N);v((U=U.apply(E,f)).next())});const _=C().create({baseURL:"http://localhost:1337"});_.interceptors.request.use(E=>T(void 0,null,function*(){return E.headers={Authorization:`Bearer ${p.auth.getToken()}`,Accept:"application/json","Content-Type":"application/json"},E}),E=>{Promise.reject(E)}),_.interceptors.response.use(E=>E,E=>{var f;throw((f=E.response)==null?void 0:f.status)===401&&(p.auth.clearAppStorage(),window.location.reload()),E});const D=_},33234:(te,G,a)=>{a.d(G,{be:()=>s.Z,YX:()=>b,Gc:()=>D,OB:()=>E.Z});var s=a(15506),C=a(92891);const b=f=>Object.keys(f).reduce((U,P)=>{const B=f[P].controllers,F=Object.keys(B).reduce((N,v)=>((0,C.isEmpty)(B[v])||(N[v]=B[v]),N),{});return(0,C.isEmpty)(F)||(U[P]={controllers:F}),U},{});var T=a(42296);const D=f=>`/${T.Z}/${f}`;var E=a(71810)}}]);
@@ -1,4 +1,4 @@
1
- (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{49750:function(B,A,a){(function(e,i){B.exports=i(a(32735))})(this,function(e){return function(i){var P={};function c(o){if(P[o])return P[o].exports;var g=P[o]={i:o,l:!1,exports:{}};return i[o].call(g.exports,g,g.exports,c),g.l=!0,g.exports}return c.m=i,c.c=P,c.d=function(o,g,v){c.o(o,g)||Object.defineProperty(o,g,{enumerable:!0,get:v})},c.r=function(o){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},c.t=function(o,g){if(1&g&&(o=c(o)),8&g||4&g&&typeof o=="object"&&o&&o.__esModule)return o;var v=Object.create(null);if(c.r(v),Object.defineProperty(v,"default",{enumerable:!0,value:o}),2&g&&typeof o!="string")for(var k in o)c.d(v,k,function(d){return o[d]}.bind(null,k));return v},c.n=function(o){var g=o&&o.__esModule?function(){return o.default}:function(){return o};return c.d(g,"a",g),g},c.o=function(o,g){return Object.prototype.hasOwnProperty.call(o,g)},c.p="",c(c.s=145)}({0:function(i,P){i.exports=e},145:function(i,P,c){"use strict";c.r(P);var o=c(0);function g(){return(g=Object.assign||function(v){for(var k=1;k<arguments.length;k++){var d=arguments[k];for(var V in d)Object.prototype.hasOwnProperty.call(d,V)&&(v[V]=d[V])}return v}).apply(this,arguments)}P.default=function(v){return o.createElement("svg",g({width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},v),o.createElement("path",{d:"M4 20.252V3.748a1 1 0 011.507-.862l14.028 8.252a1 1 0 010 1.724L5.507 21.113A1 1 0 014 20.252z",fill:"#212134"}))}}})})},26972:(B,A,a)=>{"use strict";a.d(A,{Z:()=>dt});var e=a(32735),i=a(10938),P=a(16540),c=a(84968),o=a(5141),g=a(41072),v=a(16558),k=a(60216),d=a.n(k),V=a(98599),Ee=a.n(V),ye=a(88677),Y=a.n(ye),be=a(49750),Pe=a.n(be),q=a(11856),F=a(9808),_=a(44526),Ce=a(58434),S=a(90662),z=a(37178),O=a(78330),D=a(83281),L=a(5636),ee=a(20001),I=a(95602),te=a(19615),Oe=a(35980),Me=a(52111),Se=a(23940),Ie=a.n(Se);const H=({disabledEvents:n,name:t,events:r,inputValue:s,handleChange:m,handleChangeAll:E})=>{const b=r.filter(u=>!n.includes(u)),l=s.length===b.length,p=s.length>0,y=({target:{name:u}})=>{E({target:{name:u,value:!l}})};return e.createElement("tr",null,e.createElement("td",null,e.createElement(Me.Checkbox,{indeterminate:p&&!l,"aria-label":"Select all entries",name:t,onChange:y,value:l},Ie()(t))),r.map(u=>e.createElement("td",{key:u},e.createElement(Oe.BaseCheckbox,{disabled:n.includes(u),"aria-label":u,name:u,value:s.includes(u),onValueChange:h=>m({target:{name:u,value:h}})}))))};H.defaultProps={disabledEvents:[],events:[],inputValue:[],handleChange:()=>{},handleChangeAll:()=>{}},H.propTypes={disabledEvents:d().array,events:d().array,inputValue:d().array,handleChange:d().func,handleChangeAll:d().func,name:d().string.isRequired};const xe=H,Te=n=>n.reduce((t,r)=>{const s=r.split(".")[0];return t[s]||(t[s]=[]),t[s].push(r),t},{}),we=te.default.table`
1
+ (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{49750:function(B,A,a){(function(e,i){B.exports=i(a(32735))})(this,function(e){return function(i){var P={};function c(o){if(P[o])return P[o].exports;var g=P[o]={i:o,l:!1,exports:{}};return i[o].call(g.exports,g,g.exports,c),g.l=!0,g.exports}return c.m=i,c.c=P,c.d=function(o,g,v){c.o(o,g)||Object.defineProperty(o,g,{enumerable:!0,get:v})},c.r=function(o){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},c.t=function(o,g){if(1&g&&(o=c(o)),8&g||4&g&&typeof o=="object"&&o&&o.__esModule)return o;var v=Object.create(null);if(c.r(v),Object.defineProperty(v,"default",{enumerable:!0,value:o}),2&g&&typeof o!="string")for(var k in o)c.d(v,k,function(d){return o[d]}.bind(null,k));return v},c.n=function(o){var g=o&&o.__esModule?function(){return o.default}:function(){return o};return c.d(g,"a",g),g},c.o=function(o,g){return Object.prototype.hasOwnProperty.call(o,g)},c.p="",c(c.s=145)}({0:function(i,P){i.exports=e},145:function(i,P,c){"use strict";c.r(P);var o=c(0);function g(){return(g=Object.assign||function(v){for(var k=1;k<arguments.length;k++){var d=arguments[k];for(var V in d)Object.prototype.hasOwnProperty.call(d,V)&&(v[V]=d[V])}return v}).apply(this,arguments)}P.default=function(v){return o.createElement("svg",g({width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},v),o.createElement("path",{d:"M4 20.252V3.748a1 1 0 011.507-.862l14.028 8.252a1 1 0 010 1.724L5.507 21.113A1 1 0 014 20.252z",fill:"#212134"}))}}})})},26972:(B,A,a)=>{"use strict";a.d(A,{Z:()=>it});var e=a(32735),i=a(10938),P=a(16540),c=a(84968),o=a(5141),g=a(41072),v=a(16558),k=a(60216),d=a.n(k),V=a(98599),Ee=a.n(V),ye=a(88677),Y=a.n(ye),be=a(49750),Pe=a.n(be),q=a(11856),F=a(9808),_=a(44526),S=a(90662),z=a(37178),O=a(78330),D=a(83281),L=a(5636),ee=a(20001),I=a(95602),te=a(19615),Ce=a(35980),Oe=a(52111),Me=a(23940),Se=a.n(Me);const H=({disabledEvents:n,name:t,events:r,inputValue:s,handleChange:m,handleChangeAll:E})=>{const b=r.filter(u=>!n.includes(u)),l=s.length===b.length,f=s.length>0,y=({target:{name:u}})=>{E({target:{name:u,value:!l}})};return e.createElement("tr",null,e.createElement("td",null,e.createElement(Oe.Checkbox,{indeterminate:f&&!l,"aria-label":"Select all entries",name:t,onChange:y,value:l},Se()(t))),r.map(u=>e.createElement("td",{key:u},e.createElement(Ce.BaseCheckbox,{disabled:n.includes(u),"aria-label":u,name:u,value:s.includes(u),onValueChange:h=>m({target:{name:u,value:h}})}))))};H.defaultProps={disabledEvents:[],events:[],inputValue:[],handleChange:()=>{},handleChangeAll:()=>{}},H.propTypes={disabledEvents:d().array,events:d().array,inputValue:d().array,handleChange:d().func,handleChangeAll:d().func,name:d().string.isRequired};const Ie=H,xe=n=>n.reduce((t,r)=>{const s=r.split(".")[0];return t[s]||(t[s]=[]),t[s].push(r),t},{}),Te=te.default.table`
2
2
  td {
3
3
  height: ${52/16}rem;
4
4
  width: 10%;
@@ -13,11 +13,11 @@
13
13
  tbody tr td:first-child {
14
14
  padding-left: ${({theme:n})=>n.spaces[7]};
15
15
  }
16
- `,W={headers:{default:["Settings.webhooks.events.create","Settings.webhooks.events.update","app.utils.delete"],draftAndPublish:["Settings.webhooks.events.create","Settings.webhooks.events.update","app.utils.delete","app.utils.publish","app.utils.unpublish"]},events:{default:{entry:["entry.create","entry.update","entry.delete"],media:["media.create","media.update","media.delete"]},draftAndPublish:{entry:["entry.create","entry.update","entry.delete","entry.publish","entry.unpublish"],media:["media.create","media.update","media.delete"]}}},ne=({isDraftAndPublish:n})=>{const t=n?W.headers.draftAndPublish:W.headers.default,r=n?W.events.draftAndPublish:W.events.default,{formatMessage:s}=(0,L.useIntl)(),{values:m,handleChange:E}=(0,D.useFormikContext)(),b="events",l=m.events,p=[],y=Te(l),u=({target:{name:f,value:T}})=>{let C=new Set(l);T?C.add(f):C.delete(f),E({target:{name:b,value:Array.from(C)}})},h=({target:{name:f,value:T}})=>{let C=new Set(l);T?r[f].forEach(w=>{p.includes(w)||C.add(w)}):r[f].forEach(w=>C.delete(w)),E({target:{name:b,value:Array.from(C)}})};return e.createElement(S.Stack,{spacing:1},e.createElement(ee.FieldLabel,null,s({id:"Settings.webhooks.form.events",defaultMessage:"Events"})),e.createElement(we,null,e.createElement("thead",null,e.createElement("tr",null,e.createElement("td",null),t.map(f=>f==="app.utils.publish"||f==="app.utils.unpublish"?e.createElement("td",{key:f,title:s({id:"Settings.webhooks.event.publish-tooltip",defaultMessage:"This event only exists for contents with Draft/Publish system enabled"})},e.createElement(I.Typography,{variant:"sigma",textColor:"neutral600"},s({id:f,defaultMessage:f}))):e.createElement("td",{key:f},e.createElement(I.Typography,{variant:"sigma",textColor:"neutral600"},s({id:f,defaultMessage:f})))))),e.createElement("tbody",null,Object.keys(r).map(f=>e.createElement(xe,{disabledEvents:p,key:f,name:f,events:r[f],inputValue:y[f],handleChange:u,handleChangeAll:h})))))};ne.propTypes={isDraftAndPublish:d().bool.isRequired};const Re=ne;var Ae=a(59290),ke=a.n(Ae),j=a(19192),De=a(74201),re=a(14715);const ae=["A-IM","Accept","Accept-Charset","Accept-Encoding","Accept-Language","Accept-Datetime","Access-Control-Request-Method","Access-Control-Request-Headers","Authorization","Cache-Control","Connection","Content-Length","Content-Type","Cookie","Date","Expect","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Max-Forwards","Origin","Pragma","Proxy-Authorization","Range","Referer","TE","User-Agent","Upgrade","Via","Warning"];var Le=Object.defineProperty,je=Object.defineProperties,Ve=Object.getOwnPropertyDescriptors,U=Object.getOwnPropertySymbols,se=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable,le=(n,t,r)=>t in n?Le(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r,Be=(n,t)=>{for(var r in t||(t={}))se.call(t,r)&&le(n,r,t[r]);if(U)for(var r of U(t))oe.call(t,r)&&le(n,r,t[r]);return n},Fe=(n,t)=>je(n,Ve(t)),We=(n,t)=>{var r={};for(var s in n)se.call(n,s)&&t.indexOf(s)<0&&(r[s]=n[s]);if(n!=null&&U)for(var s of U(n))t.indexOf(s)<0&&oe.call(n,s)&&(r[s]=n[s]);return r};const N=n=>{var t=n,{name:r,onChange:s,value:m}=t,E=We(t,["name","onChange","value"]);const[b,l]=(0,e.useState)(m?[...ae,m]:ae),p=u=>{s({target:{name:r,value:u}})},y=u=>{l(h=>[...h,u]),s({target:{name:r,value:u}})};return e.createElement(re.CreatableCombobox,Fe(Be({},E),{onChange:p,onCreateOption:y,placeholder:"",value:m}),b.map(u=>e.createElement(re.ComboboxOption,{value:u,key:u},u)))};N.defaultProps={value:void 0},N.propTypes={name:d().string.isRequired,onChange:d().func.isRequired,value:d().string};const Ue=N,$e=()=>{const{formatMessage:n}=(0,L.useIntl)(),{values:t,errors:r}=(0,D.useFormikContext)();return e.createElement(S.Stack,{spacing:1},e.createElement(ee.FieldLabel,null,n({id:"Settings.webhooks.form.headers",defaultMessage:"Headers"})),e.createElement(F.Box,{padding:8,background:"neutral100",hasRadius:!0},e.createElement(D.FieldArray,{validateOnChange:!1,name:"headers",render:({push:s,remove:m})=>{var E;return e.createElement(O.Grid,{gap:4},(E=t.headers)==null?void 0:E.map((b,l)=>{var p,y,u,h,f,T,C,w,G,K;return e.createElement(e.Fragment,{key:l},e.createElement(O.GridItem,{col:6},e.createElement(D.Field,{as:Ue,name:`headers.${l}.key`,"aria-label":`row ${l+1} key`,label:n({id:"Settings.webhooks.key",defaultMessage:"Key"}),error:((y=(p=r.headers)==null?void 0:p[l])==null?void 0:y.key)&&n({id:(u=r.headers[l])==null?void 0:u.key,defaultMessage:(h=r.headers[l])==null?void 0:h.key})})),e.createElement(O.GridItem,{col:6},e.createElement(j.Flex,{alignItems:"flex-end"},e.createElement(F.Box,{style:{flex:1}},e.createElement(D.Field,{as:z.TextInput,"aria-label":`row ${l+1} value`,label:n({id:"Settings.webhooks.value",defaultMessage:"Value"}),name:`headers.${l}.value`,error:((T=(f=r.headers)==null?void 0:f[l])==null?void 0:T.value)&&n({id:(C=r.headers[l])==null?void 0:C.value,defaultMessage:(w=r.headers[l])==null?void 0:w.value})})),e.createElement(j.Flex,{paddingLeft:2,style:{alignSelf:"center"},paddingTop:(K=(G=r.headers)==null?void 0:G[l])!=null&&K.value?0:5},e.createElement(i.RemoveRoundedButton,{onClick:()=>t.headers.length!==1&&m(l),label:n({id:"Settings.webhooks.headers.remove",defaultMessage:"Remove header row {number}"},{number:l+1})})))))}),e.createElement(O.GridItem,{col:12},e.createElement(De.TextButton,{type:"button",onClick:()=>{s({key:"",value:""})},startIcon:e.createElement(ke(),null)},n({id:"Settings.webhooks.create.header",defaultMessage:"Create new header"}))))}})))};var Ge=a(94009),ie=a.n(Ge),Ke=a(103),ze=a.n(Ke);const $=te.default.svg(({theme:n,color:t})=>`
16
+ `,W={headers:{default:["Settings.webhooks.events.create","Settings.webhooks.events.update","app.utils.delete"],draftAndPublish:["Settings.webhooks.events.create","Settings.webhooks.events.update","app.utils.delete","app.utils.publish","app.utils.unpublish"]},events:{default:{entry:["entry.create","entry.update","entry.delete"],media:["media.create","media.update","media.delete"]},draftAndPublish:{entry:["entry.create","entry.update","entry.delete","entry.publish","entry.unpublish"],media:["media.create","media.update","media.delete"]}}},ne=({isDraftAndPublish:n})=>{const t=n?W.headers.draftAndPublish:W.headers.default,r=n?W.events.draftAndPublish:W.events.default,{formatMessage:s}=(0,L.useIntl)(),{values:m,handleChange:E}=(0,D.useFormikContext)(),b="events",l=m.events,f=[],y=xe(l),u=({target:{name:p,value:T}})=>{let C=new Set(l);T?C.add(p):C.delete(p),E({target:{name:b,value:Array.from(C)}})},h=({target:{name:p,value:T}})=>{let C=new Set(l);T?r[p].forEach(w=>{f.includes(w)||C.add(w)}):r[p].forEach(w=>C.delete(w)),E({target:{name:b,value:Array.from(C)}})};return e.createElement(S.Stack,{spacing:1},e.createElement(ee.FieldLabel,null,s({id:"Settings.webhooks.form.events",defaultMessage:"Events"})),e.createElement(Te,null,e.createElement("thead",null,e.createElement("tr",null,e.createElement("td",null),t.map(p=>p==="app.utils.publish"||p==="app.utils.unpublish"?e.createElement("td",{key:p,title:s({id:"Settings.webhooks.event.publish-tooltip",defaultMessage:"This event only exists for contents with Draft/Publish system enabled"})},e.createElement(I.Typography,{variant:"sigma",textColor:"neutral600"},s({id:p,defaultMessage:p}))):e.createElement("td",{key:p},e.createElement(I.Typography,{variant:"sigma",textColor:"neutral600"},s({id:p,defaultMessage:p})))))),e.createElement("tbody",null,Object.keys(r).map(p=>e.createElement(Ie,{disabledEvents:f,key:p,name:p,events:r[p],inputValue:y[p],handleChange:u,handleChangeAll:h})))))};ne.propTypes={isDraftAndPublish:d().bool.isRequired};const we=ne;var Re=a(59290),Ae=a.n(Re),j=a(19192),ke=a(74201),re=a(14715);const ae=["A-IM","Accept","Accept-Charset","Accept-Encoding","Accept-Language","Accept-Datetime","Access-Control-Request-Method","Access-Control-Request-Headers","Authorization","Cache-Control","Connection","Content-Length","Content-Type","Cookie","Date","Expect","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Max-Forwards","Origin","Pragma","Proxy-Authorization","Range","Referer","TE","User-Agent","Upgrade","Via","Warning"];var De=Object.defineProperty,Le=Object.defineProperties,je=Object.getOwnPropertyDescriptors,U=Object.getOwnPropertySymbols,se=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable,le=(n,t,r)=>t in n?De(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r,Ve=(n,t)=>{for(var r in t||(t={}))se.call(t,r)&&le(n,r,t[r]);if(U)for(var r of U(t))oe.call(t,r)&&le(n,r,t[r]);return n},Be=(n,t)=>Le(n,je(t)),Fe=(n,t)=>{var r={};for(var s in n)se.call(n,s)&&t.indexOf(s)<0&&(r[s]=n[s]);if(n!=null&&U)for(var s of U(n))t.indexOf(s)<0&&oe.call(n,s)&&(r[s]=n[s]);return r};const N=n=>{var t=n,{name:r,onChange:s,value:m}=t,E=Fe(t,["name","onChange","value"]);const[b,l]=(0,e.useState)(m?[...ae,m]:ae),f=u=>{s({target:{name:r,value:u}})},y=u=>{l(h=>[...h,u]),s({target:{name:r,value:u}})};return e.createElement(re.CreatableCombobox,Be(Ve({},E),{onChange:f,onCreateOption:y,placeholder:"",value:m}),b.map(u=>e.createElement(re.ComboboxOption,{value:u,key:u},u)))};N.defaultProps={value:void 0},N.propTypes={name:d().string.isRequired,onChange:d().func.isRequired,value:d().string};const We=N,Ue=()=>{const{formatMessage:n}=(0,L.useIntl)(),{values:t,errors:r}=(0,D.useFormikContext)();return e.createElement(S.Stack,{spacing:1},e.createElement(ee.FieldLabel,null,n({id:"Settings.webhooks.form.headers",defaultMessage:"Headers"})),e.createElement(F.Box,{padding:8,background:"neutral100",hasRadius:!0},e.createElement(D.FieldArray,{validateOnChange:!1,name:"headers",render:({push:s,remove:m})=>{var E;return e.createElement(O.Grid,{gap:4},(E=t.headers)==null?void 0:E.map((b,l)=>{var f,y,u,h,p,T,C,w,G,K;return e.createElement(e.Fragment,{key:l},e.createElement(O.GridItem,{col:6},e.createElement(D.Field,{as:We,name:`headers.${l}.key`,"aria-label":`row ${l+1} key`,label:n({id:"Settings.webhooks.key",defaultMessage:"Key"}),error:((y=(f=r.headers)==null?void 0:f[l])==null?void 0:y.key)&&n({id:(u=r.headers[l])==null?void 0:u.key,defaultMessage:(h=r.headers[l])==null?void 0:h.key})})),e.createElement(O.GridItem,{col:6},e.createElement(j.Flex,{alignItems:"flex-end"},e.createElement(F.Box,{style:{flex:1}},e.createElement(D.Field,{as:z.TextInput,"aria-label":`row ${l+1} value`,label:n({id:"Settings.webhooks.value",defaultMessage:"Value"}),name:`headers.${l}.value`,error:((T=(p=r.headers)==null?void 0:p[l])==null?void 0:T.value)&&n({id:(C=r.headers[l])==null?void 0:C.value,defaultMessage:(w=r.headers[l])==null?void 0:w.value})})),e.createElement(j.Flex,{paddingLeft:2,style:{alignSelf:"center"},paddingTop:(K=(G=r.headers)==null?void 0:G[l])!=null&&K.value?0:5},e.createElement(i.RemoveRoundedButton,{onClick:()=>t.headers.length!==1&&m(l),label:n({id:"Settings.webhooks.headers.remove",defaultMessage:"Remove header row {number}"},{number:l+1})})))))}),e.createElement(O.GridItem,{col:12},e.createElement(ke.TextButton,{type:"button",onClick:()=>{s({key:"",value:""})},startIcon:e.createElement(Ae(),null)},n({id:"Settings.webhooks.create.header",defaultMessage:"Create new header"}))))}})))};var $e=a(94009),ie=a.n($e),Ge=a(103),Ke=a.n(Ge);const $=te.default.svg(({theme:n,color:t})=>`
17
17
  width: ${12/16}rem;
18
18
  height: ${12/16}rem;
19
19
 
20
20
  path {
21
21
  fill: ${n.colors[t]};
22
22
  }
23
- `),Z=({isPending:n,statusCode:t})=>{const{formatMessage:r}=(0,L.useIntl)();return n?e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement($,{as:ze()}),e.createElement(I.Typography,null,r({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):t>=200&&t<300?e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement($,{as:Y(),color:"success700"}),e.createElement(I.Typography,null,r({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):t>=300?e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement($,{as:ie(),color:"danger700"}),e.createElement(I.Typography,null,r({id:"Settings.error",defaultMessage:"error"})," ",t)):null};Z.propTypes={isPending:d().bool.isRequired,statusCode:d().number},Z.defaultProps={statusCode:void 0};const X=({statusCode:n,message:t})=>{const{formatMessage:r}=(0,L.useIntl)();return n>=200&&n<300?e.createElement(j.Flex,{justifyContent:"flex-end"},e.createElement(I.Typography,{textColor:"neutral600",ellipsis:!0},r({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(j.Flex,{justifyContent:"flex-end"},e.createElement(j.Flex,{maxWidth:(0,i.pxToRem)(250),justifyContent:"flex-end",title:t},e.createElement(I.Typography,{ellipsis:!0,textColor:"neutral600"},t))):null};X.propTypes={statusCode:d().number,message:d().string},X.defaultProps={statusCode:void 0,message:void 0};const de=({onCancel:n})=>{const{formatMessage:t}=(0,L.useIntl)();return e.createElement(j.Flex,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement(I.Typography,{textColor:"neutral400"},t({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement($,{as:ie(),color:"neutral400"}))))};de.propTypes={onCancel:d().func.isRequired};const Q=({isPending:n,onCancel:t,response:r})=>{const{statusCode:s,message:m}=r,{formatMessage:E}=(0,L.useIntl)();return e.createElement(F.Box,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(O.Grid,{gap:4,style:{alignItems:"center"}},e.createElement(O.GridItem,{col:3},e.createElement(I.Typography,null,E({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(O.GridItem,{col:3},e.createElement(Z,{isPending:n,statusCode:s})),e.createElement(O.GridItem,{col:6},n?e.createElement(de,{onCancel:t}):e.createElement(X,{statusCode:s,message:m}))))};Q.defaultProps={isPending:!1,onCancel:()=>{},response:{}},Q.propTypes={isPending:d().bool,onCancel:d().func,response:d().object};const He=Q;var x=a(5173);const Ne=new RegExp("(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)"),Ze=new RegExp("(^$)|((https?://.*)(d*)/?(.*))"),Xe=x.Ry().shape({name:x.Z_(i.translatedErrors.string).required(i.translatedErrors.required).matches(Ne,i.translatedErrors.regex),url:x.Z_(i.translatedErrors.string).required(i.translatedErrors.required).matches(Ze,i.translatedErrors.regex),headers:x.Vo(n=>{let t=x.IX();if(n.length===1){const{key:r,value:s}=n[0];if(!r&&!s)return t}return t.of(x.Ry().shape({key:x.Z_().required(i.translatedErrors.required),value:x.Z_().required(i.translatedErrors.required)}))}),events:x.IX()}),J=({handleSubmit:n,data:t,triggerWebhook:r,isCreating:s,isTriggering:m,triggerResponse:E,isDraftAndPublishEvents:b})=>{const{formatMessage:l}=(0,L.useIntl)(),[p,y]=(0,e.useState)(!1);return e.createElement(D.Formik,{onSubmit:n,initialValues:{name:(t==null?void 0:t.name)||"",url:(t==null?void 0:t.url)||"",headers:Object.keys((t==null?void 0:t.headers)||[]).length?Object.entries(t.headers).map(([u,h])=>({key:u,value:h})):[{key:"",value:""}],events:(t==null?void 0:t.events)||[]},validationSchema:Xe,validateOnChange:!1,validateOnBlur:!1},({handleSubmit:u,errors:h})=>e.createElement(i.Form,{noValidate:!0},e.createElement(q.HeaderLayout,{primaryAction:e.createElement(S.Stack,{horizontal:!0,spacing:2},e.createElement(_.Button,{onClick:()=>{r(),y(!0)},variant:"tertiary",startIcon:e.createElement(Pe(),null),disabled:s||m,size:"L"},l({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(_.Button,{startIcon:e.createElement(Y(),null),onClick:u,type:"submit",size:"L"},l({id:"global.save",defaultMessage:"Save"}))),title:s?l({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):t==null?void 0:t.name,navigationAction:e.createElement(Ce.Link,{startIcon:e.createElement(Ee(),null),to:"/settings/webhooks"},l({id:"global.back",defaultMessage:"Back"}))}),e.createElement(q.ContentLayout,null,e.createElement(S.Stack,{spacing:4},p&&e.createElement("div",{className:"trigger-wrapper"},e.createElement(He,{isPending:m,response:E,onCancel:()=>y(!1)})),e.createElement(F.Box,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(S.Stack,{spacing:6},e.createElement(O.Grid,{gap:6},e.createElement(O.GridItem,{col:6},e.createElement(D.Field,{as:z.TextInput,name:"name",error:h.name&&l({id:h.name}),label:l({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(O.GridItem,{col:12},e.createElement(D.Field,{as:z.TextInput,name:"url",error:h.url&&l({id:h.url}),label:l({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement($e,null),e.createElement(Re,{isDraftAndPublish:b})))))))};J.propTypes={data:d().object,handleSubmit:d().func.isRequired,triggerWebhook:d().func.isRequired,isCreating:d().bool.isRequired,isDraftAndPublishEvents:d().bool.isRequired,isTriggering:d().bool.isRequired,triggerResponse:d().object},J.defaultProps={data:void 0,triggerResponse:void 0};const Qe=J;var Je=a(92891),Ye=Object.defineProperty,qe=Object.defineProperties,_e=Object.getOwnPropertyDescriptors,ue=Object.getOwnPropertySymbols,et=Object.prototype.hasOwnProperty,tt=Object.prototype.propertyIsEnumerable,ce=(n,t,r)=>t in n?Ye(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r,me=(n,t)=>{for(var r in t||(t={}))et.call(t,r)&&ce(n,r,t[r]);if(ue)for(var r of ue(t))tt.call(t,r)&&ce(n,r,t[r]);return n},nt=(n,t)=>qe(n,_e(t));const rt=n=>{const t=me({},n);return(0,Je.set)(t,"headers",at(n.headers)),t},at=n=>n.reduce((t,r)=>{const{key:s,value:m}=r;return s!==""?nt(me({},t),{[s]:m}):t},{}),ge=rt;var fe=a(98399),st=Object.defineProperty,pe=Object.getOwnPropertySymbols,ot=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable,he=(n,t,r)=>t in n?st(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r,it=(n,t)=>{for(var r in t||(t={}))ot.call(t,r)&&he(n,r,t[r]);if(pe)for(var r of pe(t))lt.call(t,r)&&he(n,r,t[r]);return n},ve=(n,t,r)=>new Promise((s,m)=>{var E=p=>{try{l(r.next(p))}catch(y){m(y)}},b=p=>{try{l(r.throw(p))}catch(y){m(y)}},l=p=>p.done?s(p.value):Promise.resolve(p.value).then(E,b);l((r=r.apply(n,t)).next())});const dt=()=>{const{params:{id:n}}=(0,o.useRouteMatch)("/settings/webhooks/:id"),{replace:t}=(0,o.useHistory)(),{lockApp:r,unlockApp:s}=(0,i.useOverlayBlocker)(),m=(0,i.useNotification)(),E=(0,c.useQueryClient)(),{isLoading:b,collectionTypes:l}=(0,g.bP)(),p=n==="create",y=(0,e.useCallback)(M=>ve(void 0,null,function*(){const[R,{data:gt}]=yield(0,i.to)((0,i.request)(`/admin/webhooks/${M}`,{method:"GET"}));return R?(m({type:"warning",message:{id:"notification.error"}}),null):gt}),[m]),{isLoading:u,data:h}=(0,c.useQuery)(["get-webhook",n],()=>y(n),{enabled:!p}),{isLoading:f,data:T,isIdle:C,mutate:w}=(0,c.useMutation)(()=>v.be.post(`/admin/webhooks/${n}/trigger`)),G=()=>w(null,{onError:()=>{m({type:"warning",message:{id:"notification.error"}})}}),K=(0,c.useMutation)(M=>(0,i.request)("/admin/webhooks",{method:"POST",body:M})),ut=(0,c.useMutation)(({id:M,body:R})=>(0,i.request)(`/admin/webhooks/${M}`,{method:"PUT",body:R})),ct=M=>ve(void 0,null,function*(){p?(r(),K.mutate(ge(M),{onSuccess:R=>{m({type:"success",message:{id:"Settings.webhooks.created"}}),t(`/settings/webhooks/${R.data.id}`),s()},onError:R=>{m({type:"warning",message:{id:"notification.error"}}),fe.log(R),s()}})):(r(),ut.mutate({id:n,body:ge(M)},{onSuccess:()=>{E.invalidateQueries(["get-webhook",n]),m({type:"success",message:{id:"notification.form.success.fields"}}),s()},onError:R=>{m({type:"warning",message:{id:"notification.error"}}),fe.log(R),s()}}))}),mt=(0,e.useMemo)(()=>l.some(M=>M.options.draftAndPublish===!0),[l]);return u||b?e.createElement(i.LoadingIndicatorPage,null):e.createElement(P.Main,null,e.createElement(i.SettingsPageTitle,{name:"Webhooks"}),e.createElement(Qe,it({},{handleSubmit:ct,data:h,triggerWebhook:G,isCreating:p,isTriggering:f,isTriggerIdle:C,triggerResponse:T==null?void 0:T.data.data,isDraftAndPublishEvents:mt})))}},12935:(B,A,a)=>{"use strict";a.r(A),a.d(A,{default:()=>v});var e=a(32735),i=a(10938),P=a.n(i),c=a(2805),o=a(26972);const v=()=>e.createElement(i.CheckPagePermissions,{permissions:c.Z.settings.webhooks.create},e.createElement(o.Z,null))},91849:(B,A,a)=>{"use strict";a.r(A),a.d(A,{default:()=>v});var e=a(32735),i=a(10938),P=a.n(i),c=a(2805),o=a(26972);const v=()=>e.createElement(i.CheckPagePermissions,{permissions:c.Z.settings.webhooks.update},e.createElement(o.Z,null))}}]);
23
+ `),Z=({isPending:n,statusCode:t})=>{const{formatMessage:r}=(0,L.useIntl)();return n?e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement($,{as:Ke()}),e.createElement(I.Typography,null,r({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):t>=200&&t<300?e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement($,{as:Y(),color:"success700"}),e.createElement(I.Typography,null,r({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):t>=300?e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement($,{as:ie(),color:"danger700"}),e.createElement(I.Typography,null,r({id:"Settings.error",defaultMessage:"error"})," ",t)):null};Z.propTypes={isPending:d().bool.isRequired,statusCode:d().number},Z.defaultProps={statusCode:void 0};const X=({statusCode:n,message:t})=>{const{formatMessage:r}=(0,L.useIntl)();return n>=200&&n<300?e.createElement(j.Flex,{justifyContent:"flex-end"},e.createElement(I.Typography,{textColor:"neutral600",ellipsis:!0},r({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(j.Flex,{justifyContent:"flex-end"},e.createElement(j.Flex,{maxWidth:(0,i.pxToRem)(250),justifyContent:"flex-end",title:t},e.createElement(I.Typography,{ellipsis:!0,textColor:"neutral600"},t))):null};X.propTypes={statusCode:d().number,message:d().string},X.defaultProps={statusCode:void 0,message:void 0};const de=({onCancel:n})=>{const{formatMessage:t}=(0,L.useIntl)();return e.createElement(j.Flex,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(S.Stack,{horizontal:!0,spacing:2,style:{alignItems:"center"}},e.createElement(I.Typography,{textColor:"neutral400"},t({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement($,{as:ie(),color:"neutral400"}))))};de.propTypes={onCancel:d().func.isRequired};const Q=({isPending:n,onCancel:t,response:r})=>{const{statusCode:s,message:m}=r,{formatMessage:E}=(0,L.useIntl)();return e.createElement(F.Box,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(O.Grid,{gap:4,style:{alignItems:"center"}},e.createElement(O.GridItem,{col:3},e.createElement(I.Typography,null,E({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(O.GridItem,{col:3},e.createElement(Z,{isPending:n,statusCode:s})),e.createElement(O.GridItem,{col:6},n?e.createElement(de,{onCancel:t}):e.createElement(X,{statusCode:s,message:m}))))};Q.defaultProps={isPending:!1,onCancel:()=>{},response:{}},Q.propTypes={isPending:d().bool,onCancel:d().func,response:d().object};const ze=Q;var x=a(5173);const He=new RegExp("(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)"),Ne=new RegExp("(^$)|((https?://.*)(d*)/?(.*))"),Ze=x.Ry().shape({name:x.Z_(i.translatedErrors.string).required(i.translatedErrors.required).matches(He,i.translatedErrors.regex),url:x.Z_(i.translatedErrors.string).required(i.translatedErrors.required).matches(Ne,i.translatedErrors.regex),headers:x.Vo(n=>{let t=x.IX();if(n.length===1){const{key:r,value:s}=n[0];if(!r&&!s)return t}return t.of(x.Ry().shape({key:x.Z_().required(i.translatedErrors.required),value:x.Z_().required(i.translatedErrors.required)}))}),events:x.IX()}),J=({handleSubmit:n,data:t,triggerWebhook:r,isCreating:s,isTriggering:m,triggerResponse:E,isDraftAndPublishEvents:b})=>{const{formatMessage:l}=(0,L.useIntl)(),[f,y]=(0,e.useState)(!1);return e.createElement(D.Formik,{onSubmit:n,initialValues:{name:(t==null?void 0:t.name)||"",url:(t==null?void 0:t.url)||"",headers:Object.keys((t==null?void 0:t.headers)||[]).length?Object.entries(t.headers).map(([u,h])=>({key:u,value:h})):[{key:"",value:""}],events:(t==null?void 0:t.events)||[]},validationSchema:Ze,validateOnChange:!1,validateOnBlur:!1},({handleSubmit:u,errors:h})=>e.createElement(i.Form,{noValidate:!0},e.createElement(q.HeaderLayout,{primaryAction:e.createElement(S.Stack,{horizontal:!0,spacing:2},e.createElement(_.Button,{onClick:()=>{r(),y(!0)},variant:"tertiary",startIcon:e.createElement(Pe(),null),disabled:s||m,size:"L"},l({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(_.Button,{startIcon:e.createElement(Y(),null),onClick:u,type:"submit",size:"L"},l({id:"global.save",defaultMessage:"Save"}))),title:s?l({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):t==null?void 0:t.name,navigationAction:e.createElement(i.Link,{startIcon:e.createElement(Ee(),null),to:"/settings/webhooks"},l({id:"global.back",defaultMessage:"Back"}))}),e.createElement(q.ContentLayout,null,e.createElement(S.Stack,{spacing:4},f&&e.createElement("div",{className:"trigger-wrapper"},e.createElement(ze,{isPending:m,response:E,onCancel:()=>y(!1)})),e.createElement(F.Box,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(S.Stack,{spacing:6},e.createElement(O.Grid,{gap:6},e.createElement(O.GridItem,{col:6},e.createElement(D.Field,{as:z.TextInput,name:"name",error:h.name&&l({id:h.name}),label:l({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(O.GridItem,{col:12},e.createElement(D.Field,{as:z.TextInput,name:"url",error:h.url&&l({id:h.url}),label:l({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(Ue,null),e.createElement(we,{isDraftAndPublish:b})))))))};J.propTypes={data:d().object,handleSubmit:d().func.isRequired,triggerWebhook:d().func.isRequired,isCreating:d().bool.isRequired,isDraftAndPublishEvents:d().bool.isRequired,isTriggering:d().bool.isRequired,triggerResponse:d().object},J.defaultProps={data:void 0,triggerResponse:void 0};const Xe=J;var Qe=a(92891),Je=Object.defineProperty,Ye=Object.defineProperties,qe=Object.getOwnPropertyDescriptors,ue=Object.getOwnPropertySymbols,_e=Object.prototype.hasOwnProperty,et=Object.prototype.propertyIsEnumerable,ce=(n,t,r)=>t in n?Je(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r,me=(n,t)=>{for(var r in t||(t={}))_e.call(t,r)&&ce(n,r,t[r]);if(ue)for(var r of ue(t))et.call(t,r)&&ce(n,r,t[r]);return n},tt=(n,t)=>Ye(n,qe(t));const nt=n=>{const t=me({},n);return(0,Qe.set)(t,"headers",rt(n.headers)),t},rt=n=>n.reduce((t,r)=>{const{key:s,value:m}=r;return s!==""?tt(me({},t),{[s]:m}):t},{}),ge=nt;var pe=a(98399),at=Object.defineProperty,fe=Object.getOwnPropertySymbols,st=Object.prototype.hasOwnProperty,ot=Object.prototype.propertyIsEnumerable,he=(n,t,r)=>t in n?at(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r,lt=(n,t)=>{for(var r in t||(t={}))st.call(t,r)&&he(n,r,t[r]);if(fe)for(var r of fe(t))ot.call(t,r)&&he(n,r,t[r]);return n},ve=(n,t,r)=>new Promise((s,m)=>{var E=f=>{try{l(r.next(f))}catch(y){m(y)}},b=f=>{try{l(r.throw(f))}catch(y){m(y)}},l=f=>f.done?s(f.value):Promise.resolve(f.value).then(E,b);l((r=r.apply(n,t)).next())});const it=()=>{const{params:{id:n}}=(0,o.useRouteMatch)("/settings/webhooks/:id"),{replace:t}=(0,o.useHistory)(),{lockApp:r,unlockApp:s}=(0,i.useOverlayBlocker)(),m=(0,i.useNotification)(),E=(0,c.useQueryClient)(),{isLoading:b,collectionTypes:l}=(0,g.bP)(),f=n==="create",y=(0,e.useCallback)(M=>ve(void 0,null,function*(){const[R,{data:mt}]=yield(0,i.to)((0,i.request)(`/admin/webhooks/${M}`,{method:"GET"}));return R?(m({type:"warning",message:{id:"notification.error"}}),null):mt}),[m]),{isLoading:u,data:h}=(0,c.useQuery)(["get-webhook",n],()=>y(n),{enabled:!f}),{isLoading:p,data:T,isIdle:C,mutate:w}=(0,c.useMutation)(()=>v.be.post(`/admin/webhooks/${n}/trigger`)),G=()=>w(null,{onError:()=>{m({type:"warning",message:{id:"notification.error"}})}}),K=(0,c.useMutation)(M=>(0,i.request)("/admin/webhooks",{method:"POST",body:M})),dt=(0,c.useMutation)(({id:M,body:R})=>(0,i.request)(`/admin/webhooks/${M}`,{method:"PUT",body:R})),ut=M=>ve(void 0,null,function*(){f?(r(),K.mutate(ge(M),{onSuccess:R=>{m({type:"success",message:{id:"Settings.webhooks.created"}}),t(`/settings/webhooks/${R.data.id}`),s()},onError:R=>{m({type:"warning",message:{id:"notification.error"}}),pe.log(R),s()}})):(r(),dt.mutate({id:n,body:ge(M)},{onSuccess:()=>{E.invalidateQueries(["get-webhook",n]),m({type:"success",message:{id:"notification.form.success.fields"}}),s()},onError:R=>{m({type:"warning",message:{id:"notification.error"}}),pe.log(R),s()}}))}),ct=(0,e.useMemo)(()=>l.some(M=>M.options.draftAndPublish===!0),[l]);return u||b?e.createElement(i.LoadingIndicatorPage,null):e.createElement(P.Main,null,e.createElement(i.SettingsPageTitle,{name:"Webhooks"}),e.createElement(Xe,lt({},{handleSubmit:ut,data:h,triggerWebhook:G,isCreating:f,isTriggering:p,isTriggerIdle:C,triggerResponse:T==null?void 0:T.data.data,isDraftAndPublishEvents:ct})))}},12935:(B,A,a)=>{"use strict";a.r(A),a.d(A,{default:()=>v});var e=a(32735),i=a(10938),P=a.n(i),c=a(2805),o=a(26972);const v=()=>e.createElement(i.CheckPagePermissions,{permissions:c.Z.settings.webhooks.create},e.createElement(o.Z,null))},91849:(B,A,a)=>{"use strict";a.r(A),a.d(A,{default:()=>v});var e=a(32735),i=a(10938),P=a.n(i),c=a(2805),o=a(26972);const v=()=>e.createElement(i.CheckPagePermissions,{permissions:c.Z.settings.webhooks.update},e.createElement(o.Z,null))}}]);
@@ -0,0 +1,133 @@
1
+ (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4121],{55470:(F,K,d)=>{"use strict";F.exports=d(17173)},17173:function(F,K,d){(function(s,O){F.exports=O(d(32735),d(19615))})(this,function(s,O){return function(r){var h={};function n(i){if(h[i])return h[i].exports;var a=h[i]={i,l:!1,exports:{}};return r[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=r,n.c=h,n.d=function(i,a,c){n.o(i,a)||Object.defineProperty(i,a,{enumerable:!0,get:c})},n.r=function(i){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},n.t=function(i,a){if(1&a&&(i=n(i)),8&a||4&a&&typeof i=="object"&&i&&i.__esModule)return i;var c=Object.create(null);if(n.r(c),Object.defineProperty(c,"default",{enumerable:!0,value:i}),2&a&&typeof i!="string")for(var l in i)n.d(c,l,function(o){return i[o]}.bind(null,l));return c},n.n=function(i){var a=i&&i.__esModule?function(){return i.default}:function(){return i};return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=121)}({0:function(r,h,n){r.exports=n(19)()},1:function(r,h){r.exports=s},10:function(r,h,n){var i=n(25),a=n(26),c=n(22),l=n(27);r.exports=function(o,b){return i(o)||a(o,b)||c(o,b)||l()},r.exports.default=r.exports,r.exports.__esModule=!0},121:function(r,h,n){"use strict";n.r(h),n.d(h,"Switch",function(){return j});var i,a,c=n(5),l=n.n(c),o=n(4),b=n.n(o),p=n(3),g=n.n(p),S=n(1),x=n.n(S),e=n(0),t=n.n(e),u=n(2),w=n.n(u),B=n(9),I=n(6),J=["label","onChange","onLabel","offLabel","selected","visibleLabels"],R=w.a.div(i||(i=g()([`
2
+ background: `,`;
3
+ border: none;
4
+ border-radius: 16px;
5
+ position: relative;
6
+ height: `,`rem;
7
+ width: `,`rem;
8
+
9
+ & span {
10
+ font-size: `,`;
11
+ }
12
+
13
+ &:before {
14
+ content: '';
15
+ background: `,`;
16
+ width: 1rem;
17
+ height: 1rem;
18
+ border-radius: 50%;
19
+ position: absolute;
20
+ transition: all 0.5s;
21
+ left: `,`;
22
+ top: `,`;
23
+ }
24
+
25
+ @media (prefers-reduced-motion: reduce) {
26
+ &:before {
27
+ transition: none;
28
+ }
29
+ }
30
+ `])),function(T){return T.theme.colors.danger500},1.5,2.5,function(T){return T.visibleLabels?"1rem":0},function(T){return T.theme.colors.neutral0},function(T){return T.theme.spaces[1]},function(T){return T.theme.spaces[1]}),q=w.a.button(a||(a=g()([`
31
+ background: transparent;
32
+ padding: 0;
33
+ border: none;
34
+
35
+ &[aria-checked='true'] `,` {
36
+ background: `,`;
37
+ }
38
+
39
+ &[aria-checked='true'] `,`:before {
40
+ transform: translateX(1rem);
41
+ }
42
+ `])),R,function(T){return T.theme.colors.success500},R),j=x.a.forwardRef(function(T,_){var ee=T.label,ne=T.onChange,V=T.onLabel,z=T.offLabel,G=T.selected,$=T.visibleLabels,te=b()(T,J);return x.a.createElement(q,l()({ref:_,role:"switch","aria-checked":G,"aria-label":ee,onClick:ne,visibleLabels:$,type:"button"},te),x.a.createElement(B.Flex,null,x.a.createElement(R,null,x.a.createElement("span",null,V),x.a.createElement("span",null,z)),$&&x.a.createElement(I.Box,{as:"span","aria-hidden":!0,paddingLeft:2,color:G?"success600":"danger600"},G?V:z)))});j.defaultProps={onLabel:"On",offLabel:"Off",visibleLabels:!1},j.propTypes={label:t.a.string.isRequired,offLabel:t.a.string,onChange:t.a.func.isRequired,onLabel:t.a.string,selected:t.a.bool.isRequired,visibleLabels:t.a.bool},j.displayName="Switch"},13:function(r,h){function n(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?(r.exports=n=function(a){return typeof a},r.exports.default=r.exports,r.exports.__esModule=!0):(r.exports=n=function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},r.exports.default=r.exports,r.exports.__esModule=!0),n(i)}r.exports=n,r.exports.default=r.exports,r.exports.__esModule=!0},19:function(r,h,n){"use strict";var i=n(20);function a(){}function c(){}c.resetWarningCache=a,r.exports=function(){function l(p,g,S,x,e,t){if(t!==i){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function o(){return l}l.isRequired=l;var b={array:l,bool:l,func:l,number:l,object:l,string:l,symbol:l,any:l,arrayOf:o,element:l,elementType:l,instanceOf:o,node:l,objectOf:o,oneOf:o,oneOfType:o,shape:o,exact:o,checkPropTypes:c,resetWarningCache:a};return b.PropTypes=b,b}},2:function(r,h){r.exports=O},20:function(r,h,n){"use strict";r.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},21:function(r,h){r.exports=function(n,i){(i==null||i>n.length)&&(i=n.length);for(var a=0,c=new Array(i);a<i;a++)c[a]=n[a];return c},r.exports.default=r.exports,r.exports.__esModule=!0},22:function(r,h,n){var i=n(21);r.exports=function(a,c){if(a){if(typeof a=="string")return i(a,c);var l=Object.prototype.toString.call(a).slice(8,-1);return l==="Object"&&a.constructor&&(l=a.constructor.name),l==="Map"||l==="Set"?Array.from(a):l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?i(a,c):void 0}},r.exports.default=r.exports,r.exports.__esModule=!0},24:function(r,h){r.exports=function(n,i){if(n==null)return{};var a,c,l={},o=Object.keys(n);for(c=0;c<o.length;c++)a=o[c],i.indexOf(a)>=0||(l[a]=n[a]);return l},r.exports.default=r.exports,r.exports.__esModule=!0},25:function(r,h){r.exports=function(n){if(Array.isArray(n))return n},r.exports.default=r.exports,r.exports.__esModule=!0},26:function(r,h){r.exports=function(n,i){var a=n==null?null:typeof Symbol!="undefined"&&n[Symbol.iterator]||n["@@iterator"];if(a!=null){var c,l,o=[],b=!0,p=!1;try{for(a=a.call(n);!(b=(c=a.next()).done)&&(o.push(c.value),!i||o.length!==i);b=!0);}catch(g){p=!0,l=g}finally{try{b||a.return==null||a.return()}finally{if(p)throw l}}return o}},r.exports.default=r.exports,r.exports.__esModule=!0},27:function(r,h){r.exports=function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
43
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)},r.exports.default=r.exports,r.exports.__esModule=!0},3:function(r,h){r.exports=function(n,i){return i||(i=n.slice(0)),Object.freeze(Object.defineProperties(n,{raw:{value:Object.freeze(i)}}))},r.exports.default=r.exports,r.exports.__esModule=!0},4:function(r,h,n){var i=n(24);r.exports=function(a,c){if(a==null)return{};var l,o,b=i(a,c);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(a);for(o=0;o<p.length;o++)l=p[o],c.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(a,l)&&(b[l]=a[l])}return b},r.exports.default=r.exports,r.exports.__esModule=!0},5:function(r,h){function n(){return r.exports=n=Object.assign||function(i){for(var a=1;a<arguments.length;a++){var c=arguments[a];for(var l in c)Object.prototype.hasOwnProperty.call(c,l)&&(i[l]=c[l])}return i},r.exports.default=r.exports,r.exports.__esModule=!0,n.apply(this,arguments)}r.exports=n,r.exports.default=r.exports,r.exports.__esModule=!0},6:function(r,h,n){"use strict";n.r(h),n.d(h,"Box",function(){return x});var i,a=n(3),c=n.n(a),l=n(0),o=n.n(l),b=n(2),p=n.n(b),g=n(7),S={color:!0},x=p.a.div.withConfig({shouldForwardProp:function(e,t){return!S[e]&&t(e)}})(i||(i=c()([`
44
+ // Font
45
+ font-size: `,`;
46
+
47
+ // Colors
48
+ background: `,`;
49
+ color: `,`;
50
+
51
+ // Spaces
52
+ `,`
53
+ `,`
54
+ `,`
55
+ `,`
56
+ `,`
57
+ `,`
58
+ `,`
59
+ `,`
60
+ `,`
61
+
62
+ // Responsive hiding
63
+ `,`
64
+ `,`
65
+
66
+
67
+ // Borders
68
+ border-radius: `,`;
69
+ border-style: `,`;
70
+ border-width: `,`;
71
+ border-color: `,`;
72
+ border: `,`;
73
+
74
+ // Shadows
75
+ box-shadow: `,`;
76
+
77
+ // Handlers
78
+ pointer-events: `,`;
79
+ &:hover {
80
+ `,`
81
+ }
82
+
83
+ // Display
84
+ display: `,`;
85
+
86
+ // Position
87
+ position: `,`;
88
+ left: `,`;
89
+ right: `,`;
90
+ top: `,`;
91
+ bottom: `,`;
92
+ z-index: `,`;
93
+ overflow: `,`;
94
+ cursor: `,`;
95
+
96
+ // Size
97
+ width: `,`;
98
+ max-width: `,`;
99
+ min-width: `,`;
100
+ height: `,`;
101
+ max-height: `,`;
102
+ min-height: `,`;
103
+
104
+ // Animation
105
+ transition: `,`;
106
+ transform: `,`;
107
+ animation: `,`;
108
+
109
+ //Flexbox children props
110
+ flex-shrink: `,`;
111
+ flex-grow: `,`;
112
+ flex-basis: `,`;
113
+ flex: `,`;
114
+
115
+ // Text
116
+ text-align: `,`;
117
+ text-transform: `,`;
118
+ line-height: `,`;
119
+
120
+ // Cursor
121
+ cursor: `,`;
122
+ `])),function(e){var t=e.fontSize;return e.theme.fontSizes[t]||t},function(e){var t=e.theme,u=e.background;return t.colors[u]},function(e){var t=e.theme,u=e.color;return t.colors[u]},function(e){var t=e.theme,u=e.padding;return Object(g.a)("padding",u,t)},function(e){var t=e.theme,u=e.paddingTop;return Object(g.a)("padding-top",u,t)},function(e){var t=e.theme,u=e.paddingRight;return Object(g.a)("padding-right",u,t)},function(e){var t=e.theme,u=e.paddingBottom;return Object(g.a)("padding-bottom",u,t)},function(e){var t=e.theme,u=e.paddingLeft;return Object(g.a)("padding-left",u,t)},function(e){var t=e.theme,u=e.marginLeft;return Object(g.a)("margin-left",u,t)},function(e){var t=e.theme,u=e.marginRight;return Object(g.a)("margin-right",u,t)},function(e){var t=e.theme,u=e.marginTop;return Object(g.a)("margin-top",u,t)},function(e){var t=e.theme,u=e.marginBottom;return Object(g.a)("margin-bottom",u,t)},function(e){var t=e.theme;return e.hiddenS?"".concat(t.mediaQueries.tablet," { display: none; }"):void 0},function(e){var t=e.theme;return e.hiddenXS?"".concat(t.mediaQueries.mobile," { display: none; }"):void 0},function(e){var t=e.theme,u=e.hasRadius,w=e.borderRadius;return u?t.borderRadius:w},function(e){return e.borderStyle},function(e){return e.borderWidth},function(e){var t=e.borderColor;return e.theme.colors[t]},function(e){var t=e.theme,u=e.borderColor,w=e.borderStyle,B=e.borderWidth;if(u&&!w&&!B)return"1px solid ".concat(t.colors[u])},function(e){var t=e.theme,u=e.shadow;return t.shadows[u]},function(e){return e.pointerEvents},function(e){var t=e._hover,u=e.theme;return t?t(u):void 0},function(e){return e.display},function(e){return e.position},function(e){var t=e.left;return e.theme.spaces[t]||t},function(e){var t=e.right;return e.theme.spaces[t]||t},function(e){var t=e.top;return e.theme.spaces[t]||t},function(e){var t=e.bottom;return e.theme.spaces[t]||t},function(e){return e.zIndex},function(e){return e.overflow},function(e){return e.cursor},function(e){var t=e.width;return e.theme.spaces[t]||t},function(e){var t=e.maxWidth;return e.theme.spaces[t]||t},function(e){var t=e.minWidth;return e.theme.spaces[t]||t},function(e){var t=e.height;return e.theme.spaces[t]||t},function(e){var t=e.maxHeight;return e.theme.spaces[t]||t},function(e){var t=e.minHeight;return e.theme.spaces[t]||t},function(e){return e.transition},function(e){return e.transform},function(e){return e.animation},function(e){return e.shrink},function(e){return e.grow},function(e){return e.basis},function(e){return e.flex},function(e){return e.textAlign},function(e){return e.textTransform},function(e){return e.lineHeight},function(e){return e.cursor});x.displayName="Box",x.defaultProps={background:void 0,borderColor:void 0,color:void 0,hiddenS:!1,hiddenXS:!1,padding:void 0,paddingTop:void 0,paddingRight:void 0,paddingBottom:void 0,paddingLeft:void 0,hasRadius:!1,shadow:void 0,children:null,shrink:void 0,grow:void 0,basis:void 0,flex:void 0,_hover:function(){}},x.propTypes={_hover:o.a.func,background:o.a.string,basis:o.a.oneOfType([o.a.string,o.a.string]),borderColor:o.a.string,children:o.a.oneOfType([o.a.node,o.a.string]),color:o.a.string,flex:o.a.oneOfType([o.a.string,o.a.string]),grow:o.a.oneOfType([o.a.string,o.a.string]),hasRadius:o.a.bool,hiddenS:o.a.bool,hiddenXS:o.a.bool,padding:o.a.oneOfType([o.a.number,o.a.arrayOf(o.a.number)]),paddingBottom:o.a.oneOfType([o.a.number,o.a.arrayOf(o.a.number)]),paddingLeft:o.a.oneOfType([o.a.number,o.a.arrayOf(o.a.number)]),paddingRight:o.a.oneOfType([o.a.number,o.a.arrayOf(o.a.number)]),paddingTop:o.a.oneOfType([o.a.number,o.a.arrayOf(o.a.number)]),shadow:o.a.string,shrink:o.a.oneOfType([o.a.string,o.a.string])}},7:function(r,h,n){"use strict";var i=n(10),a=n.n(i),c=n(13),l=n.n(c);h.a=function(o,b,p){var g=b;if(Array.isArray(b)||l()(b)!=="object"||(g=[b==null?void 0:b.desktop,b==null?void 0:b.tablet,b==null?void 0:b.mobile]),g!==void 0){if(Array.isArray(g)){var S=g,x=a()(S,3),e=x[0],t=x[1],u=x[2],w="".concat(o,": ").concat(p.spaces[e],";");return t!==void 0&&(w+="".concat(p.mediaQueries.tablet,`{
123
+ `).concat(o,": ").concat(p.spaces[t],`;
124
+ }`)),u!==void 0&&(w+="".concat(p.mediaQueries.mobile,`{
125
+ `).concat(o,": ").concat(p.spaces[u],`;
126
+ }`)),w}var B=p.spaces[g]||g;return"".concat(o,": ").concat(B,";")}}},9:function(r,h,n){"use strict";n.r(h),n.d(h,"Flex",function(){return e});var i,a=n(3),c=n.n(a),l=n(0),o=n.n(l),b=n(2),p=n.n(b),g=n(6),S=n(7),x={direction:!0},e=p()(g.Box).withConfig({shouldForwardProp:function(t,u){return!x[t]&&u(t)}})(i||(i=c()([`
127
+ align-items: `,`;
128
+ display: `,`;
129
+ flex-direction: `,`;
130
+ flex-wrap: `,`;
131
+ `,`};
132
+ justify-content: `,`;
133
+ `])),function(t){return t.alignItems},function(t){return t.inline?"inline-flex":"flex"},function(t){return t.direction},function(t){return t.wrap},function(t){var u=t.gap,w=t.theme;return Object(S.a)("gap",u,w)},function(t){return t.justifyContent});e.defaultProps={alignItems:"center",basis:void 0,direction:"row",gap:void 0,inline:!1,justifyContent:void 0,reverse:!1,wrap:void 0},e.propTypes={alignItems:o.a.string,basis:o.a.oneOfType([o.a.string,o.a.number]),direction:o.a.string,gap:o.a.oneOfType([o.a.shape({desktop:o.a.number,mobile:o.a.number,tablet:o.a.number}),o.a.number,o.a.arrayOf(o.a.number),o.a.string]),inline:o.a.bool,justifyContent:o.a.string,reverse:o.a.bool,wrap:o.a.string}}})})},54999:(F,K,d)=>{"use strict";d.r(K),d.d(K,{default:()=>Ee});var s=d(32735),O=d(10938),r=d(2805),h=d(5141),n=d(5636),i=d(11856),a=d(64354),c=d(19192),l=d(90662),o=d(20763),b=d(35980),p=d(53214),g=d(95602),S=d(44526),x=d(28004),e=d(55470),t=d(16540),u=d(29270),w=d(9808),B=d(59290),I=d.n(B),J=d(95717),R=d.n(J),q=d(76470),j=d.n(q),T=d(97042),_=d.n(T),ee=d(49415),ne=d(3040),V=d.n(ne);const z={webhooks:[],webhooksToDelete:[],webhookToDelete:null,loadingWebhooks:!0},$=(v,y)=>(0,ee.default)(v,m=>{switch(y.type){case"GET_DATA_SUCCEEDED":{m.webhooks=y.data,m.loadingWebhooks=!1;break}case"TOGGLE_LOADING":{m.loadingWebhooks=!v.loadingWebhooks;break}case"SET_WEBHOOK_ENABLED":{V()(m,["webhooks",...y.keys],y.value);break}case"SET_WEBHOOK_TO_DELETE":{m.webhookToDelete=y.id;break}case"SET_WEBHOOKS_TO_DELETE":{y.value?m.webhooksToDelete.push(y.id):m.webhooksToDelete=v.webhooksToDelete.filter(k=>k!==y.id);break}case"SET_ALL_WEBHOOKS_TO_DELETE":{v.webhooksToDelete.length===0?m.webhooksToDelete=v.webhooks.map(k=>k.id):m.webhooksToDelete=[];break}case"WEBHOOKS_DELETED":{m.webhooks=v.webhooks.filter(k=>!v.webhooksToDelete.includes(k.id)),m.webhooksToDelete=[];break}case"WEBHOOK_DELETED":{m.webhooks=v.webhooks.filter((k,W)=>W!==y.index),m.webhookToDelete=null;break}default:return m}});var te=d(98399),pe=Object.defineProperty,he=Object.defineProperties,me=Object.getOwnPropertyDescriptors,ae=Object.getOwnPropertySymbols,be=Object.prototype.hasOwnProperty,ge=Object.prototype.propertyIsEnumerable,ie=(v,y,m)=>y in v?pe(v,y,{enumerable:!0,configurable:!0,writable:!0,value:m}):v[y]=m,H=(v,y)=>{for(var m in y||(y={}))be.call(y,m)&&ie(v,m,y[m]);if(ae)for(var m of ae(y))ge.call(y,m)&&ie(v,m,y[m]);return v},ye=(v,y)=>he(v,me(y)),U=(v,y,m)=>new Promise((k,W)=>{var A=D=>{try{E(m.next(D))}catch(M){W(M)}},C=D=>{try{E(m.throw(D))}catch(M){W(M)}},E=D=>D.done?k(D.value):Promise.resolve(D.value).then(A,C);E((m=m.apply(v,y)).next())});const ve=()=>{const{isLoading:v,allowedActions:{canCreate:y,canRead:m,canUpdate:k,canDelete:W}}=(0,O.useRBAC)(r.Z.settings.webhooks),A=(0,O.useNotification)(),C=(0,s.useRef)(!0),{formatMessage:E}=(0,n.useIntl)(),[D,M]=(0,s.useState)(!1),[{webhooks:Q,webhooksToDelete:X,webhookToDelete:oe,loadingWebhooks:re},P]=(0,s.useReducer)($,z),{notifyStatus:xe}=(0,u.useNotifyAT)();(0,O.useFocusWhenNavigate)();const{push:Te}=(0,h.useHistory)(),{pathname:se}=(0,h.useLocation)(),Z=Q.length,N=X.length,le=f=>Q.findIndex(L=>L.id===f);(0,s.useEffect)(()=>(C.current=!0,()=>{C.current=!1}),[]),(0,s.useEffect)(()=>{m&&Oe()},[m]);const Oe=()=>U(void 0,null,function*(){try{const{data:f}=yield(0,O.request)("/admin/webhooks",{method:"GET"});C.current&&(P({type:"GET_DATA_SUCCEEDED",data:f}),xe("webhooks have been loaded"))}catch(f){te.log(f),C.current&&(f.code!==20&&A({type:"warning",message:{id:"notification.error"}}),P({type:"TOGGLE_LOADING"}))}}),we=()=>{M(f=>!f)},Se=()=>{oe?ke():Le()},ke=()=>U(void 0,null,function*(){try{yield(0,O.request)(`/admin/webhooks/${oe}`,{method:"DELETE"}),P({type:"WEBHOOK_DELETED",index:le(oe)})}catch(f){f.code!==20&&A({type:"warning",message:{id:"notification.error"}})}M(!1)}),Le=()=>U(void 0,null,function*(){const f={ids:X};try{yield(0,O.request)("/admin/webhooks/batch-delete",{method:"POST",body:f}),C.current&&P({type:"WEBHOOKS_DELETED"})}catch(L){C.current&&L.code!==20&&A({type:"warning",message:{id:"notification.error"}})}M(!1)}),ue=f=>{M(!0),f!=="all"&&P({type:"SET_WEBHOOK_TO_DELETE",id:f})},Ce=(f,L)=>U(void 0,null,function*(){const ce=le(L),Me=Q[ce],de=[ce,"isEnabled"],fe=ye(H({},Me),{isEnabled:f});delete fe.id;try{P({type:"SET_WEBHOOK_ENABLED",keys:de,value:f}),yield(0,O.request)(`/admin/webhooks/${L}`,{method:"PUT",body:fe})}catch(Be){C.current&&(P({type:"SET_WEBHOOK_ENABLED",keys:de,value:!f}),Be.code!==20&&A({type:"warning",message:{id:"notification.error"}}))}}),De=()=>{P({type:"SET_ALL_WEBHOOKS_TO_DELETE"})},Pe=(f,L)=>{P({type:"SET_WEBHOOKS_TO_DELETE",value:f,id:L})},Y=f=>{Te(`${se}/${f}`)};return s.createElement(i.Layout,null,s.createElement(O.SettingsPageTitle,{name:"Webhooks"}),s.createElement(t.Main,{"aria-busy":v||re},s.createElement(i.HeaderLayout,{title:E({id:"Settings.webhooks.title",defaultMessage:"Webhooks"}),subtitle:E({id:"Settings.webhooks.list.description",defaultMessage:"Get POST changes notifications"}),primaryAction:y&&!re&&s.createElement(O.LinkButton,{startIcon:s.createElement(I(),null),variant:"default",to:`${se}/create`,size:"L"},E({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}),N>0&&W&&s.createElement(i.ActionLayout,{startActions:s.createElement(s.Fragment,null,s.createElement(g.Typography,{variant:"epsilon",textColor:"neutral600"},E({id:"Settings.webhooks.to.delete",defaultMessage:"{webhooksToDeleteLength, plural, one {# asset} other {# assets}} selected"},{webhooksToDeleteLength:N})),s.createElement(S.Button,{onClick:()=>ue("all"),startIcon:s.createElement(j(),null),size:"L",variant:"danger-light"},E({id:"global.delete",defaultMessage:"Delete"})))}),s.createElement(i.ContentLayout,null,v||re?s.createElement(w.Box,{background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},s.createElement(O.LoadingIndicatorPage,null)):s.createElement(s.Fragment,null,Z>0?s.createElement(p.Table,{colCount:5,rowCount:Z+1,footer:s.createElement(p.TFooter,{onClick:()=>y?Y("create"):{},icon:s.createElement(I(),null)},E({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))},s.createElement(p.Thead,null,s.createElement(p.Tr,null,s.createElement(p.Th,null,s.createElement(b.BaseCheckbox,{"aria-label":E({id:"global.select-all-entries",defaultMessage:"Select all entries"}),indeterminate:N>0&&N<Z,value:N===Z,onValueChange:De})),s.createElement(p.Th,{width:"20%"},s.createElement(g.Typography,{variant:"sigma",textColor:"neutral600"},E({id:"global.name",defaultMessage:"Name"}))),s.createElement(p.Th,{width:"60%"},s.createElement(g.Typography,{variant:"sigma",textColor:"neutral600"},E({id:"Settings.webhooks.form.url",defaultMessage:"URL"}))),s.createElement(p.Th,{width:"20%"},s.createElement(g.Typography,{variant:"sigma",textColor:"neutral600"},E({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"}))),s.createElement(p.Th,null,s.createElement(x.VisuallyHidden,null,E({id:"Settings.webhooks.list.th.actions",defaultMessage:"Actions"}))))),s.createElement(p.Tbody,null,Q.map(f=>s.createElement(p.Tr,H({key:f.id},(0,O.onRowClick)({fn:()=>Y(f.id),condition:k})),s.createElement(p.Td,H({},O.stopPropagation),s.createElement(b.BaseCheckbox,{"aria-label":`${E({id:"global.select",defaultMessage:"Select"})} ${f.name}`,value:X==null?void 0:X.includes(f.id),onValueChange:L=>Pe(L,f.id),id:"select",name:"select"})),s.createElement(p.Td,null,s.createElement(g.Typography,{fontWeight:"semiBold",textColor:"neutral800"},f.name)),s.createElement(p.Td,null,s.createElement(g.Typography,{textColor:"neutral800"},f.url)),s.createElement(p.Td,null,s.createElement(c.Flex,H({},O.stopPropagation),s.createElement(e.Switch,{onLabel:E({id:"global.enabled",defaultMessage:"Enabled"}),offLabel:E({id:"global.disabled",defaultMessage:"Disabled"}),label:`${f.name} ${E({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"})}`,selected:f.isEnabled,onChange:()=>Ce(!f.isEnabled,f.id),visibleLabels:!0}))),s.createElement(p.Td,null,s.createElement(l.Stack,H({horizontal:!0,spacing:1},O.stopPropagation),k&&s.createElement(o.IconButton,{onClick:()=>{Y(f.id)},label:E({id:"Settings.webhooks.events.update",defaultMessage:"Update"}),icon:s.createElement(R(),null),noBorder:!0}),W&&s.createElement(o.IconButton,{onClick:()=>ue(f.id),label:E({id:"global.delete",defaultMessage:"Delete"}),icon:s.createElement(j(),null),noBorder:!0,id:`delete-${f.id}`}))))))):s.createElement(a.EmptyStateLayout,{icon:s.createElement(_(),{width:"160px"}),content:E({id:"Settings.webhooks.list.empty.description",defaultMessage:"No webhooks found"}),action:s.createElement(S.Button,{variant:"secondary",startIcon:s.createElement(I(),null),onClick:()=>y?Y("create"):{}},E({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))})))),s.createElement(O.ConfirmDialog,{isOpen:D,onToggleDialog:we,onConfirm:Se}))},Ee=()=>s.createElement(O.CheckPagePermissions,{permissions:r.Z.settings.webhooks.main},s.createElement(ve,null))}}]);
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  import { Redirect, useHistory } from 'react-router-dom';
3
3
  import styled from 'styled-components';
4
+ import { Link } from '@strapi/helper-plugin';
4
5
  import { Divider } from '@strapi/design-system/Divider';
5
6
  import { Stack } from '@strapi/design-system/Stack';
6
7
  import { Flex } from '@strapi/design-system/Flex';
7
8
  import { Box } from '@strapi/design-system/Box';
8
9
  import { Button } from '@strapi/design-system/Button';
9
- import { Link } from '@strapi/design-system/Link';
10
10
  import { Loader } from '@strapi/design-system/Loader';
11
11
  import { Typography } from '@strapi/design-system/Typography';
12
12
  import { Main } from '@strapi/design-system/Main';
@@ -9,13 +9,13 @@ import {
9
9
  useNotification,
10
10
  useOverlayBlocker,
11
11
  useTracking,
12
+ Link,
12
13
  } from '@strapi/helper-plugin';
13
14
  import { Box } from '@strapi/design-system/Box';
14
15
  import { Button } from '@strapi/design-system/Button';
15
16
  import { ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
16
17
  import { Grid, GridItem } from '@strapi/design-system/Grid';
17
18
  import { Main } from '@strapi/design-system/Main';
18
- import { Link } from '@strapi/design-system/Link';
19
19
  import { Flex } from '@strapi/design-system/Flex';
20
20
  import { Stack } from '@strapi/design-system/Stack';
21
21
  import { Typography } from '@strapi/design-system/Typography';
@@ -29,6 +29,10 @@ module.exports = {
29
29
  const createdUser = await getService('user').create(attributes);
30
30
  const userInfo = getService('user').sanitizeUser(createdUser);
31
31
 
32
+ // Note: We need to assign manually the registrationToken to the
33
+ // final user payload so that it's not removed in the sanitation process.
34
+ Object.assign(userInfo, { registrationToken: createdUser.registrationToken });
35
+
32
36
  ctx.created({ data: userInfo });
33
37
  },
34
38
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/admin",
3
- "version": "4.2.0-beta.1",
3
+ "version": "4.2.0-beta.4",
4
4
  "description": "Strapi Admin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -50,12 +50,12 @@
50
50
  "@fortawesome/free-brands-svg-icons": "^5.15.3",
51
51
  "@fortawesome/free-solid-svg-icons": "^5.15.3",
52
52
  "@fortawesome/react-fontawesome": "^0.1.14",
53
- "@strapi/babel-plugin-switch-ee-ce": "4.2.0-beta.1",
54
- "@strapi/design-system": "0.0.1-alpha.79",
55
- "@strapi/helper-plugin": "4.2.0-beta.1",
56
- "@strapi/icons": "0.0.1-alpha.79",
57
- "@strapi/typescript-utils": "4.2.0-beta.1",
58
- "@strapi/utils": "4.2.0-beta.1",
53
+ "@strapi/babel-plugin-switch-ee-ce": "4.2.0-beta.4",
54
+ "@strapi/design-system": "1.1.0",
55
+ "@strapi/helper-plugin": "4.2.0-beta.4",
56
+ "@strapi/icons": "1.1.0",
57
+ "@strapi/typescript-utils": "4.2.0-beta.4",
58
+ "@strapi/utils": "4.2.0-beta.4",
59
59
  "axios": "0.24.0",
60
60
  "babel-loader": "8.2.3",
61
61
  "babel-plugin-styled-components": "2.0.2",
@@ -141,8 +141,8 @@
141
141
  "webpack-bundle-analyzer": "4.4.1"
142
142
  },
143
143
  "engines": {
144
- "node": ">=12.22.0 <=16.x.x",
144
+ "node": ">=14.19.1 <=16.x.x",
145
145
  "npm": ">=6.0.0"
146
146
  },
147
- "gitHead": "4fa2804f35e15ed72dfd309fb5bb1c4dba18932f"
147
+ "gitHead": "5caff35a30e33b7a660eb946299f9e3d2d35b2b8"
148
148
  }
@@ -146,5 +146,19 @@ module.exports = {
146
146
  section: 'settings',
147
147
  category: 'api tokens',
148
148
  },
149
+ {
150
+ uid: 'project-settings.update',
151
+ displayName: 'Update the project level settings',
152
+ pluginName: 'admin',
153
+ section: 'settings',
154
+ category: 'project',
155
+ },
156
+ {
157
+ uid: 'project-settings.read',
158
+ displayName: 'Read the project level settings',
159
+ pluginName: 'admin',
160
+ section: 'settings',
161
+ category: 'project',
162
+ },
149
163
  ],
150
164
  };
@@ -9,6 +9,11 @@ const { isUsingTypeScript } = require('@strapi/typescript-utils');
9
9
  // eslint-disable-next-line node/no-extraneous-require
10
10
  const ee = require('@strapi/strapi/lib/utils/ee');
11
11
 
12
+ const {
13
+ validateUpdateProjectSettings,
14
+ validateUpdateProjectSettingsFiles,
15
+ validateUpdateProjectSettingsImagesDimensions,
16
+ } = require('../validation/project-settings');
12
17
  const { getService } = require('../utils');
13
18
 
14
19
  const PLUGIN_NAME_REGEX = /^[A-Za-z][A-Za-z0-9-_]+$/;
@@ -40,6 +45,7 @@ module.exports = {
40
45
  async init() {
41
46
  let uuid = strapi.config.get('uuid', false);
42
47
  const hasAdmin = await getService('user').exists();
48
+ const { menuLogo } = await getService('project-settings').getProjectSettings();
43
49
  // set to null if telemetryDisabled flag not avaialble in package.json
44
50
  const telemetryDisabled = strapi.config.get('packageJsonStrapi.telemetryDisabled', null);
45
51
 
@@ -47,7 +53,33 @@ module.exports = {
47
53
  uuid = false;
48
54
  }
49
55
 
50
- return { data: { uuid, hasAdmin } };
56
+ return {
57
+ data: {
58
+ uuid,
59
+ hasAdmin,
60
+ menuLogo: menuLogo ? menuLogo.url : null,
61
+ },
62
+ };
63
+ },
64
+
65
+ async getProjectSettings() {
66
+ return getService('project-settings').getProjectSettings();
67
+ },
68
+
69
+ async updateProjectSettings(ctx) {
70
+ const projectSettingsService = getService('project-settings');
71
+
72
+ const {
73
+ request: { files, body },
74
+ } = ctx;
75
+
76
+ await validateUpdateProjectSettings(body);
77
+ await validateUpdateProjectSettingsFiles(files);
78
+
79
+ const formatedFiles = await projectSettingsService.parseFilesData(files);
80
+ await validateUpdateProjectSettingsImagesDimensions(formatedFiles);
81
+
82
+ return projectSettingsService.updateProjectSettings({ ...body, ...formatedFiles });
51
83
  },
52
84
 
53
85
  async telemetryProperties() {
@@ -36,6 +36,10 @@ module.exports = {
36
36
 
37
37
  const userInfo = getService('user').sanitizeUser(createdUser);
38
38
 
39
+ // Note: We need to assign manually the registrationToken to the
40
+ // final user payload so that it's not removed in the sanitation process.
41
+ Object.assign(userInfo, { registrationToken: createdUser.registrationToken });
42
+
39
43
  // Send 201 created
40
44
  ctx.created({ data: userInfo });
41
45
  },
@@ -7,6 +7,34 @@ module.exports = [
7
7
  handler: 'admin.init',
8
8
  config: { auth: false },
9
9
  },
10
+ {
11
+ method: 'GET',
12
+ path: '/project-settings',
13
+ handler: 'admin.getProjectSettings',
14
+ config: {
15
+ policies: [
16
+ 'admin::isAuthenticatedAdmin',
17
+ {
18
+ name: 'admin::hasPermissions',
19
+ config: { actions: ['admin::project-settings.read'] },
20
+ },
21
+ ],
22
+ },
23
+ },
24
+ {
25
+ method: 'POST',
26
+ path: '/project-settings',
27
+ handler: 'admin.updateProjectSettings',
28
+ config: {
29
+ policies: [
30
+ 'admin::isAuthenticatedAdmin',
31
+ {
32
+ name: 'admin::hasPermissions',
33
+ config: { actions: ['admin::project-settings.update'] },
34
+ },
35
+ ],
36
+ },
37
+ },
10
38
  {
11
39
  method: 'GET',
12
40
  path: '/project-type',
@@ -13,4 +13,5 @@ module.exports = {
13
13
  auth: require('./auth'),
14
14
  action: require('./action'),
15
15
  'api-token': require('./api-token'),
16
+ 'project-settings': require('./project-settings'),
16
17
  };