@strapi/admin 4.4.0-beta.3 → 4.4.0-rc.0

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 (92) hide show
  1. package/admin/src/StrapiApp.js +2 -0
  2. package/admin/src/components/AuthenticatedApp/index.js +2 -2
  3. package/admin/src/components/LanguageProvider/index.js +1 -0
  4. package/admin/src/components/ThemeToggleProvider/index.js +21 -10
  5. package/admin/src/content-manager/components/DynamicTable/index.js +2 -2
  6. package/admin/src/content-manager/components/InputJSON/index.js +2 -0
  7. package/admin/src/contexts/ApiTokenPermissions/index.js +24 -0
  8. package/admin/src/hooks/index.js +1 -0
  9. package/admin/src/hooks/useRegenerate/index.js +34 -0
  10. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ActionBoundRoutes/index.js +56 -0
  11. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/BoundRoute/getMethodColor.js +41 -0
  12. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/BoundRoute/index.js +72 -0
  13. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/CheckBoxWrapper.js +30 -0
  14. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/CollapsableContentType/index.js +150 -0
  15. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/ContenTypesSection/index.js +37 -0
  16. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js +254 -0
  17. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormBody/index.js +77 -0
  18. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormHead/index.js +85 -0
  19. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Permissions/index.js +40 -0
  20. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/Regenerate/index.js +68 -0
  21. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +215 -197
  22. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/init.js +13 -0
  23. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/reducer.js +72 -0
  24. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/getDateOfExpiration.js +16 -0
  25. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/index.js +5 -0
  26. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/schema.js +2 -1
  27. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/utils/transformPermissionsData.js +36 -0
  28. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/DefaultButton/index.js +63 -0
  29. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/DeleteButton/index.js +1 -0
  30. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/ReadButton/index.js +19 -0
  31. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/UpdateButton/index.js +3 -36
  32. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/index.js +13 -11
  33. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/index.js +3 -2
  34. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/utils/tableHeaders.js +8 -8
  35. package/admin/src/pages/SettingsPage/pages/ApiTokens/ProtectedEditView/index.js +1 -1
  36. package/admin/src/permissions/defaultPermissions.js +2 -6
  37. package/admin/src/translations/en.json +17 -0
  38. package/admin/src/translations/zh-Hans.json +0 -1
  39. package/build/2077.c935ee42.chunk.js +205 -0
  40. package/build/4318.7d167b58.chunk.js +30 -0
  41. package/build/{4715.3f6cac0a.chunk.js → 4715.58cd558f.chunk.js} +32 -31
  42. package/build/4982.05eda880.chunk.js +324 -0
  43. package/build/7379.d246dd38.chunk.js +1 -0
  44. package/build/{7866.c793a31d.chunk.js → 7866.1201afbd.chunk.js} +2 -2
  45. package/build/{8773.eccaa5f3.chunk.js → 8773.c06c24c0.chunk.js} +2 -2
  46. package/build/{Admin-authenticatedApp.50e41ff2.chunk.js → Admin-authenticatedApp.9dec5230.chunk.js} +6 -6
  47. package/build/{Admin_homePage.118926e0.chunk.js → Admin_homePage.6d5e3236.chunk.js} +1 -1
  48. package/build/{Admin_profilePage.9d50ac44.chunk.js → Admin_profilePage.da32abbc.chunk.js} +1 -1
  49. package/build/{Admin_settingsPage.98a711e5.chunk.js → Admin_settingsPage.98e2a62b.chunk.js} +16 -16
  50. package/build/admin-app.a61d5c2e.chunk.js +112 -0
  51. package/build/admin-edit-roles-page.4dd6bcb9.chunk.js +1 -0
  52. package/build/api-tokens-create-page.93dd0689.chunk.js +1 -0
  53. package/build/api-tokens-edit-page.b0adac81.chunk.js +1 -0
  54. package/build/api-tokens-list-page.bb36535f.chunk.js +16 -0
  55. package/build/{content-manager.2a6f876d.chunk.js → content-manager.feb0d540.chunk.js} +2 -2
  56. package/build/{content-type-builder.d4610e20.chunk.js → content-type-builder.a684b2e8.chunk.js} +11 -11
  57. package/build/en-json.a9918c93.chunk.js +1 -0
  58. package/build/index.html +1 -1
  59. package/build/{main.fdc482f3.js → main.e4065f58.js} +1304 -1288
  60. package/build/{runtime~main.29105d25.js → runtime~main.4204f341.js} +2 -2
  61. package/build/sso-settings-page.9ceb0140.chunk.js +1 -0
  62. package/build/{webhook-edit-page.d2ea3351.chunk.js → webhook-edit-page.9e46fc3f.chunk.js} +1 -1
  63. package/build/{zh-Hans-json.77a42bc5.chunk.js → zh-Hans-json.9c99f8d4.chunk.js} +1 -1
  64. package/package.json +10 -9
  65. package/server/bootstrap.js +19 -1
  66. package/server/config/admin-actions.js +20 -0
  67. package/server/content-types/api-token-permission.js +36 -0
  68. package/server/content-types/api-token.js +25 -1
  69. package/server/content-types/index.js +1 -0
  70. package/server/controllers/api-token.js +24 -1
  71. package/server/controllers/content-api.js +15 -0
  72. package/server/controllers/index.js +1 -0
  73. package/server/routes/api-tokens.js +11 -0
  74. package/server/routes/content-api.js +20 -0
  75. package/server/routes/index.js +2 -0
  76. package/server/services/api-token.js +310 -29
  77. package/server/services/constants.js +10 -0
  78. package/server/services/permission/engine.js +36 -226
  79. package/server/services/permission.js +4 -1
  80. package/server/strategies/admin.js +7 -1
  81. package/server/strategies/api-token.js +71 -11
  82. package/server/validation/api-tokens.js +12 -2
  83. package/build/2077.61cebc93.chunk.js +0 -195
  84. package/build/4982.c6f88c5d.chunk.js +0 -314
  85. package/build/admin-app.8bc3e80f.chunk.js +0 -112
  86. package/build/admin-edit-roles-page.554ba3fa.chunk.js +0 -1
  87. package/build/api-tokens-create-page.4c262d6e.chunk.js +0 -1
  88. package/build/api-tokens-edit-page.10a9d368.chunk.js +0 -1
  89. package/build/api-tokens-list-page.442c9f3c.chunk.js +0 -15
  90. package/build/en-json.12bc5a14.chunk.js +0 -1
  91. package/build/sso-settings-page.445184e0.chunk.js +0 -1
  92. package/server/services/permission/engine-hooks.js +0 -82
@@ -0,0 +1,63 @@
1
+ import React from 'react';
2
+ import { useIntl } from 'react-intl';
3
+ import PropTypes from 'prop-types';
4
+ import { Link } from '@strapi/helper-plugin';
5
+ import { useHistory } from 'react-router-dom';
6
+ import styled from 'styled-components';
7
+
8
+ const MESSAGES_MAP = {
9
+ edit: {
10
+ id: 'app.component.table.edit',
11
+ defaultMessage: 'Edit {target}',
12
+ },
13
+ read: {
14
+ id: 'app.component.table.read',
15
+ defaultMessage: 'Read {target}',
16
+ },
17
+ };
18
+
19
+ const LinkStyled = styled(Link)`
20
+ svg {
21
+ path {
22
+ fill: ${({ theme }) => theme.colors.neutral500};
23
+ }
24
+ }
25
+
26
+ &:hover,
27
+ &:focus {
28
+ svg {
29
+ path {
30
+ fill: ${({ theme }) => theme.colors.neutral800};
31
+ }
32
+ }
33
+ }
34
+ `;
35
+
36
+ const DefaultButton = ({ tokenName, tokenId, buttonType, children }) => {
37
+ const { formatMessage } = useIntl();
38
+ const {
39
+ location: { pathname },
40
+ } = useHistory();
41
+
42
+ return (
43
+ <LinkStyled
44
+ to={`${pathname}/${tokenId}`}
45
+ title={formatMessage(MESSAGES_MAP[buttonType], { target: tokenName })}
46
+ >
47
+ {children}
48
+ </LinkStyled>
49
+ );
50
+ };
51
+
52
+ DefaultButton.propTypes = {
53
+ tokenName: PropTypes.string.isRequired,
54
+ tokenId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
55
+ buttonType: PropTypes.string,
56
+ children: PropTypes.node.isRequired,
57
+ };
58
+
59
+ DefaultButton.defaultProps = {
60
+ buttonType: 'edit',
61
+ };
62
+
63
+ export default DefaultButton;
@@ -24,6 +24,7 @@ const DeleteButton = ({ tokenName, onClickDelete }) => {
24
24
  },
25
25
  { target: `${tokenName}` }
26
26
  )}
27
+ name="delete"
27
28
  noBorder
28
29
  icon={<Trash />}
29
30
  />
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import Eye from '@strapi/icons/Eye';
3
+ import PropTypes from 'prop-types';
4
+ import DefaultButton from '../DefaultButton';
5
+
6
+ const ReadButton = ({ tokenName, tokenId }) => {
7
+ return (
8
+ <DefaultButton tokenName={tokenName} tokenId={tokenId} buttonType="read">
9
+ <Eye />
10
+ </DefaultButton>
11
+ );
12
+ };
13
+
14
+ ReadButton.propTypes = {
15
+ tokenName: PropTypes.string.isRequired,
16
+ tokenId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
17
+ };
18
+
19
+ export default ReadButton;
@@ -1,46 +1,13 @@
1
1
  import React from 'react';
2
2
  import Pencil from '@strapi/icons/Pencil';
3
- import { useIntl } from 'react-intl';
4
3
  import PropTypes from 'prop-types';
