@strapi/admin 4.6.2 → 4.7.0-exp.117579f4c13806c2cd518e7d7d2f9d0c8a20107d

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 (97) hide show
  1. package/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +0 -2
  2. package/admin/src/hooks/useRegenerate/index.js +2 -2
  3. package/admin/src/hooks/useSettingsMenu/utils/defaultGlobalLinks.js +7 -0
  4. package/admin/src/pages/HomePage/CloudBox.js +83 -0
  5. package/admin/src/pages/HomePage/ContentBlocks.js +2 -0
  6. package/admin/src/pages/HomePage/assets/strapi-cloud-background.png +0 -0
  7. package/admin/src/pages/HomePage/assets/strapi-cloud-flags.svg +1 -0
  8. package/admin/src/pages/HomePage/assets/strapi-cloud-icon.svg +1 -0
  9. package/admin/src/pages/SettingsPage/{pages/ApiTokens/EditView/components → components/Tokens}/FormHead/index.js +36 -19
  10. package/admin/src/pages/SettingsPage/components/Tokens/FormiTokenContainer/LifeSpanInput.js +95 -0
  11. package/admin/src/pages/SettingsPage/components/Tokens/LifeSpanInput/index.js +97 -0
  12. package/admin/src/pages/SettingsPage/components/Tokens/Regenerate/index.js +73 -0
  13. package/admin/src/pages/SettingsPage/{pages/ApiTokens/ListView/DynamicTable → components/Tokens/Table}/DeleteButton/index.js +19 -6
  14. package/admin/src/pages/SettingsPage/components/Tokens/Table/index.js +145 -0
  15. package/admin/src/pages/SettingsPage/{pages/ApiTokens/EditView/components/ContentBox → components/Tokens/TokenBox}/index.js +19 -16
  16. package/admin/src/pages/SettingsPage/components/Tokens/TokenDescription/index.js +51 -0
  17. package/admin/src/pages/SettingsPage/components/Tokens/TokenName/index.js +46 -0
  18. package/admin/src/pages/SettingsPage/components/Tokens/TokenTypeSelect/index.js +69 -0
  19. package/admin/src/pages/SettingsPage/components/Tokens/constants.js +2 -0
  20. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/index.js +3 -1
  21. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js +53 -150
  22. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Regenerate/index.js +5 -1
  23. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +46 -17
  24. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/index.js +16 -16
  25. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/FormTransferTokenContainer/index.js +101 -0
  26. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/components/LoadingView/index.js +48 -0
  27. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/index.js +219 -0
  28. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/getDateOfExpiration.js +16 -0
  29. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/index.js +4 -0
  30. package/admin/src/pages/SettingsPage/pages/TransferTokens/EditView/utils/schema.js +10 -0
  31. package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/index.js +194 -0
  32. package/admin/src/pages/SettingsPage/pages/TransferTokens/ListView/utils/tableHeaders.js +48 -0
  33. package/admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedCreateView/index.js +14 -0
  34. package/admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedEditView/index.js +14 -0
  35. package/admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedListView/index.js +12 -0
  36. package/admin/src/pages/SettingsPage/utils/defaultRoutes.js +33 -0
  37. package/admin/src/permissions/defaultPermissions.js +8 -0
  38. package/admin/src/translations/en.json +15 -0
  39. package/build/27d16aefee06412db90a.png +0 -0
  40. package/build/4049.16583eee.chunk.js +1 -0
  41. package/build/4649.b7e84a29.chunk.js +30 -0
  42. package/build/7259.3f04094f.chunk.js +1 -0
  43. package/build/{Admin-authenticatedApp.dd16edad.chunk.js → Admin-authenticatedApp.49265c1c.chunk.js} +6 -6
  44. package/build/Admin_homePage.1f10437f.chunk.js +78 -0
  45. package/build/{Admin_settingsPage.3cd54156.chunk.js → Admin_settingsPage.5a329b58.chunk.js} +25 -25
  46. package/build/{admin-app.3a084127.chunk.js → admin-app.df9adf93.chunk.js} +26 -26
  47. package/build/{api-tokens-create-page.a31c7fba.chunk.js → api-tokens-create-page.4328b852.chunk.js} +1 -1
  48. package/build/{api-tokens-edit-page.64fef287.chunk.js → api-tokens-edit-page.bce5050f.chunk.js} +1 -1
  49. package/build/api-tokens-list-page.149903c8.chunk.js +16 -0
  50. package/build/bb3108f7fd1e6179bde1.svg +1 -0
  51. package/build/bb4d0d527bdfb161bc5a.svg +1 -0
  52. package/build/{content-manager.d04b738f.chunk.js → content-manager.6ed87531.chunk.js} +1 -1
  53. package/build/en-json.8e5451b1.chunk.js +1 -0
  54. package/build/index.html +1 -1
  55. package/build/{main.9c01de7f.js → main.8009bfe8.js} +1 -0
  56. package/build/runtime~main.86cd21d5.js +2 -0
  57. package/build/transfer-tokens-create-page.a1f14bb1.chunk.js +1 -0
  58. package/build/transfer-tokens-edit-page.00ee1c74.chunk.js +1 -0
  59. package/build/transfer-tokens-list-page.1e15926d.chunk.js +16 -0
  60. package/package.json +9 -9
  61. package/server/bootstrap.js +2 -0
  62. package/server/config/admin-actions.js +48 -0
  63. package/server/content-types/index.js +2 -0
  64. package/server/content-types/transfer-token-permission.js +36 -0
  65. package/server/content-types/transfer-token.js +66 -0
  66. package/server/controllers/api-token.js +4 -5
  67. package/server/controllers/index.js +1 -0
  68. package/server/controllers/transfer/index.js +13 -0
  69. package/server/controllers/transfer/runner.js +24 -0
  70. package/server/controllers/transfer/token.js +131 -0
  71. package/server/register.js +2 -9
  72. package/server/routes/index.js +2 -0
  73. package/server/routes/transfer.js +95 -0
  74. package/server/services/api-token.js +2 -3
  75. package/server/services/constants.js +6 -0
  76. package/server/services/index.js +1 -0
  77. package/server/services/transfer/index.js +6 -0
  78. package/server/services/transfer/permission.js +22 -0
  79. package/server/services/transfer/token.js +409 -0
  80. package/server/strategies/api-token.js +4 -2
  81. package/server/strategies/data-transfer.js +107 -0
  82. package/server/strategies/index.js +1 -0
  83. package/server/utils/index.d.ts +2 -0
  84. package/server/validation/api-tokens.js +1 -6
  85. package/server/validation/transfer/index.js +5 -0
  86. package/server/validation/transfer/token.js +34 -0
  87. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormBody/index.js +0 -77
  88. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js +0 -110
  89. package/build/1341.5d48c79b.chunk.js +0 -1
  90. package/build/4318.9b1ac9bc.chunk.js +0 -30
  91. package/build/Admin_homePage.4b878f04.chunk.js +0 -72
  92. package/build/api-tokens-list-page.370459ba.chunk.js +0 -16
  93. package/build/en-json.9cada7f3.chunk.js +0 -1
  94. package/build/runtime~main.bb1389c9.js +0 -2
  95. package/admin/src/pages/SettingsPage/{pages/ApiTokens/ListView/DynamicTable → components/Tokens/Table}/DefaultButton/index.js +1 -1
  96. /package/admin/src/pages/SettingsPage/{pages/ApiTokens/ListView/DynamicTable → components/Tokens/Table}/ReadButton/index.js +0 -0
  97. /package/admin/src/pages/SettingsPage/{pages/ApiTokens/ListView/DynamicTable → components/Tokens/Table}/UpdateButton/index.js +0 -0
