@strapi/plugin-users-permissions 0.0.0-next.f7babb775ed9a7e18d8351cb7f74c63e016323c4 → 0.0.0-next.f8af92b375dc730ba47ed2117f25df893aae696c

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 (178) hide show
  1. package/.eslintignore +1 -2
  2. package/.eslintrc +17 -0
  3. package/admin/src/components/Permissions/{index.js → index.jsx} +2 -4
  4. package/admin/src/index.js +12 -23
  5. package/admin/src/pages/AdvancedSettings/{index.js → index.jsx} +41 -24
  6. package/admin/src/pages/EmailTemplates/{index.js → index.jsx} +62 -47
  7. package/admin/src/pages/Providers/{index.js → index.jsx} +64 -58
  8. package/admin/src/{hooks → pages/Roles/hooks}/usePlugins.js +15 -8
  9. package/admin/src/pages/Roles/{index.js → index.jsx} +10 -7
  10. package/admin/src/pages/Roles/pages/CreatePage.jsx +199 -0
  11. package/admin/src/pages/Roles/pages/EditPage.jsx +220 -0
  12. package/admin/src/pages/Roles/{ListPage/components/TableBody.js → pages/ListPage/components/TableBody.jsx} +44 -14
  13. package/admin/src/pages/Roles/{ListPage/index.js → pages/ListPage/index.jsx} +19 -15
  14. package/admin/src/translations/zh-Hans.json +80 -80
  15. package/dist/_chunks/ar-MvD8Ghac.mjs +44 -0
  16. package/dist/_chunks/ar-MvD8Ghac.mjs.map +1 -0
  17. package/dist/_chunks/ar-t5qTFaAD.js +44 -0
  18. package/dist/_chunks/ar-t5qTFaAD.js.map +1 -0
  19. package/dist/_chunks/cs-BMuXwxA1.mjs +50 -0
  20. package/dist/_chunks/cs-BMuXwxA1.mjs.map +1 -0
  21. package/dist/_chunks/cs-I8N4u-Sd.js +50 -0
  22. package/dist/_chunks/cs-I8N4u-Sd.js.map +1 -0
  23. package/dist/_chunks/de-YTjtq89K.js +62 -0
  24. package/dist/_chunks/de-YTjtq89K.js.map +1 -0
  25. package/dist/_chunks/de-zs2qqc0W.mjs +62 -0
  26. package/dist/_chunks/de-zs2qqc0W.mjs.map +1 -0
  27. package/dist/_chunks/dk-HctVBMsG.mjs +86 -0
  28. package/dist/_chunks/dk-HctVBMsG.mjs.map +1 -0
  29. package/dist/_chunks/dk-TF-dWjzl.js +86 -0
  30. package/dist/_chunks/dk-TF-dWjzl.js.map +1 -0
  31. package/dist/_chunks/en-CE3wEy_c.mjs +86 -0
  32. package/dist/_chunks/en-CE3wEy_c.mjs.map +1 -0
  33. package/dist/_chunks/en-m608rMZx.js +86 -0
  34. package/dist/_chunks/en-m608rMZx.js.map +1 -0
  35. package/dist/_chunks/es-9381tih_.mjs +86 -0
  36. package/dist/_chunks/es-9381tih_.mjs.map +1 -0
  37. package/dist/_chunks/es-XBQsB8_9.js +86 -0
  38. package/dist/_chunks/es-XBQsB8_9.js.map +1 -0
  39. package/dist/_chunks/fr-6cz3U-IF.js +50 -0
  40. package/dist/_chunks/fr-6cz3U-IF.js.map +1 -0
  41. package/dist/_chunks/fr-CMSc77If.mjs +50 -0
  42. package/dist/_chunks/fr-CMSc77If.mjs.map +1 -0
  43. package/dist/_chunks/id-RJ934rq-.js +62 -0
  44. package/dist/_chunks/id-RJ934rq-.js.map +1 -0
  45. package/dist/_chunks/id-SDuyIkZa.mjs +62 -0
  46. package/dist/_chunks/id-SDuyIkZa.mjs.map +1 -0
  47. package/dist/_chunks/index-9gWaMWEm.js +407 -0
  48. package/dist/_chunks/index-9gWaMWEm.js.map +1 -0
  49. package/dist/_chunks/index-GrQm7Vzp.mjs +385 -0
  50. package/dist/_chunks/index-GrQm7Vzp.mjs.map +1 -0
  51. package/dist/_chunks/index-IrxIszoz.mjs +250 -0
  52. package/dist/_chunks/index-IrxIszoz.mjs.map +1 -0
  53. package/dist/_chunks/index-OAhEloLu.mjs +615 -0
  54. package/dist/_chunks/index-OAhEloLu.mjs.map +1 -0
  55. package/dist/_chunks/index-Pd_ARJrq.js +1191 -0
  56. package/dist/_chunks/index-Pd_ARJrq.js.map +1 -0
  57. package/dist/_chunks/index-VwrATkHQ.js +320 -0
  58. package/dist/_chunks/index-VwrATkHQ.js.map +1 -0
  59. package/dist/_chunks/index-jmZgp6D6.mjs +1159 -0
  60. package/dist/_chunks/index-jmZgp6D6.mjs.map +1 -0
  61. package/dist/_chunks/index-oskitS-P.js +249 -0
  62. package/dist/_chunks/index-oskitS-P.js.map +1 -0
  63. package/dist/_chunks/index-uaeObIW1.js +638 -0
  64. package/dist/_chunks/index-uaeObIW1.js.map +1 -0
  65. package/dist/_chunks/index-x0N2TQLH.mjs +301 -0
  66. package/dist/_chunks/index-x0N2TQLH.mjs.map +1 -0
  67. package/dist/_chunks/it-YhZOlM2X.js +62 -0
  68. package/dist/_chunks/it-YhZOlM2X.js.map +1 -0
  69. package/dist/_chunks/it-bvH7DgQo.mjs +62 -0
  70. package/dist/_chunks/it-bvH7DgQo.mjs.map +1 -0
  71. package/dist/_chunks/ja-o_-JPvQv.mjs +48 -0
  72. package/dist/_chunks/ja-o_-JPvQv.mjs.map +1 -0
  73. package/dist/_chunks/ja-xssHUXFv.js +48 -0
  74. package/dist/_chunks/ja-xssHUXFv.js.map +1 -0
  75. package/dist/_chunks/ko-C3mHUSJa.js +86 -0
  76. package/dist/_chunks/ko-C3mHUSJa.js.map +1 -0
  77. package/dist/_chunks/ko-XJbPSez_.mjs +86 -0
  78. package/dist/_chunks/ko-XJbPSez_.mjs.map +1 -0
  79. package/dist/_chunks/ms-II5Ea73J.mjs +49 -0
  80. package/dist/_chunks/ms-II5Ea73J.mjs.map +1 -0
  81. package/dist/_chunks/ms-d0hfg65Z.js +49 -0
  82. package/dist/_chunks/ms-d0hfg65Z.js.map +1 -0
  83. package/dist/_chunks/nl-TA7TfK_5.js +48 -0
  84. package/dist/_chunks/nl-TA7TfK_5.js.map +1 -0
  85. package/dist/_chunks/nl-vEy6TN0K.mjs +48 -0
  86. package/dist/_chunks/nl-vEy6TN0K.mjs.map +1 -0
  87. package/dist/_chunks/pl-0pUL9hdA.js +86 -0
  88. package/dist/_chunks/pl-0pUL9hdA.js.map +1 -0
  89. package/dist/_chunks/pl-2VowaFGt.mjs +86 -0
  90. package/dist/_chunks/pl-2VowaFGt.mjs.map +1 -0
  91. package/dist/_chunks/pt-BR-WNOhafR4.js +44 -0
  92. package/dist/_chunks/pt-BR-WNOhafR4.js.map +1 -0
  93. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs +44 -0
  94. package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs.map +1 -0
  95. package/dist/_chunks/pt-Rf9W51IO.mjs +48 -0
  96. package/dist/_chunks/pt-Rf9W51IO.mjs.map +1 -0
  97. package/dist/_chunks/pt-guNR9Gax.js +48 -0
  98. package/dist/_chunks/pt-guNR9Gax.js.map +1 -0
  99. package/dist/_chunks/ru-X3BMXDds.js +86 -0
  100. package/dist/_chunks/ru-X3BMXDds.js.map +1 -0
  101. package/dist/_chunks/ru-qKHnd5or.mjs +86 -0
  102. package/dist/_chunks/ru-qKHnd5or.mjs.map +1 -0
  103. package/dist/_chunks/sk-NWPw1oTN.js +50 -0
  104. package/dist/_chunks/sk-NWPw1oTN.js.map +1 -0
  105. package/dist/_chunks/sk-_Ryr-eTT.mjs +50 -0
  106. package/dist/_chunks/sk-_Ryr-eTT.mjs.map +1 -0
  107. package/dist/_chunks/sv-76NnbB__.js +86 -0
  108. package/dist/_chunks/sv-76NnbB__.js.map +1 -0
  109. package/dist/_chunks/sv-BqzScFXS.mjs +86 -0
  110. package/dist/_chunks/sv-BqzScFXS.mjs.map +1 -0
  111. package/dist/_chunks/th-WsknMEpq.mjs +60 -0
  112. package/dist/_chunks/th-WsknMEpq.mjs.map +1 -0
  113. package/dist/_chunks/th-cbppX21D.js +60 -0
  114. package/dist/_chunks/th-cbppX21D.js.map +1 -0
  115. package/dist/_chunks/tr-6mm_Fmz7.js +85 -0
  116. package/dist/_chunks/tr-6mm_Fmz7.js.map +1 -0
  117. package/dist/_chunks/tr-_DB1F1GW.mjs +85 -0
  118. package/dist/_chunks/tr-_DB1F1GW.mjs.map +1 -0
  119. package/dist/_chunks/uk-sI2I1ogF.js +49 -0
  120. package/dist/_chunks/uk-sI2I1ogF.js.map +1 -0
  121. package/dist/_chunks/uk-yxMSQAwI.mjs +49 -0
  122. package/dist/_chunks/uk-yxMSQAwI.mjs.map +1 -0
  123. package/dist/_chunks/vi-A3zJxaiI.js +50 -0
  124. package/dist/_chunks/vi-A3zJxaiI.js.map +1 -0
  125. package/dist/_chunks/vi-xY0zCW3d.mjs +50 -0
  126. package/dist/_chunks/vi-xY0zCW3d.mjs.map +1 -0
  127. package/dist/_chunks/zh-72SpmFXa.js +86 -0
  128. package/dist/_chunks/zh-72SpmFXa.js.map +1 -0
  129. package/dist/_chunks/zh-Hans-ArWWtyP4.js +86 -0
  130. package/dist/_chunks/zh-Hans-ArWWtyP4.js.map +1 -0
  131. package/dist/_chunks/zh-Hans-E84cu4kP.mjs +86 -0
  132. package/dist/_chunks/zh-Hans-E84cu4kP.mjs.map +1 -0
  133. package/dist/_chunks/zh-OFeldzbX.mjs +86 -0
  134. package/dist/_chunks/zh-OFeldzbX.mjs.map +1 -0
  135. package/dist/admin/index.js +5 -0
  136. package/dist/admin/index.js.map +1 -0
  137. package/dist/admin/index.mjs +6 -0
  138. package/dist/admin/index.mjs.map +1 -0
  139. package/documentation/content-api.yaml +1 -1
  140. package/jest.config.front.js +1 -1
  141. package/package.json +34 -14
  142. package/packup.config.ts +22 -0
  143. package/server/bootstrap/index.js +36 -0
  144. package/server/controllers/auth.js +51 -14
  145. package/server/controllers/user.js +12 -1
  146. package/server/middlewares/rateLimit.js +1 -1
  147. package/.eslintrc.js +0 -14
  148. package/admin/src/hooks/index.js +0 -5
  149. package/admin/src/hooks/useFetchRole/index.js +0 -67
  150. package/admin/src/hooks/useFetchRole/reducer.js +0 -31
  151. package/admin/src/hooks/useForm/index.js +0 -68
  152. package/admin/src/hooks/useForm/reducer.js +0 -40
  153. package/admin/src/hooks/useRolesList/index.js +0 -65
  154. package/admin/src/hooks/useRolesList/init.js +0 -5
  155. package/admin/src/hooks/useRolesList/reducer.js +0 -31
  156. package/admin/src/pages/AdvancedSettings/utils/api.js +0 -16
  157. package/admin/src/pages/EmailTemplates/utils/api.js +0 -16
  158. package/admin/src/pages/Providers/reducer.js +0 -54
  159. package/admin/src/pages/Providers/utils/api.js +0 -24
  160. package/admin/src/pages/Providers/utils/createProvidersArray.js +0 -21
  161. package/admin/src/pages/Roles/CreatePage.js +0 -185
  162. package/admin/src/pages/Roles/EditPage.js +0 -197
  163. package/admin/src/pages/Roles/ProtectedCreatePage.js +0 -15
  164. package/admin/src/pages/Roles/ProtectedEditPage.js +0 -15
  165. package/admin/src/pages/Roles/ProtectedListPage.js +0 -17
  166. package/strapi-admin.js +0 -3
  167. /package/admin/src/components/BoundRoute/{index.js → index.jsx} +0 -0
  168. /package/admin/src/components/FormModal/Input/{index.js → index.jsx} +0 -0
  169. /package/admin/src/components/FormModal/{index.js → index.jsx} +0 -0
  170. /package/admin/src/components/Permissions/PermissionRow/{CheckboxWrapper.js → CheckboxWrapper.jsx} +0 -0
  171. /package/admin/src/components/Permissions/PermissionRow/{SubCategory.js → SubCategory.jsx} +0 -0
  172. /package/admin/src/components/Permissions/PermissionRow/{index.js → index.jsx} +0 -0
  173. /package/admin/src/components/Policies/{index.js → index.jsx} +0 -0
  174. /package/admin/src/components/UsersPermissions/{index.js → index.jsx} +0 -0
  175. /package/admin/src/contexts/UsersPermissionsContext/{index.js → index.jsx} +0 -0
  176. /package/admin/src/pages/EmailTemplates/components/{EmailForm.js → EmailForm.jsx} +0 -0
  177. /package/admin/src/pages/EmailTemplates/components/{EmailTable.js → EmailTable.jsx} +0 -0
  178. /package/admin/src/pages/Roles/{ListPage → pages/ListPage}/utils/api.js +0 -0
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const id = {
4
+ "BoundRoute.title": "Rute terikat ke",
5
+ "EditForm.inputSelect.description.role": "Ini akan melampirkan pengguna baru yang diautentikasi ke peran yang dipilih.",
6
+ "EditForm.inputSelect.label.role": "Peran default untuk pengguna yang diautentikasi",
7
+ "EditForm.inputToggle.description.email": "Larang pengguna membuat beberapa akun menggunakan alamat email yang sama dengan penyedia otentikasi yang berbeda.",
8
+ "EditForm.inputToggle.description.email-confirmation": "Saat diaktifkan (ON), pengguna baru yang terdaftar menerima email konfirmasi.",
9
+ "EditForm.inputToggle.description.email-confirmation-redirection": "Setelah Anda mengkonfirmasi email Anda, pilih ke mana Anda akan diarahkan.",
10
+ "EditForm.inputToggle.description.email-reset-password": "URL halaman setel ulang sandi aplikasi Anda",
11
+ "EditForm.inputToggle.description.sign-up": "Saat dinonaktifkan (OFF), proses pendaftaran dilarang. Tidak ada yang bisa berlangganan lagi tidak peduli penyedia yang digunakan.",
12
+ "EditForm.inputToggle.label.email": "Satu akun per alamat email",
13
+ "EditForm.inputToggle.label.email-confirmation": "Aktifkan konfirmasi email",
14
+ "EditForm.inputToggle.label.email-confirmation-redirection": "URL pengalihan",
15
+ "EditForm.inputToggle.label.email-reset-password": "Atur ulang halaman kata sandi",
16
+ "EditForm.inputToggle.label.sign-up": "Aktifkan pendaftaran",
17
+ "Email.template.email_confirmation": "Konfirmasi alamat email",
18
+ "HeaderNav.link.advancedSettings": "Pengaturan lanjutan",
19
+ "HeaderNav.link.emailTemplates": "Template email",
20
+ "HeaderNav.link.providers": "Penyedia",
21
+ "Plugin.permissions.plugins.description": "Tentukan semua tindakan yang diizinkan untuk plugin {name}.",
22
+ "Plugins.header.description": "Hanya tindakan yang terikat oleh rute yang dicantumkan di bawah.",
23
+ "Plugins.header.title": "Izin",
24
+ "Policies.header.hint": "Pilih tindakan aplikasi atau tindakan plugin dan klik ikon roda gigi untuk menampilkan rute terikat",
25
+ "Policies.header.title": "Pengaturan lanjutan",
26
+ "PopUpForm.Email.email_templates.inputDescription": "Jika Anda tidak yakin bagaimana menggunakan variabel, {link}",
27
+ "PopUpForm.Email.link.documentation": "lihat dokumentasi kami.",
28
+ "PopUpForm.Email.options.from.email.label": "Email pengirim",
29
+ "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
30
+ "PopUpForm.Email.options.from.name.label": "Nama pengirim",
31
+ "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
32
+ "PopUpForm.Email.options.message.label": "Pesan",
33
+ "PopUpForm.Email.options.object.label": "Subyek",
34
+ "PopUpForm.Email.options.object.placeholder": "Harap konfirmasi alamat email Anda untuk% APP_NAME%",
35
+ "PopUpForm.Email.options.response_email.label": "Email tanggapan",
36
+ "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
37
+ "PopUpForm.Providers.enabled.description": "Jika dinonaktifkan, pengguna tidak akan dapat menggunakan penyedia ini.",
38
+ "PopUpForm.Providers.enabled.label": "Memungkinkan",
39
+ "PopUpForm.Providers.key.label": "ID Klien",
40
+ "PopUpForm.Providers.key.placeholder": "TEKS",
41
+ "PopUpForm.Providers.redirectURL.front-end.label": "URL pengalihan ke aplikasi front-end Anda",
42
+ "PopUpForm.Providers.redirectURL.label": "URL pengalihan yang akan ditambahkan dalam konfigurasi aplikasi {provider} Anda",
43
+ "PopUpForm.Providers.secret.label": "Client Secret",
44
+ "PopUpForm.Providers.secret.placeholder": "TEKS",
45
+ "PopUpForm.Providers.subdomain.label": "URI Host (Subdomain)",
46
+ "PopUpForm.Providers.subdomain.placeholder": "saya.subdomain.com",
47
+ "PopUpForm.header.edit.email-templates": "Edit Template Email",
48
+ "PopUpForm.header.edit.providers": "Edit Penyedia",
49
+ "Settings.roles.deleted": "Peran dihapus",
50
+ "Settings.roles.edited": "Peran diedit",
51
+ "Settings.section-label": "Plugin Pengguna & Izin",
52
+ "notification.success.submit": "Pengaturan telah diperbarui",
53
+ "plugin.description.long": "Lindungi API Anda dengan proses otentikasi penuh berdasarkan JWT. Plugin ini juga dilengkapi dengan strategi ACL yang memungkinkan Anda untuk mengelola izin di antara grup pengguna.",
54
+ "plugin.description.short": "Lindungi API Anda dengan proses otentikasi penuh berdasarkan JWT",
55
+ "plugin.name": "Plugin Pengguna & Izin",
56
+ "popUpWarning.button.cancel": "Batalkan",
57
+ "popUpWarning.button.confirm": "Konfirmasi",
58
+ "popUpWarning.title": "Harap konfirmasi",
59
+ "popUpWarning.warning.cancel": "Anda yakin ingin membatalkan modifikasi Anda?"
60
+ };
61
+ exports.default = id;
62
+ //# sourceMappingURL=id-RJ934rq-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-RJ934rq-.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,62 @@
1
+ const id = {
2
+ "BoundRoute.title": "Rute terikat ke",
3
+ "EditForm.inputSelect.description.role": "Ini akan melampirkan pengguna baru yang diautentikasi ke peran yang dipilih.",
4
+ "EditForm.inputSelect.label.role": "Peran default untuk pengguna yang diautentikasi",
5
+ "EditForm.inputToggle.description.email": "Larang pengguna membuat beberapa akun menggunakan alamat email yang sama dengan penyedia otentikasi yang berbeda.",
6
+ "EditForm.inputToggle.description.email-confirmation": "Saat diaktifkan (ON), pengguna baru yang terdaftar menerima email konfirmasi.",
7
+ "EditForm.inputToggle.description.email-confirmation-redirection": "Setelah Anda mengkonfirmasi email Anda, pilih ke mana Anda akan diarahkan.",
8
+ "EditForm.inputToggle.description.email-reset-password": "URL halaman setel ulang sandi aplikasi Anda",
9
+ "EditForm.inputToggle.description.sign-up": "Saat dinonaktifkan (OFF), proses pendaftaran dilarang. Tidak ada yang bisa berlangganan lagi tidak peduli penyedia yang digunakan.",
10
+ "EditForm.inputToggle.label.email": "Satu akun per alamat email",
11
+ "EditForm.inputToggle.label.email-confirmation": "Aktifkan konfirmasi email",
12
+ "EditForm.inputToggle.label.email-confirmation-redirection": "URL pengalihan",
13
+ "EditForm.inputToggle.label.email-reset-password": "Atur ulang halaman kata sandi",
14
+ "EditForm.inputToggle.label.sign-up": "Aktifkan pendaftaran",
15
+ "Email.template.email_confirmation": "Konfirmasi alamat email",
16
+ "HeaderNav.link.advancedSettings": "Pengaturan lanjutan",
17
+ "HeaderNav.link.emailTemplates": "Template email",
18
+ "HeaderNav.link.providers": "Penyedia",
19
+ "Plugin.permissions.plugins.description": "Tentukan semua tindakan yang diizinkan untuk plugin {name}.",
20
+ "Plugins.header.description": "Hanya tindakan yang terikat oleh rute yang dicantumkan di bawah.",
21
+ "Plugins.header.title": "Izin",
22
+ "Policies.header.hint": "Pilih tindakan aplikasi atau tindakan plugin dan klik ikon roda gigi untuk menampilkan rute terikat",
23
+ "Policies.header.title": "Pengaturan lanjutan",
24
+ "PopUpForm.Email.email_templates.inputDescription": "Jika Anda tidak yakin bagaimana menggunakan variabel, {link}",
25
+ "PopUpForm.Email.link.documentation": "lihat dokumentasi kami.",
26
+ "PopUpForm.Email.options.from.email.label": "Email pengirim",
27
+ "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
28
+ "PopUpForm.Email.options.from.name.label": "Nama pengirim",
29
+ "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
30
+ "PopUpForm.Email.options.message.label": "Pesan",
31
+ "PopUpForm.Email.options.object.label": "Subyek",
32
+ "PopUpForm.Email.options.object.placeholder": "Harap konfirmasi alamat email Anda untuk% APP_NAME%",
33
+ "PopUpForm.Email.options.response_email.label": "Email tanggapan",
34
+ "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
35
+ "PopUpForm.Providers.enabled.description": "Jika dinonaktifkan, pengguna tidak akan dapat menggunakan penyedia ini.",
36
+ "PopUpForm.Providers.enabled.label": "Memungkinkan",
37
+ "PopUpForm.Providers.key.label": "ID Klien",
38
+ "PopUpForm.Providers.key.placeholder": "TEKS",
39
+ "PopUpForm.Providers.redirectURL.front-end.label": "URL pengalihan ke aplikasi front-end Anda",
40
+ "PopUpForm.Providers.redirectURL.label": "URL pengalihan yang akan ditambahkan dalam konfigurasi aplikasi {provider} Anda",
41
+ "PopUpForm.Providers.secret.label": "Client Secret",
42
+ "PopUpForm.Providers.secret.placeholder": "TEKS",
43
+ "PopUpForm.Providers.subdomain.label": "URI Host (Subdomain)",
44
+ "PopUpForm.Providers.subdomain.placeholder": "saya.subdomain.com",
45
+ "PopUpForm.header.edit.email-templates": "Edit Template Email",
46
+ "PopUpForm.header.edit.providers": "Edit Penyedia",
47
+ "Settings.roles.deleted": "Peran dihapus",
48
+ "Settings.roles.edited": "Peran diedit",
49
+ "Settings.section-label": "Plugin Pengguna & Izin",
50
+ "notification.success.submit": "Pengaturan telah diperbarui",
51
+ "plugin.description.long": "Lindungi API Anda dengan proses otentikasi penuh berdasarkan JWT. Plugin ini juga dilengkapi dengan strategi ACL yang memungkinkan Anda untuk mengelola izin di antara grup pengguna.",
52
+ "plugin.description.short": "Lindungi API Anda dengan proses otentikasi penuh berdasarkan JWT",
53
+ "plugin.name": "Plugin Pengguna & Izin",
54
+ "popUpWarning.button.cancel": "Batalkan",
55
+ "popUpWarning.button.confirm": "Konfirmasi",
56
+ "popUpWarning.title": "Harap konfirmasi",
57
+ "popUpWarning.warning.cancel": "Anda yakin ingin membatalkan modifikasi Anda?"
58
+ };
59
+ export {
60
+ id as default
61
+ };
62
+ //# sourceMappingURL=id-SDuyIkZa.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-SDuyIkZa.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,407 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const designSystem = require("@strapi/design-system");
6
+ const helperPlugin = require("@strapi/helper-plugin");
7
+ const reactIntl = require("react-intl");
8
+ const reactQuery = require("react-query");
9
+ const index = require("./index-oskitS-P.js");
10
+ require("lodash/isEmpty");
11
+ const v2 = require("@strapi/design-system/v2");
12
+ const formik = require("formik");
13
+ const PropTypes = require("prop-types");
14
+ const yup = require("yup");
15
+ const icons = require("@strapi/icons");
16
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
17
+ function _interopNamespace(e) {
18
+ if (e && e.__esModule)
19
+ return e;
20
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
21
+ if (e) {
22
+ for (const k in e) {
23
+ if (k !== "default") {
24
+ const d = Object.getOwnPropertyDescriptor(e, k);
25
+ Object.defineProperty(n, k, d.get ? d : {
26
+ enumerable: true,
27
+ get: () => e[k]
28
+ });
29
+ }
30
+ }
31
+ }
32
+ n.default = e;
33
+ return Object.freeze(n);
34
+ }
35
+ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
36
+ const PropTypes__default = /* @__PURE__ */ _interopDefault(PropTypes);
37
+ const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
38
+ const schema = yup__namespace.object().shape({
39
+ options: yup__namespace.object().shape({
40
+ from: yup__namespace.object().shape({
41
+ name: yup__namespace.string().required(helperPlugin.translatedErrors.required),
42
+ email: yup__namespace.string().email(helperPlugin.translatedErrors.email).required(helperPlugin.translatedErrors.required)
43
+ }).required(),
44
+ response_email: yup__namespace.string().email(helperPlugin.translatedErrors.email),
45
+ object: yup__namespace.string().required(helperPlugin.translatedErrors.required),
46
+ message: yup__namespace.string().required(helperPlugin.translatedErrors.required)
47
+ }).required(helperPlugin.translatedErrors.required)
48
+ });
49
+ const EmailForm = ({ template, onToggle, onSubmit }) => {
50
+ const { formatMessage } = reactIntl.useIntl();
51
+ return /* @__PURE__ */ jsxRuntime.jsxs(
52
+ designSystem.ModalLayout,
53
+ {
54
+ onClose: onToggle,
55
+ labelledBy: `${formatMessage({
56
+ id: index.getTrad("PopUpForm.header.edit.email-templates"),
57
+ defaultMessage: "Edit email template"
58
+ })}, ${formatMessage({ id: index.getTrad(template.display), defaultMessage: template.display })}`,
59
+ children: [
60
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(
61
+ v2.Breadcrumbs,
62
+ {
63
+ label: `${formatMessage({
64
+ id: index.getTrad("PopUpForm.header.edit.email-templates"),
65
+ defaultMessage: "Edit email template"
66
+ })}, ${formatMessage({
67
+ id: index.getTrad(template.display),
68
+ defaultMessage: template.display
69
+ })}`,
70
+ children: [
71
+ /* @__PURE__ */ jsxRuntime.jsx(v2.Crumb, { children: formatMessage({
72
+ id: index.getTrad("PopUpForm.header.edit.email-templates"),
73
+ defaultMessage: "Edit email template"
74
+ }) }),
75
+ /* @__PURE__ */ jsxRuntime.jsx(v2.Crumb, { isCurrent: true, children: formatMessage({ id: index.getTrad(template.display), defaultMessage: template.display }) })
76
+ ]
77
+ }
78
+ ) }),
79
+ /* @__PURE__ */ jsxRuntime.jsx(
80
+ formik.Formik,
81
+ {
82
+ onSubmit,
83
+ initialValues: template,
84
+ validateOnChange: false,
85
+ validationSchema: schema,
86
+ enableReinitialize: true,
87
+ children: ({ errors, values, handleChange, isSubmitting }) => {
88
+ return /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Form, { children: [
89
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.ModalBody, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid, { gap: 5, children: [
90
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
91
+ helperPlugin.GenericInput,
92
+ {
93
+ intlLabel: {
94
+ id: index.getTrad("PopUpForm.Email.options.from.name.label"),
95
+ defaultMessage: "Shipper name"
96
+ },
97
+ name: "options.from.name",
98
+ onChange: handleChange,
99
+ value: values.options.from.name,
100
+ error: errors?.options?.from?.name,
101
+ type: "text"
102
+ }
103
+ ) }),
104
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
105
+ helperPlugin.GenericInput,
106
+ {
107
+ intlLabel: {
108
+ id: index.getTrad("PopUpForm.Email.options.from.email.label"),
109
+ defaultMessage: "Shipper email"
110
+ },
111
+ name: "options.from.email",
112
+ onChange: handleChange,
113
+ value: values.options.from.email,
114
+ error: errors?.options?.from?.email,
115
+ type: "text"
116
+ }
117
+ ) }),
118
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
119
+ helperPlugin.GenericInput,
120
+ {
121
+ intlLabel: {
122
+ id: index.getTrad("PopUpForm.Email.options.response_email.label"),
123
+ defaultMessage: "Response email"
124
+ },
125
+ name: "options.response_email",
126
+ onChange: handleChange,
127
+ value: values.options.response_email,
128
+ error: errors?.options?.response_email,
129
+ type: "text"
130
+ }
131
+ ) }),
132
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 6, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
133
+ helperPlugin.GenericInput,
134
+ {
135
+ intlLabel: {
136
+ id: index.getTrad("PopUpForm.Email.options.object.label"),
137
+ defaultMessage: "Subject"
138
+ },
139
+ name: "options.object",
140
+ onChange: handleChange,
141
+ value: values.options.object,
142
+ error: errors?.options?.object,
143
+ type: "text"
144
+ }
145
+ ) }),
146
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { col: 12, s: 12, children: /* @__PURE__ */ jsxRuntime.jsx(
147
+ designSystem.Textarea,
148
+ {
149
+ label: formatMessage({
150
+ id: index.getTrad("PopUpForm.Email.options.message.label"),
151
+ defaultMessage: "Message"
152
+ }),
153
+ id: "options.message",
154
+ onChange: handleChange,
155
+ value: values.options.message,
156
+ error: errors?.options?.message && formatMessage({
157
+ id: errors.options.message,
158
+ defaultMessage: errors.options.message
159
+ })
160
+ }
161
+ ) })
162
+ ] }) }),
163
+ /* @__PURE__ */ jsxRuntime.jsx(
164
+ designSystem.ModalFooter,
165
+ {
166
+ startActions: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: onToggle, variant: "tertiary", children: "Cancel" }),
167
+ endActions: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { loading: isSubmitting, type: "submit", children: "Finish" })
168
+ }
169
+ )
170
+ ] });
171
+ }
172
+ }
173
+ )
174
+ ]
175
+ }
176
+ );
177
+ };
178
+ EmailForm.propTypes = {
179
+ template: PropTypes__default.default.shape({
180
+ display: PropTypes__default.default.string,
181
+ icon: PropTypes__default.default.string,
182
+ options: PropTypes__default.default.shape({
183
+ from: PropTypes__default.default.shape({
184
+ name: PropTypes__default.default.string,
185
+ email: PropTypes__default.default.string
186
+ }),
187
+ message: PropTypes__default.default.string,
188
+ object: PropTypes__default.default.string,
189
+ response_email: PropTypes__default.default.string
190
+ })
191
+ }).isRequired,
192
+ onSubmit: PropTypes__default.default.func.isRequired,
193
+ onToggle: PropTypes__default.default.func.isRequired
194
+ };
195
+ const EmailTable = ({ canUpdate, onEditClick }) => {
196
+ const { formatMessage } = reactIntl.useIntl();
197
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Table, { colCount: 3, rowCount: 3, children: [
198
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
199
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { width: "1%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { children: formatMessage({
200
+ id: index.getTrad("Email.template.table.icon.label"),
201
+ defaultMessage: "icon"
202
+ }) }) }),
203
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({
204
+ id: index.getTrad("Email.template.table.name.label"),
205
+ defaultMessage: "name"
206
+ }) }) }),
207
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { width: "1%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { children: formatMessage({
208
+ id: index.getTrad("Email.template.table.action.label"),
209
+ defaultMessage: "action"
210
+ }) }) })
211
+ ] }) }),
212
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tbody, { children: [
213
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { ...helperPlugin.onRowClick({ fn: () => onEditClick("reset_password") }), children: [
214
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(
215
+ icons.Refresh,
216
+ {
217
+ "aria-label": formatMessage({
218
+ id: "global.reset-password",
219
+ defaultMessage: "Reset password"
220
+ })
221
+ }
222
+ ) }) }),
223
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
224
+ id: "global.reset-password",
225
+ defaultMessage: "Reset password"
226
+ }) }) }),
227
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { ...helperPlugin.stopPropagation, children: /* @__PURE__ */ jsxRuntime.jsx(
228
+ designSystem.IconButton,
229
+ {
230
+ onClick: () => onEditClick("reset_password"),
231
+ label: formatMessage({
232
+ id: index.getTrad("Email.template.form.edit.label"),
233
+ defaultMessage: "Edit a template"
234
+ }),
235
+ noBorder: true,
236
+ icon: canUpdate && /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, {})
237
+ }
238
+ ) })
239
+ ] }),
240
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { ...helperPlugin.onRowClick({ fn: () => onEditClick("email_confirmation") }), children: [
241
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(
242
+ icons.Check,
243
+ {
244
+ "aria-label": formatMessage({
245
+ id: index.getTrad("Email.template.email_confirmation"),
246
+ defaultMessage: "Email address confirmation"
247
+ })
248
+ }
249
+ ) }) }),
250
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
251
+ id: index.getTrad("Email.template.email_confirmation"),
252
+ defaultMessage: "Email address confirmation"
253
+ }) }) }),
254
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { ...helperPlugin.stopPropagation, children: /* @__PURE__ */ jsxRuntime.jsx(
255
+ designSystem.IconButton,
256
+ {
257
+ onClick: () => onEditClick("email_confirmation"),
258
+ label: formatMessage({
259
+ id: index.getTrad("Email.template.form.edit.label"),
260
+ defaultMessage: "Edit a template"
261
+ }),
262
+ noBorder: true,
263
+ icon: canUpdate && /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, {})
264
+ }
265
+ ) })
266
+ ] })
267
+ ] })
268
+ ] });
269
+ };
270
+ EmailTable.propTypes = {
271
+ canUpdate: PropTypes__default.default.bool.isRequired,
272
+ onEditClick: PropTypes__default.default.func.isRequired
273
+ };
274
+ const ProtectedEmailTemplatesPage = () => /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.readEmailTemplates, children: /* @__PURE__ */ jsxRuntime.jsx(EmailTemplatesPage, {}) });
275
+ const EmailTemplatesPage = () => {
276
+ const { formatMessage } = reactIntl.useIntl();
277
+ const { trackUsage } = helperPlugin.useTracking();
278
+ const { notifyStatus } = designSystem.useNotifyAT();
279
+ const toggleNotification = helperPlugin.useNotification();
280
+ const { lockApp, unlockApp } = helperPlugin.useOverlayBlocker();
281
+ const queryClient = reactQuery.useQueryClient();
282
+ const { get, put } = helperPlugin.useFetchClient();
283
+ const { formatAPIError } = helperPlugin.useAPIErrorHandler();
284
+ helperPlugin.useFocusWhenNavigate();
285
+ const [isModalOpen, setIsModalOpen] = React__namespace.useState(false);
286
+ const [templateToEdit, setTemplateToEdit] = React__namespace.useState(null);
287
+ const {
288
+ isLoading: isLoadingForPermissions,
289
+ allowedActions: { canUpdate }
290
+ } = helperPlugin.useRBAC({ update: index.PERMISSIONS.updateEmailTemplates });
291
+ const { isLoading: isLoadingData, data } = reactQuery.useQuery(
292
+ ["users-permissions", "email-templates"],
293
+ async () => {
294
+ const { data: data2 } = await get("/users-permissions/email-templates");
295
+ return data2;
296
+ },
297
+ {
298
+ onSuccess() {
299
+ notifyStatus(
300
+ formatMessage({
301
+ id: index.getTrad("Email.template.data.loaded"),
302
+ defaultMessage: "Email templates has been loaded"
303
+ })
304
+ );
305
+ },
306
+ onError(error) {
307
+ toggleNotification({
308
+ type: "warning",
309
+ message: formatAPIError(error)
310
+ });
311
+ }
312
+ }
313
+ );
314
+ const isLoading = isLoadingForPermissions || isLoadingData;
315
+ const handleToggle = () => {
316
+ setIsModalOpen((prev) => !prev);
317
+ };
318
+ const handleEditClick = (template) => {
319
+ setTemplateToEdit(template);
320
+ handleToggle();
321
+ };
322
+ const submitMutation = reactQuery.useMutation(
323
+ (body) => put("/users-permissions/email-templates", { "email-templates": body }),
324
+ {
325
+ async onSuccess() {
326
+ await queryClient.invalidateQueries(["users-permissions", "email-templates"]);
327
+ toggleNotification({
328
+ type: "success",
329
+ message: { id: "notification.success.saved", defaultMessage: "Saved" }
330
+ });
331
+ trackUsage("didEditEmailTemplates");
332
+ unlockApp();
333
+ handleToggle();
334
+ },
335
+ onError(error) {
336
+ toggleNotification({
337
+ type: "warning",
338
+ message: formatAPIError(error)
339
+ });
340
+ unlockApp();
341
+ },
342
+ refetchActive: true
343
+ }
344
+ );
345
+ const handleSubmit = (body) => {
346
+ lockApp();
347
+ trackUsage("willEditEmailTemplates");
348
+ const editedTemplates = { ...data, [templateToEdit]: body };
349
+ submitMutation.mutate(editedTemplates);
350
+ };
351
+ if (isLoading) {
352
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": "true", children: [
353
+ /* @__PURE__ */ jsxRuntime.jsx(
354
+ helperPlugin.SettingsPageTitle,
355
+ {
356
+ name: formatMessage({
357
+ id: index.getTrad("HeaderNav.link.emailTemplates"),
358
+ defaultMessage: "Email templates"
359
+ })
360
+ }
361
+ ),
362
+ /* @__PURE__ */ jsxRuntime.jsx(
363
+ designSystem.HeaderLayout,
364
+ {
365
+ title: formatMessage({
366
+ id: index.getTrad("HeaderNav.link.emailTemplates"),
367
+ defaultMessage: "Email templates"
368
+ })
369
+ }
370
+ ),
371
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) })
372
+ ] });
373
+ }
374
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { "aria-busy": submitMutation.isLoading, children: [
375
+ /* @__PURE__ */ jsxRuntime.jsx(
376
+ helperPlugin.SettingsPageTitle,
377
+ {
378
+ name: formatMessage({
379
+ id: index.getTrad("HeaderNav.link.emailTemplates"),
380
+ defaultMessage: "Email templates"
381
+ })
382
+ }
383
+ ),
384
+ /* @__PURE__ */ jsxRuntime.jsx(
385
+ designSystem.HeaderLayout,
386
+ {
387
+ title: formatMessage({
388
+ id: index.getTrad("HeaderNav.link.emailTemplates"),
389
+ defaultMessage: "Email templates"
390
+ })
391
+ }
392
+ ),
393
+ /* @__PURE__ */ jsxRuntime.jsxs(designSystem.ContentLayout, { children: [
394
+ /* @__PURE__ */ jsxRuntime.jsx(EmailTable, { onEditClick: handleEditClick, canUpdate }),
395
+ isModalOpen && /* @__PURE__ */ jsxRuntime.jsx(
396
+ EmailForm,
397
+ {
398
+ template: data[templateToEdit],
399
+ onToggle: handleToggle,
400
+ onSubmit: handleSubmit
401
+ }
402
+ )
403
+ ] })
404
+ ] });
405
+ };
406
+ exports.default = ProtectedEmailTemplatesPage;
407
+ //# sourceMappingURL=index-9gWaMWEm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-9gWaMWEm.js","sources":["../../admin/src/pages/EmailTemplates/utils/schema.js","../../admin/src/pages/EmailTemplates/components/EmailForm.jsx","../../admin/src/pages/EmailTemplates/components/EmailTable.jsx","../../admin/src/pages/EmailTemplates/index.jsx"],"sourcesContent":["import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nconst schema = yup.object().shape({\n options: yup\n .object()\n .shape({\n from: yup\n .object()\n .shape({\n name: yup.string().required(translatedErrors.required),\n email: yup.string().email(translatedErrors.email).required(translatedErrors.required),\n })\n .required(),\n response_email: yup.string().email(translatedErrors.email),\n object: yup.string().required(translatedErrors.required),\n message: yup.string().required(translatedErrors.required),\n })\n .required(translatedErrors.required),\n});\n\nexport default schema;\n","import React from 'react';\n\nimport {\n Button,\n Grid,\n GridItem,\n ModalBody,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n Textarea,\n} from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport { Form, GenericInput } from '@strapi/helper-plugin';\nimport { Formik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\nimport schema from '../utils/schema';\n\nconst EmailForm = ({ template, onToggle, onSubmit }) => {\n const { formatMessage } = useIntl();\n\n return (\n <ModalLayout\n onClose={onToggle}\n labelledBy={`${formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}, ${formatMessage({ id: getTrad(template.display), defaultMessage: template.display })}`}\n >\n <ModalHeader>\n <Breadcrumbs\n label={`${formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}, ${formatMessage({\n id: getTrad(template.display),\n defaultMessage: template.display,\n })}`}\n >\n <Crumb>\n {formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}\n </Crumb>\n <Crumb isCurrent>\n {formatMessage({ id: getTrad(template.display), defaultMessage: template.display })}\n </Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <Formik\n onSubmit={onSubmit}\n initialValues={template}\n validateOnChange={false}\n validationSchema={schema}\n enableReinitialize\n >\n {({ errors, values, handleChange, isSubmitting }) => {\n return (\n <Form>\n <ModalBody>\n <Grid gap={5}>\n <GridItem col={6} s={12}>\n <GenericInput\n intlLabel={{\n id: getTrad('PopUpForm.Email.options.from.name.label'),\n defaultMessage: 'Shipper name',\n }}\n name=\"options.from.name\"\n onChange={handleChange}\n value={values.options.from.name}\n error={errors?.options?.from?.name}\n type=\"text\"\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <GenericInput\n intlLabel={{\n id: getTrad('PopUpForm.Email.options.from.email.label'),\n defaultMessage: 'Shipper email',\n }}\n name=\"options.from.email\"\n onChange={handleChange}\n value={values.options.from.email}\n error={errors?.options?.from?.email}\n type=\"text\"\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <GenericInput\n intlLabel={{\n id: getTrad('PopUpForm.Email.options.response_email.label'),\n defaultMessage: 'Response email',\n }}\n name=\"options.response_email\"\n onChange={handleChange}\n value={values.options.response_email}\n error={errors?.options?.response_email}\n type=\"text\"\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <GenericInput\n intlLabel={{\n id: getTrad('PopUpForm.Email.options.object.label'),\n defaultMessage: 'Subject',\n }}\n name=\"options.object\"\n onChange={handleChange}\n value={values.options.object}\n error={errors?.options?.object}\n type=\"text\"\n />\n </GridItem>\n <GridItem col={12} s={12}>\n <Textarea\n label={formatMessage({\n id: getTrad('PopUpForm.Email.options.message.label'),\n defaultMessage: 'Message',\n })}\n id=\"options.message\"\n onChange={handleChange}\n value={values.options.message}\n error={\n errors?.options?.message &&\n formatMessage({\n id: errors.options.message,\n defaultMessage: errors.options.message,\n })\n }\n />\n </GridItem>\n </Grid>\n </ModalBody>\n <ModalFooter\n startActions={\n <Button onClick={onToggle} variant=\"tertiary\">\n Cancel\n </Button>\n }\n endActions={\n <Button loading={isSubmitting} type=\"submit\">\n Finish\n </Button>\n }\n />\n </Form>\n );\n }}\n </Formik>\n </ModalLayout>\n );\n};\n\nEmailForm.propTypes = {\n template: PropTypes.shape({\n display: PropTypes.string,\n icon: PropTypes.string,\n options: PropTypes.shape({\n from: PropTypes.shape({\n name: PropTypes.string,\n email: PropTypes.string,\n }),\n message: PropTypes.string,\n object: PropTypes.string,\n response_email: PropTypes.string,\n }),\n }).isRequired,\n onSubmit: PropTypes.func.isRequired,\n onToggle: PropTypes.func.isRequired,\n};\n\nexport default EmailForm;\n","import React from 'react';\n\nimport {\n Icon,\n IconButton,\n Table,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { onRowClick, stopPropagation } from '@strapi/helper-plugin';\nimport { Check, Pencil, Refresh } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nconst EmailTable = ({ canUpdate, onEditClick }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Table colCount={3} rowCount={3}>\n <Thead>\n <Tr>\n <Th width=\"1%\">\n <VisuallyHidden>\n {formatMessage({\n id: getTrad('Email.template.table.icon.label'),\n defaultMessage: 'icon',\n })}\n </VisuallyHidden>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('Email.template.table.name.label'),\n defaultMessage: 'name',\n })}\n </Typography>\n </Th>\n <Th width=\"1%\">\n <VisuallyHidden>\n {formatMessage({\n id: getTrad('Email.template.table.action.label'),\n defaultMessage: 'action',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n <Tr {...onRowClick({ fn: () => onEditClick('reset_password') })}>\n <Td>\n <Icon>\n <Refresh\n aria-label={formatMessage({\n id: 'global.reset-password',\n defaultMessage: 'Reset password',\n })}\n />\n </Icon>\n </Td>\n <Td>\n <Typography>\n {formatMessage({\n id: 'global.reset-password',\n defaultMessage: 'Reset password',\n })}\n </Typography>\n </Td>\n <Td {...stopPropagation}>\n <IconButton\n onClick={() => onEditClick('reset_password')}\n label={formatMessage({\n id: getTrad('Email.template.form.edit.label'),\n defaultMessage: 'Edit a template',\n })}\n noBorder\n icon={canUpdate && <Pencil />}\n />\n </Td>\n </Tr>\n <Tr {...onRowClick({ fn: () => onEditClick('email_confirmation') })}>\n <Td>\n <Icon>\n <Check\n aria-label={formatMessage({\n id: getTrad('Email.template.email_confirmation'),\n defaultMessage: 'Email address confirmation',\n })}\n />\n </Icon>\n </Td>\n <Td>\n <Typography>\n {formatMessage({\n id: getTrad('Email.template.email_confirmation'),\n defaultMessage: 'Email address confirmation',\n })}\n </Typography>\n </Td>\n <Td {...stopPropagation}>\n <IconButton\n onClick={() => onEditClick('email_confirmation')}\n label={formatMessage({\n id: getTrad('Email.template.form.edit.label'),\n defaultMessage: 'Edit a template',\n })}\n noBorder\n icon={canUpdate && <Pencil />}\n />\n </Td>\n </Tr>\n </Tbody>\n </Table>\n );\n};\n\nEmailTable.propTypes = {\n canUpdate: PropTypes.bool.isRequired,\n onEditClick: PropTypes.func.isRequired,\n};\n\nexport default EmailTable;\n","import * as React from 'react';\n\nimport { ContentLayout, HeaderLayout, Main, useNotifyAT } from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport EmailForm from './components/EmailForm';\nimport EmailTable from './components/EmailTable';\n\nconst ProtectedEmailTemplatesPage = () => (\n <CheckPagePermissions permissions={PERMISSIONS.readEmailTemplates}>\n <EmailTemplatesPage />\n </CheckPagePermissions>\n);\n\nconst EmailTemplatesPage = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { notifyStatus } = useNotifyAT();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const queryClient = useQueryClient();\n const { get, put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n\n useFocusWhenNavigate();\n\n const [isModalOpen, setIsModalOpen] = React.useState(false);\n const [templateToEdit, setTemplateToEdit] = React.useState(null);\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canUpdate },\n } = useRBAC({ update: PERMISSIONS.updateEmailTemplates });\n\n const { isLoading: isLoadingData, data } = useQuery(\n ['users-permissions', 'email-templates'],\n async () => {\n const { data } = await get('/users-permissions/email-templates');\n\n return data;\n },\n {\n onSuccess() {\n notifyStatus(\n formatMessage({\n id: getTrad('Email.template.data.loaded'),\n defaultMessage: 'Email templates has been loaded',\n })\n );\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n }\n );\n\n const isLoading = isLoadingForPermissions || isLoadingData;\n\n const handleToggle = () => {\n setIsModalOpen((prev) => !prev);\n };\n\n const handleEditClick = (template) => {\n setTemplateToEdit(template);\n handleToggle();\n };\n\n const submitMutation = useMutation(\n (body) => put('/users-permissions/email-templates', { 'email-templates': body }),\n {\n async onSuccess() {\n await queryClient.invalidateQueries(['users-permissions', 'email-templates']);\n\n toggleNotification({\n type: 'success',\n message: { id: 'notification.success.saved', defaultMessage: 'Saved' },\n });\n\n trackUsage('didEditEmailTemplates');\n\n unlockApp();\n handleToggle();\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n\n unlockApp();\n },\n refetchActive: true,\n }\n );\n\n const handleSubmit = (body) => {\n lockApp();\n\n trackUsage('willEditEmailTemplates');\n\n const editedTemplates = { ...data, [templateToEdit]: body };\n submitMutation.mutate(editedTemplates);\n };\n\n if (isLoading) {\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle\n name={formatMessage({\n id: getTrad('HeaderNav.link.emailTemplates'),\n defaultMessage: 'Email templates',\n })}\n />\n <HeaderLayout\n title={formatMessage({\n id: getTrad('HeaderNav.link.emailTemplates'),\n defaultMessage: 'Email templates',\n })}\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n }\n\n return (\n <Main aria-busy={submitMutation.isLoading}>\n <SettingsPageTitle\n name={formatMessage({\n id: getTrad('HeaderNav.link.emailTemplates'),\n defaultMessage: 'Email templates',\n })}\n />\n <HeaderLayout\n title={formatMessage({\n id: getTrad('HeaderNav.link.emailTemplates'),\n defaultMessage: 'Email templates',\n })}\n />\n <ContentLayout>\n <EmailTable onEditClick={handleEditClick} canUpdate={canUpdate} />\n {isModalOpen && (\n <EmailForm\n template={data[templateToEdit]}\n onToggle={handleToggle}\n onSubmit={handleSubmit}\n />\n )}\n </ContentLayout>\n </Main>\n );\n};\n\nexport default ProtectedEmailTemplatesPage;\n"],"names":["yup","translatedErrors","useIntl","jsxs","ModalLayout","getTrad","jsx","ModalHeader","Breadcrumbs","Crumb","Formik","Form","ModalBody","Grid","GridItem","GenericInput","Textarea","ModalFooter","Button","PropTypes","Table","Thead","Tr","Th","VisuallyHidden","Typography","Tbody","onRowClick","Td","Icon","Refresh","stopPropagation","IconButton","Pencil","Check","CheckPagePermissions","PERMISSIONS","useTracking","useNotifyAT","useNotification","useOverlayBlocker","useQueryClient","useFetchClient","useAPIErrorHandler","useFocusWhenNavigate","React","useRBAC","useQuery","data","useMutation","Main","SettingsPageTitle","HeaderLayout","ContentLayout","LoadingIndicatorPage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAM,SAASA,eAAI,OAAQ,EAAC,MAAM;AAAA,EAChC,SAASA,eACN,OAAQ,EACR,MAAM;AAAA,IACL,MAAMA,eACH,OAAQ,EACR,MAAM;AAAA,MACL,MAAMA,eAAI,OAAM,EAAG,SAASC,aAAAA,iBAAiB,QAAQ;AAAA,MACrD,OAAOD,eAAI,OAAM,EAAG,MAAMC,8BAAiB,KAAK,EAAE,SAASA,aAAgB,iBAAC,QAAQ;AAAA,IAC9F,CAAS,EACA,SAAU;AAAA,IACb,gBAAgBD,eAAI,OAAM,EAAG,MAAMC,aAAAA,iBAAiB,KAAK;AAAA,IACzD,QAAQD,eAAI,OAAM,EAAG,SAASC,aAAAA,iBAAiB,QAAQ;AAAA,IACvD,SAASD,eAAI,OAAM,EAAG,SAASC,aAAAA,iBAAiB,QAAQ;AAAA,EAC9D,CAAK,EACA,SAASA,aAAgB,iBAAC,QAAQ;AACvC,CAAC;ACED,MAAM,YAAY,CAAC,EAAE,UAAU,UAAU,eAAe;AAChD,QAAA,EAAE,kBAAkBC,UAAAA;AAGxB,SAAAC,2BAAA;AAAA,IAACC,aAAA;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,YAAY,GAAG,cAAc;AAAA,QAC3B,IAAIC,cAAQ,uCAAuC;AAAA,QACnD,gBAAgB;AAAA,MACjB,CAAA,CAAC,KAAK,cAAc,EAAE,IAAIA,MAAAA,QAAQ,SAAS,OAAO,GAAG,gBAAgB,SAAS,QAAA,CAAS,CAAC;AAAA,MAEzF,UAAA;AAAA,QAAAC,+BAACC,aAAAA,aACC,EAAA,UAAAJ,2BAAA;AAAA,UAACK,GAAA;AAAA,UAAA;AAAA,YACC,OAAO,GAAG,cAAc;AAAA,cACtB,IAAIH,cAAQ,uCAAuC;AAAA,cACnD,gBAAgB;AAAA,YAAA,CACjB,CAAC,KAAK,cAAc;AAAA,cACnB,IAAIA,MAAAA,QAAQ,SAAS,OAAO;AAAA,cAC5B,gBAAgB,SAAS;AAAA,YAC1B,CAAA,CAAC;AAAA,YAEF,UAAA;AAAA,cAAAC,2BAAAA,IAACG,YACE,UAAc,cAAA;AAAA,gBACb,IAAIJ,cAAQ,uCAAuC;AAAA,gBACnD,gBAAgB;AAAA,cACjB,CAAA,GACH;AAAA,cACCC,2BAAA,IAAAG,GAAA,OAAA,EAAM,WAAS,MACb,wBAAc,EAAE,IAAIJ,MAAAA,QAAQ,SAAS,OAAO,GAAG,gBAAgB,SAAS,QAAS,CAAA,GACpF;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QACAC,2BAAA;AAAA,UAACI,OAAA;AAAA,UAAA;AAAA,YACC;AAAA,YACA,eAAe;AAAA,YACf,kBAAkB;AAAA,YAClB,kBAAkB;AAAA,YAClB,oBAAkB;AAAA,YAEjB,WAAC,EAAE,QAAQ,QAAQ,cAAc,mBAAmB;AACnD,qDACGC,mBACC,EAAA,UAAA;AAAA,gBAAAL,+BAACM,aAAAA,WACC,EAAA,UAAAT,2BAAAA,KAACU,aAAAA,MAAK,EAAA,KAAK,GACT,UAAA;AAAA,kBAAAP,2BAAA,IAACQ,aAAS,UAAA,EAAA,KAAK,GAAG,GAAG,IACnB,UAAAR,2BAAA;AAAA,oBAACS,aAAA;AAAA,oBAAA;AAAA,sBACC,WAAW;AAAA,wBACT,IAAIV,cAAQ,yCAAyC;AAAA,wBACrD,gBAAgB;AAAA,sBAClB;AAAA,sBACA,MAAK;AAAA,sBACL,UAAU;AAAA,sBACV,OAAO,OAAO,QAAQ,KAAK;AAAA,sBAC3B,OAAO,QAAQ,SAAS,MAAM;AAAA,sBAC9B,MAAK;AAAA,oBAAA;AAAA,kBAAA,GAET;AAAA,kBACCC,2BAAA,IAAAQ,aAAA,UAAA,EAAS,KAAK,GAAG,GAAG,IACnB,UAAAR,2BAAA;AAAA,oBAACS,aAAA;AAAA,oBAAA;AAAA,sBACC,WAAW;AAAA,wBACT,IAAIV,cAAQ,0CAA0C;AAAA,wBACtD,gBAAgB;AAAA,sBAClB;AAAA,sBACA,MAAK;AAAA,sBACL,UAAU;AAAA,sBACV,OAAO,OAAO,QAAQ,KAAK;AAAA,sBAC3B,OAAO,QAAQ,SAAS,MAAM;AAAA,sBAC9B,MAAK;AAAA,oBAAA;AAAA,kBAAA,GAET;AAAA,kBACCC,2BAAA,IAAAQ,aAAA,UAAA,EAAS,KAAK,GAAG,GAAG,IACnB,UAAAR,2BAAA;AAAA,oBAACS,aAAA;AAAA,oBAAA;AAAA,sBACC,WAAW;AAAA,wBACT,IAAIV,cAAQ,8CAA8C;AAAA,wBAC1D,gBAAgB;AAAA,sBAClB;AAAA,sBACA,MAAK;AAAA,sBACL,UAAU;AAAA,sBACV,OAAO,OAAO,QAAQ;AAAA,sBACtB,OAAO,QAAQ,SAAS;AAAA,sBACxB,MAAK;AAAA,oBAAA;AAAA,kBAAA,GAET;AAAA,kBACCC,2BAAA,IAAAQ,aAAA,UAAA,EAAS,KAAK,GAAG,GAAG,IACnB,UAAAR,2BAAA;AAAA,oBAACS,aAAA;AAAA,oBAAA;AAAA,sBACC,WAAW;AAAA,wBACT,IAAIV,cAAQ,sCAAsC;AAAA,wBAClD,gBAAgB;AAAA,sBAClB;AAAA,sBACA,MAAK;AAAA,sBACL,UAAU;AAAA,sBACV,OAAO,OAAO,QAAQ;AAAA,sBACtB,OAAO,QAAQ,SAAS;AAAA,sBACxB,MAAK;AAAA,oBAAA;AAAA,kBAAA,GAET;AAAA,kBACCC,2BAAA,IAAAQ,aAAA,UAAA,EAAS,KAAK,IAAI,GAAG,IACpB,UAAAR,2BAAA;AAAA,oBAACU,aAAA;AAAA,oBAAA;AAAA,sBACC,OAAO,cAAc;AAAA,wBACnB,IAAIX,cAAQ,uCAAuC;AAAA,wBACnD,gBAAgB;AAAA,sBAAA,CACjB;AAAA,sBACD,IAAG;AAAA,sBACH,UAAU;AAAA,sBACV,OAAO,OAAO,QAAQ;AAAA,sBACtB,OACE,QAAQ,SAAS,WACjB,cAAc;AAAA,wBACZ,IAAI,OAAO,QAAQ;AAAA,wBACnB,gBAAgB,OAAO,QAAQ;AAAA,sBAAA,CAChC;AAAA,oBAAA;AAAA,kBAAA,GAGP;AAAA,gBAAA,EAAA,CACF,EACF,CAAA;AAAA,gBACAC,2BAAA;AAAA,kBAACW,aAAA;AAAA,kBAAA;AAAA,oBACC,cACGX,2BAAAA,IAAAY,aAAA,QAAA,EAAO,SAAS,UAAU,SAAQ,YAAW,UAE9C,UAAA;AAAA,oBAEF,YACGZ,2BAAAA,IAAAY,aAAA,QAAA,EAAO,SAAS,cAAc,MAAK,UAAS,UAE7C,UAAA;AAAA,kBAAA;AAAA,gBAEJ;AAAA,cACF,EAAA,CAAA;AAAA,YAEJ;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,UAAU,YAAY;AAAA,EACpB,UAAUC,2BAAU,MAAM;AAAA,IACxB,SAASA,mBAAU,QAAA;AAAA,IACnB,MAAMA,mBAAU,QAAA;AAAA,IAChB,SAASA,2BAAU,MAAM;AAAA,MACvB,MAAMA,2BAAU,MAAM;AAAA,QACpB,MAAMA,mBAAU,QAAA;AAAA,QAChB,OAAOA,mBAAU,QAAA;AAAA,MAAA,CAClB;AAAA,MACD,SAASA,mBAAU,QAAA;AAAA,MACnB,QAAQA,mBAAU,QAAA;AAAA,MAClB,gBAAgBA,mBAAU,QAAA;AAAA,IAAA,CAC3B;AAAA,EACF,CAAA,EAAE;AAAA,EACH,UAAUA,mBAAAA,QAAU,KAAK;AAAA,EACzB,UAAUA,mBAAAA,QAAU,KAAK;AAC3B;ACxJA,MAAM,aAAa,CAAC,EAAE,WAAW,kBAAkB;AAC3C,QAAA,EAAE,kBAAkBjB,UAAAA;AAE1B,SACGC,2BAAAA,KAAAiB,aAAAA,OAAA,EAAM,UAAU,GAAG,UAAU,GAC5B,UAAA;AAAA,IAACd,2BAAA,IAAAe,aAAA,OAAA,EACC,0CAACC,aAAAA,IACC,EAAA,UAAA;AAAA,MAAAhB,+BAACiB,aAAAA,IAAG,EAAA,OAAM,MACR,UAAAjB,2BAAAA,IAACkB,+BACE,UAAc,cAAA;AAAA,QACb,IAAInB,cAAQ,iCAAiC;AAAA,QAC7C,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,MACAC,2BAAAA,IAACiB,mBACC,UAACjB,2BAAA,IAAAmB,aAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,QACb,IAAIpB,cAAQ,iCAAiC;AAAA,QAC7C,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,qCACCkB,aAAAA,IAAG,EAAA,OAAM,MACR,UAAAjB,2BAAAA,IAACkB,+BACE,UAAc,cAAA;AAAA,QACb,IAAInB,cAAQ,mCAAmC;AAAA,QAC/C,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,IAAA,EAAA,CACF,EACF,CAAA;AAAA,oCACCqB,aAAAA,OACC,EAAA,UAAA;AAAA,MAACvB,2BAAAA,KAAAmB,aAAA,IAAA,EAAI,GAAGK,aAAAA,WAAW,EAAE,IAAI,MAAM,YAAY,gBAAgB,GAAG,GAC5D,UAAA;AAAA,QAACrB,2BAAA,IAAAsB,aAAA,IAAA,EACC,yCAACC,aACC,MAAA,EAAA,UAAAvB,2BAAA;AAAA,UAACwB,MAAA;AAAA,UAAA;AAAA,YACC,cAAY,cAAc;AAAA,cACxB,IAAI;AAAA,cACJ,gBAAgB;AAAA,YAAA,CACjB;AAAA,UAAA;AAAA,WAEL,EACF,CAAA;AAAA,QACCxB,2BAAA,IAAAsB,aAAA,IAAA,EACC,UAACtB,2BAAA,IAAAmB,yBAAA,EACE,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,GACH,EACF,CAAA;AAAA,QACAnB,2BAAAA,IAACsB,aAAAA,IAAI,EAAA,GAAGG,aACN,iBAAA,UAAAzB,2BAAA;AAAA,UAAC0B,aAAA;AAAA,UAAA;AAAA,YACC,SAAS,MAAM,YAAY,gBAAgB;AAAA,YAC3C,OAAO,cAAc;AAAA,cACnB,IAAI3B,cAAQ,gCAAgC;AAAA,cAC5C,gBAAgB;AAAA,YAAA,CACjB;AAAA,YACD,UAAQ;AAAA,YACR,MAAM,aAAaC,+BAAC2B,MAAAA,QAAO,CAAA,CAAA;AAAA,UAAA;AAAA,QAAA,GAE/B;AAAA,MAAA,GACF;AAAA,MACA9B,2BAAAA,KAACmB,aAAI,IAAA,EAAA,GAAGK,aAAAA,WAAW,EAAE,IAAI,MAAM,YAAY,oBAAoB,GAAG,GAChE,UAAA;AAAA,QAACrB,2BAAA,IAAAsB,aAAA,IAAA,EACC,yCAACC,aACC,MAAA,EAAA,UAAAvB,2BAAA;AAAA,UAAC4B,MAAA;AAAA,UAAA;AAAA,YACC,cAAY,cAAc;AAAA,cACxB,IAAI7B,cAAQ,mCAAmC;AAAA,cAC/C,gBAAgB;AAAA,YAAA,CACjB;AAAA,UAAA;AAAA,WAEL,EACF,CAAA;AAAA,QACCC,2BAAA,IAAAsB,aAAA,IAAA,EACC,UAACtB,2BAAA,IAAAmB,yBAAA,EACE,UAAc,cAAA;AAAA,UACb,IAAIpB,cAAQ,mCAAmC;AAAA,UAC/C,gBAAgB;AAAA,QAAA,CACjB,GACH,EACF,CAAA;AAAA,QACAC,2BAAAA,IAACsB,aAAAA,IAAI,EAAA,GAAGG,aACN,iBAAA,UAAAzB,2BAAA;AAAA,UAAC0B,aAAA;AAAA,UAAA;AAAA,YACC,SAAS,MAAM,YAAY,oBAAoB;AAAA,YAC/C,OAAO,cAAc;AAAA,cACnB,IAAI3B,cAAQ,gCAAgC;AAAA,cAC5C,gBAAgB;AAAA,YAAA,CACjB;AAAA,YACD,UAAQ;AAAA,YACR,MAAM,aAAaC,+BAAC2B,MAAAA,QAAO,CAAA,CAAA;AAAA,UAAA;AAAA,QAAA,GAE/B;AAAA,MAAA,GACF;AAAA,IAAA,GACF;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,WAAW,YAAY;AAAA,EACrB,WAAWd,mBAAAA,QAAU,KAAK;AAAA,EAC1B,aAAaA,mBAAAA,QAAU,KAAK;AAC9B;ACrGM,MAAA,8BAA8B,MACjCb,2BAAAA,IAAA6B,aAAA,sBAAA,EAAqB,aAAaC,MAAAA,YAAY,oBAC7C,UAAC9B,2BAAA,IAAA,oBAAA,CAAA,CAAmB,EACtB,CAAA;AAGF,MAAM,qBAAqB,MAAM;AACzB,QAAA,EAAE,kBAAkBJ,UAAAA;AACpB,QAAA,EAAE,eAAemC,aAAAA;AACjB,QAAA,EAAE,iBAAiBC,aAAAA;AACzB,QAAM,qBAAqBC,aAAAA;AAC3B,QAAM,EAAE,SAAS,UAAU,IAAIC,aAAkB,kBAAA;AACjD,QAAM,cAAcC,WAAAA;AACpB,QAAM,EAAE,KAAK,IAAI,IAAIC,aAAe,eAAA;AAC9B,QAAA,EAAE,mBAAmBC,aAAAA;AAENC,eAAAA;AAErB,QAAM,CAAC,aAAa,cAAc,IAAIC,iBAAM,SAAS,KAAK;AAC1D,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,iBAAM,SAAS,IAAI;AAEzD,QAAA;AAAA,IACJ,WAAW;AAAA,IACX,gBAAgB,EAAE,UAAU;AAAA,MAC1BC,aAAQ,QAAA,EAAE,QAAQV,MAAAA,YAAY,qBAAsB,CAAA;AAExD,QAAM,EAAE,WAAW,eAAe,KAAS,IAAAW,WAAA;AAAA,IACzC,CAAC,qBAAqB,iBAAiB;AAAA,IACvC,YAAY;AACV,YAAM,EAAE,MAAAC,MAAAA,IAAS,MAAM,IAAI,oCAAoC;AAExDA,aAAAA;AAAAA,IACT;AAAA,IACA;AAAA,MACE,YAAY;AACV;AAAA,UACE,cAAc;AAAA,YACZ,IAAI3C,cAAQ,4BAA4B;AAAA,YACxC,gBAAgB;AAAA,UAAA,CACjB;AAAA,QAAA;AAAA,MAEL;AAAA,MACA,QAAQ,OAAO;AACM,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,eAAe,KAAK;AAAA,QAAA,CAC9B;AAAA,MACH;AAAA,IACF;AAAA,EAAA;AAGF,QAAM,YAAY,2BAA2B;AAE7C,QAAM,eAAe,MAAM;AACV,mBAAA,CAAC,SAAS,CAAC,IAAI;AAAA,EAAA;AAG1B,QAAA,kBAAkB,CAAC,aAAa;AACpC,sBAAkB,QAAQ;AACb;EAAA;AAGf,QAAM,iBAAiB4C,WAAA;AAAA,IACrB,CAAC,SAAS,IAAI,sCAAsC,EAAE,mBAAmB,MAAM;AAAA,IAC/E;AAAA,MACE,MAAM,YAAY;AAChB,cAAM,YAAY,kBAAkB,CAAC,qBAAqB,iBAAiB,CAAC;AAEzD,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,EAAE,IAAI,8BAA8B,gBAAgB,QAAQ;AAAA,QAAA,CACtE;AAED,mBAAW,uBAAuB;AAExB;AACG;MACf;AAAA,MACA,QAAQ,OAAO;AACM,2BAAA;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,eAAe,KAAK;AAAA,QAAA,CAC9B;AAES;MACZ;AAAA,MACA,eAAe;AAAA,IACjB;AAAA,EAAA;AAGI,QAAA,eAAe,CAAC,SAAS;AACrB;AAER,eAAW,wBAAwB;AAEnC,UAAM,kBAAkB,EAAE,GAAG,MAAM,CAAC,cAAc,GAAG,KAAK;AAC1D,mBAAe,OAAO,eAAe;AAAA,EAAA;AAGvC,MAAI,WAAW;AAEX,WAAA9C,2BAAA,KAAC+C,aAAK,MAAA,EAAA,aAAU,QACd,UAAA;AAAA,MAAA5C,2BAAA;AAAA,QAAC6C,aAAA;AAAA,QAAA;AAAA,UACC,MAAM,cAAc;AAAA,YAClB,IAAI9C,cAAQ,+BAA+B;AAAA,YAC3C,gBAAgB;AAAA,UAAA,CACjB;AAAA,QAAA;AAAA,MACH;AAAA,MACAC,2BAAA;AAAA,QAAC8C,aAAA;AAAA,QAAA;AAAA,UACC,OAAO,cAAc;AAAA,YACnB,IAAI/C,cAAQ,+BAA+B;AAAA,YAC3C,gBAAgB;AAAA,UAAA,CACjB;AAAA,QAAA;AAAA,MACH;AAAA,MACCC,2BAAA,IAAA+C,aAAA,eAAA,EACC,UAAC/C,2BAAA,IAAAgD,aAAA,sBAAA,CAAqB,CAAA,GACxB;AAAA,IACF,EAAA,CAAA;AAAA,EAEJ;AAEA,SACGnD,2BAAAA,KAAA+C,aAAAA,MAAA,EAAK,aAAW,eAAe,WAC9B,UAAA;AAAA,IAAA5C,2BAAA;AAAA,MAAC6C,aAAA;AAAA,MAAA;AAAA,QACC,MAAM,cAAc;AAAA,UAClB,IAAI9C,cAAQ,+BAA+B;AAAA,UAC3C,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IACH;AAAA,IACAC,2BAAA;AAAA,MAAC8C,aAAA;AAAA,MAAA;AAAA,QACC,OAAO,cAAc;AAAA,UACnB,IAAI/C,cAAQ,+BAA+B;AAAA,UAC3C,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IACH;AAAA,oCACCgD,aAAAA,eACC,EAAA,UAAA;AAAA,MAAC/C,2BAAAA,IAAA,YAAA,EAAW,aAAa,iBAAiB,UAAsB,CAAA;AAAA,MAC/D,eACCA,2BAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAU,KAAK,cAAc;AAAA,UAC7B,UAAU;AAAA,UACV,UAAU;AAAA,QAAA;AAAA,MACZ;AAAA,IAAA,GAEJ;AAAA,EACF,EAAA,CAAA;AAEJ;;"}