@strapi/admin 5.18.1 → 5.20.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.
- package/dist/admin/admin/src/components/Filters.js +10 -1
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +10 -1
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.js +22 -17
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.mjs +21 -16
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Overview.js +41 -15
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Overview.mjs +42 -16
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.js +33 -17
- package/dist/admin/admin/src/components/GuidedTour/Step.js.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.mjs +34 -18
- package/dist/admin/admin/src/components/GuidedTour/Step.mjs.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.js +41 -40
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -0
- package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.mjs +36 -35
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -0
- package/dist/admin/admin/src/components/LeftMenu.js +52 -29
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +52 -29
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js +4 -42
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs +4 -23
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/Providers.js +9 -10
- package/dist/admin/admin/src/components/Providers.js.map +1 -1
- package/dist/admin/admin/src/components/Providers.mjs +9 -10
- package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +18 -12
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +19 -13
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs +2 -2
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js +34 -16
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs +34 -16
- package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +34 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +34 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.js +10 -0
- package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.mjs +10 -1
- package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +1 -18
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +1 -18
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +0 -11
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +0 -11
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +2 -3
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +2 -3
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +2 -2
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +3 -3
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +2 -2
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +297 -254
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +297 -254
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +12 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +12 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +6 -6
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +6 -6
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +1 -7
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +2 -8
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +1 -8
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +1 -8
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +0 -2
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +0 -2
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +11 -3
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +11 -3
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/tests/utils.js +25 -28
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/admin/tests/utils.mjs +25 -28
- package/dist/admin/admin/tests/utils.mjs.map +1 -1
- package/dist/admin/ee/admin/src/constants.js +4 -2
- package/dist/admin/ee/admin/src/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/constants.mjs +4 -2
- package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +3 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +3 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
- package/dist/admin/index.js +2 -4
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -2
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/Filters.d.ts +3 -1
- package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.d.ts +5 -3
- package/dist/admin/src/components/GuidedTour/Overview.d.ts +1 -0
- package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.d.ts +1 -1
- package/dist/admin/src/components/SubNav.d.ts +2 -1
- package/dist/admin/src/core/apis/Widgets.d.ts +8 -5
- package/dist/admin/src/features/Tracking.d.ts +22 -3
- package/dist/admin/src/hooks/usePersistentState.d.ts +2 -1
- package/dist/admin/src/index.d.ts +2 -3
- package/dist/admin/src/pages/Settings/components/Tokens/TokenBox.d.ts +1 -1
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +9 -8
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +9 -8
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
- package/dist/server/server/src/domain/user.js +3 -1
- package/dist/server/server/src/domain/user.js.map +1 -1
- package/dist/server/server/src/domain/user.mjs +3 -1
- package/dist/server/server/src/domain/user.mjs.map +1 -1
- package/dist/server/src/domain/user.d.ts.map +1 -1
- package/package.json +8 -9
- package/dist/admin/admin/src/components/GuidedTour/Homepage.js +0 -132
- package/dist/admin/admin/src/components/GuidedTour/Homepage.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Homepage.mjs +0 -130
- package/dist/admin/admin/src/components/GuidedTour/Homepage.mjs.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Modal.js +0 -278
- package/dist/admin/admin/src/components/GuidedTour/Modal.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Modal.mjs +0 -276
- package/dist/admin/admin/src/components/GuidedTour/Modal.mjs.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Ornaments.js +0 -54
- package/dist/admin/admin/src/components/GuidedTour/Ornaments.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Ornaments.mjs +0 -51
- package/dist/admin/admin/src/components/GuidedTour/Ornaments.mjs.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Provider.js +0 -206
- package/dist/admin/admin/src/components/GuidedTour/Provider.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/Provider.mjs +0 -184
- package/dist/admin/admin/src/components/GuidedTour/Provider.mjs.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/constants.js +0 -167
- package/dist/admin/admin/src/components/GuidedTour/constants.js.map +0 -1
- package/dist/admin/admin/src/components/GuidedTour/constants.mjs +0 -164
- package/dist/admin/admin/src/components/GuidedTour/constants.mjs.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Context.js.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Context.mjs.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js.map +0 -1
- package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs.map +0 -1
- package/dist/admin/admin/src/pages/Home/components/GuidedTour.js +0 -19
- package/dist/admin/admin/src/pages/Home/components/GuidedTour.js.map +0 -1
- package/dist/admin/admin/src/pages/Home/components/GuidedTour.mjs +0 -17
- package/dist/admin/admin/src/pages/Home/components/GuidedTour.mjs.map +0 -1
- package/dist/admin/src/components/GuidedTour/Homepage.d.ts +0 -2
- package/dist/admin/src/components/GuidedTour/Modal.d.ts +0 -2
- package/dist/admin/src/components/GuidedTour/Ornaments.d.ts +0 -13
- package/dist/admin/src/components/GuidedTour/Provider.d.ts +0 -39
- package/dist/admin/src/components/GuidedTour/constants.d.ts +0 -165
- package/dist/admin/src/components/UnstableGuidedTour/Overview.d.ts +0 -1
- package/dist/admin/src/pages/Home/components/GuidedTour.d.ts +0 -1
- /package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.d.ts +0 -0
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var designSystem = require('@strapi/design-system');
|
|
5
|
-
var icons = require('@strapi/icons');
|
|
6
|
-
var constants = require('./constants.js');
|
|
7
|
-
|
|
8
|
-
const Number = ({ children, state, ...props })=>{
|
|
9
|
-
return state === constants.STATES.IS_DONE || state === constants.STATES.IS_ACTIVE ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
10
|
-
background: "primary600",
|
|
11
|
-
padding: 2,
|
|
12
|
-
borderRadius: "50%",
|
|
13
|
-
width: `3rem`,
|
|
14
|
-
height: `3rem`,
|
|
15
|
-
justifyContent: "center",
|
|
16
|
-
...props,
|
|
17
|
-
children: state === constants.STATES.IS_DONE ? /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {
|
|
18
|
-
"aria-hidden": true,
|
|
19
|
-
width: `1.6rem`,
|
|
20
|
-
fill: "neutral0"
|
|
21
|
-
}) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
22
|
-
fontWeight: "semiBold",
|
|
23
|
-
textColor: "neutral0",
|
|
24
|
-
children: children
|
|
25
|
-
})
|
|
26
|
-
}) : /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
27
|
-
borderColor: "neutral500",
|
|
28
|
-
borderWidth: "1px",
|
|
29
|
-
borderStyle: "solid",
|
|
30
|
-
padding: 2,
|
|
31
|
-
borderRadius: "50%",
|
|
32
|
-
width: `3rem`,
|
|
33
|
-
height: `3rem`,
|
|
34
|
-
justifyContent: "center",
|
|
35
|
-
...props,
|
|
36
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
37
|
-
fontWeight: "semiBold",
|
|
38
|
-
textColor: "neutral600",
|
|
39
|
-
children: children
|
|
40
|
-
})
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
const VerticalDivider = ({ state, ...props })=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
44
|
-
width: `0.2rem`,
|
|
45
|
-
height: "100%",
|
|
46
|
-
background: state === constants.STATES.IS_NOT_DONE ? 'neutral300' : 'primary500',
|
|
47
|
-
hasRadius: true,
|
|
48
|
-
minHeight: state === constants.STATES.IS_ACTIVE ? `8.5rem` : `6.5rem`,
|
|
49
|
-
...props
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
exports.Number = Number;
|
|
53
|
-
exports.VerticalDivider = VerticalDivider;
|
|
54
|
-
//# sourceMappingURL=Ornaments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Ornaments.js","sources":["../../../../../../admin/src/components/GuidedTour/Ornaments.tsx"],"sourcesContent":["import { Box, BoxProps, Flex, FlexProps, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\n\nimport { STATES, States } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Number\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NumberProps extends FlexProps {\n children: number;\n state: States;\n}\n\nconst Number = ({ children, state, ...props }: NumberProps) => {\n return state === STATES.IS_DONE || state === STATES.IS_ACTIVE ? (\n <Flex\n background=\"primary600\"\n padding={2}\n borderRadius=\"50%\"\n width={`3rem`}\n height={`3rem`}\n justifyContent=\"center\"\n {...props}\n >\n {state === STATES.IS_DONE ? (\n <Check aria-hidden width={`1.6rem`} fill=\"neutral0\" />\n ) : (\n <Typography fontWeight=\"semiBold\" textColor=\"neutral0\">\n {children}\n </Typography>\n )}\n </Flex>\n ) : (\n <Flex\n borderColor=\"neutral500\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n padding={2}\n borderRadius=\"50%\"\n width={`3rem`}\n height={`3rem`}\n justifyContent=\"center\"\n {...props}\n >\n <Typography fontWeight=\"semiBold\" textColor=\"neutral600\">\n {children}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VerticalDivider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VerticalDividerProps extends BoxProps {\n state: States;\n}\n\nconst VerticalDivider = ({ state, ...props }: VerticalDividerProps) => (\n <Box\n width={`0.2rem`}\n height=\"100%\"\n background={state === STATES.IS_NOT_DONE ? 'neutral300' : 'primary500'}\n hasRadius\n minHeight={state === STATES.IS_ACTIVE ? `8.5rem` : `6.5rem`}\n {...props}\n />\n);\n\nexport { Number, VerticalDivider };\nexport type { NumberProps, VerticalDividerProps };\n"],"names":["Number","children","state","props","STATES","IS_DONE","IS_ACTIVE","_jsx","Flex","background","padding","borderRadius","width","height","justifyContent","Check","aria-hidden","fill","Typography","fontWeight","textColor","borderColor","borderWidth","borderStyle","VerticalDivider","Box","IS_NOT_DONE","hasRadius","minHeight"],"mappings":";;;;;;;AAcMA,MAAAA,MAAAA,GAAS,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGC,KAAoB,EAAA,GAAA;IACxD,OAAOD,KAAAA,KAAUE,iBAAOC,OAAO,IAAIH,UAAUE,gBAAOE,CAAAA,SAAS,iBAC3DC,cAACC,CAAAA,iBAAAA,EAAAA;QACCC,UAAW,EAAA,YAAA;QACXC,OAAS,EAAA,CAAA;QACTC,YAAa,EAAA,KAAA;QACbC,KAAO,EAAA,CAAC,IAAI,CAAC;QACbC,MAAQ,EAAA,CAAC,IAAI,CAAC;QACdC,cAAe,EAAA,QAAA;AACd,QAAA,GAAGX,KAAK;kBAERD,KAAUE,KAAAA,gBAAAA,CAAOC,OAAO,iBACvBE,cAACQ,CAAAA,WAAAA,EAAAA;YAAMC,aAAW,EAAA,IAAA;YAACJ,KAAO,EAAA,CAAC,MAAM,CAAC;YAAEK,IAAK,EAAA;2BAEzCV,cAACW,CAAAA,uBAAAA,EAAAA;YAAWC,UAAW,EAAA,UAAA;YAAWC,SAAU,EAAA,UAAA;AACzCnB,YAAAA,QAAAA,EAAAA;;uBAKPM,cAACC,CAAAA,iBAAAA,EAAAA;QACCa,WAAY,EAAA,YAAA;QACZC,WAAY,EAAA,KAAA;QACZC,WAAY,EAAA,OAAA;QACZb,OAAS,EAAA,CAAA;QACTC,YAAa,EAAA,KAAA;QACbC,KAAO,EAAA,CAAC,IAAI,CAAC;QACbC,MAAQ,EAAA,CAAC,IAAI,CAAC;QACdC,cAAe,EAAA,QAAA;AACd,QAAA,GAAGX,KAAK;AAET,QAAA,QAAA,gBAAAI,cAACW,CAAAA,uBAAAA,EAAAA;YAAWC,UAAW,EAAA,UAAA;YAAWC,SAAU,EAAA,YAAA;AACzCnB,YAAAA,QAAAA,EAAAA;;;AAIT;AAUMuB,MAAAA,eAAAA,GAAkB,CAAC,EAAEtB,KAAK,EAAE,GAAGC,KAAAA,EAA6B,iBAChEI,cAACkB,CAAAA,gBAAAA,EAAAA;QACCb,KAAO,EAAA,CAAC,MAAM,CAAC;QACfC,MAAO,EAAA,MAAA;AACPJ,QAAAA,UAAAA,EAAYP,KAAUE,KAAAA,gBAAAA,CAAOsB,WAAW,GAAG,YAAe,GAAA,YAAA;QAC1DC,SAAS,EAAA,IAAA;QACTC,SAAW1B,EAAAA,KAAAA,KAAUE,gBAAOE,CAAAA,SAAS,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1D,QAAA,GAAGH;;;;;;"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { Flex, Typography, Box } from '@strapi/design-system';
|
|
3
|
-
import { Check } from '@strapi/icons';
|
|
4
|
-
import { STATES } from './constants.mjs';
|
|
5
|
-
|
|
6
|
-
const Number = ({ children, state, ...props })=>{
|
|
7
|
-
return state === STATES.IS_DONE || state === STATES.IS_ACTIVE ? /*#__PURE__*/ jsx(Flex, {
|
|
8
|
-
background: "primary600",
|
|
9
|
-
padding: 2,
|
|
10
|
-
borderRadius: "50%",
|
|
11
|
-
width: `3rem`,
|
|
12
|
-
height: `3rem`,
|
|
13
|
-
justifyContent: "center",
|
|
14
|
-
...props,
|
|
15
|
-
children: state === STATES.IS_DONE ? /*#__PURE__*/ jsx(Check, {
|
|
16
|
-
"aria-hidden": true,
|
|
17
|
-
width: `1.6rem`,
|
|
18
|
-
fill: "neutral0"
|
|
19
|
-
}) : /*#__PURE__*/ jsx(Typography, {
|
|
20
|
-
fontWeight: "semiBold",
|
|
21
|
-
textColor: "neutral0",
|
|
22
|
-
children: children
|
|
23
|
-
})
|
|
24
|
-
}) : /*#__PURE__*/ jsx(Flex, {
|
|
25
|
-
borderColor: "neutral500",
|
|
26
|
-
borderWidth: "1px",
|
|
27
|
-
borderStyle: "solid",
|
|
28
|
-
padding: 2,
|
|
29
|
-
borderRadius: "50%",
|
|
30
|
-
width: `3rem`,
|
|
31
|
-
height: `3rem`,
|
|
32
|
-
justifyContent: "center",
|
|
33
|
-
...props,
|
|
34
|
-
children: /*#__PURE__*/ jsx(Typography, {
|
|
35
|
-
fontWeight: "semiBold",
|
|
36
|
-
textColor: "neutral600",
|
|
37
|
-
children: children
|
|
38
|
-
})
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
const VerticalDivider = ({ state, ...props })=>/*#__PURE__*/ jsx(Box, {
|
|
42
|
-
width: `0.2rem`,
|
|
43
|
-
height: "100%",
|
|
44
|
-
background: state === STATES.IS_NOT_DONE ? 'neutral300' : 'primary500',
|
|
45
|
-
hasRadius: true,
|
|
46
|
-
minHeight: state === STATES.IS_ACTIVE ? `8.5rem` : `6.5rem`,
|
|
47
|
-
...props
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
export { Number, VerticalDivider };
|
|
51
|
-
//# sourceMappingURL=Ornaments.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Ornaments.mjs","sources":["../../../../../../admin/src/components/GuidedTour/Ornaments.tsx"],"sourcesContent":["import { Box, BoxProps, Flex, FlexProps, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\n\nimport { STATES, States } from './constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Number\n * -----------------------------------------------------------------------------------------------*/\n\ninterface NumberProps extends FlexProps {\n children: number;\n state: States;\n}\n\nconst Number = ({ children, state, ...props }: NumberProps) => {\n return state === STATES.IS_DONE || state === STATES.IS_ACTIVE ? (\n <Flex\n background=\"primary600\"\n padding={2}\n borderRadius=\"50%\"\n width={`3rem`}\n height={`3rem`}\n justifyContent=\"center\"\n {...props}\n >\n {state === STATES.IS_DONE ? (\n <Check aria-hidden width={`1.6rem`} fill=\"neutral0\" />\n ) : (\n <Typography fontWeight=\"semiBold\" textColor=\"neutral0\">\n {children}\n </Typography>\n )}\n </Flex>\n ) : (\n <Flex\n borderColor=\"neutral500\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n padding={2}\n borderRadius=\"50%\"\n width={`3rem`}\n height={`3rem`}\n justifyContent=\"center\"\n {...props}\n >\n <Typography fontWeight=\"semiBold\" textColor=\"neutral600\">\n {children}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VerticalDivider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VerticalDividerProps extends BoxProps {\n state: States;\n}\n\nconst VerticalDivider = ({ state, ...props }: VerticalDividerProps) => (\n <Box\n width={`0.2rem`}\n height=\"100%\"\n background={state === STATES.IS_NOT_DONE ? 'neutral300' : 'primary500'}\n hasRadius\n minHeight={state === STATES.IS_ACTIVE ? `8.5rem` : `6.5rem`}\n {...props}\n />\n);\n\nexport { Number, VerticalDivider };\nexport type { NumberProps, VerticalDividerProps };\n"],"names":["Number","children","state","props","STATES","IS_DONE","IS_ACTIVE","_jsx","Flex","background","padding","borderRadius","width","height","justifyContent","Check","aria-hidden","fill","Typography","fontWeight","textColor","borderColor","borderWidth","borderStyle","VerticalDivider","Box","IS_NOT_DONE","hasRadius","minHeight"],"mappings":";;;;;AAcMA,MAAAA,MAAAA,GAAS,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGC,KAAoB,EAAA,GAAA;IACxD,OAAOD,KAAAA,KAAUE,OAAOC,OAAO,IAAIH,UAAUE,MAAOE,CAAAA,SAAS,iBAC3DC,GAACC,CAAAA,IAAAA,EAAAA;QACCC,UAAW,EAAA,YAAA;QACXC,OAAS,EAAA,CAAA;QACTC,YAAa,EAAA,KAAA;QACbC,KAAO,EAAA,CAAC,IAAI,CAAC;QACbC,MAAQ,EAAA,CAAC,IAAI,CAAC;QACdC,cAAe,EAAA,QAAA;AACd,QAAA,GAAGX,KAAK;kBAERD,KAAUE,KAAAA,MAAAA,CAAOC,OAAO,iBACvBE,GAACQ,CAAAA,KAAAA,EAAAA;YAAMC,aAAW,EAAA,IAAA;YAACJ,KAAO,EAAA,CAAC,MAAM,CAAC;YAAEK,IAAK,EAAA;2BAEzCV,GAACW,CAAAA,UAAAA,EAAAA;YAAWC,UAAW,EAAA,UAAA;YAAWC,SAAU,EAAA,UAAA;AACzCnB,YAAAA,QAAAA,EAAAA;;uBAKPM,GAACC,CAAAA,IAAAA,EAAAA;QACCa,WAAY,EAAA,YAAA;QACZC,WAAY,EAAA,KAAA;QACZC,WAAY,EAAA,OAAA;QACZb,OAAS,EAAA,CAAA;QACTC,YAAa,EAAA,KAAA;QACbC,KAAO,EAAA,CAAC,IAAI,CAAC;QACbC,MAAQ,EAAA,CAAC,IAAI,CAAC;QACdC,cAAe,EAAA,QAAA;AACd,QAAA,GAAGX,KAAK;AAET,QAAA,QAAA,gBAAAI,GAACW,CAAAA,UAAAA,EAAAA;YAAWC,UAAW,EAAA,UAAA;YAAWC,SAAU,EAAA,YAAA;AACzCnB,YAAAA,QAAAA,EAAAA;;;AAIT;AAUMuB,MAAAA,eAAAA,GAAkB,CAAC,EAAEtB,KAAK,EAAE,GAAGC,KAAAA,EAA6B,iBAChEI,GAACkB,CAAAA,GAAAA,EAAAA;QACCb,KAAO,EAAA,CAAC,MAAM,CAAC;QACfC,MAAO,EAAA,MAAA;AACPJ,QAAAA,UAAAA,EAAYP,KAAUE,KAAAA,MAAAA,CAAOsB,WAAW,GAAG,YAAe,GAAA,YAAA;QAC1DC,SAAS,EAAA,IAAA;QACTC,SAAW1B,EAAAA,KAAAA,KAAUE,MAAOE,CAAAA,SAAS,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1D,QAAA,GAAGH;;;;;"}
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var immer = require('immer');
|
|
6
|
-
var get = require('lodash/get');
|
|
7
|
-
var set = require('lodash/set');
|
|
8
|
-
var Context = require('../Context.js');
|
|
9
|
-
|
|
10
|
-
function _interopNamespaceDefault(e) {
|
|
11
|
-
var n = Object.create(null);
|
|
12
|
-
if (e) {
|
|
13
|
-
Object.keys(e).forEach(function (k) {
|
|
14
|
-
if (k !== 'default') {
|
|
15
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
-
enumerable: true,
|
|
18
|
-
get: function () { return e[k]; }
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
n.default = e;
|
|
24
|
-
return Object.freeze(n);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
28
|
-
|
|
29
|
-
const GUIDED_TOUR_COMPLETED_STEPS = 'GUIDED_TOUR_COMPLETED_STEPS';
|
|
30
|
-
const GUIDED_TOUR_CURRENT_STEP = 'GUIDED_TOUR_CURRENT_STEP';
|
|
31
|
-
const GUIDED_TOUR_SKIPPED = 'GUIDED_TOUR_SKIPPED';
|
|
32
|
-
const [GuidedTourProviderImpl, useGuidedTour] = Context.createContext('GuidedTour');
|
|
33
|
-
const GuidedTourProvider = ({ children })=>{
|
|
34
|
-
const [{ currentStep, guidedTourState, isGuidedTourVisible, isSkipped }, dispatch] = React__namespace.useReducer(reducer, initialState, initialiseState);
|
|
35
|
-
const setCurrentStep = (step)=>{
|
|
36
|
-
// if step is null it is intentional, we need to dispatch it
|
|
37
|
-
if (step !== null) {
|
|
38
|
-
const isStepAlreadyDone = get(guidedTourState, step);
|
|
39
|
-
const [sectionName, stepName] = step.split('.');
|
|
40
|
-
const sectionArray = Object.entries(guidedTourState[sectionName]);
|
|
41
|
-
const currentStepIndex = sectionArray.findIndex(([key])=>key === stepName);
|
|
42
|
-
const previousSteps = sectionArray.slice(0, currentStepIndex);
|
|
43
|
-
const isStepToShow = previousSteps.every(([, sectionValue])=>sectionValue);
|
|
44
|
-
if (isStepAlreadyDone || isSkipped || !isStepToShow) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));
|
|
49
|
-
return dispatch({
|
|
50
|
-
type: 'SET_CURRENT_STEP',
|
|
51
|
-
step
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
|
-
const setGuidedTourVisibility = (value)=>{
|
|
55
|
-
dispatch({
|
|
56
|
-
type: 'SET_GUIDED_TOUR_VISIBILITY',
|
|
57
|
-
value
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
const setStepState = (currentStep, value)=>{
|
|
61
|
-
addCompletedStep(currentStep);
|
|
62
|
-
dispatch({
|
|
63
|
-
type: 'SET_STEP_STATE',
|
|
64
|
-
currentStep,
|
|
65
|
-
value
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
const startSection = (sectionName)=>{
|
|
69
|
-
const sectionSteps = guidedTourState[sectionName];
|
|
70
|
-
if (sectionSteps) {
|
|
71
|
-
const guidedTourArray = Object.entries(guidedTourState);
|
|
72
|
-
// Find current section position in the guidedTourArray
|
|
73
|
-
// Get only previous sections based on current section position
|
|
74
|
-
const currentSectionIndex = guidedTourArray.findIndex(([key])=>key === sectionName);
|
|
75
|
-
const previousSections = guidedTourArray.slice(0, currentSectionIndex);
|
|
76
|
-
// Check if every steps from previous section are done
|
|
77
|
-
const isSectionToShow = previousSections.every(([, sectionValue])=>Object.values(sectionValue).every(Boolean));
|
|
78
|
-
const [firstStep] = Object.keys(sectionSteps);
|
|
79
|
-
const isFirstStepDone = sectionSteps[firstStep];
|
|
80
|
-
if (isSectionToShow && !currentStep && !isFirstStepDone) {
|
|
81
|
-
setCurrentStep(`${sectionName}.${firstStep}`);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
const setSkipped = (value)=>{
|
|
86
|
-
window.localStorage.setItem(GUIDED_TOUR_SKIPPED, JSON.stringify(value));
|
|
87
|
-
dispatch({
|
|
88
|
-
type: 'SET_SKIPPED',
|
|
89
|
-
value
|
|
90
|
-
});
|
|
91
|
-
};
|
|
92
|
-
return /*#__PURE__*/ jsxRuntime.jsx(GuidedTourProviderImpl, {
|
|
93
|
-
guidedTourState: guidedTourState,
|
|
94
|
-
currentStep: currentStep,
|
|
95
|
-
setCurrentStep: setCurrentStep,
|
|
96
|
-
setGuidedTourVisibility: setGuidedTourVisibility,
|
|
97
|
-
setSkipped: setSkipped,
|
|
98
|
-
setStepState: setStepState,
|
|
99
|
-
startSection: startSection,
|
|
100
|
-
// TODO: remove the future condition when the unstable guided tour will be released
|
|
101
|
-
isGuidedTourVisible: isGuidedTourVisible && !window.strapi.future.isEnabled('unstableGuidedTour'),
|
|
102
|
-
isSkipped: isSkipped,
|
|
103
|
-
children: children
|
|
104
|
-
});
|
|
105
|
-
};
|
|
106
|
-
const initialState = {
|
|
107
|
-
currentStep: null,
|
|
108
|
-
guidedTourState: {
|
|
109
|
-
contentTypeBuilder: {
|
|
110
|
-
create: false,
|
|
111
|
-
success: false
|
|
112
|
-
},
|
|
113
|
-
contentManager: {
|
|
114
|
-
create: false,
|
|
115
|
-
success: false
|
|
116
|
-
},
|
|
117
|
-
apiTokens: {
|
|
118
|
-
create: false,
|
|
119
|
-
success: false
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
isGuidedTourVisible: false,
|
|
123
|
-
isSkipped: false
|
|
124
|
-
};
|
|
125
|
-
const reducer = (state = initialState, action)=>immer.produce(state, (draftState)=>{
|
|
126
|
-
switch(action.type){
|
|
127
|
-
case 'SET_CURRENT_STEP':
|
|
128
|
-
{
|
|
129
|
-
draftState.currentStep = action.step;
|
|
130
|
-
break;
|
|
131
|
-
}
|
|
132
|
-
case 'SET_STEP_STATE':
|
|
133
|
-
{
|
|
134
|
-
const [section, step] = action.currentStep.split('.');
|
|
135
|
-
draftState.guidedTourState[section][step] = action.value;
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
case 'SET_SKIPPED':
|
|
139
|
-
{
|
|
140
|
-
draftState.isSkipped = action.value;
|
|
141
|
-
break;
|
|
142
|
-
}
|
|
143
|
-
case 'SET_GUIDED_TOUR_VISIBILITY':
|
|
144
|
-
{
|
|
145
|
-
draftState.isGuidedTourVisible = action.value;
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
default:
|
|
149
|
-
{
|
|
150
|
-
return draftState;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
const initialiseState = (initialState)=>{
|
|
155
|
-
const copyInitialState = {
|
|
156
|
-
...initialState
|
|
157
|
-
};
|
|
158
|
-
const guidedTourLocaleStorage = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]');
|
|
159
|
-
const currentStepLocaleStorage = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_CURRENT_STEP) ?? 'null');
|
|
160
|
-
const skippedLocaleStorage = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_SKIPPED) ?? 'null');
|
|
161
|
-
if (Array.isArray(guidedTourLocaleStorage)) {
|
|
162
|
-
guidedTourLocaleStorage.forEach((step)=>{
|
|
163
|
-
const [sectionName, stepName] = step.split('.');
|
|
164
|
-
set(copyInitialState, [
|
|
165
|
-
'guidedTourState',
|
|
166
|
-
sectionName,
|
|
167
|
-
stepName
|
|
168
|
-
], true);
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
// if current step when initializing mark it as done
|
|
172
|
-
if (currentStepLocaleStorage) {
|
|
173
|
-
const [sectionName, stepName] = currentStepLocaleStorage.split('.');
|
|
174
|
-
set(copyInitialState, [
|
|
175
|
-
'guidedTourState',
|
|
176
|
-
sectionName,
|
|
177
|
-
stepName
|
|
178
|
-
], true);
|
|
179
|
-
addCompletedStep(currentStepLocaleStorage);
|
|
180
|
-
window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));
|
|
181
|
-
}
|
|
182
|
-
if (skippedLocaleStorage !== null) {
|
|
183
|
-
set(copyInitialState, 'isSkipped', skippedLocaleStorage);
|
|
184
|
-
}
|
|
185
|
-
return copyInitialState;
|
|
186
|
-
};
|
|
187
|
-
/**
|
|
188
|
-
* @description Add a completed step to the local storage if it does not already exist.
|
|
189
|
-
*/ const addCompletedStep = (completedStep)=>{
|
|
190
|
-
const currentSteps = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]');
|
|
191
|
-
if (!Array.isArray(currentSteps)) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
const isAlreadyStored = currentSteps.includes(completedStep);
|
|
195
|
-
if (isAlreadyStored) {
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
window.localStorage.setItem(GUIDED_TOUR_COMPLETED_STEPS, JSON.stringify([
|
|
199
|
-
...currentSteps,
|
|
200
|
-
completedStep
|
|
201
|
-
]));
|
|
202
|
-
};
|
|
203
|
-
|
|
204
|
-
exports.GuidedTourProvider = GuidedTourProvider;
|
|
205
|
-
exports.useGuidedTour = useGuidedTour;
|
|
206
|
-
//# sourceMappingURL=Provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","sources":["../../../../../../admin/src/components/GuidedTour/Provider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { produce } from 'immer';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nconst GUIDED_TOUR_COMPLETED_STEPS = 'GUIDED_TOUR_COMPLETED_STEPS';\nconst GUIDED_TOUR_CURRENT_STEP = 'GUIDED_TOUR_CURRENT_STEP';\nconst GUIDED_TOUR_SKIPPED = 'GUIDED_TOUR_SKIPPED';\n\nconst GUIDED_TOUR_KEYS = {\n GUIDED_TOUR_COMPLETED_STEPS,\n GUIDED_TOUR_CURRENT_STEP,\n GUIDED_TOUR_SKIPPED,\n} as const;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourProvider\n * -----------------------------------------------------------------------------------------------*/\n\nimport { createContext } from '../Context';\n\ntype SectionKey = keyof GuidedTourContextValue['guidedTourState'];\ntype StepKey = keyof GuidedTourContextValue['guidedTourState'][SectionKey];\ntype Step = `${SectionKey}.${StepKey}`;\ninterface GuidedTourContextValue {\n currentStep: Step | null;\n guidedTourState: {\n contentTypeBuilder: {\n create: boolean;\n success: boolean;\n };\n contentManager: {\n create: boolean;\n success: boolean;\n };\n apiTokens: {\n create: boolean;\n success: boolean;\n };\n };\n isGuidedTourVisible: boolean;\n isSkipped: boolean;\n setCurrentStep: (step: Step | null) => void | null;\n setGuidedTourVisibility: (isVisible: boolean) => void;\n setSkipped: (isSkipped: boolean) => void;\n setStepState: (step: Step, state: boolean) => void;\n startSection: (section: SectionKey) => void;\n}\n\nconst [GuidedTourProviderImpl, useGuidedTour] = createContext<GuidedTourContextValue>('GuidedTour');\n\ninterface GuidedTourProviderProps {\n children: React.ReactNode;\n}\n\nconst GuidedTourProvider = ({ children }: GuidedTourProviderProps) => {\n const [{ currentStep, guidedTourState, isGuidedTourVisible, isSkipped }, dispatch] =\n React.useReducer(reducer, initialState, initialiseState);\n\n const setCurrentStep = (step: SetCurrentStepAction['step']) => {\n // if step is null it is intentional, we need to dispatch it\n if (step !== null) {\n const isStepAlreadyDone = get(guidedTourState, step);\n const [sectionName, stepName] = step.split('.') as [SectionKey, StepKey];\n const sectionArray = Object.entries(guidedTourState[sectionName]);\n\n const currentStepIndex = sectionArray.findIndex(([key]) => key === stepName);\n const previousSteps = sectionArray.slice(0, currentStepIndex);\n\n const isStepToShow = previousSteps.every(([, sectionValue]) => sectionValue);\n\n if (isStepAlreadyDone || isSkipped || !isStepToShow) {\n return null;\n }\n }\n\n window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));\n\n return dispatch({\n type: 'SET_CURRENT_STEP',\n step,\n });\n };\n\n const setGuidedTourVisibility = (value: SetGuidedTourVisibilityAction['value']) => {\n dispatch({\n type: 'SET_GUIDED_TOUR_VISIBILITY',\n value,\n });\n };\n\n const setStepState = (currentStep: Step, value: SetStepStateAction['value']) => {\n addCompletedStep(currentStep);\n\n dispatch({\n type: 'SET_STEP_STATE',\n currentStep,\n value,\n });\n };\n\n const startSection = (sectionName: SectionKey) => {\n const sectionSteps = guidedTourState[sectionName];\n\n if (sectionSteps) {\n const guidedTourArray = Object.entries(guidedTourState);\n\n // Find current section position in the guidedTourArray\n // Get only previous sections based on current section position\n const currentSectionIndex = guidedTourArray.findIndex(([key]) => key === sectionName);\n const previousSections = guidedTourArray.slice(0, currentSectionIndex);\n\n // Check if every steps from previous section are done\n const isSectionToShow = previousSections.every(([, sectionValue]) =>\n Object.values(sectionValue).every(Boolean)\n );\n\n const [firstStep] = Object.keys(sectionSteps) as [StepKey];\n const isFirstStepDone = sectionSteps[firstStep];\n\n if (isSectionToShow && !currentStep && !isFirstStepDone) {\n setCurrentStep(`${sectionName}.${firstStep}`);\n }\n }\n };\n\n const setSkipped = (value: SetSkippedAction['value']) => {\n window.localStorage.setItem(GUIDED_TOUR_SKIPPED, JSON.stringify(value));\n\n dispatch({\n type: 'SET_SKIPPED',\n value,\n });\n };\n\n return (\n <GuidedTourProviderImpl\n guidedTourState={guidedTourState}\n currentStep={currentStep}\n setCurrentStep={setCurrentStep}\n setGuidedTourVisibility={setGuidedTourVisibility}\n setSkipped={setSkipped}\n setStepState={setStepState}\n startSection={startSection}\n // TODO: remove the future condition when the unstable guided tour will be released\n isGuidedTourVisible={\n isGuidedTourVisible && !window.strapi.future.isEnabled('unstableGuidedTour')\n }\n isSkipped={isSkipped}\n >\n {children}\n </GuidedTourProviderImpl>\n );\n};\n\ntype State = Pick<\n GuidedTourContextValue,\n 'guidedTourState' | 'currentStep' | 'isGuidedTourVisible' | 'isSkipped'\n>;\n\nconst initialState = {\n currentStep: null,\n guidedTourState: {\n contentTypeBuilder: {\n create: false,\n success: false,\n },\n contentManager: {\n create: false,\n success: false,\n },\n apiTokens: {\n create: false,\n success: false,\n },\n },\n isGuidedTourVisible: false,\n isSkipped: false,\n} satisfies State;\n\ninterface SetCurrentStepAction {\n type: 'SET_CURRENT_STEP';\n step: Step | null;\n}\n\ninterface SetStepStateAction {\n type: 'SET_STEP_STATE';\n currentStep: Step;\n value: boolean;\n}\n\ninterface SetSkippedAction {\n type: 'SET_SKIPPED';\n value: boolean;\n}\n\ninterface SetGuidedTourVisibilityAction {\n type: 'SET_GUIDED_TOUR_VISIBILITY';\n value: boolean;\n}\n\ntype Action =\n | SetCurrentStepAction\n | SetStepStateAction\n | SetSkippedAction\n | SetGuidedTourVisibilityAction;\n\nconst reducer: React.Reducer<State, Action> = (state: State = initialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_CURRENT_STEP': {\n draftState.currentStep = action.step;\n break;\n }\n case 'SET_STEP_STATE': {\n const [section, step] = action.currentStep.split('.') as [SectionKey, StepKey];\n draftState.guidedTourState[section][step] = action.value;\n break;\n }\n case 'SET_SKIPPED': {\n draftState.isSkipped = action.value;\n break;\n }\n case 'SET_GUIDED_TOUR_VISIBILITY': {\n draftState.isGuidedTourVisible = action.value;\n break;\n }\n default: {\n return draftState;\n }\n }\n });\n\nconst initialiseState = (initialState: State) => {\n const copyInitialState = { ...initialState };\n const guidedTourLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]'\n );\n const currentStepLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_CURRENT_STEP) ?? 'null'\n );\n const skippedLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_SKIPPED) ?? 'null'\n );\n\n if (Array.isArray(guidedTourLocaleStorage)) {\n guidedTourLocaleStorage.forEach((step) => {\n const [sectionName, stepName] = step.split('.');\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n });\n }\n\n // if current step when initializing mark it as done\n if (currentStepLocaleStorage) {\n const [sectionName, stepName] = currentStepLocaleStorage.split('.') as [SectionKey, StepKey];\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n\n addCompletedStep(currentStepLocaleStorage as Step);\n\n window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));\n }\n\n if (skippedLocaleStorage !== null) {\n set(copyInitialState, 'isSkipped', skippedLocaleStorage);\n }\n\n return copyInitialState;\n};\n\n/**\n * @description Add a completed step to the local storage if it does not already exist.\n */\nconst addCompletedStep = (completedStep: Step) => {\n const currentSteps = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]');\n\n if (!Array.isArray(currentSteps)) {\n return;\n }\n\n const isAlreadyStored = currentSteps.includes(completedStep);\n\n if (isAlreadyStored) {\n return;\n }\n\n window.localStorage.setItem(\n GUIDED_TOUR_COMPLETED_STEPS,\n JSON.stringify([...currentSteps, completedStep])\n );\n};\n\nexport { GuidedTourProvider, useGuidedTour, GuidedTourContextValue, GUIDED_TOUR_KEYS };\n"],"names":["GUIDED_TOUR_COMPLETED_STEPS","GUIDED_TOUR_CURRENT_STEP","GUIDED_TOUR_SKIPPED","GuidedTourProviderImpl","useGuidedTour","createContext","GuidedTourProvider","children","currentStep","guidedTourState","isGuidedTourVisible","isSkipped","dispatch","React","useReducer","reducer","initialState","initialiseState","setCurrentStep","step","isStepAlreadyDone","get","sectionName","stepName","split","sectionArray","Object","entries","currentStepIndex","findIndex","key","previousSteps","slice","isStepToShow","every","sectionValue","window","localStorage","setItem","JSON","stringify","type","setGuidedTourVisibility","value","setStepState","addCompletedStep","startSection","sectionSteps","guidedTourArray","currentSectionIndex","previousSections","isSectionToShow","values","Boolean","firstStep","keys","isFirstStepDone","setSkipped","_jsx","strapi","future","isEnabled","contentTypeBuilder","create","success","contentManager","apiTokens","state","action","produce","draftState","section","copyInitialState","guidedTourLocaleStorage","parse","getItem","currentStepLocaleStorage","skippedLocaleStorage","Array","isArray","forEach","set","completedStep","currentSteps","isAlreadyStored","includes"],"mappings":"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"}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { produce } from 'immer';
|
|
4
|
-
import get from 'lodash/get';
|
|
5
|
-
import set from 'lodash/set';
|
|
6
|
-
import { createContext } from '../Context.mjs';
|
|
7
|
-
|
|
8
|
-
const GUIDED_TOUR_COMPLETED_STEPS = 'GUIDED_TOUR_COMPLETED_STEPS';
|
|
9
|
-
const GUIDED_TOUR_CURRENT_STEP = 'GUIDED_TOUR_CURRENT_STEP';
|
|
10
|
-
const GUIDED_TOUR_SKIPPED = 'GUIDED_TOUR_SKIPPED';
|
|
11
|
-
const [GuidedTourProviderImpl, useGuidedTour] = createContext('GuidedTour');
|
|
12
|
-
const GuidedTourProvider = ({ children })=>{
|
|
13
|
-
const [{ currentStep, guidedTourState, isGuidedTourVisible, isSkipped }, dispatch] = React.useReducer(reducer, initialState, initialiseState);
|
|
14
|
-
const setCurrentStep = (step)=>{
|
|
15
|
-
// if step is null it is intentional, we need to dispatch it
|
|
16
|
-
if (step !== null) {
|
|
17
|
-
const isStepAlreadyDone = get(guidedTourState, step);
|
|
18
|
-
const [sectionName, stepName] = step.split('.');
|
|
19
|
-
const sectionArray = Object.entries(guidedTourState[sectionName]);
|
|
20
|
-
const currentStepIndex = sectionArray.findIndex(([key])=>key === stepName);
|
|
21
|
-
const previousSteps = sectionArray.slice(0, currentStepIndex);
|
|
22
|
-
const isStepToShow = previousSteps.every(([, sectionValue])=>sectionValue);
|
|
23
|
-
if (isStepAlreadyDone || isSkipped || !isStepToShow) {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));
|
|
28
|
-
return dispatch({
|
|
29
|
-
type: 'SET_CURRENT_STEP',
|
|
30
|
-
step
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
|
-
const setGuidedTourVisibility = (value)=>{
|
|
34
|
-
dispatch({
|
|
35
|
-
type: 'SET_GUIDED_TOUR_VISIBILITY',
|
|
36
|
-
value
|
|
37
|
-
});
|
|
38
|
-
};
|
|
39
|
-
const setStepState = (currentStep, value)=>{
|
|
40
|
-
addCompletedStep(currentStep);
|
|
41
|
-
dispatch({
|
|
42
|
-
type: 'SET_STEP_STATE',
|
|
43
|
-
currentStep,
|
|
44
|
-
value
|
|
45
|
-
});
|
|
46
|
-
};
|
|
47
|
-
const startSection = (sectionName)=>{
|
|
48
|
-
const sectionSteps = guidedTourState[sectionName];
|
|
49
|
-
if (sectionSteps) {
|
|
50
|
-
const guidedTourArray = Object.entries(guidedTourState);
|
|
51
|
-
// Find current section position in the guidedTourArray
|
|
52
|
-
// Get only previous sections based on current section position
|
|
53
|
-
const currentSectionIndex = guidedTourArray.findIndex(([key])=>key === sectionName);
|
|
54
|
-
const previousSections = guidedTourArray.slice(0, currentSectionIndex);
|
|
55
|
-
// Check if every steps from previous section are done
|
|
56
|
-
const isSectionToShow = previousSections.every(([, sectionValue])=>Object.values(sectionValue).every(Boolean));
|
|
57
|
-
const [firstStep] = Object.keys(sectionSteps);
|
|
58
|
-
const isFirstStepDone = sectionSteps[firstStep];
|
|
59
|
-
if (isSectionToShow && !currentStep && !isFirstStepDone) {
|
|
60
|
-
setCurrentStep(`${sectionName}.${firstStep}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
const setSkipped = (value)=>{
|
|
65
|
-
window.localStorage.setItem(GUIDED_TOUR_SKIPPED, JSON.stringify(value));
|
|
66
|
-
dispatch({
|
|
67
|
-
type: 'SET_SKIPPED',
|
|
68
|
-
value
|
|
69
|
-
});
|
|
70
|
-
};
|
|
71
|
-
return /*#__PURE__*/ jsx(GuidedTourProviderImpl, {
|
|
72
|
-
guidedTourState: guidedTourState,
|
|
73
|
-
currentStep: currentStep,
|
|
74
|
-
setCurrentStep: setCurrentStep,
|
|
75
|
-
setGuidedTourVisibility: setGuidedTourVisibility,
|
|
76
|
-
setSkipped: setSkipped,
|
|
77
|
-
setStepState: setStepState,
|
|
78
|
-
startSection: startSection,
|
|
79
|
-
// TODO: remove the future condition when the unstable guided tour will be released
|
|
80
|
-
isGuidedTourVisible: isGuidedTourVisible && !window.strapi.future.isEnabled('unstableGuidedTour'),
|
|
81
|
-
isSkipped: isSkipped,
|
|
82
|
-
children: children
|
|
83
|
-
});
|
|
84
|
-
};
|
|
85
|
-
const initialState = {
|
|
86
|
-
currentStep: null,
|
|
87
|
-
guidedTourState: {
|
|
88
|
-
contentTypeBuilder: {
|
|
89
|
-
create: false,
|
|
90
|
-
success: false
|
|
91
|
-
},
|
|
92
|
-
contentManager: {
|
|
93
|
-
create: false,
|
|
94
|
-
success: false
|
|
95
|
-
},
|
|
96
|
-
apiTokens: {
|
|
97
|
-
create: false,
|
|
98
|
-
success: false
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
isGuidedTourVisible: false,
|
|
102
|
-
isSkipped: false
|
|
103
|
-
};
|
|
104
|
-
const reducer = (state = initialState, action)=>produce(state, (draftState)=>{
|
|
105
|
-
switch(action.type){
|
|
106
|
-
case 'SET_CURRENT_STEP':
|
|
107
|
-
{
|
|
108
|
-
draftState.currentStep = action.step;
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
case 'SET_STEP_STATE':
|
|
112
|
-
{
|
|
113
|
-
const [section, step] = action.currentStep.split('.');
|
|
114
|
-
draftState.guidedTourState[section][step] = action.value;
|
|
115
|
-
break;
|
|
116
|
-
}
|
|
117
|
-
case 'SET_SKIPPED':
|
|
118
|
-
{
|
|
119
|
-
draftState.isSkipped = action.value;
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
case 'SET_GUIDED_TOUR_VISIBILITY':
|
|
123
|
-
{
|
|
124
|
-
draftState.isGuidedTourVisible = action.value;
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
default:
|
|
128
|
-
{
|
|
129
|
-
return draftState;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
const initialiseState = (initialState)=>{
|
|
134
|
-
const copyInitialState = {
|
|
135
|
-
...initialState
|
|
136
|
-
};
|
|
137
|
-
const guidedTourLocaleStorage = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]');
|
|
138
|
-
const currentStepLocaleStorage = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_CURRENT_STEP) ?? 'null');
|
|
139
|
-
const skippedLocaleStorage = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_SKIPPED) ?? 'null');
|
|
140
|
-
if (Array.isArray(guidedTourLocaleStorage)) {
|
|
141
|
-
guidedTourLocaleStorage.forEach((step)=>{
|
|
142
|
-
const [sectionName, stepName] = step.split('.');
|
|
143
|
-
set(copyInitialState, [
|
|
144
|
-
'guidedTourState',
|
|
145
|
-
sectionName,
|
|
146
|
-
stepName
|
|
147
|
-
], true);
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
// if current step when initializing mark it as done
|
|
151
|
-
if (currentStepLocaleStorage) {
|
|
152
|
-
const [sectionName, stepName] = currentStepLocaleStorage.split('.');
|
|
153
|
-
set(copyInitialState, [
|
|
154
|
-
'guidedTourState',
|
|
155
|
-
sectionName,
|
|
156
|
-
stepName
|
|
157
|
-
], true);
|
|
158
|
-
addCompletedStep(currentStepLocaleStorage);
|
|
159
|
-
window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));
|
|
160
|
-
}
|
|
161
|
-
if (skippedLocaleStorage !== null) {
|
|
162
|
-
set(copyInitialState, 'isSkipped', skippedLocaleStorage);
|
|
163
|
-
}
|
|
164
|
-
return copyInitialState;
|
|
165
|
-
};
|
|
166
|
-
/**
|
|
167
|
-
* @description Add a completed step to the local storage if it does not already exist.
|
|
168
|
-
*/ const addCompletedStep = (completedStep)=>{
|
|
169
|
-
const currentSteps = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]');
|
|
170
|
-
if (!Array.isArray(currentSteps)) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
const isAlreadyStored = currentSteps.includes(completedStep);
|
|
174
|
-
if (isAlreadyStored) {
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
window.localStorage.setItem(GUIDED_TOUR_COMPLETED_STEPS, JSON.stringify([
|
|
178
|
-
...currentSteps,
|
|
179
|
-
completedStep
|
|
180
|
-
]));
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
export { GuidedTourProvider, useGuidedTour };
|
|
184
|
-
//# sourceMappingURL=Provider.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.mjs","sources":["../../../../../../admin/src/components/GuidedTour/Provider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { produce } from 'immer';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nconst GUIDED_TOUR_COMPLETED_STEPS = 'GUIDED_TOUR_COMPLETED_STEPS';\nconst GUIDED_TOUR_CURRENT_STEP = 'GUIDED_TOUR_CURRENT_STEP';\nconst GUIDED_TOUR_SKIPPED = 'GUIDED_TOUR_SKIPPED';\n\nconst GUIDED_TOUR_KEYS = {\n GUIDED_TOUR_COMPLETED_STEPS,\n GUIDED_TOUR_CURRENT_STEP,\n GUIDED_TOUR_SKIPPED,\n} as const;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourProvider\n * -----------------------------------------------------------------------------------------------*/\n\nimport { createContext } from '../Context';\n\ntype SectionKey = keyof GuidedTourContextValue['guidedTourState'];\ntype StepKey = keyof GuidedTourContextValue['guidedTourState'][SectionKey];\ntype Step = `${SectionKey}.${StepKey}`;\ninterface GuidedTourContextValue {\n currentStep: Step | null;\n guidedTourState: {\n contentTypeBuilder: {\n create: boolean;\n success: boolean;\n };\n contentManager: {\n create: boolean;\n success: boolean;\n };\n apiTokens: {\n create: boolean;\n success: boolean;\n };\n };\n isGuidedTourVisible: boolean;\n isSkipped: boolean;\n setCurrentStep: (step: Step | null) => void | null;\n setGuidedTourVisibility: (isVisible: boolean) => void;\n setSkipped: (isSkipped: boolean) => void;\n setStepState: (step: Step, state: boolean) => void;\n startSection: (section: SectionKey) => void;\n}\n\nconst [GuidedTourProviderImpl, useGuidedTour] = createContext<GuidedTourContextValue>('GuidedTour');\n\ninterface GuidedTourProviderProps {\n children: React.ReactNode;\n}\n\nconst GuidedTourProvider = ({ children }: GuidedTourProviderProps) => {\n const [{ currentStep, guidedTourState, isGuidedTourVisible, isSkipped }, dispatch] =\n React.useReducer(reducer, initialState, initialiseState);\n\n const setCurrentStep = (step: SetCurrentStepAction['step']) => {\n // if step is null it is intentional, we need to dispatch it\n if (step !== null) {\n const isStepAlreadyDone = get(guidedTourState, step);\n const [sectionName, stepName] = step.split('.') as [SectionKey, StepKey];\n const sectionArray = Object.entries(guidedTourState[sectionName]);\n\n const currentStepIndex = sectionArray.findIndex(([key]) => key === stepName);\n const previousSteps = sectionArray.slice(0, currentStepIndex);\n\n const isStepToShow = previousSteps.every(([, sectionValue]) => sectionValue);\n\n if (isStepAlreadyDone || isSkipped || !isStepToShow) {\n return null;\n }\n }\n\n window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));\n\n return dispatch({\n type: 'SET_CURRENT_STEP',\n step,\n });\n };\n\n const setGuidedTourVisibility = (value: SetGuidedTourVisibilityAction['value']) => {\n dispatch({\n type: 'SET_GUIDED_TOUR_VISIBILITY',\n value,\n });\n };\n\n const setStepState = (currentStep: Step, value: SetStepStateAction['value']) => {\n addCompletedStep(currentStep);\n\n dispatch({\n type: 'SET_STEP_STATE',\n currentStep,\n value,\n });\n };\n\n const startSection = (sectionName: SectionKey) => {\n const sectionSteps = guidedTourState[sectionName];\n\n if (sectionSteps) {\n const guidedTourArray = Object.entries(guidedTourState);\n\n // Find current section position in the guidedTourArray\n // Get only previous sections based on current section position\n const currentSectionIndex = guidedTourArray.findIndex(([key]) => key === sectionName);\n const previousSections = guidedTourArray.slice(0, currentSectionIndex);\n\n // Check if every steps from previous section are done\n const isSectionToShow = previousSections.every(([, sectionValue]) =>\n Object.values(sectionValue).every(Boolean)\n );\n\n const [firstStep] = Object.keys(sectionSteps) as [StepKey];\n const isFirstStepDone = sectionSteps[firstStep];\n\n if (isSectionToShow && !currentStep && !isFirstStepDone) {\n setCurrentStep(`${sectionName}.${firstStep}`);\n }\n }\n };\n\n const setSkipped = (value: SetSkippedAction['value']) => {\n window.localStorage.setItem(GUIDED_TOUR_SKIPPED, JSON.stringify(value));\n\n dispatch({\n type: 'SET_SKIPPED',\n value,\n });\n };\n\n return (\n <GuidedTourProviderImpl\n guidedTourState={guidedTourState}\n currentStep={currentStep}\n setCurrentStep={setCurrentStep}\n setGuidedTourVisibility={setGuidedTourVisibility}\n setSkipped={setSkipped}\n setStepState={setStepState}\n startSection={startSection}\n // TODO: remove the future condition when the unstable guided tour will be released\n isGuidedTourVisible={\n isGuidedTourVisible && !window.strapi.future.isEnabled('unstableGuidedTour')\n }\n isSkipped={isSkipped}\n >\n {children}\n </GuidedTourProviderImpl>\n );\n};\n\ntype State = Pick<\n GuidedTourContextValue,\n 'guidedTourState' | 'currentStep' | 'isGuidedTourVisible' | 'isSkipped'\n>;\n\nconst initialState = {\n currentStep: null,\n guidedTourState: {\n contentTypeBuilder: {\n create: false,\n success: false,\n },\n contentManager: {\n create: false,\n success: false,\n },\n apiTokens: {\n create: false,\n success: false,\n },\n },\n isGuidedTourVisible: false,\n isSkipped: false,\n} satisfies State;\n\ninterface SetCurrentStepAction {\n type: 'SET_CURRENT_STEP';\n step: Step | null;\n}\n\ninterface SetStepStateAction {\n type: 'SET_STEP_STATE';\n currentStep: Step;\n value: boolean;\n}\n\ninterface SetSkippedAction {\n type: 'SET_SKIPPED';\n value: boolean;\n}\n\ninterface SetGuidedTourVisibilityAction {\n type: 'SET_GUIDED_TOUR_VISIBILITY';\n value: boolean;\n}\n\ntype Action =\n | SetCurrentStepAction\n | SetStepStateAction\n | SetSkippedAction\n | SetGuidedTourVisibilityAction;\n\nconst reducer: React.Reducer<State, Action> = (state: State = initialState, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'SET_CURRENT_STEP': {\n draftState.currentStep = action.step;\n break;\n }\n case 'SET_STEP_STATE': {\n const [section, step] = action.currentStep.split('.') as [SectionKey, StepKey];\n draftState.guidedTourState[section][step] = action.value;\n break;\n }\n case 'SET_SKIPPED': {\n draftState.isSkipped = action.value;\n break;\n }\n case 'SET_GUIDED_TOUR_VISIBILITY': {\n draftState.isGuidedTourVisible = action.value;\n break;\n }\n default: {\n return draftState;\n }\n }\n });\n\nconst initialiseState = (initialState: State) => {\n const copyInitialState = { ...initialState };\n const guidedTourLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]'\n );\n const currentStepLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_CURRENT_STEP) ?? 'null'\n );\n const skippedLocaleStorage = JSON.parse(\n window.localStorage.getItem(GUIDED_TOUR_SKIPPED) ?? 'null'\n );\n\n if (Array.isArray(guidedTourLocaleStorage)) {\n guidedTourLocaleStorage.forEach((step) => {\n const [sectionName, stepName] = step.split('.');\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n });\n }\n\n // if current step when initializing mark it as done\n if (currentStepLocaleStorage) {\n const [sectionName, stepName] = currentStepLocaleStorage.split('.') as [SectionKey, StepKey];\n set(copyInitialState, ['guidedTourState', sectionName, stepName], true);\n\n addCompletedStep(currentStepLocaleStorage as Step);\n\n window.localStorage.setItem(GUIDED_TOUR_CURRENT_STEP, JSON.stringify(null));\n }\n\n if (skippedLocaleStorage !== null) {\n set(copyInitialState, 'isSkipped', skippedLocaleStorage);\n }\n\n return copyInitialState;\n};\n\n/**\n * @description Add a completed step to the local storage if it does not already exist.\n */\nconst addCompletedStep = (completedStep: Step) => {\n const currentSteps = JSON.parse(window.localStorage.getItem(GUIDED_TOUR_COMPLETED_STEPS) ?? '[]');\n\n if (!Array.isArray(currentSteps)) {\n return;\n }\n\n const isAlreadyStored = currentSteps.includes(completedStep);\n\n if (isAlreadyStored) {\n return;\n }\n\n window.localStorage.setItem(\n GUIDED_TOUR_COMPLETED_STEPS,\n JSON.stringify([...currentSteps, completedStep])\n );\n};\n\nexport { GuidedTourProvider, useGuidedTour, GuidedTourContextValue, GUIDED_TOUR_KEYS };\n"],"names":["GUIDED_TOUR_COMPLETED_STEPS","GUIDED_TOUR_CURRENT_STEP","GUIDED_TOUR_SKIPPED","GuidedTourProviderImpl","useGuidedTour","createContext","GuidedTourProvider","children","currentStep","guidedTourState","isGuidedTourVisible","isSkipped","dispatch","React","useReducer","reducer","initialState","initialiseState","setCurrentStep","step","isStepAlreadyDone","get","sectionName","stepName","split","sectionArray","Object","entries","currentStepIndex","findIndex","key","previousSteps","slice","isStepToShow","every","sectionValue","window","localStorage","setItem","JSON","stringify","type","setGuidedTourVisibility","value","setStepState","addCompletedStep","startSection","sectionSteps","guidedTourArray","currentSectionIndex","previousSections","isSectionToShow","values","Boolean","firstStep","keys","isFirstStepDone","setSkipped","_jsx","strapi","future","isEnabled","contentTypeBuilder","create","success","contentManager","apiTokens","state","action","produce","draftState","section","copyInitialState","guidedTourLocaleStorage","parse","getItem","currentStepLocaleStorage","skippedLocaleStorage","Array","isArray","forEach","set","completedStep","currentSteps","isAlreadyStored","includes"],"mappings":"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"}
|