5
- import { Link } from '@strapi/helper-plugin';
6
- import { useHistory } from 'react-router-dom';
7
- import styled from 'styled-components';
8
-
9
- const LinkUpdate = styled(Link)`
10
- svg {
11
- path {
12
- fill: ${({ theme }) => theme.colors.neutral500};
13
- }
14
- }
15
-
16
- &:hover {
17
- svg {
18
- path {
19
- fill: ${({ theme }) => theme.colors.neutral800};
20
- }
21
- }
22
- }
23
- `;
4
+ import DefaultButton from '../DefaultButton';
24
5
 
25
6
  const UpdateButton = ({ tokenName, tokenId }) => {
26
- const { formatMessage } = useIntl();
27
- const {
28
- location: { pathname },
29
- } = useHistory();
30
-
31
7
  return (
32
- <LinkUpdate
33
- to={`${pathname}/${tokenId}`}
34
- title={formatMessage(
35
- {
36
- id: 'app.component.table.edit',
37
- defaultMessage: 'Edit {target}',
38
- },
39
- { target: `${tokenName}` }
40
- )}
41
- >
8
+ <DefaultButton tokenName={tokenName} tokenId={tokenId}>
42
9
  <Pencil />
43
- </LinkUpdate>
10
+ </DefaultButton>
44
11
  );
45
12
  };
46
13
 
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import { useIntl } from 'react-intl';
3
2
  import PropTypes from 'prop-types';
4
3
  import { useHistory } from 'react-router-dom';
5
4
 
@@ -13,12 +12,11 @@ import {
13
12
  pxToRem,
14
13
  useTracking,
15
14
  } from '@strapi/helper-plugin';
16
-
17
15
  import DeleteButton from './DeleteButton';
18
16
  import UpdateButton from './UpdateButton';
17
+ import ReadButton from './ReadButton';
19
18
 
