@mattisvensson/strapi-plugin-webatlas 0.10.0 → 0.11.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 (176) hide show
  1. package/README.md +2 -1
  2. package/dist/{_chunks → admin}/FullLoader-Cmsf8xS6.js +1 -0
  3. package/dist/admin/FullLoader-Cmsf8xS6.js.map +1 -0
  4. package/dist/{_chunks → admin}/FullLoader-CrPED_dY.mjs +1 -0
  5. package/dist/admin/FullLoader-CrPED_dY.mjs.map +1 -0
  6. package/dist/{_chunks/SettingTitle-CdR3SVn_.mjs → admin/SettingTitle-B1IaU3qs.mjs} +3 -2
  7. package/dist/admin/SettingTitle-B1IaU3qs.mjs.map +1 -0
  8. package/dist/{_chunks/SettingTitle-RU1azFIM.js → admin/SettingTitle-BjE_2u6R.js} +3 -2
  9. package/dist/admin/SettingTitle-BjE_2u6R.js.map +1 -0
  10. package/dist/{_chunks → admin}/de-B5pRvs13.mjs +1 -0
  11. package/dist/admin/de-B5pRvs13.mjs.map +1 -0
  12. package/dist/{_chunks → admin}/de-CqU1FU8C.js +1 -0
  13. package/dist/admin/de-CqU1FU8C.js.map +1 -0
  14. package/dist/{_chunks → admin}/en-BE-zzIv8.mjs +1 -0
  15. package/dist/admin/en-BE-zzIv8.mjs.map +1 -0
  16. package/dist/{_chunks → admin}/en-C7I90FwV.js +1 -0
  17. package/dist/admin/en-C7I90FwV.js.map +1 -0
  18. package/dist/admin/index-AVI3QJ0R.js +9369 -0
  19. package/dist/admin/index-AVI3QJ0R.js.map +1 -0
  20. package/dist/{_chunks/index-BucL4va6.js → admin/index-B90eSO4a.js} +6 -5
  21. package/dist/admin/index-B90eSO4a.js.map +1 -0
  22. package/dist/admin/index-BIEUXWe7.mjs +9369 -0
  23. package/dist/admin/index-BIEUXWe7.mjs.map +1 -0
  24. package/dist/{_chunks/index-BmyxSosC.mjs → admin/index-BbnlyBrZ.mjs} +3 -2
  25. package/dist/admin/index-BbnlyBrZ.mjs.map +1 -0
  26. package/dist/{_chunks/index-BvcX9hcc.mjs → admin/index-Cf9j0bn2.mjs} +4 -3
  27. package/dist/admin/index-Cf9j0bn2.mjs.map +1 -0
  28. package/dist/{_chunks/index-D-vJE_K8.js → admin/index-D8bG0YFB.js} +3 -2
  29. package/dist/admin/index-D8bG0YFB.js.map +1 -0
  30. package/dist/{_chunks/index-B07UVUOa.mjs → admin/index-DCYCtKrj.mjs} +137 -236
  31. package/dist/admin/index-DCYCtKrj.mjs.map +1 -0
  32. package/dist/{_chunks/index-d09V61nm.js → admin/index-JLpXBQVL.js} +4 -3
  33. package/dist/admin/index-JLpXBQVL.js.map +1 -0
  34. package/dist/{_chunks/index-CIM-JzLK.mjs → admin/index-Y_PYIiRA.mjs} +6 -5
  35. package/dist/admin/index-Y_PYIiRA.mjs.map +1 -0
  36. package/dist/{_chunks/index-BxpDM360.js → admin/index-Yq-QR8t0.js} +137 -236
  37. package/dist/admin/index-Yq-QR8t0.js.map +1 -0
  38. package/dist/admin/index.js +4 -2
  39. package/dist/admin/index.js.map +1 -0
  40. package/dist/admin/index.mjs +2 -1
  41. package/dist/admin/index.mjs.map +1 -0
  42. package/dist/server/index.js +5005 -4568
  43. package/dist/server/index.js.map +1 -0
  44. package/dist/server/index.mjs +5003 -4567
  45. package/dist/server/index.mjs.map +1 -0
  46. package/package.json +19 -7
  47. package/dist/_chunks/index-CNKWb8pn.mjs +0 -8604
  48. package/dist/_chunks/index-IRSCe8PX.js +0 -8604
  49. package/dist/admin/src/components/CMEditViewAside/NewPathInfo.d.ts +0 -2
  50. package/dist/admin/src/components/CMEditViewAside/OverrideCheckbox.d.ts +0 -7
  51. package/dist/admin/src/components/CMEditViewAside/Panel.d.ts +0 -5
  52. package/dist/admin/src/components/CMEditViewAside/PathInput.d.ts +0 -11
  53. package/dist/admin/src/components/CMEditViewAside/RouteStructure.d.ts +0 -3
  54. package/dist/admin/src/components/CMEditViewAside/UidPathDisplay.d.ts +0 -4
  55. package/dist/admin/src/components/CMEditViewAside/index.d.ts +0 -3
  56. package/dist/admin/src/components/Initializer.d.ts +0 -5
  57. package/dist/admin/src/components/PathInfo.d.ts +0 -6
  58. package/dist/admin/src/components/PluginIcon.d.ts +0 -3
  59. package/dist/admin/src/components/Tooltip.d.ts +0 -3
  60. package/dist/admin/src/components/UI/Center.d.ts +0 -5
  61. package/dist/admin/src/components/UI/EmptyBox.d.ts +0 -5
  62. package/dist/admin/src/components/UI/FullLoader.d.ts +0 -3
  63. package/dist/admin/src/components/UI/index.d.ts +0 -4
  64. package/dist/admin/src/components/modals/Delete.d.ts +0 -14
  65. package/dist/admin/src/components/modals/NavCreate.d.ts +0 -1
  66. package/dist/admin/src/components/modals/NavEdit.d.ts +0 -7
  67. package/dist/admin/src/components/modals/NavModal.d.ts +0 -17
  68. package/dist/admin/src/components/modals/NavOverview.d.ts +0 -8
  69. package/dist/admin/src/components/modals/externalItem/index.d.ts +0 -15
  70. package/dist/admin/src/components/modals/index.d.ts +0 -12
  71. package/dist/admin/src/components/modals/internalItem/ItemDetails.d.ts +0 -13
  72. package/dist/admin/src/components/modals/internalItem/internalItemCreate.d.ts +0 -3
  73. package/dist/admin/src/components/modals/internalItem/internalItemEdit.d.ts +0 -3
  74. package/dist/admin/src/components/modals/useModalSharedLogic.d.ts +0 -2
  75. package/dist/admin/src/components/modals/withModalSharedLogic.d.ts +0 -3
  76. package/dist/admin/src/components/modals/wrapperItem/index.d.ts +0 -15
  77. package/dist/admin/src/contexts/index.d.ts +0 -13
  78. package/dist/admin/src/hooks/index.d.ts +0 -6
  79. package/dist/admin/src/hooks/useAllContentTypes.d.ts +0 -7
  80. package/dist/admin/src/hooks/useAllEntities.d.ts +0 -7
  81. package/dist/admin/src/hooks/useApi.d.ts +0 -18
  82. package/dist/admin/src/hooks/useNavigations.d.ts +0 -7
  83. package/dist/admin/src/hooks/usePluginConfig.d.ts +0 -9
  84. package/dist/admin/src/index.d.ts +0 -12
  85. package/dist/admin/src/pages/Navigation/Page.d.ts +0 -2
  86. package/dist/admin/src/pages/Navigation/PageWrapper.d.ts +0 -7
  87. package/dist/admin/src/pages/Navigation/RouteItem.d.ts +0 -3
  88. package/dist/admin/src/pages/Navigation/RouteItemBadge.d.ts +0 -4
  89. package/dist/admin/src/pages/Navigation/RouteItemIcon.d.ts +0 -5
  90. package/dist/admin/src/pages/Navigation/RouteItemMenu.d.ts +0 -10
  91. package/dist/admin/src/pages/Navigation/RouteItemStatus.d.ts +0 -5
  92. package/dist/admin/src/pages/Navigation/SortableRouteItem.d.ts +0 -2
  93. package/dist/admin/src/pages/Navigation/index.d.ts +0 -2
  94. package/dist/admin/src/pages/Paths/PageWrapper.d.ts +0 -4
  95. package/dist/admin/src/pages/Paths/PathTable.d.ts +0 -8
  96. package/dist/admin/src/pages/Paths/SearchInput.d.ts +0 -6
  97. package/dist/admin/src/pages/Paths/TableHeader.d.ts +0 -5
  98. package/dist/admin/src/pages/Paths/TableRow.d.ts +0 -4
  99. package/dist/admin/src/pages/Paths/compareBy.d.ts +0 -3
  100. package/dist/admin/src/pages/Paths/index.d.ts +0 -2
  101. package/dist/admin/src/pages/Settings/ContentBox.d.ts +0 -5
  102. package/dist/admin/src/pages/Settings/General/ContentTypeAccordion.d.ts +0 -7
  103. package/dist/admin/src/pages/Settings/General/index.d.ts +0 -2
  104. package/dist/admin/src/pages/Settings/Navigation/index.d.ts +0 -2
  105. package/dist/admin/src/pages/Settings/PageWrapper.d.ts +0 -8
  106. package/dist/admin/src/pages/Settings/SettingTitle.d.ts +0 -4
  107. package/dist/admin/src/pages/Settings/index.d.ts +0 -4
  108. package/dist/admin/src/permissions.d.ts +0 -23
  109. package/dist/admin/src/types/index.d.ts +0 -4
  110. package/dist/admin/src/types/modal.d.ts +0 -56
  111. package/dist/admin/src/types/navigation.d.ts +0 -18
  112. package/dist/admin/src/types/panel.d.ts +0 -41
  113. package/dist/admin/src/types/route.d.ts +0 -2
  114. package/dist/admin/src/utils/buildBreadcrumbString.d.ts +0 -16
  115. package/dist/admin/src/utils/createTempNavItemObject.d.ts +0 -22
  116. package/dist/admin/src/utils/debounce.d.ts +0 -1
  117. package/dist/admin/src/utils/dnd.d.ts +0 -13
  118. package/dist/admin/src/utils/duplicateCheck.d.ts +0 -15
  119. package/dist/admin/src/utils/findParentNavItem.d.ts +0 -13
  120. package/dist/admin/src/utils/getTranslation.d.ts +0 -2
  121. package/dist/admin/src/utils/index.d.ts +0 -8
  122. package/dist/admin/src/utils/typeChecks.d.ts +0 -3
  123. package/dist/server/src/bootstrap.d.ts +0 -5
  124. package/dist/server/src/config/index.d.ts +0 -10
  125. package/dist/server/src/content-types/index.d.ts +0 -202
  126. package/dist/server/src/content-types/navigation/index.d.ts +0 -50
  127. package/dist/server/src/content-types/navigation/schema.d.ts +0 -48
  128. package/dist/server/src/content-types/navitem/index.d.ts +0 -51
  129. package/dist/server/src/content-types/navitem/schema.d.ts +0 -49
  130. package/dist/server/src/content-types/route/index.d.ts +0 -101
  131. package/dist/server/src/content-types/route/schema.d.ts +0 -99
  132. package/dist/server/src/controllers/admin.d.ts +0 -15
  133. package/dist/server/src/controllers/client.d.ts +0 -8
  134. package/dist/server/src/controllers/index.d.ts +0 -23
  135. package/dist/server/src/destroy.d.ts +0 -5
  136. package/dist/server/src/index.d.ts +0 -301
  137. package/dist/server/src/middlewares/index.d.ts +0 -2
  138. package/dist/server/src/migrations/001-canonical-path.d.ts +0 -7
  139. package/dist/server/src/migrations/index.d.ts +0 -3
  140. package/dist/server/src/policies/has-permissions.d.ts +0 -2
  141. package/dist/server/src/policies/index.d.ts +0 -4
  142. package/dist/server/src/register.d.ts +0 -5
  143. package/dist/server/src/routes/admin.d.ts +0 -17
  144. package/dist/server/src/routes/client.d.ts +0 -12
  145. package/dist/server/src/routes/index.d.ts +0 -30
  146. package/dist/server/src/services/admin.d.ts +0 -18
  147. package/dist/server/src/services/client.d.ts +0 -8
  148. package/dist/server/src/services/index.d.ts +0 -25
  149. package/dist/server/src/utils/buildCanonicalPath.d.ts +0 -1
  150. package/dist/server/src/utils/buildNavigationPath.d.ts +0 -5
  151. package/dist/server/src/utils/buildStructuredNavigation.d.ts +0 -11
  152. package/dist/server/src/utils/cascadeCanonicalPathUpdates.d.ts +0 -1
  153. package/dist/server/src/utils/cleanRootKeys.d.ts +0 -1
  154. package/dist/server/src/utils/duplicateCheck.d.ts +0 -1
  155. package/dist/server/src/utils/extractRouteAndItems.d.ts +0 -2
  156. package/dist/server/src/utils/getNonInternalRouteIds.d.ts +0 -1
  157. package/dist/server/src/utils/getRouteAncestors.d.ts +0 -1
  158. package/dist/server/src/utils/getRouteDescendants.d.ts +0 -1
  159. package/dist/server/src/utils/index.d.ts +0 -19
  160. package/dist/server/src/utils/navItemHandler.d.ts +0 -5
  161. package/dist/server/src/utils/navigationItemStructure.d.ts +0 -27
  162. package/dist/server/src/utils/pluginHelpers.d.ts +0 -3
  163. package/dist/server/src/utils/populateDeep.d.ts +0 -4
  164. package/dist/server/src/utils/reduceDepthOfOrphanedItems.d.ts +0 -2
  165. package/dist/server/src/utils/removeWaFields.d.ts +0 -1
  166. package/dist/server/src/utils/routeHandler.d.ts +0 -5
  167. package/dist/server/src/utils/validateRouteDependencies.d.ts +0 -4
  168. package/dist/types/api.d.ts +0 -7
  169. package/dist/types/index.d.ts +0 -4
  170. package/dist/types/navigation.d.ts +0 -66
  171. package/dist/types/route.d.ts +0 -37
  172. package/dist/types/strapi.d.ts +0 -52
  173. package/dist/utils/index.d.ts +0 -4
  174. package/dist/utils/pluginConstants.d.ts +0 -3
  175. package/dist/utils/pluginId.d.ts +0 -4
  176. package/dist/utils/transformToUrl.d.ts +0 -1
