@strapi/admin 4.11.0-alpha.0 → 4.11.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/admin/src/components/AuthenticatedApp/utils/api.js +5 -4
  2. package/admin/src/components/Providers/index.js +32 -32
  3. package/admin/src/components/Theme/index.js +5 -3
  4. package/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +1 -2
  5. package/admin/src/content-manager/components/DynamicZone/index.js +1 -1
  6. package/admin/src/content-manager/components/FieldComponent/index.js +1 -1
  7. package/admin/src/content-manager/components/Inputs/index.js +19 -12
  8. package/admin/src/content-manager/components/Inputs/utils/index.js +0 -1
  9. package/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js +67 -71
  10. package/admin/src/content-manager/hooks/useFetchContentTypeLayout/index.js +3 -5
  11. package/admin/src/content-manager/pages/App/useContentManagerInitData.js +2 -3
  12. package/admin/src/content-manager/pages/ComponentSetttingsView/index.js +2 -5
  13. package/admin/src/content-manager/pages/EditView/DeleteLink/index.js +1 -1
  14. package/admin/src/content-manager/pages/EditView/Header/index.js +1 -1
  15. package/admin/src/content-manager/pages/EditViewLayoutManager/Permissions.js +1 -1
  16. package/admin/src/content-manager/pages/ListView/index.js +1 -2
  17. package/admin/src/hooks/index.js +1 -1
  18. package/admin/src/hooks/marketplace/constants.js +1 -0
  19. package/admin/src/hooks/{useFetchMarketplacePlugins → marketplace/useFetchMarketplacePlugins}/index.js +21 -1
  20. package/admin/src/hooks/{useFetchMarketplaceProviders → marketplace/useFetchMarketplaceProviders}/index.js +21 -1
  21. package/admin/src/hooks/useAdminUsers/__mocks__/index.js +5 -0
  22. package/admin/src/hooks/useAdminUsers/index.js +1 -0
  23. package/admin/src/hooks/useAdminUsers/useAdminUsers.js +38 -0
  24. package/admin/src/hooks/useContentTypes/__mocks__/index.js +6 -0
  25. package/admin/src/hooks/useContentTypes/index.js +1 -0
  26. package/admin/src/hooks/useContentTypes/useContentTypes.js +47 -0
  27. package/admin/src/hooks/useReleaseNotification/utils/api.js +6 -5
  28. package/admin/src/pages/Admin/Onboarding/index.js +89 -91
  29. package/admin/src/pages/App/index.js +1 -5
  30. package/admin/src/pages/AuthPage/components/Register/index.js +3 -4
  31. package/admin/src/pages/AuthPage/index.js +11 -26
  32. package/admin/src/pages/HomePage/index.js +3 -2
  33. package/admin/src/pages/MarketplacePage/components/NpmPackageCard/InstallPluginButton.js +12 -8
  34. package/admin/src/pages/MarketplacePage/components/NpmPackagesFilters/FiltersPopover.js +39 -41
  35. package/admin/src/pages/MarketplacePage/utils/useMarketplaceData.js +2 -2
  36. package/admin/src/pages/SettingsPage/components/Tokens/TokenBox/index.js +28 -26
  37. package/admin/src/pages/SettingsPage/components/Tokens/TokenDescription/index.js +1 -1
  38. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/utils/urlToFile.js +3 -2
  39. package/admin/src/pages/SettingsPage/pages/Roles/CreatePage/index.js +1 -1
  40. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RoleForm/index.js +1 -1
  41. package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +36 -26
  42. package/admin/src/pages/SettingsPage/pages/Users/EditPage/utils/api.js +1 -8
  43. package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/index.js +6 -7
  44. package/admin/src/pages/SettingsPage/pages/Users/ListPage/index.js +54 -63
  45. package/admin/src/pages/SettingsPage/pages/Users/components/MagicLink/MagicLinkWrapper.js +11 -9
  46. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/index.js +12 -1
  47. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js +2 -2
  48. package/admin/src/pages/SettingsPage/pages/Webhooks/ListView/index.js +120 -205
  49. package/admin/src/pages/UseCasePage/index.js +13 -15
  50. package/admin/src/translations/ar.json +684 -1
  51. package/admin/src/translations/en.json +12 -9
  52. package/build/1387.a86ac314.chunk.js +1 -0
  53. package/build/{1657.45231968.chunk.js → 1657.ca8562dd.chunk.js} +17 -17
  54. package/build/3081.c2cdfac8.chunk.js +108 -0
  55. package/build/{3562.57745ccd.chunk.js → 3562.e0b1a0b3.chunk.js} +6 -6
  56. package/build/456.9b85d4c6.chunk.js +39 -0
  57. package/build/462.a073ff1f.chunk.js +71 -0
  58. package/build/{4628.20631dd1.chunk.js → 4628.9cbb6df5.chunk.js} +1 -1
  59. package/build/5542.002522eb.chunk.js +71 -0
  60. package/build/5563.79950369.chunk.js +79 -0
  61. package/build/617.87b2fe96.chunk.js +155 -0
  62. package/build/6970.7ea35fbd.chunk.js +1 -0
  63. package/build/7259.5cc67413.chunk.js +1 -0
  64. package/build/Admin-authenticatedApp.990df65d.chunk.js +79 -0
  65. package/build/Admin_homePage.107a9fe0.chunk.js +73 -0
  66. package/build/Admin_marketplace.1436fc2b.chunk.js +55 -0
  67. package/build/Admin_pluginsPage.e1afd5ed.chunk.js +6 -0
  68. package/build/{Admin_profilePage.1b337b73.chunk.js → Admin_profilePage.75bc083a.chunk.js} +1 -1
  69. package/build/Admin_settingsPage.bd715ed3.chunk.js +79 -0
  70. package/build/{Upload_ConfigureTheView.d429a7fc.chunk.js → Upload_ConfigureTheView.aa64ed9a.chunk.js} +1 -1
  71. package/build/admin-app.8b102fe2.chunk.js +63 -0
  72. package/build/{admin-edit-roles-page.d0c9497b.chunk.js → admin-edit-roles-page.0d12b741.chunk.js} +43 -41
  73. package/build/admin-edit-users.f9ce7844.chunk.js +10 -0
  74. package/build/admin-roles-list.e8bf9685.chunk.js +31 -0
  75. package/build/admin-users.751b28b2.chunk.js +34 -0
  76. package/build/ar-json.f530bc3f.chunk.js +1 -0
  77. package/build/audit-logs-settings-page.3c6cea81.chunk.js +129 -0
  78. package/build/content-manager.89099707.chunk.js +1123 -0
  79. package/build/content-type-builder-list-view.1e821eb9.chunk.js +215 -0
  80. package/build/content-type-builder-translation-en-json.af293c9e.chunk.js +1 -0
  81. package/build/content-type-builder.b10576e7.chunk.js +126 -0
  82. package/build/email-settings-page.4368689f.chunk.js +11 -0
  83. package/build/en-json.0f5cc115.chunk.js +1 -0
  84. package/build/i18n-settings-page.7988d872.chunk.js +114 -0
  85. package/build/index.html +1 -1
  86. package/build/main.5a232c3d.js +2630 -0
  87. package/build/review-workflows-settings.4b39b837.chunk.js +61 -0
  88. package/build/{runtime~main.1074f2bb.js → runtime~main.55d43bd7.js} +2 -2
  89. package/build/{sso-settings-page.f44d95d8.chunk.js → sso-settings-page.265e3d72.chunk.js} +1 -1
  90. package/build/upload-settings.63d99bf5.chunk.js +14 -0
  91. package/build/upload.c50d8c7a.chunk.js +34 -0
  92. package/build/users-advanced-settings-page.2cfb5d24.chunk.js +9 -0
  93. package/build/users-email-settings-page.bd6c774a.chunk.js +24 -0
  94. package/build/users-providers-settings-page.528f0036.chunk.js +29 -0
  95. package/build/{users-roles-settings-page.eeb3a339.chunk.js → users-roles-settings-page.c773086b.chunk.js} +2 -2
  96. package/build/webhook-edit-page.ddd5963d.chunk.js +128 -0
  97. package/build/webhook-list-page.b0f5a02c.chunk.js +71 -0
  98. package/ee/LICENSE +1 -21
  99. package/ee/admin/content-manager/pages/EditView/InformationBox/InformationBoxEE.js +1 -2
  100. package/ee/admin/pages/AuthPage/components/Login/index.js +1 -1
  101. package/ee/admin/pages/AuthPage/components/Providers/SSOProviders.js +1 -1
  102. package/ee/admin/pages/AuthPage/components/Providers/index.js +1 -1
  103. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useAuditLogsData.js +36 -28
  104. package/ee/admin/pages/SettingsPage/pages/AuditLogs/ListView/utils/getDisplayedFilters.js +1 -1
  105. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/ReviewWorkflows.js +3 -3
  106. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflows.js +32 -21
  107. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/ModalForm/utils/formDataModel.js +1 -1
  108. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/ModalForm/utils/roleSettingsForm.js +1 -1
  109. package/ee/server/services/audit-logs.js +5 -1
  110. package/package.json +18 -21
  111. package/webpack.alias.js +0 -2
  112. package/admin/src/content-manager/components/Inputs/utils/getStep.js +0 -13
  113. package/admin/src/hooks/useFetchMarketplacePlugins/utils/api.js +0 -18
  114. package/admin/src/hooks/useFetchMarketplaceProviders/utils/api.js +0 -18
  115. package/admin/src/hooks/useModels/index.js +0 -58
  116. package/admin/src/hooks/useModels/reducer.js +0 -45
  117. package/admin/src/pages/SettingsPage/pages/Users/ListPage/utils/api.js +0 -20
  118. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/utils/formatValue.js +0 -13
  119. package/admin/src/pages/SettingsPage/pages/Webhooks/ListView/reducer.js +0 -72
  120. package/build/1387.84b454d3.chunk.js +0 -1
  121. package/build/3081.bcf9a12f.chunk.js +0 -108
  122. package/build/462.8fff7f3b.chunk.js +0 -71
  123. package/build/5542.b8240e3f.chunk.js +0 -70
  124. package/build/5563.986609ed.chunk.js +0 -79
  125. package/build/6404.68405699.chunk.js +0 -100
  126. package/build/6970.5159b068.chunk.js +0 -1
  127. package/build/7259.7a48aa2f.chunk.js +0 -1
  128. package/build/7725.1633e06f.chunk.js +0 -213
  129. package/build/Admin-authenticatedApp.27a2329f.chunk.js +0 -79
  130. package/build/Admin_homePage.9f7c0bb1.chunk.js +0 -73
  131. package/build/Admin_marketplace.5f7b89e5.chunk.js +0 -55
  132. package/build/Admin_pluginsPage.9e6fa51c.chunk.js +0 -6
  133. package/build/Admin_settingsPage.9d0419bc.chunk.js +0 -79
  134. package/build/admin-app.8e1f56bc.chunk.js +0 -63
  135. package/build/admin-edit-users.2aae89f5.chunk.js +0 -10
  136. package/build/admin-roles-list.c759daa3.chunk.js +0 -31
  137. package/build/admin-users.04a823ca.chunk.js +0 -34
  138. package/build/ar-json.39e54aba.chunk.js +0 -1
  139. package/build/audit-logs-settings-page.45cb4fb5.chunk.js +0 -76
  140. package/build/content-manager.cf467ecc.chunk.js +0 -1123
  141. package/build/content-type-builder-list-view.5ff685ec.chunk.js +0 -214
  142. package/build/content-type-builder-translation-en-json.5e5f8607.chunk.js +0 -1
  143. package/build/content-type-builder.4737a30c.chunk.js +0 -126
  144. package/build/email-settings-page.dc07d518.chunk.js +0 -10
  145. package/build/en-json.7edb00f6.chunk.js +0 -1
  146. package/build/i18n-settings-page.8219dd99.chunk.js +0 -60
  147. package/build/main.14dca275.js +0 -2592
  148. package/build/review-workflows-settings.6a662ebd.chunk.js +0 -61
  149. package/build/upload-settings.dd2d987c.chunk.js +0 -13
  150. package/build/upload.c8479232.chunk.js +0 -33
  151. package/build/users-advanced-settings-page.c36cfd59.chunk.js +0 -8
  152. package/build/users-email-settings-page.2716ce8e.chunk.js +0 -23
  153. package/build/users-providers-settings-page.0d6304a5.chunk.js +0 -28
  154. package/build/webhook-edit-page.f4db86f3.chunk.js +0 -75
  155. package/build/webhook-list-page.30d73114.chunk.js +0 -71
