@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.
Files changed (189) hide show
  1. package/dist/admin/admin/src/components/Filters.js +10 -1
  2. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  3. package/dist/admin/admin/src/components/Filters.mjs +10 -1
  4. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.js +22 -17
  6. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -0
  7. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.mjs +21 -16
  8. package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -0
  9. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Overview.js +41 -15
  10. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -0
  11. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Overview.mjs +42 -16
  12. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -0
  13. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.js +33 -17
  14. package/dist/admin/admin/src/components/GuidedTour/Step.js.map +1 -0
  15. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.mjs +34 -18
  16. package/dist/admin/admin/src/components/GuidedTour/Step.mjs.map +1 -0
  17. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.js +41 -40
  18. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -0
  19. package/dist/admin/admin/src/components/{UnstableGuidedTour → GuidedTour}/Tours.mjs +36 -35
  20. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -0
  21. package/dist/admin/admin/src/components/LeftMenu.js +52 -29
  22. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  23. package/dist/admin/admin/src/components/LeftMenu.mjs +52 -29
  24. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/MainNav/NavLink.js +4 -42
  26. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  27. package/dist/admin/admin/src/components/MainNav/NavLink.mjs +4 -23
  28. package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/NpsSurvey.js +1 -1
  30. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  31. package/dist/admin/admin/src/components/NpsSurvey.mjs +1 -1
  32. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/Providers.js +9 -10
  34. package/dist/admin/admin/src/components/Providers.js.map +1 -1
  35. package/dist/admin/admin/src/components/Providers.mjs +9 -10
  36. package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/SubNav.js +18 -12
  38. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  39. package/dist/admin/admin/src/components/SubNav.mjs +19 -13
  40. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/UpsellBanner.js +1 -1
  42. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  43. package/dist/admin/admin/src/components/UpsellBanner.mjs +2 -2
  44. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  45. package/dist/admin/admin/src/core/apis/Widgets.js +34 -16
  46. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  47. package/dist/admin/admin/src/core/apis/Widgets.mjs +34 -16
  48. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  49. package/dist/admin/admin/src/features/Tracking.js +34 -1
  50. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  51. package/dist/admin/admin/src/features/Tracking.mjs +34 -1
  52. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  53. package/dist/admin/admin/src/hooks/usePersistentState.js +10 -0
  54. package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
  55. package/dist/admin/admin/src/hooks/usePersistentState.mjs +10 -1
  56. package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
  57. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +1 -18
  58. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  59. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +1 -18
  60. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  61. package/dist/admin/admin/src/pages/Auth/components/Register.js +0 -11
  62. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  63. package/dist/admin/admin/src/pages/Auth/components/Register.mjs +0 -11
  64. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Home/HomePage.js +2 -3
  66. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  67. package/dist/admin/admin/src/pages/Home/HomePage.mjs +2 -3
  68. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  69. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +2 -2
  70. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  71. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +3 -3
  72. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  73. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +1 -1
  74. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  75. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +2 -2
  76. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
  77. package/dist/admin/admin/src/pages/ProfilePage.js +297 -254
  78. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  79. package/dist/admin/admin/src/pages/ProfilePage.mjs +297 -254
  80. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +12 -1
  82. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  83. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +12 -1
  84. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  85. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +6 -6
  86. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  87. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +6 -6
  88. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
  89. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +1 -7
  90. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +2 -8
  92. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +1 -8
  94. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +1 -8
  96. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +0 -2
  98. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  99. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +0 -2
  100. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
  101. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +3 -1
  102. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +3 -1
  104. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  105. package/dist/admin/admin/src/pages/UseCasePage.js +1 -1
  106. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  107. package/dist/admin/admin/src/pages/UseCasePage.mjs +1 -1
  108. package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
  109. package/dist/admin/admin/src/translations/en.json.js +11 -3
  110. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  111. package/dist/admin/admin/src/translations/en.json.mjs +11 -3
  112. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  113. package/dist/admin/admin/tests/utils.js +25 -28
  114. package/dist/admin/admin/tests/utils.js.map +1 -1
  115. package/dist/admin/admin/tests/utils.mjs +25 -28
  116. package/dist/admin/admin/tests/utils.mjs.map +1 -1
  117. package/dist/admin/ee/admin/src/constants.js +4 -2
  118. package/dist/admin/ee/admin/src/constants.js.map +1 -1
  119. package/dist/admin/ee/admin/src/constants.mjs +4 -2
  120. package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
  121. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +3 -1
  122. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
  123. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +3 -1
  124. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
  125. package/dist/admin/index.js +2 -4
  126. package/dist/admin/index.js.map +1 -1
  127. package/dist/admin/index.mjs +1 -2
  128. package/dist/admin/index.mjs.map +1 -1
  129. package/dist/admin/src/components/Filters.d.ts +3 -1
  130. package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Context.d.ts +5 -3
  131. package/dist/admin/src/components/GuidedTour/Overview.d.ts +1 -0
  132. package/dist/admin/src/components/{UnstableGuidedTour → GuidedTour}/Step.d.ts +1 -1
  133. package/dist/admin/src/components/SubNav.d.ts +2 -1
  134. package/dist/admin/src/core/apis/Widgets.d.ts +8 -5
  135. package/dist/admin/src/features/Tracking.d.ts +22 -3
  136. package/dist/admin/src/hooks/usePersistentState.d.ts +2 -1
  137. package/dist/admin/src/index.d.ts +2 -3
  138. package/dist/admin/src/pages/Settings/components/Tokens/TokenBox.d.ts +1 -1
  139. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  140. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +9 -8
  141. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  142. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +9 -8
  143. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  144. package/dist/server/server/src/domain/user.js +3 -1
  145. package/dist/server/server/src/domain/user.js.map +1 -1
  146. package/dist/server/server/src/domain/user.mjs +3 -1
  147. package/dist/server/server/src/domain/user.mjs.map +1 -1
  148. package/dist/server/src/domain/user.d.ts.map +1 -1
  149. package/package.json +8 -9
  150. package/dist/admin/admin/src/components/GuidedTour/Homepage.js +0 -132
  151. package/dist/admin/admin/src/components/GuidedTour/Homepage.js.map +0 -1
  152. package/dist/admin/admin/src/components/GuidedTour/Homepage.mjs +0 -130
  153. package/dist/admin/admin/src/components/GuidedTour/Homepage.mjs.map +0 -1
  154. package/dist/admin/admin/src/components/GuidedTour/Modal.js +0 -278
  155. package/dist/admin/admin/src/components/GuidedTour/Modal.js.map +0 -1
  156. package/dist/admin/admin/src/components/GuidedTour/Modal.mjs +0 -276
  157. package/dist/admin/admin/src/components/GuidedTour/Modal.mjs.map +0 -1
  158. package/dist/admin/admin/src/components/GuidedTour/Ornaments.js +0 -54
  159. package/dist/admin/admin/src/components/GuidedTour/Ornaments.js.map +0 -1
  160. package/dist/admin/admin/src/components/GuidedTour/Ornaments.mjs +0 -51
  161. package/dist/admin/admin/src/components/GuidedTour/Ornaments.mjs.map +0 -1
  162. package/dist/admin/admin/src/components/GuidedTour/Provider.js +0 -206
  163. package/dist/admin/admin/src/components/GuidedTour/Provider.js.map +0 -1
  164. package/dist/admin/admin/src/components/GuidedTour/Provider.mjs +0 -184
  165. package/dist/admin/admin/src/components/GuidedTour/Provider.mjs.map +0 -1
  166. package/dist/admin/admin/src/components/GuidedTour/constants.js +0 -167
  167. package/dist/admin/admin/src/components/GuidedTour/constants.js.map +0 -1
  168. package/dist/admin/admin/src/components/GuidedTour/constants.mjs +0 -164
  169. package/dist/admin/admin/src/components/GuidedTour/constants.mjs.map +0 -1
  170. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.js.map +0 -1
  171. package/dist/admin/admin/src/components/UnstableGuidedTour/Context.mjs.map +0 -1
  172. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.js.map +0 -1
  173. package/dist/admin/admin/src/components/UnstableGuidedTour/Overview.mjs.map +0 -1
  174. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.js.map +0 -1
  175. package/dist/admin/admin/src/components/UnstableGuidedTour/Step.mjs.map +0 -1
  176. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.js.map +0 -1
  177. package/dist/admin/admin/src/components/UnstableGuidedTour/Tours.mjs.map +0 -1
  178. package/dist/admin/admin/src/pages/Home/components/GuidedTour.js +0 -19
  179. package/dist/admin/admin/src/pages/Home/components/GuidedTour.js.map +0 -1
  180. package/dist/admin/admin/src/pages/Home/components/GuidedTour.mjs +0 -17
  181. package/dist/admin/admin/src/pages/Home/components/GuidedTour.mjs.map +0 -1
  182. package/dist/admin/src/components/GuidedTour/Homepage.d.ts +0 -2
  183. package/dist/admin/src/components/GuidedTour/Modal.d.ts +0 -2
  184. package/dist/admin/src/components/GuidedTour/Ornaments.d.ts +0 -13
  185. package/dist/admin/src/components/GuidedTour/Provider.d.ts +0 -39
  186. package/dist/admin/src/components/GuidedTour/constants.d.ts +0 -165
  187. package/dist/admin/src/components/UnstableGuidedTour/Overview.d.ts +0 -1
  188. package/dist/admin/src/pages/Home/components/GuidedTour.d.ts +0 -1
  189. /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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAMA,2BAA8B,GAAA,6BAAA;AACpC,MAAMC,wBAA2B,GAAA,0BAAA;AACjC,MAAMC,mBAAsB,GAAA,qBAAA;AA0C5B,MAAM,CAACC,sBAAAA,EAAwBC,aAAc,CAAA,GAAGC,qBAAsC,CAAA,YAAA;AAMtF,MAAMC,kBAAqB,GAAA,CAAC,EAAEC,QAAQ,EAA2B,GAAA;AAC/D,IAAA,MAAM,CAAC,EAAEC,WAAW,EAAEC,eAAe,EAAEC,mBAAmB,EAAEC,SAAS,EAAE,EAAEC,QAAS,CAAA,GAChFC,iBAAMC,UAAU,CAACC,SAASC,YAAcC,EAAAA,eAAAA,CAAAA;AAE1C,IAAA,MAAMC,iBAAiB,CAACC,IAAAA,GAAAA;;AAEtB,QAAA,IAAIA,SAAS,IAAM,EAAA;YACjB,MAAMC,iBAAAA,GAAoBC,IAAIZ,eAAiBU,EAAAA,IAAAA,CAAAA;AAC/C,YAAA,MAAM,CAACG,WAAaC,EAAAA,QAAAA,CAAS,GAAGJ,IAAAA,CAAKK,KAAK,CAAC,GAAA,CAAA;AAC3C,YAAA,MAAMC,eAAeC,MAAOC,CAAAA,OAAO,CAAClB,eAAe,CAACa,WAAY,CAAA,CAAA;YAEhE,MAAMM,gBAAAA,GAAmBH,aAAaI,SAAS,CAAC,CAAC,CAACC,GAAAA,CAAI,GAAKA,GAAQP,KAAAA,QAAAA,CAAAA;AACnE,YAAA,MAAMQ,aAAgBN,GAAAA,YAAAA,CAAaO,KAAK,CAAC,CAAGJ,EAAAA,gBAAAA,CAAAA;AAE5C,YAAA,MAAMK,eAAeF,aAAcG,CAAAA,KAAK,CAAC,CAAC,GAAGC,aAAa,GAAKA,YAAAA,CAAAA;YAE/D,IAAIf,iBAAAA,IAAqBT,SAAa,IAAA,CAACsB,YAAc,EAAA;gBACnD,OAAO,IAAA;AACT;AACF;AAEAG,QAAAA,MAAAA,CAAOC,YAAY,CAACC,OAAO,CAACrC,wBAA0BsC,EAAAA,IAAAA,CAAKC,SAAS,CAAC,IAAA,CAAA,CAAA;AAErE,QAAA,OAAO5B,QAAS,CAAA;YACd6B,IAAM,EAAA,kBAAA;AACNtB,YAAAA;AACF,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,MAAMuB,0BAA0B,CAACC,KAAAA,GAAAA;QAC/B/B,QAAS,CAAA;YACP6B,IAAM,EAAA,4BAAA;AACNE,YAAAA;AACF,SAAA,CAAA;AACF,KAAA;IAEA,MAAMC,YAAAA,GAAe,CAACpC,WAAmBmC,EAAAA,KAAAA,GAAAA;QACvCE,gBAAiBrC,CAAAA,WAAAA,CAAAA;QAEjBI,QAAS,CAAA;YACP6B,IAAM,EAAA,gBAAA;AACNjC,YAAAA,WAAAA;AACAmC,YAAAA;AACF,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,MAAMG,eAAe,CAACxB,WAAAA,GAAAA;QACpB,MAAMyB,YAAAA,GAAetC,eAAe,CAACa,WAAY,CAAA;AAEjD,QAAA,IAAIyB,YAAc,EAAA;YAChB,MAAMC,eAAAA,GAAkBtB,MAAOC,CAAAA,OAAO,CAAClB,eAAAA,CAAAA;;;YAIvC,MAAMwC,mBAAAA,GAAsBD,gBAAgBnB,SAAS,CAAC,CAAC,CAACC,GAAAA,CAAI,GAAKA,GAAQR,KAAAA,WAAAA,CAAAA;AACzE,YAAA,MAAM4B,gBAAmBF,GAAAA,eAAAA,CAAgBhB,KAAK,CAAC,CAAGiB,EAAAA,mBAAAA,CAAAA;;AAGlD,YAAA,MAAME,eAAkBD,GAAAA,gBAAAA,CAAiBhB,KAAK,CAAC,CAAC,GAAGC,YAAa,CAAA,GAC9DT,MAAO0B,CAAAA,MAAM,CAACjB,YAAAA,CAAAA,CAAcD,KAAK,CAACmB,OAAAA,CAAAA,CAAAA;AAGpC,YAAA,MAAM,CAACC,SAAAA,CAAU,GAAG5B,MAAAA,CAAO6B,IAAI,CAACR,YAAAA,CAAAA;YAChC,MAAMS,eAAAA,GAAkBT,YAAY,CAACO,SAAU,CAAA;AAE/C,YAAA,IAAIH,eAAmB,IAAA,CAAC3C,WAAe,IAAA,CAACgD,eAAiB,EAAA;AACvDtC,gBAAAA,cAAAA,CAAe,CAAC,EAAEI,WAAAA,CAAY,CAAC,EAAEgC,UAAU,CAAC,CAAA;AAC9C;AACF;AACF,KAAA;AAEA,IAAA,MAAMG,aAAa,CAACd,KAAAA,GAAAA;AAClBP,QAAAA,MAAAA,CAAOC,YAAY,CAACC,OAAO,CAACpC,mBAAqBqC,EAAAA,IAAAA,CAAKC,SAAS,CAACG,KAAAA,CAAAA,CAAAA;QAEhE/B,QAAS,CAAA;YACP6B,IAAM,EAAA,aAAA;AACNE,YAAAA;AACF,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,qBACEe,cAACvD,CAAAA,sBAAAA,EAAAA;QACCM,eAAiBA,EAAAA,eAAAA;QACjBD,WAAaA,EAAAA,WAAAA;QACbU,cAAgBA,EAAAA,cAAAA;QAChBwB,uBAAyBA,EAAAA,uBAAAA;QACzBe,UAAYA,EAAAA,UAAAA;QACZb,YAAcA,EAAAA,YAAAA;QACdE,YAAcA,EAAAA,YAAAA;;QAEdpC,mBACEA,EAAAA,mBAAAA,IAAuB,CAAC0B,MAAOuB,CAAAA,MAAM,CAACC,MAAM,CAACC,SAAS,CAAC,oBAAA,CAAA;QAEzDlD,SAAWA,EAAAA,SAAAA;AAEVJ,QAAAA,QAAAA,EAAAA;;AAGP;AAOA,MAAMS,YAAe,GAAA;IACnBR,WAAa,EAAA,IAAA;IACbC,eAAiB,EAAA;QACfqD,kBAAoB,EAAA;YAClBC,MAAQ,EAAA,KAAA;YACRC,OAAS,EAAA;AACX,SAAA;QACAC,cAAgB,EAAA;YACdF,MAAQ,EAAA,KAAA;YACRC,OAAS,EAAA;AACX,SAAA;QACAE,SAAW,EAAA;YACTH,MAAQ,EAAA,KAAA;YACRC,OAAS,EAAA;AACX;AACF,KAAA;IACAtD,mBAAqB,EAAA,KAAA;IACrBC,SAAW,EAAA;AACb,CAAA;AA6BA,MAAMI,OAAAA,GAAwC,CAACoD,KAAenD,GAAAA,YAAY,EAAEoD,MAC1EC,GAAAA,aAAAA,CAAQF,OAAO,CAACG,UAAAA,GAAAA;AACd,QAAA,OAAQF,OAAO3B,IAAI;YACjB,KAAK,kBAAA;AAAoB,gBAAA;oBACvB6B,UAAW9D,CAAAA,WAAW,GAAG4D,MAAAA,CAAOjD,IAAI;AACpC,oBAAA;AACF;YACA,KAAK,gBAAA;AAAkB,gBAAA;oBACrB,MAAM,CAACoD,SAASpD,IAAK,CAAA,GAAGiD,OAAO5D,WAAW,CAACgB,KAAK,CAAC,GAAA,CAAA;AACjD8C,oBAAAA,UAAAA,CAAW7D,eAAe,CAAC8D,OAAAA,CAAQ,CAACpD,IAAK,CAAA,GAAGiD,OAAOzB,KAAK;AACxD,oBAAA;AACF;YACA,KAAK,aAAA;AAAe,gBAAA;oBAClB2B,UAAW3D,CAAAA,SAAS,GAAGyD,MAAAA,CAAOzB,KAAK;AACnC,oBAAA;AACF;YACA,KAAK,4BAAA;AAA8B,gBAAA;oBACjC2B,UAAW5D,CAAAA,mBAAmB,GAAG0D,MAAAA,CAAOzB,KAAK;AAC7C,oBAAA;AACF;AACA,YAAA;AAAS,gBAAA;oBACP,OAAO2B,UAAAA;AACT;AACF;AACF,KAAA,CAAA;AAEF,MAAMrD,kBAAkB,CAACD,YAAAA,GAAAA;AACvB,IAAA,MAAMwD,gBAAmB,GAAA;AAAE,QAAA,GAAGxD;AAAa,KAAA;IAC3C,MAAMyD,uBAAAA,GAA0BlC,KAAKmC,KAAK,CACxCtC,OAAOC,YAAY,CAACsC,OAAO,CAAC3E,2BAAgC,CAAA,IAAA,IAAA,CAAA;IAE9D,MAAM4E,wBAAAA,GAA2BrC,KAAKmC,KAAK,CACzCtC,OAAOC,YAAY,CAACsC,OAAO,CAAC1E,wBAA6B,CAAA,IAAA,MAAA,CAAA;IAE3D,MAAM4E,oBAAAA,GAAuBtC,KAAKmC,KAAK,CACrCtC,OAAOC,YAAY,CAACsC,OAAO,CAACzE,mBAAwB,CAAA,IAAA,MAAA,CAAA;IAGtD,IAAI4E,KAAAA,CAAMC,OAAO,CAACN,uBAA0B,CAAA,EAAA;QAC1CA,uBAAwBO,CAAAA,OAAO,CAAC,CAAC7D,IAAAA,GAAAA;AAC/B,YAAA,MAAM,CAACG,WAAaC,EAAAA,QAAAA,CAAS,GAAGJ,IAAAA,CAAKK,KAAK,CAAC,GAAA,CAAA;AAC3CyD,YAAAA,GAAAA,CAAIT,gBAAkB,EAAA;AAAC,gBAAA,iBAAA;AAAmBlD,gBAAAA,WAAAA;AAAaC,gBAAAA;aAAS,EAAE,IAAA,CAAA;AACpE,SAAA,CAAA;AACF;;AAGA,IAAA,IAAIqD,wBAA0B,EAAA;AAC5B,QAAA,MAAM,CAACtD,WAAaC,EAAAA,QAAAA,CAAS,GAAGqD,wBAAAA,CAAyBpD,KAAK,CAAC,GAAA,CAAA;AAC/DyD,QAAAA,GAAAA,CAAIT,gBAAkB,EAAA;AAAC,YAAA,iBAAA;AAAmBlD,YAAAA,WAAAA;AAAaC,YAAAA;SAAS,EAAE,IAAA,CAAA;QAElEsB,gBAAiB+B,CAAAA,wBAAAA,CAAAA;AAEjBxC,QAAAA,MAAAA,CAAOC,YAAY,CAACC,OAAO,CAACrC,wBAA0BsC,EAAAA,IAAAA,CAAKC,SAAS,CAAC,IAAA,CAAA,CAAA;AACvE;AAEA,IAAA,IAAIqC,yBAAyB,IAAM,EAAA;AACjCI,QAAAA,GAAAA,CAAIT,kBAAkB,WAAaK,EAAAA,oBAAAA,CAAAA;AACrC;IAEA,OAAOL,gBAAAA;AACT,CAAA;AAEA;;IAGA,MAAM3B,mBAAmB,CAACqC,aAAAA,GAAAA;IACxB,MAAMC,YAAAA,GAAe5C,KAAKmC,KAAK,CAACtC,OAAOC,YAAY,CAACsC,OAAO,CAAC3E,2BAAgC,CAAA,IAAA,IAAA,CAAA;AAE5F,IAAA,IAAI,CAAC8E,KAAAA,CAAMC,OAAO,CAACI,YAAe,CAAA,EAAA;AAChC,QAAA;AACF;IAEA,MAAMC,eAAAA,GAAkBD,YAAaE,CAAAA,QAAQ,CAACH,aAAAA,CAAAA;AAE9C,IAAA,IAAIE,eAAiB,EAAA;AACnB,QAAA;AACF;AAEAhD,IAAAA,MAAAA,CAAOC,YAAY,CAACC,OAAO,CACzBtC,2BACAuC,EAAAA,IAAAA,CAAKC,SAAS,CAAC;AAAI2C,QAAAA,GAAAA,YAAAA;AAAcD,QAAAA;AAAc,KAAA,CAAA,CAAA;AAEnD,CAAA;;;;;"}
@@ -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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"}