@@ -41,18 +41,25 @@ const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
41
41
  );
42
42
  });
43
43
  };
44
- function transformToUrl(input) {
44
+ function transformToUrl(input, replaceSlash = true) {
45
45
  const specialCharMap = {
46
46
  "ü": "ue",
47
47
  "ä": "ae",
48
- "ö": "oe"
48
+ "ö": "oe",
49
+ "ß": "ss"
49
50
  };
50
51
  if (!input || typeof input !== "string") return "";
51
52
  input = input.toLowerCase();
52
53
  input = input.replace(/\/+/g, "/");
53
54
  input = input.startsWith("/") ? input.slice(1) : input;
54
55
  input = input.endsWith("/") ? input.slice(0, -1) : input;
55
- input = input.replace(/\//g, "-");
56
+ if (replaceSlash) {
57
+ input = input.replace(/\//g, "-");
58
+ } else {
59
+ input = input.replace(/\/+/g, "/");
60
+ input = input.startsWith("/") ? input.slice(1) : input;
61
+ input = input.endsWith("/") ? input.slice(0, -1) : input;
62
+ }
56
63
  for (const char in specialCharMap) {
57
64
  const regex = new RegExp(char, "g");
58
65
  input = input.replace(regex, specialCharMap[char]);
@@ -63,122 +70,11 @@ function transformToUrl(input) {
63
70
  input = input.replace(/-+/g, "-");
64
71
  return input;
65
72
  }
66
- const version = "0.9.6";
67
- const keywords = [];
68
- const type = "commonjs";
69
- const exports$1 = {
70
- "./package.json": "./package.json",
71
- "./strapi-admin": {
72
- types: "./dist/admin/src/index.d.ts",
73
- source: "./admin/src/index.tsx",
74
- "import": "./dist/admin/index.mjs",
75
- require: "./dist/admin/index.js",
76
- "default": "./dist/admin/index.js"
77
- },
78
- "./strapi-server": {
79
- types: "./dist/server/src/index.d.ts",
80
- source: "./server/src/index.ts",
81
- "import": "./dist/server/index.mjs",
82
- require: "./dist/server/index.js",
83
- "default": "./dist/server/index.js"
84
- }
85
- };
86
- const files = [
87
- "dist"
88
- ];
89
- const scripts = {
90
- build: "strapi-plugin build && yalc push --publish",
91
- watch: "strapi-plugin watch",
92
- "watch:link": "strapi-plugin watch:link",
93
- verify: "strapi-plugin verify",
94
- "test:ts:front": "tsc -p admin/tsconfig.json",
95
- "test:ts:back": "tsc -p server/tsconfig.json",
96
- "test:jest": "ENV_PATH=./playground/.env jest --verbose --runInBand --forceExit",
97
- "test:cypress": "cypress run",
98
- "test:cypress:open": "cypress open",
99
- preversion: "yarn build",
100
- postversion: "git push && git push --tags"
101
- };
102
- const dependencies = {
103
- "@dnd-kit/core": "^6.3.1",
104
- "@dnd-kit/sortable": "^10.0.0",
105
- "@dnd-kit/utilities": "^3.2.2",
106
- "@strapi/design-system": "^2.0.0-rc.14",
107
- "@strapi/icons": "^2.0.0-rc.14",
108
- "react-intl": "^7.1.0"
109
- };
110
- const devDependencies = {
111
- "@strapi/sdk-plugin": "^5.0.0",
112
- "@strapi/strapi": "^5.0.0",
113
- "@strapi/typescript-utils": "^5.0.0",
114
- "@types/react": "^19.0.0",
115
- "@types/react-dom": "^19.0.0",
116
- cypress: "^13.9.0",
117
- "cypress-terminal-report": "^6.0.2",
118
- jest: "^29.7.0",
119
- prettier: "^3.4.2",
120
- react: "^19.0.0",
121
- "react-router-dom": "^6.0.0",
122
- supertest: "^7.0.0",
123
- typescript: "^5.7.2"
124
- };
125
- const peerDependencies = {
126
- "@strapi/strapi": "^5.0.0",
127
- react: "^17.0.0 || ^18.0.0",
128
- "react-dom": "^17.0.0 || ^18.0.0",
129
- "react-router-dom": "^6.0.0",
130
- "styled-components": "^6.0.0"
131
- };
132
- const description = "A strapi plugin to manage URL routes and navigations.";
133
- const strapi$1 = {
134
- name: "webatlas",
135
- displayName: "Webatlas",
136
- description: "A strapi plugin to manage URL routes and navigations.",
137
- kind: "plugin"
138
- };
139
- const name = "@mattisvensson/strapi-plugin-webatlas";
140
- const license = "MIT";
141
- const repository = {
142
- type: "git",
143
- url: "git+ssh://git@github.com:mattisvensson/strapi-plugin-webatlas.git"
144
- };
145
- const bugs = {
146
- url: "https://github.com/mattisvensson/strapi-plugin-webatlas/issues"
147
- };
148
- const homepage = "https://github.com/mattisvensson/strapi-plugin-webatlas#readme";
149
- const author = {
150
- name: "Matti Svensson",
151
- email: "mattisvensson@web.de",
152
- url: "https://mattisvensson.dev"
153
- };
154
- const maintainers = [
155
- {
156
- name: "Matti Svensson",
157
- email: "mattisvensson@web.de",
158
- url: "https://mattisvensson.dev"
159
- }
160
- ];
161
- const packageManager = "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e";
73
+ const version = "0.11.0";
74
+ const strapi$1 = { "name": "webatlas", "displayName": "Webatlas" };
162
75
  const pluginPkg = {
163
76
  version,
164
- keywords,
165
- type,
166
- exports: exports$1,
167
- files,
168
- scripts,
169
- dependencies,
170
- devDependencies,
171
- peerDependencies,
172
- description,
173
- strapi: strapi$1,
174
- name,
175
- license,
176
- repository,
177
- bugs,
178
- homepage,
179
- author,
180
- maintainers,
181
- packageManager
77
+ strapi: strapi$1
182
78
  };
183
79
  const PLUGIN_ID = pluginPkg.strapi.name.replace(/^(@[^-,.][\w,-]+\/|strapi-)plugin-/i, "") || "webatlas";
184
80
  const PLUGIN_NAME = pluginPkg.strapi.displayName;
@@ -347,10 +243,10 @@ function usePluginConfig() {
347
243
  throw new Error(`Couldn't fetch plugin config`);
348
244
  }
349
245
  const allowedContentTypes = contentTypesArray.filter(
350
- (type2) => type2.pluginOptions?.webatlas?.enabled === true
246
+ (type) => type.pluginOptions?.webatlas?.enabled === true
351
247
  );
352
- const contentTypeUids = new Set(allowedContentTypes.map((type2) => type2.uid));
353
- const activeContentTypes = config2.selectedContentTypes.filter((type2) => contentTypeUids.has(type2.uid));
248
+ const contentTypeUids = new Set(allowedContentTypes.map((type) => type.uid));
249
+ const activeContentTypes = config2.selectedContentTypes.filter((type) => contentTypeUids.has(type.uid));
354
250
  const displayConfig = {
355
251
  ...config2,
356
252
  selectedContentTypes: activeContentTypes
@@ -404,7 +300,7 @@ async function duplicateCheck({
404
300
  }
405
301
  const getTranslation = (id) => `${PLUGIN_ID}.${id}`;
406
302
  function PathInfo({ validationState, replacement }) {
407
- const [color, setColor] = React.useState(null);
303
+ const [color, setColor] = React.useState("neutral800");
408
304
  const [text, setText] = React.useState(null);
409
305
  const { formatMessage } = reactIntl.useIntl();
410
306
  React.useEffect(() => {
@@ -909,14 +805,14 @@ function $5cb92bef7577960e$var$dispatchUpdate() {
909
805
  const event = new CustomEvent($5cb92bef7577960e$var$CONTEXT_UPDATE);
910
806
  document.dispatchEvent(event);
911
807
  }
912
- function $5cb92bef7577960e$var$handleAndDispatchCustomEvent(name2, handler, detail, { discrete }) {
808
+ function $5cb92bef7577960e$var$handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
913
809
  const target = detail.originalEvent.target;
914
- const event = new CustomEvent(name2, {
810
+ const event = new CustomEvent(name, {
915
811
  bubbles: false,
916
812
  cancelable: true,
917
813
  detail
918
814
  });
919
- if (handler) target.addEventListener(name2, handler, {
815
+ if (handler) target.addEventListener(name, handler, {
920
816
  once: true
921
817
  });
922
818
  if (discrete) $8927f6f2acc4f386$export$6d1a0317bde7de7f(target, event);
@@ -1144,7 +1040,7 @@ const computePosition$1 = async (reference, floating, config) => {
1144
1040
  let resetCount = 0;
1145
1041
  for (let i = 0; i < validMiddleware.length; i++) {
1146
1042
  const {
1147
- name: name2,
1043
+ name,
1148
1044
  fn
1149
1045
  } = validMiddleware[i];
1150
1046
  const {
@@ -1170,8 +1066,8 @@ const computePosition$1 = async (reference, floating, config) => {
1170
1066
  y = nextY != null ? nextY : y;
1171
1067
  middlewareData = {
1172
1068
  ...middlewareData,
1173
- [name2]: {
1174
- ...middlewareData[name2],
1069
+ [name]: {
1070
+ ...middlewareData[name],
1175
1071
  ...data
1176
1072
  }
1177
1073
  };
@@ -3271,7 +3167,7 @@ const $ea1ef594cf570d83$export$439d29a4e110a164 = /* @__PURE__ */ React.forwardR
3271
3167
  }));
3272
3168
  });
3273
3169
  const $ea1ef594cf570d83$export$be92b6f5f03c0fe9 = $ea1ef594cf570d83$export$439d29a4e110a164;
3274
- const [$a093c7e1ec25a057$var$createTooltipContext, $a093c7e1ec25a057$export$1c540a2224f0d865] = $c512c27ab02ef895$export$50c7b4e9d9f19c1("Tooltip", [
3170
+ const [$a093c7e1ec25a057$var$createTooltipContext] = $c512c27ab02ef895$export$50c7b4e9d9f19c1("Tooltip", [
3275
3171
  $cf1ac5d9fe0e8206$export$722aac194ae923
3276
3172
  ]);
3277
3173
  const $a093c7e1ec25a057$var$usePopperScope = $cf1ac5d9fe0e8206$export$722aac194ae923();
@@ -3762,7 +3658,7 @@ const $a093c7e1ec25a057$export$be92b6f5f03c0fe9 = $a093c7e1ec25a057$export$28c66
3762
3658
  const $a093c7e1ec25a057$export$41fb9f06171c75f4 = $a093c7e1ec25a057$export$8c610744efcf8a1d;
3763
3659
  const $a093c7e1ec25a057$export$602eac185826482c = $a093c7e1ec25a057$export$7b36b8f925ab7497;
3764
3660
  const $a093c7e1ec25a057$export$7c6e2c02157bb7d2 = $a093c7e1ec25a057$export$e9003e2be37ec060;
3765
- function Tooltip({ description: description2 }) {
3661
+ function Tooltip({ description }) {
3766
3662
  return /* @__PURE__ */ jsxRuntime.jsx($a093c7e1ec25a057$export$2881499e37b75b9a, { children: /* @__PURE__ */ jsxRuntime.jsxs($a093c7e1ec25a057$export$be92b6f5f03c0fe9, { children: [
3767
3663
  /* @__PURE__ */ jsxRuntime.jsx($a093c7e1ec25a057$export$41fb9f06171c75f4, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(icons.Information, { "aria-hidden": "true" }) }),
3768
3664
  /* @__PURE__ */ jsxRuntime.jsx($a093c7e1ec25a057$export$602eac185826482c, { children: /* @__PURE__ */ jsxRuntime.jsx($a093c7e1ec25a057$export$7c6e2c02157bb7d2, { sideOffset: 5, style: { zIndex: 9999 }, children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -3774,7 +3670,7 @@ function Tooltip({ description: description2 }) {
3774
3670
  hasRadius: true,
3775
3671
  shadow: "filterShadow",
3776
3672
  maxWidth: "300px",
3777
- children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral0", children: description2 })
3673
+ children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral0", children: description })
3778
3674
  }
3779
3675
  ) }) })
3780
3676
  ] }) });
@@ -3814,10 +3710,7 @@ function PathInput({ path, dispatchPath, isOverride, config }) {
3814
3710
  value: displayedPath,
3815
3711
  onChange: (e) => dispatchPath({ type: "SET_OVERRIDEPATH", payload: e.target.value }),
3816
3712
  disabled: !isOverride,
3817
- onBlur: (e) => {
3818
- if (e.target.value === path.prevValue) return;
3819
- dispatchPath({ type: "DEFAULT", payload: e.target.value });
3820
- },
3713
+ onBlur: (e) => dispatchPath({ type: "SET_OVERRIDEPATH", payload: transformToUrl(e.target.value) }),
3821
3714
  style: { outline: inputBorder }
3822
3715
  }
3823
3716
  ),
@@ -3826,11 +3719,17 @@ function PathInput({ path, dispatchPath, isOverride, config }) {
3826
3719
  }
3827
3720
  );
3828
3721
  }
3829
- function RouteStructure({ routes, selectedParent, setSelectedParent, canonicalPath, prohibitedRouteIds }) {
3722
+ function RouteStructure({
3723
+ routes,
3724
+ selectedParent,
3725
+ setSelectedParent,
3726
+ canonicalPath,
3727
+ prohibitedRouteIds
3728
+ }) {
3830
3729
  const { formatMessage } = reactIntl.useIntl();
3831
- const sortedRoutes = React.useMemo(() => {
3832
- return [...routes].sort((a, b) => a.title.localeCompare(b.title));
3833
- }, [routes]);
3730
+ const filteredRoutes = React.useMemo(() => {
3731
+ return [...routes].sort((a, b) => a.title.localeCompare(b.title)).filter((route) => !prohibitedRouteIds?.includes(route.documentId) || route.documentId === selectedParent?.documentId);
3732
+ }, [routes, prohibitedRouteIds, selectedParent]);
3834
3733
  const handleSelectParent = (value) => {
3835
3734
  const parentRoute = routes.find((route) => route.documentId === value) || null;
3836
3735
  setSelectedParent(parentRoute);
@@ -3851,16 +3750,14 @@ function RouteStructure({ routes, selectedParent, setSelectedParent, canonicalPa
3851
3750
  id: getTranslation("components.CMEditViewAside.path.input.parentSelect.rootPath"),
3852
3751
  defaultMessage: "None (root path)"
3853
3752
  }) }),
3854
- sortedRoutes.filter((route) => !prohibitedRouteIds?.includes(route.documentId) || route.documentId === selectedParent?.documentId).map(
3855
- (route) => /* @__PURE__ */ jsxRuntime.jsx(
3856
- designSystem.SingleSelectOption,
3857
- {
3858
- value: route.documentId,
3859
- children: route.title
3860
- },
3861
- route.documentId
3862
- )
3863
- )
3753
+ filteredRoutes.map((route) => /* @__PURE__ */ jsxRuntime.jsx(
3754
+ designSystem.SingleSelectOption,
3755
+ {
3756
+ value: route.documentId,
3757
+ children: route.title
3758
+ },
3759
+ route.documentId
3760
+ ))
3864
3761
  ]
3865
3762
  }
3866
3763
  )
@@ -3888,9 +3785,10 @@ function RouteStructure({ routes, selectedParent, setSelectedParent, canonicalPa
3888
3785
  ] })
3889
3786
  ] });
3890
3787
  }
3891
- function getCanonicalPath(selectedParent, sourceFieldValue) {
3892
- const parentPath = selectedParent ? selectedParent.canonicalPath + "/" : "";
3893
- return `${parentPath}${transformToUrl(sourceFieldValue)}`;
3788
+ function buildPath(type, slug, parent) {
3789
+ const parentSlug = type === "canonical" ? parent?.canonicalPath : parent?.path;
3790
+ const parentPath = parentSlug ? `${parentSlug}/` : "";
3791
+ return `${parentPath}${transformToUrl(slug)}`;
3894
3792
  }
3895
3793
  function reducer(state, action) {
3896
3794
  switch (action.type) {
@@ -3921,6 +3819,8 @@ function reducer(state, action) {
3921
3819
  return { ...state, replacement: action.payload };
3922
3820
  case "SET_UIDPATH":
3923
3821
  return { ...state, uidPath: action.payload };
3822
+ case "SET_SLUG":
3823
+ return { ...state, slug: action.payload };
3924
3824
  case "SET_CANONICALPATH":
3925
3825
  return { ...state, canonicalPath: action.payload };
3926
3826
  case "SET_OVERRIDEPATH":
@@ -3966,66 +3866,76 @@ const Panel = ({ config }) => {
3966
3866
  replacement: null,
3967
3867
  uidPath: "",
3968
3868
  canonicalPath: "",
3869
+ slug: "",
3969
3870
  overridePath: ""
3970
3871
  });
3971
3872
  const hasUserChangedField = React.useRef(false);
3873
+ const hasUserInteracted = React.useRef(false);
3972
3874
  const initialPath = React.useRef("");
3973
3875
  const prevSourceValueRef = React.useRef(null);
3974
- const sourceFieldValue = React.useMemo(() => {
3975
- const key = config?.default;
3976
- if (!key) return "";
3977
- const currentValue = values[key];
3978
- if (!currentValue) return "";
3979
- return currentValue;
3980
- }, [values, config]);
3981
- const debouncedCheckPath = React.useCallback(debounce(checkPath, 250), []);
3982
- const debouncedCheckCanonicalPath = React.useCallback(debounce(checkCanonicalPath, 250), []);
3876
+ const sourceFieldValue = values[config?.default] || "";
3877
+ const initialSourceFieldValue = initialValues[config?.default] || "";
3878
+ const latestCheckPathRef = React.useRef(checkPath);
3879
+ latestCheckPathRef.current = checkPath;
3880
+ const debouncedCheckPath = React.useRef(debounce((p, id) => latestCheckPathRef.current(p, id), 250)).current;
3881
+ const latestCheckCanonicalRef = React.useRef(checkCanonicalPath);
3882
+ latestCheckCanonicalRef.current = checkCanonicalPath;
3883
+ const debouncedCheckCanonicalPath = React.useRef(debounce((p, id) => latestCheckCanonicalRef.current(p, id), 250)).current;
3983
3884
  React.useEffect(() => {
3984
- if (isOverride) onChange("webatlas_path", path.overridePath);
3985
- onChange("webatlas_override", isOverride);
3986
- onChange("webatlas_parent", selectedParent?.documentId || null);
3987
- }, [path.value, path.overridePath, isOverride, selectedParent]);
3988
- const debouncedValueEffect = React.useMemo(() => debounce((currentValues) => {
3989
- const key = config?.default;
3990
- if (!key) return;
3991
- const currentValue = currentValues[key];
3992
- if (!currentValue) {
3993
- dispatchPath({ type: "NO_URL_CHECK", payload: "" });
3994
- return;
3995
- }
3996
- if (initialLoadComplete && (hasUserChangedField.current || !route) && prevSourceValueRef.current !== currentValue && !isOverride) {
3997
- const path2 = getCanonicalPath(selectedParent, currentValue);
3998
- if (currentValue === initialValues[key]) {
3999
- dispatchPath({ type: "NO_URL_CHECK", payload: path2 });
4000
- } else {
4001
- dispatchPath({ type: "DEFAULT", payload: path2 });
4002
- }
4003
- prevSourceValueRef.current = currentValue;
3885
+ async function fetchAllRoutes() {
3886
+ const allRoutes = await getAllRoutes();
3887
+ setRoutes(allRoutes);
4004
3888
  }
4005
- }, 500), [config?.default, initialValues, isOverride, initialLoadComplete, route, selectedParent]);
3889
+ fetchAllRoutes();
3890
+ }, []);
4006
3891
  React.useEffect(() => {
4007
- const key = config?.default;
4008
- if (!key) return;
4009
- const currentValue = values[key];
4010
- const initialValue = initialValues[key];
4011
- if (currentValue !== initialValue && currentValue && !isOverride) {
4012
- onChange("webatlas_path", transformToUrl(currentValue));
3892
+ const slug = transformToUrl(sourceFieldValue);
3893
+ const overridePath = transformToUrl(path.overridePath || "", false);
3894
+ const data = {
3895
+ path: isOverride ? overridePath : path.value,
3896
+ isOverride,
3897
+ parentDocumentId: selectedParent?.documentId || null,
3898
+ slug: isOverride ? overridePath : slug
3899
+ };
3900
+ if (hasUserChangedField.current || hasUserInteracted.current) {
3901
+ onChange("webatlas", data);
4013
3902
  }
3903
+ }, [path.value, path.overridePath, isOverride, selectedParent, sourceFieldValue, hasUserChangedField, hasUserInteracted]);
3904
+ React.useEffect(() => {
4014
3905
  if (!initialLoadComplete) return;
4015
- if (currentValue !== initialValue) {
3906
+ if (sourceFieldValue !== initialSourceFieldValue) {
4016
3907
  hasUserChangedField.current = true;
4017
3908
  }
4018
- debouncedValueEffect(values);
4019
- }, [values, debouncedValueEffect, initialLoadComplete, selectedParent]);
3909
+ if (!sourceFieldValue) {
3910
+ dispatchPath({ type: "NO_URL_CHECK", payload: "" });
3911
+ return;
3912
+ }
3913
+ if (initialLoadComplete && (hasUserChangedField.current || !route) && prevSourceValueRef.current !== sourceFieldValue && !isOverride) {
3914
+ const newPath = buildPath("path", sourceFieldValue, selectedParent);
3915
+ const type = sourceFieldValue === initialSourceFieldValue ? "NO_URL_CHECK" : "DEFAULT";
3916
+ const slug = transformToUrl(sourceFieldValue);
3917
+ dispatchPath({ type, payload: newPath });
3918
+ dispatchPath({ type: "SET_SLUG", payload: slug });
3919
+ dispatchPath({ type: "SET_OVERRIDEPATH", payload: slug });
3920
+ prevSourceValueRef.current = sourceFieldValue;
3921
+ }
3922
+ const canonicalPath = buildPath("canonical", sourceFieldValue, selectedParent);
3923
+ dispatchPath({ type: "SET_CANONICALPATH", payload: canonicalPath });
3924
+ debouncedCheckCanonicalPath(canonicalPath, route?.documentId || null);
3925
+ }, [sourceFieldValue, initialSourceFieldValue, initialLoadComplete, selectedParent, isOverride, route]);
4020
3926
  React.useEffect(() => {
3927
+ if (!initialLoadComplete) return;
4021
3928
  if (path.needsUrlCheck && path.value) {
4022
3929
  if (path.uidPath === path.value || initialPath.current === path.value) return;
4023
3930
  debouncedCheckPath(path.value, route?.documentId || null);
4024
3931
  dispatchPath({ type: "RESET_URL_CHECK_FLAG" });
3932
+ } else {
3933
+ setValidationState("idle");
3934
+ dispatchPath({ type: "SET_REPLACEMENT", payload: null });
4025
3935
  }
4026
- }, [path.needsUrlCheck, path.value, path.uidPath, route]);
3936
+ }, [path.needsUrlCheck, path.value, path.uidPath, route, initialLoadComplete]);
4027
3937
  React.useEffect(() => {
4028
- async function getTypes() {
3938
+ async function fetchRelatedRute() {
4029
3939
  if (!initialValues.documentId) {
4030
3940
  setInitialLoadComplete(true);
4031
3941
  return;
@@ -4036,12 +3946,11 @@ const Panel = ({ config }) => {
4036
3946
  initialPath.current = initialValues.webatlas_path || route2.uidPath;
4037
3947
  setRoute(route2);
4038
3948
  setIsOverride(route2.isOverride || false);
4039
- if (route2.isOverride) {
4040
- dispatchPath({ type: "SET_OVERRIDEPATH", payload: route2.path || "" });
4041
- } else {
4042
- dispatchPath({ type: "NO_TRANSFORM_AND_CHECK", payload: route2.path || "" });
4043
- }
3949
+ dispatchPath({ type: "SET_OVERRIDEPATH", payload: route2.path || "" });
3950
+ dispatchPath({ type: "NO_TRANSFORM_AND_CHECK", payload: route2.path || "" });
4044
3951
  dispatchPath({ type: "SET_UIDPATH", payload: route2.uidPath || "" });
3952
+ dispatchPath({ type: "SET_SLUG", payload: route2.slug || "" });
3953
+ dispatchPath({ type: "SET_CANONICALPATH", payload: route2.canonicalPath || "" });
4045
3954
  const key = config?.default;
4046
3955
  if (key) {
4047
3956
  prevSourceValueRef.current = values[key];
@@ -4052,27 +3961,13 @@ const Panel = ({ config }) => {
4052
3961
  }
4053
3962
  setInitialLoadComplete(true);
4054
3963
  }
4055
- getTypes();
3964
+ fetchRelatedRute();
4056
3965
  }, [config]);
4057
3966
  React.useEffect(() => {
4058
- if (initialValues.webatlas_parent && routes.length > 0 && !selectedParent) {
4059
- const parentRoute = routes.find((route2) => route2.documentId === initialValues.webatlas_parent);
4060
- if (parentRoute) {
4061
- setSelectedParent(parentRoute);
4062
- const canonicalPath = getCanonicalPath(parentRoute, sourceFieldValue);
4063
- dispatchPath({ type: "DEFAULT", payload: canonicalPath });
4064
- }
4065
- }
4066
- }, [initialValues, routes]);
4067
- React.useEffect(() => {
4068
- if (initialValues.webatlas_path) dispatchPath({ type: "NO_URL_CHECK", payload: initialValues.webatlas_path });
4069
- if (initialValues.webatlas_override) setIsOverride(initialValues.webatlas_override);
4070
- async function fetchAllRoutes() {
4071
- const allRoutes = await getAllRoutes();
4072
- setRoutes(allRoutes);
4073
- }
4074
- fetchAllRoutes();
4075
- }, []);
3967
+ if (!route || !routes.length) return;
3968
+ const parentRoute = routes.find((singleRoute) => singleRoute.documentId === route.parent?.documentId);
3969
+ setSelectedParent(parentRoute || null);
3970
+ }, [route, routes]);
4076
3971
  React.useEffect(() => {
4077
3972
  async function fetchProhibitedRouteIds() {
4078
3973
  const prohibitedIds = await getProhibitedRouteIds(route?.documentId);
@@ -4082,27 +3977,26 @@ const Panel = ({ config }) => {
4082
3977
  }, [route]);
4083
3978
  React.useEffect(() => {
4084
3979
  if (!sourceFieldValue) return;
4085
- const canonicalPath = getCanonicalPath(selectedParent, sourceFieldValue);
4086
- !isOverride && dispatchPath({ type: "DEFAULT", payload: canonicalPath });
4087
- dispatchPath({ type: "SET_CANONICALPATH", payload: canonicalPath });
4088
- debouncedCheckCanonicalPath(canonicalPath, route?.documentId || null);
4089
- dispatchPath({ type: "RESET_URL_CHECK_FLAG" });
3980
+ if (!isOverride) {
3981
+ const newPath = buildPath("path", sourceFieldValue, selectedParent);
3982
+ dispatchPath({ type: "DEFAULT", payload: newPath });
3983
+ }
4090
3984
  }, [selectedParent, sourceFieldValue, route, isOverride]);
4091
- async function checkCanonicalPath(path2, documentId) {
3985
+ async function checkCanonicalPath(path2, routeDocumentId) {
4092
3986
  if (!path2) return;
4093
3987
  try {
4094
- const result = await duplicateCheck({ fetchFunction: get, path: path2, routeDocumentId: documentId, withoutTransform: true });
3988
+ const result = await duplicateCheck({ fetchFunction: get, path: path2, routeDocumentId, withoutTransform: true });
4095
3989
  dispatchPath({ type: "SET_CANONICALPATH", payload: result });
4096
3990
  } catch (err) {
4097
3991
  strapi.log.error(err);
4098
3992
  }
4099
3993
  }
4100
- async function checkPath(path2, route2) {
3994
+ async function checkPath(path2, routeDocumentId) {
4101
3995
  if (!path2) return;
4102
3996
  setValidationState("checking");
4103
3997
  dispatchPath({ type: "SET_REPLACEMENT", payload: "" });
4104
3998
  try {
4105
- const data = await duplicateCheck({ fetchFunction: get, path: path2, routeDocumentId: route2, withoutTransform: true });
3999
+ const data = await duplicateCheck({ fetchFunction: get, path: path2, routeDocumentId, withoutTransform: true });
4106
4000
  if (!data || data === path2) return;
4107
4001
  dispatchPath({ type: "NO_URL_CHECK", payload: data });
4108
4002
  dispatchPath({ type: "SET_REPLACEMENT", payload: data });
@@ -4119,7 +4013,7 @@ const Panel = ({ config }) => {
4119
4013
  return /* @__PURE__ */ jsxRuntime.jsx(
4120
4014
  designSystem.Box,
4121
4015
  {
4122
- as: "aside",
4016
+ tag: "aside",
4123
4017
  "aria-labelledby": "URL Route",
4124
4018
  width: "100%",
4125
4019
  children: /* @__PURE__ */ jsxRuntime.jsxs(
@@ -4139,7 +4033,10 @@ const Panel = ({ config }) => {
4139
4033
  canonicalPath: path.canonicalPath,
4140
4034
  routes,
4141
4035
  selectedParent,
4142
- setSelectedParent,
4036
+ setSelectedParent: (val) => {
4037
+ hasUserInteracted.current = true;
4038
+ setSelectedParent(val);
4039
+ },
4143
4040
  prohibitedRouteIds
4144
4041
  }
4145
4042
  ),
@@ -4166,7 +4063,10 @@ const Panel = ({ config }) => {
4166
4063
  OverrideCheckbox,
4167
4064
  {
4168
4065
  isOverride,
4169
- setIsOverride,
4066
+ setIsOverride: (val) => {
4067
+ hasUserInteracted.current = true;
4068
+ setIsOverride(val);
4069
+ },
4170
4070
  disabledCondition: !canCreate && !canUpdate
4171
4071
  }
4172
4072
  ),
@@ -4201,7 +4101,7 @@ const CMEditViewAside = ({ documentId, model }) => {
4201
4101
  setIsAllowedContentType(!!contentType?.pluginOptions?.webatlas?.enabled);
4202
4102
  }, [contentTypes, model]);
4203
4103
  React.useEffect(() => {
4204
- const isWebatlasLabel = (label) => label.textContent?.startsWith("webatlas_");
4104
+ const isWebatlasLabel = (label) => label.textContent?.startsWith("webatlas");
4205
4105
  const cleanupLabels = () => {
4206
4106
  const labels = document.querySelectorAll("label");
4207
4107
  labels.forEach((label) => {
@@ -4232,10 +4132,10 @@ const CMEditViewAside = ({ documentId, model }) => {
4232
4132
  if (!config) return;
4233
4133
  setIsActiveContentType(false);
4234
4134
  setContentTypeConfig(null);
4235
- config?.selectedContentTypes?.forEach((type2) => {
4236
- if (type2.uid === model) {
4135
+ config?.selectedContentTypes?.forEach((type) => {
4136
+ if (type.uid === model) {
4237
4137
  setIsActiveContentType(true);
4238
- setContentTypeConfig(type2);
4138
+ setContentTypeConfig(type);
4239
4139
  }
4240
4140
  });
4241
4141
  setIsLoading(false);
@@ -4271,7 +4171,7 @@ const index = {
4271
4171
  id: `${PLUGIN_ID}.link.paths`,
4272
4172
  defaultMessage: "Paths"
4273
4173
  },
4274
- Component: () => Promise.resolve().then(() => require("./index-d09V61nm.js")),
4174
+ Component: () => Promise.resolve().then(() => require("./index-JLpXBQVL.js")),
4275
4175
  permissions: [
4276
4176
  pluginPermissions["page.routes"][0]
4277
4177
  ]
@@ -4283,7 +4183,7 @@ const index = {
4283
4183
  id: `${PLUGIN_ID}.link.navigation`,
4284
4184
  defaultMessage: "Navigation"
4285
4185
  },
4286
- Component: () => Promise.resolve().then(() => require("./index-IRSCe8PX.js")),
4186
+ Component: () => Promise.resolve().then(() => require("./index-AVI3QJ0R.js")),
4287
4187
  permissions: [
4288
4188
  pluginPermissions["page.navigation"][0]
4289
4189
  ]
@@ -4303,7 +4203,7 @@ const index = {
4303
4203
  },
4304
4204
  id: `${PLUGIN_ID}-general`,
4305
4205
  to: `${PLUGIN_ID}/general`,
4306
- Component: () => Promise.resolve().then(() => require("./index-BucL4va6.js")),
4206
+ Component: () => Promise.resolve().then(() => require("./index-B90eSO4a.js")),
4307
4207
  permissions: [
4308
4208
  pluginPermissions["settings.general"][0]
4309
4209
  ]
@@ -4318,7 +4218,7 @@ const index = {
4318
4218
  },
4319
4219
  id: `${PLUGIN_ID}-navigation`,
4320
4220
  to: `${PLUGIN_ID}/navigation`,
4321
- Component: () => Promise.resolve().then(() => require("./index-D-vJE_K8.js")),
4221
+ Component: () => Promise.resolve().then(() => require("./index-D8bG0YFB.js")),
4322
4222
  permissions: [
4323
4223
  pluginPermissions["settings.navigation"][0]
4324
4224
  ]
@@ -4360,3 +4260,4 @@ exports.pluginPermissions = pluginPermissions;
4360
4260
  exports.useAllContentTypes = useAllContentTypes;
4361
4261
  exports.useApi = useApi;
4362
4262
  exports.usePluginConfig = usePluginConfig;
4263
+ //# sourceMappingURL=index-Yq-QR8t0.js.map