@strapi/i18n 0.0.0-experimental.826f263c58b6886b849d3f03b81f7a530bc51c91 → 0.0.0-experimental.82fd5bc51d11a2da848fc7fd1cc573f8ea0a6535

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 (396) hide show
  1. package/LICENSE +18 -3
  2. package/dist/admin/components/BulkLocaleActionModal.js +262 -0
  3. package/dist/admin/components/BulkLocaleActionModal.js.map +1 -0
  4. package/dist/admin/components/BulkLocaleActionModal.mjs +260 -0
  5. package/dist/admin/components/BulkLocaleActionModal.mjs.map +1 -0
  6. package/dist/admin/components/CMHeaderActions.js +721 -0
  7. package/dist/admin/components/CMHeaderActions.js.map +1 -0
  8. package/dist/admin/components/CMHeaderActions.mjs +696 -0
  9. package/dist/admin/components/CMHeaderActions.mjs.map +1 -0
  10. package/dist/admin/components/CMListViewModalsAdditionalInformation.js +69 -0
  11. package/dist/admin/components/CMListViewModalsAdditionalInformation.js.map +1 -0
  12. package/dist/admin/components/CMListViewModalsAdditionalInformation.mjs +65 -0
  13. package/dist/admin/components/CMListViewModalsAdditionalInformation.mjs.map +1 -0
  14. package/dist/admin/components/CheckboxConfirmation.js +155 -0
  15. package/dist/admin/components/CheckboxConfirmation.js.map +1 -0
  16. package/dist/admin/components/CheckboxConfirmation.mjs +134 -0
  17. package/dist/admin/components/CheckboxConfirmation.mjs.map +1 -0
  18. package/dist/admin/components/CreateLocale.js +395 -0
  19. package/dist/admin/components/CreateLocale.js.map +1 -0
  20. package/dist/admin/components/CreateLocale.mjs +369 -0
  21. package/dist/admin/components/CreateLocale.mjs.map +1 -0
  22. package/dist/admin/components/DeleteLocale.js +90 -0
  23. package/dist/admin/components/DeleteLocale.js.map +1 -0
  24. package/dist/admin/components/DeleteLocale.mjs +69 -0
  25. package/dist/admin/components/DeleteLocale.mjs.map +1 -0
  26. package/dist/admin/components/EditLocale.js +212 -0
  27. package/dist/admin/components/EditLocale.js.map +1 -0
  28. package/dist/admin/components/EditLocale.mjs +190 -0
  29. package/dist/admin/components/EditLocale.mjs.map +1 -0
  30. package/dist/admin/components/LocaleListCell.js +82 -0
  31. package/dist/admin/components/LocaleListCell.js.map +1 -0
  32. package/dist/admin/components/LocaleListCell.mjs +80 -0
  33. package/dist/admin/components/LocaleListCell.mjs.map +1 -0
  34. package/dist/admin/components/LocalePicker.js +98 -0
  35. package/dist/admin/components/LocalePicker.js.map +1 -0
  36. package/dist/admin/components/LocalePicker.mjs +77 -0
  37. package/dist/admin/components/LocalePicker.mjs.map +1 -0
  38. package/dist/admin/components/LocaleTable.js +143 -0
  39. package/dist/admin/components/LocaleTable.js.map +1 -0
  40. package/dist/admin/components/LocaleTable.mjs +122 -0
  41. package/dist/admin/components/LocaleTable.mjs.map +1 -0
  42. package/dist/admin/constants.js +37 -0
  43. package/dist/admin/constants.js.map +1 -0
  44. package/dist/admin/constants.mjs +35 -0
  45. package/dist/admin/constants.mjs.map +1 -0
  46. package/dist/admin/contentManagerHooks/editView.js +106 -0
  47. package/dist/admin/contentManagerHooks/editView.js.map +1 -0
  48. package/dist/admin/contentManagerHooks/editView.mjs +85 -0
  49. package/dist/admin/contentManagerHooks/editView.mjs.map +1 -0
  50. package/dist/admin/contentManagerHooks/listView.js +43 -0
  51. package/dist/admin/contentManagerHooks/listView.js.map +1 -0
  52. package/dist/admin/contentManagerHooks/listView.mjs +41 -0
  53. package/dist/admin/contentManagerHooks/listView.mjs.map +1 -0
  54. package/dist/admin/contentReleasesHooks/releaseDetailsView.js +20 -0
  55. package/dist/admin/contentReleasesHooks/releaseDetailsView.js.map +1 -0
  56. package/dist/admin/contentReleasesHooks/releaseDetailsView.mjs +18 -0
  57. package/dist/admin/contentReleasesHooks/releaseDetailsView.mjs.map +1 -0
  58. package/dist/admin/hooks/useI18n.js +78 -0
  59. package/dist/admin/hooks/useI18n.js.map +1 -0
  60. package/dist/admin/hooks/useI18n.mjs +57 -0
  61. package/dist/admin/hooks/useI18n.mjs.map +1 -0
  62. package/dist/admin/index.js +226 -5
  63. package/dist/admin/index.js.map +1 -1
  64. package/dist/admin/index.mjs +202 -5
  65. package/dist/admin/index.mjs.map +1 -1
  66. package/dist/admin/middlewares/extendCTBAttributeInitialData.js +61 -0
  67. package/dist/admin/middlewares/extendCTBAttributeInitialData.js.map +1 -0
  68. package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs +59 -0
  69. package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs.map +1 -0
  70. package/dist/admin/middlewares/extendCTBInitialData.js +40 -0
  71. package/dist/admin/middlewares/extendCTBInitialData.js.map +1 -0
  72. package/dist/admin/middlewares/extendCTBInitialData.mjs +38 -0
  73. package/dist/admin/middlewares/extendCTBInitialData.mjs.map +1 -0
  74. package/dist/admin/middlewares/rbac-middleware.js +49 -0
  75. package/dist/admin/middlewares/rbac-middleware.js.map +1 -0
  76. package/dist/admin/middlewares/rbac-middleware.mjs +28 -0
  77. package/dist/admin/middlewares/rbac-middleware.mjs.map +1 -0
  78. package/dist/admin/pages/SettingsPage.js +107 -0
  79. package/dist/admin/pages/SettingsPage.js.map +1 -0
  80. package/dist/admin/pages/SettingsPage.mjs +85 -0
  81. package/dist/admin/pages/SettingsPage.mjs.map +1 -0
  82. package/dist/admin/pluginId.js +6 -0
  83. package/dist/admin/pluginId.js.map +1 -0
  84. package/dist/admin/pluginId.mjs +4 -0
  85. package/dist/admin/pluginId.mjs.map +1 -0
  86. package/dist/admin/services/api.js +12 -0
  87. package/dist/admin/services/api.js.map +1 -0
  88. package/dist/admin/services/api.mjs +10 -0
  89. package/dist/admin/services/api.mjs.map +1 -0
  90. package/dist/admin/services/locales.js +70 -0
  91. package/dist/admin/services/locales.js.map +1 -0
  92. package/dist/admin/services/locales.mjs +64 -0
  93. package/dist/admin/services/locales.mjs.map +1 -0
  94. package/dist/admin/services/relations.js +23 -0
  95. package/dist/admin/services/relations.js.map +1 -0
  96. package/dist/admin/services/relations.mjs +21 -0
  97. package/dist/admin/services/relations.mjs.map +1 -0
  98. package/dist/admin/src/components/BulkLocaleActionModal.d.ts +2 -1
  99. package/dist/admin/src/components/CMHeaderActions.d.ts +30 -4
  100. package/dist/admin/src/components/CreateLocale.d.ts +6 -6
  101. package/dist/admin/src/components/EditLocale.d.ts +5 -4
  102. package/dist/admin/src/components/LocaleListCell.d.ts +4 -4
  103. package/dist/admin/src/components/tests/CreateLocale.test.d.ts +1 -0
  104. package/dist/admin/src/components/tests/DeleteLocale.test.d.ts +1 -0
  105. package/dist/admin/src/components/tests/EditLocale.test.d.ts +1 -0
  106. package/dist/admin/src/components/tests/LocaleListCell.test.d.ts +1 -0
  107. package/dist/admin/src/contentReleasesHooks/releaseDetailsView.d.ts +10 -6
  108. package/dist/admin/src/pages/tests/SettingsPage.test.d.ts +1 -0
  109. package/dist/admin/src/utils/clean.d.ts +4 -0
  110. package/dist/admin/src/utils/schemas.d.ts +1 -0
  111. package/dist/admin/tests/server.d.ts +1 -0
  112. package/dist/admin/tests/utils.d.ts +6 -0
  113. package/dist/admin/translations/de.json.js +66 -0
  114. package/dist/admin/translations/de.json.js.map +1 -0
  115. package/dist/admin/translations/de.json.mjs +64 -0
  116. package/dist/admin/translations/de.json.mjs.map +1 -0
  117. package/dist/admin/translations/dk.json.js +66 -0
  118. package/dist/admin/translations/dk.json.js.map +1 -0
  119. package/dist/admin/translations/dk.json.mjs +64 -0
  120. package/dist/admin/translations/dk.json.mjs.map +1 -0
  121. package/dist/admin/translations/en.json.js +81 -0
  122. package/dist/admin/translations/en.json.js.map +1 -0
  123. package/dist/admin/translations/en.json.mjs +79 -0
  124. package/dist/admin/translations/en.json.mjs.map +1 -0
  125. package/dist/admin/translations/es.json.js +66 -0
  126. package/dist/admin/translations/es.json.js.map +1 -0
  127. package/dist/admin/translations/es.json.mjs +64 -0
  128. package/dist/admin/translations/es.json.mjs.map +1 -0
  129. package/dist/admin/translations/fr.json.js +66 -0
  130. package/dist/admin/translations/fr.json.js.map +1 -0
  131. package/dist/admin/translations/fr.json.mjs +64 -0
  132. package/dist/admin/translations/fr.json.mjs.map +1 -0
  133. package/dist/admin/translations/ko.json.js +65 -0
  134. package/dist/admin/translations/ko.json.js.map +1 -0
  135. package/dist/admin/translations/ko.json.mjs +63 -0
  136. package/dist/admin/translations/ko.json.mjs.map +1 -0
  137. package/dist/admin/translations/pl.json.js +66 -0
  138. package/dist/admin/translations/pl.json.js.map +1 -0
  139. package/dist/admin/translations/pl.json.mjs +64 -0
  140. package/dist/admin/translations/pl.json.mjs.map +1 -0
  141. package/dist/admin/translations/ru.json.js +68 -0
  142. package/dist/admin/translations/ru.json.js.map +1 -0
  143. package/dist/admin/translations/ru.json.mjs +66 -0
  144. package/dist/admin/translations/ru.json.mjs.map +1 -0
  145. package/dist/admin/translations/tr.json.js +66 -0
  146. package/dist/admin/translations/tr.json.js.map +1 -0
  147. package/dist/admin/translations/tr.json.mjs +64 -0
  148. package/dist/admin/translations/tr.json.mjs.map +1 -0
  149. package/dist/admin/translations/uk.json.js +82 -0
  150. package/dist/admin/translations/uk.json.js.map +1 -0
  151. package/dist/admin/translations/uk.json.mjs +80 -0
  152. package/dist/admin/translations/uk.json.mjs.map +1 -0
  153. package/dist/admin/translations/zh-Hans.json.js +57 -0
  154. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  155. package/dist/admin/translations/zh-Hans.json.mjs +55 -0
  156. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  157. package/dist/admin/translations/zh.json.js +66 -0
  158. package/dist/admin/translations/zh.json.js.map +1 -0
  159. package/dist/admin/translations/zh.json.mjs +64 -0
  160. package/dist/admin/translations/zh.json.mjs.map +1 -0
  161. package/dist/admin/utils/baseQuery.js +8 -0
  162. package/dist/admin/utils/baseQuery.js.map +1 -0
  163. package/dist/admin/utils/baseQuery.mjs +6 -0
  164. package/dist/admin/utils/baseQuery.mjs.map +1 -0
  165. package/dist/admin/utils/clean.js +70 -0
  166. package/dist/admin/utils/clean.js.map +1 -0
  167. package/dist/admin/utils/clean.mjs +68 -0
  168. package/dist/admin/utils/clean.mjs.map +1 -0
  169. package/dist/admin/utils/fields.js +29 -0
  170. package/dist/admin/utils/fields.js.map +1 -0
  171. package/dist/admin/utils/fields.mjs +26 -0
  172. package/dist/admin/utils/fields.mjs.map +1 -0
  173. package/dist/admin/utils/getTranslation.js +8 -0
  174. package/dist/admin/utils/getTranslation.js.map +1 -0
  175. package/dist/admin/utils/getTranslation.mjs +6 -0
  176. package/dist/admin/utils/getTranslation.mjs.map +1 -0
  177. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  178. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  179. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  180. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  181. package/dist/admin/utils/schemas.js +68 -0
  182. package/dist/admin/utils/schemas.js.map +1 -0
  183. package/dist/admin/utils/schemas.mjs +66 -0
  184. package/dist/admin/utils/schemas.mjs.map +1 -0
  185. package/dist/admin/utils/strings.js +6 -0
  186. package/dist/admin/utils/strings.js.map +1 -0
  187. package/dist/admin/utils/strings.mjs +4 -0
  188. package/dist/admin/utils/strings.mjs.map +1 -0
  189. package/dist/server/bootstrap.js +79 -0
  190. package/dist/server/bootstrap.js.map +1 -0
  191. package/dist/server/bootstrap.mjs +77 -0
  192. package/dist/server/bootstrap.mjs.map +1 -0
  193. package/dist/server/constants/index.js +29 -0
  194. package/dist/server/constants/index.js.map +1 -0
  195. package/dist/server/constants/index.mjs +25 -0
  196. package/dist/server/constants/index.mjs.map +1 -0
  197. package/dist/server/constants/iso-locales.json.js +2423 -0
  198. package/dist/server/constants/iso-locales.json.js.map +1 -0
  199. package/dist/server/constants/iso-locales.json.mjs +2421 -0
  200. package/dist/server/constants/iso-locales.json.mjs.map +1 -0
  201. package/dist/server/content-types/index.js +10 -0
  202. package/dist/server/content-types/index.js.map +1 -0
  203. package/dist/server/content-types/index.mjs +8 -0
  204. package/dist/server/content-types/index.mjs.map +1 -0
  205. package/dist/server/content-types/locale/index.js +10 -0
  206. package/dist/server/content-types/locale/index.js.map +1 -0
  207. package/dist/server/content-types/locale/index.mjs +8 -0
  208. package/dist/server/content-types/locale/index.mjs.map +1 -0
  209. package/dist/server/content-types/locale/schema.json.js +46 -0
  210. package/dist/server/content-types/locale/schema.json.js.map +1 -0
  211. package/dist/server/content-types/locale/schema.json.mjs +38 -0
  212. package/dist/server/content-types/locale/schema.json.mjs.map +1 -0
  213. package/dist/server/controllers/content-types.js +76 -0
  214. package/dist/server/controllers/content-types.js.map +1 -0
  215. package/dist/server/controllers/content-types.mjs +74 -0
  216. package/dist/server/controllers/content-types.mjs.map +1 -0
  217. package/dist/server/controllers/index.js +14 -0
  218. package/dist/server/controllers/index.js.map +1 -0
  219. package/dist/server/controllers/index.mjs +12 -0
  220. package/dist/server/controllers/index.mjs.map +1 -0
  221. package/dist/server/controllers/iso-locales.js +13 -0
  222. package/dist/server/controllers/iso-locales.js.map +1 -0
  223. package/dist/server/controllers/iso-locales.mjs +11 -0
  224. package/dist/server/controllers/iso-locales.mjs.map +1 -0
  225. package/dist/server/controllers/locales.js +108 -0
  226. package/dist/server/controllers/locales.js.map +1 -0
  227. package/dist/server/controllers/locales.mjs +87 -0
  228. package/dist/server/controllers/locales.mjs.map +1 -0
  229. package/dist/server/controllers/validate-locale-creation.js +47 -0
  230. package/dist/server/controllers/validate-locale-creation.js.map +1 -0
  231. package/dist/server/controllers/validate-locale-creation.mjs +45 -0
  232. package/dist/server/controllers/validate-locale-creation.mjs.map +1 -0
  233. package/dist/server/domain/locale.js +11 -0
  234. package/dist/server/domain/locale.js.map +1 -0
  235. package/dist/server/domain/locale.mjs +9 -0
  236. package/dist/server/domain/locale.mjs.map +1 -0
  237. package/dist/server/graphql.js +115 -0
  238. package/dist/server/graphql.js.map +1 -0
  239. package/dist/server/graphql.mjs +113 -0
  240. package/dist/server/graphql.mjs.map +1 -0
  241. package/dist/server/index.js +18 -3520
  242. package/dist/server/index.js.map +1 -1
  243. package/dist/server/index.mjs +17 -3502
  244. package/dist/server/index.mjs.map +1 -1
  245. package/dist/server/register.js +79 -0
  246. package/dist/server/register.js.map +1 -0
  247. package/dist/server/register.mjs +77 -0
  248. package/dist/server/register.mjs.map +1 -0
  249. package/dist/server/routes/admin.js +102 -0
  250. package/dist/server/routes/admin.js.map +1 -0
  251. package/dist/server/routes/admin.mjs +100 -0
  252. package/dist/server/routes/admin.mjs.map +1 -0
  253. package/dist/server/routes/content-api.js +15 -0
  254. package/dist/server/routes/content-api.js.map +1 -0
  255. package/dist/server/routes/content-api.mjs +13 -0
  256. package/dist/server/routes/content-api.mjs.map +1 -0
  257. package/dist/server/routes/index.js +12 -0
  258. package/dist/server/routes/index.js.map +1 -0
  259. package/dist/server/routes/index.mjs +10 -0
  260. package/dist/server/routes/index.mjs.map +1 -0
  261. package/dist/server/services/content-types.js +157 -0
  262. package/dist/server/services/content-types.js.map +1 -0
  263. package/dist/server/services/content-types.mjs +155 -0
  264. package/dist/server/services/content-types.mjs.map +1 -0
  265. package/dist/server/services/index.js +22 -0
  266. package/dist/server/services/index.js.map +1 -0
  267. package/dist/server/services/index.mjs +20 -0
  268. package/dist/server/services/index.mjs.map +1 -0
  269. package/dist/server/services/iso-locales.js +12 -0
  270. package/dist/server/services/iso-locales.js.map +1 -0
  271. package/dist/server/services/iso-locales.mjs +10 -0
  272. package/dist/server/services/iso-locales.mjs.map +1 -0
  273. package/dist/server/services/locales.js +114 -0
  274. package/dist/server/services/locales.js.map +1 -0
  275. package/dist/server/services/locales.mjs +112 -0
  276. package/dist/server/services/locales.mjs.map +1 -0
  277. package/dist/server/services/localizations.js +68 -0
  278. package/dist/server/services/localizations.js.map +1 -0
  279. package/dist/server/services/localizations.mjs +66 -0
  280. package/dist/server/services/localizations.mjs.map +1 -0
  281. package/dist/server/services/metrics.js +30 -0
  282. package/dist/server/services/metrics.js.map +1 -0
  283. package/dist/server/services/metrics.mjs +28 -0
  284. package/dist/server/services/metrics.mjs.map +1 -0
  285. package/dist/server/services/permissions/actions.js +136 -0
  286. package/dist/server/services/permissions/actions.js.map +1 -0
  287. package/dist/server/services/permissions/actions.mjs +134 -0
  288. package/dist/server/services/permissions/actions.mjs.map +1 -0
  289. package/dist/server/services/permissions/engine.js +52 -0
  290. package/dist/server/services/permissions/engine.js.map +1 -0
  291. package/dist/server/services/permissions/engine.mjs +50 -0
  292. package/dist/server/services/permissions/engine.mjs.map +1 -0
  293. package/dist/server/services/permissions/sections-builder.js +45 -0
  294. package/dist/server/services/permissions/sections-builder.js.map +1 -0
  295. package/dist/server/services/permissions/sections-builder.mjs +43 -0
  296. package/dist/server/services/permissions/sections-builder.mjs.map +1 -0
  297. package/dist/server/services/permissions.js +14 -0
  298. package/dist/server/services/permissions.js.map +1 -0
  299. package/dist/server/services/permissions.mjs +12 -0
  300. package/dist/server/services/permissions.mjs.map +1 -0
  301. package/dist/server/services/sanitize/index.js +34 -0
  302. package/dist/server/services/sanitize/index.js.map +1 -0
  303. package/dist/server/services/sanitize/index.mjs +32 -0
  304. package/dist/server/services/sanitize/index.mjs.map +1 -0
  305. package/dist/server/src/bootstrap.d.ts +1 -4
  306. package/dist/server/src/bootstrap.d.ts.map +1 -1
  307. package/dist/server/src/index.d.ts +21 -13
  308. package/dist/server/src/index.d.ts.map +1 -1
  309. package/dist/server/src/register.d.ts.map +1 -1
  310. package/dist/server/src/services/index.d.ts +20 -10
  311. package/dist/server/src/services/index.d.ts.map +1 -1
  312. package/dist/server/src/services/localizations.d.ts +1 -1
  313. package/dist/server/src/services/localizations.d.ts.map +1 -1
  314. package/dist/server/src/services/permissions/actions.d.ts +14 -2
  315. package/dist/server/src/services/permissions/actions.d.ts.map +1 -1
  316. package/dist/server/src/services/permissions.d.ts +14 -2
  317. package/dist/server/src/services/permissions.d.ts.map +1 -1
  318. package/dist/server/src/services/sanitize/index.d.ts +11 -0
  319. package/dist/server/src/services/sanitize/index.d.ts.map +1 -0
  320. package/dist/server/src/utils/index.d.ts +2 -2
  321. package/dist/server/src/utils/index.d.ts.map +1 -1
  322. package/dist/server/utils/index.js +16 -0
  323. package/dist/server/utils/index.js.map +1 -0
  324. package/dist/server/utils/index.mjs +13 -0
  325. package/dist/server/utils/index.mjs.map +1 -0
  326. package/dist/server/validation/content-types.js +18 -0
  327. package/dist/server/validation/content-types.js.map +1 -0
  328. package/dist/server/validation/content-types.mjs +16 -0
  329. package/dist/server/validation/content-types.mjs.map +1 -0
  330. package/dist/server/validation/locales.js +23 -0
  331. package/dist/server/validation/locales.js.map +1 -0
  332. package/dist/server/validation/locales.mjs +20 -0
  333. package/dist/server/validation/locales.mjs.map +1 -0
  334. package/dist/shared/contracts/content-manager.d.ts +1 -1
  335. package/dist/shared/contracts/shared.d.ts +1 -1
  336. package/package.json +18 -16
  337. package/dist/_chunks/SettingsPage-0FFSTUW2.mjs +0 -567
  338. package/dist/_chunks/SettingsPage-0FFSTUW2.mjs.map +0 -1
  339. package/dist/_chunks/SettingsPage-DnLLGeBa.js +0 -587
  340. package/dist/_chunks/SettingsPage-DnLLGeBa.js.map +0 -1
  341. package/dist/_chunks/de-9eCAqqrB.mjs +0 -66
  342. package/dist/_chunks/de-9eCAqqrB.mjs.map +0 -1
  343. package/dist/_chunks/de-DtWiGdHl.js +0 -66
  344. package/dist/_chunks/de-DtWiGdHl.js.map +0 -1
  345. package/dist/_chunks/dk-2qBjxt-P.mjs +0 -66
  346. package/dist/_chunks/dk-2qBjxt-P.mjs.map +0 -1
  347. package/dist/_chunks/dk-D8C-casx.js +0 -66
  348. package/dist/_chunks/dk-D8C-casx.js.map +0 -1
  349. package/dist/_chunks/en-18tWw4P6.mjs +0 -72
  350. package/dist/_chunks/en-18tWw4P6.mjs.map +0 -1
  351. package/dist/_chunks/en-Kv6y9zPQ.js +0 -72
  352. package/dist/_chunks/en-Kv6y9zPQ.js.map +0 -1
  353. package/dist/_chunks/es-DS-XFGSw.js +0 -66
  354. package/dist/_chunks/es-DS-XFGSw.js.map +0 -1
  355. package/dist/_chunks/es-DlmMVaBG.mjs +0 -66
  356. package/dist/_chunks/es-DlmMVaBG.mjs.map +0 -1
  357. package/dist/_chunks/fr-3S6ke71d.mjs +0 -66
  358. package/dist/_chunks/fr-3S6ke71d.mjs.map +0 -1
  359. package/dist/_chunks/fr-BTjekDpq.js +0 -66
  360. package/dist/_chunks/fr-BTjekDpq.js.map +0 -1
  361. package/dist/_chunks/index-BddUXwss.mjs +0 -1388
  362. package/dist/_chunks/index-BddUXwss.mjs.map +0 -1
  363. package/dist/_chunks/index-DtEKsPcR.js +0 -1410
  364. package/dist/_chunks/index-DtEKsPcR.js.map +0 -1
  365. package/dist/_chunks/ko-DmcGUBQ3.js +0 -65
  366. package/dist/_chunks/ko-DmcGUBQ3.js.map +0 -1
  367. package/dist/_chunks/ko-qTjQ8IMw.mjs +0 -65
  368. package/dist/_chunks/ko-qTjQ8IMw.mjs.map +0 -1
  369. package/dist/_chunks/pl-B67TSHqT.mjs +0 -66
  370. package/dist/_chunks/pl-B67TSHqT.mjs.map +0 -1
  371. package/dist/_chunks/pl-Cn5RYonZ.js +0 -66
  372. package/dist/_chunks/pl-Cn5RYonZ.js.map +0 -1
  373. package/dist/_chunks/ru-BMBgVL3s.js +0 -68
  374. package/dist/_chunks/ru-BMBgVL3s.js.map +0 -1
  375. package/dist/_chunks/ru-hagMa57T.mjs +0 -68
  376. package/dist/_chunks/ru-hagMa57T.mjs.map +0 -1
  377. package/dist/_chunks/tr-CarUU76c.js +0 -66
  378. package/dist/_chunks/tr-CarUU76c.js.map +0 -1
  379. package/dist/_chunks/tr-Dw_jmkG-.mjs +0 -66
  380. package/dist/_chunks/tr-Dw_jmkG-.mjs.map +0 -1
  381. package/dist/_chunks/zh-57YM4amO.mjs +0 -66
  382. package/dist/_chunks/zh-57YM4amO.mjs.map +0 -1
  383. package/dist/_chunks/zh-CukOviB0.js +0 -66
  384. package/dist/_chunks/zh-CukOviB0.js.map +0 -1
  385. package/dist/_chunks/zh-Hans-DSHIXAa3.js +0 -57
  386. package/dist/_chunks/zh-Hans-DSHIXAa3.js.map +0 -1
  387. package/dist/_chunks/zh-Hans-Dyc-aR-h.mjs +0 -57
  388. package/dist/_chunks/zh-Hans-Dyc-aR-h.mjs.map +0 -1
  389. package/dist/admin/src/components/Initializer.d.ts +0 -5
  390. package/dist/server/src/migrations/content-type/disable/index.d.ts +0 -3
  391. package/dist/server/src/migrations/content-type/disable/index.d.ts.map +0 -1
  392. package/dist/server/src/migrations/content-type/enable/index.d.ts +0 -3
  393. package/dist/server/src/migrations/content-type/enable/index.d.ts.map +0 -1
  394. package/dist/server/src/services/entity-service-decorator.d.ts +0 -29
  395. package/dist/server/src/services/entity-service-decorator.d.ts.map +0 -1
  396. package/strapi-server.js +0 -3