@@ -0,0 +1,128 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[5162],{55734:function(G,b,t){t.d(b,{Z:function(){return ge}});var e=t(32735),o=t(24989),A=t(27649),M=t(20108),p=t(53038),j=t(70166),me=t(60216),i=t.n(me),ne=t(2438),re=t(66456),Ee=t(29439),pe=t(82055),m=t(87933),S=t(41415),fe=t(17e3),k=t(72850),J=t(15335),D=t(5803),Y=t(10369),I=t(92802),$=t(67879),se=t(28847),O=t(49372),le=t(8471),ve=t(8284),Ce=t(82884),be=t(23940),Me=t.n(be);const W=({disabledEvents:n,name:r,events:s,inputValue:l,handleChange:c,handleChangeAll:f})=>{const d=s.filter(h=>!n.includes(h)),u=l.length===d.length,E=l.length>0,x=({target:{name:h}})=>{f({target:{name:h,value:!u}})};return e.createElement("tr",null,e.createElement("td",null,e.createElement(ve.X,{indeterminate:E&&!u,"aria-label":"Select all entries",name:r,onChange:x,value:u},Me()(r))),s.map(h=>e.createElement("td",{key:h},e.createElement(Ce.C,{disabled:n.includes(h),"aria-label":h,name:h,value:l.includes(h),onValueChange:v=>c({target:{name:h,value:v}})}))))};W.defaultProps={disabledEvents:[],events:[],inputValue:[],handleChange(){},handleChangeAll(){}},W.propTypes={disabledEvents:i().array,events:i().array,inputValue:i().array,handleChange:i().func,handleChangeAll:i().func,name:i().string.isRequired};var a=W;const y=n=>n.reduce((r,s)=>{const l=s.split(".")[0];return r[l]||(r[l]=[]),r[l].push(s),r},{}),U=le.ZP.table`
2
+ td {
3
+ height: ${52/16}rem;
4
+ width: 10%;
5
+ vertical-align: middle;
6
+ text-align: center;
7
+ }
8
+
9
+ tbody tr:nth-child(odd) {
10
+ background: ${({theme:n})=>n.colors.neutral100};
11
+ }
12
+
13
+ tbody tr td:first-child {
14
+ padding-left: ${({theme:n})=>n.spaces[7]};
15
+ }
16
+ `,Z={headers:{default:[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"}],draftAndPublish:[{id:"Settings.webhooks.events.create",defaultMessage:"Create"},{id:"Settings.webhooks.events.update",defaultMessage:"Update"},{id:"app.utils.delete",defaultMessage:"Delete"},{id:"app.utils.publish",defaultMessage:"Publish"},{id:"app.utils.unpublish",defaultMessage:"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"]}}},K=({isDraftAndPublish:n})=>{const r=n?Z.headers.draftAndPublish:Z.headers.default,s=n?Z.events.draftAndPublish:Z.events.default,{formatMessage:l}=(0,$.Z)(),{values:c,handleChange:f}=(0,I.u6)(),d="events",u=c.events,E=[],x=y(u),h=({target:{name:g,value:B}})=>{let R=new Set(u);B?R.add(g):R.delete(g),f({target:{name:d,value:Array.from(R)}})},v=({target:{name:g,value:B}})=>{let R=new Set(u);B?s[g].forEach(L=>{E.includes(L)||R.add(L)}):s[g].forEach(L=>R.delete(L)),f({target:{name:d,value:Array.from(R)}})};return e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(se.Q,null,l({id:"Settings.webhooks.form.events",defaultMessage:"Events"})),e.createElement(U,null,e.createElement("thead",null,e.createElement("tr",null,e.createElement("td",null),r.map(g=>g==="app.utils.publish"||g==="app.utils.unpublish"?e.createElement("td",{key:g.id,title:l({id:"Settings.webhooks.event.publish-tooltip",defaultMessage:"This event only exists for content with draft & publish enabled"})},e.createElement(O.Z,{variant:"sigma",textColor:"neutral600"},l(g))):e.createElement("td",{key:g.id},e.createElement(O.Z,{variant:"sigma",textColor:"neutral600"},l(g)))))),e.createElement("tbody",null,Object.keys(s).map(g=>e.createElement(a,{disabledEvents:E,key:g,name:g,events:s[g],inputValue:x[g],handleChange:h,handleChangeAll:v})))))};K.propTypes={isDraftAndPublish:i().bool.isRequired};var q=K,ye=t(19406),Pe=t(7563),xe=t(21428),ee=t(90333),ie=["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"];const te=({name:n,onChange:r,value:s,...l})=>{const[c,f]=(0,e.useState)(s?[...ie,s]:ie),d=E=>{r({target:{name:n,value:E}})},u=E=>{f(x=>[...x,E]),r({target:{name:n,value:E}})};return e.createElement(xe.XU,{...l,onChange:d,onCreateOption:u,placeholder:"",value:s},c.map(E=>e.createElement(ee.O,{value:E,key:E},E)))};te.defaultProps={value:void 0},te.propTypes={name:i().string.isRequired,onChange:i().func.isRequired,value:i().string};var Ie=te,Oe=()=>{const{formatMessage:n}=(0,$.Z)(),{values:r,errors:s}=(0,I.u6)();return e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:1},e.createElement(se.Q,null,n({id:"Settings.webhooks.form.headers",defaultMessage:"Headers"})),e.createElement(k.x,{padding:8,background:"neutral100",hasRadius:!0},e.createElement(I.F2,{validateOnChange:!1,name:"headers",render:({push:l,remove:c})=>e.createElement(J.r,{gap:4},r.headers?.map((f,d)=>e.createElement(e.Fragment,{key:d},e.createElement(D.P,{col:6},e.createElement(I.gN,{as:Ie,name:`headers.${d}.key`,"aria-label":`row ${d+1} key`,label:n({id:"Settings.webhooks.key",defaultMessage:"Key"}),error:s.headers?.[d]?.key&&n({id:s.headers[d]?.key,defaultMessage:s.headers[d]?.key})})),e.createElement(D.P,{col:6},e.createElement(m.k,{alignItems:"flex-end"},e.createElement(k.x,{style:{flex:1}},e.createElement(I.gN,{as:Y.o,"aria-label":`row ${d+1} value`,label:n({id:"Settings.webhooks.value",defaultMessage:"Value"}),name:`headers.${d}.value`,error:s.headers?.[d]?.value&&n({id:s.headers[d]?.value,defaultMessage:s.headers[d]?.value})})),e.createElement(m.k,{paddingLeft:2,style:{alignSelf:"center"},paddingTop:s.headers?.[d]?.value?0:5},e.createElement(o.fG,{onClick:()=>r.headers.length!==1&&c(d),label:n({id:"Settings.webhooks.headers.remove",defaultMessage:"Remove header row {number}"},{number:d+1})})))))),e.createElement(D.P,{col:12},e.createElement(Pe.A,{type:"button",onClick:()=>{l({key:"",value:""})},startIcon:e.createElement(ye.Z,null)},n({id:"Settings.webhooks.create.header",defaultMessage:"Create new header"}))))})))},Re=t(27169),F=t(35331);const Q=le.ZP.svg(({theme:n,color:r})=>`
17
+ width: ${12/16}rem;
18
+ height: ${12/16}rem;
19
+
20
+ path {
21
+ fill: ${n.colors[r]};
22
+ }
23
+ `),ae=({isPending:n,statusCode:r})=>{const{formatMessage:s}=(0,$.Z)();return n?e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(Q,{as:Re.Z}),e.createElement(O.Z,null,s({id:"Settings.webhooks.trigger.pending",defaultMessage:"pending"}))):r>=200&&r<300?e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(Q,{as:re.Z,color:"success700"}),e.createElement(O.Z,null,s({id:"Settings.webhooks.trigger.success",defaultMessage:"success"}))):r>=300?e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(Q,{as:F.Z,color:"danger700"}),e.createElement(O.Z,null,s({id:"Settings.error",defaultMessage:"error"})," ",r)):null};ae.propTypes={isPending:i().bool.isRequired,statusCode:i().number},ae.defaultProps={statusCode:void 0};const H=({statusCode:n,message:r})=>{const{formatMessage:s}=(0,$.Z)();return n>=200&&n<300?e.createElement(m.k,{justifyContent:"flex-end"},e.createElement(O.Z,{textColor:"neutral600",ellipsis:!0},s({id:"Settings.webhooks.trigger.success.label",defaultMessage:"Trigger succeeded"}))):n>=300?e.createElement(m.k,{justifyContent:"flex-end"},e.createElement(m.k,{maxWidth:(0,o.Q1)(250),justifyContent:"flex-end",title:r},e.createElement(O.Z,{ellipsis:!0,textColor:"neutral600"},r))):null};H.propTypes={statusCode:i().number,message:i().string},H.defaultProps={statusCode:void 0,message:void 0};const N=({onCancel:n})=>{const{formatMessage:r}=(0,$.Z)();return e.createElement(m.k,{justifyContent:"flex-end"},e.createElement("button",{onClick:n,type:"button"},e.createElement(m.k,{gap:2,alignItems:"center"},e.createElement(O.Z,{textColor:"neutral400"},r({id:"Settings.webhooks.trigger.cancel",defaultMessage:"cancel"})),e.createElement(Q,{as:F.Z,color:"neutral400"}))))};N.propTypes={onCancel:i().func.isRequired};const z=({isPending:n,onCancel:r,response:s})=>{const{statusCode:l,message:c}=s,{formatMessage:f}=(0,$.Z)();return e.createElement(k.x,{background:"neutral0",padding:5,shadow:"filterShadow",hasRadius:!0},e.createElement(J.r,{gap:4,style:{alignItems:"center"}},e.createElement(D.P,{col:3},e.createElement(O.Z,null,f({id:"Settings.webhooks.trigger.test",defaultMessage:"Test-trigger"}))),e.createElement(D.P,{col:3},e.createElement(ae,{isPending:n,statusCode:l})),e.createElement(D.P,{col:6},n?e.createElement(N,{onCancel:r}):e.createElement(H,{statusCode:l,message:c}))))};z.defaultProps={isPending:!1,onCancel(){},response:{}},z.propTypes={isPending:i().bool,onCancel:i().func,response:i().object};var Te=z,P=t(24346);const De=/(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/,de=/(^$)|((https?:\/\/.*)(d*)\/?(.*))/;var ce=P.Ry().shape({name:P.Z_(o.I0.string).required(o.I0.required).matches(De,o.I0.regex),url:P.Z_(o.I0.string).required(o.I0.required).matches(de,o.I0.regex),headers:P.Vo(n=>{let r=P.IX();if(n.length===1){const{key:s,value:l}=n[0];if(!s&&!l)return r}return r.of(P.Ry().shape({key:P.Z_().required(o.I0.required),value:P.Z_().required(o.I0.required)}))}),events:P.IX()});const _=({handleSubmit:n,data:r,triggerWebhook:s,isCreating:l,isTriggering:c,triggerResponse:f,isDraftAndPublishEvents:d})=>{const{formatMessage:u}=(0,$.Z)(),[E,x]=(0,e.useState)(!1);return e.createElement(I.J9,{onSubmit:n,initialValues:{name:r?.name||"",url:r?.url||"",headers:Object.keys(r?.headers||[]).length?Object.entries(r.headers).map(([h,v])=>({key:h,value:v})):[{key:"",value:""}],events:r?.events||[]},validationSchema:ce,validateOnChange:!1,validateOnBlur:!1},({handleSubmit:h,errors:v})=>e.createElement(o.l0,{noValidate:!0},e.createElement(pe.T,{primaryAction:e.createElement(m.k,{gap:2},e.createElement(S.z,{onClick:()=>{s(),x(!0)},variant:"tertiary",startIcon:e.createElement(ne.Z,null),disabled:l||c,size:"L"},u({id:"Settings.webhooks.trigger",defaultMessage:"Trigger"})),e.createElement(S.z,{startIcon:e.createElement(re.Z,null),onClick:h,type:"submit",size:"L"},u({id:"global.save",defaultMessage:"Save"}))),title:l?u({id:"Settings.webhooks.create",defaultMessage:"Create a webhook"}):r?.name,navigationAction:e.createElement(o.rU,{startIcon:e.createElement(Ee.Z,null),to:"/settings/webhooks"},u({id:"global.back",defaultMessage:"Back"}))}),e.createElement(fe.D,null,e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:4},E&&e.createElement("div",{className:"trigger-wrapper"},e.createElement(Te,{isPending:c,response:f,onCancel:()=>x(!1)})),e.createElement(k.x,{background:"neutral0",padding:8,shadow:"filterShadow",hasRadius:!0},e.createElement(m.k,{direction:"column",alignItems:"stretch",gap:6},e.createElement(J.r,{gap:6},e.createElement(D.P,{col:6},e.createElement(I.gN,{as:Y.o,name:"name",error:v.name&&u({id:v.name}),label:u({id:"global.name",defaultMessage:"Name"}),required:!0})),e.createElement(D.P,{col:12},e.createElement(I.gN,{as:Y.o,name:"url",error:v.url&&u({id:v.url}),label:u({id:"Settings.roles.form.input.url",defaultMessage:"Url"}),required:!0}))),e.createElement(Oe,null),e.createElement(q,{isDraftAndPublish:d})))))))};_.propTypes={data:i().object,handleSubmit:i().func.isRequired,triggerWebhook:i().func.isRequired,isCreating:i().bool.isRequired,isDraftAndPublishEvents:i().bool.isRequired,isTriggering:i().bool.isRequired,triggerResponse:i().object},_.defaultProps={data:void 0,triggerResponse:void 0};var Ae=_;const ue=n=>({...n,headers:X(n.headers)}),X=n=>n.reduce((r,s)=>{const{key:l,value:c}=s;return l!==""?{...r,[l]:c}:r},{});var he=ue,ge=()=>{const{params:{id:n}}=(0,p.$B)("/settings/webhooks/:id"),{replace:r}=(0,p.k6)(),{lockApp:s,unlockApp:l}=(0,o.o1)(),c=(0,o.lm)(),f=(0,M.useQueryClient)(),{isLoading:d,collectionTypes:u}=(0,j.G)(),{put:E,get:x,post:h}=(0,o.kY)(),v=n==="create",{isLoading:g,data:B}=(0,M.useQuery)(["get-webhook",n],async()=>{try{const{data:{data:T}}=await x(`/admin/webhooks/${n}`);return T}catch{return c({type:"warning",message:{id:"notification.error"}}),null}},{enabled:!v}),{isLoading:R,data:L,isIdle:je,mutate:ke}=(0,M.useMutation)(()=>h(`/admin/webhooks/${n}/trigger`)),C=()=>ke(null,{onError(){c({type:"warning",message:{id:"notification.error"}})}}),Se=(0,M.useMutation)(T=>h("/admin/webhooks",T)),Ze=(0,M.useMutation)(({id:T,body:V})=>E(`/admin/webhooks/${T}`,V)),Be=async T=>{v?(s(),Se.mutate(he(T),{onSuccess({data:V}){c({type:"success",message:{id:"Settings.webhooks.created"}}),r(`/settings/webhooks/${V.data.id}`),l()},onError(V){c({type:"warning",message:{id:"notification.error"}}),console.log(V),l()}})):(s(),Ze.mutate({id:n,body:he(T)},{onSuccess(){f.invalidateQueries(["get-webhook",n]),c({type:"success",message:{id:"notification.form.success.fields"}}),l()},onError(V){c({type:"warning",message:{id:"notification.error"}}),console.log(V),l()}}))},We=e.useMemo(()=>u.some(T=>T.options.draftAndPublish===!0),[u]);return g||d?e.createElement(o.dO,null):e.createElement(A.o,null,e.createElement(o.SL,{name:"Webhooks"}),e.createElement(Ae,{handleSubmit:Be,data:B,triggerWebhook:C,isCreating:v,isTriggering:R,isTriggerIdle:je,triggerResponse:L?.data.data,isDraftAndPublishEvents:We}))}},33238:function(G,b,t){t.r(b);var e=t(32735),o=t(24989),A=t(83983),M=t(55734);const p=()=>e.createElement(o.O4,{permissions:A.Z.settings.webhooks.create},e.createElement(M.Z,null));b.default=p},59021:function(G,b,t){t.r(b);var e=t(32735),o=t(24989),A=t(83983),M=t(55734);const p=()=>e.createElement(o.O4,{permissions:A.Z.settings.webhooks.update},e.createElement(M.Z,null));b.default=p},21428:function(G,b,t){t.d(b,{Wx:function(){return Me},XU:function(){return $},hQ:function(){return I}});var e=t(74512),o=t(32735),A=t(35331),M=t(16899),p=t(42345),j=t(8471),me=t(14268),i=t(95976),ne=t(74971),re=t(36971),Ee=t(30350),pe=t(23866),m=t(72850),S=t(49372),fe=t(87107),k=t(87933),J=t(28847),D=t(67014),Y=t(47851);const I=({children:a,clearLabel:y="clear",creatable:U=!1,createMessage:Z=X=>`Create "${X}"`,defaultFilterValue:K,defaultTextValue:q,defaultOpen:ye=!1,open:Pe,onOpenChange:xe,disabled:ee=!1,error:oe,filterValue:ie,hasMoreItems:te=!1,hint:Ie,id:$e,label:Oe,labelAction:Re,loading:F=!1,loadingMessage:Q="Loading content...",noOptionsMessage:ae=()=>"No results found",onChange:H,onClear:N,onCreateOption:z,onFilterValueChange:Te,onInputChange:P,onTextValueChange:De,onLoadMore:de,placeholder:Le="Select or enter a value",required:ce=!1,startIcon:_,textValue:Ae,value:ue})=>{const[X,he]=(0,i.T)({prop:Pe,defaultProp:ye,onChange:xe}),[w,ge]=(0,i.T)({prop:Ae,defaultProp:q,onChange:De}),[n,r]=(0,i.T)({prop:ie,defaultProp:K,onChange:Te}),s=o.useRef(null),l=o.useRef(null),c=o.useRef(null),f=(0,ne.M)($e),d=C=>{N&&!ee&&(ge(""),r(""),N(C),l.current.focus())},u=C=>{he(C)},E=C=>{ge(C)},x=C=>{r(C)},h=C=>{P&&P(C)},v=C=>{H&&H(C)},g=(0,ne.M)(),B=`intersection-${(0,me.B)(g)}`,R=C=>{de&&te&&!F&&de(C)},L=()=>{z&&w&&z(w)};(0,re.s)(s,R,{selectorToWatch:`#${B}`,skipWhen:!X});const je=`${f}-hint`,ke=`${f}-error`;return(0,e.jsx)(fe.g,{hint:Ie,error:oe,id:f,required:ce,children:(0,e.jsxs)(k.k,{direction:"column",alignItems:"stretch",gap:1,children:[(0,e.jsx)(J.Q,{action:Re,children:Oe}),(0,e.jsxs)(p.hQ.Root,{autocomplete:U?"list":"both",open:X,onOpenChange:u,onTextValueChange:E,textValue:w,allowCustomValue:!0,disabled:ee,required:ce,value:ue===null?void 0:ue,onValueChange:v,filterValue:n,onFilterValueChange:x,children:[(0,e.jsxs)(O,{$hasError:!!oe,children:[(0,e.jsxs)(k.k,{flex:"1",as:"span",gap:3,children:[_?(0,e.jsx)(m.x,{as:"span","aria-hidden":!0,children:_}):null,(0,e.jsx)(le,{placeholder:Le,id:f,"aria-invalid":!!oe,"aria-labelledby":`${je} ${ke}`,onChange:h,ref:l})]}),(0,e.jsxs)(k.k,{as:"span",gap:3,children:[w&&N?(0,e.jsx)(se,{as:"button",hasRadius:!0,background:"transparent",type:"button",onClick:d,"aria-disabled":ee,"aria-label":y,title:y,ref:c,children:(0,e.jsx)(A.Z,{})}):null,(0,e.jsx)(ve,{children:(0,e.jsx)(M.Z,{})})]})]}),(0,e.jsx)(p.hQ.Portal,{children:(0,e.jsx)(Ce,{sideOffset:4,children:(0,e.jsxs)(be,{ref:s,children:[a,U?(0,e.jsx)(p.hQ.CreateItem,{onPointerUp:L,onClick:L,asChild:!0,children:(0,e.jsx)(W,{children:(0,e.jsx)(S.Z,{children:Z(w??"")})})}):null,!U&&!F?(0,e.jsx)(p.hQ.NoValueFound,{asChild:!0,children:(0,e.jsx)(W,{$hasHover:!1,children:(0,e.jsx)(S.Z,{children:ae(w??"")})})}):null,F?(0,e.jsx)(k.k,{justifyContent:"center",alignItems:"center",paddingTop:2,paddingBottom:2,children:(0,e.jsx)(pe.a,{small:!0,children:Q})}):null,(0,e.jsx)(m.x,{id:B,width:"100%",height:"1px"})]})})})]}),(0,e.jsx)(D.J,{}),(0,e.jsx)(Y.c,{})]})})},$=a=>(0,e.jsx)(I,{...a,creatable:!0}),se=(0,j.ZP)(m.x)`
24
+ border: none;
25
+
26
+ svg {
27
+ height: ${11/16}rem;
28
+ width: ${11/16}rem;
29
+ }
30
+
31
+ svg path {
32
+ fill: ${({theme:a})=>a.colors.neutral600};
33
+ }
34
+ `,O=(0,j.ZP)(p.hQ.Trigger)`
35
+ position: relative;
36
+ border: 1px solid ${({theme:a,$hasError:y})=>y?a.colors.danger600:a.colors.neutral200};
37
+ padding-right: ${({theme:a})=>a.spaces[3]};
38
+ padding-left: ${({theme:a})=>a.spaces[3]};
39
+ border-radius: ${({theme:a})=>a.borderRadius};
40
+ background: ${({theme:a})=>a.colors.neutral0};
41
+ overflow: hidden;
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: space-between;
45
+ gap: ${({theme:a})=>a.spaces[4]};
46
+
47
+ &[data-disabled] {
48
+ color: ${({theme:a})=>a.colors.neutral600};
49
+ background: ${({theme:a})=>a.colors.neutral150};
50
+ cursor: not-allowed;
51
+ }
52
+
53
+ /* Required to ensure the below inputFocusStyles are adhered too */
54
+ &:focus-visible {
55
+ outline: none;
56
+ }
57
+
58
+ ${({theme:a,$hasError:y})=>(0,Ee.k3)()({theme:a,hasError:y})};
59
+ `,le=(0,j.ZP)(p.hQ.TextInput)`
60
+ width: 100%;
61
+ font-size: ${14/16}rem;
62
+ color: ${({theme:a})=>a.colors.neutral800};
63
+ min-height: ${40/16}rem;
64
+ border: none;
65
+ background-color: transparent;
66
+
67
+ &:focus-visible {
68
+ outline: none;
69
+ }
70
+
71
+ &[aria-disabled='true'] {
72
+ cursor: inherit;
73
+ }
74
+ `,ve=(0,j.ZP)(p.hQ.Icon)`
75
+ & > svg {
76
+ width: ${6/16}rem;
77
+
78
+ & > path {
79
+ fill: ${({theme:a})=>a.colors.neutral600};
80
+ }
81
+ }
82
+
83
+ &[aria-disabled='true'] {
84
+ cursor: inherit;
85
+ }
86
+ `,Ce=(0,j.ZP)(p.hQ.Content)`
87
+ background: ${({theme:a})=>a.colors.neutral0};
88
+ box-shadow: ${({theme:a})=>a.shadows.filterShadow};
89
+ border: 1px solid ${({theme:a})=>a.colors.neutral150};
90
+ border-radius: ${({theme:a})=>a.borderRadius};
91
+ width: var(--radix-combobox-trigger-width);
92
+ /* This is from the design-system figma file. */
93
+ max-height: 15rem;
94
+ z-index: ${({theme:a})=>a.zIndices[1]};
95
+ `,be=(0,j.ZP)(p.hQ.Viewport)`
96
+ padding: ${({theme:a})=>a.spaces[1]};
97
+ `,Me=o.forwardRef(({children:a,value:y,disabled:U,textValue:Z,...K},q)=>(0,e.jsx)(p.hQ.ComboboxItem,{asChild:!0,value:y,disabled:U,textValue:Z,children:(0,e.jsx)(W,{ref:q,...K,children:(0,e.jsx)(p.hQ.ItemText,{asChild:!0,children:(0,e.jsx)(S.Z,{children:a})})})})),W=j.ZP.div`
98
+ width: 100%;
99
+ border: none;
100
+ text-align: left;
101
+ outline-offset: -3px;
102
+ padding: ${({theme:a})=>a.spaces[2]} ${({theme:a})=>a.spaces[4]};
103
+ background-color: ${({theme:a})=>a.colors.neutral0};
104
+ border-radius: ${({theme:a})=>a.borderRadius};
105
+ user-select: none;
106
+
107
+ &[data-selected] {
108
+ background-color: ${({theme:a})=>a.colors.primary100};
109
+
110
+ ${S.Z} {
111
+ color: ${({theme:a})=>a.colors.primary600};
112
+ font-weight: bold;
113
+ }
114
+ }
115
+
116
+ &:hover,
117
+ &[data-highlighted] {
118
+ outline: none;
119
+ background-color: ${({theme:a,$hasHover:y=!0})=>y?a.colors.primary100:a.colors.neutral0};
120
+ }
121
+
122
+ &[data-highlighted] {
123
+ ${S.Z} {
124
+ color: ${({theme:a})=>a.colors.primary600};
125
+ font-weight: bold;
126
+ }
127
+ }
128
+ `},90333:function(G,b,t){t.d(b,{O:function(){return o}});var e=t(21428);const o=e.Wx},29439:function(G,b,t){t.d(b,{Z:function(){return A}});var e=t(74512);const o=M=>(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1rem",height:"1rem",fill:"none",viewBox:"0 0 24 24",...M,children:(0,e.jsx)("path",{fill:"#212134",d:"M24 13.3a.2.2 0 0 1-.2.2H5.74l8.239 8.239a.2.2 0 0 1 0 .282L12.14 23.86a.2.2 0 0 1-.282 0L.14 12.14a.2.2 0 0 1 0-.282L11.86.14a.2.2 0 0 1 .282 0L13.98 1.98a.2.2 0 0 1 0 .282L5.74 10.5H23.8c.11 0 .2.09.2.2v2.6Z"})}),A=o}}]);
@@ -0,0 +1,71 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4121],{32393:function(w,M,t){t.r(M),t.d(M,{default:function(){return ce}});var e=t(32735),o=t(24989),m=t(83983),h=t(53038),u=t(67879),g=t(20108),x=t(7395),y=t(96709),f=t(27649),r=t(82055),E=t(99223),l=t(49372),D=t(41415),A=t(17e3),K=t(72850),_=t(56755),ee=t(73269),te=t(33827),V=t(94547),d=t(19786),F=t(82884),ne=t(3685),ae=t(35658),S=t(87933),p=t(74512),z=t(8471);const B=z.ZP.div`
2
+ background: ${({theme:s})=>s.colors.danger500};
3
+ border: none;
4
+ border-radius: 16px;
5
+ position: relative;
6
+ height: ${24/16}rem;
7
+ width: ${40/16}rem;
8
+
9
+ & span {
10
+ font-size: ${({visibleLabels:s})=>s?"1rem":0};
11
+ }
12
+
13
+ &:before {
14
+ content: '';
15
+ background: ${({theme:s})=>s.colors.neutral0};
16
+ width: 1rem;
17
+ height: 1rem;
18
+ border-radius: 50%;
19
+ position: absolute;
20
+ transition: all 0.5s;
21
+ left: ${({theme:s})=>s.spaces[1]};
22
+ top: ${({theme:s})=>s.spaces[1]};
23
+ }
24
+
25
+ @media (prefers-reduced-motion: reduce) {
26
+ &:before {
27
+ transition: none;
28
+ }
29
+ }
30
+ `,se=z.ZP.button`
31
+ background: transparent;
32
+ padding: 0;
33
+ border: none;
34
+
35
+ &[aria-checked='true'] ${B} {
36
+ background: ${({theme:s})=>s.colors.success500};
37
+ }
38
+
39
+ &[aria-checked='true'] ${B}:before {
40
+ transform: translateX(1rem);
41
+ }
42
+ `,oe=e.forwardRef(({label:s,onChange:v,onLabel:C="On",offLabel:c="Off",selected:a,visibleLabels:b=!1,...L},R)=>(0,p.jsx)(se,{ref:R,role:"switch","aria-checked":a,"aria-label":s,onClick:v,visibleLabels:b,type:"button",...L,children:(0,p.jsxs)(S.k,{children:[(0,p.jsxs)(B,{children:[(0,p.jsx)("span",{children:C}),(0,p.jsx)("span",{children:c})]}),b&&(0,p.jsx)(K.x,{as:"span","aria-hidden":!0,paddingLeft:2,color:a?"success600":"danger600",children:a?C:c})]})}));var H=t(50563),le=t(9695),$=t(19406),N=t(4038),ie=t(68625),re=t(54725),de=()=>{const[s,v]=(0,e.useState)(!1),[C,c]=(0,e.useState)([]),{formatMessage:a}=(0,u.Z)(),{formatAPIError:b}=(0,o.So)(),L=(0,o.lm)();(0,o.go)();const{push:R}=(0,h.k6)(),{pathname:Q}=(0,h.TH)(),{isLoading:me,allowedActions:{canCreate:W,canUpdate:Y,canDelete:G}}=(0,o.ss)(m.Z.settings.webhooks),{get:he,post:ue,put:ge}=(0,o.kY)(),{notifyStatus:X}=(0,x.G)(),Ee="webhooks",{isLoading:fe,data:T,error:Z,refetch:J}=(0,g.useQuery)(Ee,async()=>{const{data:{data:n}}=await he("/admin/webhooks");return n});(0,e.useEffect)(()=>{if(Z){L({type:"warning",message:b(Z)});return}T&&X(a({id:"Settings.webhooks.list.loading.success",defaultMessage:"Webhooks have been loaded"}))},[T,Z,L,a,X,b]);const q=(0,g.useMutation)(async()=>{await ue("/admin/webhooks/batch-delete",{ids:C})},{onError(n){L({type:"warning",message:b(n)}),v(!1)},onSuccess(){c([]),v(!1),J()}}),ve=(0,g.useMutation)(async({isEnabled:n,id:i})=>{const{id:j,...U}=T.find(Ce=>Ce.id===i)??{},pe={...U,isEnabled:n};await ge(`/admin/webhooks/${i}`,pe)},{onError(n){L({type:"warning",message:b(n)})},onSuccess(){J()}}),be=()=>q.mutate(),Me=n=>c(n?T.map(i=>i.id):[]),xe=(n,i)=>c(n?j=>[...j,i]:j=>j.filter(U=>U!==i)),k=n=>R(`${Q}/${n}`),I=me||fe,O=T?.length??0,P=C.length;return e.createElement(y.A,null,e.createElement(o.SL,{name:"Webhooks"}),e.createElement(f.o,{"aria-busy":I},e.createElement(r.T,{title:a({id:"Settings.webhooks.title",defaultMessage:"Webhooks"}),subtitle:a({id:"Settings.webhooks.list.description",defaultMessage:"Get POST changes notifications"}),primaryAction:W&&!I&&e.createElement(o.Qj,{startIcon:e.createElement($.Z,null),variant:"default",to:`${Q}/create`,size:"S"},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}),P>0&&G&&e.createElement(E.Z,{startActions:e.createElement(e.Fragment,null,e.createElement(l.Z,{variant:"epsilon",textColor:"neutral600"},a({id:"Settings.webhooks.to.delete",defaultMessage:"{webhooksToDeleteLength, plural, one {# webhook} other {# webhooks}} selected"},{webhooksToDeleteLength:P})),e.createElement(D.z,{onClick:()=>v(!0),startIcon:e.createElement(N.Z,null),size:"L",variant:"danger-light"},a({id:"global.delete",defaultMessage:"Delete"})))}),e.createElement(A.D,null,I?e.createElement(K.x,{background:"neutral0",padding:6,shadow:"filterShadow",hasRadius:!0},e.createElement(o.dO,null)):O>0?e.createElement(_.i,{colCount:5,rowCount:O+1,footer:e.createElement(ee.c,{onClick:()=>W?k("create"):{},icon:e.createElement($.Z,null)},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))},e.createElement(te.h,null,e.createElement(V.Tr,null,e.createElement(d.Th,null,e.createElement(F.C,{"aria-label":a({id:"global.select-all-entries",defaultMessage:"Select all entries"}),indeterminate:P>0&&P<O,value:P===O,onValueChange:Me})),e.createElement(d.Th,{width:"20%"},e.createElement(l.Z,{variant:"sigma",textColor:"neutral600"},a({id:"global.name",defaultMessage:"Name"}))),e.createElement(d.Th,{width:"60%"},e.createElement(l.Z,{variant:"sigma",textColor:"neutral600"},a({id:"Settings.webhooks.form.url",defaultMessage:"URL"}))),e.createElement(d.Th,{width:"20%"},e.createElement(l.Z,{variant:"sigma",textColor:"neutral600"},a({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"}))),e.createElement(d.Th,null,e.createElement(ne.T,null,a({id:"Settings.webhooks.list.th.actions",defaultMessage:"Actions"}))))),e.createElement(ae.p,null,T.map(n=>e.createElement(V.Tr,{key:n.id,...(0,o.X7)({fn:()=>k(n.id),condition:Y})},e.createElement(d.Td,{...o.UW},e.createElement(F.C,{"aria-label":`${a({id:"global.select",defaultMessage:"Select"})} ${n.name}`,value:C?.includes(n.id),onValueChange:i=>xe(i,n.id),name:"select"})),e.createElement(d.Td,null,e.createElement(l.Z,{fontWeight:"semiBold",textColor:"neutral800"},n.name)),e.createElement(d.Td,null,e.createElement(l.Z,{textColor:"neutral800"},n.url)),e.createElement(d.Td,null,e.createElement(S.k,null,e.createElement(oe,{onLabel:a({id:"global.enabled",defaultMessage:"Enabled"}),offLabel:a({id:"global.disabled",defaultMessage:"Disabled"}),label:`${n.name} ${a({id:"Settings.webhooks.list.th.status",defaultMessage:"Status"})}`,selected:n.isEnabled,onChange:i=>{i.stopPropagation(),ve.mutate({isEnabled:!n.isEnabled,id:n.id})},visibleLabels:!0}))),e.createElement(d.Td,null,e.createElement(S.k,{gap:1},Y&&e.createElement(H.h,{label:a({id:"Settings.webhooks.events.update",defaultMessage:"Update"}),icon:e.createElement(ie.Z,null),noBorder:!0}),G&&e.createElement(H.h,{onClick:i=>{i.stopPropagation(),c([n.id]),v(!0)},label:a({id:"Settings.webhooks.events.delete",defaultMessage:"Delete webhook"}),icon:e.createElement(N.Z,null),noBorder:!0}))))))):e.createElement(le.x,{icon:e.createElement(re.Z,{width:"160px"}),content:a({id:"Settings.webhooks.list.empty.description",defaultMessage:"No webhooks found"}),action:e.createElement(D.z,{variant:"secondary",startIcon:e.createElement($.Z,null),onClick:()=>W?k("create"):{}},a({id:"Settings.webhooks.list.button.add",defaultMessage:"Create new webhook"}))}))),e.createElement(o.QH,{isOpen:s,onToggleDialog:()=>v(n=>!n),onConfirm:be,isConfirmButtonLoading:q.isLoading}))},ce=()=>e.createElement(o.O4,{permissions:m.Z.settings.webhooks.main},e.createElement(de,null))},99223:function(w,M,t){t.d(M,{Z:function(){return f}});var e=t(74512),o=t(32735),m=t(60216),h=t(8471),u=t(87933),g=t(72850);const x=(0,h.ZP)(u.k)`
43
+ & > * + * {
44
+ margin-left: ${({theme:r})=>r.spaces[2]};
45
+ }
46
+
47
+ margin-left: ${({pullRight:r})=>r?"auto":void 0};
48
+ `,y=(0,h.ZP)(x)`
49
+ flex-shrink: 0;
50
+ `,f=({startActions:r,endActions:E})=>r||E?(0,e.jsx)(g.x,{paddingLeft:10,paddingRight:10,children:(0,e.jsx)(g.x,{paddingBottom:4,children:(0,e.jsxs)(u.k,{justifyContent:"space-between",alignItems:"flex-start",children:[r&&(0,e.jsx)(x,{wrap:"wrap",children:r}),E&&(0,e.jsx)(y,{pullRight:!0,children:E})]})})}):null;f.defaultProps={endActions:void 0,startActions:void 0},f.propTypes={endActions:m.node,startActions:m.node}},73269:function(w,M,t){t.d(M,{c:function(){return E}});var e=t(74512),o=t(32735),m=t(60216),h=t(8471),u=t(72850),g=t(9026),x=t(87933),y=t(49372);const f=(0,h.ZP)(u.x)`
51
+ height: ${24/16}rem;
52
+ width: ${24/16}rem;
53
+ border-radius: 50%;
54
+ display: flex;
55
+ justify-content: center;
56
+ align-items: center;
57
+
58
+ svg {
59
+ height: ${10/16}rem;
60
+ width: ${10/16}rem;
61
+ }
62
+
63
+ svg path {
64
+ fill: ${({theme:l})=>l.colors.primary600};
65
+ }
66
+ `,r=(0,h.ZP)(u.x)`
67
+ border-radius: 0 0 ${({theme:l})=>l.borderRadius} ${({theme:l})=>l.borderRadius};
68
+ display: block;
69
+ width: 100%;
70
+ border: none;
71
+ `,E=({children:l,icon:D,...A})=>(0,e.jsxs)("div",{children:[(0,e.jsx)(g.i,{}),(0,e.jsx)(r,{as:"button",background:"primary100",padding:5,...A,children:(0,e.jsxs)(x.k,{children:[(0,e.jsx)(f,{"aria-hidden":!0,background:"primary200",children:D}),(0,e.jsx)(u.x,{paddingLeft:3,children:(0,e.jsx)(y.Z,{variant:"pi",fontWeight:"bold",textColor:"primary600",children:l})})]})})]});E.propTypes={children:m.string.isRequired,icon:m.node.isRequired}}}]);
package/ee/LICENSE CHANGED
@@ -1,21 +1 @@
1
- This Strapi Enterprise Edition (EE) supplemental license (this “EE Supplemental License”) governs the use of this software and documentation (collectively, the “EE Software”) by you and any entity you represent (collectively, “You”). If You have separately entered into the Strapi, Inc. Enterprise Agreement (the “Enterprise Agreement”), then this EE Supplemental License hereby incorporates by reference the Enterprise Agreement and modifies the Enterprise Agreement solely to the extent set forth herein. If You have separately entered into the Strapi, Inc. Subscription Agreement (the “Subscription Agreement”), then this EE Supplemental License hereby incorporates by reference the Agreement and modifies the Subscription Agreement solely to the extent set forth herein. If You have not entered into either the Enterprise Agreement or the Subscription Agreement, then You may use the EE Software solely as set forth in Section 2 below.
2
-
3
- In the event of a direct conflict between the terms of this EE Supplemental License and the terms of the Enterprise Agreement or the Subscription Agreement, as applicable, the terms of this EE Supplemental License will control. Except to the extent modified by this EE Supplemental License, the Enterprise Agreement or the Subscription Agreement, as applicable, remain in full force and effect in accordance with its terms.
4
-
5
- By using the EE Software, You hereby agree to the below terms and conditions.
6
-
7
- 1. Notwithstanding any terms to the contrary in the Enterprise Agreement or Subscription Agreement, You may copy, modify and publish patches to the EE Software in a production environment (such copies, “Production Copies,” such modifications, “Production Modifications” and such patches, “Production Patches”) if and only if (a) You have agreed to, and are in full compliance with, the Enterprise Agreement or Subscription Agreement, as applicable, and (b) You have a valid license to the EE Software for the correct number of projects. You agree that Strapi and/or its licensors (as applicable) will own all right, title and interest in and to all such Production Copies, Production Modifications and Production Patches. You may display and/or distribute such Production Copies, Production Modifications and Production Patches if and only if (i) You have a valid license to the EE Software for the correct number of projects and (ii) You are in compliance with the Enterprise Agreement or Subscription Agreement, as applicable. You hereby assign to Strapi all right, title and interest in and to all Production Copies, Production Modifications and Production Patches, including all intellectual property rights embodied in or related to the foregoing.
8
-
9
- 2. Notwithstanding the foregoing, You may copy and modify the EE Software solely for development and testing purposes (such copies, “Development Copies” and such modifications, “Development Modifications”) with or without a license to the EE Software if your use is in compliance with this Section 2. You agree that Strapi and/or its licensors (as applicable) will own all right, title and interest in and to all Development Copies and Development Modifications and You hereby assign to Strapi all right, title and interest in and to all Development Copies and Development Modifications, including all intellectual property rights embodied in or related to the foregoing. If You do not have a license to the EE Software, then You further agree as follows:
10
-
11
- Other than as expressly set forth in this Section 2, You may not (a) copy or modify the EE Software, (b) create derivative works of the EE Software, (c) remove or modify any notice of any patent, copyright, trademark, or other proprietary rights that appear on or in the EE Software, (d) reverse engineer, decompile, translate, disassemble, or discover the source code of all or any portion of the EE Software, (e) publicly display all or any part of the EE Software, (f) distribute, disclose, market, lease, publish, merge, resell, assign, loan, sublicense, rent, or transfer the EE Software to any third party, (g) use the EE Software for any dial-up, remote access, interactive, or other on-line or hosted service, or to provide a service bureau, time share, or other services to third parties, (h) merge the EE Software into another product, (i) disclose the results of any EE Software performance benchmarks or test results to any third party without Strapi’s prior written consent, (j) use any trademarks, logos, service marks, trade names of Strapi, or any portion thereof, without Strapi’s prior written consent, (k) use the EE Software, or any portion thereof, in a manner that does not comply with applicable law, regulations, or governmental orders, or (l) use or store the EE Software on equipment not owned or controlled by Customer.
12
-
13
- THE EE SOFTWARE IS PROVIDED ON AN “AS IS” BASIS WITHOUT ANY REPRESENTATIONS, WARRANTIES, COVENANTS, OR CONDITIONS OF ANY KIND (EXPRESS OR IMPLIED, STATUTORY OR OTHERWISE), INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, TITLE, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. FURTHER, STRAPI DOES NOT REPRESENT OR WARRANT THAT (A) THE ACCESS TO OR USE OF THE EE SOFTWARE WILL BE SECURE, TIMELY, UNINTERRUPTED, ERROR-FREE, OR OPERATE IN COMBINATION WITH ANY OTHER HARDWARE, SOFTWARE, SYSTEM, OR DATA, (B) THE EE SOFTWARE WILL MEET YOUR REQUIREMENTS OR EXPECTATIONS, OR OTHERWISE PRODUCE ANY PARTICULAR RESULTS, (C) ERRORS OR DEFECTS WILL BE CORRECTED, PATCHES OR WORKAROUNDS WILL BE PROVIDED, OR STRAPI WILL DETECT ANY BUG IN THE EE SOFTWARE, (D) THE SOFTWARE IS FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS, OR (E) THIRD-PARTY DISRUPTIONS OR SECURITY BREACHES OF THE EE SOFTWARE WILL BE PREVENTED.
14
-
15
- STRAPI WILL NOT BE LIABLE FOR ANY LOSS OF PROFITS OR ANY INDIRECT, SPECIAL, INCIDENTAL, RELIANCE, OR CONSEQUENTIAL DAMAGES OF ANY KIND, REGARDLESS OF THE FORM OF ACTION, WHETHER IN CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY, OR OTHERWISE, EVEN IF INFORMED OF THE POSSIBILITY OF SUCH DAMAGES IN ADVANCE.
16
-
17
- STRAPI’S ENTIRE LIABILITY TO YOU FOR USE OF THE EE SOFTWARE WILL NOT EXCEED $100.
18
-
19
- 3. You are not granted any other rights beyond what is expressly stated herein and in the Enterprise Agreement or Subscription Agreement, as applicable.
20
-
21
- 4. This EE Supplemental License does not apply to Strapi software that is distributed as part of the Strapi Community Edition (CE) (the “CE Software”).
1
+ If you or the company you represent has entered into a written agreement referencing the Enterprise Edition of the Strapi source code available at https://github.com/strapi/strapi, then such agreement applies to your use of the Enterprise Edition of the Strapi Software. If you or the company you represent is using the Enterprise Edition of the Strapi Software in connection with a subscription to our cloud offering, then the agreement you have agreed to with respect to our cloud offering and the licenses included in such agreement apply to your use of the Enterprise Edition of the Strapi Software. Otherwise, the Strapi Enterprise Software License Agreement (found here https://strapi.io/enterprise-terms) applies to your use of the Enterprise Edition of the Strapi Software. BY ACCESSING OR USING THE ENTERPRISE EDITION OF THE STRAPI SOFTWARE, YOU ARE AGREEING TO BE BOUND BY THE RELEVANT REFERENCED AGREEMENT. IF YOU ARE NOT AUTHORIZED TO ACCEPT THESE TERMS ON BEHALF OF THE COMPANY YOU REPRESENT OR IF YOU DO NOT AGREE TO ALL OF THE RELEVANT TERMS AND CONDITIONS REFERENCED AND YOU HAVE NOT OTHERWISE EXECUTED A WRITTEN AGREEMENT WITH STRAPI, YOU ARE NOT AUTHORIZED TO ACCESS OR USE OR ALLOW ANY USER TO ACCESS OR USE ANY PART OF THE ENTERPRISE EDITION OF THE STRAPI SOFTWARE. YOUR ACCESS RIGHTS ARE CONDITIONAL ON YOUR CONSENT TO THE RELEVANT REFERENCED TERMS TO THE EXCLUSION OF ALL OTHER TERMS; IF THE RELEVANT REFERENCED TERMS ARE CONSIDERED AN OFFER BY YOU, ACCEPTANCE IS EXPRESSLY LIMITED TO THE RELEVANT REFERENCED TERMS.
@@ -38,8 +38,7 @@ export function InformationBoxEE() {
38
38
  const { formatAPIError } = useAPIErrorHandler();
39
39
  const toggleNotification = useNotification();
40
40
 
41
- const { workflows: { data: workflows, isLoading: workflowIsLoading } = {} } =
42
- useReviewWorkflows();
41
+ const { workflows, isLoading: workflowIsLoading } = useReviewWorkflows();
43
42
  // TODO: this works only as long as we support one workflow
44
43
  const workflow = workflows?.[0] ?? null;
45
44
 
@@ -13,7 +13,7 @@ const DividerFull = styled(Divider)`
13
13
  `;
14
14
 
15
15
  const Login = (loginProps) => {
16
- const ssoEnabled = strapi.features.isEnabled(strapi.features.SSO);
16
+ const ssoEnabled = window.strapi.features.isEnabled(window.strapi.features.SSO);
17
17
  const { isLoading, data: providers } = useAuthProviders({ ssoEnabled });
18
18
  const { formatMessage } = useIntl();
19
19
 
@@ -35,7 +35,7 @@ const SSOProvidersWrapper = styled(Flex)`
35
35
  const SSOProviderButton = ({ provider }) => {
36
36
  return (
37
37
  <Tooltip label={provider.displayName}>
38
- <SSOButton href={`${strapi.backendURL}/admin/connect/${provider.uid}`}>
38
+ <SSOButton href={`${window.strapi.backendURL}/admin/connect/${provider.uid}`}>
39
39
  {provider.icon ? (
40
40
  <img src={provider.icon} aria-hidden alt="" height="32px" />
41
41
  ) : (
@@ -17,7 +17,7 @@ const DividerFull = styled(Divider)`
17
17
  `;
18
18
 
19
19
  const Providers = () => {
20
- const ssoEnabled = strapi.features.isEnabled(strapi.features.SSO);
20
+ const ssoEnabled = window.strapi.features.isEnabled(window.strapi.features.SSO);
21
21
 
22
22
  const { push } = useHistory();
23
23
  const { formatMessage } = useIntl();
@@ -2,24 +2,13 @@ import { useQuery } from 'react-query';
2
2
  import { useNotification, useFetchClient } from '@strapi/helper-plugin';
3
3
  import { useLocation } from 'react-router-dom';
4
4
 
5
+ import { useAdminUsers } from '../../../../../../../../admin/src/hooks/useAdminUsers';
6
+
5
7
  const useAuditLogsData = ({ canReadAuditLogs, canReadUsers }) => {
6
8
  const { get } = useFetchClient();
7
9
  const { search } = useLocation();
8
10
  const toggleNotification = useNotification();
9
11
 
10
- const fetchAuditLogsPage = async ({ queryKey }) => {
11
- const search = queryKey[1];
12
- const { data } = await get(`/admin/audit-logs${search}`);
13
-
14
- return data;
15
- };
16
-
17
- const fetchAllUsers = async () => {
18
- const { data } = await get(`/admin/users`);
19
-
20
- return data;
21
- };
22
-
23
12
  const queryOptions = {
24
13
  keepPreviousData: true,
25
14
  retry: false,
@@ -27,24 +16,43 @@ const useAuditLogsData = ({ canReadAuditLogs, canReadUsers }) => {
27
16
  onError: (error) => toggleNotification({ type: 'warning', message: error.message }),
28
17
  };
29
18
 
19
+ const {
20
+ users,
21
+ isError: isUsersError,
22
+ isLoading: isLoadingUsers,
23
+ } = useAdminUsers(
24
+ {},
25
+ {
26
+ ...queryOptions,
27
+ enabled: canReadUsers,
28
+ staleTime: 2 * (1000 * 60), // 2 minutes
29
+ }
30
+ );
31
+
30
32
  const {
31
33
  data: auditLogs,
32
- isLoading,
34
+ isLoading: isLoadingAuditLogs,
33
35
  isError: isAuditLogsError,
34
- } = useQuery(['auditLogs', search], fetchAuditLogsPage, {
35
- ...queryOptions,
36
- enabled: canReadAuditLogs,
37
- });
38
-
39
- const { data: users, isError: isUsersError } = useQuery(['auditLogsUsers'], fetchAllUsers, {
40
- ...queryOptions,
41
- enabled: canReadUsers,
42
- staleTime: 2 * (1000 * 60), // 2 minutes
43
- });
44
-
45
- const hasError = isAuditLogsError || isUsersError;
46
-
47
- return { auditLogs, users: users?.data, isLoading, hasError };
36
+ } = useQuery(
37
+ ['auditLogs', search],
38
+ async ({ queryKey }) => {
39
+ const search = queryKey[1];
40
+ const { data } = await get(`/admin/audit-logs${search}`);
41
+
42
+ return data;
43
+ },
44
+ {
45
+ ...queryOptions,
46
+ enabled: canReadAuditLogs,
47
+ }
48
+ );
49
+
50
+ return {
51
+ auditLogs,
52
+ users,
53
+ isLoading: isLoadingUsers || isLoadingAuditLogs,
54
+ hasError: isAuditLogsError || isUsersError,
55
+ };
48
56
  };
49
57
 
50
58
  export default useAuditLogsData;
@@ -74,7 +74,7 @@ const getDisplayedFilters = ({ formatMessage, users, canReadUsers }) => {
74
74
  return user.email;
75
75
  };
76
76
 
77
- const userOptions = users.results.map((user) => {
77
+ const userOptions = users.map((user) => {
78
78
  return {
79
79
  label: getDisplayNameFromUser(user),
80
80
  // Combobox expects a string value
@@ -44,7 +44,7 @@ export function ReviewWorkflowsPage() {
44
44
  const { put } = useFetchClient();
45
45
  const { formatAPIError } = useAPIErrorHandler();
46
46
  const toggleNotification = useNotification();
47
- const { workflows: workflowsData, refetchWorkflow } = useReviewWorkflows();
47
+ const { workflows, status: workflowStatus, refetch: refetchWorkflow } = useReviewWorkflows();
48
48
  const {
49
49
  status,
50
50
  clientState: {
@@ -124,8 +124,8 @@ export function ReviewWorkflowsPage() {
124
124
  useInjectReducer(REDUX_NAMESPACE, reducer);
125
125
 
126
126
  useEffect(() => {
127
- dispatch(setWorkflows({ status: workflowsData.status, data: workflowsData.data }));
128
- }, [workflowsData.status, workflowsData.data, dispatch]);
127
+ dispatch(setWorkflows({ status: workflowStatus, data: workflows }));
128
+ }, [workflowStatus, workflows, dispatch]);
129
129
 
130
130
  useEffect(() => {
131
131
  trackUsage('didViewWorkflow');
@@ -1,35 +1,46 @@
1
- import { useQuery, useQueryClient } from 'react-query';
1
+ import { useQuery } from 'react-query';
2
2
  import { useFetchClient } from '@strapi/helper-plugin';
3
+ import { stringify } from 'qs';
3
4
 
4
- const QUERY_BASE_KEY = 'review-workflows';
5
- const API_BASE_URL = '/admin/review-workflows';
5
+ export function useReviewWorkflows(params = {}) {
6
+ const { id = '', ...queryParams } = params;
7
+ const defaultQueryParams = {
8
+ populate: 'stages',
9
+ };
6
10
 
7
- export function useReviewWorkflows(workflowId) {
8
11
  const { get } = useFetchClient();
9
- const client = useQueryClient();
10
- const workflowQueryKey = [QUERY_BASE_KEY, workflowId ?? 'default'];
12
+ const queryString = stringify({ ...defaultQueryParams, ...queryParams }, { encode: false });
11
13
 
12
- async function fetchWorkflows({ params = { populate: 'stages' } }) {
13
- try {
14
- const {
15
- data: { data },
16
- } = await get(`${API_BASE_URL}/workflows/${workflowId ?? ''}`, { params });
14
+ const { data, isLoading, status, refetch } = useQuery(
15
+ ['review-workflows', 'workflows', id],
16
+ async () => {
17
+ try {
18
+ const {
19
+ data: { data },
20
+ } = await get(
21
+ `/admin/review-workflows/workflows/${id}${queryString ? `?${queryString}` : ''}`
22
+ );
17
23
 
18
- return data;
19
- } catch (err) {
20
- // silence
21
- return null;
24
+ return data;
25
+ } catch (err) {
26
+ // silence
27
+ return null;
28
+ }
22
29
  }
23
- }
30
+ );
24
31
 
25
- async function refetchWorkflow() {
26
- await client.refetchQueries(workflowQueryKey);
27
- }
32
+ let workflows = [];
28
33
 
29
- const workflows = useQuery(workflowQueryKey, fetchWorkflows);
34
+ if (id && data) {
35
+ workflows = [data];
36
+ } else if (Array.isArray(data)) {
37
+ workflows = data;
38
+ }
30
39
 
31
40
  return {
32
41
  workflows,
33
- refetchWorkflow,
42
+ isLoading,
43
+ status,
44
+ refetch,
34
45
  };
35
46
  }
@@ -1,6 +1,6 @@
1
1
  import baseModel from '../../../../../../../../../admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/utils/formDataModel';
2
2
 
3
- const ssoInputsModel = strapi.features.isEnabled(strapi.features.SSO)
3
+ const ssoInputsModel = window.strapi.features.isEnabled(window.strapi.features.SSO)
4
4
  ? {
5
5
  useSSORegistration: true,
6
6
  }
@@ -1,4 +1,4 @@
1
- const form = strapi.features.isEnabled(strapi.features.SSO)
1
+ const form = window.strapi.features.isEnabled(window.strapi.features.SSO)
2
2
  ? [
3
3
  [
4
4
  {
@@ -124,7 +124,11 @@ const createAuditLogsService = (strapi) => {
124
124
  const processedEvent = processEvent(name, ...args);
125
125
 
126
126
  if (processedEvent) {
127
- await state.provider.saveEvent(processedEvent);
127
+ // This stores the event when after the transaction is committed,
128
+ // so it's not stored if the transaction is rolled back
129
+ await strapi.db.transaction(({ onCommit }) => {
130
+ onCommit(() => state.provider.saveEvent(processedEvent));
131
+ });
128
132
  }
129
133
  }
130
134
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/admin",
3
- "version": "4.11.0-alpha.0",
3
+ "version": "4.11.0-beta.1",
4
4
  "description": "Strapi Admin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,18 +48,18 @@
48
48
  "@casl/ability": "^5.4.3",
49
49
  "@fingerprintjs/fingerprintjs": "3.4.1",
50
50
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
51
- "@strapi/babel-plugin-switch-ee-ce": "4.11.0-alpha.0",
52
- "@strapi/data-transfer": "4.11.0-alpha.0",
53
- "@strapi/design-system": "1.7.4",
54
- "@strapi/helper-plugin": "4.11.0-alpha.0",
55
- "@strapi/icons": "1.7.4",
56
- "@strapi/permissions": "4.11.0-alpha.0",
57
- "@strapi/provider-audit-logs-local": "4.11.0-alpha.0",
58
- "@strapi/typescript-utils": "4.11.0-alpha.0",
59
- "@strapi/utils": "4.11.0-alpha.0",
60
- "axios": "1.3.4",
51
+ "@strapi/babel-plugin-switch-ee-ce": "4.11.0-beta.1",
52
+ "@strapi/data-transfer": "4.11.0-beta.1",
53
+ "@strapi/design-system": "0.0.0-3cf3ff39",
54
+ "@strapi/helper-plugin": "4.11.0-beta.1",
55
+ "@strapi/icons": "0.0.0-3cf3ff39",
56
+ "@strapi/permissions": "4.11.0-beta.1",
57
+ "@strapi/provider-audit-logs-local": "4.11.0-beta.1",
58
+ "@strapi/typescript-utils": "4.11.0-beta.1",
59
+ "@strapi/utils": "4.11.0-beta.1",
60
+ "axios": "1.4.0",
61
61
  "babel-loader": "^9.1.2",
62
- "babel-plugin-styled-components": "2.0.2",
62
+ "babel-plugin-styled-components": "2.1.1",
63
63
  "bcryptjs": "2.4.3",
64
64
  "browserslist": "^4.17.3",
65
65
  "browserslist-to-esbuild": "1.2.0",
@@ -68,14 +68,14 @@
68
68
  "codemirror5": "npm:codemirror@^5.65.11",
69
69
  "cross-env": "^7.0.3",
70
70
  "css-loader": "^6.7.3",
71
- "date-fns": "2.29.3",
71
+ "date-fns": "2.30.0",
72
72
  "dotenv": "8.5.1",
73
73
  "esbuild-loader": "^2.21.0",
74
74
  "execa": "^1.0.0",
75
75
  "fast-deep-equal": "3.1.3",
76
76
  "find-root": "1.1.0",
77
- "fork-ts-checker-webpack-plugin": "7.2.1",
78
- "formik": "^2.2.6",
77
+ "fork-ts-checker-webpack-plugin": "7.3.0",
78
+ "formik": "^2.4.0",
79
79
  "fractional-indexing": "3.2.0",
80
80
  "fs-extra": "10.0.0",
81
81
  "highlight.js": "^10.4.1",
@@ -110,16 +110,14 @@
110
110
  "prop-types": "^15.7.2",
111
111
  "qs": "6.11.1",
112
112
  "react": "^17.0.2",
113
- "react-copy-to-clipboard": "^5.1.0",
114
113
  "react-dnd": "15.1.2",
115
114
  "react-dnd-html5-backend": "15.1.3",
116
115
  "react-dom": "^17.0.2",
117
116
  "react-error-boundary": "3.1.4",
118
- "react-fast-compare": "^3.2.0",
119
117
  "react-helmet": "^6.1.0",
120
118
  "react-intl": "6.4.1",
121
119
  "react-is": "^17.0.2",
122
- "react-query": "3.24.3",
120
+ "react-query": "3.39.3",
123
121
  "react-redux": "8.0.5",
124
122
  "react-refresh": "0.14.0",
125
123
  "react-router-dom": "5.3.4",
@@ -141,14 +139,13 @@
141
139
  "yup": "^0.32.9"
142
140
  },
143
141
  "devDependencies": {
144
- "@testing-library/dom": "8.19.0",
142
+ "@testing-library/dom": "8.20.0",
145
143
  "@testing-library/react": "12.1.4",
146
144
  "@testing-library/react-hooks": "8.0.1",
147
145
  "@testing-library/user-event": "14.4.3",
148
146
  "duplicate-dependencies-webpack-plugin": "^1.0.2",
149
147
  "glob": "8.0.3",
150
148
  "msw": "1.2.1",
151
- "react-test-renderer": "^17.0.2",
152
149
  "speed-measure-webpack-plugin": "1.5.0",
153
150
  "webpack-bundle-analyzer": "^4.8.0"
154
151
  },
@@ -168,5 +165,5 @@
168
165
  }
169
166
  }
170
167
  },
171
- "gitHead": "ca5fb0fcfab1b6784208d2ddf6d51617b8893b35"
168
+ "gitHead": "a5fa3bd7e1c4680dd350580620d383612597d25d"
172
169
  }