@@ -0,0 +1,16 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[8056],{81450:function(x,v,n){n.d(v,{Z:function(){return A}});var e=n(32735),s=n(5141),R=n(60216),t=n.n(R),a=n(39161),d=n(13478),C=n(57269),D=n(5636);const k=({tokenName:o,onClickDelete:c,tokenType:E})=>{const{formatMessage:l}=(0,D.useIntl)(),{trackUsage:p}=(0,d.useTracking)(),[u,T]=(0,e.useState)(!1),h=()=>{T(!1),p("willDeleteToken",{tokenType:E}),c()};return e.createElement(a.Box,{paddingLeft:1,onClick:f=>f.stopPropagation()},e.createElement(a.IconButton,{onClick:()=>{T(!0)},label:l({id:"global.delete-target",defaultMessage:"Delete {target}"},{target:`${o}`}),name:"delete",noBorder:!0,icon:e.createElement(C.Trash,null)}),e.createElement(d.ConfirmDialog,{onToggleDialog:()=>T(!1),onConfirm:h,isOpen:u}))};k.propTypes={tokenName:t().string.isRequired,onClickDelete:t().func.isRequired,tokenType:t().string.isRequired};var L=k,H=n(83292);const B={edit:{id:"app.component.table.edit",defaultMessage:"Edit {target}"},read:{id:"app.component.table.read",defaultMessage:"Read {target}"}},w=(0,H.default)(d.Link)`
2
+ svg {
3
+ path {
4
+ fill: ${({theme:o})=>o.colors.neutral500};
5
+ }
6
+ }
7
+
8
+ &:hover,
9
+ &:focus {
10
+ svg {
11
+ path {
12
+ fill: ${({theme:o})=>o.colors.neutral800};
13
+ }
14
+ }
15
+ }
16
+ `,g=({tokenName:o,tokenId:c,buttonType:E,children:l})=>{const{formatMessage:p}=(0,D.useIntl)(),{location:{pathname:u}}=(0,s.useHistory)();return e.createElement(w,{to:`${u}/${c}`,title:p(B[E],{target:o})},l)};g.propTypes={tokenName:t().string.isRequired,tokenId:t().oneOfType([t().string,t().number]).isRequired,buttonType:t().string,children:t().node.isRequired},g.defaultProps={buttonType:"edit"};var U=g;const S=({tokenName:o,tokenId:c})=>e.createElement(U,{tokenName:o,tokenId:c},e.createElement(C.Pencil,null));S.propTypes={tokenName:t().string.isRequired,tokenId:t().oneOfType([t().string,t().number]).isRequired};var Q=S;const P=({tokenName:o,tokenId:c})=>e.createElement(U,{tokenName:o,tokenId:c,buttonType:"read"},e.createElement(C.Eye,null));P.propTypes={tokenName:t().string.isRequired,tokenId:t().oneOfType([t().string,t().number]).isRequired};var V=P;const m=({permissions:o,headers:c,contentType:E,isLoading:l,tokens:p,onConfirmDelete:u,tokenType:T})=>{const{canDelete:h,canUpdate:f,canRead:M}=o,N=h||f||M,[{query:y}]=(0,d.useQueryParams)(),[,b]=y?y.sort.split(":"):"ASC",{push:F,location:{pathname:I}}=(0,s.useHistory)(),{trackUsage:Z}=(0,d.useTracking)(),O=p.sort((i,$)=>{const r=i.name.localeCompare($.name);return b==="DESC"?-r:r});return e.createElement(d.DynamicTable,{headers:c,contentType:E,rows:p,withBulkActions:N,isLoading:l,onConfirmDelete:u},e.createElement(a.Tbody,null,O.map(i=>e.createElement(a.Tr,{key:i.id,...(0,d.onRowClick)({fn(){Z("willEditTokenFromList",{tokenType:T}),F(`${I}/${i.id}`)},condition:f})},e.createElement(a.Td,null,e.createElement(a.Typography,{textColor:"neutral800",fontWeight:"bold"},i.name)),e.createElement(a.Td,{maxWidth:(0,d.pxToRem)(250)},e.createElement(a.Typography,{textColor:"neutral800",ellipsis:!0},i.description)),e.createElement(a.Td,null,e.createElement(a.Typography,{textColor:"neutral800"},e.createElement(d.RelativeTime,{timestamp:new Date(i.createdAt)}))),e.createElement(a.Td,null,i.lastUsedAt&&e.createElement(a.Typography,{textColor:"neutral800"},e.createElement(d.RelativeTime,{timestamp:new Date(i.lastUsedAt)}))),N&&e.createElement(a.Td,null,e.createElement(a.Flex,{justifyContent:"end"},f&&e.createElement(Q,{tokenName:i.name,tokenId:i.id}),!f&&M&&e.createElement(V,{tokenName:i.name,tokenId:i.id}),h&&e.createElement(L,{tokenName:i.name,onClickDelete:()=>u(i.id),tokenType:T})))))))};m.propTypes={tokens:t().array,permissions:t().shape({canRead:t().bool,canDelete:t().bool,canUpdate:t().bool}).isRequired,headers:t().arrayOf(t().shape({cellFormatter:t().func,key:t().string.isRequired,metadatas:t().shape({label:t().string.isRequired,sortable:t().bool}).isRequired,name:t().string.isRequired})),contentType:t().string.isRequired,isLoading:t().bool,onConfirmDelete:t().func,tokenType:t().string.isRequired},m.defaultProps={tokens:[],headers:[],isLoading:!1,onConfirmDelete(){}};var A=m},68774:function(x,v,n){n.d(v,{Z:function(){return e},f:function(){return s}});const e="api-token",s="transfer-token"},37168:function(x,v,n){n.r(v),n.d(v,{default:function(){return P}});var e=n(32735),s=n(13478),R=n(72041),t=n(5636),a=n(84968),d=n(5141),C=n(33348),D=n.n(C),k=n(39161),L=n(57269),B=[{name:"name",key:"name",metadatas:{label:{id:"Settings.apiTokens.ListView.headers.name",defaultMessage:"Name"},sortable:!0}},{name:"description",key:"description",metadatas:{label:{id:"Settings.apiTokens.ListView.headers.description",defaultMessage:"Description"},sortable:!1}},{name:"createdAt",key:"createdAt",metadatas:{label:{id:"Settings.apiTokens.ListView.headers.createdAt",defaultMessage:"Created at"},sortable:!1}},{name:"lastUsedAt",key:"lastUsedAt",metadatas:{label:{id:"Settings.apiTokens.ListView.headers.lastUsedAt",defaultMessage:"Last used"},sortable:!1}}],w=n(81450),g=n(68774),S=()=>{(0,s.useFocusWhenNavigate)();const V=(0,a.useQueryClient)(),{formatMessage:m}=(0,t.useIntl)(),A=(0,s.useNotification)(),{allowedActions:{canCreate:o,canDelete:c,canUpdate:E,canRead:l}}=(0,s.useRBAC)(R.Z.settings["api-tokens"]),{push:p}=(0,d.useHistory)(),{trackUsage:u}=(0,s.useTracking)(),{startSection:T}=(0,s.useGuidedTour)(),h=(0,e.useRef)(T),{get:f,del:M}=(0,s.useFetchClient)();(0,e.useEffect)(()=>{h.current&&h.current("apiTokens")},[]),(0,e.useEffect)(()=>{p({search:D().stringify({sort:"name:ASC"},{encode:!1})})},[p]);const N=B.map(r=>({...r,metadatas:{...r.metadatas,label:m(r.metadatas.label)}})),{data:y,status:b,isFetching:F}=(0,a.useQuery)(["api-tokens"],async()=>{u("willAccessTokenList",{tokenType:g.Z});const{data:{data:r}}=await f("/admin/api-tokens");return u("didAccessTokenList",{number:r.length,tokenType:g.Z}),r},{enabled:l,onError(){A({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),I=l&&(b!=="success"&&b!=="error"||b==="success"&&F),Z=(0,a.useMutation)(async r=>{await M(`/admin/api-tokens/${r}`)},{async onSuccess(){await V.invalidateQueries(["api-tokens"]),u("didDeleteToken")},onError(r){r?.response?.data?.data?A({type:"warning",message:r.response.data.data}):A({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),O=l&&y,i=l&&!y&&!o,$=l&&!y&&o;return e.createElement(k.Main,{"aria-busy":I},e.createElement(s.SettingsPageTitle,{name:"API Tokens"}),e.createElement(k.HeaderLayout,{title:m({id:"Settings.apiTokens.title",defaultMessage:"API Tokens"}),subtitle:m({id:"Settings.apiTokens.description",defaultMessage:"List of generated tokens to consume the API"}),primaryAction:o?e.createElement(s.LinkButton,{"data-testid":"create-api-token-button",startIcon:e.createElement(L.Plus,null),size:"S",onClick:()=>u("willAddTokenFromList",{tokenType:g.Z}),to:"/settings/api-tokens/create"},m({id:"Settings.apiTokens.create",defaultMessage:"Create new API Token"})):void 0}),e.createElement(k.ContentLayout,null,!l&&e.createElement(s.NoPermissions,null),O&&e.createElement(w.Z,{permissions:{canRead:l,canDelete:c,canUpdate:E},headers:N,contentType:"api-tokens",rows:y,isLoading:I,onConfirmDelete:r=>Z.mutateAsync(r),tokens:y,tokenType:g.Z}),$&&e.createElement(s.NoContent,{content:{id:"Settings.apiTokens.addFirstToken",defaultMessage:"Add your first API Token"},action:e.createElement(k.Button,{variant:"secondary",startIcon:e.createElement(L.Plus,null)},m({id:"Settings.apiTokens.addNewToken",defaultMessage:"Add new API Token"}))}),i&&e.createElement(s.NoContent,{content:{id:"Settings.apiTokens.emptyStateLayout",defaultMessage:"You don\u2019t have any content yet..."}})))},P=()=>e.createElement(s.CheckPagePermissions,{permissions:R.Z.settings["api-tokens"].main},e.createElement(S,null))}}]);
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="15" fill="none"><path fill="#fff" fill-rule="evenodd" d="M4.39453 13.8298C1.93859 13.6455 0 11.468 0 8.80884 0 6.0289 2.11876 3.7753 4.73238 3.7753c.46775 0 .91964.07218 1.34638.20664C7.21234 1.62909 9.66469 0 12.5073 0c2.5102 0 4.7161 1.27036 5.9782 3.18766a4.54297 4.54297 0 0 1 .6132-.04144C21.8056 3.14622 24 5.54066 24 8.49436c0 2.89194-2.1036 5.24784-4.7323 5.34504v.0031l-1.8948.278a38.18054 38.18054 0 0 1-11.08354 0l-1.89483-.278v-.0127Z" clip-rule="evenodd"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="160" fill="none" viewBox="29.41 44 149.09 50.35"><path stroke="#EAEAEF" d="M30.5 44.5c37 27 47.5 38 147.499 32"/><g filter="url(#a)"><path fill="#F29D41" d="m129.467 94.085 8.148-14.142a.598.598 0 0 0-.403-.887 75.099 75.099 0 0 0-3.045-.536c-1.875-.274-2.936-.44-4.837-.505-1.838-.064-2.873.01-4.698.153a64.05 64.05 0 0 0-2.692.293.597.597 0 0 0-.462.851l7.042 14.737c.186.388.732.41.947.036Z"/></g><g filter="url(#b)"><path fill="#F29D41" d="m46.99 75.52 13.813-8.697a.597.597 0 0 0 .058-.971 75.191 75.191 0 0 0-2.442-1.897c-1.53-1.119-2.39-1.761-4.04-2.707-1.595-.915-2.545-1.334-4.226-2.06a64.09 64.09 0 0 0-2.516-.999.597.597 0 0 0-.806.537l-.66 16.319a.535.535 0 0 0 .82.474Z"/></g><g filter="url(#c)"><path fill="#5CB176" d="m29.41 63.51 2.102-16.186a.597.597 0 0 1 .858-.46c.748.371 1.905.954 2.745 1.42 1.657.92 2.602 1.433 4.152 2.534 1.5 1.064 2.278 1.75 3.642 2.972a64.026 64.026 0 0 1 1.962 1.865c.291.286.214.771-.149.957l-14.538 7.443a.535.535 0 0 1-.774-.545Z"/></g><mask id="d" width="17" height="19" x="29" y="46" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#5CB176" d="m29.412 63.51 2.101-16.186a.597.597 0 0 1 .858-.46c.749.371 1.905.954 2.746 1.42 1.657.92 2.601 1.433 4.152 2.534 1.5 1.064 2.278 1.75 3.642 2.972a64.148 64.148 0 0 1 1.962 1.865c.29.286.214.771-.15.957l-14.537 7.443a.535.535 0 0 1-.774-.545Z"/></mask><g stroke="#fff" stroke-linecap="round" stroke-width=".661" mask="url(#d)"><path d="M39.755 51.218c-1.05 1.558-4.606 4.788-10.44 5.247M36.415 47.816c-1.05 1.558-4.606 4.789-10.44 5.247M42.97 53.97c-1.457 1.908-6.341 5.902-14.216 6.619M42.15 58.499c-1.645 1.748-5.29 4.033-13.197 3.939"/></g><g filter="url(#e)"><path fill="#7B79FF" d="m169.813 92.983 5.927-15.208a.598.598 0 0 0-.531-.815 75.213 75.213 0 0 0-3.091-.072c-1.895.01-2.969.007-4.859.228-1.826.214-2.838.442-4.621.859-.815.19-1.893.488-2.617.694a.596.596 0 0 0-.328.91l9.178 13.51a.536.536 0 0 0 .942-.106Z"/></g><g filter="url(#f)"><path fill="#7B79FF" d="m87.001 90.853-4.466-15.699a.597.597 0 0 1 .606-.761c.835.045 2.127.123 3.084.22 1.886.19 2.956.287 4.816.685 1.797.385 2.784.709 4.519 1.291.794.267 1.839.665 2.54.938.38.148.501.624.24.938L87.929 91.048a.535.535 0 0 1-.927-.195Z"/></g><g filter="url(#g)"><path fill="#EE5E52" d="m66.153 85.122 12.355-10.665a.597.597 0 0 0-.087-.97 75.353 75.353 0 0 0-2.698-1.51c-1.68-.877-2.627-1.383-4.4-2.072-1.714-.666-2.716-.938-4.486-1.404a64.083 64.083 0 0 0-2.638-.611.597.597 0 0 0-.716.651l1.788 16.234a.535.535 0 0 0 .882.347Z"/></g><circle cx="70.793" cy="74.511" r=".992" fill="#fff" transform="rotate(8.553 70.793 74.51)"/><circle cx="65.574" cy="78.63" r=".992" fill="#fff" transform="rotate(8.553 65.574 78.63)"/><circle cx="65.408" cy="74.519" r=".992" fill="#fff" transform="rotate(8.553 65.408 74.519)"/><circle cx="67.834" cy="81.943" r=".992" fill="#fff" transform="rotate(8.553 67.834 81.943)"/><circle cx="67.259" cy="69.875" r=".992" fill="#fff" transform="rotate(8.553 67.259 69.875)"/><circle cx="74.691" cy="72.834" r=".992" fill="#fff" transform="rotate(8.553 74.69 72.834)"/><circle cx="71.171" cy="78.968" r=".992" fill="#fff" transform="rotate(8.553 71.171 78.968)"/><g filter="url(#h)"><path fill="#EE5E52" d="m149.911 93.824 6.521-14.963a.598.598 0 0 0-.499-.836 75.255 75.255 0 0 0-3.086-.193c-1.894-.064-2.967-.11-4.863.037-1.833.141-2.854.33-4.651.676-.823.158-1.912.414-2.643.59a.596.596 0 0 0-.364.898l8.64 13.86a.535.535 0 0 0 .945-.07Z"/></g><circle cx="149.5" cy="82.25" r=".992" fill="#fff" transform="rotate(-17.098 149.5 82.25)"/><circle cx="146.579" cy="88.222" r=".992" fill="#fff" transform="rotate(-17.098 146.579 88.222)"/><circle cx="144.65" cy="84.588" r=".992" fill="#fff" transform="rotate(-17.098 144.65 84.588)"/><circle cx="150.049" cy="90.231" r=".992" fill="#fff" transform="rotate(-17.098 150.049 90.231)"/><circle cx="144.306" cy="79.6" r=".992" fill="#fff" transform="rotate(-17.098 144.306 79.6)"/><circle cx="152.287" cy="79.051" r=".992" fill="#fff" transform="rotate(-17.098 152.287 79.05)"/><circle cx="151.77" cy="86.103" r=".992" fill="#fff" transform="rotate(-17.098 151.77 86.103)"/><g filter="url(#i)"><path fill="#5CB176" d="m109.171 93.4 8.86-13.707a.598.598 0 0 0-.357-.906c-.811-.2-2.07-.503-3.013-.69-1.859-.37-2.911-.59-4.806-.753-1.831-.157-2.869-.136-4.699-.086-.837.023-1.953.098-2.703.154a.597.597 0 0 0-.505.827l6.279 15.077c.166.398.71.447.944.084Z"/></g><mask id="j" width="18" height="17" x="101" y="77" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#5CB176" d="m109.17 93.4 8.86-13.707a.598.598 0 0 0-.357-.905c-.811-.201-2.07-.504-3.013-.692-1.859-.37-2.911-.589-4.806-.751-1.831-.158-2.869-.137-4.699-.087-.837.023-1.953.099-2.703.154a.597.597 0 0 0-.505.827l6.279 15.077c.166.398.71.447.944.085Z"/></mask><g stroke="#fff" stroke-linecap="round" stroke-width=".661" mask="url(#j)"><path d="M109.225 77.335c-.207 1.867.418 6.632 4.573 10.753M113.972 76.9c-.207 1.867.418 6.631 4.573 10.753M104.992 77.357c-.121 2.397 1.023 8.602 6.568 14.24M102.69 81.343c.125 2.397 1.429 6.497 7.522 11.537"/></g><defs><filter id="a" width="21.565" height="21.649" x="118.775" y="76.009" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".661"/><feGaussianBlur stdDeviation="1.322"/><feColorMatrix values="0 0 0 0 0.129412 0 0 0 0 0.129412 0 0 0 0 0.203922 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_12_39"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_12_39" result="shape"/></filter><filter id="b" width="20.201" height="22.741" x="43.526" y="56.167" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".661"/><feGaussianBlur stdDeviation="1.322"/><feColorMatrix values="0 0 0 0 0.129412 0 0 0 0 0.129412 0 0 0 0 0.203922 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_12_39"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_12_39" result="shape"/></filter><filter id="c" width="20.932" height="22.602" x="26.761" y="44.818" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".661"/><feGaussianBlur stdDeviation="1.322"/><feColorMatrix values="0 0 0 0 0.129412 0 0 0 0 0.129412 0 0 0 0 0.203922 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_12_39"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_12_39" result="shape"/></filter><filter id="e" width="21.482" height="21.724" x="156.944" y="74.904" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".661"/><feGaussianBlur stdDeviation="1.322"/><feColorMatrix values="0 0 0 0 0.129412 0 0 0 0 0.129412 0 0 0 0 0.203922 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_12_39"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_12_39" result="shape"/></filter><filter id="f" width="21.256" height="22.139" x="79.868" y="72.409" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".661"/><feGaussianBlur stdDeviation="1.322"/><feColorMatrix values="0 0 0 0 0.129412 0 0 0 0 0.129412 0 0 0 0 0.203922 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_12_39"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_12_39" result="shape"/></filter><filter id="g" width="20.526" height="22.664" x="60.835" y="65.893" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".661"/><feGaussianBlur stdDeviation="1.322"/><feColorMatrix values="0 0 0 0 0.129412 0 0 0 0 0.129412 0 0 0 0 0.203922 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_12_39"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_12_39" result="shape"/></filter><filter id="h" width="21.537" height="21.662" x="137.59" y="75.788" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".661"/><feGaussianBlur stdDeviation="1.322"/><feColorMatrix values="0 0 0 0 0.129412 0 0 0 0 0.129412 0 0 0 0 0.203922 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_12_39"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_12_39" result="shape"/></filter><filter id="i" width="21.515" height="21.712" x="99.257" y="75.238" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy=".661"/><feGaussianBlur stdDeviation="1.322"/><feColorMatrix values="0 0 0 0 0.129412 0 0 0 0 0.129412 0 0 0 0 0.203922 0 0 0 0.1 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_12_39"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_12_39" result="shape"/></filter></defs></svg>
@@ -957,7 +957,7 @@ ${e}
957
957
  display: grid;
958
958
  grid-template-columns: repeat(auto-fit, ${140/16}rem);
959
959
  grid-gap: ${({theme:e})=>e.spaces[1]};
960
- `,un=({category:e,components:o,variant:r,isOpen:s,onAddComponent:a,onToggle:c})=>{const{formatMessage:l}=(0,Q.useIntl)(),d=()=>{c(e)};return t.createElement(i.Accordion,{expanded:s,onToggle:d,size:"S"},t.createElement(i.AccordionToggle,{variant:r,title:l({id:e,defaultMessage:e}),togglePosition:"left"}),t.createElement(i.AccordionContent,null,t.createElement(i.Box,{paddingTop:4,paddingBottom:4,paddingLeft:3,paddingRight:3},t.createElement(ul,null,o.map(({componentUid:m,info:{displayName:u}})=>t.createElement(dn,{key:m,onClick:a(m)},l({id:u,defaultMessage:u})))))))};un.defaultProps={components:[],isOpen:!1,variant:"primary"},un.propTypes={category:n().string.isRequired,components:n().array,isOpen:n().bool,onAddComponent:n().func.isRequired,onToggle:n().func.isRequired,variant:n().oneOf(["primary","secondary"])};var ml=un;const mn=({components:e,isOpen:o,onClickAddComponent:r})=>{const{formatMessage:s}=(0,Q.useIntl)(),{getComponentLayout:a}=Ie(),[c,l]=(0,t.useState)(""),d=(0,t.useMemo)(()=>{const p=e.map(g=>{const{category:h,info:y}=a(g);return{componentUid:g,category:h,info:y}}),f=Ho()(p,"category");return Object.keys(f).reduce((g,h)=>(g.push({category:h,components:f[h]}),g),[])},[e,a]);(0,t.useEffect)(()=>{o&&d.length>0&&l(d[0].category)},[o,d]);const m=p=>()=>{r(p),l("")},u=p=>{l(f=>f===p?"":p)};return o?t.createElement(i.Box,{paddingBottom:6},t.createElement(i.Box,{paddingTop:6,paddingBottom:6,paddingLeft:5,paddingRight:5,background:"neutral0",shadow:"tableShadow",borderColor:"neutral150",hasRadius:!0},t.createElement(i.Flex,{justifyContent:"center"},t.createElement(i.Typography,{fontWeight:"bold",textColor:"neutral600"},s({id:R("components.DynamicZone.ComponentPicker-label"),defaultMessage:"Pick one component"}))),t.createElement(i.Box,{paddingTop:2},t.createElement(i.KeyboardNavigable,{attributeName:"data-strapi-accordion-toggle"},d.map(({category:p,components:f},g)=>t.createElement(ml,{key:p,category:p,components:f,onAddComponent:m,isOpen:p===c,onToggle:u,variant:g%2===1?"primary":"secondary"})))))):null};mn.defaultProps={components:[],isOpen:!1},mn.propTypes={components:n().array,isOpen:n().bool,onClickAddComponent:n().func.isRequired};var pl=mn;const pn=({name:e,addComponentToDynamicZone:o,formErrors:r,isCreatingEntry:s,isFieldAllowed:a,isFieldReadable:c,labelAction:l,moveComponentField:d,removeComponentFromDynamicZone:m,dynamicDisplayedComponents:u,fieldSchema:p,metadatas:f})=>{const[g,h]=(0,t.useState)(!1),[y,C]=(0,t.useState)(""),{formatMessage:D}=(0,Q.useIntl)(),E=(0,b.useNotification)(),{getComponentLayout:v,components:P}=Ie(),A=u.length,M=f.description?{id:f.description,defaultMessage:f.description}:null,{max:I=1/0,min:L=-1/0}=p,V=(0,t.useMemo)(()=>Object.keys(r).filter(O=>O===e).map(O=>r[O]),[r,e]),U=L-A,B=V.length>0,_=V.length>0&&S()(V,[0,"id"],"").includes("min"),$=B&&S()(V,[0,"id"],"")==="components.Input.error.validation.max",G=O=>{h(!1);const j=v(O);o(e,j,P,B)},W=()=>{A<I?h(O=>!O):E({type:"info",message:{id:R("components.notification.info.maximum-requirement")}})},K=(O,j)=>{C(D({id:R("dnd.reorder"),defaultMessage:"{item}, moved. New position in list: {position}."},{item:`${e}.${j}`,position:N(O)})),d({name:e,newIndex:O,currentIndex:j})},N=O=>`${O+1} of ${u.length}`,ee=O=>{C(D({id:R("dnd.cancel-item"),defaultMessage:"{item}, dropped. Re-order cancelled."},{item:`${e}.${O}`}))},k=O=>{C(D({id:R("dnd.grab-item"),defaultMessage:"{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel."},{item:`${e}.${O}`,position:N(O)}))},w=O=>{C(D({id:R("dnd.drop-item"),defaultMessage:"{item}, dropped. Final position in list: {position}."},{item:`${e}.${O}`,position:N(O)}))},Z=(O,j)=>()=>{m(O,j)};if(!a&&(s||!c&&!s))return t.createElement(b.NotAllowedInput,{description:M,intlLabel:{id:f.label,defaultMessage:f.label},labelAction:l,name:e});const z=`${e}-item-instructions`;return t.createElement(i.Stack,{spacing:6},A>0&&t.createElement(i.Box,null,t.createElement(il,{intlDescription:M,label:f.label,labelAction:l,name:e,numberOfComponents:A,required:p.required||!1}),t.createElement(i.VisuallyHidden,{id:z},D({id:R("dnd.instructions"),defaultMessage:"Press spacebar to grab and re-order"})),t.createElement(i.VisuallyHidden,{"aria-live":"assertive"},y),t.createElement("ol",{"aria-describedby":z},u.map(({componentUid:O,id:j},H)=>t.createElement(nl,{componentUid:O,formErrors:r,key:`${O}-${j}`,index:H,isFieldAllowed:a,name:e,onMoveComponent:K,onRemoveComponentClick:Z(e,H),onCancel:ee,onDropItem:w,onGrabItem:k})))),t.createElement(sl,{hasError:B,hasMaxError:$,hasMinError:_,isDisabled:!a,label:f.label,missingComponentNumber:U,isOpen:g,name:e,onClick:W}),t.createElement(pl,{isOpen:g,components:p.components??[],onClickAddComponent:G}))};pn.defaultProps={dynamicDisplayedComponents:[],fieldSchema:{max:1/0,min:-1/0},labelAction:null},pn.propTypes={addComponentToDynamicZone:n().func.isRequired,dynamicDisplayedComponents:n().arrayOf(n().shape({componentUid:n().string.isRequired,id:n().number.isRequired})),fieldSchema:n().shape({components:n().array.isRequired,max:n().number,min:n().number,required:n().bool}),formErrors:n().object.isRequired,isCreatingEntry:n().bool.isRequired,isFieldAllowed:n().bool.isRequired,isFieldReadable:n().bool.isRequired,labelAction:n().element,metadatas:n().shape({description:n().string,label:n().string}).isRequired,moveComponentField:n().func.isRequired,name:n().string.isRequired,removeComponentFromDynamicZone:n().func.isRequired};const gl=(0,t.memo)(pn,we());var fl=Ks(gl,Xs),xe=T(41578);const Et=()=>({type:xe.ZA}),gn=e=>({type:xe.Id,data:e}),fn=(e,o=!1)=>({type:xe.TP,rawQuery:e,isSingleType:o}),Go=()=>({type:xe.c2}),Zo=(e,o)=>({type:xe.w7,componentsDataStructure:e,contentTypeDataStructure:o}),ae=e=>({type:xe.d0,status:e}),Le=e=>({type:xe.t9,data:e}),hl=()=>({type:xe.tE});var hn=e=>e["content-manager_editViewCrudReducer"];const yn=({allLayoutData:e,children:o,slug:r,id:s,origin:a})=>{const c=(0,qe.useQueryClient)(),l=(0,b.useNotification)(),{setCurrentStep:d}=(0,b.useGuidedTour)(),{trackUsage:m}=(0,b.useTracking)(),{push:u,replace:p}=(0,re.useHistory)(),[{rawQuery:f}]=(0,b.useQueryParams)(),g=(0,le.useDispatch)(),{componentsDataStructure:h,contentTypeDataStructure:y,data:C,isLoading:D,status:E}=(0,le.useSelector)(hn),v=Eo(r),{formatAPIError:P}=(0,b.useAPIErrorHandler)(R),A=(0,t.useRef)(!0),M=(0,t.useRef)(m),I=(0,t.useRef)(e),L=(0,b.useFetchClient)(),{put:V,post:U,del:B}=L,_=s===null,$=(0,t.useMemo)(()=>_&&!a?null:ce(`collection-types/${r}/${a||s}`),[r,s,_,a]),G=(0,t.useCallback)(j=>a?(0,b.contentManagementUtilRemoveFieldsFromData)(j,I.current.contentType,I.current.components):j,[a]),W=(0,t.useCallback)(j=>{const H=io(j,I.current.contentType,I.current.components);return(0,b.formatContentTypeData)(H,I.current.contentType,I.current.components)},[]);(0,t.useEffect)(()=>{const j=Object.keys(e.components).reduce((x,ne)=>{const ue=it(S()(e,["components",ne,"attributes"],{}),e.components);return x[ne]=(0,b.formatContentTypeData)(ue,e.components[ne],e.components),x},{}),H=it(e.contentType.attributes,e.components),se=(0,b.formatContentTypeData)(H,e.contentType,e.components);g(Zo(j,se))},[e,g]),(0,t.useEffect)(()=>()=>{g(Go())},[g]),(0,t.useEffect)(()=>{const H=Ce.Z.CancelToken.source(),se=async ne=>{g(Et());try{const{data:ue}=await L.get($,{cancelToken:ne.token});g(gn(W(G(ue))))}catch(ue){if(Ce.Z.isCancel(ue))return;const fe=S()(ue,"response.status",null);if(fe===404){u(v);return}fe===403&&(l({type:"info",message:{id:R("permissions.not-allowed.update")}}),u(v))}},x=async()=>{await g(Et()),await g(fn(f))};return A.current?($?se(H):x(),()=>{H.cancel("Operation canceled by the user.")}):()=>{}},[L,G,W,u,$,g,f,v,l]);const K=(0,t.useCallback)(j=>{l({type:"warning",message:P(j)})},[l,P]),N=(0,t.useCallback)(async j=>{console.log("onDelete");try{M.current("willDeleteEntry",j);const{data:H}=await B(ce(`collection-types/${r}/${s}`));return l({type:"success",message:{id:R("success.record.delete")}}),M.current("didDeleteEntry",j),Promise.resolve(H)}catch(H){return M.current("didNotDeleteEntry",{error:H,...j}),Promise.reject(H)}},[s,r,l,B]),ee=(0,t.useCallback)(()=>{p(v)},[v,p]),k=(0,t.useCallback)(async(j,H)=>{const se=`${ce(`collection-types/${r}`)}${f}`;try{g(ae("submit-pending"));const{data:x}=await U(se,j);return M.current("didCreateEntry",H),l({type:"success",message:{id:R("success.record.save")}}),d("contentManager.success"),c.invalidateQueries(["relation"]),g(Le(W(x))),g(ae("resolved")),p(`/content-manager/collectionType/${r}/${x.id}${f}`),Promise.resolve(x)}catch(x){return K(x),M.current("didNotCreateEntry",{error:x,trackerProperty:H}),g(ae("resolved")),Promise.reject(x)}},[W,K,p,r,g,f,l,d,c,U]),w=(0,t.useCallback)(async()=>{try{M.current("willCheckDraftRelations");const j=ce(`collection-types/${r}/${s}/actions/numberOfDraftRelations`);g(ae("draft-relation-check-pending"));const H=await L.get(j);return M.current("didCheckDraftRelations"),g(ae("resolved")),H.data.data}catch(j){return K(j),g(ae("resolved")),Promise.reject(j)}},[K,s,r,g,L]),Z=(0,t.useCallback)(async()=>{try{M.current("willPublishEntry");const j=ce(`collection-types/${r}/${s}/actions/publish`);g(ae("publish-pending"));const{data:H}=await U(j);return M.current("didPublishEntry"),g(Le(W(H))),g(ae("resolved")),l({type:"success",message:{id:R("success.record.publish")}}),Promise.resolve(H)}catch(j){return K(j),g(ae("resolved")),Promise.reject(j)}},[W,K,s,r,g,l,U]),z=(0,t.useCallback)(async(j,H)=>{const se=ce(`collection-types/${r}/${s}`);try{M.current("willEditEntry",H),g(ae("submit-pending"));const{data:x}=await V(se,j);return M.current("didEditEntry",{trackerProperty:H}),l({type:"success",message:{id:R("success.record.save")}}),c.invalidateQueries(["relation"]),g(Le(W(x))),g(ae("resolved")),Promise.resolve(x)}catch(x){return M.current("didNotEditEntry",{error:x,trackerProperty:H}),K(x),g(ae("resolved")),Promise.reject(x)}},[W,K,r,s,g,l,c,V]),O=(0,t.useCallback)(async()=>{const j=ce(`collection-types/${r}/${s}/actions/unpublish`);g(ae("unpublish-pending"));try{M.current("willUnpublishEntry");const{data:H}=await U(j);return M.current("didUnpublishEntry"),l({type:"success",message:{id:R("success.record.unpublish")}}),g(Le(W(H))),g(ae("resolved")),Promise.resolve(H)}catch(H){return g(ae("resolved")),K(H),Promise.reject(H)}},[W,K,s,r,g,l,U]);return o({componentsDataStructure:h,contentTypeDataStructure:y,data:C,isCreatingEntry:_,isLoadingForData:D,onDelete:N,onDeleteSucceeded:ee,onPost:k,onPublish:Z,onDraftRelationCheck:w,onPut:z,onUnpublish:O,status:E,redirectionLink:v})};yn.defaultProps={id:null,origin:null},yn.propTypes={allLayoutData:n().exact({components:n().object.isRequired,contentType:n().shape({apiID:n().string.isRequired,attributes:n().object.isRequired,info:n().object.isRequired,isDisplayed:n().bool.isRequired,kind:n().string.isRequired,layouts:n().object.isRequired,metadatas:n().object.isRequired,options:n().object.isRequired,pluginOptions:n().object,settings:n().object.isRequired,uid:n().string.isRequired}).isRequired}).isRequired,children:n().func.isRequired,id:n().string,origin:n().string,slug:n().string.isRequired};var yl=(0,t.memo)(yn,we()),bl=T(86834),he=T.n(bl),El=T(89793),Xe=T.n(El),Cl=T(3040),J=T.n(Cl),Rl=T(56236),vl=T.n(Rl),Tl=T(10268),Qo=T.n(Tl),Ml=T(86349),kl=T.n(Ml),Dl=T(33494),Il=T.n(Dl),wl=T(36866),xl=T.n(wl),bn=T(99526),Ko=(e,o,r,s)=>{const a=e.slice();return a.splice(o,1),a.splice(r,0,s),a},Ll=T(77236),Fl=T.n(Ll);const Sl=({browserState:e,serverState:o},r,s)=>{const a=o,c=e,l=(u,p)=>S()(u,["attributes",p,"type"],""),d=(u,p)=>S()(u,["attributes",...p],""),m=(u,p,f,g)=>Object.keys(u).reduce((h,y)=>{const C=g?`${g}.${y}`:y,D=l(f,y),E=S()(u,y),v=S()(p,y),P=d(f,[y,"component"]),A=d(f,[y,"repeatable"]);let M;switch(D){case"json":M=JSON.parse(E);break;case"time":{M=E,E&&E.split(":").length<3&&(M=`${E}:00`);break}case"media":d(f,[y,"multiple"])===!0?M=E?E.filter(I=>!(I instanceof File)):null:M=S()(E,0)instanceof File?null:S()(E,"id",null);break;case"component":A?M=E&&E.map((I,L)=>m(I,(v??[])[L],s[P],`${C}.${L}`)):M=E&&m(E,v,s[P],C);break;case"relation":{const I=Wo(a,c)(C).join(".");let L=S()(a,I,[]);const V=E.reduce((B,_,$,G)=>{const W=L.find(N=>N.id===_.id),K=G[$+1];if(!W||W.__temp_key__!==_.__temp_key__){const N=K?{before:K.id}:{end:!0};return[...B,{id:_.id,position:N}]}return B},[]);M={disconnect:L.reduce((B,_)=>E.find($=>$.id===_.id)?B:[...B,{id:_.id}],[]),connect:V.reverse()};break}case"dynamiczone":M=E.map((I,L)=>m(I,(v??[])[L],s[I.__component],`${C}.${L}`));break;default:M=Pl(E,"id")}return h[y]=M,h},{});return m(e,o,r,"")},Pl=(e,o)=>Fl()(e)?e.map(r=>r[o]?r[o]:r):yo()(e)?e[o]:e;var Al=Sl,Ol=T(51355),$l=T.n(Ol),ql=T(95919),Bl=T.n(ql),Nl=T(78746),We=T.n(Nl),me=T(5173);function Je(e){return["integer","biginteger","decimal","float","number"].includes(e)}me.kM(me.nK,"defined",function(){return this.test("defined",b.translatedErrors.required,e=>e!==void 0)}),me.kM(me.IX,"notEmptyMin",function(e){return this.test("notEmptyMin",b.translatedErrors.min,o=>he()(o)?!0:o.length>=e)}),me.kM(me.Z_,"isInferior",function(e,o){return this.test("isInferior",e,function(r){return!r||Number.isNaN(We()(r))?!0:We()(o)>=We()(r)})}),me.kM(me.Z_,"isSuperior",function(e,o){return this.test("isSuperior",e,function(r){return!r||Number.isNaN(We()(r))?!0:We()(r)>=We()(o)})});const jl=e=>S()(e,["attributes"],{}),En=(e,{components:o},r={isCreatingEntry:!0,isDraft:!0,isFromComponent:!1})=>{const s=jl(e);return me.Ry().shape(Object.keys(s).reduce((a,c)=>{const l=s[c];if(l.type!=="relation"&&l.type!=="component"&&l.type!=="dynamiczone"){const d=Vl(l.type,l,r);a[c]=d}if(l.type==="relation"&&(a[c]=["oneWay","oneToOne","manyToOne","oneToManyMorph","oneToOneMorph"].includes(l.relationType)?me.Ry().nullable():me.IX().nullable()),l.type==="component"){const d=En(o[l.component],{components:o},{...r,isFromComponent:!0});if(l.repeatable===!0){const{min:u,max:p,required:f}=l;let g=me.Vo(h=>{let y=me.IX().of(d);return u?f?y=y.min(u,b.translatedErrors.min):f!==!0&&he()(h)?y=y.nullable():y=y.min(u,b.translatedErrors.min):f&&!r.isDraft&&(y=y.min(1,b.translatedErrors.required)),p&&(y=y.max(p,b.translatedErrors.max)),y});return a[c]=g,a}const m=me.Vo(u=>u!==void 0?l.required===!0&&!r.isDraft?d.defined():d.nullable():l.required===!0?me.Ry().defined():me.Ry().nullable());return a[c]=m,a}if(l.type==="dynamiczone"){let d=me.IX().of(me.Vo(({__component:p})=>En(o[p],{components:o},{...r,isFromComponent:!0})));const{max:m,min:u}=l;u?l.required?d=d.test("min",b.translatedErrors.min,p=>r.isCreatingEntry?p&&p.length>=u:p===void 0?!0:p!==null&&p.length>=u).test("required",b.translatedErrors.required,p=>r.isCreatingEntry?p!==null||p!==void 0:p===void 0?!0:p!==null):d=d.notEmptyMin(u):l.required&&!r.isDraft&&(d=d.test("required",b.translatedErrors.required,p=>r.isCreatingEntry?p!==null||p!==void 0:p===void 0?!0:p!==null)),m&&(d=d.max(m,b.translatedErrors.max)),a[c]=d}return a},{}))},Vl=(e,o,r)=>{let s=me.nK();return["string","uid","text","richtext","email","password","enumeration"].includes(e)&&(s=me.Z_()),e==="json"&&(s=me.nK(b.translatedErrors.json).test("isJSON",b.translatedErrors.json,a=>{try{return JSON.parse(a),!0}catch{return!1}}).nullable().test("required",b.translatedErrors.required,a=>!(o.required&&!a.length))),e==="email"&&(s=s.email(b.translatedErrors.email)),["number","integer","float","decimal"].includes(e)&&(s=me.Rx().transform(a=>Bl()(a)?void 0:a).typeError()),e==="biginteger"&&(s=me.Z_().matches(/^-?\d*$/)),["date","datetime"].includes(e)&&(s=me.hT()),Object.keys(o).forEach(a=>{const c=o[a];if(c||!$l()(c)&&Number.isInteger(Math.floor(c))||c===0)switch(a){case"required":{r.isDraft||(e==="password"&&r.isCreatingEntry&&(s=s.required(b.translatedErrors.required)),e!=="password"&&(r.isCreatingEntry?s=s.required(b.translatedErrors.required):s=s.test("required",b.translatedErrors.required,l=>l===void 0&&!r.isFromComponent?!0:Je(e)?l===0?!0:!!l:e==="boolean"?l!=null:e==="date"||e==="datetime"?typeof l=="string"?!he()(l):!he()(l?.toString()):!he()(l))));break}case"max":{e==="biginteger"?s=s.isInferior(b.translatedErrors.max,c):s=s.max(c,b.translatedErrors.max);break}case"maxLength":s=s.max(c,b.translatedErrors.maxLength);break;case"min":{e==="biginteger"?s=s.isSuperior(b.translatedErrors.min,c):s=s.min(c,b.translatedErrors.min);break}case"minLength":{r.isDraft||(s=s.min(c,b.translatedErrors.minLength));break}case"regex":s=s.matches(new RegExp(c),{message:b.translatedErrors.regex,excludeEmptyString:!o.required});break;case"lowercase":["text","textarea","email","string"].includes(e)&&(s=s.strict().lowercase());break;case"uppercase":["text","textarea","email","string"].includes(e)&&(s=s.strict().uppercase());break;case"positive":Je(e)&&(s=s.positive());break;case"negative":Je(e)&&(s=s.negative());break;default:s=s.nullable()}}),s};var Yo=En;const De=(e,o=()=>!1)=>{const r=s=>Object.entries(s).reduce((a,[c,l])=>{if(o(l)&&(a=[...a,c]),l.type==="component"){const d=e[l.component].attributes,u=r(d).map(p=>`${c}.${p}`);a=[...a,u]}else if(l.type==="dynamiczone"){const m=l.components.flatMap(u=>r({[u]:{type:"component",component:u}}).map(p=>p.split(`${u}.`)[1])).filter(u=>Boolean(u)).map(u=>`${c}.${u}`);a=[...a,m]}return a.flat()},[]);return r},zl=(e,o)=>{const r=(s,a,c,l)=>s&&(c===l.length-1&&e===a?(J()(s,a,o),s):(Array.isArray(s[a])&&s[a].forEach(d=>{l.slice(c+1).reduce(r,d)}),s[a]));return r},Wl={componentsDataStructure:{},contentTypeDataStructure:{},formErrors:{},initialData:{},modifiedData:null,shouldCheckErrors:!1,modifiedDZName:null,publishConfirmation:{show:!1,draftCount:0}};var Ul=(e,o)=>(0,ut.default)(e,r=>{switch(o.type){case"ADD_NON_REPEATABLE_COMPONENT_TO_FIELD":{const{componentLayoutData:s,allComponents:a}=o,c=De(a,u=>u.type==="relation")(s.attributes),l={...e.componentsDataStructure[s.uid]},d=De(a,u=>u.type==="component"&&u.repeatable)(s.attributes),m=c.reduce((u,p)=>{const[f]=p.split(".");return d.includes(f)||J()(u,p,[]),u},l);J()(r,["modifiedData",...o.keys],m);break}case"ADD_COMPONENT_TO_DYNAMIC_ZONE":case"ADD_REPEATABLE_COMPONENT_TO_FIELD":{const{keys:s,allComponents:a,componentLayoutData:c,shouldCheckErrors:l}=o;l&&(r.shouldCheckErrors=!e.shouldCheckErrors),o.type==="ADD_COMPONENT_TO_DYNAMIC_ZONE"&&(r.modifiedDZName=s[0]);const d=S()(e,["modifiedData",...s],[]),m=o.type==="ADD_COMPONENT_TO_DYNAMIC_ZONE"?{...e.componentsDataStructure[c.uid],__component:c.uid,__temp_key__:ct(d)+1}:{...e.componentsDataStructure[c.uid],__temp_key__:ct(d)+1},u=De(a,y=>y.type==="relation")(c.attributes),p=De(a,y=>y.type==="component"&&y.repeatable)(c.attributes),f=De(a,y=>y.type==="component"&&!y.repeatable)(c.attributes),g=u.reduce((y,C)=>{const[D]=C.split(".");return!p.includes(D)&&!f.includes(D)&&J()(y,C,[]),y},m),h=Array.isArray(d)?[...d,g]:[g];J()(r,["modifiedData",...s],h);break}case"LOAD_RELATION":{const{initialDataPath:s,modifiedDataPath:a,value:c}=o,l=S()(e,s),d=S()(e,a),m=c.filter(f=>!l.some(g=>g.id===f.id)),u=(0,bn.zJ)(null,d[0]?.__temp_key__,m.length),p=m.map((f,g)=>({...f,__temp_key__:u[g]}));J()(r,s,Qo()([...p,...l],"id")),J()(r,a,Qo()([...p,...d],"id"));break}case"CONNECT_RELATION":{const s=["modifiedData",...o.keys],{value:a,toOneRelation:c}=o;if(c)J()(r,s,[a]);else{const l=S()(e,s),[d]=(0,bn.zJ)(l.at(-1)?.__temp_key__,null,1),m=[...l,{...a,__temp_key__:d}];J()(r,s,m)}break}case"DISCONNECT_RELATION":{const s=["modifiedData",...o.keys],{id:a}=o,l=S()(e,[...s]).filter(d=>d.id!==a);J()(r,s,l);break}case"MOVE_COMPONENT_FIELD":case"REORDER_RELATION":{const{oldIndex:s,newIndex:a,keys:c}=o,l=["modifiedData",...c],d=S()(e,[...l]),m=d[s],u=[...d];if(o.type==="REORDER_RELATION"){const[p]=(0,bn.zJ)(d[a-1]?.__temp_key__,d[a]?.__temp_key__,1);u.splice(s,1),u.splice(a,0,{...m,__temp_key__:p})}else u.splice(s,1),u.splice(a,0,m);J()(r,l,u);break}case"INIT_FORM":{const{initialValues:s,relationalFieldPaths:a=[],componentPaths:c=[],repeatableComponentPaths:l=[],dynamicZonePaths:d=[],setModifiedDataOnly:m}=o,u=Te()(s),p=a.map(f=>f.split(".")).reduce((f,g)=>{const[h]=g,y=Il()(f[h]||[]);if(y.reduce((C,D)=>(xl()(S()(D,["__temp_key__"]))&&J()(D,["__temp_key__"],ct(C)+1),C),y),e.modifiedData&&S()(e.modifiedData,h)){const C=Te()(S()(e.modifiedData,h));J()(f,h,kl()(C,S()(s,h)))}else if(l.includes(h)||d.includes(h)||c.includes(h)){const C=zl(g.slice(-1)[0],[]);g.reduce(C,f)}else J()(f,g,[]);return f},u);m||(r.initialData=p),r.modifiedData=p,r.formErrors={},r.modifiedDZName=null,r.shouldCheckErrors=!1;break}case"MOVE_COMPONENT_UP":case"MOVE_COMPONENT_DOWN":{const{currentIndex:s,dynamicZoneName:a,shouldCheckErrors:c}=o;c&&(r.shouldCheckErrors=!e.shouldCheckErrors);const l=e.modifiedData[a],d=o.type==="MOVE_COMPONENT_UP"?s-1:s+1,m=e.modifiedData[a][s],u=Ko(l,s,d,m);J()(r,["modifiedData",o.dynamicZoneName],u);break}case"MOVE_FIELD":{const s=S()(e,["modifiedData",...o.keys],[]).slice(),a=S()(e,["modifiedData",...o.keys,o.dragIndex]),c=Ko(s,o.dragIndex,o.overIndex,a);J()(r,["modifiedData",...o.keys],c);break}case"ON_CHANGE":{const[s]=o.keys;if(o.shouldSetInitialValue&&J()(r,["initialData",...o.keys],o.value),o.keys.length===2&&S()(e,["modifiedData",s])===null){J()(r,["modifiedData",s],{[o.keys[1]]:o.value});break}J()(r,["modifiedData",...o.keys],o.value);break}case"REMOVE_COMPONENT_FROM_DYNAMIC_ZONE":{o.shouldCheckErrors&&(r.shouldCheckErrors=!e.shouldCheckErrors),r.modifiedData[o.dynamicZoneName].splice(o.index,1);break}case"REMOVE_COMPONENT_FROM_FIELD":{const s=["modifiedData",...o.keys];J()(r,s,null);break}case"REMOVE_PASSWORD_FIELD":{vl()(r,["modifiedData",...o.keys]);break}case"REMOVE_REPEATABLE_FIELD":{const s=o.keys.length-1,a=["modifiedData",...$t()(o.keys,s)];Object.keys(e.formErrors).length>0&&(r.shouldCheckErrors=!e.shouldCheckErrors);const l=S()(e,a).slice();l.splice(parseInt(o.keys[s],10),1),J()(r,a,l);break}case"SET_DEFAULT_DATA_STRUCTURES":{r.componentsDataStructure=o.componentsDataStructure,r.contentTypeDataStructure=o.contentTypeDataStructure;break}case"SET_FORM_ERRORS":{r.modifiedDZName=null,r.formErrors=o.errors;break}case"TRIGGER_FORM_VALIDATION":{Object.keys(e.formErrors).length>0&&(r.shouldCheckErrors=!e.shouldCheckErrors);break}case"SET_PUBLISH_CONFIRMATION":{r.publishConfirmation={...o.publishConfirmation};break}case"RESET_PUBLISH_CONFIRMATION":{r.publishConfirmation={...e.publishConfirmation,show:!1};break}default:return r}});const Cn=({allLayoutData:e,allowedActions:{canRead:o,canUpdate:r},children:s,componentsDataStructure:a,contentTypeDataStructure:c,createActionAllowedFields:l,from:d,initialValues:m,isCreatingEntry:u,isLoadingForData:p,isSingleType:f,onPost:g,onPublish:h,onDraftRelationCheck:y,onPut:C,onUnpublish:D,readActionAllowedFields:E,redirectToPreviousPage:v,slug:P,status:A,updateActionAllowedFields:M})=>{const[I,L]=(0,t.useReducer)(Ul,Wl),{formErrors:V,initialData:U,modifiedData:B,modifiedDZName:_,shouldCheckErrors:$,publishConfirmation:G}=I,{setModifiedDataOnly:W}=(0,le.useSelector)(hn),K=(0,le.useDispatch)(),N=(0,b.useNotification)(),{lockApp:ee,unlockApp:k}=(0,b.useOverlayBlocker)(),w=S()(e,["contentType"],{}),Z=(0,t.useMemo)(()=>S()(w,["options","draftAndPublish"],!1),[w]),z=(0,t.useMemo)(()=>Z&&!U.publishedAt,[Z,U.publishedAt]),{trackUsage:O}=(0,b.useTracking)(),{formatMessage:j}=(0,Q.useIntl)(),H=(0,t.useRef)(O),se=(0,t.useMemo)(()=>p||u?!1:o===!1&&r===!1,[p,u,o,r]);(0,t.useEffect)(()=>{A==="resolved"?k():ee()},[ee,k,A]),(0,t.useEffect)(()=>{p||Re()},[$]),(0,t.useEffect)(()=>{const X=Object.keys(V);if(X.length>0){const Y=X[0],oe=document.getElementById(Y);oe&&oe.focus()}},[V]),(0,t.useEffect)(()=>{se&&N({type:"info",message:{id:R("permissions.not-allowed.update")}})},[se,N]),(0,t.useEffect)(()=>{L({type:"SET_DEFAULT_DATA_STRUCTURES",componentsDataStructure:a,contentTypeDataStructure:c})},[a,c]);const{components:x}=e,ne=To(m);(0,t.useEffect)(()=>{if(m&&w?.attributes&&!Xe()(ne,m)){const X=De(x,ge=>ge.type==="relation")(w.attributes),Y=De(x,ge=>ge.type==="component"&&!ge.repeatable)(w.attributes),oe=De(x,ge=>ge.type==="component"&&ge.repeatable)(w.attributes),be=De(x,ge=>ge.type==="dynamiczone")(w.attributes);L({type:"INIT_FORM",initialValues:m,relationalFieldPaths:X,componentPaths:Y,repeatableComponentPaths:oe,dynamicZonePaths:be,setModifiedDataOnly:W}),W&&K(hl())}},[m,w,x,W,K,ne]);const ue=(0,t.useCallback)(X=>(Y,oe,be,ge=!1)=>{H.current("didAddComponentToDynamicZone"),L({type:X,keys:Y.split("."),componentLayoutData:oe,allComponents:be,shouldCheckErrors:ge})},[]),fe=ue("ADD_COMPONENT_TO_DYNAMIC_ZONE"),Fe=(0,t.useCallback)((X,Y,oe)=>{L({type:"ADD_NON_REPEATABLE_COMPONENT_TO_FIELD",keys:X.split("."),componentLayoutData:Y,allComponents:oe})},[]),nt=(0,t.useCallback)(({name:X,value:Y,toOneRelation:oe})=>{L({type:"CONNECT_RELATION",keys:X.split("."),value:Y,toOneRelation:oe})},[]),ot=(0,t.useCallback)(({target:{initialDataPath:X,modifiedDataPath:Y,value:oe}})=>{L({type:"LOAD_RELATION",modifiedDataPath:Y,initialDataPath:X,value:oe})},[]),rt=ue("ADD_REPEATABLE_COMPONENT_TO_FIELD"),Me=(0,t.useMemo)(()=>{const X={isCreatingEntry:u,isDraft:z,isFromComponent:!1};return Yo(w,{components:e.components||{}},X)},[e.components,w,u,z]),Re=(0,t.useCallback)(async(X={})=>{let Y={};const oe=Te()(B);he()(oe)||J()(oe,X.path,X.value);try{await Me.validate(oe,{abortEarly:!1})}catch(be){Y=(0,b.getYupInnerErrors)(be),_&&(Y=Object.keys(Y).reduce((ge,Gn)=>(Gn.split(".")[0]!==_&&(ge[Gn]=Y[Gn]),ge),{}))}L({type:"SET_FORM_ERRORS",errors:Y})},[_,B,Me]),Ge=(0,t.useCallback)(({target:{name:X,value:Y,type:oe}},be=!1)=>{let ge=Y;if(["text","textarea","string","email","uid","select","select-one","number"].includes(oe)&&!Y&&Y!==0&&(ge=null),oe==="password"&&!Y){L({type:"REMOVE_PASSWORD_FIELD",keys:X.split(".")});return}L({type:"ON_CHANGE",keys:X.split("."),value:ge,shouldSetInitialValue:be})},[]),Ne=(0,t.useCallback)((X,Y)=>Al({browserState:X,serverState:Y},w,e.components),[e.components,w]),de=(0,t.useMemo)(()=>Z?z?{status:"draft"}:{}:{},[Z,z]),ie=(0,t.useCallback)(async X=>(X.preventDefault(),L({type:"RESET_PUBLISH_CONFIRMATION"})),[]),pe=(0,t.useCallback)(async X=>{X.preventDefault();let Y={};try{await Me.validate(B,{abortEarly:!1})}catch(oe){Y=(0,b.getYupInnerErrors)(oe)}try{if(he()(Y)){const oe=Ne(B,U);u?await g(oe,de):await C(oe,de)}}catch(oe){Y={...Y,...(0,b.getAPIInnerErrors)(oe,{getTrad:R})}}L({type:"SET_FORM_ERRORS",errors:Y})},[Ne,u,B,U,g,C,de,Me]),Se=(0,t.useCallback)(async()=>{const X=Yo(w,{components:S()(e,"components",{})},{isCreatingEntry:u,isDraft:!1,isFromComponent:!1}),Y=await y();if(!G.show&&Y>0){L({type:"SET_PUBLISH_CONFIRMATION",publishConfirmation:{show:!0,draftCount:Y}});return}L({type:"RESET_PUBLISH_CONFIRMATION"});let oe={};try{await X.validate(B,{abortEarly:!1})}catch(be){oe=(0,b.getYupInnerErrors)(be)}try{he()(oe)&&await h()}catch(be){oe={...oe,...(0,b.getAPIInnerErrors)(be,{getTrad:R})}}L({type:"SET_FORM_ERRORS",errors:oe})},[e,w,u,B,G.show,h,y]),Pe=(0,t.useCallback)(X=>{const Y=Object.keys(V).some(be=>be.split(".")[0]===X);return!he()(V)&&Y},[V]),Pu=(0,t.useCallback)((X,Y)=>{H.current("changeComponentsOrder"),L({type:"MOVE_COMPONENT_DOWN",dynamicZoneName:X,currentIndex:Y,shouldCheckErrors:Pe(X)})},[Pe]),Au=(0,t.useCallback)((X,Y)=>{H.current("changeComponentsOrder"),L({type:"MOVE_COMPONENT_UP",dynamicZoneName:X,currentIndex:Y,shouldCheckErrors:Pe(X)})},[Pe]),Ou=(0,t.useCallback)(({name:X,newIndex:Y,currentIndex:oe})=>{L({type:"MOVE_COMPONENT_FIELD",keys:X.split("."),newIndex:Y,oldIndex:oe})},[]),$u=(0,t.useCallback)(({name:X,id:Y})=>{L({type:"DISCONNECT_RELATION",keys:X.split("."),id:Y})},[]),qu=(0,t.useCallback)(({name:X,oldIndex:Y,newIndex:oe})=>{L({type:"REORDER_RELATION",keys:X.split("."),oldIndex:Y,newIndex:oe})},[]),Bu=(0,t.useCallback)((X,Y)=>{H.current("removeComponentFromDynamicZone"),L({type:"REMOVE_COMPONENT_FROM_DYNAMIC_ZONE",dynamicZoneName:X,index:Y,shouldCheckErrors:Pe(X)})},[Pe]),Nu=(0,t.useCallback)((X,Y)=>{L({type:"REMOVE_COMPONENT_FROM_FIELD",keys:X.split("."),componentUid:Y})},[]),ju=(0,t.useCallback)((X,Y)=>{L({type:"REMOVE_REPEATABLE_FIELD",keys:X.split("."),componentUid:Y})},[]),Vu=(0,t.useCallback)(()=>{L({type:"TRIGGER_FORM_VALIDATION"})},[]);return se?t.createElement(re.Redirect,{to:d}):B?t.createElement(b.ContentManagerEditViewDataManagerContext.Provider,{value:{addComponentToDynamicZone:fe,addNonRepeatableComponentToField:Fe,addRepeatableComponentToField:rt,allLayoutData:e,checkFormErrors:Re,createActionAllowedFields:l,formErrors:V,hasDraftAndPublish:Z,initialData:U,isCreatingEntry:u,isSingleType:f,shouldNotRunValidations:z,status:A,layout:w,modifiedData:B,moveComponentField:Ou,moveComponentDown:Pu,moveComponentUp:Au,onChange:Ge,onPublish:Se,onUnpublish:D,readActionAllowedFields:E,redirectToPreviousPage:v,removeComponentFromDynamicZone:Bu,removeComponentFromField:Nu,removeRepeatableField:ju,relationConnect:nt,relationDisconnect:$u,relationLoad:ot,relationReorder:qu,slug:P,triggerFormValidation:Vu,updateActionAllowedFields:M,onPublishPromptDismissal:ie,publishConfirmation:G}},p||!u&&!U.id?t.createElement(i.Main,{"aria-busy":"true"},t.createElement(b.LoadingIndicatorPage,null)):t.createElement(t.Fragment,null,t.createElement(re.Prompt,{when:!Xe()(B,U),message:j({id:"global.prompt.unsaved"})}),t.createElement("form",{noValidate:!0,onSubmit:pe},s))):null};Cn.defaultProps={from:"/",initialValues:null,redirectToPreviousPage(){}},Cn.propTypes={allLayoutData:n().object.isRequired,allowedActions:n().object.isRequired,children:n().node.isRequired,componentsDataStructure:n().object.isRequired,contentTypeDataStructure:n().object.isRequired,createActionAllowedFields:n().array.isRequired,from:n().string,initialValues:n().object,isCreatingEntry:n().bool.isRequired,isLoadingForData:n().bool.isRequired,isSingleType:n().bool.isRequired,onPost:n().func.isRequired,onPublish:n().func.isRequired,onDraftRelationCheck:n().func.isRequired,onPut:n().func.isRequired,onUnpublish:n().func.isRequired,readActionAllowedFields:n().array.isRequired,redirectToPreviousPage:n().func,slug:n().string.isRequired,status:n().string.isRequired,updateActionAllowedFields:n().array.isRequired};var _l=Cn,Be=e=>ce(`single-types/${e}`),Hl=e=>Object.values(e||{}).reduce((o,r)=>Object.assign(o,r),{}),Xo=(e={})=>{const{plugins:o,_q:r,...s}={...e,...Hl(e.plugins)};return r&&J()(s,"_q",encodeURIComponent(r)),`${(0,ke.stringify)(s,{encode:!1,addQueryPrefix:!0})}`};const Jo=({allLayoutData:e,children:o,slug:r})=>{const s=(0,qe.useQueryClient)(),{trackUsage:a}=(0,b.useTracking)(),{push:c}=(0,re.useHistory)(),{setCurrentStep:l}=(0,b.useGuidedTour)(),d=(0,t.useRef)(a),[m,u]=(0,t.useState)(!0),[{query:p,rawQuery:f}]=(0,b.useQueryParams)(),g=Xo(p),h=(0,b.useNotification)(),y=(0,le.useDispatch)(),{formatAPIError:C}=(0,b.useAPIErrorHandler)(R),D=(0,b.useFetchClient)(),{post:E,put:v,del:P}=D,{componentsDataStructure:A,contentTypeDataStructure:M,data:I,isLoading:L,status:V}=(0,le.useSelector)(hn),U=(0,t.useCallback)(k=>{const w=io(k,e.contentType,e.components);return(0,b.formatContentTypeData)(w,e.contentType,e.components)},[e]);(0,t.useEffect)(()=>()=>{y(Go())},[y]),(0,t.useEffect)(()=>{const k=Object.keys(e.components).reduce((z,O)=>{const j=it(S()(e,["components",O,"attributes"],{}),e.components);return z[O]=(0,b.formatContentTypeData)(j,e.components[O],e.components),z},{}),w=it(e.contentType.attributes,e.components),Z=(0,b.formatContentTypeData)(w,e.contentType,e.components);y(Zo(k,Z))},[e,y]),(0,t.useEffect)(()=>{const w=Ce.Z.CancelToken.source();return(async z=>{y(Et()),u(!0);try{const{data:O}=await D.get(Be(`${r}${g}`),{cancelToken:z.token});y(gn(U(O))),u(!1)}catch(O){if(Ce.Z.isCancel(O))return;const j=S()(O,"response.status",null);j===404&&y(fn(f,!0)),j===403&&(h({type:"info",message:{id:R("permissions.not-allowed.update")}}),c("/"))}})(w),()=>w.cancel("Operation canceled by the user.")},[D,U,c,r,y,g,f,h]);const B=(0,t.useCallback)(k=>{h({type:"warning",message:C(k)})},[h,C]),_=(0,t.useCallback)(async k=>{try{d.current("willDeleteEntry",k);const{data:w}=await P(Be(`${r}${g}`));return h({type:"success",message:{id:R("success.record.delete")}}),d.current("didDeleteEntry",k),Promise.resolve(w)}catch(w){return d.current("didNotDeleteEntry",{error:w,...k}),B(w),Promise.reject(w)}},[P,r,B,h,g]),$=(0,t.useCallback)(()=>{u(!0),y(fn(f,!0))},[y,f]),G=(0,t.useCallback)(async(k,w)=>{const Z=Be(`${r}${f}`);try{y(ae("submit-pending"));const{data:z}=await v(Z,k);return d.current("didCreateEntry",w),h({type:"success",message:{id:R("success.record.save")}}),l("contentManager.success"),s.invalidateQueries(["relation"]),y(Le(U(z))),u(!1),y(ae("resolved")),Promise.resolve(z)}catch(z){return d.current("didNotCreateEntry",{error:z,trackerProperty:w}),B(z),y(ae("resolved")),Promise.reject(z)}},[v,U,B,r,y,f,h,l,s]),W=(0,t.useCallback)(async()=>{try{d.current("willCheckDraftRelations");const k=Be(`${r}/actions/numberOfDraftRelations`);y(ae("draft-relation-check-pending"));const w=await D.get(k);return d.current("didCheckDraftRelations"),y(ae("resolved")),w.data.data}catch(k){return B(k),y(ae("resolved")),Promise.reject(k)}},[D,B,r,y]),K=(0,t.useCallback)(async()=>{try{d.current("willPublishEntry");const k=Be(`${r}/actions/publish${g}`);y(ae("publish-pending"));const{data:w}=await E(k);return d.current("didPublishEntry"),h({type:"success",message:{id:R("success.record.publish")}}),y(Le(U(w))),y(ae("resolved")),Promise.resolve(w)}catch(k){return B(k),y(ae("resolved")),Promise.reject(k)}},[E,U,B,r,g,y,h]),N=(0,t.useCallback)(async(k,w)=>{const Z=Be(`${r}${f}`);try{d.current("willEditEntry",w),y(ae("submit-pending"));const{data:z}=await v(Z,k);return h({type:"success",message:{id:R("success.record.save")}}),d.current("didEditEntry",{trackerProperty:w}),s.invalidateQueries(["relation"]),y(Le(U(z))),y(ae("resolved")),Promise.resolve(z)}catch(z){return B(z),d.current("didNotEditEntry",{error:z,trackerProperty:w}),y(ae("resolved")),Promise.reject(z)}},[v,U,B,r,y,f,h,s]),ee=(0,t.useCallback)(async()=>{const k=Be(`${r}/actions/unpublish${g}`);y(ae("unpublish-pending"));try{d.current("willUnpublishEntry");const{data:w}=await E(k);d.current("didUnpublishEntry"),h({type:"success",message:{id:R("success.record.unpublish")}}),y(Le(U(w))),y(ae("resolved"))}catch(w){y(ae("resolved")),B(w)}},[E,U,h,B,r,y,g]);return o({componentsDataStructure:A,contentTypeDataStructure:M,data:I,isCreatingEntry:m,isLoadingForData:L,onDelete:_,onDeleteSucceeded:$,onPost:G,onDraftRelationCheck:W,onPublish:K,onPut:N,onUnpublish:ee,redirectionLink:"/",status:V})};Jo.propTypes={allLayoutData:n().shape({components:n().object.isRequired,contentType:n().object.isRequired}).isRequired,children:n().func.isRequired,slug:n().string.isRequired};var Gl=(0,t.memo)(Jo);function Zl(e,o){return r=>{const s=o();return t.createElement(e,{...r,...s})}}var Ql=Zl;function Kl(){const{initialData:e,hasDraftAndPublish:o}=(0,b.useCMEditViewDataManager)(),r=e.publishedAt!==void 0&&e.publishedAt!==null;return{hasDraftAndPublish:o,isPublished:r}}var Yl=Kl;const Xl=(0,q.default)(F.Dot)`
960
+ `,un=({category:e,components:o,variant:r,isOpen:s,onAddComponent:a,onToggle:c})=>{const{formatMessage:l}=(0,Q.useIntl)(),d=()=>{c(e)};return t.createElement(i.Accordion,{expanded:s,onToggle:d,size:"S"},t.createElement(i.AccordionToggle,{variant:r,title:l({id:e,defaultMessage:e}),togglePosition:"left"}),t.createElement(i.AccordionContent,null,t.createElement(i.Box,{paddingTop:4,paddingBottom:4,paddingLeft:3,paddingRight:3},t.createElement(ul,null,o.map(({componentUid:m,info:{displayName:u}})=>t.createElement(dn,{key:m,onClick:a(m)},l({id:u,defaultMessage:u})))))))};un.defaultProps={components:[],isOpen:!1,variant:"primary"},un.propTypes={category:n().string.isRequired,components:n().array,isOpen:n().bool,onAddComponent:n().func.isRequired,onToggle:n().func.isRequired,variant:n().oneOf(["primary","secondary"])};var ml=un;const mn=({components:e,isOpen:o,onClickAddComponent:r})=>{const{formatMessage:s}=(0,Q.useIntl)(),{getComponentLayout:a}=Ie(),[c,l]=(0,t.useState)(""),d=(0,t.useMemo)(()=>{const p=e.map(g=>{const{category:h,info:y}=a(g);return{componentUid:g,category:h,info:y}}),f=Ho()(p,"category");return Object.keys(f).reduce((g,h)=>(g.push({category:h,components:f[h]}),g),[])},[e,a]);(0,t.useEffect)(()=>{o&&d.length>0&&l(d[0].category)},[o,d]);const m=p=>()=>{r(p),l("")},u=p=>{l(f=>f===p?"":p)};return o?t.createElement(i.Box,{paddingBottom:6},t.createElement(i.Box,{paddingTop:6,paddingBottom:6,paddingLeft:5,paddingRight:5,background:"neutral0",shadow:"tableShadow",borderColor:"neutral150",hasRadius:!0},t.createElement(i.Flex,{justifyContent:"center"},t.createElement(i.Typography,{fontWeight:"bold",textColor:"neutral600"},s({id:R("components.DynamicZone.ComponentPicker-label"),defaultMessage:"Pick one component"}))),t.createElement(i.Box,{paddingTop:2},t.createElement(i.KeyboardNavigable,{attributeName:"data-strapi-accordion-toggle"},d.map(({category:p,components:f},g)=>t.createElement(ml,{key:p,category:p,components:f,onAddComponent:m,isOpen:p===c,onToggle:u,variant:g%2===1?"primary":"secondary"})))))):null};mn.defaultProps={components:[],isOpen:!1},mn.propTypes={components:n().array,isOpen:n().bool,onClickAddComponent:n().func.isRequired};var pl=mn;const pn=({name:e,addComponentToDynamicZone:o,formErrors:r,isCreatingEntry:s,isFieldAllowed:a,isFieldReadable:c,labelAction:l,moveComponentField:d,removeComponentFromDynamicZone:m,dynamicDisplayedComponents:u,fieldSchema:p,metadatas:f})=>{const[g,h]=(0,t.useState)(!1),[y,C]=(0,t.useState)(""),{formatMessage:D}=(0,Q.useIntl)(),E=(0,b.useNotification)(),{getComponentLayout:v,components:P}=Ie(),A=u.length,M=f.description?{id:f.description,defaultMessage:f.description}:null,{max:I=1/0,min:L=-1/0}=p,V=(0,t.useMemo)(()=>Object.keys(r).filter(O=>O===e).map(O=>r[O]),[r,e]),U=L-A,B=V.length>0,_=V.length>0&&S()(V,[0,"id"],"").includes("min"),$=B&&S()(V,[0,"id"],"")==="components.Input.error.validation.max",G=O=>{h(!1);const j=v(O);o(e,j,P,B)},W=()=>{A<I?h(O=>!O):E({type:"info",message:{id:R("components.notification.info.maximum-requirement")}})},K=(O,j)=>{C(D({id:R("dnd.reorder"),defaultMessage:"{item}, moved. New position in list: {position}."},{item:`${e}.${j}`,position:N(O)})),d({name:e,newIndex:O,currentIndex:j})},N=O=>`${O+1} of ${u.length}`,ee=O=>{C(D({id:R("dnd.cancel-item"),defaultMessage:"{item}, dropped. Re-order cancelled."},{item:`${e}.${O}`}))},k=O=>{C(D({id:R("dnd.grab-item"),defaultMessage:"{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel."},{item:`${e}.${O}`,position:N(O)}))},w=O=>{C(D({id:R("dnd.drop-item"),defaultMessage:"{item}, dropped. Final position in list: {position}."},{item:`${e}.${O}`,position:N(O)}))},Z=(O,j)=>()=>{m(O,j)};if(!a&&(s||!c&&!s))return t.createElement(b.NotAllowedInput,{description:M,intlLabel:{id:f.label,defaultMessage:f.label},labelAction:l,name:e});const z=`${e}-item-instructions`;return t.createElement(i.Stack,{spacing:6},A>0&&t.createElement(i.Box,null,t.createElement(il,{intlDescription:M,label:f.label,labelAction:l,name:e,numberOfComponents:A,required:p.required||!1}),t.createElement(i.VisuallyHidden,{id:z},D({id:R("dnd.instructions"),defaultMessage:"Press spacebar to grab and re-order"})),t.createElement(i.VisuallyHidden,{"aria-live":"assertive"},y),t.createElement("ol",{"aria-describedby":z},u.map(({componentUid:O,id:j},H)=>t.createElement(nl,{componentUid:O,formErrors:r,key:`${O}-${j}`,index:H,isFieldAllowed:a,name:e,onMoveComponent:K,onRemoveComponentClick:Z(e,H),onCancel:ee,onDropItem:w,onGrabItem:k})))),t.createElement(sl,{hasError:B,hasMaxError:$,hasMinError:_,isDisabled:!a,label:f.label,missingComponentNumber:U,isOpen:g,name:e,onClick:W}),t.createElement(pl,{isOpen:g,components:p.components??[],onClickAddComponent:G}))};pn.defaultProps={dynamicDisplayedComponents:[],fieldSchema:{max:1/0,min:-1/0},labelAction:null},pn.propTypes={addComponentToDynamicZone:n().func.isRequired,dynamicDisplayedComponents:n().arrayOf(n().shape({componentUid:n().string.isRequired,id:n().number.isRequired})),fieldSchema:n().shape({components:n().array.isRequired,max:n().number,min:n().number,required:n().bool}),formErrors:n().object.isRequired,isCreatingEntry:n().bool.isRequired,isFieldAllowed:n().bool.isRequired,isFieldReadable:n().bool.isRequired,labelAction:n().element,metadatas:n().shape({description:n().string,label:n().string}).isRequired,moveComponentField:n().func.isRequired,name:n().string.isRequired,removeComponentFromDynamicZone:n().func.isRequired};const gl=(0,t.memo)(pn,we());var fl=Ks(gl,Xs),xe=T(41578);const Et=()=>({type:xe.ZA}),gn=e=>({type:xe.Id,data:e}),fn=(e,o=!1)=>({type:xe.TP,rawQuery:e,isSingleType:o}),Go=()=>({type:xe.c2}),Zo=(e,o)=>({type:xe.w7,componentsDataStructure:e,contentTypeDataStructure:o}),ae=e=>({type:xe.d0,status:e}),Le=e=>({type:xe.t9,data:e}),hl=()=>({type:xe.tE});var hn=e=>e["content-manager_editViewCrudReducer"];const yn=({allLayoutData:e,children:o,slug:r,id:s,origin:a})=>{const c=(0,qe.useQueryClient)(),l=(0,b.useNotification)(),{setCurrentStep:d}=(0,b.useGuidedTour)(),{trackUsage:m}=(0,b.useTracking)(),{push:u,replace:p}=(0,re.useHistory)(),[{rawQuery:f}]=(0,b.useQueryParams)(),g=(0,le.useDispatch)(),{componentsDataStructure:h,contentTypeDataStructure:y,data:C,isLoading:D,status:E}=(0,le.useSelector)(hn),v=Eo(r),{formatAPIError:P}=(0,b.useAPIErrorHandler)(R),A=(0,t.useRef)(!0),M=(0,t.useRef)(m),I=(0,t.useRef)(e),L=(0,b.useFetchClient)(),{put:V,post:U,del:B}=L,_=s===null,$=(0,t.useMemo)(()=>_&&!a?null:ce(`collection-types/${r}/${a||s}`),[r,s,_,a]),G=(0,t.useCallback)(j=>a?(0,b.contentManagementUtilRemoveFieldsFromData)(j,I.current.contentType,I.current.components):j,[a]),W=(0,t.useCallback)(j=>{const H=io(j,I.current.contentType,I.current.components);return(0,b.formatContentTypeData)(H,I.current.contentType,I.current.components)},[]);(0,t.useEffect)(()=>{const j=Object.keys(e.components).reduce((x,ne)=>{const ue=it(S()(e,["components",ne,"attributes"],{}),e.components);return x[ne]=(0,b.formatContentTypeData)(ue,e.components[ne],e.components),x},{}),H=it(e.contentType.attributes,e.components),se=(0,b.formatContentTypeData)(H,e.contentType,e.components);g(Zo(j,se))},[e,g]),(0,t.useEffect)(()=>()=>{g(Go())},[g]),(0,t.useEffect)(()=>{const H=Ce.Z.CancelToken.source(),se=async ne=>{g(Et());try{const{data:ue}=await L.get($,{cancelToken:ne.token});g(gn(W(G(ue))))}catch(ue){if(Ce.Z.isCancel(ue))return;const fe=S()(ue,"response.status",null);if(fe===404){u(v);return}fe===403&&(l({type:"info",message:{id:R("permissions.not-allowed.update")}}),u(v))}},x=async()=>{await g(Et()),await g(fn(f))};return A.current?($?se(H):x(),()=>{H.cancel("Operation canceled by the user.")}):()=>{}},[L,G,W,u,$,g,f,v,l]);const K=(0,t.useCallback)(j=>{l({type:"warning",message:P(j)})},[l,P]),N=(0,t.useCallback)(async j=>{try{M.current("willDeleteEntry",j);const{data:H}=await B(ce(`collection-types/${r}/${s}`));return l({type:"success",message:{id:R("success.record.delete")}}),M.current("didDeleteEntry",j),Promise.resolve(H)}catch(H){return M.current("didNotDeleteEntry",{error:H,...j}),Promise.reject(H)}},[s,r,l,B]),ee=(0,t.useCallback)(()=>{p(v)},[v,p]),k=(0,t.useCallback)(async(j,H)=>{const se=`${ce(`collection-types/${r}`)}${f}`;try{g(ae("submit-pending"));const{data:x}=await U(se,j);return M.current("didCreateEntry",H),l({type:"success",message:{id:R("success.record.save")}}),d("contentManager.success"),c.invalidateQueries(["relation"]),g(Le(W(x))),g(ae("resolved")),p(`/content-manager/collectionType/${r}/${x.id}${f}`),Promise.resolve(x)}catch(x){return K(x),M.current("didNotCreateEntry",{error:x,trackerProperty:H}),g(ae("resolved")),Promise.reject(x)}},[W,K,p,r,g,f,l,d,c,U]),w=(0,t.useCallback)(async()=>{try{M.current("willCheckDraftRelations");const j=ce(`collection-types/${r}/${s}/actions/numberOfDraftRelations`);g(ae("draft-relation-check-pending"));const H=await L.get(j);return M.current("didCheckDraftRelations"),g(ae("resolved")),H.data.data}catch(j){return K(j),g(ae("resolved")),Promise.reject(j)}},[K,s,r,g,L]),Z=(0,t.useCallback)(async()=>{try{M.current("willPublishEntry");const j=ce(`collection-types/${r}/${s}/actions/publish`);g(ae("publish-pending"));const{data:H}=await U(j);return M.current("didPublishEntry"),g(Le(W(H))),g(ae("resolved")),l({type:"success",message:{id:R("success.record.publish")}}),Promise.resolve(H)}catch(j){return K(j),g(ae("resolved")),Promise.reject(j)}},[W,K,s,r,g,l,U]),z=(0,t.useCallback)(async(j,H)=>{const se=ce(`collection-types/${r}/${s}`);try{M.current("willEditEntry",H),g(ae("submit-pending"));const{data:x}=await V(se,j);return M.current("didEditEntry",{trackerProperty:H}),l({type:"success",message:{id:R("success.record.save")}}),c.invalidateQueries(["relation"]),g(Le(W(x))),g(ae("resolved")),Promise.resolve(x)}catch(x){return M.current("didNotEditEntry",{error:x,trackerProperty:H}),K(x),g(ae("resolved")),Promise.reject(x)}},[W,K,r,s,g,l,c,V]),O=(0,t.useCallback)(async()=>{const j=ce(`collection-types/${r}/${s}/actions/unpublish`);g(ae("unpublish-pending"));try{M.current("willUnpublishEntry");const{data:H}=await U(j);return M.current("didUnpublishEntry"),l({type:"success",message:{id:R("success.record.unpublish")}}),g(Le(W(H))),g(ae("resolved")),Promise.resolve(H)}catch(H){return g(ae("resolved")),K(H),Promise.reject(H)}},[W,K,s,r,g,l,U]);return o({componentsDataStructure:h,contentTypeDataStructure:y,data:C,isCreatingEntry:_,isLoadingForData:D,onDelete:N,onDeleteSucceeded:ee,onPost:k,onPublish:Z,onDraftRelationCheck:w,onPut:z,onUnpublish:O,status:E,redirectionLink:v})};yn.defaultProps={id:null,origin:null},yn.propTypes={allLayoutData:n().exact({components:n().object.isRequired,contentType:n().shape({apiID:n().string.isRequired,attributes:n().object.isRequired,info:n().object.isRequired,isDisplayed:n().bool.isRequired,kind:n().string.isRequired,layouts:n().object.isRequired,metadatas:n().object.isRequired,options:n().object.isRequired,pluginOptions:n().object,settings:n().object.isRequired,uid:n().string.isRequired}).isRequired}).isRequired,children:n().func.isRequired,id:n().string,origin:n().string,slug:n().string.isRequired};var yl=(0,t.memo)(yn,we()),bl=T(86834),he=T.n(bl),El=T(89793),Xe=T.n(El),Cl=T(3040),J=T.n(Cl),Rl=T(56236),vl=T.n(Rl),Tl=T(10268),Qo=T.n(Tl),Ml=T(86349),kl=T.n(Ml),Dl=T(33494),Il=T.n(Dl),wl=T(36866),xl=T.n(wl),bn=T(99526),Ko=(e,o,r,s)=>{const a=e.slice();return a.splice(o,1),a.splice(r,0,s),a},Ll=T(77236),Fl=T.n(Ll);const Sl=({browserState:e,serverState:o},r,s)=>{const a=o,c=e,l=(u,p)=>S()(u,["attributes",p,"type"],""),d=(u,p)=>S()(u,["attributes",...p],""),m=(u,p,f,g)=>Object.keys(u).reduce((h,y)=>{const C=g?`${g}.${y}`:y,D=l(f,y),E=S()(u,y),v=S()(p,y),P=d(f,[y,"component"]),A=d(f,[y,"repeatable"]);let M;switch(D){case"json":M=JSON.parse(E);break;case"time":{M=E,E&&E.split(":").length<3&&(M=`${E}:00`);break}case"media":d(f,[y,"multiple"])===!0?M=E?E.filter(I=>!(I instanceof File)):null:M=S()(E,0)instanceof File?null:S()(E,"id",null);break;case"component":A?M=E&&E.map((I,L)=>m(I,(v??[])[L],s[P],`${C}.${L}`)):M=E&&m(E,v,s[P],C);break;case"relation":{const I=Wo(a,c)(C).join(".");let L=S()(a,I,[]);const V=E.reduce((B,_,$,G)=>{const W=L.find(N=>N.id===_.id),K=G[$+1];if(!W||W.__temp_key__!==_.__temp_key__){const N=K?{before:K.id}:{end:!0};return[...B,{id:_.id,position:N}]}return B},[]);M={disconnect:L.reduce((B,_)=>E.find($=>$.id===_.id)?B:[...B,{id:_.id}],[]),connect:V.reverse()};break}case"dynamiczone":M=E.map((I,L)=>m(I,(v??[])[L],s[I.__component],`${C}.${L}`));break;default:M=Pl(E,"id")}return h[y]=M,h},{});return m(e,o,r,"")},Pl=(e,o)=>Fl()(e)?e.map(r=>r[o]?r[o]:r):yo()(e)?e[o]:e;var Al=Sl,Ol=T(51355),$l=T.n(Ol),ql=T(95919),Bl=T.n(ql),Nl=T(78746),We=T.n(Nl),me=T(5173);function Je(e){return["integer","biginteger","decimal","float","number"].includes(e)}me.kM(me.nK,"defined",function(){return this.test("defined",b.translatedErrors.required,e=>e!==void 0)}),me.kM(me.IX,"notEmptyMin",function(e){return this.test("notEmptyMin",b.translatedErrors.min,o=>he()(o)?!0:o.length>=e)}),me.kM(me.Z_,"isInferior",function(e,o){return this.test("isInferior",e,function(r){return!r||Number.isNaN(We()(r))?!0:We()(o)>=We()(r)})}),me.kM(me.Z_,"isSuperior",function(e,o){return this.test("isSuperior",e,function(r){return!r||Number.isNaN(We()(r))?!0:We()(r)>=We()(o)})});const jl=e=>S()(e,["attributes"],{}),En=(e,{components:o},r={isCreatingEntry:!0,isDraft:!0,isFromComponent:!1})=>{const s=jl(e);return me.Ry().shape(Object.keys(s).reduce((a,c)=>{const l=s[c];if(l.type!=="relation"&&l.type!=="component"&&l.type!=="dynamiczone"){const d=Vl(l.type,l,r);a[c]=d}if(l.type==="relation"&&(a[c]=["oneWay","oneToOne","manyToOne","oneToManyMorph","oneToOneMorph"].includes(l.relationType)?me.Ry().nullable():me.IX().nullable()),l.type==="component"){const d=En(o[l.component],{components:o},{...r,isFromComponent:!0});if(l.repeatable===!0){const{min:u,max:p,required:f}=l;let g=me.Vo(h=>{let y=me.IX().of(d);return u?f?y=y.min(u,b.translatedErrors.min):f!==!0&&he()(h)?y=y.nullable():y=y.min(u,b.translatedErrors.min):f&&!r.isDraft&&(y=y.min(1,b.translatedErrors.required)),p&&(y=y.max(p,b.translatedErrors.max)),y});return a[c]=g,a}const m=me.Vo(u=>u!==void 0?l.required===!0&&!r.isDraft?d.defined():d.nullable():l.required===!0?me.Ry().defined():me.Ry().nullable());return a[c]=m,a}if(l.type==="dynamiczone"){let d=me.IX().of(me.Vo(({__component:p})=>En(o[p],{components:o},{...r,isFromComponent:!0})));const{max:m,min:u}=l;u?l.required?d=d.test("min",b.translatedErrors.min,p=>r.isCreatingEntry?p&&p.length>=u:p===void 0?!0:p!==null&&p.length>=u).test("required",b.translatedErrors.required,p=>r.isCreatingEntry?p!==null||p!==void 0:p===void 0?!0:p!==null):d=d.notEmptyMin(u):l.required&&!r.isDraft&&(d=d.test("required",b.translatedErrors.required,p=>r.isCreatingEntry?p!==null||p!==void 0:p===void 0?!0:p!==null)),m&&(d=d.max(m,b.translatedErrors.max)),a[c]=d}return a},{}))},Vl=(e,o,r)=>{let s=me.nK();return["string","uid","text","richtext","email","password","enumeration"].includes(e)&&(s=me.Z_()),e==="json"&&(s=me.nK(b.translatedErrors.json).test("isJSON",b.translatedErrors.json,a=>{try{return JSON.parse(a),!0}catch{return!1}}).nullable().test("required",b.translatedErrors.required,a=>!(o.required&&!a.length))),e==="email"&&(s=s.email(b.translatedErrors.email)),["number","integer","float","decimal"].includes(e)&&(s=me.Rx().transform(a=>Bl()(a)?void 0:a).typeError()),e==="biginteger"&&(s=me.Z_().matches(/^-?\d*$/)),["date","datetime"].includes(e)&&(s=me.hT()),Object.keys(o).forEach(a=>{const c=o[a];if(c||!$l()(c)&&Number.isInteger(Math.floor(c))||c===0)switch(a){case"required":{r.isDraft||(e==="password"&&r.isCreatingEntry&&(s=s.required(b.translatedErrors.required)),e!=="password"&&(r.isCreatingEntry?s=s.required(b.translatedErrors.required):s=s.test("required",b.translatedErrors.required,l=>l===void 0&&!r.isFromComponent?!0:Je(e)?l===0?!0:!!l:e==="boolean"?l!=null:e==="date"||e==="datetime"?typeof l=="string"?!he()(l):!he()(l?.toString()):!he()(l))));break}case"max":{e==="biginteger"?s=s.isInferior(b.translatedErrors.max,c):s=s.max(c,b.translatedErrors.max);break}case"maxLength":s=s.max(c,b.translatedErrors.maxLength);break;case"min":{e==="biginteger"?s=s.isSuperior(b.translatedErrors.min,c):s=s.min(c,b.translatedErrors.min);break}case"minLength":{r.isDraft||(s=s.min(c,b.translatedErrors.minLength));break}case"regex":s=s.matches(new RegExp(c),{message:b.translatedErrors.regex,excludeEmptyString:!o.required});break;case"lowercase":["text","textarea","email","string"].includes(e)&&(s=s.strict().lowercase());break;case"uppercase":["text","textarea","email","string"].includes(e)&&(s=s.strict().uppercase());break;case"positive":Je(e)&&(s=s.positive());break;case"negative":Je(e)&&(s=s.negative());break;default:s=s.nullable()}}),s};var Yo=En;const De=(e,o=()=>!1)=>{const r=s=>Object.entries(s).reduce((a,[c,l])=>{if(o(l)&&(a=[...a,c]),l.type==="component"){const d=e[l.component].attributes,u=r(d).map(p=>`${c}.${p}`);a=[...a,u]}else if(l.type==="dynamiczone"){const m=l.components.flatMap(u=>r({[u]:{type:"component",component:u}}).map(p=>p.split(`${u}.`)[1])).filter(u=>Boolean(u)).map(u=>`${c}.${u}`);a=[...a,m]}return a.flat()},[]);return r},zl=(e,o)=>{const r=(s,a,c,l)=>s&&(c===l.length-1&&e===a?(J()(s,a,o),s):(Array.isArray(s[a])&&s[a].forEach(d=>{l.slice(c+1).reduce(r,d)}),s[a]));return r},Wl={componentsDataStructure:{},contentTypeDataStructure:{},formErrors:{},initialData:{},modifiedData:null,shouldCheckErrors:!1,modifiedDZName:null,publishConfirmation:{show:!1,draftCount:0}};var Ul=(e,o)=>(0,ut.default)(e,r=>{switch(o.type){case"ADD_NON_REPEATABLE_COMPONENT_TO_FIELD":{const{componentLayoutData:s,allComponents:a}=o,c=De(a,u=>u.type==="relation")(s.attributes),l={...e.componentsDataStructure[s.uid]},d=De(a,u=>u.type==="component"&&u.repeatable)(s.attributes),m=c.reduce((u,p)=>{const[f]=p.split(".");return d.includes(f)||J()(u,p,[]),u},l);J()(r,["modifiedData",...o.keys],m);break}case"ADD_COMPONENT_TO_DYNAMIC_ZONE":case"ADD_REPEATABLE_COMPONENT_TO_FIELD":{const{keys:s,allComponents:a,componentLayoutData:c,shouldCheckErrors:l}=o;l&&(r.shouldCheckErrors=!e.shouldCheckErrors),o.type==="ADD_COMPONENT_TO_DYNAMIC_ZONE"&&(r.modifiedDZName=s[0]);const d=S()(e,["modifiedData",...s],[]),m=o.type==="ADD_COMPONENT_TO_DYNAMIC_ZONE"?{...e.componentsDataStructure[c.uid],__component:c.uid,__temp_key__:ct(d)+1}:{...e.componentsDataStructure[c.uid],__temp_key__:ct(d)+1},u=De(a,y=>y.type==="relation")(c.attributes),p=De(a,y=>y.type==="component"&&y.repeatable)(c.attributes),f=De(a,y=>y.type==="component"&&!y.repeatable)(c.attributes),g=u.reduce((y,C)=>{const[D]=C.split(".");return!p.includes(D)&&!f.includes(D)&&J()(y,C,[]),y},m),h=Array.isArray(d)?[...d,g]:[g];J()(r,["modifiedData",...s],h);break}case"LOAD_RELATION":{const{initialDataPath:s,modifiedDataPath:a,value:c}=o,l=S()(e,s),d=S()(e,a),m=c.filter(f=>!l.some(g=>g.id===f.id)),u=(0,bn.zJ)(null,d[0]?.__temp_key__,m.length),p=m.map((f,g)=>({...f,__temp_key__:u[g]}));J()(r,s,Qo()([...p,...l],"id")),J()(r,a,Qo()([...p,...d],"id"));break}case"CONNECT_RELATION":{const s=["modifiedData",...o.keys],{value:a,toOneRelation:c}=o;if(c)J()(r,s,[a]);else{const l=S()(e,s),[d]=(0,bn.zJ)(l.at(-1)?.__temp_key__,null,1),m=[...l,{...a,__temp_key__:d}];J()(r,s,m)}break}case"DISCONNECT_RELATION":{const s=["modifiedData",...o.keys],{id:a}=o,l=S()(e,[...s]).filter(d=>d.id!==a);J()(r,s,l);break}case"MOVE_COMPONENT_FIELD":case"REORDER_RELATION":{const{oldIndex:s,newIndex:a,keys:c}=o,l=["modifiedData",...c],d=S()(e,[...l]),m=d[s],u=[...d];if(o.type==="REORDER_RELATION"){const[p]=(0,bn.zJ)(d[a-1]?.__temp_key__,d[a]?.__temp_key__,1);u.splice(s,1),u.splice(a,0,{...m,__temp_key__:p})}else u.splice(s,1),u.splice(a,0,m);J()(r,l,u);break}case"INIT_FORM":{const{initialValues:s,relationalFieldPaths:a=[],componentPaths:c=[],repeatableComponentPaths:l=[],dynamicZonePaths:d=[],setModifiedDataOnly:m}=o,u=Te()(s),p=a.map(f=>f.split(".")).reduce((f,g)=>{const[h]=g,y=Il()(f[h]||[]);if(y.reduce((C,D)=>(xl()(S()(D,["__temp_key__"]))&&J()(D,["__temp_key__"],ct(C)+1),C),y),e.modifiedData&&S()(e.modifiedData,h)){const C=Te()(S()(e.modifiedData,h));J()(f,h,kl()(C,S()(s,h)))}else if(l.includes(h)||d.includes(h)||c.includes(h)){const C=zl(g.slice(-1)[0],[]);g.reduce(C,f)}else J()(f,g,[]);return f},u);m||(r.initialData=p),r.modifiedData=p,r.formErrors={},r.modifiedDZName=null,r.shouldCheckErrors=!1;break}case"MOVE_COMPONENT_UP":case"MOVE_COMPONENT_DOWN":{const{currentIndex:s,dynamicZoneName:a,shouldCheckErrors:c}=o;c&&(r.shouldCheckErrors=!e.shouldCheckErrors);const l=e.modifiedData[a],d=o.type==="MOVE_COMPONENT_UP"?s-1:s+1,m=e.modifiedData[a][s],u=Ko(l,s,d,m);J()(r,["modifiedData",o.dynamicZoneName],u);break}case"MOVE_FIELD":{const s=S()(e,["modifiedData",...o.keys],[]).slice(),a=S()(e,["modifiedData",...o.keys,o.dragIndex]),c=Ko(s,o.dragIndex,o.overIndex,a);J()(r,["modifiedData",...o.keys],c);break}case"ON_CHANGE":{const[s]=o.keys;if(o.shouldSetInitialValue&&J()(r,["initialData",...o.keys],o.value),o.keys.length===2&&S()(e,["modifiedData",s])===null){J()(r,["modifiedData",s],{[o.keys[1]]:o.value});break}J()(r,["modifiedData",...o.keys],o.value);break}case"REMOVE_COMPONENT_FROM_DYNAMIC_ZONE":{o.shouldCheckErrors&&(r.shouldCheckErrors=!e.shouldCheckErrors),r.modifiedData[o.dynamicZoneName].splice(o.index,1);break}case"REMOVE_COMPONENT_FROM_FIELD":{const s=["modifiedData",...o.keys];J()(r,s,null);break}case"REMOVE_PASSWORD_FIELD":{vl()(r,["modifiedData",...o.keys]);break}case"REMOVE_REPEATABLE_FIELD":{const s=o.keys.length-1,a=["modifiedData",...$t()(o.keys,s)];Object.keys(e.formErrors).length>0&&(r.shouldCheckErrors=!e.shouldCheckErrors);const l=S()(e,a).slice();l.splice(parseInt(o.keys[s],10),1),J()(r,a,l);break}case"SET_DEFAULT_DATA_STRUCTURES":{r.componentsDataStructure=o.componentsDataStructure,r.contentTypeDataStructure=o.contentTypeDataStructure;break}case"SET_FORM_ERRORS":{r.modifiedDZName=null,r.formErrors=o.errors;break}case"TRIGGER_FORM_VALIDATION":{Object.keys(e.formErrors).length>0&&(r.shouldCheckErrors=!e.shouldCheckErrors);break}case"SET_PUBLISH_CONFIRMATION":{r.publishConfirmation={...o.publishConfirmation};break}case"RESET_PUBLISH_CONFIRMATION":{r.publishConfirmation={...e.publishConfirmation,show:!1};break}default:return r}});const Cn=({allLayoutData:e,allowedActions:{canRead:o,canUpdate:r},children:s,componentsDataStructure:a,contentTypeDataStructure:c,createActionAllowedFields:l,from:d,initialValues:m,isCreatingEntry:u,isLoadingForData:p,isSingleType:f,onPost:g,onPublish:h,onDraftRelationCheck:y,onPut:C,onUnpublish:D,readActionAllowedFields:E,redirectToPreviousPage:v,slug:P,status:A,updateActionAllowedFields:M})=>{const[I,L]=(0,t.useReducer)(Ul,Wl),{formErrors:V,initialData:U,modifiedData:B,modifiedDZName:_,shouldCheckErrors:$,publishConfirmation:G}=I,{setModifiedDataOnly:W}=(0,le.useSelector)(hn),K=(0,le.useDispatch)(),N=(0,b.useNotification)(),{lockApp:ee,unlockApp:k}=(0,b.useOverlayBlocker)(),w=S()(e,["contentType"],{}),Z=(0,t.useMemo)(()=>S()(w,["options","draftAndPublish"],!1),[w]),z=(0,t.useMemo)(()=>Z&&!U.publishedAt,[Z,U.publishedAt]),{trackUsage:O}=(0,b.useTracking)(),{formatMessage:j}=(0,Q.useIntl)(),H=(0,t.useRef)(O),se=(0,t.useMemo)(()=>p||u?!1:o===!1&&r===!1,[p,u,o,r]);(0,t.useEffect)(()=>{A==="resolved"?k():ee()},[ee,k,A]),(0,t.useEffect)(()=>{p||Re()},[$]),(0,t.useEffect)(()=>{const X=Object.keys(V);if(X.length>0){const Y=X[0],oe=document.getElementById(Y);oe&&oe.focus()}},[V]),(0,t.useEffect)(()=>{se&&N({type:"info",message:{id:R("permissions.not-allowed.update")}})},[se,N]),(0,t.useEffect)(()=>{L({type:"SET_DEFAULT_DATA_STRUCTURES",componentsDataStructure:a,contentTypeDataStructure:c})},[a,c]);const{components:x}=e,ne=To(m);(0,t.useEffect)(()=>{if(m&&w?.attributes&&!Xe()(ne,m)){const X=De(x,ge=>ge.type==="relation")(w.attributes),Y=De(x,ge=>ge.type==="component"&&!ge.repeatable)(w.attributes),oe=De(x,ge=>ge.type==="component"&&ge.repeatable)(w.attributes),be=De(x,ge=>ge.type==="dynamiczone")(w.attributes);L({type:"INIT_FORM",initialValues:m,relationalFieldPaths:X,componentPaths:Y,repeatableComponentPaths:oe,dynamicZonePaths:be,setModifiedDataOnly:W}),W&&K(hl())}},[m,w,x,W,K,ne]);const ue=(0,t.useCallback)(X=>(Y,oe,be,ge=!1)=>{H.current("didAddComponentToDynamicZone"),L({type:X,keys:Y.split("."),componentLayoutData:oe,allComponents:be,shouldCheckErrors:ge})},[]),fe=ue("ADD_COMPONENT_TO_DYNAMIC_ZONE"),Fe=(0,t.useCallback)((X,Y,oe)=>{L({type:"ADD_NON_REPEATABLE_COMPONENT_TO_FIELD",keys:X.split("."),componentLayoutData:Y,allComponents:oe})},[]),nt=(0,t.useCallback)(({name:X,value:Y,toOneRelation:oe})=>{L({type:"CONNECT_RELATION",keys:X.split("."),value:Y,toOneRelation:oe})},[]),ot=(0,t.useCallback)(({target:{initialDataPath:X,modifiedDataPath:Y,value:oe}})=>{L({type:"LOAD_RELATION",modifiedDataPath:Y,initialDataPath:X,value:oe})},[]),rt=ue("ADD_REPEATABLE_COMPONENT_TO_FIELD"),Me=(0,t.useMemo)(()=>{const X={isCreatingEntry:u,isDraft:z,isFromComponent:!1};return Yo(w,{components:e.components||{}},X)},[e.components,w,u,z]),Re=(0,t.useCallback)(async(X={})=>{let Y={};const oe=Te()(B);he()(oe)||J()(oe,X.path,X.value);try{await Me.validate(oe,{abortEarly:!1})}catch(be){Y=(0,b.getYupInnerErrors)(be),_&&(Y=Object.keys(Y).reduce((ge,Gn)=>(Gn.split(".")[0]!==_&&(ge[Gn]=Y[Gn]),ge),{}))}L({type:"SET_FORM_ERRORS",errors:Y})},[_,B,Me]),Ge=(0,t.useCallback)(({target:{name:X,value:Y,type:oe}},be=!1)=>{let ge=Y;if(["text","textarea","string","email","uid","select","select-one","number"].includes(oe)&&!Y&&Y!==0&&(ge=null),oe==="password"&&!Y){L({type:"REMOVE_PASSWORD_FIELD",keys:X.split(".")});return}L({type:"ON_CHANGE",keys:X.split("."),value:ge,shouldSetInitialValue:be})},[]),Ne=(0,t.useCallback)((X,Y)=>Al({browserState:X,serverState:Y},w,e.components),[e.components,w]),de=(0,t.useMemo)(()=>Z?z?{status:"draft"}:{}:{},[Z,z]),ie=(0,t.useCallback)(async X=>(X.preventDefault(),L({type:"RESET_PUBLISH_CONFIRMATION"})),[]),pe=(0,t.useCallback)(async X=>{X.preventDefault();let Y={};try{await Me.validate(B,{abortEarly:!1})}catch(oe){Y=(0,b.getYupInnerErrors)(oe)}try{if(he()(Y)){const oe=Ne(B,U);u?await g(oe,de):await C(oe,de)}}catch(oe){Y={...Y,...(0,b.getAPIInnerErrors)(oe,{getTrad:R})}}L({type:"SET_FORM_ERRORS",errors:Y})},[Ne,u,B,U,g,C,de,Me]),Se=(0,t.useCallback)(async()=>{const X=Yo(w,{components:S()(e,"components",{})},{isCreatingEntry:u,isDraft:!1,isFromComponent:!1}),Y=await y();if(!G.show&&Y>0){L({type:"SET_PUBLISH_CONFIRMATION",publishConfirmation:{show:!0,draftCount:Y}});return}L({type:"RESET_PUBLISH_CONFIRMATION"});let oe={};try{await X.validate(B,{abortEarly:!1})}catch(be){oe=(0,b.getYupInnerErrors)(be)}try{he()(oe)&&await h()}catch(be){oe={...oe,...(0,b.getAPIInnerErrors)(be,{getTrad:R})}}L({type:"SET_FORM_ERRORS",errors:oe})},[e,w,u,B,G.show,h,y]),Pe=(0,t.useCallback)(X=>{const Y=Object.keys(V).some(be=>be.split(".")[0]===X);return!he()(V)&&Y},[V]),Pu=(0,t.useCallback)((X,Y)=>{H.current("changeComponentsOrder"),L({type:"MOVE_COMPONENT_DOWN",dynamicZoneName:X,currentIndex:Y,shouldCheckErrors:Pe(X)})},[Pe]),Au=(0,t.useCallback)((X,Y)=>{H.current("changeComponentsOrder"),L({type:"MOVE_COMPONENT_UP",dynamicZoneName:X,currentIndex:Y,shouldCheckErrors:Pe(X)})},[Pe]),Ou=(0,t.useCallback)(({name:X,newIndex:Y,currentIndex:oe})=>{L({type:"MOVE_COMPONENT_FIELD",keys:X.split("."),newIndex:Y,oldIndex:oe})},[]),$u=(0,t.useCallback)(({name:X,id:Y})=>{L({type:"DISCONNECT_RELATION",keys:X.split("."),id:Y})},[]),qu=(0,t.useCallback)(({name:X,oldIndex:Y,newIndex:oe})=>{L({type:"REORDER_RELATION",keys:X.split("."),oldIndex:Y,newIndex:oe})},[]),Bu=(0,t.useCallback)((X,Y)=>{H.current("removeComponentFromDynamicZone"),L({type:"REMOVE_COMPONENT_FROM_DYNAMIC_ZONE",dynamicZoneName:X,index:Y,shouldCheckErrors:Pe(X)})},[Pe]),Nu=(0,t.useCallback)((X,Y)=>{L({type:"REMOVE_COMPONENT_FROM_FIELD",keys:X.split("."),componentUid:Y})},[]),ju=(0,t.useCallback)((X,Y)=>{L({type:"REMOVE_REPEATABLE_FIELD",keys:X.split("."),componentUid:Y})},[]),Vu=(0,t.useCallback)(()=>{L({type:"TRIGGER_FORM_VALIDATION"})},[]);return se?t.createElement(re.Redirect,{to:d}):B?t.createElement(b.ContentManagerEditViewDataManagerContext.Provider,{value:{addComponentToDynamicZone:fe,addNonRepeatableComponentToField:Fe,addRepeatableComponentToField:rt,allLayoutData:e,checkFormErrors:Re,createActionAllowedFields:l,formErrors:V,hasDraftAndPublish:Z,initialData:U,isCreatingEntry:u,isSingleType:f,shouldNotRunValidations:z,status:A,layout:w,modifiedData:B,moveComponentField:Ou,moveComponentDown:Pu,moveComponentUp:Au,onChange:Ge,onPublish:Se,onUnpublish:D,readActionAllowedFields:E,redirectToPreviousPage:v,removeComponentFromDynamicZone:Bu,removeComponentFromField:Nu,removeRepeatableField:ju,relationConnect:nt,relationDisconnect:$u,relationLoad:ot,relationReorder:qu,slug:P,triggerFormValidation:Vu,updateActionAllowedFields:M,onPublishPromptDismissal:ie,publishConfirmation:G}},p||!u&&!U.id?t.createElement(i.Main,{"aria-busy":"true"},t.createElement(b.LoadingIndicatorPage,null)):t.createElement(t.Fragment,null,t.createElement(re.Prompt,{when:!Xe()(B,U),message:j({id:"global.prompt.unsaved"})}),t.createElement("form",{noValidate:!0,onSubmit:pe},s))):null};Cn.defaultProps={from:"/",initialValues:null,redirectToPreviousPage(){}},Cn.propTypes={allLayoutData:n().object.isRequired,allowedActions:n().object.isRequired,children:n().node.isRequired,componentsDataStructure:n().object.isRequired,contentTypeDataStructure:n().object.isRequired,createActionAllowedFields:n().array.isRequired,from:n().string,initialValues:n().object,isCreatingEntry:n().bool.isRequired,isLoadingForData:n().bool.isRequired,isSingleType:n().bool.isRequired,onPost:n().func.isRequired,onPublish:n().func.isRequired,onDraftRelationCheck:n().func.isRequired,onPut:n().func.isRequired,onUnpublish:n().func.isRequired,readActionAllowedFields:n().array.isRequired,redirectToPreviousPage:n().func,slug:n().string.isRequired,status:n().string.isRequired,updateActionAllowedFields:n().array.isRequired};var _l=Cn,Be=e=>ce(`single-types/${e}`),Hl=e=>Object.values(e||{}).reduce((o,r)=>Object.assign(o,r),{}),Xo=(e={})=>{const{plugins:o,_q:r,...s}={...e,...Hl(e.plugins)};return r&&J()(s,"_q",encodeURIComponent(r)),`${(0,ke.stringify)(s,{encode:!1,addQueryPrefix:!0})}`};const Jo=({allLayoutData:e,children:o,slug:r})=>{const s=(0,qe.useQueryClient)(),{trackUsage:a}=(0,b.useTracking)(),{push:c}=(0,re.useHistory)(),{setCurrentStep:l}=(0,b.useGuidedTour)(),d=(0,t.useRef)(a),[m,u]=(0,t.useState)(!0),[{query:p,rawQuery:f}]=(0,b.useQueryParams)(),g=Xo(p),h=(0,b.useNotification)(),y=(0,le.useDispatch)(),{formatAPIError:C}=(0,b.useAPIErrorHandler)(R),D=(0,b.useFetchClient)(),{post:E,put:v,del:P}=D,{componentsDataStructure:A,contentTypeDataStructure:M,data:I,isLoading:L,status:V}=(0,le.useSelector)(hn),U=(0,t.useCallback)(k=>{const w=io(k,e.contentType,e.components);return(0,b.formatContentTypeData)(w,e.contentType,e.components)},[e]);(0,t.useEffect)(()=>()=>{y(Go())},[y]),(0,t.useEffect)(()=>{const k=Object.keys(e.components).reduce((z,O)=>{const j=it(S()(e,["components",O,"attributes"],{}),e.components);return z[O]=(0,b.formatContentTypeData)(j,e.components[O],e.components),z},{}),w=it(e.contentType.attributes,e.components),Z=(0,b.formatContentTypeData)(w,e.contentType,e.components);y(Zo(k,Z))},[e,y]),(0,t.useEffect)(()=>{const w=Ce.Z.CancelToken.source();return(async z=>{y(Et()),u(!0);try{const{data:O}=await D.get(Be(`${r}${g}`),{cancelToken:z.token});y(gn(U(O))),u(!1)}catch(O){if(Ce.Z.isCancel(O))return;const j=S()(O,"response.status",null);j===404&&y(fn(f,!0)),j===403&&(h({type:"info",message:{id:R("permissions.not-allowed.update")}}),c("/"))}})(w),()=>w.cancel("Operation canceled by the user.")},[D,U,c,r,y,g,f,h]);const B=(0,t.useCallback)(k=>{h({type:"warning",message:C(k)})},[h,C]),_=(0,t.useCallback)(async k=>{try{d.current("willDeleteEntry",k);const{data:w}=await P(Be(`${r}${g}`));return h({type:"success",message:{id:R("success.record.delete")}}),d.current("didDeleteEntry",k),Promise.resolve(w)}catch(w){return d.current("didNotDeleteEntry",{error:w,...k}),B(w),Promise.reject(w)}},[P,r,B,h,g]),$=(0,t.useCallback)(()=>{u(!0),y(fn(f,!0))},[y,f]),G=(0,t.useCallback)(async(k,w)=>{const Z=Be(`${r}${f}`);try{y(ae("submit-pending"));const{data:z}=await v(Z,k);return d.current("didCreateEntry",w),h({type:"success",message:{id:R("success.record.save")}}),l("contentManager.success"),s.invalidateQueries(["relation"]),y(Le(U(z))),u(!1),y(ae("resolved")),Promise.resolve(z)}catch(z){return d.current("didNotCreateEntry",{error:z,trackerProperty:w}),B(z),y(ae("resolved")),Promise.reject(z)}},[v,U,B,r,y,f,h,l,s]),W=(0,t.useCallback)(async()=>{try{d.current("willCheckDraftRelations");const k=Be(`${r}/actions/numberOfDraftRelations`);y(ae("draft-relation-check-pending"));const w=await D.get(k);return d.current("didCheckDraftRelations"),y(ae("resolved")),w.data.data}catch(k){return B(k),y(ae("resolved")),Promise.reject(k)}},[D,B,r,y]),K=(0,t.useCallback)(async()=>{try{d.current("willPublishEntry");const k=Be(`${r}/actions/publish${g}`);y(ae("publish-pending"));const{data:w}=await E(k);return d.current("didPublishEntry"),h({type:"success",message:{id:R("success.record.publish")}}),y(Le(U(w))),y(ae("resolved")),Promise.resolve(w)}catch(k){return B(k),y(ae("resolved")),Promise.reject(k)}},[E,U,B,r,g,y,h]),N=(0,t.useCallback)(async(k,w)=>{const Z=Be(`${r}${f}`);try{d.current("willEditEntry",w),y(ae("submit-pending"));const{data:z}=await v(Z,k);return h({type:"success",message:{id:R("success.record.save")}}),d.current("didEditEntry",{trackerProperty:w}),s.invalidateQueries(["relation"]),y(Le(U(z))),y(ae("resolved")),Promise.resolve(z)}catch(z){return B(z),d.current("didNotEditEntry",{error:z,trackerProperty:w}),y(ae("resolved")),Promise.reject(z)}},[v,U,B,r,y,f,h,s]),ee=(0,t.useCallback)(async()=>{const k=Be(`${r}/actions/unpublish${g}`);y(ae("unpublish-pending"));try{d.current("willUnpublishEntry");const{data:w}=await E(k);d.current("didUnpublishEntry"),h({type:"success",message:{id:R("success.record.unpublish")}}),y(Le(U(w))),y(ae("resolved"))}catch(w){y(ae("resolved")),B(w)}},[E,U,h,B,r,y,g]);return o({componentsDataStructure:A,contentTypeDataStructure:M,data:I,isCreatingEntry:m,isLoadingForData:L,onDelete:_,onDeleteSucceeded:$,onPost:G,onDraftRelationCheck:W,onPublish:K,onPut:N,onUnpublish:ee,redirectionLink:"/",status:V})};Jo.propTypes={allLayoutData:n().shape({components:n().object.isRequired,contentType:n().object.isRequired}).isRequired,children:n().func.isRequired,slug:n().string.isRequired};var Gl=(0,t.memo)(Jo);function Zl(e,o){return r=>{const s=o();return t.createElement(e,{...r,...s})}}var Ql=Zl;function Kl(){const{initialData:e,hasDraftAndPublish:o}=(0,b.useCMEditViewDataManager)(),r=e.publishedAt!==void 0&&e.publishedAt!==null;return{hasDraftAndPublish:o,isPublished:r}}var Yl=Kl;const Xl=(0,q.default)(F.Dot)`
961
961
  width: ${(0,b.pxToRem)(6)};
962
962
  height: ${(0,b.pxToRem)(6)};
963
963
  * {
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[320],{10329:function(e){e.exports=JSON.parse(`{"Analytics":"Analytics","Auth.components.Oops.text":"Your account has been suspended.","Auth.components.Oops.text.admin":"If this is a mistake, please contact your administrator.","Auth.components.Oops.title":"Oops...","Auth.form.active.label":"Active","Auth.form.button.forgot-password":"Send Email","Auth.form.button.go-home":"GO BACK HOME","Auth.form.button.login":"Login","Auth.form.button.login.providers.error":"We cannot connect you through the selected provider.","Auth.form.button.login.strapi":"Log in via Strapi","Auth.form.button.password-recovery":"Password Recovery","Auth.form.button.register":"Let's start","Auth.form.confirmPassword.label":"Confirm Password","Auth.form.currentPassword.label":"Current Password","Auth.form.email.label":"Email","Auth.form.email.placeholder":"e.g. kai@doe.com","Auth.form.error.blocked":"Your account has been blocked by the administrator.","Auth.form.error.code.provide":"Incorrect code provided.","Auth.form.error.confirmed":"Your account email is not confirmed.","Auth.form.error.email.invalid":"This email is invalid.","Auth.form.error.email.provide":"Please provide your username or your email.","Auth.form.error.email.taken":"Email is already taken.","Auth.form.error.invalid":"Identifier or password invalid.","Auth.form.error.params.provide":"Incorrect params provided.","Auth.form.error.password.format":"Your password cannot contain the symbol \`$\` more than three times.","Auth.form.error.password.local":"This user never set a local password, please login via the provider used during account creation.","Auth.form.error.password.matching":"Passwords do not match.","Auth.form.error.password.provide":"Please provide your password.","Auth.form.error.ratelimit":"Too many attempts, please try again in a minute.","Auth.form.error.user.not-exist":"This email does not exist.","Auth.form.error.username.taken":"Username is already taken.","Auth.form.firstname.label":"First name","Auth.form.firstname.placeholder":"e.g. Kai","Auth.form.forgot-password.email.label":"Enter your email","Auth.form.forgot-password.email.label.success":"Email successfully sent to","Auth.form.lastname.label":"Last name","Auth.form.lastname.placeholder":"e.g. Doe","Auth.form.password.hide-password":"Hide password","Auth.form.password.hint":"Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number","Auth.form.password.show-password":"Show password","Auth.form.register.news.label":"Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).","Auth.form.register.subtitle":"Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.","Auth.form.rememberMe.label":"Remember me","Auth.form.username.label":"Username","Auth.form.username.placeholder":"e.g. Kai_Doe","Auth.form.welcome.subtitle":"Log in to your Strapi account","Auth.form.welcome.title":"Welcome to Strapi!","Auth.link.forgot-password":"Forgot your password?","Auth.link.ready":"Ready to sign in?","Auth.link.signin":"Sign in","Auth.link.signin.account":"Already have an account?","Auth.login.sso.divider":"Or login with","Auth.login.sso.loading":"Loading providers...","Auth.login.sso.subtitle":"Login to your account via SSO","Auth.privacy-policy-agreement.policy":"privacy policy","Auth.privacy-policy-agreement.terms":"terms","Auth.reset-password.title":"Reset password","Content Manager":"Content Manager","Content Type Builder":"Content-Types Builder","Documentation":"Documentation","Email":"Email","Files Upload":"Files Upload","HomePage.helmet.title":"Homepage","HomePage.roadmap":"See our roadmap","HomePage.welcome.congrats":"Congrats!","HomePage.welcome.congrats.content":"You are logged in as the first administrator. To discover the powerful features provided by Strapi,","HomePage.welcome.congrats.content.bold":"we recommend you to create your first Collection-Type.","Media Library":"Media Library","New entry":"New entry","Password":"Password","Provider":"Provider","ResetPasswordToken":"Reset Password Token","Role":"Role","Roles & Permissions":"Roles & Permissions","Roles.ListPage.notification.delete-all-not-allowed":"Some roles could not be deleted since they are associated with users","Roles.ListPage.notification.delete-not-allowed":"A role cannot be deleted if associated with users","Roles.RoleRow.select-all":"Select {name} for bulk actions","Roles.RoleRow.user-count":"{number, plural, =0 {# user} one {# user} other {# users}}","Roles.components.List.empty.withSearch":"There is no role corresponding to the search ({search})...","Settings.PageTitle":"Settings - {name}","Settings.apiTokens.addFirstToken":"Add your first API Token","Settings.apiTokens.addNewToken":"Add new API Token","Settings.apiTokens.copy.editMessage":"For security reasons, you can only see your token once.","Settings.apiTokens.copy.editTitle":"This token isn\u2019t accessible anymore.","Settings.apiTokens.copy.lastWarning":"Make sure to copy this token, you won\u2019t be able to see it again!","Settings.apiTokens.create":"Create new API Token","Settings.apiTokens.description":"List of generated tokens to consume the API","Settings.apiTokens.emptyStateLayout":"You don\u2019t have any content yet...","Settings.apiTokens.ListView.headers.name":"Name","Settings.apiTokens.ListView.headers.description":"Description","Settings.apiTokens.ListView.headers.type":"Token type","Settings.apiTokens.ListView.headers.createdAt":"Created at","Settings.apiTokens.ListView.headers.lastUsedAt":"Last used","Settings.apiTokens.notification.copied":"Token copied to clipboard.","Settings.apiTokens.title":"API Tokens","Settings.apiTokens.types.full-access":"Full access","Settings.apiTokens.types.read-only":"Read-only","Settings.apiTokens.duration.7-days":"7 days","Settings.apiTokens.duration.30-days":"30 days","Settings.apiTokens.duration.90-days":"90 days","Settings.apiTokens.duration.unlimited":"Unlimited","Settings.apiTokens.form.duration":"Token duration","Settings.apiTokens.form.type":"Token type","Settings.apiTokens.duration.expiration-date":"Expiration date","Settings.apiTokens.createPage.permissions.title":"Permissions","Settings.apiTokens.createPage.permissions.description":"Only actions bound by a route are listed below.","Settings.apiTokens.RegenerateDialog.title":"Regenerate token","Settings.apiTokens.popUpWarning.message":"Are you sure you want to regenerate this token?","Settings.apiTokens.Button.cancel":"Cancel","Settings.apiTokens.Button.regenerate":"Regenerate","Settings.transferTokens.title":"Transfer Tokens","Settings.transferTokens.description":"List of generated transfer tokens","Settings.transferTokens.create":"Create new Transfer Token","Settings.transferTokens.addFirstToken":"Add your first Transfer Token","Settings.transferTokens.addNewToken":"Add new Transfer Token","Settings.transferTokens.emptyStateLayout":"You don\u2019t have any content yet...","Settings.transferTokens.ListView.headers.name":"Name","Settings.transferTokens.ListView.headers.description":"Description","Settings.transferTokens.ListView.headers.type":"Token type","Settings.transferTokens.ListView.headers.createdAt":"Created at","Settings.transferTokens.ListView.headers.lastUsedAt":"Last used","Settings.application.description":"Administration panel\u2019s global information","Settings.application.edition-title":"current plan","Settings.application.get-help":"Get help","Settings.application.ee-or-ce":"{communityEdition, select, true {Community Edition} other {Enterprise Edition}}","Settings.application.link-pricing":"See all pricing plans","Settings.application.link-upgrade":"Upgrade your admin panel","Settings.application.node-version":"node version","Settings.application.strapi-version":"strapi version","Settings.application.strapiVersion":"strapi version","Settings.application.title":"Overview","Settings.application.customization":"Customization","Settings.application.customization.size-details":"Max dimension: {dimension}\xD7{dimension}, Max file size: {size}KB","Settings.application.customization.carousel.menu-logo.title":"Menu logo","Settings.application.customization.carousel.auth-logo.title":"Auth logo","Settings.application.customization.carousel.change-action":"Change logo","Settings.application.customization.carousel.reset-action":"Reset logo","Settings.application.customization.carousel-slide.label":"Logo slide","Settings.application.customization.menu-logo.carousel-hint":"Replace the logo in the main navigation","Settings.application.customization.auth-logo.carousel-hint":"Replace the logo in the authentication pages","Settings.application.customization.modal.cancel":"Cancel","Settings.application.customization.modal.upload":"Upload logo","Settings.application.customization.modal.tab.label":"How do you want to upload your assets?","Settings.application.customization.modal.upload.from-computer":"From computer","Settings.application.customization.modal.upload.file-validation":"Max dimension: {dimension}x{dimension}, Max size: {size}KB","Settings.application.customization.modal.upload.error-format":"Wrong format uploaded (accepted formats only: jpeg, jpg, png, svg).","Settings.application.customization.modal.upload.error-size":"The file uploaded is too large (max dimension: {dimension}x{dimension}, max file size: {size}KB)","Settings.application.customization.modal.upload.error-network":"Network error","Settings.application.customization.modal.upload.cta.browse":"Browse files","Settings.application.customization.modal.upload.drag-drop":"Drag and Drop here or","Settings.application.customization.modal.upload.from-url":"From url","Settings.application.customization.modal.upload.from-url.input-label":"URL","Settings.application.customization.modal.upload.next":"Next","Settings.application.customization.modal.pending":"Pending logo","Settings.application.customization.modal.pending.choose-another":"Choose another logo","Settings.application.customization.modal.pending.title":"Logo ready to upload","Settings.application.customization.modal.pending.subtitle":"Manage the chosen logo before uploading it","Settings.application.customization.modal.pending.upload":"Upload logo","Settings.application.customization.modal.pending.card-badge":"image","Settings.error":"Error","Settings.global":"Global Settings","Settings.permissions":"Administration panel","Settings.permissions.category":"Permissions settings for the {category}","Settings.permissions.category.plugins":"Permissions settings for the {category} plugin","Settings.permissions.conditions.anytime":"Anytime","Settings.permissions.conditions.apply":"Apply","Settings.permissions.conditions.can":"Can","Settings.permissions.conditions.conditions":"Conditions","Settings.permissions.conditions.links":"Links","Settings.permissions.conditions.no-actions":"You first need to select actions (create, read, update, ...) before defining conditions on them.","Settings.permissions.conditions.none-selected":"Anytime","Settings.permissions.conditions.or":"OR","Settings.permissions.conditions.when":"When","Settings.permissions.select-all-by-permission":"Select all {label} permissions","Settings.permissions.select-by-permission":"Select {label} permission","Settings.permissions.users.create":"Invite new user","Settings.permissions.users.email":"Email","Settings.permissions.users.firstname":"Firstname","Settings.permissions.users.lastname":"Lastname","Settings.permissions.users.user-status":"User status","Settings.permissions.users.roles":"Roles","Settings.permissions.users.username":"Username","Settings.permissions.users.active":"Active","Settings.permissions.users.inactive":"Inactive","Settings.permissions.users.form.sso":"Connect with SSO","Settings.permissions.users.form.sso.description":"When enabled (ON), users can login via SSO","Settings.permissions.users.listview.header.subtitle":"All the users who have access to the Strapi admin panel","Settings.permissions.users.tabs.label":"Tabs Permissions","Settings.permissions.users.strapi-super-admin":"Super Admin","Settings.permissions.users.strapi-editor":"Editor","Settings.permissions.users.strapi-author":"Author","Settings.permissions.auditLogs.action":"Action","Settings.permissions.auditLogs.date":"Date","Settings.permissions.auditLogs.user":"User","Settings.permissions.auditLogs.user.fullname":"{firstname} {lastname}","Settings.permissions.auditLogs.userId":"User ID","Settings.permissions.auditLogs.details":"Log Details","Settings.permissions.auditLogs.payload":"Payload","Settings.permissions.auditLogs.listview.header.subtitle":"Logs of all the activities that happened in your environment","Settings.permissions.auditLogs.entry.create":"Create entry{model, select, undefined {} other { ({model})}}","Settings.permissions.auditLogs.entry.update":"Update entry{model, select, undefined {} other { ({model})}}","Settings.permissions.auditLogs.entry.delete":"Delete entry{model, select, undefined {} other { ({model})}}","Settings.permissions.auditLogs.entry.publish":"Publish entry {model, select, undefined {} other {({model})}}","Settings.permissions.auditLogs.entry.unpublish":"Unpublish entry{model, select, undefined {} other { ({model})}}","Settings.permissions.auditLogs.media.create":"Create media","Settings.permissions.auditLogs.media.update":"Update media","Settings.permissions.auditLogs.media.delete":"Delete media","Settings.permissions.auditLogs.user.create":"Create user","Settings.permissions.auditLogs.user.update":"Update user","Settings.permissions.auditLogs.user.delete":"Delete user","Settings.permissions.auditLogs.admin.auth.success":"Admin login","Settings.permissions.auditLogs.admin.logout":"Admin logout","Settings.permissions.auditLogs.content-type.create":"Create content type","Settings.permissions.auditLogs.content-type.update":"Update content type","Settings.permissions.auditLogs.content-type.delete":"Delete content type","Settings.permissions.auditLogs.component.create":"Create component","Settings.permissions.auditLogs.component.update":"Update component","Settings.permissions.auditLogs.component.delete":"Delete component","Settings.permissions.auditLogs.role.create":"Create role","Settings.permissions.auditLogs.role.update":"Update role","Settings.permissions.auditLogs.role.delete":"Delete role","Settings.permissions.auditLogs.permission.create":"Create permission","Settings.permissions.auditLogs.permission.update":"Update permission","Settings.permissions.auditLogs.permission.delete":"Delete permission","Settings.permissions.auditLogs.filters.combobox.aria-label":"Search and select an option to filter","Settings.profile.form.notify.data.loaded":"Your profile data has been loaded","Settings.profile.form.section.experience.clear.select":"Clear the interface language selected","Settings.profile.form.section.experience.here":"here","Settings.profile.form.section.experience.interfaceLanguage":"Interface language","Settings.profile.form.section.experience.interfaceLanguage.hint":"This will only display your own interface in the chosen language.","Settings.profile.form.section.experience.interfaceLanguageHelp":"Preference changes will apply only to you. More information is available {here}.","Settings.profile.form.section.experience.mode.label":"Interface mode","Settings.profile.form.section.experience.mode.hint":"Displays your interface in the chosen mode.","Settings.profile.form.section.experience.mode.option-label":"{name} mode","light":"Light","dark":"Dark","Settings.profile.form.section.experience.title":"Experience","Settings.profile.form.section.helmet.title":"User profile","Settings.profile.form.section.profile.page.title":"Profile page","Settings.roles.create.description":"Define the rights given to the role","Settings.roles.create.title":"Create a role","Settings.roles.created":"Role created","Settings.roles.edit.title":"Edit a role","Settings.roles.form.button.users-with-role":"{number, plural, =0 {# users} one {# user} other {# users}} with this role","Settings.roles.form.created":"Created","Settings.roles.form.description":"Name and description of the role","Settings.roles.form.permission.property-label":"{label} permissions","Settings.roles.form.permissions.attributesPermissions":"Fields permissions","Settings.roles.form.permissions.create":"Create","Settings.roles.form.permissions.delete":"Delete","Settings.roles.form.permissions.publish":"Publish","Settings.roles.form.permissions.read":"Read","Settings.roles.form.permissions.update":"Update","Settings.roles.list.button.add":"Add new role","Settings.roles.list.description":"List of roles","Settings.roles.title.singular":"role","Settings.sso.description":"Configure the settings for the Single Sign-On feature.","Settings.sso.form.defaultRole.description":"It will attach the new authenticated user to the selected role","Settings.sso.form.defaultRole.description-not-allowed":"You need to have the permission to read the admin roles","Settings.sso.form.defaultRole.label":"Default role","Settings.sso.form.registration.description":"Create new user on SSO login if no account exists","Settings.sso.form.registration.label":"Auto-registration","Settings.sso.title":"Single Sign-On","Settings.webhooks.create":"Create a webhook","Settings.webhooks.create.header":"Create new header","Settings.webhooks.created":"Webhook created","Settings.webhooks.event.publish-tooltip":"This event only exists for contents with Draft/Publish system enabled","Settings.webhooks.events.create":"Create","Settings.webhooks.events.update":"Update","Settings.webhooks.form.events":"Events","Settings.webhooks.form.headers":"Headers","Settings.webhooks.form.url":"Url","Settings.webhooks.headers.remove":"Remove header row {number}","Settings.webhooks.key":"Key","Settings.webhooks.list.button.add":"Create new webhook","Settings.webhooks.list.description":"Get POST changes notifications","Settings.webhooks.list.empty.description":"No webhooks found","Settings.webhooks.list.empty.link":"See our documentation","Settings.webhooks.list.empty.title":"There are no webhooks yet","Settings.webhooks.list.th.actions":"actions","Settings.webhooks.list.th.status":"status","Settings.webhooks.singular":"webhook","Settings.webhooks.title":"Webhooks","Settings.webhooks.to.delete":"{webhooksToDeleteLength, plural, one {# asset} other {# assets}} selected","Settings.webhooks.trigger":"Trigger","Settings.webhooks.trigger.cancel":"Cancel trigger","Settings.webhooks.trigger.pending":"Pending\u2026","Settings.webhooks.trigger.save":"Please save to trigger","Settings.webhooks.trigger.success":"Success!","Settings.webhooks.trigger.success.label":"Trigger succeeded","Settings.webhooks.trigger.test":"Test-trigger","Settings.webhooks.trigger.title":"Save before Trigger","Settings.webhooks.value":"Value","Usecase.back-end":"Back-end developer","Usecase.button.skip":"Skip this question","Usecase.content-creator":"Content Creator","Usecase.front-end":"Front-end developer","Usecase.full-stack":"Full-stack developer","Usecase.input.work-type":"What type of work do you do?","Usecase.notification.success.project-created":"Project has been successfully created","Usecase.other":"Other","Usecase.title":"Tell us a bit more about yourself","Username":"Username","Users":"Users","Users & Permissions":"Users & Permissions","Users.components.List.empty":"There is no users...","Users.components.List.empty.withFilters":"There is no users with the applied filters...","Users.components.List.empty.withSearch":"There is no users corresponding to the search ({search})...","admin.pages.MarketPlacePage.helmet":"Marketplace - Plugins","admin.pages.MarketPlacePage.offline.title":"You are offline","admin.pages.MarketPlacePage.offline.subtitle":"You need to be connected to the Internet to access Strapi Market.","admin.pages.MarketPlacePage.plugins":"Plugins","admin.pages.MarketPlacePage.plugin.copy":"Copy install command","admin.pages.MarketPlacePage.plugin.copy.success":"Install command ready to be pasted in your terminal","admin.pages.MarketPlacePage.plugin.info":"Learn more","admin.pages.MarketPlacePage.plugin.info.label":"Learn more about {pluginName}","admin.pages.MarketPlacePage.plugin.info.text":"More","admin.pages.MarketPlacePage.plugin.installed":"Installed","admin.pages.MarketPlacePage.plugin.tooltip.madeByStrapi":"Made by Strapi","admin.pages.MarketPlacePage.plugin.tooltip.verified":"Plugin verified by Strapi","admin.pages.MarketPlacePage.plugin.version":"Update your Strapi version: \\"{strapiAppVersion}\\" to: \\"{versionRange}\\"","admin.pages.MarketPlacePage.plugin.version.null":"Unable to verify compatibility with your Strapi version: \\"{strapiAppVersion}\\"","admin.pages.MarketPlacePage.plugin.githubStars":"This plugin was starred {starsCount} on GitHub","admin.pages.MarketPlacePage.plugin.downloads":"This plugin has {downloadsCount} weekly downloads","admin.pages.MarketPlacePage.providers":"Providers","admin.pages.MarketPlacePage.provider.githubStars":"This provider was starred {starsCount} on GitHub","admin.pages.MarketPlacePage.provider.downloads":"This provider has {downloadsCount} weekly downloads","admin.pages.MarketPlacePage.search.clear":"Clear the search","admin.pages.MarketPlacePage.search.empty":"No result for \\"{target}\\"","admin.pages.MarketPlacePage.search.placeholder":"Search","admin.pages.MarketPlacePage.submit.plugin.link":"Submit plugin","admin.pages.MarketPlacePage.submit.provider.link":"Submit provider","admin.pages.MarketPlacePage.subtitle":"Get more out of Strapi","admin.pages.MarketPlacePage.tab-group.label":"Plugins and Providers for Strapi","admin.pages.MarketPlacePage.missingPlugin.title":"Missing a plugin?","admin.pages.MarketPlacePage.missingPlugin.description":"Tell us what plugin you are looking for and we'll let our community plugin developers know in case they are in search for inspiration!","admin.pages.MarketPlacePage.sort.alphabetical":"Alphabetical order","admin.pages.MarketPlacePage.sort.newest":"Newest","admin.pages.MarketPlacePage.sort.alphabetical.selected":"Sort by alphabetical order","admin.pages.MarketPlacePage.sort.newest.selected":"Sort by newest","admin.pages.MarketPlacePage.sort.githubStars":"Number of GitHub stars","admin.pages.MarketPlacePage.sort.githubStars.selected":"Sort by GitHub stars","admin.pages.MarketPlacePage.sort.npmDownloads":"Number of downloads","admin.pages.MarketPlacePage.sort.npmDownloads.selected":"Sort by npm downloads","admin.pages.MarketPlacePage.filters.collections":"Collections","admin.pages.MarketPlacePage.filters.collectionsSelected":"{count, plural, =0 {No collections} one {# collection} other {# collections}} selected","admin.pages.MarketPlacePage.filters.categories":"Categories","admin.pages.MarketPlacePage.filters.categoriesSelected":"{count, plural, =0 {No categories} one {# category} other {# categories}} selected","anErrorOccurred":"Woops! Something went wrong. Please, try again.","app.component.CopyToClipboard.label":"Copy to clipboard","app.component.search.label":"Search for {target}","app.component.table.duplicate":"Duplicate {target}","app.component.table.edit":"Edit {target}","app.component.table.view":"{target} details","app.component.table.select.one-entry":"Select {target}","app.components.BlockLink.blog":"Blog","app.components.BlockLink.blog.content":"Read the latest news about Strapi and the ecosystem.","app.components.BlockLink.code":"Code examples","app.components.BlockLink.code.content":"Learn by testing real projects developed the community.","app.components.BlockLink.documentation.content":"Discover the essential concepts, guides and instructions.","app.components.BlockLink.tutorial":"Tutorials","app.components.BlockLink.tutorial.content":"Follow step-by-step instructions to use and customize Strapi.","app.components.BlockLink.cloud":"Strapi Cloud","app.components.BlockLink.cloud.content":"A fully composable, and collaborative platform to boost your team velocity.","app.components.Button.cancel":"Cancel","app.components.Button.confirm":"Confirm","app.components.Button.reset":"Reset","app.components.ComingSoonPage.comingSoon":"Coming soon","app.components.ConfirmDialog.title":"Confirmation","app.components.DownloadInfo.download":"Download in progress...","app.components.DownloadInfo.text":"This could take a minute. Thanks for your patience.","app.components.EmptyAttributes.title":"There are no fields yet","app.components.EmptyStateLayout.content-document":"No content found","app.components.EmptyStateLayout.content-permissions":"You don't have the permissions to access that content","app.components.GuidedTour.CM.create.content":"<p>Create and manage all the content here in the Content Manager.</p><p>Ex: Taking the Blog website example further, one can write an Article, save and publish it as they like.</p><p>\u{1F4A1} Quick tip - Don't forget to hit publish on the content you create.</p>","app.components.GuidedTour.CM.create.title":"\u26A1\uFE0F Create content","app.components.GuidedTour.CM.success.content":"<p>Awesome, one last step to go!</p><b>\u{1F680} See content in action</b>","app.components.GuidedTour.CM.success.cta.title":"Test the API","app.components.GuidedTour.CM.success.title":"Step 2: Completed \u2705","app.components.GuidedTour.CTB.create.content":"<p>Collection types help you manage several entries, Single types are suitable to manage only one entry.</p> <p>Ex: For a Blog website, Articles would be a Collection type whereas a Homepage would be a Single type.</p>","app.components.GuidedTour.CTB.create.cta.title":"Build a Collection type","app.components.GuidedTour.CTB.create.title":"\u{1F9E0} Create a first Collection type","app.components.GuidedTour.CTB.success.content":"<p>Good going!</p><b>\u26A1\uFE0F What would you like to share with the world?</b>","app.components.GuidedTour.CTB.success.title":"Step 1: Completed \u2705","app.components.GuidedTour.apiTokens.create.content":"<p>Generate an authentication token here and retrieve the content you just created.</p>","app.components.GuidedTour.apiTokens.create.cta.title":"Generate an API Token","app.components.GuidedTour.apiTokens.create.title":"\u{1F680} See content in action","app.components.GuidedTour.apiTokens.success.content":"<p>See content in action by making an HTTP request:</p><ul><li><p>To this URL: <light>https://'<'YOUR_DOMAIN'>'/api/'<'YOUR_CT'>'</light></p></li><li><p>With the header: <light>Authorization: bearer '<'YOUR_API_TOKEN'>'</light></p></li></ul><p>For more ways to interact with content, see the <documentationLink>documentation</documentationLink>.</p>","app.components.GuidedTour.apiTokens.success.cta.title":"Go back to homepage","app.components.GuidedTour.apiTokens.success.title":"Step 3: Completed \u2705","app.components.GuidedTour.create-content":"Create content","app.components.GuidedTour.home.CM.title":"\u26A1\uFE0F What would you like to share with the world?","app.components.GuidedTour.home.CTB.cta.title":"Go to the Content type Builder","app.components.GuidedTour.home.CTB.title":"\u{1F9E0} Build the content structure","app.components.GuidedTour.home.apiTokens.cta.title":"Test the API","app.components.GuidedTour.skip":"Skip the tour","app.components.GuidedTour.title":"3 steps to get started","app.components.HomePage.button.blog":"See more on the blog","app.components.HomePage.community":"Join the community","app.components.HomePage.community.content":"Discuss with team members, contributors and developers on different channels.","app.components.HomePage.create":"Create your first Content type","app.components.HomePage.roadmap":"See our roadmap","app.components.HomePage.welcome":"Welcome on board \u{1F44B}","app.components.HomePage.welcome.again":"Welcome \u{1F44B}","app.components.HomePage.welcomeBlock.content":"Congrats! You are logged as the first administrator. To discover the powerful features provided by Strapi, we recommend you to create your first Content type!","app.components.HomePage.welcomeBlock.content.again":"We hope you are making progress on your project! Feel free to read the latest news about Strapi. We are giving our best to improve the product based on your feedback.","app.components.HomePage.welcomeBlock.content.issues":"issues.","app.components.HomePage.welcomeBlock.content.raise":" or raise ","app.components.ImgPreview.hint":"Drag & drop your file into this area or {browse} for a file to upload","app.components.ImgPreview.hint.browse":"browse","app.components.InputFile.newFile":"Add new file","app.components.InputFileDetails.open":"Open in a new tab","app.components.InputFileDetails.originalName":"Original name:","app.components.InputFileDetails.remove":"Remove this file","app.components.InputFileDetails.size":"Size:","app.components.InstallPluginPage.Download.description":"It might take a few seconds to download and install the plugin.","app.components.InstallPluginPage.Download.title":"Downloading...","app.components.InstallPluginPage.description":"Extend your app effortlessly.","app.components.LeftMenu.collapse":"Collapse the navbar","app.components.LeftMenu.expand":"Expand the navbar","app.components.LeftMenu.general":"General","app.components.LeftMenu.logout":"Logout","app.components.LeftMenu.logo.alt":"Application logo","app.components.LeftMenu.plugins":"Plugins","app.components.LeftMenu.navbrand.title":"Strapi Dashboard","app.components.LeftMenu.navbrand.workplace":"Workplace","app.components.LeftMenuFooter.help":"Help","app.components.LeftMenuFooter.poweredBy":"Powered by ","app.components.LeftMenuLinkContainer.collectionTypes":"Collection Types","app.components.LeftMenuLinkContainer.configuration":"Configurations","app.components.LeftMenuLinkContainer.general":"General","app.components.LeftMenuLinkContainer.noPluginsInstalled":"No plugins installed yet","app.components.LeftMenuLinkContainer.plugins":"Plugins","app.components.LeftMenuLinkContainer.singleTypes":"Single Types","app.components.ListPluginsPage.deletePlugin.description":"It might take a few seconds to uninstall the plugin.","app.components.ListPluginsPage.deletePlugin.title":"Uninstalling","app.components.ListPluginsPage.description":"List of the installed plugins in the project.","app.components.ListPluginsPage.helmet.title":"List plugins","app.components.Logout.logout":"Logout","app.components.Logout.profile":"Profile","app.components.MarketplaceBanner":"Discover plugins built by the community, and many more awesome things to kickstart your project, on Strapi Awesome.","app.components.MarketplaceBanner.image.alt":"a strapi rocket logo","app.components.MarketplaceBanner.link":"Check it out now","app.components.NotFoundPage.back":"Back to homepage","app.components.NotFoundPage.description":"Not Found","app.components.Official":"Official","app.components.Onboarding.help.button":"Help button","app.components.Onboarding.label.completed":"% completed","app.components.Onboarding.title":"Get started videos","app.components.Onboarding.link.more-videos":"Watch more videos","app.components.Onboarding.link.build-content":"Build a content architecture","app.components.Onboarding.link.manage-content":"Add & manage content","app.components.Onboarding.link.manage-media":"Manage media","app.components.PluginCard.Button.label.download":"Download","app.components.PluginCard.Button.label.install":"Already installed","app.components.PluginCard.PopUpWarning.install.impossible.autoReload.needed":"The autoReload feature needs to be enabled. Please start your app with \`yarn develop\`.","app.components.PluginCard.PopUpWarning.install.impossible.confirm":"I understand!","app.components.PluginCard.PopUpWarning.install.impossible.environment":"For security reasons, a plugin can only be downloaded in a development environment.","app.components.PluginCard.PopUpWarning.install.impossible.title":"Downloading is impossible","app.components.PluginCard.compatible":"Compatible with your app","app.components.PluginCard.compatibleCommunity":"Compatible with the community","app.components.PluginCard.more-details":"More details","app.components.ToggleCheckbox.off-label":"False","app.components.ToggleCheckbox.on-label":"True","app.components.UpgradePlanModal.button":"Learn more","app.components.UpgradePlanModal.limit-reached":"You have reached the limit","app.components.UpgradePlanModal.text-ce":"Community Edition","app.components.UpgradePlanModal.text-ee":"Enterprise Edition","app.components.UpgradePlanModal.text-power":"Unlock the full power of Strapi by upgrading your plan to the Enterprise Edition","app.components.UpgradePlanModal.text-strapi":"of Strapi by upgrading your plan to the","app.components.Users.MagicLink.connect":"Copy and share this link to give access to this user","app.components.Users.MagicLink.connect.sso":"Send this link to the user, the first login can be made via a SSO provider","app.components.Users.ModalCreateBody.block-title.details":"User details","app.components.Users.ModalCreateBody.block-title.roles":"User's roles","app.components.Users.ModalCreateBody.block-title.roles.description":"A user can have one or several roles","app.components.Users.SortPicker.button-label":"Sort by","app.components.Users.SortPicker.sortby.email_asc":"Email (A to Z)","app.components.Users.SortPicker.sortby.email_desc":"Email (Z to A)","app.components.Users.SortPicker.sortby.firstname_asc":"First name (A to Z)","app.components.Users.SortPicker.sortby.firstname_desc":"First name (Z to A)","app.components.Users.SortPicker.sortby.lastname_asc":"Last name (A to Z)","app.components.Users.SortPicker.sortby.lastname_desc":"Last name (Z to A)","app.components.Users.SortPicker.sortby.username_asc":"Username (A to Z)","app.components.Users.SortPicker.sortby.username_desc":"Username (Z to A)","app.components.listPlugins.button":"Add New Plugin","app.components.listPlugins.title.none":"No plugins installed","app.components.listPluginsPage.deletePlugin.error":"An error occurred while uninstalling the plugin","app.containers.App.notification.error.init":"An error occurred while requesting the API","app.containers.AuthPage.ForgotPasswordSuccess.text.contact-admin":"If you do not receive this link, please contact your administrator.","app.containers.AuthPage.ForgotPasswordSuccess.text.email":"It can take a few minutes to receive your password recovery link.","app.containers.AuthPage.ForgotPasswordSuccess.title":"Email sent","app.containers.Users.EditPage.form.active.label":"Active","app.containers.Users.EditPage.header.label":"Edit {name}","app.containers.Users.EditPage.header.label-loading":"Edit user","app.containers.Users.EditPage.roles-bloc-title":"Attributed roles","app.containers.Users.ModalForm.footer.button-success":"Invite user","app.links.configure-view":"Configure the view","app.page.not.found":"Oops! We can't seem to find the page you're looking for...","app.static.links.cheatsheet":"CheatSheet","app.utils.SelectOption.defaultMessage":" ","app.utils.add-filter":"Add filter","app.utils.close-label":"Close","app.utils.defaultMessage":" ","app.utils.duplicate":"Duplicate","app.utils.edit":"Edit","app.utils.delete":"Delete","app.utils.errors.file-too-big.message":"The file is too big","app.utils.filter-value":"Filter value","app.utils.filters":"Filters","app.utils.notify.data-loaded":"The {target} has loaded","app.utils.placeholder.defaultMessage":" ","app.utils.publish":"Publish","app.utils.select-all":"Select all","app.utils.select-field":"Select field","app.utils.select-filter":"Select filter","app.utils.unpublish":"Unpublish","clearLabel":"Clear","selectButtonTitle":"Select","coming.soon":"This content is currently under construction and will be back in a few weeks!","component.Input.error.validation.integer":"Value must be an integer","components.AutoReloadBlocker.description":"Run Strapi with one of the following commands:","components.AutoReloadBlocker.header":"Reload feature is required for this plugin.","components.ErrorBoundary.title":"Something went wrong...","components.FilterOptions.FILTER_TYPES.$contains":"contains (case sensitive)","components.FilterOptions.FILTER_TYPES.$endsWith":"ends with","components.FilterOptions.FILTER_TYPES.$eq":"is","components.FilterOptions.FILTER_TYPES.$gt":"is greater than","components.FilterOptions.FILTER_TYPES.$gte":"is greater than or equal to","components.FilterOptions.FILTER_TYPES.$lt":"is lower than","components.FilterOptions.FILTER_TYPES.$lte":"is lower than or equal to","components.FilterOptions.FILTER_TYPES.$ne":"is not","components.FilterOptions.FILTER_TYPES.$notContains":"does not contain (case sensitive)","components.FilterOptions.FILTER_TYPES.$notNull":"is not null","components.FilterOptions.FILTER_TYPES.$null":"is null","components.FilterOptions.FILTER_TYPES.$startsWith":"starts with","components.Input.error.attribute.key.taken":"Value already exists","components.Input.error.attribute.sameKeyAndName":"Can't be equal","components.Input.error.attribute.taken":"Field name already exists","components.Input.error.contain.lowercase":"Password must contain at least one lowercase character","components.Input.error.contain.number":"Password must contain at least one number","components.Input.error.contain.uppercase":"Password must contain at least one uppercase character","components.Input.error.contentTypeName.taken":"Name already exists","components.Input.error.custom-error":"{errorMessage} ","components.Input.error.password.noMatch":"Passwords do not match","components.Input.error.validation.email":"Value is an invalid email","components.Input.error.validation.json":"Value is invalid JSON","components.Input.error.validation.lowercase":"The value must be a lowercase string","components.Input.error.validation.max":"Value is larger than the maximum {max}","components.Input.error.validation.maxLength":"Value is longer than the maximum length {max}","components.Input.error.validation.min":"Value is smaller than the minimum {min}","components.Input.error.validation.minLength":"Value is shorter than the minimum length {min}","components.Input.error.validation.minSupMax":"Value cannot be superior","components.Input.error.validation.regex":"Value does not match the required pattern","components.Input.error.validation.required":"Value is required","components.Input.error.validation.unique":"Value is already used","components.InputSelect.option.placeholder":"Choose here","components.ListRow.empty":"There is no data to be shown.","components.NotAllowedInput.text":"No permissions to see this field","components.OverlayBlocker.description":"You're using a feature that needs the server to restart. Please wait until the server is up.","components.OverlayBlocker.description.serverError":"The server should have restarted, please check your logs in the terminal.","components.OverlayBlocker.title":"Waiting for restart...","components.OverlayBlocker.title.serverError":"The restart is taking longer than expected","components.PageFooter.select":"Entries per page","components.ProductionBlocker.description":"For safety purposes we have to disable this plugin in other environments.","components.ProductionBlocker.header":"This plugin is only available in development.","components.Search.placeholder":"Search...","components.TableHeader.sort":"Sort on {label}","components.Wysiwyg.ToggleMode.markdown-mode":"Markdown mode","components.Wysiwyg.ToggleMode.preview-mode":"Preview mode","components.Wysiwyg.collapse":"Collapse","components.Wysiwyg.selectOptions.H1":"Title H1","components.Wysiwyg.selectOptions.H2":"Title H2","components.Wysiwyg.selectOptions.H3":"Title H3","components.Wysiwyg.selectOptions.H4":"Title H4","components.Wysiwyg.selectOptions.H5":"Title H5","components.Wysiwyg.selectOptions.H6":"Title H6","components.Wysiwyg.selectOptions.title":"Add a title","components.WysiwygBottomControls.charactersIndicators":"characters","components.WysiwygBottomControls.fullscreen":"Expand","components.WysiwygBottomControls.uploadFiles":"Drag & drop files, paste from the clipboard or {browse}.","components.WysiwygBottomControls.uploadFiles.browse":"select them","components.pagination.go-to":"Go to page {page}","components.pagination.go-to-next":"Go to next page","components.pagination.go-to-previous":"Go to previous page","components.pagination.remaining-links":"And {number} other links","components.popUpWarning.button.cancel":"No, cancel","components.popUpWarning.button.confirm":"Yes, confirm","components.popUpWarning.message":"Are you sure you want to delete this?","components.popUpWarning.title":"Please confirm","content-manager.App.schemas.data-loaded":"The schemas have been successfully loaded","content-manager.DynamicTable.relation-loaded":"Relations have been loaded","content-manager.DynamicTable.relation-loading":"Relations are loading","content-manager.DynamicTable.relation-more":"This relation contains more entities than displayed","content-manager.EditRelations.title":"Relational data","content-manager.HeaderLayout.button.label-add-entry":"Create new entry","content-manager.api.id":"API ID","content-manager.components.AddFilterCTA.add":"Filters","content-manager.components.AddFilterCTA.hide":"Filters","content-manager.components.DragHandle-label":"Drag","content-manager.components.DraggableAttr.edit":"Click to edit","content-manager.components.DraggableCard.delete.field":"Delete {item}","content-manager.components.DraggableCard.edit.field":"Edit {item}","content-manager.components.DraggableCard.move.field":"Move {item}","content-manager.components.DynamicTable.row-line":"item line {number}","content-manager.components.DynamicZone.ComponentPicker-label":"Pick one component","content-manager.components.DynamicZone.add-component":"Add a component to {componentName}","content-manager.components.DynamicZone.delete-label":"Delete {name}","content-manager.components.DynamicZone.error-message":"The component contains error(s)","content-manager.components.DynamicZone.missing-components":"There {number, plural, =0 {are # missing components} one {is # missing component} other {are # missing components}}","content-manager.components.DynamicZone.move-down-label":"Move component down","content-manager.components.DynamicZone.move-up-label":"Move component up","content-manager.components.DynamicZone.pick-compo":"Pick one component","content-manager.components.DynamicZone.required":"Component is required","content-manager.components.EmptyAttributesBlock.button":"Go to settings page","content-manager.components.EmptyAttributesBlock.description":"You can change your settings","content-manager.components.FieldItem.linkToComponentLayout":"Set the component's layout","content-manager.components.FieldSelect.label":"Add a field","content-manager.components.FilterOptions.button.apply":"Apply","content-manager.components.FiltersPickWrapper.PluginHeader.actions.apply":"Apply","content-manager.components.FiltersPickWrapper.PluginHeader.actions.clearAll":"Clear all","content-manager.components.FiltersPickWrapper.PluginHeader.description":"Set the conditions to apply to filter the entries","content-manager.components.FiltersPickWrapper.PluginHeader.title.filter":"Filters","content-manager.components.FiltersPickWrapper.hide":"Hide","content-manager.components.LeftMenu.Search.label":"Search for a content type","content-manager.components.LeftMenu.collection-types":"Collection Types","content-manager.components.LeftMenu.single-types":"Single Types","content-manager.components.LimitSelect.itemsPerPage":"Items per page","content-manager.components.NotAllowedInput.text":"No permissions to see this field","content-manager.components.RelationInput.icon-button-aria-label":"Drag","content-manager.components.RepeatableComponent.error-message":"The component(s) contain error(s)","content-manager.components.Search.placeholder":"Search for an entry...","content-manager.components.Select.draft-info-title":"State: Draft","content-manager.components.Select.publish-info-title":"State: Published","content-manager.components.SettingsViewWrapper.pluginHeader.description.edit-settings":"Customize how the edit view will look like.","content-manager.components.SettingsViewWrapper.pluginHeader.description.list-settings":"Define the settings of the list view.","content-manager.components.SettingsViewWrapper.pluginHeader.title":"Configure the view - {name}","content-manager.components.TableDelete.delete":"Delete all","content-manager.components.TableDelete.deleteSelected":"Delete selected","content-manager.components.TableDelete.label":"{number, plural, one {# entry} other {# entries}} selected","content-manager.components.TableEmpty.withFilters":"There are no {contentType} with the applied filters...","content-manager.components.TableEmpty.withSearch":"There are no {contentType} corresponding to the search ({search})...","content-manager.components.TableEmpty.withoutFilter":"There are no {contentType}...","content-manager.components.empty-repeatable":"No entry yet. Click on the button below to add one.","content-manager.components.notification.info.maximum-requirement":"You have already reached the maximum number of fields","content-manager.components.notification.info.minimum-requirement":"A field has been added to match the minimum requirement","content-manager.components.repeatable.reorder.error":"An error occurred while reordering your component's field, please try again","content-manager.components.reset-entry":"Reset entry","content-manager.components.uid.apply":"apply","content-manager.components.uid.available":"Available","content-manager.components.uid.regenerate":"Regenerate","content-manager.components.uid.suggested":"suggested","content-manager.components.uid.unavailable":"Unavailable","content-manager.containers.Edit.Link.Layout":"Configure the layout","content-manager.containers.Edit.Link.Model":"Edit the collection-type","content-manager.containers.Edit.addAnItem":"Add an item...","content-manager.containers.Edit.clickToJump":"Click to jump to the entry","content-manager.containers.Edit.delete":"Delete","content-manager.containers.Edit.delete-entry":"Delete this entry","content-manager.containers.Edit.editing":"Editing...","content-manager.containers.Edit.information":"Information","content-manager.containers.Edit.information.by":"By","content-manager.containers.Edit.information.created":"Created","content-manager.containers.Edit.information.draftVersion":"draft version","content-manager.containers.Edit.information.editing":"Editing","content-manager.containers.Edit.information.lastUpdate":"Last update","content-manager.containers.Edit.information.publishedVersion":"published version","content-manager.containers.Edit.pluginHeader.title.new":"Create an entry","content-manager.containers.Edit.reset":"Reset","content-manager.containers.Edit.returnList":"Return to list","content-manager.containers.Edit.seeDetails":"Details","content-manager.containers.Edit.submit":"Save","content-manager.containers.EditSettingsView.modal-form.edit-field":"Edit the field","content-manager.containers.EditView.add.new-entry":"Add an entry","content-manager.containers.EditView.notification.errors":"The form contains some errors","content-manager.containers.Home.introduction":"To edit your entries go to the specific link in the left menu. This plugin doesn't have a proper way to edit settings and it's still under active development.","content-manager.containers.Home.pluginHeaderDescription":"Manage your entries through a powerful and beautiful interface.","content-manager.containers.Home.pluginHeaderTitle":"Content Manager","content-manager.containers.List.draft":"Draft","content-manager.containers.List.errorFetchRecords":"Error","content-manager.containers.List.published":"Published","content-manager.containers.ListPage.displayedFields":"Displayed Fields","content-manager.containers.ListPage.items":"{number, plural, =0 {items} one {item} other {items}}","content-manager.containers.ListPage.table-headers.publishedAt":"State","content-manager.containers.ListSettingsView.modal-form.edit-label":"Edit {fieldName}","content-manager.containers.SettingPage.add.field":"Insert another field","content-manager.containers.SettingPage.attributes":"Attributes fields","content-manager.containers.SettingPage.attributes.description":"Define the order of the attributes","content-manager.containers.SettingPage.editSettings.description":"Drag & drop the fields to build the layout","content-manager.containers.SettingPage.editSettings.entry.title":"Entry title","content-manager.containers.SettingPage.editSettings.entry.title.description":"Set the displayed field of your entry","content-manager.containers.SettingPage.editSettings.relation-field.description":"Set the displayed field in both the edit and list views","content-manager.containers.SettingPage.editSettings.title":"Edit view (settings)","content-manager.containers.SettingPage.layout":"Layout","content-manager.containers.SettingPage.listSettings.description":"Configure the options for this collection type","content-manager.containers.SettingPage.listSettings.title":"List view (settings)","content-manager.containers.SettingPage.pluginHeaderDescription":"Configure the specific settings for this Collection Type","content-manager.containers.SettingPage.settings":"Settings","content-manager.containers.SettingPage.view":"View","content-manager.containers.SettingViewModel.pluginHeader.title":"Content Manager - {name}","content-manager.containers.SettingsPage.Block.contentType.description":"Configure the specific settings","content-manager.containers.SettingsPage.Block.contentType.title":"Collection Types","content-manager.containers.SettingsPage.Block.generalSettings.description":"Configure the default options for your Collection Types","content-manager.containers.SettingsPage.Block.generalSettings.title":"General","content-manager.containers.SettingsPage.pluginHeaderDescription":"Configure the settings for all your Collection types and Groups","content-manager.containers.SettingsView.list.subtitle":"Configure the layout and display of your Collection types and groups","content-manager.containers.SettingsView.list.title":"Display configurations","content-manager.dnd.instructions":"Press spacebar to grab and re-order","content-manager.dnd.reorder":"{item}, moved. New position in list: {position}.","content-manager.dnd.grab-item":"{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.","content-manager.dnd.drop-item":"{item}, dropped. Final position in list: {position}.","content-manager.dnd.cancel-item":"{item}, dropped. Re-order cancelled.","content-manager.edit-settings-view.link-to-ctb.components":"Edit the component","content-manager.edit-settings-view.link-to-ctb.content-types":"Edit the content type","content-manager.emptyAttributes.button":"Go to collection type builder","content-manager.emptyAttributes.description":"Add your first field to your Collection Type","content-manager.emptyAttributes.title":"There are no fields yet","content-manager.error.attribute.key.taken":"This value already exists","content-manager.error.attribute.sameKeyAndName":"Can't be equals","content-manager.error.attribute.taken":"This field name already exists","content-manager.error.contentTypeName.taken":"This name already exists","content-manager.error.model.fetch":"An error occurred during models config fetch.","content-manager.error.record.create":"An error occurred during record creation.","content-manager.error.record.delete":"An error occurred during record deletion.","content-manager.error.record.fetch":"An error occurred during record fetch.","content-manager.error.record.update":"An error occurred during record update.","content-manager.error.records.count":"An error occurred during count records fetch.","content-manager.error.records.fetch":"An error occurred during records fetch.","content-manager.error.schema.generation":"An error occurred during schema generation.","content-manager.error.validation.json":"This is not a JSON","content-manager.error.validation.max":"The value is too high.","content-manager.error.validation.maxLength":"The value is too long.","content-manager.error.validation.min":"The value is too low.","content-manager.error.validation.minLength":"The value is too short.","content-manager.error.validation.minSupMax":"Can't be superior","content-manager.error.validation.regex":"The value does not match the regex.","content-manager.error.validation.required":"This value input is required.","content-manager.form.Input.bulkActions":"Enable bulk actions","content-manager.form.Input.defaultSort":"Default sort attribute","content-manager.form.Input.description":"Description","content-manager.form.Input.description.placeholder":"Display name in the profile","content-manager.form.Input.editable":"Editable field","content-manager.form.Input.filters":"Enable filters","content-manager.form.Input.label":"Label","content-manager.form.Input.label.inputDescription":"This value overrides the label displayed in the table's head","content-manager.form.Input.pageEntries":"Entries per page","content-manager.form.Input.pageEntries.inputDescription":"Note: You can override this value in the Collection Type settings page.","content-manager.form.Input.placeholder":"Placeholder","content-manager.form.Input.placeholder.placeholder":"My awesome value","content-manager.form.Input.search":"Enable search","content-manager.form.Input.search.field":"Enable search on this field","content-manager.form.Input.sort.field":"Enable sort on this field","content-manager.form.Input.sort.order":"Default sort order","content-manager.form.Input.wysiwyg":"Display as WYSIWYG","content-manager.form.Input.hint.text":"{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}","content-manager.form.Input.hint.minMaxDivider":" / ","content-manager.form.Input.hint.character.unit":"{maxValue, plural, one { character} other { characters}}","content-manager.global.displayedFields":"Displayed Fields","content-manager.groups":"Groups","content-manager.groups.numbered":"Groups ({number})","content-manager.header.name":"Content","content-manager.link-to-ctb":"Edit the model","content-manager.models":"Collection Types","content-manager.models.numbered":"Collection Types ({number})","content-manager.notification.error.displayedFields":"You need at least one displayed field","content-manager.notification.error.relationship.fetch":"An error occurred during relationship fetch.","content-manager.notification.info.SettingPage.disableSort":"You need to have one attribute with the sorting allowed","content-manager.notification.info.minimumFields":"You need to have at least one field displayed","content-manager.notification.upload.error":"An error has occurred while uploading your files","content-manager.pageNotFound":"Page not found","content-manager.pages.ListView.header-subtitle":"{number, plural, =0 {# entries} one {# entry} other {# entries}} found","content-manager.pages.NoContentType.button":"Create your first Content-Type","content-manager.pages.NoContentType.text":"You don't have any content yet, we recommend you to create your first Content-Type.","content-manager.permissions.not-allowed.create":"You are not allowed to create a document","content-manager.permissions.not-allowed.update":"You are not allowed to see this document","content-manager.plugin.description.long":"Quick way to see, edit and delete the data in your database.","content-manager.plugin.description.short":"Quick way to see, edit and delete the data in your database.","content-manager.popover.display-relations.label":"Display relations","content-manager.select.currently.selected":"{count} currently selected","content-manager.success.record.delete":"Deleted","content-manager.success.record.publish":"Published","content-manager.success.record.save":"Saved","content-manager.success.record.unpublish":"Unpublished","content-manager.utils.data-loaded":"The {number, plural, =1 {entry has} other {entries have}} successfully been loaded","content-manager.apiError.This attribute must be unique":"{field} must be unique","content-manager.popUpWarning.warning.has-draft-relations.title":"Confirmation","content-manager.popUpWarning.warning.publish-question":"Do you still want to publish?","content-manager.popUpwarning.warning.has-draft-relations.button-confirm":"Yes, publish","content-manager.popUpwarning.warning.has-draft-relations.message":"<b>{count, plural, one { relation is } other { relations are } }</b> not published yet and might lead to unexpected behavior.","content-manager.relation.loadMore":"Load More","content-manager.relation.disconnect":"Remove","content-manager.relation.isLoading":"Relations are loading","content-manager.relation.notAvailable":"No relations available","content-manager.relation.add":"Add relation","content-manager.relation.publicationState.draft":"Draft","content-manager.relation.publicationState.published":"Published","form.button.continue":"Continue","form.button.done":"Done","global.search":"Search","global.actions":"Actions","global.back":"Back","global.cancel":"Cancel","global.change-password":"Change password","global.content-manager":"Content Manager","global.continue":"Continue","global.delete":"Delete","global.delete-target":"Delete {target}","global.description":"Description","global.details":"Details","global.disabled":"Disabled","global.documentation":"Documentation","global.enabled":"Enabled","global.finish":"Finish","global.marketplace":"Marketplace","global.name":"Name","global.none":"None","global.password":"Password","global.plugins":"Plugins","global.plugins.content-manager":"Content Manager","global.plugins.content-manager.description":"Quick way to see, edit and delete the data in your database.","global.plugins.content-type-builder":"Content Type Builder","global.plugins.content-type-builder.description":"Modelize the data structure of your API. Create new fields and relations in just a minute. The files are automatically created and updated in your project.","global.plugins.email":"Email","global.plugins.email.description":"Configure your application to send emails.","global.plugins.upload":"Media Library","global.plugins.upload.description":"Media file management.","global.plugins.graphql":"GraphQL","global.plugins.graphql.description":"Adds GraphQL endpoint with default API methods.","global.plugins.documentation":"Documentation","global.plugins.documentation.description":"Create an OpenAPI Document and visualize your API with SWAGGER UI.","global.plugins.i18n":"Internationalization","global.plugins.i18n.description":"This plugin enables to create, to read and to update content in different languages, both from the Admin Panel and from the API.","global.plugins.sentry":"Sentry","global.plugins.sentry.description":"Send Strapi error events to Sentry.","global.plugins.users-permissions":"Roles & Permissions","global.plugins.users-permissions.description":"Protect your API with a full authentication process based on JWT. This plugin comes also with an ACL strategy that allows you to manage the permissions between the groups of users.","global.profile":"Profile","global.prompt.unsaved":"Are you sure you want to leave this page? All your modifications will be lost","global.reset-password":"Reset password","global.roles":"Roles","global.save":"Save","global.see-more":"See more","global.select":"Select","global.select-all-entries":"Select all entries","global.settings":"Settings","global.type":"Type","global.users":"Users","global.auditLogs":"Audit Logs","notification.contentType.relations.conflict":"Content type has conflicting relations","notification.default.title":"Information:","notification.error":"An error occurred","notification.error.layout":"Couldn't retrieve the layout","notification.form.error.fields":"The form contains some errors","notification.form.success.fields":"Changes saved","notification.link-copied":"Link copied into the clipboard","notification.permission.not-allowed-read":"You are not allowed to see this document","notification.success.delete":"The item has been deleted","notification.success.saved":"Saved","notification.success.title":"Success:","notification.success.tokencreated":"API Token successfully created","notification.success.tokenedited":"API Token successfully edited","notification.success.transfertokencreated":"Transfer Token successfully created","notification.success.transfertokenedited":"Transfer Token successfully edited","notification.error.tokennamenotunique":"Name already assigned to another token","notification.version.update.message":"A new version of Strapi is available!","notification.warning.title":"Warning:","notification.warning.404":"404 - Not found","or":"OR","request.error.model.unknown":"This model doesn't exist","skipToContent":"Skip to content","submit":"Submit"}`)}}]);
package/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="mobile-web-app-capable" content="yes"/><title>Strapi Admin</title><script defer="defer" src="/admin/runtime~main.bb1389c9.js"></script><script defer="defer" src="/admin/main.9c01de7f.js"></script></head><body><div style="min-height:100%" id="app"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="mobile-web-app-capable" content="yes"/><title>Strapi Admin</title><script defer="defer" src="/admin/runtime~main.86cd21d5.js"></script><script defer="defer" src="/admin/main.8009bfe8.js"></script></head><body><div style="min-height:100%" id="app"></div></body></html>
@@ -786,6 +786,7 @@ attempted value: ${T}
786
786
  height: 100vh;
787
787
  `,Ke=({"data-testid":ot,children:hn})=>h().createElement(pt,{justifyContent:"space-around","data-testid":ot},h().createElement(ne.Loader,null,hn));Ke.defaultProps={"data-testid":"loader",children:"Loading content."},Ke.propTypes={"data-testid":$e().string,children:$e().string};var $t=Ke;const un=({permissions:ot,children:hn})=>{const nn=new AbortController,{signal:yt}=nn,{allPermissions:Kt}=ce(),Xt=X(),[An,Fn]=(0,y.useState)({isLoading:!0,canAccess:!1}),bt=(0,y.useRef)(!0);return(0,y.useEffect)(()=>((async()=>{try{Fn({isLoading:!0,canAccess:!1});const Dt=await En(Kt,ot,yt);bt.current&&Fn({isLoading:!1,canAccess:Dt})}catch(Dt){bt.current&&(console.error(Dt),Xt({type:"warning",message:{id:"notification.error"}}),Fn({isLoading:!1}))}})(),()=>{nn.abort()}),[ot]),(0,y.useEffect)(()=>()=>{bt.current=!1},[]),An.isLoading?h().createElement($t,null):An.canAccess?hn:h().createElement(R.Redirect,{to:"/"})};un.defaultProps={permissions:[]},un.propTypes={children:$e().node.isRequired,permissions:$e().array};var gn=un;const Ln=({permissions:ot,children:hn})=>{const{allPermissions:nn}=ce(),yt=X(),[Kt,Xt]=(0,y.useState)({isLoading:!0,canAccess:!1}),An=(0,y.useRef)(!0),Fn=new AbortController,{signal:bt}=Fn;return(0,y.useEffect)(()=>((async()=>{try{Xt({isLoading:!0,canAccess:!1});const Dt=await En(nn,ot,bt);An.current&&Xt({isLoading:!1,canAccess:Dt})}catch(Dt){An.current&&(console.error(Dt),yt({type:"warning",message:{id:"notification.error"}}),Xt({isLoading:!1}))}})(),()=>{Fn.abort()}),[ot]),(0,y.useEffect)(()=>()=>{An.current=!1},[]),Kt.isLoading||!Kt.canAccess?null:hn};Ln.defaultProps={permissions:[]},Ln.propTypes={children:$e().node.isRequired,permissions:$e().array};var Ut=Ln,ue=t(5636),me=t(57269);const Pe=({bodyText:ot,iconRightButton:hn,iconBody:nn,isConfirmButtonLoading:yt,leftButtonText:Kt,onToggleDialog:Xt,onConfirm:An,rightButtonText:Fn,title:bt,variantRightButton:Dt,...or})=>{const{formatMessage:Cr}=(0,ue.useIntl)();return h().createElement(ne.Dialog,{onClose:Xt,title:Cr({id:bt.id,defaultMessage:bt.defaultMessage}),labelledBy:"confirmation",describedBy:"confirm-description",...or},h().createElement(ne.DialogBody,{icon:nn},h().createElement(ne.Stack,{spacing:2},h().createElement(ne.Flex,{justifyContent:"center"},h().createElement(ne.Typography,{variant:"omega",id:"confirm-description"},Cr({id:ot.id,defaultMessage:ot.defaultMessage}))))),h().createElement(ne.DialogFooter,{startAction:h().createElement(ne.Button,{onClick:Xt,variant:"tertiary"},Cr({id:Kt.id,defaultMessage:Kt.defaultMessage})),endAction:h().createElement(ne.Button,{onClick:An,variant:Dt,startIcon:hn,id:"confirm-delete",loading:yt},Cr({id:Fn.id,defaultMessage:Fn.defaultMessage}))}))};Pe.defaultProps={bodyText:{id:"components.popUpWarning.message",defaultMessage:"Are you sure you want to delete this?"},iconBody:h().createElement(me.ExclamationMarkCircle,null),iconRightButton:h().createElement(me.Trash,null),isConfirmButtonLoading:!1,leftButtonText:{id:"app.components.Button.cancel",defaultMessage:"Cancel"},rightButtonText:{id:"app.components.Button.confirm",defaultMessage:"Confirm"},title:{id:"app.components.ConfirmDialog.title",defaultMessage:"Confirmation"},variantRightButton:"danger-light"},Pe.propTypes={bodyText:$e().shape({id:$e().string,defaultMessage:$e().string}),iconBody:$e().node,iconRightButton:$e().node,isConfirmButtonLoading:$e().bool,onConfirm:$e().func.isRequired,onToggleDialog:$e().func.isRequired,leftButtonText:$e().shape({id:$e().string,defaultMessage:$e().string}),rightButtonText:$e().shape({id:$e().string,defaultMessage:$e().string}),title:$e().shape({id:$e().string,defaultMessage:$e().string}),variantRightButton:$e().string};var Ze=Pe;const nt=Fe()(ne.Flex)`
788
788
  margin-right: ${({theme:ot})=>ot.spaces[6]};
789
+
789
790
  svg {
790
791
  width: ${32/16}rem;
791
792
  height: ${32/16}rem;
@@ -0,0 +1,2 @@
1
+ (function(){"use strict";var j={},m={};function e(n){var i=m[n];if(i!==void 0)return i.exports;var t=m[n]={id:n,loaded:!1,exports:{}};return j[n].call(t.exports,t,t.exports,e),t.loaded=!0,t.exports}e.m=j,function(){var n=[];e.O=function(i,t,o,r){if(t){r=r||0;for(var s=n.length;s>0&&n[s-1][2]>r;s--)n[s]=n[s-1];n[s]=[t,o,r];return}for(var a=1/0,s=0;s<n.length;s++){for(var t=n[s][0],o=n[s][1],r=n[s][2],c=!0,l=0;l<t.length;l++)(r&!1||a>=r)&&Object.keys(e.O).every(function(p){return e.O[p](t[l])})?t.splice(l--,1):(c=!1,r<a&&(a=r));if(c){n.splice(s--,1);var f=o();f!==void 0&&(i=f)}}return i}}(),function(){e.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return e.d(i,{a:i}),i}}(),function(){var n=Object.getPrototypeOf?function(t){return Object.getPrototypeOf(t)}:function(t){return t.__proto__},i;e.t=function(t,o){if(o&1&&(t=this(t)),o&8||typeof t=="object"&&t&&(o&4&&t.__esModule||o&16&&typeof t.then=="function"))return t;var r=Object.create(null);e.r(r);var s={};i=i||[null,n({}),n([]),n(n)];for(var a=o&2&&t;typeof a=="object"&&!~i.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach(function(c){s[c]=function(){return t[c]}});return s.default=function(){return t},e.d(r,s),r}}(),function(){e.d=function(n,i){for(var t in i)e.o(i,t)&&!e.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:i[t]})}}(),function(){e.f={},e.e=function(n){return Promise.all(Object.keys(e.f).reduce(function(i,t){return e.f[t](n,i),i},[]))}}(),function(){e.u=function(n){return""+({46:"content-type-builder-translation-zh-Hans-json",90:"i18n-translation-de-json",92:"api-tokens-edit-page",96:"email-translation-de-json",123:"ru-json",129:"i18n-translation-es-json",302:"sso-settings-page",320:"en-json",395:"tr-json",435:"email-translation-it-json",562:"no-json",585:"upload-translation-pt-json",606:"sk-json",615:"upload-translation-uk-json",695:"upload-settings",742:"content-type-builder-translation-th-json",744:"email-translation-cs-json",749:"th-json",801:"Admin-authenticatedApp",830:"he-json",931:"content-type-builder-translation-en-json",994:"content-manager",1001:"content-type-builder-translation-nl-json",1009:"upload-translation-ms-json",1011:"zh-json",1018:"email-translation-ko-json",1023:"content-type-builder-translation-it-json",1056:"upload-translation-tr-json",1157:"email-translation-pt-BR-json",1167:"users-permissions-translation-ko-json",1180:"i18n-translation-tr-json",1312:"ja-json",1331:"upload-translation-es-json",1375:"upload-translation-pt-BR-json",1377:"ko-json",1442:"users-permissions-translation-cs-json",1495:"email-settings-page",1674:"users-permissions-translation-ru-json",1930:"users-permissions-translation-pt-json",2137:"i18n-translation-fr-json",2151:"content-type-builder-translation-id-json",2246:"content-type-builder-translation-dk-json",2248:"gu-json",2282:"users-providers-settings-page",2380:"users-permissions-translation-tr-json",2411:"email-translation-tr-json",2464:"users-permissions-translation-de-json",2489:"upload-translation-ko-json",2492:"transfer-tokens-edit-page",2544:"admin-edit-roles-page",2553:"zh-Hans-json",2567:"content-type-builder-translation-ko-json",2603:"email-translation-en-json",2648:"email-translation-ar-json",2657:"content-type-builder-translation-cs-json",2671:"nl-json",2742:"users-permissions-translation-zh-Hans-json",2812:"audit-logs-settings-page",3025:"ms-json",3038:"upload-translation-sk-json",3043:"email-translation-zh-Hans-json",3095:"users-permissions-translation-sk-json",3098:"users-permissions-translation-fr-json",3166:"email-translation-pt-json",3206:"email-translation-nl-json",3278:"vi-json",3304:"content-type-builder-translation-tr-json",3340:"pt-json",3516:"ca-json",3530:"users-permissions-translation-vi-json",3552:"i18n-settings-page",3650:"upload",3677:"Admin_pluginsPage",3702:"users-permissions-translation-pl-json",3825:"email-translation-dk-json",3948:"content-type-builder-translation-pl-json",3964:"content-type-builder-translation-ms-json",3981:"Admin_homePage",4021:"upload-translation-de-json",4121:"webhook-list-page",4179:"users-permissions-translation-id-json",4263:"admin-edit-users",4299:"api-tokens-create-page",4302:"content-type-builder-translation-zh-json",4587:"email-translation-th-json",4693:"email-translation-fr-json",4804:"upload-translation-ru-json",4816:"transfer-tokens-create-page",4987:"upload-translation-pl-json",5053:"upload-translation-zh-json",5162:"webhook-edit-page",5199:"admin-users",5222:"upload-translation-it-json",5296:"i18n-translation-dk-json",5388:"email-translation-ru-json",5396:"users-permissions-translation-zh-json",5516:"Admin_marketplace",5538:"admin-app",5751:"email-translation-es-json",5880:"upload-translation-ja-json",5894:"hu-json",5895:"Admin_settingsPage",5905:"content-type-builder-list-view",5906:"content-type-builder-translation-pt-BR-json",6232:"upload-translation-th-json",6280:"i18n-translation-ko-json",6332:"hi-json",6377:"users-permissions-translation-dk-json",6434:"upload-translation-en-json",6460:"users-permissions-translation-en-json",6745:"email-translation-uk-json",6784:"email-translation-ms-json",6817:"it-json",6831:"upload-translation-zh-Hans-json",6836:"users-permissions-translation-uk-json",6848:"email-translation-zh-json",6901:"de-json",7048:"users-permissions-translation-nl-json",7094:"users-permissions-translation-ar-json",7155:"content-type-builder-translation-de-json",7186:"content-type-builder-translation-ru-json",7327:"email-translation-vi-json",7347:"highlight.js",7403:"uk-json",7465:"upload-translation-dk-json",7519:"cs-json",7663:"email-translation-id-json",7808:"i18n-translation-zh-json",7817:"users-permissions-translation-es-json",7828:"users-permissions-translation-th-json",7833:"upload-translation-fr-json",7846:"pl-json",7898:"dk-json",7934:"content-type-builder-translation-pt-json",7958:"ar-json",7997:"content-type-builder-translation-sk-json",8006:"fr-json",8056:"api-tokens-list-page",8175:"i18n-translation-en-json",8178:"email-translation-ja-json",8329:"content-type-builder-translation-sv-json",8342:"content-type-builder-translation-es-json",8360:"eu-json",8367:"es-json",8418:"users-email-settings-page",8423:"upload-translation-ca-json",8467:"users-permissions-translation-sv-json",8481:"email-translation-pl-json",8573:"content-type-builder-translation-uk-json",8736:"users-permissions-translation-pt-BR-json",8853:"users-roles-settings-page",8880:"content-type-builder",8897:"id-json",8907:"content-type-builder-translation-ja-json",8965:"content-type-builder-translation-fr-json",9220:"users-permissions-translation-ms-json",9303:"sv-json",9366:"i18n-translation-pl-json",9412:"email-translation-sk-json",9460:"users-advanced-settings-page",9497:"Admin_profilePage",9501:"Admin_InternalErrorPage",9502:"users-permissions-translation-ja-json",9511:"content-type-builder-translation-ar-json",9514:"Upload_ConfigureTheView",9600:"transfer-tokens-list-page",9647:"pt-BR-json",9726:"sa-json",9762:"i18n-translation-zh-Hans-json",9797:"upload-translation-he-json",9903:"ml-json",9905:"users-permissions-translation-it-json"}[n]||n)+"."+{46:"52a30266",90:"362384a6",92:"bce5050f",96:"1b334230",123:"866f0ff1",129:"87b494d1",302:"82d84043",320:"8e5451b1",395:"b79eae31",435:"a2ed8c78",562:"9b3cd181",585:"6b937fdf",606:"7bbeb0af",615:"9950466a",695:"c18b010f",742:"6fe3ed55",744:"6eaeec6a",749:"f664b96d",801:"49265c1c",830:"f0de8cdb",931:"e577d595",994:"6ed87531",1001:"40bbc562",1009:"74f6d746",1011:"49d84433",1018:"4de49b23",1023:"13b3c26a",1056:"74117e5c",1157:"81cca553",1167:"357d7a33",1180:"10f0600d",1312:"97ee41ba",1331:"ba2eb03a",1375:"d1704f0b",1377:"4cbbf4f2",1442:"7e23424a",1495:"884cfb8b",1674:"20e177db",1930:"a7eda429",2137:"57ddc77e",2151:"ee3b36bb",2246:"e05583e9",2248:"94f0d242",2282:"87a9c77d",2380:"2bd7ff98",2411:"e6c0f8fc",2464:"a6fb670f",2489:"a52eab64",2492:"00ee1c74",2544:"fd041d89",2553:"30a18940",2567:"8a274be5",2603:"4211d4d0",2637:"679b590b",2648:"88304564",2657:"a5b299ca",2671:"371a15ee",2742:"0b31c705",2812:"bc1784fe",3025:"0eddffd9",3038:"483a18f6",3043:"c6841563",3095:"7f37180f",3098:"7e55bbbb",3166:"2a2a0643",3206:"377bdd9f",3278:"ee4c5537",3304:"cea4d226",3340:"ee554a41",3516:"4d999055",3530:"6722a8a2",3552:"c7bc29fc",3650:"0876ab69",3677:"15e3b0fd",3702:"0a7287d1",3825:"85402492",3948:"24a34349",3964:"2d29c1e0",3981:"1f10437f",4021:"420c943b",4049:"16583eee",4121:"3daa4fe2",4179:"a5a0fb59",4263:"08a60ea2",4299:"4328b852",4302:"faedd610",4587:"660fa9a8",4649:"b7e84a29",4693:"78be2787",4804:"675f6b93",4816:"a1f14bb1",4849:"7abafe52",4987:"426f31c9",5053:"e1dd6eb2",5162:"cfbdd3fd",5199:"74f5629d",5222:"e87d7966",5296:"89401417",5388:"6bce37dd",5396:"7978eaa6",5516:"a8ea585f",5538:"df9adf93",5751:"0b6b1006",5880:"44b88e7a",5894:"680e6eef",5895:"5a329b58",5905:"c2f917b6",5906:"97f71a9d",6232:"3847dae0",6280:"ef4f9471",6332:"df3a7be2",6377:"60e50f48",6434:"8b7573ce",6460:"4b302272",6487:"83e219bf",6745:"bd1fb6bf",6784:"7390477e",6817:"8be59205",6831:"3da5cf56",6836:"6a0a1572",6848:"7a2232ea",6901:"866f8a28",7048:"c9f92a3c",7094:"7d87d54d",7155:"0979cccb",7186:"54d11230",7259:"3f04094f",7327:"9fb7e6d7",7347:"26ef649f",7403:"b7e38370",7465:"bbb2fa05",7519:"4b44411c",7663:"c97239fe",7808:"bef2dc07",7817:"35007573",7828:"1e9c0247",7833:"84429734",7846:"e535cbce",7898:"10f7b1d1",7934:"ddb44f8c",7958:"39e54aba",7997:"626c9493",8006:"e88fbdfd",8056:"149903c8",8175:"60af6722",8178:"63eebd02",8329:"59f5e1e5",8342:"fe4daad8",8360:"3bc24d60",8367:"ea15c957",8418:"a3c80419",8423:"57954414",8467:"17187818",8469:"853c822b",8481:"97d0db97",8573:"c4524247",8736:"1b6d2920",8853:"79c19845",8880:"b7fb1e65",8897:"e0d83d41",8907:"9be0d5b2",8965:"b1eb52f6",9220:"c83f87c4",9303:"dc40951f",9366:"dfac513d",9412:"53da2fcd",9460:"677e1973",9497:"b27e40f6",9501:"4ad8b0df",9502:"891fe76e",9511:"56d8fcf4",9514:"34dde278",9600:"1e15926d",9647:"e5fafa46",9726:"7efeb257",9762:"757ce62d",9797:"0a830937",9816:"01ee964f",9903:"e3747091",9905:"0705465d"}[n]+".chunk.js"}}(),function(){e.miniCssF=function(n){}}(),function(){e.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch{if(typeof window=="object")return window}}()}(),function(){e.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)}}(),function(){var n={},i="@strapi/admin:";e.l=function(t,o,r,s){if(n[t]){n[t].push(o);return}var a,c;if(r!==void 0)for(var l=document.getElementsByTagName("script"),f=0;f<l.length;f++){var d=l[f];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==i+r){a=d;break}}a||(c=!0,a=document.createElement("script"),a.charset="utf-8",a.timeout=120,e.nc&&a.setAttribute("nonce",e.nc),a.setAttribute("data-webpack",i+r),a.src=t),n[t]=[o];var u=function(g,p){a.onerror=a.onload=null,clearTimeout(b);var h=n[t];if(delete n[t],a.parentNode&&a.parentNode.removeChild(a),h&&h.forEach(function(y){return y(p)}),g)return g(p)},b=setTimeout(u.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=u.bind(null,a.onerror),a.onload=u.bind(null,a.onload),c&&document.head.appendChild(a)}}(),function(){e.r=function(n){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})}}(),function(){e.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n}}(),function(){e.p="/admin/"}(),function(){e.b=document.baseURI||self.location.href;var n={1303:0};e.f.j=function(o,r){var s=e.o(n,o)?n[o]:void 0;if(s!==0)if(s)r.push(s[2]);else if(o!=1303){var a=new Promise(function(d,u){s=n[o]=[d,u]});r.push(s[2]=a);var c=e.p+e.u(o),l=new Error,f=function(d){if(e.o(n,o)&&(s=n[o],s!==0&&(n[o]=void 0),s)){var u=d&&(d.type==="load"?"missing":d.type),b=d&&d.target&&d.target.src;l.message="Loading chunk "+o+` failed.
2
+ (`+u+": "+b+")",l.name="ChunkLoadError",l.type=u,l.request=b,s[1](l)}};e.l(c,f,"chunk-"+o,o)}else n[o]=0},e.O.j=function(o){return n[o]===0};var i=function(o,r){var s=r[0],a=r[1],c=r[2],l,f,d=0;if(s.some(function(b){return n[b]!==0})){for(l in a)e.o(a,l)&&(e.m[l]=a[l]);if(c)var u=c(e)}for(o&&o(r);d<s.length;d++)f=s[d],e.o(n,f)&&n[f]&&n[f][0](),n[f]=0;return e.O(u)},t=self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[];t.forEach(i.bind(null,0)),t.push=i.bind(null,t.push.bind(t))}(),function(){e.nc=void 0}()})();
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4816],{76411:function(r,s,e){e.r(s);var t=e(32735),n=e(13478),i=e.n(n),_=e(72041),a=e(37259);const E=()=>t.createElement(n.CheckPagePermissions,{permissions:_.Z.settings["transfer-tokens"].create},t.createElement(a.Z,null));s.default=E}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2492],{32392:function(r,s,e){e.r(s);var n=e(32735),t=e(13478),i=e.n(t),_=e(72041),a=e(37259);const E=()=>n.createElement(t.CheckPagePermissions,{permissions:_.Z.settings["transfer-tokens"].read},n.createElement(a.Z,null));s.default=E}}]);
@@ -0,0 +1,16 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[9600],{81450:function(H,v,n){n.d(v,{Z:function(){return b}});var e=n(32735),s=n(5141),A=n(60216),t=n.n(A),a=n(39161),d=n(13478),C=n(57269),D=n(5636);const k=({tokenName:r,onClickDelete:c,tokenType:E})=>{const{formatMessage:l}=(0,D.useIntl)(),{trackUsage:f}=(0,d.useTracking)(),[u,T]=(0,e.useState)(!1),h=()=>{T(!1),f("willDeleteToken",{tokenType:E}),c()};return e.createElement(a.Box,{paddingLeft:1,onClick:p=>p.stopPropagation()},e.createElement(a.IconButton,{onClick:()=>{T(!0)},label:l({id:"global.delete-target",defaultMessage:"Delete {target}"},{target:`${r}`}),name:"delete",noBorder:!0,icon:e.createElement(C.Trash,null)}),e.createElement(d.ConfirmDialog,{onToggleDialog:()=>T(!1),onConfirm:h,isOpen:u}))};k.propTypes={tokenName:t().string.isRequired,onClickDelete:t().func.isRequired,tokenType:t().string.isRequired};var L=k,Z=n(83292);const w={edit:{id:"app.component.table.edit",defaultMessage:"Edit {target}"},read:{id:"app.component.table.read",defaultMessage:"Read {target}"}},U=(0,Z.default)(d.Link)`
2
+ svg {
3
+ path {
4
+ fill: ${({theme:r})=>r.colors.neutral500};
5
+ }
6
+ }
7
+
8
+ &:hover,
9
+ &:focus {
10
+ svg {
11
+ path {
12
+ fill: ${({theme:r})=>r.colors.neutral800};
13
+ }
14
+ }
15
+ }
16
+ `,g=({tokenName:r,tokenId:c,buttonType:E,children:l})=>{const{formatMessage:f}=(0,D.useIntl)(),{location:{pathname:u}}=(0,s.useHistory)();return e.createElement(U,{to:`${u}/${c}`,title:f(w[E],{target:r})},l)};g.propTypes={tokenName:t().string.isRequired,tokenId:t().oneOfType([t().string,t().number]).isRequired,buttonType:t().string,children:t().node.isRequired},g.defaultProps={buttonType:"edit"};var I=g;const S=({tokenName:r,tokenId:c})=>e.createElement(I,{tokenName:r,tokenId:c},e.createElement(C.Pencil,null));S.propTypes={tokenName:t().string.isRequired,tokenId:t().oneOfType([t().string,t().number]).isRequired};var Q=S;const M=({tokenName:r,tokenId:c})=>e.createElement(I,{tokenName:r,tokenId:c,buttonType:"read"},e.createElement(C.Eye,null));M.propTypes={tokenName:t().string.isRequired,tokenId:t().oneOfType([t().string,t().number]).isRequired};var V=M;const m=({permissions:r,headers:c,contentType:E,isLoading:l,tokens:f,onConfirmDelete:u,tokenType:T})=>{const{canDelete:h,canUpdate:p,canRead:N}=r,P=h||p||N,[{query:y}]=(0,d.useQueryParams)(),[,R]=y?y.sort.split(":"):"ASC",{push:F,location:{pathname:B}}=(0,s.useHistory)(),{trackUsage:O}=(0,d.useTracking)(),$=f.sort((o,x)=>{const i=o.name.localeCompare(x.name);return R==="DESC"?-i:i});return e.createElement(d.DynamicTable,{headers:c,contentType:E,rows:f,withBulkActions:P,isLoading:l,onConfirmDelete:u},e.createElement(a.Tbody,null,$.map(o=>e.createElement(a.Tr,{key:o.id,...(0,d.onRowClick)({fn(){O("willEditTokenFromList",{tokenType:T}),F(`${B}/${o.id}`)},condition:p})},e.createElement(a.Td,null,e.createElement(a.Typography,{textColor:"neutral800",fontWeight:"bold"},o.name)),e.createElement(a.Td,{maxWidth:(0,d.pxToRem)(250)},e.createElement(a.Typography,{textColor:"neutral800",ellipsis:!0},o.description)),e.createElement(a.Td,null,e.createElement(a.Typography,{textColor:"neutral800"},e.createElement(d.RelativeTime,{timestamp:new Date(o.createdAt)}))),e.createElement(a.Td,null,o.lastUsedAt&&e.createElement(a.Typography,{textColor:"neutral800"},e.createElement(d.RelativeTime,{timestamp:new Date(o.lastUsedAt)}))),P&&e.createElement(a.Td,null,e.createElement(a.Flex,{justifyContent:"end"},p&&e.createElement(Q,{tokenName:o.name,tokenId:o.id}),!p&&N&&e.createElement(V,{tokenName:o.name,tokenId:o.id}),h&&e.createElement(L,{tokenName:o.name,onClickDelete:()=>u(o.id),tokenType:T})))))))};m.propTypes={tokens:t().array,permissions:t().shape({canRead:t().bool,canDelete:t().bool,canUpdate:t().bool}).isRequired,headers:t().arrayOf(t().shape({cellFormatter:t().func,key:t().string.isRequired,metadatas:t().shape({label:t().string.isRequired,sortable:t().bool}).isRequired,name:t().string.isRequired})),contentType:t().string.isRequired,isLoading:t().bool,onConfirmDelete:t().func,tokenType:t().string.isRequired},m.defaultProps={tokens:[],headers:[],isLoading:!1,onConfirmDelete(){}};var b=m},68774:function(H,v,n){n.d(v,{Z:function(){return e},f:function(){return s}});const e="api-token",s="transfer-token"},38286:function(H,v,n){n.r(v),n.d(v,{default:function(){return M}});var e=n(32735),s=n(13478),A=n(72041),t=n(5636),a=n(84968),d=n(5141),C=n(33348),D=n.n(C),k=n(39161),L=n(57269),w=[{name:"name",key:"name",metadatas:{label:{id:"Settings.transferTokens.ListView.headers.name",defaultMessage:"Name"},sortable:!0}},{name:"description",key:"description",metadatas:{label:{id:"Settings.transferTokens.ListView.headers.description",defaultMessage:"Description"},sortable:!1}},{name:"createdAt",key:"createdAt",metadatas:{label:{id:"Settings.transferTokens.ListView.headers.createdAt",defaultMessage:"Created at"},sortable:!1}},{name:"lastUsedAt",key:"lastUsedAt",metadatas:{label:{id:"Settings.transferTokens.ListView.headers.lastUsedAt",defaultMessage:"Last used"},sortable:!1}}],U=n(81450),g=n(68774),S=()=>{(0,s.useFocusWhenNavigate)();const V=(0,a.useQueryClient)(),{formatMessage:m}=(0,t.useIntl)(),b=(0,s.useNotification)(),{allowedActions:{canCreate:r,canDelete:c,canUpdate:E,canRead:l}}=(0,s.useRBAC)(A.Z.settings["transfer-tokens"]),{push:f}=(0,d.useHistory)(),{trackUsage:u}=(0,s.useTracking)(),{startSection:T}=(0,s.useGuidedTour)(),h=(0,e.useRef)(T),{get:p,del:N}=(0,s.useFetchClient)();(0,e.useEffect)(()=>{h.current&&h.current("transferTokens")},[]),(0,e.useEffect)(()=>{f({search:D().stringify({sort:"name:ASC"},{encode:!1})})},[f]);const P=w.map(i=>({...i,metadatas:{...i.metadatas,label:m(i.metadatas.label)}})),{data:y,status:R,isFetching:F}=(0,a.useQuery)(["transfer-tokens"],async()=>{u("willAccessTokenList",{tokenType:g.f});const{data:{data:i}}=await p("/admin/transfer/tokens");return u("didAccessTokenList",{number:i.length,tokenType:g.f}),i},{enabled:l,onError(){b({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),B=l&&(R!=="success"&&R!=="error"||R==="success"&&F),O=(0,a.useMutation)(async i=>{await N(`/admin/transfer/tokens/${i}`)},{async onSuccess(){await V.invalidateQueries(["transfer-tokens"])},onError(i){i?.response?.data?.data?b({type:"warning",message:i.response.data.data}):b({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),$=l&&y,o=l&&!y&&!r,x=l&&!y&&r;return e.createElement(k.Main,{"aria-busy":B},e.createElement(s.SettingsPageTitle,{name:"Transfer Tokens"}),e.createElement(k.HeaderLayout,{title:m({id:"Settings.transferTokens.title",defaultMessage:"Transfer Tokens"}),subtitle:m({id:"Settings.transferTokens.description",defaultMessage:'"List of generated transfer tokens"'}),primaryAction:r?e.createElement(s.LinkButton,{"data-testid":"create-transfer-token-button",startIcon:e.createElement(L.Plus,null),size:"S",onClick:()=>u("willAddTokenFromList",{tokenType:g.f}),to:"/settings/transfer-tokens/create"},m({id:"Settings.transferTokens.create",defaultMessage:"Create new Transfer Token"})):void 0}),e.createElement(k.ContentLayout,null,!l&&e.createElement(s.NoPermissions,null),$&&e.createElement(U.Z,{permissions:{canRead:l,canDelete:c,canUpdate:E},headers:P,contentType:"trasfer-tokens",rows:y,isLoading:B,onConfirmDelete:i=>O.mutateAsync(i),tokens:y,tokenType:g.f}),x&&e.createElement(s.NoContent,{content:{id:"Settings.transferTokens.addFirstToken",defaultMessage:"Add your first Transfer Token"},action:e.createElement(k.Button,{variant:"secondary",startIcon:e.createElement(L.Plus,null)},m({id:"Settings.transferTokens.addNewToken",defaultMessage:"Add new Transfer Token"}))}),o&&e.createElement(s.NoContent,{content:{id:"Settings.transferTokens.emptyStateLayout",defaultMessage:"You don\u2019t have any content yet..."}})))},M=()=>e.createElement(s.CheckPagePermissions,{permissions:A.Z.settings["transfer-tokens"].main},e.createElement(S,null))}}]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/admin",
3
- "version": "4.6.2",
3
+ "version": "4.7.0-exp.117579f4c13806c2cd518e7d7d2f9d0c8a20107d",
4
4
  "description": "Strapi Admin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -46,15 +46,15 @@
46
46
  "@casl/ability": "^5.4.3",
47
47
  "@fingerprintjs/fingerprintjs": "3.3.6",
48
48
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
49
- "@strapi/babel-plugin-switch-ee-ce": "4.6.2",
50
- "@strapi/data-transfer": "4.6.2",
49
+ "@strapi/babel-plugin-switch-ee-ce": "4.7.0-exp.117579f4c13806c2cd518e7d7d2f9d0c8a20107d",
50
+ "@strapi/data-transfer": "4.7.0-exp.117579f4c13806c2cd518e7d7d2f9d0c8a20107d",
51
51
  "@strapi/design-system": "1.6.3",
52
- "@strapi/helper-plugin": "4.6.2",
52
+ "@strapi/helper-plugin": "4.7.0-exp.117579f4c13806c2cd518e7d7d2f9d0c8a20107d",
53
53
  "@strapi/icons": "1.6.3",
54
- "@strapi/permissions": "4.6.2",
55
- "@strapi/provider-audit-logs-local": "4.6.2",
56
- "@strapi/typescript-utils": "4.6.2",
57
- "@strapi/utils": "4.6.2",
54
+ "@strapi/permissions": "4.7.0-exp.117579f4c13806c2cd518e7d7d2f9d0c8a20107d",
55
+ "@strapi/provider-audit-logs-local": "4.7.0-exp.117579f4c13806c2cd518e7d7d2f9d0c8a20107d",
56
+ "@strapi/typescript-utils": "4.7.0-exp.117579f4c13806c2cd518e7d7d2f9d0c8a20107d",
57
+ "@strapi/utils": "4.7.0-exp.117579f4c13806c2cd518e7d7d2f9d0c8a20107d",
58
58
  "axios": "1.2.2",
59
59
  "babel-loader": "^9.1.2",
60
60
  "babel-plugin-styled-components": "2.0.2",
@@ -165,5 +165,5 @@
165
165
  }
166
166
  }
167
167
  },
168
- "gitHead": "bae505f44c3a779905f6b8dbc0c497e24d9eabfb"
168
+ "gitHead": "117579f4c13806c2cd518e7d7d2f9d0c8a20107d"
169
169
  }