@@ -0,0 +1,721 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var query = require('@reduxjs/toolkit/query');
6
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
7
+ var strapiAdmin$1 = require('@strapi/content-manager/strapi-admin');
8
+ var designSystem = require('@strapi/design-system');
9
+ var icons = require('@strapi/icons');
10
+ var reactIntl = require('react-intl');
11
+ var reactRouterDom = require('react-router-dom');
12
+ var styledComponents = require('styled-components');
13
+ var useI18n = require('../hooks/useI18n.js');
14
+ var locales = require('../services/locales.js');
15
+ var relations = require('../services/relations.js');
16
+ var clean = require('../utils/clean.js');
17
+ var getTranslation = require('../utils/getTranslation.js');
18
+ var strings = require('../utils/strings.js');
19
+ var BulkLocaleActionModal = require('./BulkLocaleActionModal.js');
20
+
21
+ function _interopNamespaceDefault(e) {
22
+ var n = Object.create(null);
23
+ if (e) {
24
+ Object.keys(e).forEach(function (k) {
25
+ if (k !== 'default') {
26
+ var d = Object.getOwnPropertyDescriptor(e, k);
27
+ Object.defineProperty(n, k, d.get ? d : {
28
+ enumerable: true,
29
+ get: function () { return e[k]; }
30
+ });
31
+ }
32
+ });
33
+ }
34
+ n.default = e;
35
+ return Object.freeze(n);
36
+ }
37
+
38
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
39
+
40
+ const statusVariants = {
41
+ draft: 'secondary',
42
+ published: 'success',
43
+ modified: 'alternative'
44
+ };
45
+ const LocaleOption = ({ isDraftAndPublishEnabled, locale, status, entryExists })=>{
46
+ const { formatMessage } = reactIntl.useIntl();
47
+ if (!entryExists) {
48
+ return formatMessage({
49
+ id: getTranslation.getTranslation('CMEditViewLocalePicker.locale.create'),
50
+ defaultMessage: 'Create <bold>{locale}</bold> locale'
51
+ }, {
52
+ bold: (locale)=>/*#__PURE__*/ jsxRuntime.jsx("b", {
53
+ children: locale
54
+ }),
55
+ locale: locale.name
56
+ });
57
+ }
58
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
59
+ width: "100%",
60
+ gap: 1,
61
+ justifyContent: "space-between",
62
+ children: [
63
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
64
+ children: locale.name
65
+ }),
66
+ isDraftAndPublishEnabled ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Status, {
67
+ display: "flex",
68
+ paddingLeft: "6px",
69
+ paddingRight: "6px",
70
+ paddingTop: "2px",
71
+ paddingBottom: "2px",
72
+ size: "S",
73
+ variant: statusVariants[status],
74
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
75
+ tag: "span",
76
+ variant: "pi",
77
+ fontWeight: "bold",
78
+ children: strings.capitalize(status)
79
+ })
80
+ }) : null
81
+ ]
82
+ });
83
+ };
84
+ const LocalePickerAction = ({ document, meta, model, collectionType, documentId })=>{
85
+ const { formatMessage } = reactIntl.useIntl();
86
+ const [{ query }, setQuery] = strapiAdmin.useQueryParams();
87
+ const { hasI18n, canCreate, canRead } = useI18n.useI18n();
88
+ const { data: locales$1 = [] } = locales.useGetLocalesQuery();
89
+ const currentDesiredLocale = query.plugins?.i18n?.locale;
90
+ const { schema } = strapiAdmin$1.unstable_useDocument({
91
+ model,
92
+ collectionType,
93
+ documentId,
94
+ params: {
95
+ locale: currentDesiredLocale
96
+ }
97
+ });
98
+ const handleSelect = React__namespace.useCallback((value)=>{
99
+ setQuery({
100
+ plugins: {
101
+ ...query.plugins,
102
+ i18n: {
103
+ locale: value
104
+ }
105
+ }
106
+ });
107
+ }, [
108
+ query.plugins,
109
+ setQuery
110
+ ]);
111
+ React__namespace.useEffect(()=>{
112
+ if (!Array.isArray(locales$1) || !hasI18n) {
113
+ return;
114
+ }
115
+ /**
116
+ * Handle the case where the current locale query param doesn't exist
117
+ * in the list of available locales, so we redirect to the default locale.
118
+ */ const doesLocaleExist = locales$1.find((loc)=>loc.code === currentDesiredLocale);
119
+ const defaultLocale = locales$1.find((locale)=>locale.isDefault);
120
+ if (!doesLocaleExist && defaultLocale?.code) {
121
+ handleSelect(defaultLocale.code);
122
+ }
123
+ }, [
124
+ handleSelect,
125
+ hasI18n,
126
+ locales$1,
127
+ currentDesiredLocale
128
+ ]);
129
+ const currentLocale = Array.isArray(locales$1) ? locales$1.find((locale)=>locale.code === currentDesiredLocale) : undefined;
130
+ const allCurrentLocales = [
131
+ {
132
+ status: getDocumentStatus(document, meta),
133
+ locale: currentLocale?.code
134
+ },
135
+ ...document?.localizations ?? []
136
+ ];
137
+ if (!hasI18n || !Array.isArray(locales$1) || locales$1.length === 0) {
138
+ return null;
139
+ }
140
+ const displayedLocales = locales$1.filter((locale)=>{
141
+ /**
142
+ * If you can read we allow you to see the locale exists
143
+ * otherwise the locale is hidden.
144
+ */ return canRead.includes(locale.code);
145
+ });
146
+ return {
147
+ label: formatMessage({
148
+ id: getTranslation.getTranslation('Settings.locales.modal.locales.label'),
149
+ defaultMessage: 'Locales'
150
+ }),
151
+ options: displayedLocales.map((locale)=>{
152
+ const entryWithLocaleExists = allCurrentLocales.some((doc)=>doc.locale === locale.code);
153
+ const currentLocaleDoc = allCurrentLocales.find((doc)=>'locale' in doc ? doc.locale === locale.code : false);
154
+ const permissionsToCheck = currentLocaleDoc ? canRead : canCreate;
155
+ return {
156
+ disabled: !permissionsToCheck.includes(locale.code),
157
+ value: locale.code,
158
+ label: /*#__PURE__*/ jsxRuntime.jsx(LocaleOption, {
159
+ isDraftAndPublishEnabled: !!schema?.options?.draftAndPublish,
160
+ locale: locale,
161
+ status: currentLocaleDoc?.status,
162
+ entryExists: entryWithLocaleExists
163
+ }),
164
+ startIcon: !entryWithLocaleExists ? /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}) : null
165
+ };
166
+ }),
167
+ customizeContent: ()=>currentLocale?.name,
168
+ onSelect: handleSelect,
169
+ value: currentLocale
170
+ };
171
+ };
172
+ const getDocumentStatus = (document, meta)=>{
173
+ const docStatus = document?.status;
174
+ const statuses = meta?.availableStatus ?? [];
175
+ /**
176
+ * Creating an entry
177
+ */ if (!docStatus) {
178
+ return 'draft';
179
+ }
180
+ /**
181
+ * We're viewing a draft, but the document could have a published version
182
+ */ if (docStatus === 'draft' && statuses.find((doc)=>doc.publishedAt !== null)) {
183
+ return 'published';
184
+ }
185
+ return docStatus;
186
+ };
187
+ /* -------------------------------------------------------------------------------------------------
188
+ * FillFromAnotherLocaleAction
189
+ * -----------------------------------------------------------------------------------------------*/ const FillFromAnotherLocaleAction = ({ documentId, meta, model, collectionType })=>{
190
+ const { formatMessage } = reactIntl.useIntl();
191
+ const [{ query }] = strapiAdmin.useQueryParams();
192
+ const { hasI18n } = useI18n.useI18n();
193
+ const currentDesiredLocale = query.plugins?.i18n?.locale;
194
+ const [localeSelected, setLocaleSelected] = React__namespace.useState(null);
195
+ const setValues = strapiAdmin.useForm('FillFromAnotherLocale', (state)=>state.setValues);
196
+ const { getDocument } = strapiAdmin$1.unstable_useDocumentActions();
197
+ const { schema, components } = strapiAdmin$1.unstable_useDocument({
198
+ model,
199
+ documentId,
200
+ collectionType,
201
+ params: {
202
+ locale: currentDesiredLocale
203
+ }
204
+ });
205
+ const { data: locales$1 = [] } = locales.useGetLocalesQuery();
206
+ const availableLocales = Array.isArray(locales$1) ? locales$1.filter((locale)=>meta?.availableLocales.some((l)=>l.locale === locale.code)) : [];
207
+ const fillFromLocale = (onClose)=>async ()=>{
208
+ const response = await getDocument({
209
+ collectionType,
210
+ model,
211
+ documentId,
212
+ params: {
213
+ locale: localeSelected
214
+ }
215
+ });
216
+ if (!response || !schema) {
217
+ return;
218
+ }
219
+ const { data } = response;
220
+ const cleanedData = clean.cleanData(data, schema, components);
221
+ setValues(cleanedData);
222
+ onClose();
223
+ };
224
+ if (!hasI18n) {
225
+ return null;
226
+ }
227
+ return {
228
+ type: 'icon',
229
+ icon: /*#__PURE__*/ jsxRuntime.jsx(icons.Earth, {}),
230
+ disabled: availableLocales.length === 0,
231
+ label: formatMessage({
232
+ id: getTranslation.getTranslation('CMEditViewCopyLocale.copy-text'),
233
+ defaultMessage: 'Fill in from another locale'
234
+ }),
235
+ dialog: {
236
+ type: 'dialog',
237
+ title: formatMessage({
238
+ id: getTranslation.getTranslation('CMEditViewCopyLocale.dialog.title'),
239
+ defaultMessage: 'Confirmation'
240
+ }),
241
+ content: ({ onClose })=>/*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
242
+ children: [
243
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Body, {
244
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
245
+ direction: "column",
246
+ gap: 3,
247
+ children: [
248
+ /*#__PURE__*/ jsxRuntime.jsx(icons.WarningCircle, {
249
+ width: "24px",
250
+ height: "24px",
251
+ fill: "danger600"
252
+ }),
253
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
254
+ textAlign: "center",
255
+ children: formatMessage({
256
+ id: getTranslation.getTranslation('CMEditViewCopyLocale.dialog.body'),
257
+ defaultMessage: 'Your current content will be erased and filled by the content of the selected locale:'
258
+ })
259
+ }),
260
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
261
+ width: "100%",
262
+ children: [
263
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
264
+ children: formatMessage({
265
+ id: getTranslation.getTranslation('CMEditViewCopyLocale.dialog.field.label'),
266
+ defaultMessage: 'Locale'
267
+ })
268
+ }),
269
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelect, {
270
+ value: localeSelected,
271
+ placeholder: formatMessage({
272
+ id: getTranslation.getTranslation('CMEditViewCopyLocale.dialog.field.placeholder'),
273
+ defaultMessage: 'Select one locale...'
274
+ }),
275
+ // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.
276
+ onChange: (value)=>setLocaleSelected(value),
277
+ children: availableLocales.map((locale)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
278
+ value: locale.code,
279
+ children: locale.name
280
+ }, locale.code))
281
+ })
282
+ ]
283
+ })
284
+ ]
285
+ })
286
+ }),
287
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Footer, {
288
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
289
+ gap: 2,
290
+ width: "100%",
291
+ children: [
292
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
293
+ flex: "auto",
294
+ variant: "tertiary",
295
+ onClick: onClose,
296
+ children: formatMessage({
297
+ id: getTranslation.getTranslation('CMEditViewCopyLocale.cancel-text'),
298
+ defaultMessage: 'No, cancel'
299
+ })
300
+ }),
301
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
302
+ flex: "auto",
303
+ variant: "success",
304
+ onClick: fillFromLocale(onClose),
305
+ children: formatMessage({
306
+ id: getTranslation.getTranslation('CMEditViewCopyLocale.submit-text'),
307
+ defaultMessage: 'Yes, fill in'
308
+ })
309
+ })
310
+ ]
311
+ })
312
+ })
313
+ ]
314
+ })
315
+ }
316
+ };
317
+ };
318
+ /* -------------------------------------------------------------------------------------------------
319
+ * DeleteLocaleAction
320
+ * -----------------------------------------------------------------------------------------------*/ const DeleteLocaleAction = ({ document, documentId, model, collectionType })=>{
321
+ const { formatMessage } = reactIntl.useIntl();
322
+ const navigate = reactRouterDom.useNavigate();
323
+ const { toggleNotification } = strapiAdmin.useNotification();
324
+ const { delete: deleteAction, isLoading } = strapiAdmin$1.unstable_useDocumentActions();
325
+ const { hasI18n, canDelete } = useI18n.useI18n();
326
+ // Get the current locale object, using the URL instead of document so it works while creating
327
+ const [{ query }] = strapiAdmin.useQueryParams();
328
+ const { data: locales$1 = [] } = locales.useGetLocalesQuery();
329
+ const currentDesiredLocale = query.plugins?.i18n?.locale;
330
+ const locale = !('error' in locales$1) && locales$1.find((loc)=>loc.code === currentDesiredLocale);
331
+ if (!hasI18n) {
332
+ return null;
333
+ }
334
+ return {
335
+ disabled: document?.locale && !canDelete.includes(document.locale) || !document || !document.id,
336
+ position: [
337
+ 'header',
338
+ 'table-row'
339
+ ],
340
+ label: formatMessage({
341
+ id: getTranslation.getTranslation('actions.delete.label'),
342
+ defaultMessage: 'Delete entry ({locale})'
343
+ }, {
344
+ locale: locale && locale.name
345
+ }),
346
+ icon: /*#__PURE__*/ jsxRuntime.jsx(StyledTrash, {}),
347
+ variant: 'danger',
348
+ dialog: {
349
+ type: 'dialog',
350
+ title: formatMessage({
351
+ id: getTranslation.getTranslation('actions.delete.dialog.title'),
352
+ defaultMessage: 'Confirmation'
353
+ }),
354
+ content: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
355
+ direction: "column",
356
+ gap: 2,
357
+ children: [
358
+ /*#__PURE__*/ jsxRuntime.jsx(icons.WarningCircle, {
359
+ width: "24px",
360
+ height: "24px",
361
+ fill: "danger600"
362
+ }),
363
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
364
+ tag: "p",
365
+ variant: "omega",
366
+ textAlign: "center",
367
+ children: formatMessage({
368
+ id: getTranslation.getTranslation('actions.delete.dialog.body'),
369
+ defaultMessage: 'Are you sure?'
370
+ })
371
+ })
372
+ ]
373
+ }),
374
+ loading: isLoading,
375
+ onConfirm: async ()=>{
376
+ const unableToDelete = // We are unable to delete a collection type without a document ID
377
+ // & unable to delete generally if there is no document locale
378
+ collectionType !== 'single-types' && !documentId || !document?.locale;
379
+ if (unableToDelete) {
380
+ console.error("You're trying to delete a document without an id or locale, this is likely a bug with Strapi. Please open an issue.");
381
+ toggleNotification({
382
+ message: formatMessage({
383
+ id: getTranslation.getTranslation('actions.delete.error'),
384
+ defaultMessage: 'An error occurred while trying to delete the document locale.'
385
+ }),
386
+ type: 'danger'
387
+ });
388
+ return;
389
+ }
390
+ const res = await deleteAction({
391
+ documentId,
392
+ model,
393
+ collectionType,
394
+ params: {
395
+ locale: document.locale
396
+ }
397
+ });
398
+ if (!('error' in res)) {
399
+ navigate({
400
+ pathname: `../${collectionType}/${model}`
401
+ }, {
402
+ replace: true
403
+ });
404
+ }
405
+ }
406
+ }
407
+ };
408
+ };
409
+ /* -------------------------------------------------------------------------------------------------
410
+ * BulkLocaleAction
411
+ *
412
+ * This component is used to handle bulk publish and unpublish actions on locales.
413
+ * -----------------------------------------------------------------------------------------------*/ const BulkLocaleAction = ({ document, documentId, model, collectionType, action })=>{
414
+ const locale = document?.locale ?? null;
415
+ const [{ query: query$1 }] = strapiAdmin.useQueryParams();
416
+ const params = React__namespace.useMemo(()=>strapiAdmin$1.buildValidParams(query$1), [
417
+ query$1
418
+ ]);
419
+ const isOnPublishedTab = query$1.status === 'published';
420
+ const { formatMessage } = reactIntl.useIntl();
421
+ const { hasI18n, canPublish } = useI18n.useI18n();
422
+ const { toggleNotification } = strapiAdmin.useNotification();
423
+ const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
424
+ const [selectedRows, setSelectedRows] = React__namespace.useState([]);
425
+ const [isDraftRelationConfirmationOpen, setIsDraftRelationConfirmationOpen] = React__namespace.useState(false);
426
+ const { publishMany: publishManyAction, unpublishMany: unpublishManyAction } = strapiAdmin$1.unstable_useDocumentActions();
427
+ const { schema, validate } = strapiAdmin$1.unstable_useDocument({
428
+ model,
429
+ collectionType,
430
+ documentId,
431
+ params: {
432
+ locale
433
+ }
434
+ }, {
435
+ // No need to fetch the document, the data is already available in the `document` prop
436
+ skip: true
437
+ });
438
+ const { data: localesMetadata = [] } = locales.useGetLocalesQuery(hasI18n ? undefined : query.skipToken);
439
+ const headers = [
440
+ {
441
+ label: formatMessage({
442
+ id: 'global.name',
443
+ defaultMessage: 'Name'
444
+ }),
445
+ name: 'name'
446
+ },
447
+ {
448
+ label: formatMessage({
449
+ id: getTranslation.getTranslation('CMEditViewBulkLocale.status'),
450
+ defaultMessage: 'Status'
451
+ }),
452
+ name: 'status'
453
+ },
454
+ {
455
+ label: formatMessage({
456
+ id: getTranslation.getTranslation('CMEditViewBulkLocale.publication-status'),
457
+ defaultMessage: 'Publication Status'
458
+ }),
459
+ name: 'publication-status'
460
+ }
461
+ ];
462
+ // Extract the rows for the bulk locale publish modal and any validation
463
+ // errors per locale
464
+ const [rows, validationErrors] = React__namespace.useMemo(()=>{
465
+ if (!document) {
466
+ return [
467
+ [],
468
+ {}
469
+ ];
470
+ }
471
+ const localizations = document.localizations ?? [];
472
+ // Build the rows for the bulk locale publish modal by combining the current
473
+ // document with all the available locales from the document meta
474
+ const locales = localizations.map((doc)=>{
475
+ const { locale, status } = doc;
476
+ return {
477
+ locale,
478
+ status
479
+ };
480
+ });
481
+ // Add the current document locale
482
+ locales.unshift({
483
+ locale: document.locale,
484
+ status: document.status
485
+ });
486
+ // Build the validation errors for each locale.
487
+ const allDocuments = [
488
+ document,
489
+ ...localizations
490
+ ];
491
+ const errors = allDocuments.reduce((errs, document)=>{
492
+ if (!document) {
493
+ return errs;
494
+ }
495
+ // Validate each locale entry via the useDocument validate function and store any errors in a dictionary
496
+ const validation = validate(document);
497
+ if (validation !== null) {
498
+ errs[document.locale] = validation;
499
+ }
500
+ return errs;
501
+ }, {});
502
+ return [
503
+ locales,
504
+ errors
505
+ ];
506
+ }, [
507
+ document,
508
+ validate
509
+ ]);
510
+ const isBulkPublish = action === 'bulk-publish';
511
+ const localesForAction = selectedRows.reduce((acc, selectedRow)=>{
512
+ const isValidLocale = // Validation errors are irrelevant if we are trying to unpublish
513
+ !isBulkPublish || !Object.keys(validationErrors).includes(selectedRow.locale);
514
+ const shouldAddLocale = isBulkPublish ? selectedRow.status !== 'published' && isValidLocale : selectedRow.status !== 'draft' && isValidLocale;
515
+ if (shouldAddLocale) {
516
+ acc.push(selectedRow.locale);
517
+ }
518
+ return acc;
519
+ }, []);
520
+ // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately
521
+ // see https://www.notion.so/strapi/Count-draft-relations-56901b492efb45ab90d42fe975b32bd8?pvs=4
522
+ const enableDraftRelationsCount = false;
523
+ const { data: draftRelationsCount = 0, isLoading: isDraftRelationsLoading, error: isDraftRelationsError } = relations.useGetManyDraftRelationCountQuery({
524
+ model,
525
+ documentIds: [
526
+ documentId
527
+ ],
528
+ locale: localesForAction
529
+ }, {
530
+ skip: !enableDraftRelationsCount
531
+ });
532
+ React__namespace.useEffect(()=>{
533
+ if (isDraftRelationsError) {
534
+ toggleNotification({
535
+ type: 'danger',
536
+ message: formatAPIError(isDraftRelationsError)
537
+ });
538
+ }
539
+ }, [
540
+ isDraftRelationsError,
541
+ toggleNotification,
542
+ formatAPIError
543
+ ]);
544
+ if (!schema?.options?.draftAndPublish) {
545
+ return null;
546
+ }
547
+ if (!hasI18n) {
548
+ return null;
549
+ }
550
+ if (!documentId) {
551
+ return null;
552
+ }
553
+ // This document action can be enabled given that draft and publish and i18n are
554
+ // enabled and we can publish the current locale.
555
+ const publish = async ()=>{
556
+ await publishManyAction({
557
+ model,
558
+ documentIds: [
559
+ documentId
560
+ ],
561
+ params: {
562
+ ...params,
563
+ locale: localesForAction
564
+ }
565
+ });
566
+ setSelectedRows([]);
567
+ };
568
+ const unpublish = async ()=>{
569
+ await unpublishManyAction({
570
+ model,
571
+ documentIds: [
572
+ documentId
573
+ ],
574
+ params: {
575
+ ...params,
576
+ locale: localesForAction
577
+ }
578
+ });
579
+ setSelectedRows([]);
580
+ };
581
+ const handleAction = async ()=>{
582
+ if (draftRelationsCount > 0) {
583
+ setIsDraftRelationConfirmationOpen(true);
584
+ } else if (isBulkPublish) {
585
+ await publish();
586
+ } else {
587
+ await unpublish();
588
+ }
589
+ };
590
+ if (isDraftRelationConfirmationOpen) {
591
+ return {
592
+ label: formatMessage({
593
+ id: 'app.components.ConfirmDialog.title',
594
+ defaultMessage: 'Confirmation'
595
+ }),
596
+ variant: 'danger',
597
+ dialog: {
598
+ onCancel: ()=>{
599
+ setIsDraftRelationConfirmationOpen(false);
600
+ },
601
+ onConfirm: async ()=>{
602
+ await publish();
603
+ setIsDraftRelationConfirmationOpen(false);
604
+ },
605
+ type: 'dialog',
606
+ title: formatMessage({
607
+ id: getTranslation.getTranslation('actions.publish.dialog.title'),
608
+ defaultMessage: 'Confirmation'
609
+ }),
610
+ content: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
611
+ direction: "column",
612
+ alignItems: "center",
613
+ gap: 2,
614
+ children: [
615
+ /*#__PURE__*/ jsxRuntime.jsx(icons.WarningCircle, {
616
+ width: "2.4rem",
617
+ height: "2.4rem",
618
+ fill: "danger600"
619
+ }),
620
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
621
+ textAlign: "center",
622
+ children: formatMessage({
623
+ id: getTranslation.getTranslation('CMEditViewBulkLocale.draft-relation-warning'),
624
+ defaultMessage: 'Some locales are related to draft entries. Publishing them could leave broken links in your app.'
625
+ })
626
+ }),
627
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
628
+ textAlign: "center",
629
+ children: formatMessage({
630
+ id: getTranslation.getTranslation('CMEditViewBulkLocale.continue-confirmation'),
631
+ defaultMessage: 'Are you sure you want to continue?'
632
+ })
633
+ })
634
+ ]
635
+ })
636
+ }
637
+ };
638
+ }
639
+ const hasPermission = selectedRows.map(({ locale })=>locale).every((locale)=>canPublish.includes(locale));
640
+ return {
641
+ label: formatMessage({
642
+ id: getTranslation.getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),
643
+ defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`
644
+ }),
645
+ variant: isBulkPublish ? 'secondary' : 'danger',
646
+ icon: isBulkPublish ? /*#__PURE__*/ jsxRuntime.jsx(icons.ListPlus, {}) : /*#__PURE__*/ jsxRuntime.jsx(icons.Cross, {}),
647
+ disabled: isOnPublishedTab || canPublish.length === 0,
648
+ position: [
649
+ 'panel'
650
+ ],
651
+ dialog: {
652
+ type: 'modal',
653
+ title: formatMessage({
654
+ id: getTranslation.getTranslation(`CMEditViewBulkLocale.${isBulkPublish ? 'publish' : 'unpublish'}-title`),
655
+ defaultMessage: `${isBulkPublish ? 'Publish' : 'Unpublish'} Multiple Locales`
656
+ }),
657
+ content: ()=>{
658
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Table.Root, {
659
+ headers: headers,
660
+ rows: rows.map((row)=>({
661
+ ...row,
662
+ id: row.locale
663
+ })),
664
+ selectedRows: selectedRows,
665
+ onSelectedRowsChange: (tableSelectedRows)=>setSelectedRows(tableSelectedRows),
666
+ children: /*#__PURE__*/ jsxRuntime.jsx(BulkLocaleActionModal.BulkLocaleActionModal, {
667
+ validationErrors: validationErrors,
668
+ headers: headers,
669
+ rows: rows,
670
+ localesMetadata: localesMetadata,
671
+ action: action ?? 'bulk-publish'
672
+ })
673
+ });
674
+ },
675
+ footer: ()=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Footer, {
676
+ justifyContent: "flex-end",
677
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
678
+ loading: isDraftRelationsLoading,
679
+ disabled: !hasPermission || localesForAction.length === 0,
680
+ variant: "default",
681
+ onClick: handleAction,
682
+ children: formatMessage({
683
+ id: isBulkPublish ? 'app.utils.publish' : 'app.utils.unpublish',
684
+ defaultMessage: isBulkPublish ? 'Publish' : 'Unpublish'
685
+ })
686
+ })
687
+ })
688
+ }
689
+ };
690
+ };
691
+ /* -------------------------------------------------------------------------------------------------
692
+ * BulkLocalePublishAction
693
+ * -----------------------------------------------------------------------------------------------*/ const BulkLocalePublishAction = (props)=>{
694
+ return BulkLocaleAction({
695
+ action: 'bulk-publish',
696
+ ...props
697
+ });
698
+ };
699
+ /* -------------------------------------------------------------------------------------------------
700
+ * BulkLocaleUnpublishAction
701
+ * -----------------------------------------------------------------------------------------------*/ const BulkLocaleUnpublishAction = (props)=>{
702
+ return BulkLocaleAction({
703
+ action: 'bulk-unpublish',
704
+ ...props
705
+ });
706
+ };
707
+ /**
708
+ * Because the icon system is completely broken, we have to do
709
+ * this to remove the fill from the cog.
710
+ */ const StyledTrash = styledComponents.styled(icons.Trash)`
711
+ path {
712
+ fill: currentColor;
713
+ }
714
+ `;
715
+
716
+ exports.BulkLocalePublishAction = BulkLocalePublishAction;
717
+ exports.BulkLocaleUnpublishAction = BulkLocaleUnpublishAction;
718
+ exports.DeleteLocaleAction = DeleteLocaleAction;
719
+ exports.FillFromAnotherLocaleAction = FillFromAnotherLocaleAction;
720
+ exports.LocalePickerAction = LocalePickerAction;
721
+ //# sourceMappingURL=CMHeaderActions.js.map