20
- const TableRows = ({ canDelete, canUpdate, onClickDelete, withBulkActions, rows }) => {
21
- const { formatMessage } = useIntl();
19
+ const TableRows = ({ canDelete, canUpdate, canRead, onClickDelete, withBulkActions, rows }) => {
22
20
  const [{ query }] = useQueryParams();
23
21
  const [, sortOrder] = query.sort.split(':');
24
22
  const {
@@ -59,22 +57,24 @@ const TableRows = ({ canDelete, canUpdate, onClickDelete, withBulkActions, rows
59
57
  </Td>
60
58
  <Td>
61
59
  <Typography textColor="neutral800">
62
- {formatMessage({
63
- id: `Settings.apiTokens.types.${apiToken.type}`,
64
- defaultMessage: 'Type unknown',
65
- })}
60
+ <RelativeTime timestamp={new Date(apiToken.createdAt)} />
66
61
  </Typography>
67
62
  </Td>
68
63
  <Td>
69
- <Typography textColor="neutral800">
70
- <RelativeTime timestamp={new Date(apiToken.createdAt)} />
71
- </Typography>
64
+ {apiToken.lastUsedAt && (
65
+ <Typography textColor="neutral800">
66
+ <RelativeTime timestamp={new Date(apiToken.lastUsedAt)} />
67
+ </Typography>
68
+ )}
72
69
  </Td>
73
70
 
74
71
  {withBulkActions && (
75
72
  <Td>
76
73
  <Flex justifyContent="end">
77
74
  {canUpdate && <UpdateButton tokenName={apiToken.name} tokenId={apiToken.id} />}
75
+ {!canUpdate && canRead && (
76
+ <ReadButton tokenName={apiToken.name} tokenId={apiToken.id} />
77
+ )}
78
78
  {canDelete && (
79
79
  <DeleteButton
80
80
  tokenName={apiToken.name}
@@ -94,6 +94,7 @@ const TableRows = ({ canDelete, canUpdate, onClickDelete, withBulkActions, rows
94
94
  TableRows.defaultProps = {
95
95
  canDelete: false,
96
96
  canUpdate: false,
97
+ canRead: false,
97
98
  onClickDelete() {},
98
99
  rows: [],
99
100
  withBulkActions: false,
@@ -102,6 +103,7 @@ TableRows.defaultProps = {
102
103
  TableRows.propTypes = {
103
104
  canDelete: PropTypes.bool,
104
105
  canUpdate: PropTypes.bool,
106
+ canRead: PropTypes.bool,
105
107
  onClickDelete: PropTypes.func,
106
108
  rows: PropTypes.array,
107
109
  withBulkActions: PropTypes.bool,
@@ -147,15 +147,16 @@ const ApiTokenListView = () => {
147
147
  headers={headers}
148
148
  contentType="api-tokens"
149
149
  rows={apiTokens}
150
- withBulkActions={canDelete || canUpdate}
150
+ withBulkActions={canDelete || canUpdate || canRead}
151
151
  isLoading={isLoading}
152
152
  onConfirmDelete={(id) => deleteMutation.mutateAsync(id)}
153
153
  >
154
154
  <TableRows
155
+ canRead={canRead}
155
156
  canDelete={canDelete}
156
157
  canUpdate={canUpdate}
157
158
  rows={apiTokens}
158
- withBulkActions={canDelete || canUpdate}
159
+ withBulkActions={canDelete || canUpdate || canRead}
159
160
  />
160
161
  </DynamicTable>
161
162
  )}
@@ -22,23 +22,23 @@ const tableHeaders = [
22
22
  },
23
23
  },
24
24
  {
25
- name: 'type',
26
- key: 'type',
25
+ name: 'createdAt',
26
+ key: 'createdAt',
27
27
  metadatas: {
28
28
  label: {
29
- id: 'Settings.apiTokens.ListView.headers.type',
30
- defaultMessage: 'Token type',
29
+ id: 'Settings.apiTokens.ListView.headers.createdAt',
30
+ defaultMessage: 'Created at',
31
31
  },
32
32
  sortable: false,
33
33
  },
34
34
  },
35
35
  {
36
- name: 'createdAt',
37
- key: 'createdAt',
36
+ name: 'lastUsedAt',
37
+ key: 'lastUsedAt',
38
38
  metadatas: {
39
39
  label: {
40
- id: 'Settings.apiTokens.ListView.headers.createdAt',
41
- defaultMessage: 'Created at',
40
+ id: 'Settings.apiTokens.ListView.headers.lastUsedAt',
41
+ defaultMessage: 'Last used',
42
42
  },
43
43
  sortable: false,
44
44
  },
@@ -5,7 +5,7 @@ import EditView from '../EditView';
5
5
 
6
6
  const ProtectedApiTokenCreateView = () => {
7
7
  return (
8
- <CheckPagePermissions permissions={adminPermissions.settings['api-tokens'].update}>
8
+ <CheckPagePermissions permissions={adminPermissions.settings['api-tokens'].read}>
9
9
  <EditView />
10
10
  </CheckPagePermissions>
11
11
  );
@@ -76,16 +76,12 @@ const permissions = {
76
76
  update: [{ action: 'admin::webhooks.update', subject: null }],
77
77
  },
78
78
  'api-tokens': {
79
- main: [
80
- { action: 'admin::api-tokens.create', subject: null },
81
- { action: 'admin::api-tokens.read', subject: null },
82
- { action: 'admin::api-tokens.update', subject: null },
83
- { action: 'admin::api-tokens.delete', subject: null },
84
- ],
79
+ main: [{ action: 'admin::api-tokens.access', subject: null }],
85
80
  create: [{ action: 'admin::api-tokens.create', subject: null }],
86
81
  delete: [{ action: 'admin::api-tokens.delete', subject: null }],
87
82
  read: [{ action: 'admin::api-tokens.read', subject: null }],
88
83
  update: [{ action: 'admin::api-tokens.update', subject: null }],
84
+ regenerate: [{ action: 'admin::api-tokens.regenerate', subject: null }],
89
85
  },
90
86
  },
91
87
  };
@@ -91,10 +91,24 @@
91
91
  "Settings.apiTokens.ListView.headers.description": "Description",
92
92
  "Settings.apiTokens.ListView.headers.type": "Token type",
93
93
  "Settings.apiTokens.ListView.headers.createdAt": "Created at",
94
+ "Settings.apiTokens.ListView.headers.lastUsedAt": "Last used",
94
95
  "Settings.apiTokens.notification.copied": "Token copied to clipboard.",
95
96
  "Settings.apiTokens.title": "API Tokens",
96
97
  "Settings.apiTokens.types.full-access": "Full access",
97
98
  "Settings.apiTokens.types.read-only": "Read-only",
99
+ "Settings.apiTokens.duration.7-days": "7 days",
100
+ "Settings.apiTokens.duration.30-days": "30 days",
101
+ "Settings.apiTokens.duration.90-days": "90 days",
102
+ "Settings.apiTokens.duration.unlimited": "Unlimited",
103
+ "Settings.apiTokens.form.duration":"Token duration",
104
+ "Settings.apiTokens.form.type":"Token type",
105
+ "Settings.apiTokens.duration.expiration-date":"Expiration date",
106
+ "Settings.apiTokens.createPage.permissions.title":"Permissions",
107
+ "Settings.apiTokens.createPage.permissions.description":"Only actions bound by a route are listed below.",
108
+ "Settings.apiTokens.RegenerateDialog.title": "Regenerate token",
109
+ "Settings.apiTokens.popUpWarning.message": "Are you sure you want to regenerate this token?",
110
+ "Settings.apiTokens.Button.cancel": "Cancel",
111
+ "Settings.apiTokens.Button.regenerate": "Regenerate",
98
112
  "Settings.application.description": "Administration panel’s global information",
99
113
  "Settings.application.edition-title": "current plan",
100
114
  "Settings.application.get-help": "Get help",
@@ -758,6 +772,9 @@
758
772
  "notification.success.delete": "The item has been deleted",
759
773
  "notification.success.saved": "Saved",
760
774
  "notification.success.title": "Success:",
775
+ "notification.success.tokencreated": "API Token successfully created",
776
+ "notification.success.tokenedited": "API Token successfully edited",
777
+ "notification.error.tokennamenotunique": "Name already assigned to another token",
761
778
  "notification.version.update.message": "A new version of Strapi is available!",
762
779
  "notification.warning.title": "Warning:",
763
780
  "notification.warning.404": "404 - Not found",
@@ -356,7 +356,6 @@
356
356
  "components.FilterOptions.FILTER_TYPES.$lt": "小于",
357
357
  "components.FilterOptions.FILTER_TYPES.$lte": "小于或等于",
358
358
  "components.FilterOptions.FILTER_TYPES.$ne": "不等于",
359
- "components.FilterOptions.FILTER_TYPES.$neq": "不等于",
360
359
  "components.FilterOptions.FILTER_TYPES.$notContains": "不包含 (区分大小写)",
361
360
  "components.FilterOptions.FILTER_TYPES.$notNull": "不为空",
362
361
  "components.FilterOptions.FILTER_TYPES.$null": "为空",
@@ -0,0 +1,205 @@
1
+ (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[2077],{74201:(y,C,h)=>{"use strict";y.exports=h(45214)},45214:function(y,C,h){(function(x,v){y.exports=v(h(32735),h(19615),h(103))})(this,function(x,v,m){return function(t){var f={};function e(o){if(f[o])return f[o].exports;var i=f[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,e),i.l=!0,i.exports}return e.m=t,e.c=f,e.d=function(o,i,p){e.o(o,i)||Object.defineProperty(o,i,{enumerable:!0,get:p})},e.r=function(o){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},e.t=function(o,i){if(1&i&&(o=e(o)),8&i||4&i&&typeof o=="object"&&o&&o.__esModule)return o;var p=Object.create(null);if(e.r(p),Object.defineProperty(p,"default",{enumerable:!0,value:o}),2&i&&typeof o!="string")for(var u in o)e.d(p,u,function(d){return o[d]}.bind(null,u));return p},e.n=function(o){var i=o&&o.__esModule?function(){return o.default}:function(){return o};return e.d(i,"a",i),i},e.o=function(o,i){return Object.prototype.hasOwnProperty.call(o,i)},e.p="",e(e.s=65)}([function(t,f,e){t.exports=e(19)()},function(t,f){t.exports=x},function(t,f){t.exports=v},function(t,f){t.exports=function(e,o){return o||(o=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(o)}}))},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,f,e){var o=e(24);t.exports=function(i,p){if(i==null)return{};var u,d,c=o(i,p);if(Object.getOwnPropertySymbols){var g=Object.getOwnPropertySymbols(i);for(d=0;d<g.length;d++)u=g[d],p.indexOf(u)>=0||Object.prototype.propertyIsEnumerable.call(i,u)&&(c[u]=i[u])}return c},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,f,e){"use strict";e.r(f),e.d(f,"Box",function(){return j});var o,i=e(3),p=e.n(i),u=e(2),d=e.n(u),c=e(7),g=e(1),O=e.n(g),S=e(0),a=e.n(S),l=function(n){return O.a.createElement("div",n)},w={background:void 0,borderColor:void 0,color:void 0,hiddenS:!1,hiddenXS:!1,padding:void 0,paddingTop:void 0,paddingRight:void 0,paddingBottom:void 0,paddingLeft:void 0,hasRadius:!1,shadow:void 0,children:null,shrink:void 0,grow:void 0,basis:void 0,flex:void 0,_hover:function(){}},b={_hover:a.a.func,background:a.a.string,basis:a.a.oneOfType([a.a.string,a.a.string]),borderColor:a.a.string,children:a.a.oneOfType([a.a.node,a.a.string]),color:a.a.string,flex:a.a.oneOfType([a.a.string,a.a.string]),grow:a.a.oneOfType([a.a.string,a.a.string]),hasRadius:a.a.bool,hiddenS:a.a.bool,hiddenXS:a.a.bool,padding:a.a.oneOfType([a.a.number,a.a.arrayOf(a.a.number)]),paddingBottom:a.a.oneOfType([a.a.number,a.a.arrayOf(a.a.number)]),paddingLeft:a.a.oneOfType([a.a.number,a.a.arrayOf(a.a.number)]),paddingRight:a.a.oneOfType([a.a.number,a.a.arrayOf(a.a.number)]),paddingTop:a.a.oneOfType([a.a.number,a.a.arrayOf(a.a.number)]),shadow:a.a.string,shrink:a.a.oneOfType([a.a.string,a.a.string])};l.defaultProps=w,l.propTypes=b;var T={color:!0},j=d.a.div.withConfig({shouldForwardProp:function(n,r){return!T[n]&&r(n)}})(o||(o=p()([`
2
+ // Font
3
+ font-size: `,`;
4
+
5
+ // Colors
6
+ background: `,`;
7
+ color: `,`;
8
+
9
+ // Spaces
10
+ `,`
11
+ `,`
12
+ `,`
13
+ `,`
14
+ `,`
15
+ `,`
16
+ `,`
17
+ `,`
18
+ `,`
19
+
20
+ // Responsive hiding
21
+ `,`
22
+ `,`
23
+
24
+
25
+ // Borders
26
+ border-radius: `,`;
27
+ border-style: `,`;
28
+ border-width: `,`;
29
+ border-color: `,`;
30
+ border: `,`;
31
+
32
+ // Shadows
33
+ box-shadow: `,`;
34
+
35
+ // Handlers
36
+ pointer-events: `,`;
37
+ &:hover {
38
+ `,`
39
+ }
40
+
41
+ // Display
42
+ display: `,`;
43
+
44
+ // Position
45
+ position: `,`;
46
+ left: `,`;
47
+ right: `,`;
48
+ top: `,`;
49
+ bottom: `,`;
50
+ z-index: `,`;
51
+ overflow: `,`;
52
+ cursor: `,`;
53
+
54
+ // Size
55
+ width: `,`;
56
+ max-width: `,`;
57
+ min-width: `,`;
58
+ height: `,`;
59
+ max-height: `,`;
60
+ min-height: `,`;
61
+
62
+ // Animation
63
+ transition: `,`;
64
+ transform: `,`;
65
+ animation: `,`;
66
+
67
+ //Flexbox children props
68
+ flex-shrink: `,`;
69
+ flex-grow: `,`;
70
+ flex-basis: `,`;
71
+ flex: `,`;
72
+
73
+ // Text
74
+ text-align: `,`;
75
+ text-transform: `,`;
76
+ line-height: `,`;
77
+
78
+ // Cursor
79
+ cursor: `,`;
80
+ `])),function(n){var r=n.fontSize;return n.theme.fontSizes[r]||r},function(n){var r=n.theme,s=n.background;return r.colors[s]},function(n){var r=n.theme,s=n.color;return r.colors[s]},function(n){var r=n.theme,s=n.padding;return Object(c.a)("padding",s,r)},function(n){var r=n.theme,s=n.paddingTop;return Object(c.a)("padding-top",s,r)},function(n){var r=n.theme,s=n.paddingRight;return Object(c.a)("padding-right",s,r)},function(n){var r=n.theme,s=n.paddingBottom;return Object(c.a)("padding-bottom",s,r)},function(n){var r=n.theme,s=n.paddingLeft;return Object(c.a)("padding-left",s,r)},function(n){var r=n.theme,s=n.marginLeft;return Object(c.a)("margin-left",s,r)},function(n){var r=n.theme,s=n.marginRight;return Object(c.a)("margin-right",s,r)},function(n){var r=n.theme,s=n.marginTop;return Object(c.a)("margin-top",s,r)},function(n){var r=n.theme,s=n.marginBottom;return Object(c.a)("margin-bottom",s,r)},function(n){var r=n.theme;return n.hiddenS?"".concat(r.mediaQueries.tablet," { display: none; }"):void 0},function(n){var r=n.theme;return n.hiddenXS?"".concat(r.mediaQueries.mobile," { display: none; }"):void 0},function(n){var r=n.theme,s=n.hasRadius,k=n.borderRadius;return s?r.borderRadius:k},function(n){return n.borderStyle},function(n){return n.borderWidth},function(n){var r=n.borderColor;return n.theme.colors[r]},function(n){var r=n.theme,s=n.borderColor,k=n.borderStyle,M=n.borderWidth;if(s&&!k&&!M)return"1px solid ".concat(r.colors[s])},function(n){var r=n.theme,s=n.shadow;return r.shadows[s]},function(n){return n.pointerEvents},function(n){var r=n._hover,s=n.theme;return r?r(s):void 0},function(n){return n.display},function(n){return n.position},function(n){var r=n.left;return n.theme.spaces[r]||r},function(n){var r=n.right;return n.theme.spaces[r]||r},function(n){var r=n.top;return n.theme.spaces[r]||r},function(n){var r=n.bottom;return n.theme.spaces[r]||r},function(n){return n.zIndex},function(n){return n.overflow},function(n){return n.cursor},function(n){var r=n.width;return n.theme.spaces[r]||r},function(n){var r=n.maxWidth;return n.theme.spaces[r]||r},function(n){var r=n.minWidth;return n.theme.spaces[r]||r},function(n){var r=n.height;return n.theme.spaces[r]||r},function(n){var r=n.maxHeight;return n.theme.spaces[r]||r},function(n){var r=n.minHeight;return n.theme.spaces[r]||r},function(n){return n.transition},function(n){return n.transform},function(n){return n.animation},function(n){return n.shrink},function(n){return n.grow},function(n){return n.basis},function(n){return n.flex},function(n){return n.textAlign},function(n){return n.textTransform},function(n){return n.lineHeight},function(n){return n.cursor});j.defaultProps=w,j.propTypes=b},function(t,f){function e(){return t.exports=e=Object.assign||function(o){for(var i=1;i<arguments.length;i++){var p=arguments[i];for(var u in p)Object.prototype.hasOwnProperty.call(p,u)&&(o[u]=p[u])}return o},t.exports.default=t.exports,t.exports.__esModule=!0,e.apply(this,arguments)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0},function(t,f,e){"use strict";var o=e(10),i=e.n(o),p=e(13),u=e.n(p);f.a=function(d,c,g){var O=c;if(Array.isArray(c)||u()(c)!=="object"||(O=[c==null?void 0:c.desktop,c==null?void 0:c.tablet,c==null?void 0:c.mobile]),O!==void 0){if(Array.isArray(O)){var S=O,a=i()(S,3),l=a[0],w=a[1],b=a[2],T="".concat(d,": ").concat(g.spaces[l],";");return w!==void 0&&(T+="".concat(g.mediaQueries.tablet,`{
81
+ `).concat(d,": ").concat(g.spaces[w],`;
82
+ }`)),b!==void 0&&(T+="".concat(g.mediaQueries.mobile,`{
83
+ `).concat(d,": ").concat(g.spaces[b],`;
84
+ }`)),T}var j=g.spaces[O]||O;return"".concat(d,": ").concat(j,";")}}},function(t,f,e){"use strict";e.r(f),e.d(f,"Typography",function(){return j});var o,i=e(3),p=e.n(i),u=e(2),d=e.n(u),c=["alpha","beta","delta","epsilon","omega","pi","sigma"],g=e(1),O=e.n(g),S=e(0),a=e.n(S),l=function(n){return O.a.createElement("div",n)},w={ellipsis:!1,fontWeight:void 0,fontSize:void 0,lineHeight:void 0,textColor:void 0,textTransform:void 0,variant:"omega"},b={ellipsis:a.a.bool,fontSize:a.a.oneOfType([a.a.number,a.a.string]),fontWeight:a.a.string,lineHeight:a.a.oneOfType([a.a.number,a.a.string]),textColor:a.a.string,textTransform:a.a.string,variant:a.a.oneOf(c)};l.defaultProps=w,l.propTypes=b;var T={fontSize:!0,fontWeight:!0},j=d.a.span.withConfig({shouldForwardProp:function(n,r){return!T[n]&&r(n)}})(o||(o=p()([`
85
+ font-weight: `,`;
86
+ font-size: `,`;
87
+ line-height: `,`;
88
+ color: `,`;
89
+ text-transform: `,`;
90
+ `,`
91
+ `,`
92
+ `])),function(n){var r=n.theme,s=n.fontWeight;return r.fontWeights[s]},function(n){var r=n.theme,s=n.fontSize;return r.fontSizes[s]},function(n){var r=n.theme,s=n.lineHeight;return r.lineHeights[s]},function(n){var r=n.theme,s=n.textColor;return r.colors[s||"neutral800"]},function(n){return n.textTransform},function(n){return n.ellipsis&&`
93
+ display: block;
94
+ white-space: nowrap;
95
+ overflow: hidden;
96
+ text-overflow: ellipsis;
97
+ `},function(n){var r=n.variant,s=n.theme;switch(r){case"alpha":return`
98
+ font-weight: `.concat(s.fontWeights.bold,`;
99
+ font-size: `).concat(s.fontSizes[5],`;
100
+ line-height: `).concat(s.lineHeights[2],`;
101
+ `);case"beta":return`
102
+ font-weight: `.concat(s.fontWeights.bold,`;
103
+ font-size: `).concat(s.fontSizes[4],`;
104
+ line-height: `).concat(s.lineHeights[1],`;
105
+ `);case"delta":return`
106
+ font-weight: `.concat(s.fontWeights.semiBold,`;
107
+ font-size: `).concat(s.fontSizes[3],`;
108
+ line-height: `).concat(s.lineHeights[2],`;
109
+ `);case"epsilon":return`
110
+ font-size: `.concat(s.fontSizes[3],`;
111
+ line-height: `).concat(s.lineHeights[6],`;
112
+ `);case"omega":return`
113
+ font-size: `.concat(s.fontSizes[2],`;
114
+ line-height: `).concat(s.lineHeights[4],`;
115
+ `);case"pi":return`
116
+ font-size: `.concat(s.fontSizes[1],`;
117
+ line-height: `).concat(s.lineHeights[3],`;
118
+ `);case"sigma":return`
119
+ font-weight: `.concat(s.fontWeights.bold,`;
120
+ font-size: `).concat(s.fontSizes[0],`;
121
+ line-height: `).concat(s.lineHeights[5],`;
122
+ text-transform: uppercase;
123
+ `);default:return`
124
+ font-size: `.concat(s.fontSizes[2],`;
125
+ `)}});j.defaultProps=w,j.propTypes=b},function(t,f,e){"use strict";e.r(f),e.d(f,"Flex",function(){return n});var o,i=e(3),p=e.n(i),u=e(2),d=e.n(u),c=e(5),g=e(7),O=e(1),S=e.n(O),a=e(0),l=e.n(a),w=function(r){return S.a.createElement("div",r)},b={alignItems:"center",basis:void 0,direction:"row",gap:void 0,inline:!1,justifyContent:void 0,reverse:!1,wrap:void 0},T={alignItems:l.a.string,basis:l.a.oneOfType([l.a.string,l.a.number]),direction:l.a.string,gap:l.a.oneOfType([l.a.shape({desktop:l.a.number,mobile:l.a.number,tablet:l.a.number}),l.a.number,l.a.arrayOf(l.a.number),l.a.string]),inline:l.a.bool,justifyContent:l.a.string,reverse:l.a.bool,shrink:l.a.number,wrap:l.a.string};w.defaultProps=b,w.propTypes=T;var j={direction:!0},n=d()(c.Box).withConfig({shouldForwardProp:function(r,s){return!j[r]&&s(r)}})(o||(o=p()([`
126
+ align-items: `,`;
127
+ display: `,`;
128
+ flex-direction: `,`;
129
+ flex-shrink: `,`;
130
+ flex-wrap: `,`;
131
+ `,`};
132
+ justify-content: `,`;
133
+ `])),function(r){return r.alignItems},function(r){return r.inline?"inline-flex":"flex"},function(r){return r.direction},function(r){return r.shrink},function(r){return r.wrap},function(r){var s=r.gap,k=r.theme;return Object(g.a)("gap",s,k)},function(r){return r.justifyContent});n.defaultProps=b,n.propTypes=T},function(t,f,e){var o=e(25),i=e(26),p=e(22),u=e(27);t.exports=function(d,c){return o(d)||i(d,c)||p(d,c)||u()},t.exports.default=t.exports,t.exports.__esModule=!0},,,function(t,f){function e(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?(t.exports=e=function(i){return typeof i},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=e=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},t.exports.default=t.exports,t.exports.__esModule=!0),e(o)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0},,,function(t,f,e){"use strict";e.d(f,"b",function(){return o}),e.d(f,"c",function(){return i}),e.d(f,"a",function(){return p});var o=function(u){return function(d){var c=d.theme,g=d.size;return c.sizes[u][g]}},i=function(){var u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"&";return function(d){var c=d.theme,g=d.hasError;return`
134
+ outline: none;
135
+ box-shadow: 0;
136
+ transition-property: border-color, box-shadow, fill;
137
+ transition-duration: 0.2s;
138
+
139
+ `.concat(u,`:focus-within {
140
+ border: 1px solid `).concat(g?c.colors.danger600:c.colors.primary600,`;
141
+ box-shadow: `).concat(g?c.colors.danger600:c.colors.primary600,` 0px 0px 0px 2px;
142
+ }
143
+ `)}},p=function(u){var d=u.theme;return`
144
+ position: relative;
145
+ outline: none;
146
+
147
+ &:after {
148
+ transition-property: all;
149
+ transition-duration: 0.2s;
150
+ border-radius: 8px;
151
+ content: '';
152
+ position: absolute;
153
+ top: -4px;
154
+ bottom: -4px;
155
+ left: -4px;
156
+ right: -4px;
157
+ border: 2px solid transparent;
158
+ }
159
+
160
+ &:focus-visible {
161
+ outline: none;
162
+ &:after {
163
+ border-radius: 8px;
164
+ content: '';
165
+ position: absolute;
166
+ top: -5px;
167
+ bottom: -5px;
168
+ left: -5px;
169
+ right: -5px;
170
+ border: 2px solid `.concat(d.colors.primary600,`;
171
+ }
172
+ }
173
+ `)}},,,function(t,f,e){"use strict";var o=e(20);function i(){}function p(){}p.resetWarningCache=i,t.exports=function(){function u(g,O,S,a,l,w){if(w!==o){var b=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw b.name="Invariant Violation",b}}function d(){return u}u.isRequired=u;var c={array:u,bool:u,func:u,number:u,object:u,string:u,symbol:u,any:u,arrayOf:d,element:u,elementType:u,instanceOf:d,node:u,objectOf:d,oneOf:d,oneOfType:d,shape:d,exact:d,checkPropTypes:p,resetWarningCache:i};return c.PropTypes=c,c}},function(t,f,e){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(t,f){t.exports=function(e,o){(o==null||o>e.length)&&(o=e.length);for(var i=0,p=new Array(o);i<o;i++)p[i]=e[i];return p},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,f,e){var o=e(21);t.exports=function(i,p){if(i){if(typeof i=="string")return o(i,p);var u=Object.prototype.toString.call(i).slice(8,-1);return u==="Object"&&i.constructor&&(u=i.constructor.name),u==="Map"||u==="Set"?Array.from(i):u==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(u)?o(i,p):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0},,function(t,f){t.exports=function(e,o){if(e==null)return{};var i,p,u={},d=Object.keys(e);for(p=0;p<d.length;p++)i=d[p],o.indexOf(i)>=0||(u[i]=e[i]);return u},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,f){t.exports=function(e){if(Array.isArray(e))return e},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,f){t.exports=function(e,o){var i=e==null?null:typeof Symbol!="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(i!=null){var p,u,d=[],c=!0,g=!1;try{for(i=i.call(e);!(c=(p=i.next()).done)&&(d.push(p.value),!o||d.length!==o);c=!0);}catch(O){g=!0,u=O}finally{try{c||i.return==null||i.return()}finally{if(g)throw u}}return d}},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,f){t.exports=function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
174
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)},t.exports.default=t.exports,t.exports.__esModule=!0},,,,,,,,,,,,,,,,,,,,,,,,,,function(t,f){t.exports=m},,,,,,,,,,,,function(t,f,e){"use strict";e.r(f),e.d(f,"TextButton",function(){return P});var o,i,p,u=e(6),d=e.n(u),c=e(4),g=e.n(c),O=e(3),S=e.n(O),a=e(1),l=e.n(a),w=e(0),b=e.n(w),T=e(2),j=e.n(T),n=e(53),r=e.n(n),s=e(5),k=e(8),M=e(9),_=e(16),F=["children","startIcon","endIcon","onClick","disabled","loading"],L=Object(T.keyframes)(o||(o=S()([`
175
+ from {
176
+ transform: rotate(0deg);
177
+ }
178
+ to {
179
+ transform: rotate(359deg);
180
+ }
181
+ `]))),Q=j.a.div(i||(i=S()([`
182
+ animation: `,` 2s infinite linear;
183
+ will-change: transform;
184
+ `])),L),U=j()(M.Flex)(p||(p=S()([`
185
+ background: transparent;
186
+ border: none;
187
+
188
+ &[aria-disabled='true'] {
189
+ pointer-events: none;
190
+ svg path {
191
+ fill: `,`;
192
+ }
193
+ }
194
+
195
+ svg {
196
+ display: flex;
197
+ font-size: `,`rem;
198
+ }
199
+
200
+ svg path {
201
+ fill: `,`;
202
+ }
203
+
204
+ `,`
205
+ `])),function(z){return z.theme.colors.neutral600},.625,function(z){return z.theme.colors.primary600},_.a),P=l.a.forwardRef(function(z,X){var I=z.children,B=z.startIcon,A=z.endIcon,H=z.onClick,W=z.disabled,E=z.loading,G=g()(z,F),V=H&&!W?H:void 0,R=W||E;return l.a.createElement(U,d()({ref:X,"aria-disabled":R,onClick:V,as:"button",type:"button"},G),(B||E)&&l.a.createElement(s.Box,{as:"span",paddingRight:2,"aria-hidden":!0},E?l.a.createElement(Q,null,l.a.createElement(r.a,null)):B),l.a.createElement(k.Typography,{variant:"pi",textColor:R?"neutral600":"primary600"},I),A&&l.a.createElement(s.Box,{as:"span",paddingLeft:2,"aria-hidden":!0},A))});P.displayName="TextButton",P.defaultProps={disabled:!1,startIcon:void 0,endIcon:void 0,loading:!1,onClick:void 0},P.propTypes={children:b.a.node.isRequired,disabled:b.a.bool,endIcon:b.a.element,loading:b.a.bool,onClick:b.a.func,startIcon:b.a.element}}])})},56671:(y,C,h)=>{var x=h(35897),v=h(74741),m=v(x);y.exports=m},52920:(y,C,h)=>{var x=h(56671),v=h(81580);function m(t,f){var e=-1,o=v(t)?Array(t.length):[];return x(t,function(i,p,u){o[++e]=f(i,p,u)}),o}y.exports=m},50690:(y,C,h)=>{var x=h(26460),v=h(80166),m=h(88904),t=h(52920),f=h(36024),e=h(76535),o=h(1397),i=h(15362),p=h(77236);function u(d,c,g){c.length?c=x(c,function(a){return p(a)?function(l){return v(l,a.length===1?a[0]:a)}:a}):c=[i];var O=-1;c=x(c,e(m));var S=t(d,function(a,l,w){var b=x(c,function(T){return T(a)});return{criteria:b,index:++O,value:a}});return f(S,function(a,l){return o(a,l,g)})}y.exports=u},36024:y=>{function C(h,x){var v=h.length;for(h.sort(x);v--;)h[v]=h[v].value;return h}y.exports=C},40709:(y,C,h)=>{var x=h(22945);function v(m,t){if(m!==t){var f=m!==void 0,e=m===null,o=m===m,i=x(m),p=t!==void 0,u=t===null,d=t===t,c=x(t);if(!u&&!c&&!i&&m>t||i&&p&&d&&!u&&!c||e&&p&&d||!f&&d||!o)return 1;if(!e&&!i&&!c&&m<t||c&&f&&o&&!e&&!i||u&&f&&o||!p&&o||!d)return-1}return 0}y.exports=v},1397:(y,C,h)=>{var x=h(40709);function v(m,t,f){for(var e=-1,o=m.criteria,i=t.criteria,p=o.length,u=f.length;++e<p;){var d=x(o[e],i[e]);if(d){if(e>=u)return d;var c=f[e];return d*(c=="desc"?-1:1)}}return m.index-t.index}y.exports=v},74741:(y,C,h)=>{var x=h(81580);function v(m,t){return function(f,e){if(f==null)return f;if(!x(f))return m(f,e);for(var o=f.length,i=t?o:-1,p=Object(f);(t?i--:++i<o)&&e(p[i],i,p)!==!1;);return f}}y.exports=v},98978:(y,C,h)=>{var x=h(40314),v=h(50690),m=h(94569),t=h(63108),f=m(function(e,o){if(e==null)return[];var i=o.length;return i>1&&t(e,o[0],o[1])?o=[]:i>2&&t(o[0],o[1],o[2])&&(o=[o[0]]),v(e,x(o,1),[])});y.exports=f}}]);
@@ -0,0 +1,30 @@
1
+ "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[4318],{4318:(gn,Ne,r)=>{r.d(Ne,{Z:()=>on});var a=r(32735),P=r(5636),g=r(88425),ne=r(16540),Le=r(83281),R=r(92891),ae=r(5141),se=r(84968),Be=r(7602),j=r(17247),oe=r(64213),we=r(54049);const De=(e,t,n="en")=>{if(t&&typeof t=="number"){const o=t/24/60/60/1e3;return(0,oe.format)((0,oe.addDays)(new Date(e),o),"PPP",{locale:we[n]})}return"Unlimited"};var B=r(5173);const je=B.Ry().shape({name:B.Z_(g.translatedErrors.string).required(g.translatedErrors.required),type:B.Z_(g.translatedErrors.string).oneOf(["read-only","full-access","custom"]).required(g.translatedErrors.required),description:B.Z_().nullable(),lifespan:B.Rx().integer().min(1).nullable().defined(g.translatedErrors.required)}),re=e=>{const t={allActionsIds:[],permissions:[]};return t.permissions=Object.keys(e).map(n=>({apiId:n,label:n.split("::")[1],controllers:(0,R.flatten)(Object.keys(e[n].controllers).map(o=>({controller:o,actions:(0,R.flatten)(e[n].controllers[o].map(i=>{const c=`${n}.${o}.${i}`;return n.includes("api::")&&t.allActionsIds.push(c),{action:i,actionId:c}}))})))})),t};var V=r(11856),K=r(44526),Ve=r(88677),ie=r.n(Ve),Ge=r(60216),s=r.n(Ge);const W=({apiTokenName:e})=>{const{formatMessage:t}=(0,P.useIntl)();return(0,g.useFocusWhenNavigate)(),a.createElement(ne.Main,{"aria-busy":"true"},a.createElement(g.SettingsPageTitle,{name:"API Tokens"}),a.createElement(V.HeaderLayout,{primaryAction:a.createElement(K.Button,{disabled:!0,startIcon:a.createElement(ie(),null),type:"button",size:"L"},t({id:"global.save",defaultMessage:"Save"})),title:e||t({id:"Settings.apiTokens.createPage.title",defaultMessage:"Create API Token"})}),a.createElement(V.ContentLayout,null,a.createElement(g.LoadingIndicatorPage,null)))};W.defaultProps={apiTokenName:null},W.propTypes={apiTokenName:s().string};const Ue=W;var Fe=r(98599),$e=r.n(Fe),O=r(90662),He=r(23101),le=r.n(He),Ke=r(775),We=(e,t,n)=>new Promise((o,i)=>{var c=m=>{try{u(n.next(m))}catch(y){i(y)}},l=m=>{try{u(n.throw(m))}catch(y){i(y)}},u=m=>m.done?o(m.value):Promise.resolve(m.value).then(c,l);u((n=n.apply(e,t)).next())});const z=({onRegenerate:e,idToRegenerate:t})=>{const{formatMessage:n}=(0,P.useIntl)(),[o,i]=(0,a.useState)(!1),{regenerateData:c,isLoadingConfirmation:l}=(0,Ke.rW)(t,e),u=()=>We(void 0,null,function*(){c(),i(!1)});return a.createElement(a.Fragment,null,a.createElement(K.Button,{startIcon:a.createElement(le(),null),type:"button",size:"S",variant:"tertiary",onClick:()=>i(!0),name:"regenerate"},n({id:"Settings.apiTokens.regenerate",defaultMessage:"Regenerate"})),a.createElement(g.ConfirmDialog,{bodyText:{id:"Settings.apiTokens.popUpWarning.message",defaultMessage:"Are you sure you want to regenerate this token?"},iconRightButton:a.createElement(le(),null),isConfirmButtonLoading:l,isOpen:o,onToggleDialog:()=>i(!1),onConfirm:u,leftButtonText:{id:"Settings.apiTokens.Button.cancel",defaultMessage:"Cancel"},rightButtonText:{id:"Settings.apiTokens.Button.regenerate",defaultMessage:"Regenerate"},title:{id:"Settings.apiTokens.RegenerateDialog.title",defaultMessage:"Regenerate token"}}))};z.defaultProps={onRegenerate(){}},z.propTypes={onRegenerate:s().func,idToRegenerate:s().string.isRequired};const ce=z;var ze=Object.defineProperty,Ye=Object.defineProperties,Ze=Object.getOwnPropertyDescriptors,de=Object.getOwnPropertySymbols,Qe=Object.prototype.hasOwnProperty,Je=Object.prototype.propertyIsEnumerable,pe=(e,t,n)=>t in e?ze(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Xe=(e,t)=>{for(var n in t||(t={}))Qe.call(t,n)&&pe(e,n,t[n]);if(de)for(var n of de(t))Je.call(t,n)&&pe(e,n,t[n]);return e},qe=(e,t)=>Ye(e,Ze(t));const ue=({apiToken:e,setApiToken:t,canEditInputs:n,canRegenerate:o,isSubmitting:i})=>{const{formatMessage:c}=(0,P.useIntl)(),l=u=>{t(qe(Xe({},e),{accessKey:u}))};return a.createElement(V.HeaderLayout,{title:(e==null?void 0:e.name)||c({id:"Settings.apiTokens.createPage.title",defaultMessage:"Create API Token"}),primaryAction:n?a.createElement(O.Stack,{horizontal:!0,spacing:2},o&&(e==null?void 0:e.id)&&a.createElement(ce,{onRegenerate:l,idToRegenerate:e==null?void 0:e.id}),a.createElement(K.Button,{disabled:i,loading:i,startIcon:a.createElement(ie(),null),type:"submit",size:"S"},c({id:"global.save",defaultMessage:"Save"}))):o&&(e==null?void 0:e.id)&&a.createElement(ce,{onRegenerate:l,idToRegenerate:e==null?void 0:e.id}),navigationAction:a.createElement(g.Link,{startIcon:a.createElement($e(),null),to:"/settings/api-tokens"},c({id:"global.back",defaultMessage:"Back"}))})};ue.propTypes={apiToken:s().shape({id:s().string,type:s().string,lifespan:s().number,name:s().string,accessKey:s().string,permissions:s().array,description:s().string,createdAt:s().string}).isRequired,canEditInputs:s().bool.isRequired,canRegenerate:s().bool.isRequired,setApiToken:s().func.isRequired,isSubmitting:s().bool.isRequired};const _e=ue;var et=r(20763),tt=r(68192),nt=r.n(tt),at=r(59087),st=r(18909),ot=r.n(st);const Y=({apiToken:e})=>{const{formatMessage:t}=(0,P.useIntl)(),n=(0,g.useNotification)(),{trackUsage:o}=(0,g.useTracking)(),i=(0,a.useRef)(o);return a.createElement(g.ContentBox,{endAction:e&&a.createElement("span",{style:{alignSelf:"start"}},a.createElement(at.CopyToClipboard,{onCopy:()=>{i.current("didCopyTokenKey"),n({type:"success",message:{id:"Settings.apiTokens.notification.copied"}})},text:e},a.createElement(et.IconButton,{label:t({id:"app.component.CopyToClipboard.label",defaultMessage:"Copy to clipboard"}),noBorder:!0,icon:a.createElement(nt(),null),style:{padding:0,height:"1rem"}}))),title:e||t({id:"Settings.apiTokens.copy.editTitle",defaultMessage:"This token isn\u2019t accessible anymore."}),subtitle:t(e?{id:"Settings.apiTokens.copy.lastWarning",defaultMessage:"Make sure to copy this token, you won\u2019t be able to see it again!"}:{id:"Settings.apiTokens.copy.editMessage",defaultMessage:"For security reasons, you can only see your token once."}),icon:a.createElement(ot(),null),iconBackground:"neutral100"})};Y.defaultProps={apiToken:null},Y.propTypes={apiToken:s().string};const rt=Y;var A=r(9808),T=r(78330),C=r(25716),it=r(90353),lt=r(37178),h=r(95602);const Z=({errors:e,onChange:t,canEditInputs:n,isCreating:o,values:i,apiToken:c,onDispatch:l,setHasChangedPermissions:u})=>{var m,y,N,b;const{formatMessage:f}=(0,P.useIntl)(),[D]=(0,g.usePersistentState)("strapi-admin-language","en"),k=({target:{value:d}})=>{u(!1),d==="full-access"&&l({type:"SELECT_ALL_ACTIONS"}),d==="read-only"&&l({type:"ON_CHANGE_READ_ONLY"})};return a.createElement(A.Box,{background:"neutral0",hasRadius:!0,shadow:"filterShadow",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},a.createElement(O.Stack,{spacing:4},a.createElement(h.Typography,{variant:"delta",as:"h2"},f({id:"global.details",defaultMessage:"Details"})),a.createElement(T.Grid,{gap:5},a.createElement(T.GridItem,{key:"name",col:6,xs:12},a.createElement(lt.TextInput,{name:"name",error:e.name?f((m=e.name)!=null&&m.id?e.name:{id:e.name,defaultMessage:e.name}):null,label:f({id:"Settings.apiTokens.form.name",defaultMessage:"Name"}),onChange:t,value:i.name,disabled:!n,required:!0})),a.createElement(T.GridItem,{key:"description",col:6,xs:12},a.createElement(it.Textarea,{label:f({id:"Settings.apiTokens.form.description",defaultMessage:"Description"}),name:"description",error:e.description?f((y=e.description)!=null&&y.id?e.description:{id:e.description,defaultMessage:e.description}):null,onChange:t,disabled:!n},i.description)),a.createElement(T.GridItem,{key:"lifespan",col:6,xs:12},a.createElement(C.Select,{name:"lifespan",label:f({id:"Settings.apiTokens.form.duration",defaultMessage:"Token duration"}),value:i.lifespan,error:e.lifespan?f((N=e.lifespan)!=null&&N.id?e.lifespan:{id:e.lifespan,defaultMessage:e.lifespan}):null,onChange:d=>{t({target:{name:"lifespan",value:d}})},required:!0,disabled:!o,placeholder:"Select"},a.createElement(C.Option,{value:"604800000"},f({id:"Settings.apiTokens.duration.7-days",defaultMessage:"7 days"})),a.createElement(C.Option,{value:"2592000000"},f({id:"Settings.apiTokens.duration.30-days",defaultMessage:"30 days"})),a.createElement(C.Option,{value:"7776000000"},f({id:"Settings.apiTokens.duration.90-days",defaultMessage:"90 days"})),a.createElement(C.Option,{value:null},f({id:"Settings.apiTokens.duration.unlimited",defaultMessage:"Unlimited"}))),a.createElement(h.Typography,{variant:"pi",textColor:"neutral600"},!o&&`${f({id:"Settings.apiTokens.duration.expiration-date",defaultMessage:"Expiration date"})}: ${De(c==null?void 0:c.createdAt,parseInt(i.lifespan,10),D)}`)),a.createElement(T.GridItem,{key:"type",col:6,xs:12},a.createElement(C.Select,{name:"type",label:f({id:"Settings.apiTokens.form.type",defaultMessage:"Token type"}),value:i==null?void 0:i.type,error:e.type?f((b=e.type)!=null&&b.id?e.type:{id:e.type,defaultMessage:e.type}):null,onChange:d=>{k({target:{value:d}}),t({target:{name:"type",value:d}})},placeholder:"Select",required:!0,disabled:!n},a.createElement(C.Option,{value:"read-only"},f({id:"Settings.apiTokens.types.read-only",defaultMessage:"Read-only"})),a.createElement(C.Option,{value:"full-access"},f({id:"Settings.apiTokens.types.full-access",defaultMessage:"Full access"})),a.createElement(C.Option,{value:"custom"},f({id:"Settings.apiTokens.types.custom",defaultMessage:"Custom"})))))))};Z.propTypes={errors:s().shape({name:s().string,description:s().string,lifespan:s().string,type:s().string}),onChange:s().func.isRequired,canEditInputs:s().bool.isRequired,values:s().shape({name:s().string,description:s().string,lifespan:s().string,type:s().string}).isRequired,isCreating:s().bool.isRequired,apiToken:s().shape({id:s().string,type:s().string,lifespan:s().number,name:s().string,accessKey:s().string,permissions:s().array,description:s().string,createdAt:s().string}).isRequired,onDispatch:s().func.isRequired,setHasChangedPermissions:s().func.isRequired},Z.defaultProps={errors:{}};const ct=Z;var Q=r(12001),me=r(52111),dt=r(19192),pt=r(42258),ut=r.n(pt),G=r(19615),ge=Object.getOwnPropertySymbols,mt=Object.prototype.hasOwnProperty,gt=Object.prototype.propertyIsEnumerable,ft=(e,t)=>{var n={};for(var o in e)mt.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&ge)for(var o of ge(e))t.indexOf(o)<0&&gt.call(e,o)&&(n[o]=e[o]);return n};const fe=(0,a.createContext)({}),ye=e=>{var t=e,{children:n}=t,o=ft(t,["children"]);return a.createElement(fe.Provider,{value:o},n)},J=()=>(0,a.useContext)(fe);ye.propTypes={children:s().node.isRequired};const ve=G.css`
2
+ background: ${e=>e.theme.colors.primary100};
3
+ svg {
4
+ opacity: 1;
5
+ }
6
+ `,yt=(0,G.default)(A.Box)`
7
+ display: flex;
8
+ justify-content: space-between;
9
+ align-items: center;
10
+
11
+ svg {
12
+ opacity: 0;
13
+ path {
14
+ fill: ${e=>e.theme.colors.primary600};
15
+ }
16
+ }
17
+
18
+ /* Show active style both on hover and when the action is selected */
19
+ ${e=>e.isActive&&ve}
20
+ &:hover {
21
+ ${ve}
22
+ }
23
+ `,vt=G.default.div`
24
+ flex: 1;
25
+ align-self: center;
26
+ border-top: 1px solid ${({theme:e})=>e.colors.neutral150};
27
+ `,X=({controllers:e,label:t,orderNumber:n,disabled:o,onExpanded:i,indexExpandendCollapsedContent:c})=>{const{value:{onChangeSelectAll:l,onChange:u,selectedActions:m,setSelectedAction:y,selectedAction:N}}=J(),[b,f]=(0,a.useState)(!1),D=()=>{f(d=>!d),i(n)};(0,a.useEffect)(()=>{c!==null&&c!==n&&b&&f(!1)},[c,n,b]);const k=d=>d===N;return a.createElement(Q.Accordion,{expanded:b,onToggle:D,variant:n%2?"primary":"secondary"},a.createElement(Q.AccordionToggle,{title:(0,R.capitalize)(t)}),a.createElement(Q.AccordionContent,null,e==null?void 0:e.map(d=>{const x=d.actions.every(E=>m.includes(E.actionId)),v=d.actions.some(E=>m.includes(E.actionId));return a.createElement(A.Box,{key:`${t}.${d==null?void 0:d.controller}`},a.createElement(dt.Flex,{justifyContent:"space-between",alignItems:"center",padding:4},a.createElement(A.Box,{paddingRight:4},a.createElement(h.Typography,{variant:"sigma",textColor:"neutral600"},d==null?void 0:d.controller)),a.createElement(vt,null),a.createElement(A.Box,{paddingLeft:4},a.createElement(me.Checkbox,{value:x,indeterminate:!x&&v,onValueChange:()=>{l({target:{value:[...d.actions]}})},disabled:o},"Select all"))),a.createElement(T.Grid,{gap:4,padding:4},(d==null?void 0:d.actions)&&(d==null?void 0:d.actions.map(E=>a.createElement(T.GridItem,{col:6,key:E.actionId},a.createElement(yt,{isActive:k(E.actionId),padding:2,hasRadius:!0},a.createElement(me.Checkbox,{value:m.includes(E.actionId),name:E.actionId,onValueChange:()=>{u({target:{value:E.actionId}})},disabled:o},E.action),a.createElement("button",{type:"button","data-testid":"action-cog",onClick:()=>y({target:{value:E.actionId}}),style:{display:"inline-flex",alignItems:"center"}},a.createElement(ut(),null))))))))})))};X.defaultProps={controllers:[],orderNumber:0,disabled:!1,onExpanded:()=>null,indexExpandendCollapsedContent:null},X.propTypes={controllers:s().array,orderNumber:s().number,label:s().string.isRequired,disabled:s().bool,onExpanded:s().func,indexExpandendCollapsedContent:s().number};const Et=X;var ht=Object.defineProperty,U=Object.getOwnPropertySymbols,Ee=Object.prototype.hasOwnProperty,he=Object.prototype.propertyIsEnumerable,Te=(e,t,n)=>t in e?ht(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Tt=(e,t)=>{for(var n in t||(t={}))Ee.call(t,n)&&Te(e,n,t[n]);if(U)for(var n of U(t))he.call(t,n)&&Te(e,n,t[n]);return e},Pt=(e,t)=>{var n={};for(var o in e)Ee.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&U)for(var o of U(e))t.indexOf(o)<0&&he.call(e,o)&&(n[o]=e[o]);return n};const q=e=>{var t=e,{section:n}=t,o=Pt(t,["section"]);const[i,c]=(0,a.useState)(null),l=u=>c(u);return a.createElement(A.Box,{padding:4,background:"neutral0"},n&&n.map((u,m)=>a.createElement(Et,Tt({key:u.apiId,label:u.label,controllers:u.controllers,orderNumber:m,indexExpandendCollapsedContent:i,onExpanded:l,name:u.apiId},o))))};q.defaultProps={section:null},q.propTypes={section:s().arrayOf(s().object)};const Ct=q;var St=r(37213),Ot=r.n(St),At=r(15738),bt=r.n(At);const It=e=>{switch(e){case"POST":return{text:"success600",border:"success200",background:"success100"};case"GET":return{text:"secondary600",border:"secondary200",background:"secondary100"};case"PUT":return{text:"warning600",border:"warning200",background:"warning100"};case"DELETE":return{text:"danger600",border:"danger200",background:"danger100"};default:return{text:"neutral600",border:"neutral200",background:"neutral100"}}},Rt=(0,G.default)(A.Box)`
28
+ margin: -1px;
29
+ border-radius: ${({theme:e})=>e.spaces[1]} 0 0 ${({theme:e})=>e.spaces[1]};
30
+ `;function _({route:e}){const{formatMessage:t}=(0,P.useIntl)(),{method:n,handler:o,path:i}=e,c=i?bt()(i.split("/")):[],[l="",u=""]=o?o.split("."):[],m=It(e.method);return a.createElement(O.Stack,{spacing:2},a.createElement(h.Typography,{variant:"delta",as:"h3"},t({id:"Settings.apiTokens.createPage.BoundRoute.title",defaultMessage:"Bound route to"}),"\xA0",a.createElement("span",null,l),a.createElement(h.Typography,{variant:"delta",textColor:"primary600"},".",u)),a.createElement(O.Stack,{horizontal:!0,hasRadius:!0,background:"neutral0",borderColor:"neutral200",spacing:0},a.createElement(Rt,{background:m.background,borderColor:m.border,padding:2},a.createElement(h.Typography,{fontWeight:"bold",textColor:m.text},n)),a.createElement(A.Box,{paddingLeft:2,paddingRight:2},Ot()(c,y=>a.createElement(h.Typography,{key:y,textColor:y.includes(":")?"neutral600":"neutral900"},"/",y)))))}_.defaultProps={route:{handler:"Nocontroller.error",method:"GET",path:"/there-is-no-path"}},_.propTypes={route:s().shape({handler:s().string,method:s().string,path:s().string})};const kt=_,xt=()=>{var e;const{value:{selectedAction:t,routes:n}}=J(),{formatMessage:o}=(0,P.useIntl)(),i=t==null?void 0:t.split(".")[0];return a.createElement(T.GridItem,{col:5,background:"neutral150",paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7,style:{minHeight:"100%"}},t?a.createElement(O.Stack,{spacing:2},(e=n[i])==null?void 0:e.map(c=>{var l,u;return((u=(l=c.config.auth)==null?void 0:l.scope)==null?void 0:u.includes(t))||c.handler===t?a.createElement(kt,{key:c.handler,route:c}):null})):a.createElement(O.Stack,{spacing:2},a.createElement(h.Typography,{variant:"delta",as:"h3"},o({id:"Settings.apiTokens.createPage.permissions.header.title",defaultMessage:"Advanced settings"})),a.createElement(h.Typography,{as:"p",textColor:"neutral600"},o({id:"Settings.apiTokens.createPage.permissions.header.hint",defaultMessage:"Select the application's actions or the plugin's actions and click on the cog icon to display the bound route"}))))};var Mt=Object.defineProperty,F=Object.getOwnPropertySymbols,Pe=Object.prototype.hasOwnProperty,Ce=Object.prototype.propertyIsEnumerable,Se=(e,t,n)=>t in e?Mt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Nt=(e,t)=>{for(var n in t||(t={}))Pe.call(t,n)&&Se(e,n,t[n]);if(F)for(var n of F(t))Ce.call(t,n)&&Se(e,n,t[n]);return e},Lt=(e,t)=>{var n={};for(var o in e)Pe.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&F)for(var o of F(e))t.indexOf(o)<0&&Ce.call(e,o)&&(n[o]=e[o]);return n};const Bt=e=>{var t=Lt(e,[]);const{value:{data:n}}=J(),{formatMessage:o}=(0,P.useIntl)();return a.createElement(T.Grid,{gap:0,shadow:"filterShadow",hasRadius:!0,background:"neutral0"},a.createElement(T.GridItem,{col:7,paddingTop:6,paddingBottom:6,paddingLeft:7,paddingRight:7},a.createElement(O.Stack,{spacing:2},a.createElement(h.Typography,{variant:"delta",as:"h2"},o({id:"Settings.apiTokens.createPage.permissions.title",defaultMessage:"Permissions"})),a.createElement(h.Typography,{as:"p",textColor:"neutral600"},o({id:"Settings.apiTokens.createPage.permissions.description",defaultMessage:"Only actions bound by a route are listed below."}))),(n==null?void 0:n.permissions)&&a.createElement(Ct,Nt({section:n==null?void 0:n.permissions},t))),a.createElement(xt,null))},wt=(0,a.memo)(Bt),ee=({apiToken:e,errors:t,onChange:n,canEditInputs:o,isCreating:i,values:c,onDispatch:l,setHasChangedPermissions:u})=>a.createElement(V.ContentLayout,null,a.createElement(O.Stack,{spacing:6},Boolean(e==null?void 0:e.name)&&a.createElement(rt,{apiToken:e.accessKey}),a.createElement(ct,{errors:t,onChange:n,canEditInputs:o,isCreating:i,values:c,apiToken:e,onDispatch:l,setHasChangedPermissions:u}),a.createElement(wt,{disabled:!o||(c==null?void 0:c.type)==="read-only"||(c==null?void 0:c.type)==="full-access"})));ee.propTypes={errors:s().shape({name:s().string,description:s().string,lifespan:s().string,type:s().string}),apiToken:s().shape({id:s().string,type:s().string,lifespan:s().number,name:s().string,accessKey:s().string,permissions:s().array,description:s().string,createdAt:s().string}).isRequired,onChange:s().func.isRequired,canEditInputs:s().bool.isRequired,isCreating:s().bool.isRequired,values:s().shape({name:s().string,description:s().string,lifespan:s().string,type:s().string}).isRequired,onDispatch:s().func.isRequired,setHasChangedPermissions:s().func.isRequired},ee.defaultProps={errors:{}};const Dt=ee;var jt=r(83983),Vt=Object.defineProperty,Gt=Object.defineProperties,Ut=Object.getOwnPropertyDescriptors,Oe=Object.getOwnPropertySymbols,Ft=Object.prototype.hasOwnProperty,$t=Object.prototype.propertyIsEnumerable,Ae=(e,t,n)=>t in e?Vt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ht=(e,t)=>{for(var n in t||(t={}))Ft.call(t,n)&&Ae(e,n,t[n]);if(Oe)for(var n of Oe(t))$t.call(t,n)&&Ae(e,n,t[n]);return e},Kt=(e,t)=>Gt(e,Ut(t));const Wt=(e,t=[])=>Kt(Ht({},e),{selectedAction:null,routes:[],selectedActions:[],data:re(t)});var zt=r(49415),Yt=Object.defineProperty,be=Object.getOwnPropertySymbols,Zt=Object.prototype.hasOwnProperty,Qt=Object.prototype.propertyIsEnumerable,Ie=(e,t,n)=>t in e?Yt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Jt=(e,t)=>{for(var n in t||(t={}))Zt.call(t,n)&&Ie(e,n,t[n]);if(be)for(var n of be(t))Qt.call(t,n)&&Ie(e,n,t[n]);return e};const Xt={data:{},selectedActions:[]},qt=(e,t)=>(0,zt.default)(e,n=>{switch(t.type){case"ON_CHANGE":{n.selectedActions.includes(t.value)?(0,R.pull)(n.selectedActions,t.value):n.selectedActions.push(t.value);break}case"SELECT_ALL_IN_PERMISSION":{t.value.every(i=>n.selectedActions.includes(i.actionId))?t.value.forEach(i=>{(0,R.pull)(n.selectedActions,i.actionId)}):t.value.forEach(i=>{n.selectedActions.push(i.actionId)});break}case"SELECT_ALL_ACTIONS":{n.selectedActions=[...n.data.allActionsIds];break}case"ON_CHANGE_READ_ONLY":{const o=n.data.allActionsIds.filter(i=>i.includes("find")||i.includes("findOne"));n.selectedActions=[...o];break}case"UPDATE_PERMISSIONS_LAYOUT":{n.data=re(t.value);break}case"UPDATE_ROUTES":{n.routes=Jt({},t.value);break}case"UPDATE_PERMISSIONS":{n.selectedActions=[...t.value];break}case"SET_SELECTED_ACTION":{n.selectedAction=t.value;break}default:return n}});var _t=Object.defineProperty,en=Object.defineProperties,tn=Object.getOwnPropertyDescriptors,Re=Object.getOwnPropertySymbols,nn=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable,ke=(e,t,n)=>t in e?_t(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,w=(e,t)=>{for(var n in t||(t={}))nn.call(t,n)&&ke(e,n,t[n]);if(Re)for(var n of Re(t))an.call(t,n)&&ke(e,n,t[n]);return e},xe=(e,t)=>en(e,tn(t)),$=(e,t,n)=>new Promise((o,i)=>{var c=m=>{try{u(n.next(m))}catch(y){i(y)}},l=m=>{try{u(n.throw(m))}catch(y){i(y)}},u=m=>m.done?o(m.value):Promise.resolve(m.value).then(c,l);u((n=n.apply(e,t)).next())});const sn="Name already taken",on=()=>{var e;(0,g.useFocusWhenNavigate)();const{formatMessage:t}=(0,P.useIntl)(),{lockApp:n,unlockApp:o}=(0,g.useOverlayBlocker)(),i=(0,g.useNotification)(),c=(0,ae.useHistory)(),[l,u]=(0,a.useState)((e=c.location.state)!=null&&e.apiToken.accessKey?w({},c.location.state.apiToken):null),{trackUsage:m}=(0,g.useTracking)(),y=(0,a.useRef)(m),{setCurrentStep:N}=(0,g.useGuidedTour)(),{allowedActions:{canCreate:b,canUpdate:f,canRegenerate:D}}=(0,g.useRBAC)(jt.Z.settings["api-tokens"]),[k,d]=(0,a.useReducer)(qt,Xt,p=>Wt(p,{})),{params:{id:x}}=(0,ae.useRouteMatch)("/settings/api-tokens/:id"),v=x==="create";(0,se.useQuery)("content-api-permissions",()=>$(void 0,null,function*(){const[p,M]=yield Promise.all(["/admin/content-api/permissions","/admin/content-api/routes"].map(L=>$(void 0,null,function*(){const{data:I}=yield j.be.get(L);return I.data})));d({type:"UPDATE_PERMISSIONS_LAYOUT",value:p}),d({type:"UPDATE_ROUTES",value:M}),l&&((l==null?void 0:l.type)==="read-only"&&d({type:"ON_CHANGE_READ_ONLY"}),(l==null?void 0:l.type)==="full-access"&&d({type:"SELECT_ALL_ACTIONS"}),(l==null?void 0:l.type)==="custom"&&d({type:"UPDATE_PERMISSIONS",value:l==null?void 0:l.permissions}))}),{onError(){i({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),(0,a.useEffect)(()=>{y.current(v?"didAddTokenFromList":"didEditTokenFromList")},[v]);const{status:E}=(0,se.useQuery)(["api-token",x],()=>$(void 0,null,function*(){const{data:{data:p}}=yield j.be.get(`/admin/api-tokens/${x}`);return u(w({},p)),(p==null?void 0:p.type)==="read-only"&&d({type:"ON_CHANGE_READ_ONLY"}),(p==null?void 0:p.type)==="full-access"&&d({type:"SELECT_ALL_ACTIONS"}),(p==null?void 0:p.type)==="custom"&&d({type:"UPDATE_PERMISSIONS",value:p==null?void 0:p.permissions}),p}),{enabled:!v&&!l,onError(){i({type:"warning",message:{id:"notification.error",defaultMessage:"An error occured"}})}}),rn=(p,M)=>$(void 0,null,function*(){var L,I,H;y.current(v?"willCreateToken":"willEditToken"),n();try{const{data:{data:S}}=v?yield j.be.post("/admin/api-tokens",xe(w({},p),{lifespan:p.lifespan&&parseInt(p.lifespan,10)?parseInt(p.lifespan,10):p.lifespan,permissions:p.type==="custom"?k.selectedActions:null})):yield j.be.put(`/admin/api-tokens/${x}`,{name:p.name,description:p.description,type:p.type,permissions:p.type==="custom"?k.selectedActions:null});v&&(c.replace(`/settings/api-tokens/${S.id}`,{apiToken:S}),N("apiTokens.success")),o(),u(w({},S)),i({type:"success",message:t(v?{id:"notification.success.tokencreated",defaultMessage:"API Token successfully created"}:{id:"notification.success.tokenedited",defaultMessage:"API Token successfully edited"})}),y.current(v?"didCreateToken":"didEditToken",{type:l.type})}catch(S){const mn=(0,Be.Iz)(S.response.data);M.setErrors(mn),((H=(I=(L=S==null?void 0:S.response)==null?void 0:L.data)==null?void 0:I.error)==null?void 0:H.message)===sn?i({type:"warning",message:(0,R.get)(S,"response.data.message","notification.error.tokennamenotunique")}):i({type:"warning",message:(0,R.get)(S,"response.data.message","notification.error")}),o()}}),[ln,te]=(0,a.useState)(!1),cn=({target:{value:p}})=>{te(!0),d({type:"ON_CHANGE",value:p})},dn=({target:{value:p}})=>{te(!0),d({type:"SELECT_ALL_IN_PERMISSION",value:p})},pn=({target:{value:p}})=>{d({type:"SET_SELECTED_ACTION",value:p})},un=xe(w({},k),{onChange:cn,onChangeSelectAll:dn,setSelectedAction:pn}),Me=f&&!v||b&&v;return!v&&!l&&E!=="success"?a.createElement(Ue,{apiTokenName:l==null?void 0:l.name}):a.createElement(ye,{value:un},a.createElement(ne.Main,null,a.createElement(g.SettingsPageTitle,{name:"API Tokens"}),a.createElement(Le.Formik,{validationSchema:je,validateOnChange:!1,initialValues:{name:(l==null?void 0:l.name)||"",description:(l==null?void 0:l.description)||"",type:l==null?void 0:l.type,lifespan:l!=null&&l.lifespan?l.lifespan.toString():l==null?void 0:l.lifespan},enableReinitialize:!0,onSubmit:(p,M)=>rn(p,M)},({errors:p,handleChange:M,isSubmitting:L,values:I,setFieldValue:H})=>(ln&&(I==null?void 0:I.type)!=="custom"&&H("type","custom"),a.createElement(g.Form,null,a.createElement(_e,{apiToken:l,setApiToken:u,canEditInputs:Me,canRegenerate:D,isSubmitting:L}),a.createElement(Dt,{apiToken:l,errors:p,onChange:M,canEditInputs:Me,isCreating:v,values:I,onDispatch:d,setHasChangedPermissions:te}))))))}}}]);