unleash-server 7.5.1 → 7.6.2

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 (466) hide show
  1. package/dist/lib/addons/feature-event-formatter-md-events.d.ts.map +1 -1
  2. package/dist/lib/addons/feature-event-formatter-md-events.js +16 -1
  3. package/dist/lib/addons/feature-event-formatter-md-events.js.map +1 -1
  4. package/dist/lib/addons/slack-app-definition.d.ts.map +1 -1
  5. package/dist/lib/addons/slack-app-definition.js +4 -1
  6. package/dist/lib/addons/slack-app-definition.js.map +1 -1
  7. package/dist/lib/app.d.ts.map +1 -1
  8. package/dist/lib/app.js +11 -25
  9. package/dist/lib/app.js.map +1 -1
  10. package/dist/lib/create-config.d.ts.map +1 -1
  11. package/dist/lib/create-config.js +3 -0
  12. package/dist/lib/create-config.js.map +1 -1
  13. package/dist/lib/db/api-token-store.d.ts +4 -1
  14. package/dist/lib/db/api-token-store.d.ts.map +1 -1
  15. package/dist/lib/db/api-token-store.js +17 -3
  16. package/dist/lib/db/api-token-store.js.map +1 -1
  17. package/dist/lib/error/bad-gateway-error.d.ts +7 -0
  18. package/dist/lib/error/bad-gateway-error.d.ts.map +1 -0
  19. package/dist/lib/error/bad-gateway-error.js +9 -0
  20. package/dist/lib/error/bad-gateway-error.js.map +1 -0
  21. package/dist/lib/error/gateway-timeout-error.d.ts +7 -0
  22. package/dist/lib/error/gateway-timeout-error.d.ts.map +1 -0
  23. package/dist/lib/error/gateway-timeout-error.js +9 -0
  24. package/dist/lib/error/gateway-timeout-error.js.map +1 -0
  25. package/dist/lib/error/index.d.ts +3 -1
  26. package/dist/lib/error/index.d.ts.map +1 -1
  27. package/dist/lib/error/index.js +3 -1
  28. package/dist/lib/error/index.js.map +1 -1
  29. package/dist/lib/error/unleash-error.d.ts +1 -1
  30. package/dist/lib/error/unleash-error.d.ts.map +1 -1
  31. package/dist/lib/error/unleash-error.js +2 -0
  32. package/dist/lib/error/unleash-error.js.map +1 -1
  33. package/dist/lib/events/index.d.ts +4 -1
  34. package/dist/lib/events/index.d.ts.map +1 -1
  35. package/dist/lib/events/index.js +6 -0
  36. package/dist/lib/events/index.js.map +1 -1
  37. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.d.ts.map +1 -1
  38. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.js +5 -0
  39. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.js.map +1 -1
  40. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.d.ts +2 -0
  41. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.d.ts.map +1 -0
  42. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.js +53 -0
  43. package/dist/lib/features/client-feature-toggles/client-feature-toggle-store.test.js.map +1 -0
  44. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.d.ts.map +1 -1
  45. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.js +5 -0
  46. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.js.map +1 -1
  47. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.d.ts +2 -0
  48. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.d.ts.map +1 -0
  49. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.js +59 -0
  50. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-read-model.test.js.map +1 -0
  51. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.d.ts +9 -3
  52. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.d.ts.map +1 -1
  53. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.js +165 -92
  54. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.js.map +1 -1
  55. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.test.js +475 -1
  56. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.test.js.map +1 -1
  57. package/dist/lib/features/client-feature-toggles/delta/delta-cache.d.ts.map +1 -1
  58. package/dist/lib/features/client-feature-toggles/delta/delta-cache.js +3 -0
  59. package/dist/lib/features/client-feature-toggles/delta/delta-cache.js.map +1 -1
  60. package/dist/lib/features/client-feature-toggles/delta/delta-cache.test.js +15 -0
  61. package/dist/lib/features/client-feature-toggles/delta/delta-cache.test.js.map +1 -1
  62. package/dist/lib/features/client-feature-toggles/delta/visible-revision.d.ts +3 -0
  63. package/dist/lib/features/client-feature-toggles/delta/visible-revision.d.ts.map +1 -0
  64. package/dist/lib/features/client-feature-toggles/delta/visible-revision.js +16 -0
  65. package/dist/lib/features/client-feature-toggles/delta/visible-revision.js.map +1 -0
  66. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.d.ts +2 -0
  67. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.d.ts.map +1 -0
  68. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.js +25 -0
  69. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.js.map +1 -0
  70. package/dist/lib/features/context/context.d.ts +0 -1
  71. package/dist/lib/features/context/context.d.ts.map +1 -1
  72. package/dist/lib/features/context/context.js +7 -15
  73. package/dist/lib/features/context/context.js.map +1 -1
  74. package/dist/lib/features/edgetokens/edge-token-store.d.ts +2 -0
  75. package/dist/lib/features/edgetokens/edge-token-store.d.ts.map +1 -1
  76. package/dist/lib/features/edgetokens/edge-token-store.js +20 -0
  77. package/dist/lib/features/edgetokens/edge-token-store.js.map +1 -1
  78. package/dist/lib/features/edgetokens/fake-edge-token-store.d.ts +2 -0
  79. package/dist/lib/features/edgetokens/fake-edge-token-store.d.ts.map +1 -1
  80. package/dist/lib/features/edgetokens/fake-edge-token-store.js +6 -0
  81. package/dist/lib/features/edgetokens/fake-edge-token-store.js.map +1 -1
  82. package/dist/lib/features/events/event-store.d.ts +2 -4
  83. package/dist/lib/features/events/event-store.d.ts.map +1 -1
  84. package/dist/lib/features/events/event-store.js +1 -4
  85. package/dist/lib/features/events/event-store.js.map +1 -1
  86. package/dist/lib/features/feature-search/feature-search-controller.d.ts.map +1 -1
  87. package/dist/lib/features/feature-search/feature-search-controller.js +2 -1
  88. package/dist/lib/features/feature-search/feature-search-controller.js.map +1 -1
  89. package/dist/lib/features/feature-search/feature-search-service.d.ts.map +1 -1
  90. package/dist/lib/features/feature-search/feature-search-service.js +5 -0
  91. package/dist/lib/features/feature-search/feature-search-service.js.map +1 -1
  92. package/dist/lib/features/feature-search/feature-search-store.d.ts.map +1 -1
  93. package/dist/lib/features/feature-search/feature-search-store.js +17 -1
  94. package/dist/lib/features/feature-search/feature-search-store.js.map +1 -1
  95. package/dist/lib/features/feature-search/feature.search.e2e.test.js +56 -1
  96. package/dist/lib/features/feature-search/feature.search.e2e.test.js.map +1 -1
  97. package/dist/lib/features/feature-toggle/configuration-revision-service.d.ts +1 -2
  98. package/dist/lib/features/feature-toggle/configuration-revision-service.d.ts.map +1 -1
  99. package/dist/lib/features/feature-toggle/configuration-revision-service.js +2 -10
  100. package/dist/lib/features/feature-toggle/configuration-revision-service.js.map +1 -1
  101. package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.d.ts.map +1 -1
  102. package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.js +3 -2
  103. package/dist/lib/features/feature-toggle/feature-toggle-strategies-store.js.map +1 -1
  104. package/dist/lib/features/feature-toggle/types/feature-toggle-strategies-store-type.d.ts +1 -0
  105. package/dist/lib/features/feature-toggle/types/feature-toggle-strategies-store-type.d.ts.map +1 -1
  106. package/dist/lib/features/frontend-api/frontend-api-service.d.ts.map +1 -1
  107. package/dist/lib/features/frontend-api/frontend-api-service.js +8 -0
  108. package/dist/lib/features/frontend-api/frontend-api-service.js.map +1 -1
  109. package/dist/lib/features/frontend-api/frontend-api.e2e.test.js +43 -0
  110. package/dist/lib/features/frontend-api/frontend-api.e2e.test.js.map +1 -1
  111. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.d.ts +3 -0
  112. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.d.ts.map +1 -0
  113. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.js +1071 -0
  114. package/dist/lib/features/frontend-api/frontend-api.middleware.e2e.test.js.map +1 -0
  115. package/dist/lib/features/index.d.ts +1 -0
  116. package/dist/lib/features/index.d.ts.map +1 -1
  117. package/dist/lib/features/index.js +1 -0
  118. package/dist/lib/features/index.js.map +1 -1
  119. package/dist/lib/features/instance-stats/instance-stats-service.d.ts.map +1 -1
  120. package/dist/lib/features/instance-stats/instance-stats-service.js +1 -3
  121. package/dist/lib/features/instance-stats/instance-stats-service.js.map +1 -1
  122. package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.js +12 -12
  123. package/dist/lib/features/metrics/impact/impact-metrics.e2e.test.js.map +1 -1
  124. package/dist/lib/features/metrics/impact/metrics-translator.d.ts +5 -2
  125. package/dist/lib/features/metrics/impact/metrics-translator.d.ts.map +1 -1
  126. package/dist/lib/features/metrics/impact/metrics-translator.js +86 -102
  127. package/dist/lib/features/metrics/impact/metrics-translator.js.map +1 -1
  128. package/dist/lib/features/metrics/impact/metrics-translator.test.js +70 -112
  129. package/dist/lib/features/metrics/impact/metrics-translator.test.js.map +1 -1
  130. package/dist/lib/features/project/createProjectService.d.ts.map +1 -1
  131. package/dist/lib/features/project/createProjectService.js +6 -0
  132. package/dist/lib/features/project/createProjectService.js.map +1 -1
  133. package/dist/lib/features/project/project-service.d.ts +2 -1
  134. package/dist/lib/features/project/project-service.d.ts.map +1 -1
  135. package/dist/lib/features/project/project-service.js +3 -1
  136. package/dist/lib/features/project/project-service.js.map +1 -1
  137. package/dist/lib/features/project-environments/project-environments.e2e.test.js +37 -0
  138. package/dist/lib/features/project-environments/project-environments.e2e.test.js.map +1 -1
  139. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.d.ts.map +1 -1
  140. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.js +2 -5
  141. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.js.map +1 -1
  142. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.js +2 -2
  143. package/dist/lib/features/release-plans/release-plan-milestone-strategy-service.test.js.map +1 -1
  144. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.d.ts +2 -1
  145. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.d.ts.map +1 -1
  146. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.js +20 -3
  147. package/dist/lib/features/release-plans/release-plan-milestone-strategy-store.js.map +1 -1
  148. package/dist/lib/features/release-plans/release-plan-milestone-strategy.d.ts +2 -0
  149. package/dist/lib/features/release-plans/release-plan-milestone-strategy.d.ts.map +1 -1
  150. package/dist/lib/features/release-plans/release-plan-store.d.ts.map +1 -1
  151. package/dist/lib/features/release-plans/release-plan-store.js +2 -0
  152. package/dist/lib/features/release-plans/release-plan-store.js.map +1 -1
  153. package/dist/lib/features/release-plans/release-plan-template-store.d.ts.map +1 -1
  154. package/dist/lib/features/release-plans/release-plan-template-store.js +4 -3
  155. package/dist/lib/features/release-plans/release-plan-template-store.js.map +1 -1
  156. package/dist/lib/features/release-plans/release-plan-template-store.test.d.ts +2 -0
  157. package/dist/lib/features/release-plans/release-plan-template-store.test.d.ts.map +1 -0
  158. package/dist/lib/features/release-plans/release-plan-template-store.test.js +47 -0
  159. package/dist/lib/features/release-plans/release-plan-template-store.test.js.map +1 -0
  160. package/dist/lib/metric-events.d.ts +3 -2
  161. package/dist/lib/metric-events.d.ts.map +1 -1
  162. package/dist/lib/metric-events.js +2 -1
  163. package/dist/lib/metric-events.js.map +1 -1
  164. package/dist/lib/middleware/api-token-middleware.d.ts.map +1 -1
  165. package/dist/lib/middleware/api-token-middleware.js +1 -5
  166. package/dist/lib/middleware/api-token-middleware.js.map +1 -1
  167. package/dist/lib/middleware/api-token-middleware.test.js +35 -25
  168. package/dist/lib/middleware/api-token-middleware.test.js.map +1 -1
  169. package/dist/lib/middleware/backend-token-middleware.d.ts +5 -0
  170. package/dist/lib/middleware/backend-token-middleware.d.ts.map +1 -0
  171. package/dist/lib/middleware/backend-token-middleware.js +61 -0
  172. package/dist/lib/middleware/backend-token-middleware.js.map +1 -0
  173. package/dist/lib/middleware/backend-token-middleware.test.d.ts +2 -0
  174. package/dist/lib/middleware/backend-token-middleware.test.d.ts.map +1 -0
  175. package/dist/lib/middleware/backend-token-middleware.test.js +73 -0
  176. package/dist/lib/middleware/backend-token-middleware.test.js.map +1 -0
  177. package/dist/lib/middleware/conditional-middleware.d.ts +20 -0
  178. package/dist/lib/middleware/conditional-middleware.d.ts.map +1 -1
  179. package/dist/lib/middleware/conditional-middleware.js +26 -0
  180. package/dist/lib/middleware/conditional-middleware.js.map +1 -1
  181. package/dist/lib/middleware/conditional-middleware.test.d.ts +2 -0
  182. package/dist/lib/middleware/conditional-middleware.test.d.ts.map +1 -0
  183. package/dist/lib/middleware/conditional-middleware.test.js +31 -0
  184. package/dist/lib/middleware/conditional-middleware.test.js.map +1 -0
  185. package/dist/lib/middleware/frontend-token-middleware.d.ts +5 -0
  186. package/dist/lib/middleware/frontend-token-middleware.d.ts.map +1 -0
  187. package/dist/lib/middleware/frontend-token-middleware.js +61 -0
  188. package/dist/lib/middleware/frontend-token-middleware.js.map +1 -0
  189. package/dist/lib/middleware/user-token-client-api-logger-middleware.js +1 -1
  190. package/dist/lib/middleware/user-token-client-api-logger-middleware.js.map +1 -1
  191. package/dist/lib/openapi/spec/event-schema.d.ts +1 -1
  192. package/dist/lib/openapi/spec/event-search-response-schema.d.ts +1 -1
  193. package/dist/lib/openapi/spec/events-schema.d.ts +1 -1
  194. package/dist/lib/openapi/spec/export-result-schema.d.ts +1018 -100
  195. package/dist/lib/openapi/spec/export-result-schema.d.ts.map +1 -1
  196. package/dist/lib/openapi/spec/export-result-schema.js +4 -2
  197. package/dist/lib/openapi/spec/export-result-schema.js.map +1 -1
  198. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.d.ts +168 -0
  199. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.d.ts.map +1 -0
  200. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.js +66 -0
  201. package/dist/lib/openapi/spec/feature-environment-safeguard-schema.js.map +1 -0
  202. package/dist/lib/openapi/spec/feature-environment-schema.d.ts +265 -7
  203. package/dist/lib/openapi/spec/feature-environment-schema.d.ts.map +1 -1
  204. package/dist/lib/openapi/spec/feature-environment-schema.js +13 -0
  205. package/dist/lib/openapi/spec/feature-environment-schema.js.map +1 -1
  206. package/dist/lib/openapi/spec/feature-events-schema.d.ts +1 -1
  207. package/dist/lib/openapi/spec/feature-schema.d.ts +475 -16
  208. package/dist/lib/openapi/spec/feature-schema.d.ts.map +1 -1
  209. package/dist/lib/openapi/spec/feature-schema.js +4 -2
  210. package/dist/lib/openapi/spec/feature-schema.js.map +1 -1
  211. package/dist/lib/openapi/spec/feature-search-environment-schema.d.ts +688 -14
  212. package/dist/lib/openapi/spec/feature-search-environment-schema.d.ts.map +1 -1
  213. package/dist/lib/openapi/spec/feature-search-environment-schema.js +8 -0
  214. package/dist/lib/openapi/spec/feature-search-environment-schema.js.map +1 -1
  215. package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts +10 -1
  216. package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts.map +1 -1
  217. package/dist/lib/openapi/spec/feature-search-query-parameters.js +10 -0
  218. package/dist/lib/openapi/spec/feature-search-query-parameters.js.map +1 -1
  219. package/dist/lib/openapi/spec/feature-search-response-schema.d.ts +8097 -155
  220. package/dist/lib/openapi/spec/feature-search-response-schema.d.ts.map +1 -1
  221. package/dist/lib/openapi/spec/feature-search-response-schema.js +22 -0
  222. package/dist/lib/openapi/spec/feature-search-response-schema.js.map +1 -1
  223. package/dist/lib/openapi/spec/health-overview-schema.d.ts +1336 -210
  224. package/dist/lib/openapi/spec/health-overview-schema.d.ts.map +1 -1
  225. package/dist/lib/openapi/spec/health-overview-schema.js +8 -0
  226. package/dist/lib/openapi/spec/health-overview-schema.js.map +1 -1
  227. package/dist/lib/openapi/spec/health-report-schema.d.ts +1336 -210
  228. package/dist/lib/openapi/spec/health-report-schema.d.ts.map +1 -1
  229. package/dist/lib/openapi/spec/import-toggles-schema.d.ts +2 -2
  230. package/dist/lib/openapi/spec/import-toggles-schema.d.ts.map +1 -1
  231. package/dist/lib/openapi/spec/import-toggles-schema.js +4 -2
  232. package/dist/lib/openapi/spec/import-toggles-schema.js.map +1 -1
  233. package/dist/lib/openapi/spec/index.d.ts +4 -2
  234. package/dist/lib/openapi/spec/index.d.ts.map +1 -1
  235. package/dist/lib/openapi/spec/index.js +4 -2
  236. package/dist/lib/openapi/spec/index.js.map +1 -1
  237. package/dist/lib/openapi/spec/integration-event-schema.d.ts +1 -1
  238. package/dist/lib/openapi/spec/integration-events-schema.d.ts +2 -2
  239. package/dist/lib/openapi/spec/metric-query-schema.d.ts +6 -0
  240. package/dist/lib/openapi/spec/metric-query-schema.d.ts.map +1 -1
  241. package/dist/lib/openapi/spec/metric-query-schema.js +6 -0
  242. package/dist/lib/openapi/spec/metric-query-schema.js.map +1 -1
  243. package/dist/lib/openapi/spec/profile-schema.d.ts +475 -16
  244. package/dist/lib/openapi/spec/profile-schema.d.ts.map +1 -1
  245. package/dist/lib/openapi/spec/project-overview-schema.d.ts +1336 -210
  246. package/dist/lib/openapi/spec/project-overview-schema.d.ts.map +1 -1
  247. package/dist/lib/openapi/spec/project-overview-schema.js +8 -0
  248. package/dist/lib/openapi/spec/project-overview-schema.js.map +1 -1
  249. package/dist/lib/openapi/spec/release-plan-milestone-schema.d.ts +1 -1
  250. package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.d.ts +1 -1
  251. package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.js +1 -1
  252. package/dist/lib/openapi/spec/release-plan-milestone-strategy-schema.js.map +1 -1
  253. package/dist/lib/openapi/spec/{safeguard-schema.d.ts → release-plan-safeguard-schema.d.ts} +16 -4
  254. package/dist/lib/openapi/spec/release-plan-safeguard-schema.d.ts.map +1 -0
  255. package/dist/lib/openapi/spec/{safeguard-schema.js → release-plan-safeguard-schema.js} +3 -3
  256. package/dist/lib/openapi/spec/release-plan-safeguard-schema.js.map +1 -0
  257. package/dist/lib/openapi/spec/release-plan-schema.d.ts +23 -5
  258. package/dist/lib/openapi/spec/release-plan-schema.d.ts.map +1 -1
  259. package/dist/lib/openapi/spec/release-plan-schema.js +3 -3
  260. package/dist/lib/openapi/spec/release-plan-schema.js.map +1 -1
  261. package/dist/lib/openapi/spec/release-plan-template-schema.d.ts +2 -2
  262. package/dist/lib/openapi/spec/release-plan-templates-schema.d.ts +2897 -0
  263. package/dist/lib/openapi/spec/release-plan-templates-schema.d.ts.map +1 -0
  264. package/dist/lib/openapi/spec/release-plan-templates-schema.js +29 -0
  265. package/dist/lib/openapi/spec/release-plan-templates-schema.js.map +1 -0
  266. package/dist/lib/openapi/spec/release-plans-schema.d.ts +45 -9
  267. package/dist/lib/openapi/spec/release-plans-schema.d.ts.map +1 -1
  268. package/dist/lib/openapi/spec/release-plans-schema.js +2 -2
  269. package/dist/lib/openapi/spec/release-plans-schema.js.map +1 -1
  270. package/dist/lib/openapi/spec/search-features-schema.d.ts +13694 -5078
  271. package/dist/lib/openapi/spec/search-features-schema.d.ts.map +1 -1
  272. package/dist/lib/routes/admin-api/api-token.js +1 -1
  273. package/dist/lib/routes/admin-api/api-token.js.map +1 -1
  274. package/dist/lib/routes/admin-api/project/api-token.js +1 -1
  275. package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
  276. package/dist/lib/routes/logout.js +1 -1
  277. package/dist/lib/routes/logout.js.map +1 -1
  278. package/dist/lib/routes/logout.test.js +4 -4
  279. package/dist/lib/routes/logout.test.js.map +1 -1
  280. package/dist/lib/schema/api-token-schema.d.ts.map +1 -1
  281. package/dist/lib/schema/api-token-schema.js +1 -0
  282. package/dist/lib/schema/api-token-schema.js.map +1 -1
  283. package/dist/lib/server-impl.d.ts +5 -5
  284. package/dist/lib/server-impl.d.ts.map +1 -1
  285. package/dist/lib/server-impl.js +3 -3
  286. package/dist/lib/server-impl.js.map +1 -1
  287. package/dist/lib/services/api-token-service.d.ts +2 -2
  288. package/dist/lib/services/api-token-service.d.ts.map +1 -1
  289. package/dist/lib/services/api-token-service.js +5 -3
  290. package/dist/lib/services/api-token-service.js.map +1 -1
  291. package/dist/lib/services/api-token-service.test.js +5 -4
  292. package/dist/lib/services/api-token-service.test.js.map +1 -1
  293. package/dist/lib/services/edge-service.d.ts +1 -0
  294. package/dist/lib/services/edge-service.d.ts.map +1 -1
  295. package/dist/lib/services/edge-service.js +5 -2
  296. package/dist/lib/services/edge-service.js.map +1 -1
  297. package/dist/lib/services/user-service.d.ts.map +1 -1
  298. package/dist/lib/services/user-service.js +0 -4
  299. package/dist/lib/services/user-service.js.map +1 -1
  300. package/dist/lib/types/experimental.d.ts +1 -1
  301. package/dist/lib/types/experimental.d.ts.map +1 -1
  302. package/dist/lib/types/experimental.js +7 -8
  303. package/dist/lib/types/experimental.js.map +1 -1
  304. package/dist/lib/types/model.d.ts +2 -1
  305. package/dist/lib/types/model.d.ts.map +1 -1
  306. package/dist/lib/types/model.js.map +1 -1
  307. package/dist/lib/types/option.d.ts +2 -0
  308. package/dist/lib/types/option.d.ts.map +1 -1
  309. package/dist/lib/types/stores/api-token-store.d.ts +2 -1
  310. package/dist/lib/types/stores/api-token-store.d.ts.map +1 -1
  311. package/dist/lib/types/stores/edge-store.d.ts +2 -0
  312. package/dist/lib/types/stores/edge-store.d.ts.map +1 -1
  313. package/dist/lib/types/stores/event-store.d.ts +1 -1
  314. package/dist/lib/types/stores/event-store.d.ts.map +1 -1
  315. package/dist/lib/util/clone-db-config.d.ts +3 -0
  316. package/dist/lib/util/clone-db-config.d.ts.map +1 -0
  317. package/dist/lib/util/clone-db-config.js +18 -0
  318. package/dist/lib/util/clone-db-config.js.map +1 -0
  319. package/dist/lib/util/clone-db-config.test.d.ts +2 -0
  320. package/dist/lib/util/clone-db-config.test.d.ts.map +1 -0
  321. package/dist/lib/util/clone-db-config.test.js +40 -0
  322. package/dist/lib/util/clone-db-config.test.js.map +1 -0
  323. package/dist/lib/util/db-lock.d.ts.map +1 -1
  324. package/dist/lib/util/db-lock.js +2 -3
  325. package/dist/lib/util/db-lock.js.map +1 -1
  326. package/dist/lib/util/sortStrategies.d.ts +1 -1
  327. package/dist/lib/util/sortStrategies.d.ts.map +1 -1
  328. package/dist/lib/util/sortStrategies.js +6 -2
  329. package/dist/lib/util/sortStrategies.js.map +1 -1
  330. package/dist/lib/util/sortStrategies.test.js +21 -0
  331. package/dist/lib/util/sortStrategies.test.js.map +1 -1
  332. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.d.ts +3 -0
  333. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.d.ts.map +1 -0
  334. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.js +15 -0
  335. package/dist/migrations/20260309125735-drop-cascade-for-edge-api-token.js.map +1 -0
  336. package/dist/migrations/20260310134100-split-safeguards-table.d.ts +3 -0
  337. package/dist/migrations/20260310134100-split-safeguards-table.d.ts.map +1 -0
  338. package/dist/migrations/20260310134100-split-safeguards-table.js +31 -0
  339. package/dist/migrations/20260310134100-split-safeguards-table.js.map +1 -0
  340. package/dist/migrations/20260311073041-migrate-safeguards-data.d.ts +3 -0
  341. package/dist/migrations/20260311073041-migrate-safeguards-data.d.ts.map +1 -0
  342. package/dist/migrations/20260311073041-migrate-safeguards-data.js +42 -0
  343. package/dist/migrations/20260311073041-migrate-safeguards-data.js.map +1 -0
  344. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.d.ts +3 -0
  345. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.d.ts.map +1 -0
  346. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.js +31 -0
  347. package/dist/migrations/20260312100000-release-plans-fix-cascade-on-env-disconnect.js.map +1 -0
  348. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.d.ts +3 -0
  349. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.d.ts.map +1 -0
  350. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.js +8 -0
  351. package/dist/migrations/20260316113111-update-memory-usage-to-big-int.js.map +1 -0
  352. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.d.ts +3 -0
  353. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.d.ts.map +1 -0
  354. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.js +54 -0
  355. package/dist/migrations/20260316140000-safeguards-fix-cascade-on-env-disconnect.js.map +1 -0
  356. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.d.ts +3 -0
  357. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.d.ts.map +1 -0
  358. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.js +21 -0
  359. package/dist/migrations/20260317140000-safeguards-drop-project-not-null.js.map +1 -0
  360. package/dist/migrations/20260318100000-safeguards-drop-project-column.d.ts +3 -0
  361. package/dist/migrations/20260318100000-safeguards-drop-project-column.d.ts.map +1 -0
  362. package/dist/migrations/20260318100000-safeguards-drop-project-column.js +14 -0
  363. package/dist/migrations/20260318100000-safeguards-drop-project-column.js.map +1 -0
  364. package/dist/migrations/20260406132537-user-access-requests.d.ts +3 -0
  365. package/dist/migrations/20260406132537-user-access-requests.d.ts.map +1 -0
  366. package/dist/migrations/20260406132537-user-access-requests.js +16 -0
  367. package/dist/migrations/20260406132537-user-access-requests.js.map +1 -0
  368. package/dist/migrations/20260406161629-user-access-requests-unique-email.d.ts +3 -0
  369. package/dist/migrations/20260406161629-user-access-requests-unique-email.d.ts.map +1 -0
  370. package/dist/migrations/20260406161629-user-access-requests-unique-email.js +14 -0
  371. package/dist/migrations/20260406161629-user-access-requests-unique-email.js.map +1 -0
  372. package/dist/migrator.d.ts.map +1 -1
  373. package/dist/migrator.js +4 -3
  374. package/dist/migrator.js.map +1 -1
  375. package/dist/server-dev.js +4 -7
  376. package/dist/server-dev.js.map +1 -1
  377. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js +5 -5
  378. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js.map +1 -1
  379. package/dist/test/e2e/api/admin/api-token.e2e.test.js +3 -2
  380. package/dist/test/e2e/api/admin/api-token.e2e.test.js.map +1 -1
  381. package/dist/test/e2e/api/admin/conditional-middleware.e2e.test.js +106 -38
  382. package/dist/test/e2e/api/admin/conditional-middleware.e2e.test.js.map +1 -1
  383. package/dist/test/e2e/api/admin/context-api-include-query-params.e2e.test.js +1 -7
  384. package/dist/test/e2e/api/admin/context-api-include-query-params.e2e.test.js.map +1 -1
  385. package/dist/test/e2e/api/admin/project/api-token.e2e.test.js +2 -1
  386. package/dist/test/e2e/api/admin/project/api-token.e2e.test.js.map +1 -1
  387. package/dist/test/e2e/api/admin/project/project.api.tokens.e2e.test.js +5 -5
  388. package/dist/test/e2e/api/admin/project/project.api.tokens.e2e.test.js.map +1 -1
  389. package/dist/test/e2e/api/admin/project-context.e2e.test.js +1 -7
  390. package/dist/test/e2e/api/admin/project-context.e2e.test.js.map +1 -1
  391. package/dist/test/e2e/api/client/feature.token.access.e2e.test.js +34 -1
  392. package/dist/test/e2e/api/client/feature.token.access.e2e.test.js.map +1 -1
  393. package/dist/test/e2e/services/api-token-service.e2e.test.js +21 -6
  394. package/dist/test/e2e/services/api-token-service.e2e.test.js.map +1 -1
  395. package/dist/test/e2e/services/edge-service.e2e.test.js +4 -3
  396. package/dist/test/e2e/services/edge-service.e2e.test.js.map +1 -1
  397. package/dist/test/e2e/stores/api-token-store.e2e.test.js +15 -14
  398. package/dist/test/e2e/stores/api-token-store.e2e.test.js.map +1 -1
  399. package/dist/test/e2e/stores/event-store.e2e.test.js +8 -9
  400. package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
  401. package/dist/test/fixtures/fake-api-token-store.d.ts +2 -1
  402. package/dist/test/fixtures/fake-api-token-store.d.ts.map +1 -1
  403. package/dist/test/fixtures/fake-api-token-store.js +4 -1
  404. package/dist/test/fixtures/fake-api-token-store.js.map +1 -1
  405. package/dist/test/fixtures/fake-event-store.d.ts +1 -1
  406. package/dist/test/fixtures/fake-event-store.d.ts.map +1 -1
  407. package/dist/test/fixtures/fake-event-store.js +1 -1
  408. package/dist/test/fixtures/fake-event-store.js.map +1 -1
  409. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.d.ts +2 -2
  410. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.d.ts.map +1 -1
  411. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.js +3 -2
  412. package/dist/test/fixtures/fake-release-plan-milestone-strategy-store.js.map +1 -1
  413. package/frontend/build/index.html +1 -1
  414. package/frontend/build/static/AdvancedPlayground-BTPrG6RW.js +3 -0
  415. package/frontend/build/static/BackendConnections-CRh8Vxoe.js +1 -0
  416. package/frontend/build/static/{CreateProject-DV-Ad8Sn.js → CreateProject-DEMalH1j.js} +1 -1
  417. package/frontend/build/static/EnterpriseEdge-Cp-pGMa0.js +6 -0
  418. package/frontend/build/static/FeatureMetricsChart-DQOE71LA.js +2 -0
  419. package/frontend/build/static/FeatureStaleDialog-B6BfnDiQ.js +689 -0
  420. package/frontend/build/static/{FeatureViewLazyExport-Bsw7-knb.js → FeatureViewLazyExport-BkNTNFqK.js} +4 -7
  421. package/frontend/build/static/FlagMetricsChart-zYDF9bet.js +2 -0
  422. package/frontend/build/static/FrontendNetworkTrafficUsage-CbxdFXH7.js +1 -0
  423. package/frontend/build/static/GridLayoutWrapper-Cq6Bzm36.js +3 -0
  424. package/frontend/build/static/ImpactMetricsPage-CFYXYXPb.js +1 -0
  425. package/frontend/build/static/LazyAdminExport-ByTh4iFa.js +38 -0
  426. package/frontend/build/static/LazyProjectExport-K12Xy3w9.js +46 -0
  427. package/frontend/build/static/{LifecycleChartComponent-cxR-TN3V.js → LifecycleChartComponent-DHvlFNd2.js} +3 -3
  428. package/frontend/build/static/LineChartComponent-BlhKm3cw.js +1 -0
  429. package/frontend/build/static/MarkCompletedDialogue-apmlFjVY.js +1 -0
  430. package/frontend/build/static/{NetworkOverview-DxaPXUzZ.js → NetworkOverview-BiLOuQ4c.js} +1 -1
  431. package/frontend/build/static/{NetworkPrometheusAPIWarning-ltyTlXFF.js → NetworkPrometheusAPIWarning-CYo3j2Tj.js} +1 -1
  432. package/frontend/build/static/{NetworkTraffic-Dhw4yIBs.js → NetworkTraffic-DONL5oIx.js} +1 -1
  433. package/frontend/build/static/NetworkTrafficUsage-DjQiYq0S.js +1 -0
  434. package/frontend/build/static/{PercentageDonut-JGNh2FVZ.js → PercentageDonut-CA9hYg3v.js} +1 -1
  435. package/frontend/build/static/{ReactJSONEditor-GHl7KvdS.js → ReactJSONEditor-9cJL1vJY.js} +31 -31
  436. package/frontend/build/static/{RoleCell-CjVCxBgl.js → RoleCell-ZzU5Oqy8.js} +1 -1
  437. package/frontend/build/static/Safeguard-DY1N4aPz.js +1 -0
  438. package/frontend/build/static/aggregateFeatureMetrics-D6bHft_C.js +1 -0
  439. package/frontend/build/static/{formatTickValue-BZb4ZIL9.js → formatTickValue-BcLsqREh.js} +2 -2
  440. package/frontend/build/static/{index-DcWBU_a4.js → index-B87DWXbl.js} +1 -1
  441. package/frontend/build/static/index-CoLhlfXP.js +565 -0
  442. package/frontend/build/static/loginBackground-CQx0IRYc.png +0 -0
  443. package/frontend/build/static/{networkTrafficUsageHighlightPlugin-BbfAyDiQ.js → networkTrafficUsageHighlightPlugin-CqEM-cK_.js} +1 -1
  444. package/frontend/build/static/passwordSuccess-fcvTEYOw.png +0 -0
  445. package/frontend/build/static/useApiTokens-ClWvohC9.js +1 -0
  446. package/frontend/package.json +50 -42
  447. package/package.json +11 -10
  448. package/dist/lib/openapi/spec/safeguard-schema.d.ts.map +0 -1
  449. package/dist/lib/openapi/spec/safeguard-schema.js.map +0 -1
  450. package/frontend/build/static/AdvancedPlayground-CF0hkpiE.js +0 -3
  451. package/frontend/build/static/BackendConnections-DhZczar-.js +0 -1
  452. package/frontend/build/static/EnterpriseEdge-D1To2ugP.js +0 -3
  453. package/frontend/build/static/FeatureMetricsChart-D8sRgx5P.js +0 -2
  454. package/frontend/build/static/FeatureStaleDialog-DOkhgvaj.js +0 -7
  455. package/frontend/build/static/FlagMetricsChart-CF_kEyQa.js +0 -2
  456. package/frontend/build/static/FrontendNetworkTrafficUsage-C8zJSvoc.js +0 -1
  457. package/frontend/build/static/GridLayoutWrapper-DpJcUbQB.js +0 -3
  458. package/frontend/build/static/ImpactMetricsPage-KLVv-tP4.js +0 -1
  459. package/frontend/build/static/LazyAdminExport-CWQiknO-.js +0 -38
  460. package/frontend/build/static/LazyProjectExport-DsMn4Yxm.js +0 -728
  461. package/frontend/build/static/LineChartComponent-_yZEp3dd.js +0 -1
  462. package/frontend/build/static/MarkCompletedDialogue-DFtLyDN0.js +0 -1
  463. package/frontend/build/static/NetworkTrafficUsage-deKWRhIS.js +0 -1
  464. package/frontend/build/static/aggregateFeatureMetrics-YEdZNNoV.js +0 -1
  465. package/frontend/build/static/index-DMSjiFEm.js +0 -583
  466. package/frontend/build/static/useApiTokens-DBB3NvXL.js +0 -1
@@ -1,7 +0,0 @@
1
- import{F as z,j as t,H as G,A as H,m as Y,C as V,n as oe,o as ie,bg as le,iR as ce,q as de,b as J,T as C,s as I,u as ue,b8 as pe,r as v,b7 as W,b9 as K,bb as me,ap as Q,ce as he,cV as ge,iS as fe,cY as ve,cU as B,b6 as _,cT as be,iT as Se,cS as je,h as xe,iU as Te,bC as X,iV as ye,br as Z,iW as Ee,iX as Ce,iY as Re,iZ as Ae,i_ as ke,i0 as De,hS as ee,i$ as we,k as Ie,j0 as Pe,j1 as Oe,c9 as te,aO as ae,bz as Fe,f$ as _e,f as $,bD as Ve,ba as $e,bB as Ue,bI as Ne,cd as qe,ca as Be,i as F,j2 as Le,cA as Me,aR as ze,aS as Ge,aP as He,aV as se,bf as L,bd as ne,j3 as Ye,j4 as Je,j5 as We,hQ as Ke,j6 as Qe,B as Xe,ao as Ze,cB as et,fZ as tt,j7 as at}from"./index-DMSjiFEm.js";var N={},st=G;Object.defineProperty(N,"__esModule",{value:!0});var re=N.default=void 0,nt=st(z()),rt=t,ot=(0,nt.default)((0,rt.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");re=N.default=ot;const it=ce(),$t=({options:e,selectedOptions:r,indeterminateOptions:n,tagType:u,existingTags:o,disabled:c=!1,onChange:a})=>{const i=t.jsx(de,{fontSize:"small"}),d=p=>p.inputValue?p.inputValue:p.title,g=({key:p,...m},s,{selected:h})=>{const j=(n==null?void 0:n.some(x=>x.title===s.title))??!1;return t.jsxs("li",{...m,children:[t.jsx(V,{condition:!!s.inputValue,show:t.jsx(le,{sx:{mr:x=>x.spacing(.5)}}),elseShow:t.jsx(oe,{icon:i,checkedIcon:t.jsx(ie,{fontSize:"small"}),indeterminateIcon:t.jsx(re,{fontSize:"small"}),sx:{mr:x=>x.spacing(.5)},checked:h&&!j,indeterminate:j})}),s.title]},p)},f=(p,m)=>{const s=m.inputValue.trim(),h=it(p,{...m,inputValue:s}),j=p.some(x=>s===x.title);return s.length>=2&&!j&&h.push({inputValue:s,title:`Create new value "${s}"`}),h};return t.jsx(H,{multiple:!0,id:"checkboxes-tag",sx:{marginTop:p=>p.spacing(2),width:500},disableCloseOnSelect:!0,options:e,value:r,isOptionEqualToValue:(p,m)=>m.inputValue&&m.inputValue!==""?p.title===m.inputValue:p.title===m.title,getOptionLabel:d,renderOption:g,filterOptions:f,ListboxProps:{style:{maxHeight:200,overflow:"auto"}},onChange:a,renderInput:p=>t.jsx(Y,{...p,label:"Select values",placeholder:"Select values"}),disabled:c})},lt=I("li")({flexDirection:"column"}),Ut=({options:e,value:r,disabled:n=!1,onChange:u})=>{const o=J();return t.jsx(H,{disablePortal:!0,disabled:n,id:"tag-type-select",sx:{marginTop:c=>c.spacing(2),width:500},options:e,disableClearable:!0,value:r,getOptionLabel:c=>c.name,renderOption:({key:c,...a},i)=>t.jsxs(lt,{...a,style:{alignItems:"flex-start",gap:o.spacing(.5)},children:[t.jsx(C,{variant:"body1",children:i.name}),t.jsx(C,{variant:"caption",children:i.description})]},c),renderInput:c=>t.jsx(Y,{...c,label:"Tag type",value:r}),onChange:u,ListboxProps:{style:{maxHeight:200,overflow:"auto"}}})},Nt=()=>{const{makeRequest:e,createRequest:r,errors:n,loading:u}=ue({propagateErrors:!0});return{createTag:async a=>{const d=r("api/admin/tags",{method:"POST",body:JSON.stringify(a)});return e(d.caller,d.id)},bulkUpdateTags:async(a,i)=>{const d=`api/admin/projects/${i}/tags`,g=r(d,{method:"PUT",body:JSON.stringify(a)});return e(g.caller,g.id)},errors:n,loading:u}},qt=(e,r={})=>{const n=async()=>{const g=W(`api/admin/tags/${e}`);return(await fetch(g,{method:"GET"}).then(K("Tags"))).json()},u=`api/admin/tags/${e}`,{data:o,error:c}=pe(!!e,{tags:[]},u,n,r),[a,i]=v.useState(!c&&!o),d=()=>{me(u)};return v.useEffect(()=>{i(!c&&!o)},[o,c]),{tags:(o==null?void 0:o.tags)||[],error:c,loading:a,refetch:d}},ct=I("div")({display:"flex",flexDirection:"column"}),dt=({strategy:e,setStrategy:r,projectId:n,environment:u,editable:o,permission:c=be})=>{const{trackEvent:a}=Q(),[i,d]=v.useState([]),g=J(),f=e!=null&&e.parameters&&"stickiness"in(e==null?void 0:e.parameters)?String(e.parameters.stickiness):"default";v.useEffect(()=>{d((e.variants||[]).map(s=>({...s,new:o||!1,isValid:!0,id:crypto.randomUUID(),overrides:[]})))},[]),v.useEffect(()=>{r(s=>({...s,variants:i.map(h=>({stickiness:f,name:h.name,weight:h.weight,payload:h.payload,weightType:h.weightType}))}))},[f,JSON.stringify(i)]);const p=(s,h)=>{d(j=>B(j.map(x=>x.id===h?s:x),1e3))},m=()=>{const s=crypto.randomUUID();d(h=>[...h,{name:"",weightType:je.VARIABLE,weight:0,stickiness:f,new:!0,isValid:!1,id:s}]),a("strategy-variants",{props:{eventType:"variant added"}})};return t.jsxs(t.Fragment,{children:[t.jsxs(C,{component:"h3",sx:{m:0,display:"flex",gap:"1ch"},variant:"h3",children:["Variants",t.jsx(he,{htmlTooltip:!0,tooltip:t.jsxs(t.Fragment,{children:[t.jsx("span",{children:"Variants allow to attach one or more values to this strategy. Variants at the strategy level override variants at the feature level."}),t.jsx(ge,{target:"_blank",href:"https://docs.getunleash.io/concepts/strategy-variants",children:"Learn more"})]})})]}),t.jsxs(ct,{children:[t.jsx(fe,{}),i.map((s,h)=>t.jsx(ve,{disableOverrides:!0,variant:s,variants:i,updateVariant:j=>p(j,s.id),removeVariant:()=>d(j=>B(j.filter(x=>x.id!==s.id),1e3)),decorationColor:g.palette.variants[h%g.palette.variants.length]},s.id))]}),t.jsx(_,{onClick:m,variant:"outlined",permission:c,projectId:n,environmentId:u,"data-testid":"ADD_STRATEGY_VARIANT_BUTTON",children:"Add variant"}),t.jsx(Se,{variants:i})]})},ut=I("form")(({theme:e})=>({display:"grid",gap:e.spacing(2)})),M=I("hr")(({theme:e})=>({width:"100%",height:"1px",margin:e.spacing(2,0),border:"none",background:e.palette.background.elevation2})),pt=I("div")(({theme:e})=>({display:"flex",justifyContent:"end",gap:e.spacing(2),paddingBottom:e.spacing(10)})),mt=({projectId:e,environmentId:r,permission:n,onSubmit:u,onCancel:o,loading:c,strategy:a,setStrategy:i,segments:d,setSegments:g,errors:f})=>{const p=xe("strategyFormConsolidation"),m=Te(a.constraints),{strategyDefinition:s}=X(a==null?void 0:a.name),{segments:h=[]}=ye(),j=h.length>0||d.length>0,x=Z();if(!s)return null;const P=b=>s.parameters.find(y=>y.name===b),k=(b,y)=>{const E=P(b);if(b!=="groupId"){const w=Oe(E,y);return w?(f.setFormError(b,w),!1):(f.removeFormError(b),!0)}return!0},R=()=>s.parameters.map(b=>b.name).map(b=>{var y;return k(b,(y=a.parameters)==null?void 0:y[b])}).every(Boolean),l=()=>{x(`/projects/${e}/settings/default-strategy`)},D=async b=>{if(b.preventDefault(),R())u();else return},O=(b,y)=>{i(Pe(E=>{E.parameters=E.parameters??{},E.parameters[b]=y})),k(b,y)};return t.jsxs(ut,{onSubmit:D,children:[t.jsx(Ee,{title:a.title||"",setTitle:b=>{i(y=>({...y,title:b}))}}),j?t.jsx(Ce,{segments:d,setSegments:g,availableSegments:h}):null,t.jsx(Re,{strategy:a,setStrategy:i}),t.jsx(M,{}),p?t.jsx(Ae,{strategy:a,strategyDefinition:s,updateParameter:O,errors:f}):t.jsx(ke,{strategy:a,strategyDefinition:s,setStrategy:i,validateParameter:k,errors:f}),t.jsx(V,{condition:a.parameters!=null&&"stickiness"in a.parameters,show:t.jsx(dt,{strategy:a,setStrategy:i,environment:r,projectId:e,permission:[De,ee]})}),t.jsx(M,{}),t.jsxs(pt,{children:[t.jsx(_,{permission:n,projectId:e,environmentId:r,variant:"contained",color:"primary",type:"submit",disabled:c||!m||f.hasFormErrors(),"data-testid":we,children:"Save strategy"}),t.jsx(Ie,{type:"button",color:"primary",onClick:o||l,disabled:c,children:"Cancel"})]})]})},ht=(e,r)=>{var a,i;const{project:n,refetch:u}=te(e),o={name:"flexibleRollout",constraints:[],parameters:{rollout:"100",stickiness:n.defaultStickiness||"default",groupId:""}},c=(i=(a=n.environments)==null?void 0:a.find(d=>d.environment===r))==null?void 0:i.defaultStrategy;return{defaultStrategyFallback:o,strategy:c,refetch:u}},Bt=()=>{const e=ae("projectId"),r=Fe("environmentId"),{refetch:n}=te(e),{defaultStrategyFallback:u,strategy:o,refetch:c}=ht(e,r),[a,i]=v.useState(o||u),[d,g]=v.useState([]),{updateDefaultStrategy:f,loading:p}=_e(),{strategyDefinition:m}=X(a==null?void 0:a.name),{setToastData:s,setToastApiError:h}=$(),j=Ve(),{uiConfig:x}=$e(),{unleashUrl:P}=x,k=Z(),{trackEvent:R}=Q(),{segments:l,refetchSegments:D}=Ue();v.useEffect(()=>{if(l&&(o!=null&&o.segments)){const E=[];for(const w of o==null?void 0:o.segments)E.push(...l.filter(T=>T.id===w));g(E)}},[JSON.stringify(l),JSON.stringify(o==null?void 0:o.segments)]);const O=gt(a,d),b=async E=>{await f(e,r,E),R("default_strategy",{props:{action:"edit",hasTitle:!!E.title}}),D(),n(),s({text:"Default Strategy updated",type:"success"})},y=async()=>{const E=`/projects/${e}/settings/default-strategy`;try{await b(O),await c(),k(E)}catch(w){h(F(w))}};return!m||!a?null:t.jsx(Ne,{modal:!0,title:Be((a==null?void 0:a.name)??""),description:vt,documentationLink:bt,documentationLinkLabel:St,formatApiCode:()=>ft(e,r,O,m,P),children:t.jsx(mt,{projectId:e,strategy:a,setStrategy:i,segments:d,setSegments:g,environmentId:r,onSubmit:y,loading:p,permission:[qe,ee],errors:j,isChangeRequest:!1})})},gt=(e,r)=>({name:e.name,title:e.title,constraints:e.constraints??[],parameters:e.parameters??{},variants:e.variants??[],segments:r.map(n=>n.id),disabled:e.disabled??!1}),ft=(e,r,n,u,o)=>{if(!o)return"";const c={...n,parameters:Le(n.parameters??{},u)},a=`${o}/api/admin/projects/${e}/environments/${r}/default-strategy}`,i=JSON.stringify(c,void 0,2);return`curl --location --request PUT '${a}' \\
2
- --header 'Authorization: INSERT_API_KEY' \\
3
- --header 'Content-Type: application/json' \\
4
- --data-raw '${i}'`},vt=`
5
- An activation strategy will only run when a feature flag is enabled and provides a way to control who will get access to the feature.
6
- If any of a feature flag's activation strategies returns true, the user will get access.
7
- `,bt="https://docs.getunleash.io/concepts/projects#project-default-strategy",St="Default strategy documentation",Lt=e=>{const{data:r,error:n,mutate:u}=Me(W(`api/admin/environments/project/${e}`),jt),o=v.useMemo(()=>r||[],[r]),c=v.useCallback(async()=>{await u()},[u]);return{environments:o,refetchEnvironments:c,loading:!n&&!r,error:n}},jt=async e=>(await fetch(e).then(K("Environments")).then(n=>n.json())).environments.sort((n,u)=>n.sortOrder-u.sortOrder),xt=e=>{const{setToastData:r,setToastApiError:n}=$(),{addChange:u}=ze(),{refetch:o}=Ge(e),[c,a]=v.useState(!1),[i,d]=v.useState({isOpen:!1}),g=v.useCallback((m,s,h,j)=>{d({featureName:m,environment:s,enabled:h,shouldActivateDisabledStrategies:j,isOpen:!0})},[]),f=v.useCallback(()=>{d(m=>({...m,isOpen:!1}))},[]),p=v.useCallback(async()=>{try{a(!0),await u(e,i.environment,{feature:i.featureName,action:"updateEnabled",payload:{enabled:!!i.enabled,shouldActivateDisabledStrategies:!!i.shouldActivateDisabledStrategies}}),o(),d(m=>({...m,isOpen:!1})),r({type:"success",text:"Changes added to draft"})}catch(m){n(F(m)),d(s=>({...s,isOpen:!1}))}finally{a(!1)}},[u]);return{pending:c,onChangeRequestToggle:g,onChangeRequestToggleClose:f,onChangeRequestToggleConfirm:p,changeRequestDialogDetails:i}},Tt=({enabled:e,featureName:r,environment:n})=>t.jsxs(C,{"data-testid":"update-enabled-message",children:[t.jsx("strong",{children:e?"Enable":"Disable"})," feature flag"," ",t.jsx("strong",{children:r})," in ",t.jsx("strong",{children:n})]}),yt=I("ul")(({theme:e})=>({margin:e.spacing(1),paddingLeft:e.spacing(2)})),Et=({isOpen:e,onAddDefaultStrategy:r,onActivateDisabledStrategies:n,onClose:u,environment:o,featureId:c})=>{var f,p,m;const a=ae("projectId"),{feature:i}=He(a,c),d=(m=(p=(f=i.environments)==null?void 0:f.find(({name:s})=>s===o))==null?void 0:p.strategies)==null?void 0:m.filter(({disabled:s})=>s).length,g=d?d===1?"1 disabled strategy":`${d} disabled strategies`:"disabled strategies";return t.jsxs(se,{open:e,secondaryButtonText:"Cancel",permissionButton:t.jsxs(t.Fragment,{children:[t.jsx(_,{type:"button",variant:"outlined",permission:L,projectId:a,environmentId:o,onClick:r,children:"Add default strategy"}),t.jsx(_,{type:"button",variant:"outlined",permission:L,projectId:a,environmentId:o,onClick:n,children:"Enable all strategies"})]}),onClose:u,title:`Enable feature flag in ${o}`,fullWidth:!0,children:[t.jsx(C,{sx:{mb:s=>s.spacing(3)},children:"A feature flag cannot be enabled without an enabled strategy."}),t.jsx(C,{children:"To enable this feature flag you can choose to:"}),t.jsxs(yt,{children:[t.jsx("li",{children:t.jsx(C,{children:t.jsx("strong",{children:"Add the default strategy"})})}),t.jsx("li",{children:t.jsxs(C,{children:[t.jsx("strong",{children:"Enable all the disabled strategies"})," ","(this feature flag has ",g,")"]})})]})]})},Ct=e=>{const r=n=>{n<e.length&&e[n](()=>r(n+1))};r(0)},Mt=e=>{const{toggleFeatureEnvironmentOn:r,toggleFeatureEnvironmentOff:n}=ne(),{setToastData:u,setToastApiError:o}=$(),[c,a]=v.useState({open:!1,label:"",loading:!1,onClose:()=>{},onClick:()=>{}}),[i,d]=v.useState({isOpen:!1,environment:"",featureId:"",onClose:()=>{},onActivateDisabledStrategies:()=>{},onAddDefaultStrategy:()=>{}}),{pending:g,onChangeRequestToggle:f,onChangeRequestToggleClose:p,onChangeRequestToggleConfirm:m,changeRequestDialogDetails:s}=xt(e),[h,j]=v.useState(),x=v.useCallback(async(R,l)=>{let D=!1;return Ct([T=>{if(l.isChangeRequestEnabled||!We(l.environmentType||""))return T();a({open:!0,label:`${R?"Enable":"Disable"} Environment`,loading:!1,onClose:()=>{var S;a(A=>({...A,open:!1})),(S=l.onRollback)==null||S.call(l)},onClick:()=>{a(S=>({...S,open:!1,loading:!0})),T()}})},T=>{if(R===!1||!l.hasStrategies||l.hasEnabledStrategies||l.hasReleasePlans)return T();d({isOpen:!0,environment:l.environmentName,featureId:l.featureId,onClose:()=>{var S;d(A=>({...A,isOpen:!1})),(S=l.onRollback)==null||S.call(l)},onActivateDisabledStrategies:()=>{d(S=>({...S,isOpen:!1})),D=!0,T()},onAddDefaultStrategy:()=>{d(S=>({...S,isOpen:!1})),T()}})},T=>{if(!l.isChangeRequestEnabled)return T();j(()=>{var S;j(void 0),(S=l.onRollback)==null||S.call(l)}),f(l.featureId,l.environmentName,R,D)},async T=>{var S,A;if(R!==!1)return T();try{await n(l.projectId,l.featureId,l.environmentName),u({type:"success",text:`Disabled in ${l.environmentName}`}),(S=l.onSuccess)==null||S.call(l)}catch(U){o(F(U)),(A=l.onRollback)==null||A.call(l)}},async T=>{var S,A;if(R!==!0)return T();try{await r(l.projectId,l.featureId,l.environmentName,D),u({type:"success",text:`Enabled in ${l.environmentName}`}),(S=l.onSuccess)==null||S.call(l)}catch(U){o(F(U)),(A=l.onRollback)==null||A.call(l)}}])},[a]),P=i.featureId.length!==0,k=t.jsxs(t.Fragment,{children:[t.jsx(Ye,{...c}),t.jsx(V,{condition:P,show:t.jsx(Et,{...i})}),t.jsx(Je,{isOpen:s.isOpen,onClose:()=>{h==null||h(),p()},environment:s==null?void 0:s.environment,disabled:g,onConfirm:()=>{h==null||h(),m()},messageComponent:t.jsx(Tt,{enabled:s==null?void 0:s.enabled,featureName:s==null?void 0:s.featureName,environment:s.environment})})]});return{onToggle:x,modals:k}},Rt=e=>{const[r,n]=v.useState(e),u=v.useCallback(()=>n(e),[e]);return v.useEffect(()=>{n(e)},[e]),[r,n,u]},At=I(Xe)(()=>({mx:"auto",...Ze})),zt=({projectId:e,featureId:r,environmentName:n,value:u,onToggle:o})=>{const[c,a,i]=Rt(u),d=()=>{a(!c),requestAnimationFrame(()=>{o(!c,i)})},g=`${r}-${n}`;return t.jsx(t.Fragment,{children:t.jsx(At,{"data-testid":`TOGGLE-${g}`,children:t.jsx(Ke,{tooltip:c?`Disable flag in ${n}`:`Enable flag in ${n}`,checked:u,environmentId:n,projectId:e,permission:Qe,inputProps:{"aria-label":n},onClick:d,"data-testid":"permission-switch",disabled:u!==c})},g)})};var q={},kt=G;Object.defineProperty(q,"__esModule",{value:!0});var Dt=q.default=void 0,wt=kt(z()),It=t,Pt=(0,wt.default)((0,It.jsx)("path",{d:"M16 11h-1V3c0-1.1-.9-2-2-2h-2c-1.1 0-2 .9-2 2v8H8c-2.76 0-5 2.24-5 5v7h18v-7c0-2.76-2.24-5-5-5zm3 10h-2v-3c0-.55-.45-1-1-1s-1 .45-1 1v3h-2v-3c0-.55-.45-1-1-1s-1 .45-1 1v3H9v-3c0-.55-.45-1-1-1s-1 .45-1 1v3H5v-5c0-1.65 1.35-3 3-3h8c1.65 0 3 1.35 3 3v5z"}),"CleaningServices");Dt=q.default=Pt;const Ot="flag-reminders:v1",Ft=50,_t=7,Gt=({days:e=_t,maxReminders:r=Ft}={})=>{const[n,u]=et(Ot,{});return{shouldShowReminder:a=>{const i=n[a];return!i||at(new Date,new Date(i))},snoozeReminder:(a,i=e)=>{const d=tt(new Date,i).getTime();u(g=>{const f={...g,[a]:d},p=Object.entries(f);if(p.length>r){p.sort((s,h)=>s[1]-h[1]);const m=p.slice(p.length-r);return Object.fromEntries(m)}return f})}}},Ht=({isStale:e,isOpen:r,projectId:n,featureId:u,onClose:o})=>{const{setToastData:c,setToastApiError:a}=$(),{patchFeatureToggle:i}=ne(),d=t.jsx(C,{children:"Setting a flag to stale marks it for cleanup"}),g=t.jsx(C,{children:"Setting a flag to active marks it as in active use"}),f=e?"active":"stale",p=async m=>{m.stopPropagation();try{await i(n,u,[{op:"replace",path:"/stale",value:!e}]),o()}catch(s){a(F(s))}c(e?{type:"success",text:"The flag is no longer marked as stale"}:{type:"success",text:"The flag has been marked as stale"})};return t.jsx(se,{open:r,secondaryButtonText:"Cancel",primaryButtonText:`Flip to ${f}`,title:`Set feature state to ${f}`,onClick:p,onClose:o,children:t.jsx(V,{condition:e,show:g,elseShow:d})})};export{Bt as E,zt as F,Ut as T,qt as a,$t as b,ht as c,Lt as d,Mt as e,Gt as f,Dt as g,Ht as h,Nt as u};
@@ -1,2 +0,0 @@
1
- import{bt as w,jm as F,dl as E,aP as S,r as p,j as r,B as k,jn as D,bs as A,s as g,b as y,T as P,jo as j,bq as I,G as B,dC as T,dD as L,dE as N,jp as O,jq as R,jr as $,js as H}from"./index-DMSjiFEm.js";import{f as V,a as W}from"./formatTickValue-BZb4ZIL9.js";import{F as U,c as _,u as G,b as Y}from"./aggregateFeatureMetrics-YEdZNNoV.js";import{F as q,M as z}from"./MarkCompletedDialogue-DFtLyDN0.js";const J=e=>{const t={label:"Exposed",hoverBackgroundColor:"#A39EFF",backgroundColor:"#A39EFF",data:M(e,n=>n.yes)},a={label:"Not exposed",hoverBackgroundColor:"#D8D6FF",backgroundColor:"#D8D6FF",data:M(e,n=>n.no)};return{datasets:[t,a]}},M=(e,t)=>e.map(a=>({x:a.timestamp,y:t(a),variants:a.variants||{}})),K=(e,t)=>{if(t===0)return"";const[a,n]=e,s=Math.floor(Number(n)/t*100);return`${n} (${s}%) - ${a}`},C=e=>({plugins:{legend:{position:"top",labels:{color:e.palette.text.primary,usePointStyle:!0,pointStyle:"none",boxHeight:0,padding:15,boxPadding:5}},tooltip:{enabled:!1}},responsive:!0,maintainAspectRatio:!1,scales:{x:{stacked:!0,ticks:{display:!1},grid:{display:!1}},y:{stacked:!0,ticks:{maxTicksLimit:5,display:!1},grid:{drawBorder:!1,color:e.palette.divider}}},elements:{bar:{borderRadius:5}},interaction:{mode:"index",intersect:!1}}),Q=(e,t,a)=>{var m;const{responsive:n,elements:s,interaction:c,scales:o,maintainAspectRatio:i}=C(e);return{plugins:{legend:{position:"bottom",labels:{color:e.palette.text.primary,pointStyle:"circle",usePointStyle:!0,boxHeight:6,padding:15,boxPadding:5}},annotation:{clip:!1,annotations:{}},tooltip:{backgroundColor:e.palette.background.paper,titleColor:e.palette.text.primary,bodyColor:e.palette.text.primary,bodySpacing:6,padding:{top:20,bottom:20,left:30,right:30},borderColor:"rgba(0, 0, 0, 0.05)",borderWidth:3,usePointStyle:!0,caretSize:0,boxPadding:10,callbacks:{label:l=>`${l.formattedValue} - ${l.dataset.label}`,afterLabel:l=>{const d=l.dataset.data[l.dataIndex];if(l.dataset.label!=="Exposed"||d.variants===void 0)return"";const{disabled:f,...u}=d.variants;return Object.entries(u).map(b=>K(b,d.y)).join(`
2
- `)},title:l=>`Time: ${t>48?E(l[0].label,a.locale,"UTC"):F(l[0].label,a.locale)}`}}},responsive:n,maintainAspectRatio:i,scales:{x:{...o?o.x:{},ticks:{color:e.palette.text.secondary,callback(l){const d=this.getLabelForValue(Number(l));return t>48?w(d,a.locale,"UTC"):F(d,a.locale)}}},y:{...(o==null?void 0:o.y)??{},ticks:{...((m=o==null?void 0:o.y)==null?void 0:m.ticks)??{},color:e.palette.text.secondary,callback:V,display:!0}}},elements:s,interaction:c}},X=({project:e,flagName:t,onArchive:a,className:n})=>{var f;const{feature:s,refetchFeature:c}=S(e,t),o=(f=s.environments)==null?void 0:f.map(u=>({name:u.name,lastSeenAt:u.lastSeenAt,enabled:u.enabled,yes:u.yes,no:u.no})),[i,m]=p.useState(!1),[l,d]=p.useState(!1);return r.jsxs(k,{sx:{display:"flex"},className:n,children:[r.jsx(D,{sx:{pt:0,pb:0},featureLastSeen:s.lastSeenAt,environments:o}),r.jsx(A,{feature:s,onArchive:()=>m(!0),onComplete:()=>d(!0),onUncomplete:c}),s.children.length>0?r.jsx(U,{features:s.children,project:e,isOpen:i,onClose:()=>m(!1)}):r.jsx(q,{isOpen:i,onConfirm:a,onClose:()=>m(!1),projectId:e,featureIds:[t]}),s.project?r.jsx(z,{isOpen:l,setIsOpen:d,projectId:s.project,featureId:s.name,onComplete:c}):null]})},Z=[0,14,28,21,33,31,31,22,26,37,31,14,21,14,0],ee=e=>({labels:Array.from({length:15},(t,a)=>a+1),datasets:[{data:Z,backgroundColor:e.palette.divider,hoverBackgroundColor:e.palette.divider,label:""}]}),v=g("div")({width:"100%",flexGrow:1}),x=({label:e})=>{const t=y(),a=p.useMemo(()=>C(t),[t]),n=p.useMemo(()=>ee(t),[t]),s="placeholder-chart-label";return r.jsxs(r.Fragment,{children:[r.jsx(P,{id:s,children:e}),r.jsx(v,{children:r.jsx(j,{data:n,options:a,"aria-describedby":s})})]})},te=()=>{const e=y(),t=p.useMemo(()=>C(e),[e]),a=p.useMemo(()=>({labels:[],datasets:[]}),[e]);return r.jsx(v,{children:r.jsx(j,{data:a,options:t,"aria-label":"A placeholder bar chart with a single feature flag exposure metrics"})})},ae=(e,t)=>{const[a,n]=p.useState(null),{feature:s}=S(e,t),c=((s==null?void 0:s.environments)??[]).map(i=>({name:i.name,type:i.type})),o=c.find(i=>i.type==="production");return p.useEffect(()=>{o?n(o.name):c.length>0&&n(c[0].name)},[t,JSON.stringify(c)]),{environment:a,setEnvironment:n,activeEnvironments:c}},re=(e,t,a)=>{const{featureMetrics:n=[],loading:s,error:c}=G(e,a),o=p.useMemo(()=>[...n].sort((u,b)=>u.timestamp.localeCompare(b.timestamp)),[n]),i=p.useMemo(()=>Y(o==null?void 0:o.filter(u=>t===u.environment)).map(u=>({...u,appName:"all selected"})),[o,t]),m=p.useMemo(()=>J(i),[i]),l=y(),{locationSettings:d}=I(),f=p.useMemo(()=>Q(l,a,d),[l,a,d]);return{data:m,options:f,loading:s,error:c}},se=({activeEnvironments:e,environment:t,setEnvironment:a})=>r.jsx(B,{name:"feature-environments",label:"Environment",id:"feature-environments",options:e.map(n=>({key:n.name,label:n.name})),value:String(t),onChange:a}),ne=g(k)(({theme:e})=>({display:"flex",justifyContent:"flex-start",flexFlow:"row wrap",gap:e.spacing(2)})),h=g("div")(({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(3),alignItems:"center",height:"100%",justifyContent:"space-between"})),oe=g(X)({alignItems:"center",justifySelf:"start"}),le=g("div")(({theme:e})=>({display:"flex",justifyContent:"space-between",flexFlow:"row wrap",width:"100%",gap:e.spacing(4)})),me=e=>r.jsx(h,{children:r.jsx(x,{...e})}),ie=({flag:e,onArchive:t})=>{const[a,n]=p.useState(48),{environment:s,setEnvironment:c,activeEnvironments:o}=ae(e.project,e.name),{data:i,options:m,loading:l,error:d}=re(e.name,s,a);if(d)return r.jsx(h,{children:r.jsx(x,{label:"Couldn't fetch metrics for the current flag right now. Please try again. Report this if it doesn't resolve itself."})});const f=i.datasets[0].data.length===0;return r.jsxs(h,{children:[r.jsxs(le,{children:[r.jsx(oe,{project:e.project,flagName:e.name,onArchive:t}),r.jsxs(ne,{children:[s?r.jsx(se,{environment:s,setEnvironment:c,activeEnvironments:o}):null,r.jsx(_,{hoursBack:a,setHoursBack:n})]})]}),l?r.jsx(te,{}):f?r.jsx(x,{label:"No metrics for this feature flag in the selected environment and time period"}):r.jsx(v,{children:r.jsx(j,{data:i,options:m,"aria-label":"A bar chart with a single feature flag exposure metrics"})})]})},fe=e=>[".",".."].includes(e.flag.name)?r.jsx(h,{children:r.jsx(x,{label:`The current flag name ('${e.flag.name}') is known to cause issues due how it affects URLs. We cannot show you a chart for it.`})}):r.jsx(ie,{...e});T.register(W,L,N,O,R,$,H);export{fe as FlagMetricsChart,me as PlaceholderFlagMetricsChartWithWrapper};
@@ -1 +0,0 @@
1
- import{cJ as n,ba as l,j as e,C as c,B as d,R as a,jo as g,dC as h,dD as p,dE as j,jp as f,jq as u,jr as m,js as x}from"./index-DMSjiFEm.js";import{a as S}from"./formatTickValue-BZb4ZIL9.js";import{u as C,c as w,S as P,T as y,P as D,n as T,g as b}from"./networkTrafficUsageHighlightPlugin-BbfAyDiQ.js";import"./LazyAdminExport-CWQiknO-.js";import"./RoleCell-CjVCxBgl.js";import"./useApiTokens-DBB3NvXL.js";import"./PercentageDonut-JGNh2FVZ.js";const N=()=>{n("Network - Frontend Traffic Usage");const{isOss:s}=l(),{chartDataSelection:t,setChartDataSelection:r,options:o}=C(),{chartData:i}=w(t);return e.jsx(c,{condition:s(),show:e.jsx(a,{severity:"warning",children:"Not enabled."}),elseShow:e.jsx(e.Fragment,{children:e.jsxs(P,{children:[e.jsxs(y,{children:[e.jsx(d,{children:e.jsx(a,{severity:"info",icon:!1,children:"Frontend traffic is determined by the total SDK requests to the Frontend API"})}),e.jsx(D,{selectedPeriod:t,setPeriod:r})]}),e.jsx(g,{data:i,plugins:[T],options:o,"aria-label":b(t)})]})})})};h.register(S,p,j,f,u,m,x);export{N as default};
@@ -1,3 +0,0 @@
1
- import{j as h,B as J,jb as En,jc as Cn,aY as Ge,jd as zn,je as jr,e4 as Mn,n as Er,r as L,jf as or,dI as Tn,dx as Ln,dy as kn,b7 as ir,u as Hn,A as Wn,m as Cr,R as Nn,v as zr,T as Oe,s as H,b as Mr,aj as Tr,ap as $n,bI as qn,k as sr,ch as An,jg as In,dK as Lr,d4 as ar,et as Bn,a_ as Gn,b0 as Fn,aB as Yn,dL as Xn,jh as Un,ji as kr,jj as Vn,jk as Tt,jl as he,g as Kn}from"./index-DMSjiFEm.js";const Jn=({formData:t,actions:e,metricSeries:r,loading:n,labelsFilter:o})=>h.jsxs(J,{children:[h.jsxs(J,{sx:i=>({display:"flex",flexDirection:"column",gap:i.spacing(3)}),children:[h.jsx(En,{value:t.metricName,onChange:e.handleSeriesChange,options:r,loading:n}),o,t.metricName?h.jsxs(h.Fragment,{children:[h.jsxs(Cn,{value:t.timeRange,onChange:e.setTimeRange,children:[h.jsx(Ge,{value:"hour",children:"Last hour"}),h.jsx(Ge,{value:"day",children:"Last 24 hours"}),h.jsx(Ge,{value:"week",children:"Last 7 days"}),h.jsx(Ge,{value:"month",children:"Last 30 days"})]}),h.jsx(zn,{value:t.aggregationMode,onChange:e.setAggregationMode,metricType:jr(t.metricName)})]}):null]}),t.metricName?h.jsx(Mn,{sx:i=>({margin:i.spacing(1.5,0)}),control:h.jsx(Er,{checked:t.yAxisMin==="zero",onChange:i=>e.setYAxisMin(i.target.checked?"zero":"auto")}),label:"Begin at zero"}):null]}),Zn=({open:t,initialConfig:e})=>{const[r,n]=L.useState((e==null?void 0:e.title)||""),[o,i]=L.useState((e==null?void 0:e.metricName)||""),[s,u]=L.useState((e==null?void 0:e.timeRange)||"day"),[a,l]=L.useState((e==null?void 0:e.yAxisMin)||"auto"),[c,d]=L.useState((e==null?void 0:e.labelSelectors)||{}),[f,p]=L.useState((e==null?void 0:e.aggregationMode)||or(o)),{data:{labels:w}}=Tn(o?{series:o,range:s,aggregationMode:f}:void 0);L.useEffect(()=>{t&&e?(n(e.title||""),i(e.metricName),u(e.timeRange),l(e.yAxisMin),d(e.labelSelectors),p(e.aggregationMode||or(e.metricName))):t&&!e&&(n(""),i(""),u("day"),l("auto"),d({}),p("count"))},[t,e]);const D=v=>{i(v),d({});const g=jr(v);g==="counter"?p("count"):g==="gauge"?p("avg"):g==="histogram"&&p("p50")},x=()=>({title:r||void 0,metricName:o,timeRange:s,yAxisMin:a,labelSelectors:c,aggregationMode:f}),m=o.length>0;return{formData:{title:r,metricName:o,timeRange:s,yAxisMin:a,aggregationMode:f,labelSelectors:c},actions:{setTitle:n,setMetricName:i,setTimeRange:u,setYAxisMin:l,setAggregationMode:p,setLabelSelectors:d,handleSeriesChange:D,getConfigToSave:x},isValid:m,currentAvailableLabels:w}},Qn=()=>{const t="api/admin/impact-metrics/config",{data:e,refetch:r,loading:n,error:o}=Ln(ir(t),()=>kn(ir(t),"impactMetricsConfig"));return{configs:(e==null?void 0:e.configs)||[],refetch:r,loading:n,error:o}},eo=t=>{const e=t?`api/admin/projects/${t.projectId}/features/${t.featureName}/impact-metrics/config`:"api/admin/impact-metrics/config",{makeRequest:r,createRequest:n,errors:o,loading:i}=Hn({propagateErrors:!0}),s=L.useCallback(async a=>{const l=n(e,{method:"POST",body:JSON.stringify(a)},"updateImpactMetric");return r(l.caller,l.id)},[r,n]),u=L.useCallback(async a=>{const l=n(`${e}/${a}`,{method:"DELETE"},"deleteImpactMetric");return r(l.caller,l.id)},[r,n,e]);return{createImpactMetric:s,deleteImpactMetric:u,errors:o,loading:i}},de="*",aa=()=>{const{configs:t,loading:e,error:r,refetch:n}=Qn(),{layout:o,charts:i}=L.useMemo(()=>({layout:t.map((p,w)=>{const D=w%2,x=Math.floor(w/2);return{i:p.id,x:D*6,y:x*2,w:6,h:2,minW:4,minH:2,maxW:12,maxH:8}}),charts:t}),[t]),{createImpactMetric:s,deleteImpactMetric:u,loading:a,errors:l}=eo(),c=L.useCallback(async p=>{await s(p),n()},[s,n]),d=L.useCallback(async(p,w)=>{await s({...w,id:p}),n()},[t,s,n]),f=L.useCallback(async p=>{await u(p),n()},[t,u,n]);return{charts:i,layout:o,loading:e||a,error:r||Object.keys(l).length>0?l:void 0,addChart:c,updateChart:d,deleteChart:f}},to=({labelKey:t,options:e,value:r,onChange:n})=>{const o=r.includes(de),i=`autocomplete-${t}`,s=e.length>=1e3,u=[de,...e];return h.jsx(Wn,{multiple:!0,disableCloseOnSelect:!0,id:i,options:u,value:o?e:r,getOptionLabel:a=>a===de?"(Select all)":a,onChange:(a,l,c,d)=>{if((d==null?void 0:d.option)===de){n(o?[]:[de]);return}n(l.filter(f=>f!==de))},renderOption:(a,l,{selected:c})=>{const{key:d,...f}=a;return h.jsxs("li",{...f,children:[h.jsx(Er,{size:"small",checked:l===de?o:c,style:{marginRight:8}}),l===de?h.jsx(Oe,{component:"span",sx:{color:"text.secondary"},children:"Select all"}):l]},d||l)},renderTags:(a,l)=>{const d=a.slice(-5),f=a.length-5;return h.jsxs(h.Fragment,{children:[d.map((p,w)=>{const{key:D,...x}=l({index:w});return L.createElement(zr,{...x,key:D,label:p,size:"small"})}),f>0?h.jsxs(Oe,{component:"span",sx:{color:"text.secondary"},children:[" ","(+",f,")"]}):null]})},renderInput:a=>h.jsxs(h.Fragment,{children:[h.jsx(Cr,{...a,label:t,placeholder:o?void 0:"Select values…",variant:"outlined",size:"small",inputProps:{...a.inputProps}}),s&&h.jsx(Nn,{severity:"warning",sx:l=>({padding:l.spacing(1,2),marginTop:l.spacing(1)}),children:"Maximum of 1000 values loaded due to performance."})]})})},ro=H(J)(({theme:t})=>({display:"flex",flexDirection:"column",gap:t.spacing(1),width:"100%"})),no=H(J)(({theme:t})=>({width:"100%",display:"flex",alignItems:"center",gap:t.spacing(1)})),oo=H(J)(({theme:t})=>({display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(250px, 1fr))",gap:t.spacing(2),flexGrow:1})),io=H(J)({display:"flex",flexDirection:"column",flexGrow:1}),so=H(Oe)({lineHeight:1.5,height:"24px"}),ao=H(zr)(({theme:t})=>({position:"relative",height:"20px",margin:t.spacing(-1,0)})),lr=({title:t,labels:e,labelSelectors:r,onLabelChange:n,onAllToggle:o,onChange:i})=>{const s=e.map(([l])=>l),u=s.some(l=>r[l]),a=()=>{const l={};Object.entries(r).forEach(([c,d])=>{s.includes(c)||(l[c]=d)}),i(l)};return h.jsxs(ro,{children:[h.jsxs(no,{children:[h.jsx(so,{variant:"subtitle2",children:t}),u&&h.jsx(ao,{label:"Clear all",size:"small",variant:"outlined",onClick:a})]}),h.jsx(oo,{children:e.map(([l,c])=>{const d=r[l]||[];return h.jsx(io,{children:h.jsx(to,{labelKey:l,options:c,value:d,onChange:f=>n(l,f),handleAllToggle:o})},l)})})]})},ur=["environment","appName","origin"],lo=({labelSelectors:t,onChange:e,availableLabels:r})=>{const n=(u,a)=>{const l={...t};a.length===0?delete l[u]:l[u]=a,e(l)},o=(u,a)=>{const l={...t};a?l[u]=["*"]:delete l[u],e(l)};if(!r||Object.keys(r).length===0)return null;const i=Object.entries(r).filter(([u])=>ur.includes(u)).sort(),s=Object.entries(r).filter(([u])=>!ur.includes(u)).sort();return h.jsxs(J,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[i.length>0&&h.jsx(lr,{title:"Filter by labels",labels:i,labelSelectors:t,onLabelChange:n,onAllToggle:o,onChange:e}),s.length>0&&h.jsx(lr,{title:"Flag specific filters",labels:s,labelSelectors:t,onLabelChange:n,onAllToggle:o,onChange:e})]})},uo=H(An)(({theme:t})=>({"& .MuiDialog-paper":{borderRadius:t.shape.borderRadiusLarge,maxWidth:t.spacing(170),width:"100%",backgroundColor:"transparent"},padding:0,"& .MuiPaper-root > section":{overflowX:"hidden"}})),co=H("form")({display:"flex",flexDirection:"column",height:"100%"}),fo=H("h1")(({theme:t})=>({fontWeight:"normal",fontSize:t.typography.h1.fontSize,margin:0})),po=H("div")(({theme:t})=>({display:"flex",flexDirection:"column",gap:t.spacing(3),padding:t.spacing(6),flexGrow:1,minHeight:600})),ho=H("div")(({theme:t})=>({display:"flex",gap:t.spacing(3),justifyContent:"flex-end",padding:t.spacing(4,6),borderTop:`1px solid ${t.palette.divider}`})),go=H(Oe)(({theme:t})=>({fontWeight:t.typography.fontWeightBold,color:t.palette.common.white,marginBottom:t.spacing(1)})),mo=H("a")(({theme:t})=>({color:t.palette.common.white,display:"flex",alignItems:"center",gap:t.spacing(1),marginTop:t.spacing(1.5),textDecoration:"underline","&:hover":{textDecoration:"none"}})),yo=H(Oe)(({theme:t})=>({fontWeight:t.typography.fontWeightBold,color:t.palette.common.white,marginBottom:t.spacing(1.5)})),vo=H(J)(({theme:t})=>({borderRadius:t.shape.borderRadiusLarge,overflow:"hidden",backgroundColor:t.palette.background.paper,padding:t.spacing(2)})),la=({open:t,onClose:e,onSave:r,initialConfig:n,metricSeries:o,loading:i=!1})=>{const{formData:s,actions:u,isValid:a,currentAvailableLabels:l}=Zn({open:t,initialConfig:n}),c=Mr(),d=Tr(c.breakpoints.down("lg")),{trackEvent:f}=$n(),p=()=>{a&&(r(u.getConfigToSave()),f("impact-metrics",{props:{eventType:"chart added"}}),e())},w=h.jsxs(h.Fragment,{children:[h.jsx(go,{children:"Did you know?"}),"Impact metrics let you track how your feature rollouts affect key outcomes like error rates, latency, and adoption — directly inside Unleash.",h.jsxs(mo,{href:"https://docs.getunleash.io/reference/impact-metrics",target:"_blank",rel:"noopener noreferrer",onClick:()=>f("impact-metrics",{props:{eventType:"sidebar docs clicked"}}),children:[h.jsx(In,{fontSize:"small"}),"Learn how to use impact metrics"]}),h.jsxs(J,{sx:{mt:3},children:[h.jsx(yo,{children:"Preview chart"}),h.jsx(vo,{children:h.jsx(Lr,{metricName:s.metricName,timeRange:s.timeRange,labelSelectors:s.labelSelectors,yAxisMin:s.yAxisMin,aggregationMode:s.aggregationMode,isPreview:!0},d?"small":"large")})]})]});return h.jsx(uo,{open:t,onClose:e,children:h.jsx(qn,{compact:!0,disablePadding:!0,description:w,showLink:!1,sidebarWidth:"55%",children:h.jsxs(co,{onSubmit:D=>{D.preventDefault(),p()},children:[h.jsxs(po,{children:[h.jsx(fo,{children:n?"Edit impact metric":"Add impact metric"}),h.jsx(Cr,{label:"Chart Title (optional)",value:s.title,onChange:D=>u.setTitle(D.target.value),fullWidth:!0,variant:"outlined",size:"small"}),h.jsx(Jn,{formData:s,actions:u,metricSeries:o,loading:i,labelsFilter:l?h.jsx(lo,{labelSelectors:s.labelSelectors,onChange:u.setLabelSelectors,availableLabels:l}):null})]}),h.jsxs(ho,{children:[h.jsx(sr,{onClick:e,children:"Cancel"}),h.jsx(sr,{variant:"contained",type:"submit",disabled:!a,children:n?"Update":"Add impact metric"})]})]})})})},bo=t=>{const e=[];t.displayName&&e.push(`${t.displayName}`),e.push(`last ${t.timeRange}`),e.push(t.aggregationMode);const r=Object.keys(t.labelSelectors).length;return r>0&&e.push(`${r} filter${r>1?"s":""}`),e.join(" • ")},wo=H(Yn)(({theme:t})=>({borderRadius:`${t.shape.borderRadiusMedium}px`,boxShadow:"none",display:"flex",flexDirection:"column",height:"100%"})),So=H(J)({flex:1,display:"flex",flexDirection:"column",minHeight:0}),xo=H(J)(({theme:t})=>({position:"relative",minWidth:0,flexGrow:1,height:"100%",display:"flex",flexDirection:"column",margin:"auto 0",padding:t.spacing(3)})),Oo=H(J)(({theme:t})=>({display:"flex",gap:t.spacing(1),alignItems:"center",padding:t.spacing(1.5,2),borderBottom:`1px solid ${t.palette.divider}`})),Do=H(J)(({theme:t})=>({display:"flex",flexDirection:"column",justifyContent:"flex-end",flexGrow:1,overflow:"hidden",textOverflow:"ellipsis"})),_o=H(J)(({theme:t})=>({marginLeft:"auto",display:"flex",alignItems:"center",gap:t.spacing(.5)})),Ro=H(Xn)(({theme:t})=>({alignSelf:"start",color:t.palette.primary.main,marginTop:t.spacing(.25)})),ua=({config:t,onEdit:e,onDelete:r,permission:n=Bn,projectId:o,dragHandle:i,icon:s})=>h.jsxs(wo,{children:[h.jsxs(Oo,{children:[i,t.mode==="read"?h.jsx(Ro,{}):null,h.jsxs(Do,{children:[t.title&&h.jsx(Oe,{variant:"h3",children:t.title}),h.jsx(Oe,{variant:"body2",color:"text.secondary",children:bo(t)})]}),s,t.mode!=="read"&&h.jsxs(_o,{children:[h.jsx(ar,{onClick:()=>e(t),permission:n,projectId:o,tooltipProps:{title:"Edit chart"},children:h.jsx(Gn,{})}),h.jsx(ar,{onClick:()=>r(t.id),permission:n,projectId:o,tooltipProps:{title:"Remove chart"},children:h.jsx(Fn,{})})]})]}),h.jsx(So,{children:h.jsx(xo,{children:h.jsx(Lr,{metricName:t.metricName,timeRange:t.timeRange,labelSelectors:t.labelSelectors,yAxisMin:t.yAxisMin,aggregationMode:t.aggregationMode,aspectRatio:1.5,overrideOptions:{maintainAspectRatio:!1},emptyDataDescription:"Send impact metrics using Unleash SDK for this series to view the chart."})})})]});var Hr={exports:{}},qe={},Dt={exports:{}};(function(t,e){(function(r,n){n(e)})(Un,function(r){function n(y){return function(T,z,M,N,B,te,$){return y(T,z,$)}}function o(y){return function(T,z,M,N){if(!T||!z||typeof T!="object"||typeof z!="object")return y(T,z,M,N);var B=N.get(T),te=N.get(z);if(B&&te)return B===z&&te===T;N.set(T,z),N.set(z,T);var $=y(T,z,M,N);return N.delete(T),N.delete(z),$}}function i(y,_){var T={};for(var z in y)T[z]=y[z];for(var z in _)T[z]=_[z];return T}function s(y){return y.constructor===Object||y.constructor==null}function u(y){return typeof y.then=="function"}function a(y,_){return y===_||y!==y&&_!==_}var l="[object Arguments]",c="[object Boolean]",d="[object Date]",f="[object RegExp]",p="[object Map]",w="[object Number]",D="[object Object]",x="[object Set]",m="[object String]",v=Object.prototype.toString;function g(y){var _=y.areArraysEqual,T=y.areDatesEqual,z=y.areMapsEqual,M=y.areObjectsEqual,N=y.areRegExpsEqual,B=y.areSetsEqual,te=y.createIsNestedEqual,$=te(oe);function oe(k,q,ie){if(k===q)return!0;if(!k||!q||typeof k!="object"||typeof q!="object")return k!==k&&q!==q;if(s(k)&&s(q))return M(k,q,$,ie);var rr=Array.isArray(k),nr=Array.isArray(q);if(rr||nr)return rr===nr&&_(k,q,$,ie);var se=v.call(k);return se!==v.call(q)?!1:se===d?T(k,q,$,ie):se===f?N(k,q,$,ie):se===p?z(k,q,$,ie):se===x?B(k,q,$,ie):se===D||se===l?u(k)||u(q)?!1:M(k,q,$,ie):se===c||se===w||se===m?a(k.valueOf(),q.valueOf()):!1}return oe}function S(y,_,T,z){var M=y.length;if(_.length!==M)return!1;for(;M-- >0;)if(!T(y[M],_[M],M,M,y,_,z))return!1;return!0}var b=o(S);function E(y,_){return a(y.valueOf(),_.valueOf())}function A(y,_,T,z){var M=y.size===_.size;if(!M)return!1;if(!y.size)return!0;var N={},B=0;return y.forEach(function(te,$){if(M){var oe=!1,k=0;_.forEach(function(q,ie){!oe&&!N[k]&&(oe=T($,ie,B,k,y,_,z)&&T(te,q,$,ie,y,_,z))&&(N[k]=!0),k++}),B++,M=oe}}),M}var I=o(A),V="_owner",Z=Object.prototype.hasOwnProperty;function Te(y,_,T,z){var M=Object.keys(y),N=M.length;if(Object.keys(_).length!==N)return!1;for(var B;N-- >0;){if(B=M[N],B===V){var te=!!y.$$typeof,$=!!_.$$typeof;if((te||$)&&te!==$)return!1}if(!Z.call(_,B)||!T(y[B],_[B],B,B,y,_,z))return!1}return!0}var pt=o(Te);function Le(y,_){return y.source===_.source&&y.flags===_.flags}function ke(y,_,T,z){var M=y.size===_.size;if(!M)return!1;if(!y.size)return!0;var N={};return y.forEach(function(B,te){if(M){var $=!1,oe=0;_.forEach(function(k,q){!$&&!N[oe]&&($=T(B,k,te,q,y,_,z))&&(N[oe]=!0),oe++}),M=$}}),M}var tr=o(ke),ge=Object.freeze({areArraysEqual:S,areDatesEqual:E,areMapsEqual:A,areObjectsEqual:Te,areRegExpsEqual:Le,areSetsEqual:ke,createIsNestedEqual:n}),me=Object.freeze({areArraysEqual:b,areDatesEqual:E,areMapsEqual:I,areObjectsEqual:pt,areRegExpsEqual:Le,areSetsEqual:tr,createIsNestedEqual:n}),Be=g(ge);function ht(y,_){return Be(y,_,void 0)}var Sn=g(i(ge,{createIsNestedEqual:function(){return a}}));function xn(y,_){return Sn(y,_,void 0)}var On=g(me);function Dn(y,_){return On(y,_,new WeakMap)}var _n=g(i(me,{createIsNestedEqual:function(){return a}}));function Rn(y,_){return _n(y,_,new WeakMap)}function Pn(y){return g(i(ge,y(ge)))}function jn(y){var _=g(i(me,y(me)));return function(T,z,M){return M===void 0&&(M=new WeakMap),_(T,z,M)}}r.circularDeepEqual=Dn,r.circularShallowEqual=Rn,r.createCustomCircularEqual=jn,r.createCustomEqual=Pn,r.deepEqual=ht,r.sameValueZeroEqual=a,r.shallowEqual=xn,Object.defineProperty(r,"__esModule",{value:!0})})})(Dt,Dt.exports);var Lt=Dt.exports;const Qe=kr(Vn);var j={},Po=function(e,r,n){return e===r?!0:e.className===r.className&&n(e.style,r.style)&&e.width===r.width&&e.autoSize===r.autoSize&&e.cols===r.cols&&e.draggableCancel===r.draggableCancel&&e.draggableHandle===r.draggableHandle&&n(e.verticalCompact,r.verticalCompact)&&n(e.compactType,r.compactType)&&n(e.layout,r.layout)&&n(e.margin,r.margin)&&n(e.containerPadding,r.containerPadding)&&e.rowHeight===r.rowHeight&&e.maxRows===r.maxRows&&e.isBounded===r.isBounded&&e.isDraggable===r.isDraggable&&e.isResizable===r.isResizable&&e.allowOverlap===r.allowOverlap&&e.preventCollision===r.preventCollision&&e.useCSSTransforms===r.useCSSTransforms&&e.transformScale===r.transformScale&&e.isDroppable===r.isDroppable&&n(e.resizeHandles,r.resizeHandles)&&n(e.resizeHandle,r.resizeHandle)&&e.onLayoutChange===r.onLayoutChange&&e.onDragStart===r.onDragStart&&e.onDrag===r.onDrag&&e.onDragStop===r.onDragStop&&e.onResizeStart===r.onResizeStart&&e.onResize===r.onResize&&e.onResizeStop===r.onResizeStop&&e.onDrop===r.onDrop&&n(e.droppingItem,r.droppingItem)&&n(e.innerRef,r.innerRef)};Object.defineProperty(j,"__esModule",{value:!0});j.bottom=et;j.childrenEqual=To;j.cloneLayout=Wr;j.cloneLayoutItem=xe;j.collides=tt;j.compact=$r;j.compactItem=qr;j.compactType=Xo;j.correctBounds=Ar;j.fastPositionEqual=Lo;j.fastRGLPropsEqual=void 0;j.getAllCollisions=Ir;j.getFirstCollision=we;j.getLayoutItem=kt;j.getStatics=Ht;j.modifyLayout=Nr;j.moveElement=Ne;j.moveElementAwayFromCollision=Rt;j.noop=void 0;j.perc=Ho;j.resizeItemInDirection=Io;j.setTopLeft=Go;j.setTransform=Bo;j.sortLayoutItems=It;j.sortLayoutItemsByColRow=Xr;j.sortLayoutItemsByRowCol=Yr;j.synchronizeLayoutWithChildren=Fo;j.validateLayout=Yo;j.withLayoutItem=Mo;var cr=Lt,We=jo(L);function jo(t){return t&&t.__esModule?t:{default:t}}function dr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function Ve(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?dr(Object(r),!0).forEach(function(n){Eo(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):dr(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function Eo(t,e,r){return(e=Co(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Co(t){var e=zo(t,"string");return typeof e=="symbol"?e:e+""}function zo(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function et(t){let e=0,r;for(let n=0,o=t.length;n<o;n++)r=t[n].y+t[n].h,r>e&&(e=r);return e}function Wr(t){const e=Array(t.length);for(let r=0,n=t.length;r<n;r++)e[r]=xe(t[r]);return e}function Nr(t,e){const r=Array(t.length);for(let n=0,o=t.length;n<o;n++)e.i===t[n].i?r[n]=e:r[n]=t[n];return r}function Mo(t,e,r){let n=kt(t,e);return n?(n=r(xe(n)),t=Nr(t,n),[t,n]):[t,null]}function xe(t){return{w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,minW:t.minW,maxW:t.maxW,minH:t.minH,maxH:t.maxH,moved:!!t.moved,static:!!t.static,isDraggable:t.isDraggable,isResizable:t.isResizable,resizeHandles:t.resizeHandles,isBounded:t.isBounded}}function To(t,e){return(0,cr.deepEqual)(We.default.Children.map(t,r=>r==null?void 0:r.key),We.default.Children.map(e,r=>r==null?void 0:r.key))&&(0,cr.deepEqual)(We.default.Children.map(t,r=>r==null?void 0:r.props["data-grid"]),We.default.Children.map(e,r=>r==null?void 0:r.props["data-grid"]))}j.fastRGLPropsEqual=Po;function Lo(t,e){return t.left===e.left&&t.top===e.top&&t.width===e.width&&t.height===e.height}function tt(t,e){return!(t.i===e.i||t.x+t.w<=e.x||t.x>=e.x+e.w||t.y+t.h<=e.y||t.y>=e.y+e.h)}function $r(t,e,r,n){const o=Ht(t);let i=et(o);const s=It(t,e),u=Array(t.length);for(let a=0,l=s.length;a<l;a++){let c=xe(s[a]);c.static||(c=qr(o,c,e,r,s,n,i),i=Math.max(i,c.y+c.h),o.push(c)),u[t.indexOf(s[a])]=c,c.moved=!1}return u}const ko={x:"w",y:"h"};function _t(t,e,r,n){const o=ko[n];e[n]+=1;const i=t.map(s=>s.i).indexOf(e.i);for(let s=i+1;s<t.length;s++){const u=t[s];if(!u.static){if(u.y>e.y+e.h)break;tt(e,u)&&_t(t,u,r+e[o],n)}}e[n]=r}function qr(t,e,r,n,o,i,s){const u=r==="vertical",a=r==="horizontal";if(u)for(typeof s=="number"?e.y=Math.min(s,e.y):e.y=Math.min(et(t),e.y);e.y>0&&!we(t,e);)e.y--;else if(a)for(;e.x>0&&!we(t,e);)e.x--;let l;for(;(l=we(t,e))&&!(r===null&&i);)if(a?_t(o,e,l.x+l.w,"x"):_t(o,e,l.y+l.h,"y"),a&&e.x+e.w>n)for(e.x=n-e.w,e.y++;e.x>0&&!we(t,e);)e.x--;return e.y=Math.max(e.y,0),e.x=Math.max(e.x,0),e}function Ar(t,e){const r=Ht(t);for(let n=0,o=t.length;n<o;n++){const i=t[n];if(i.x+i.w>e.cols&&(i.x=e.cols-i.w),i.x<0&&(i.x=0,i.w=e.cols),!i.static)r.push(i);else for(;we(r,i);)i.y++}return t}function kt(t,e){for(let r=0,n=t.length;r<n;r++)if(t[r].i===e)return t[r]}function we(t,e){for(let r=0,n=t.length;r<n;r++)if(tt(t[r],e))return t[r]}function Ir(t,e){return t.filter(r=>tt(r,e))}function Ht(t){return t.filter(e=>e.static)}function Ne(t,e,r,n,o,i,s,u,a){if(e.static&&e.isDraggable!==!0||e.y===n&&e.x===r)return t;"Moving element ".concat(e.i," to [").concat(String(r),",").concat(String(n),"] from [").concat(e.x,",").concat(e.y,"]");const l=e.x,c=e.y;typeof r=="number"&&(e.x=r),typeof n=="number"&&(e.y=n),e.moved=!0;let d=It(t,s);(s==="vertical"&&typeof n=="number"?c>=n:s==="horizontal"&&typeof r=="number"?l>=r:!1)&&(d=d.reverse());const p=Ir(d,e),w=p.length>0;if(w&&a)return Wr(t);if(w&&i)return"Collision prevented on ".concat(e.i,", reverting."),e.x=l,e.y=c,e.moved=!1,t;for(let D=0,x=p.length;D<x;D++){const m=p[D];"Resolving collision between ".concat(e.i," at [").concat(e.x,",").concat(e.y,"] and ").concat(m.i," at [").concat(m.x,",").concat(m.y,"]"),!m.moved&&(m.static?t=Rt(t,m,e,o,s):t=Rt(t,e,m,o,s))}return t}function Rt(t,e,r,n,o,i){const s=o==="horizontal",u=o==="vertical",a=e.static;if(n){n=!1;const d={x:s?Math.max(e.x-r.w,0):r.x,y:u?Math.max(e.y-r.h,0):r.y,w:r.w,h:r.h,i:"-1"},f=we(t,d),p=f&&f.y+f.h>e.y,w=f&&e.x+e.w>f.x;if(f){if(p&&u)return Ne(t,r,void 0,r.y+1,n,a,o);if(p&&o==null)return e.y=r.y,r.y=r.y+r.h,t;if(w&&s)return Ne(t,e,r.x,void 0,n,a,o)}else return"Doing reverse collision on ".concat(r.i," up to [").concat(d.x,",").concat(d.y,"]."),Ne(t,r,s?d.x:void 0,u?d.y:void 0,n,a,o)}const l=s?r.x+1:void 0,c=u?r.y+1:void 0;return l==null&&c==null?t:Ne(t,r,s?r.x+1:void 0,u?r.y+1:void 0,n,a,o)}function Ho(t){return t*100+"%"}const Br=(t,e,r,n)=>t+r>n?e:r,Gr=(t,e,r)=>t<0?e:r,Fr=t=>Math.max(0,t),Wt=t=>Math.max(0,t),Nt=(t,e,r)=>{let{left:n,height:o,width:i}=e;const s=t.top-(o-t.height);return{left:n,width:i,height:Gr(s,t.height,o),top:Wt(s)}},$t=(t,e,r)=>{let{top:n,left:o,height:i,width:s}=e;return{top:n,height:i,width:Br(t.left,t.width,s,r),left:Fr(o)}},qt=(t,e,r)=>{let{top:n,height:o,width:i}=e;const s=t.left-(i-t.width);return{height:o,width:s<0?t.width:Br(t.left,t.width,i,r),top:Wt(n),left:Fr(s)}},At=(t,e,r)=>{let{top:n,left:o,height:i,width:s}=e;return{width:s,left:o,height:Gr(n,t.height,i),top:Wt(n)}},Wo=function(){return Nt(arguments.length<=0?void 0:arguments[0],$t(...arguments))},No=function(){return Nt(arguments.length<=0?void 0:arguments[0],qt(...arguments))},$o=function(){return At(arguments.length<=0?void 0:arguments[0],$t(...arguments))},qo=function(){return At(arguments.length<=0?void 0:arguments[0],qt(...arguments))},Ao={n:Nt,ne:Wo,e:$t,se:$o,s:At,sw:qo,w:qt,nw:No};function Io(t,e,r,n){const o=Ao[t];return o?o(e,Ve(Ve({},e),r),n):r}function Bo(t){let{top:e,left:r,width:n,height:o}=t;const i="translate(".concat(r,"px,").concat(e,"px)");return{transform:i,WebkitTransform:i,MozTransform:i,msTransform:i,OTransform:i,width:"".concat(n,"px"),height:"".concat(o,"px"),position:"absolute"}}function Go(t){let{top:e,left:r,width:n,height:o}=t;return{top:"".concat(e,"px"),left:"".concat(r,"px"),width:"".concat(n,"px"),height:"".concat(o,"px"),position:"absolute"}}function It(t,e){return e==="horizontal"?Xr(t):e==="vertical"?Yr(t):t}function Yr(t){return t.slice(0).sort(function(e,r){return e.y>r.y||e.y===r.y&&e.x>r.x?1:e.y===r.y&&e.x===r.x?0:-1})}function Xr(t){return t.slice(0).sort(function(e,r){return e.x>r.x||e.x===r.x&&e.y>r.y?1:-1})}function Fo(t,e,r,n,o){t=t||[];const i=[];We.default.Children.forEach(e,u=>{if((u==null?void 0:u.key)==null)return;const a=kt(t,String(u.key)),l=u.props["data-grid"];a&&l==null?i.push(xe(a)):l?i.push(xe(Ve(Ve({},l),{},{i:u.key}))):i.push(xe({w:1,h:1,x:0,y:et(i),i:String(u.key)}))});const s=Ar(i,{cols:r});return o?s:$r(s,n,r)}function Yo(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Layout";const r=["x","y","w","h"];if(!Array.isArray(t))throw new Error(e+" must be an array!");for(let n=0,o=t.length;n<o;n++){const i=t[n];for(let s=0;s<r.length;s++){const u=r[s],a=i[u];if(typeof a!="number"||Number.isNaN(a))throw new Error("ReactGridLayout: ".concat(e,"[").concat(n,"].").concat(u," must be a number! Received: ").concat(a," (").concat(typeof a,")"))}if(typeof i.i<"u"&&typeof i.i!="string")throw new Error("ReactGridLayout: ".concat(e,"[").concat(n,"].i must be a string! Received: ").concat(i.i," (").concat(typeof i.i,")"))}}function Xo(t){const{verticalCompact:e,compactType:r}=t||{};return e===!1?null:r}const Uo=()=>{};j.noop=Uo;var ae={};Object.defineProperty(ae,"__esModule",{value:!0});ae.calcGridColWidth=rt;ae.calcGridItemPosition=Vo;ae.calcGridItemWHPx=Pt;ae.calcWH=Jo;ae.calcXY=Ko;ae.clamp=Se;function rt(t){const{margin:e,containerPadding:r,containerWidth:n,cols:o}=t;return(n-e[0]*(o-1)-r[0]*2)/o}function Pt(t,e,r){return Number.isFinite(t)?Math.round(e*t+Math.max(0,t-1)*r):t}function Vo(t,e,r,n,o,i){const{margin:s,containerPadding:u,rowHeight:a}=t,l=rt(t),c={};return i&&i.resizing?(c.width=Math.round(i.resizing.width),c.height=Math.round(i.resizing.height)):(c.width=Pt(n,l,s[0]),c.height=Pt(o,a,s[1])),i&&i.dragging?(c.top=Math.round(i.dragging.top),c.left=Math.round(i.dragging.left)):i&&i.resizing&&typeof i.resizing.top=="number"&&typeof i.resizing.left=="number"?(c.top=Math.round(i.resizing.top),c.left=Math.round(i.resizing.left)):(c.top=Math.round((a+s[1])*r+u[1]),c.left=Math.round((l+s[0])*e+u[0])),c}function Ko(t,e,r,n,o){const{margin:i,containerPadding:s,cols:u,rowHeight:a,maxRows:l}=t,c=rt(t);let d=Math.round((r-s[0])/(c+i[0])),f=Math.round((e-s[1])/(a+i[1]));return d=Se(d,0,u-n),f=Se(f,0,l-o),{x:d,y:f}}function Jo(t,e,r,n,o,i){const{margin:s,maxRows:u,cols:a,rowHeight:l}=t,c=rt(t);let d=Math.round((e+s[0])/(c+s[0])),f=Math.round((r+s[1])/(l+s[1])),p=Se(d,0,a-n),w=Se(f,0,u-o);return["sw","w","nw"].indexOf(i)!==-1&&(p=Se(d,0,a)),["nw","n","ne"].indexOf(i)!==-1&&(w=Se(f,0,u)),{w:p,h:w}}function Se(t,e,r){return Math.max(Math.min(t,r),e)}var nt={},ot={exports:{}},Ur={},W={},le={};Object.defineProperty(le,"__esModule",{value:!0});le.dontSetMe=ri;le.findInArray=Zo;le.int=ti;le.isFunction=Qo;le.isNum=ei;function Zo(t,e){for(let r=0,n=t.length;r<n;r++)if(e.apply(e,[t[r],r,t]))return t[r]}function Qo(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Function]"}function ei(t){return typeof t=="number"&&!isNaN(t)}function ti(t){return parseInt(t,10)}function ri(t,e,r){if(t[e])return new Error(`Invalid prop ${e} passed to ${r} - do not set this, set it on the child.`)}var De={};Object.defineProperty(De,"__esModule",{value:!0});De.browserPrefixToKey=Kr;De.browserPrefixToStyle=ni;De.default=void 0;De.getPrefix=Vr;const gt=["Moz","Webkit","O","ms"];function Vr(){var r,n;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"transform";if(typeof window>"u")return"";const e=(n=(r=window.document)==null?void 0:r.documentElement)==null?void 0:n.style;if(!e||t in e)return"";for(let o=0;o<gt.length;o++)if(Kr(t,gt[o])in e)return gt[o];return""}function Kr(t,e){return e?`${e}${oi(t)}`:t}function ni(t,e){return e?`-${e.toLowerCase()}-${t}`:t}function oi(t){let e="",r=!0;for(let n=0;n<t.length;n++)r?(e+=t[n].toUpperCase(),r=!1):t[n]==="-"?r=!0:e+=t[n];return e}De.default=Vr();Object.defineProperty(W,"__esModule",{value:!0});W.addClassName=Qr;W.addEvent=si;W.addUserSelectStyles=yi;W.createCSSTransform=pi;W.createSVGTransform=hi;W.getTouch=gi;W.getTouchIdentifier=mi;W.getTranslation=Bt;W.innerHeight=ci;W.innerWidth=di;W.matchesSelector=Zr;W.matchesSelectorAndParentsTo=ii;W.offsetXYFromParent=fi;W.outerHeight=li;W.outerWidth=ui;W.removeClassName=en;W.removeEvent=ai;W.scheduleRemoveUserSelectStyles=vi;var ee=le,fr=Jr(De);function Jr(t,e){if(typeof WeakMap=="function")var r=new WeakMap,n=new WeakMap;return(Jr=function(o,i){if(!i&&o&&o.__esModule)return o;var s,u,a={__proto__:null,default:o};if(o===null||typeof o!="object"&&typeof o!="function")return a;if(s=i?n:r){if(s.has(o))return s.get(o);s.set(o,a)}for(const l in o)l!=="default"&&{}.hasOwnProperty.call(o,l)&&((u=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,l))&&(u.get||u.set)?s(a,l,u):a[l]=o[l]);return a})(t,e)}let Fe="";function Zr(t,e){return Fe||(Fe=(0,ee.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(r){return(0,ee.isFunction)(t[r])})),(0,ee.isFunction)(t[Fe])?t[Fe](e):!1}function ii(t,e,r){let n=t;do{if(Zr(n,e))return!0;if(n===r)return!1;n=n.parentNode}while(n);return!1}function si(t,e,r,n){if(!t)return;const o={capture:!0,...n};t.addEventListener?t.addEventListener(e,r,o):t.attachEvent?t.attachEvent("on"+e,r):t["on"+e]=r}function ai(t,e,r,n){if(!t)return;const o={capture:!0,...n};t.removeEventListener?t.removeEventListener(e,r,o):t.detachEvent?t.detachEvent("on"+e,r):t["on"+e]=null}function li(t){let e=t.clientHeight;const r=t.ownerDocument.defaultView.getComputedStyle(t);return e+=(0,ee.int)(r.borderTopWidth),e+=(0,ee.int)(r.borderBottomWidth),e}function ui(t){let e=t.clientWidth;const r=t.ownerDocument.defaultView.getComputedStyle(t);return e+=(0,ee.int)(r.borderLeftWidth),e+=(0,ee.int)(r.borderRightWidth),e}function ci(t){let e=t.clientHeight;const r=t.ownerDocument.defaultView.getComputedStyle(t);return e-=(0,ee.int)(r.paddingTop),e-=(0,ee.int)(r.paddingBottom),e}function di(t){let e=t.clientWidth;const r=t.ownerDocument.defaultView.getComputedStyle(t);return e-=(0,ee.int)(r.paddingLeft),e-=(0,ee.int)(r.paddingRight),e}function fi(t,e,r){const o=e===e.ownerDocument.body?{left:0,top:0}:e.getBoundingClientRect(),i=(t.clientX+e.scrollLeft-o.left)/r,s=(t.clientY+e.scrollTop-o.top)/r;return{x:i,y:s}}function pi(t,e){const r=Bt(t,e,"px");return{[(0,fr.browserPrefixToKey)("transform",fr.default)]:r}}function hi(t,e){return Bt(t,e,"")}function Bt(t,e,r){let{x:n,y:o}=t,i=`translate(${n}${r},${o}${r})`;if(e){const s=`${typeof e.x=="string"?e.x:e.x+r}`,u=`${typeof e.y=="string"?e.y:e.y+r}`;i=`translate(${s}, ${u})`+i}return i}function gi(t,e){return t.targetTouches&&(0,ee.findInArray)(t.targetTouches,r=>e===r.identifier)||t.changedTouches&&(0,ee.findInArray)(t.changedTouches,r=>e===r.identifier)}function mi(t){if(t.targetTouches&&t.targetTouches[0])return t.targetTouches[0].identifier;if(t.changedTouches&&t.changedTouches[0])return t.changedTouches[0].identifier}function yi(t){if(!t)return;let e=t.getElementById("react-draggable-style-el");e||(e=t.createElement("style"),e.type="text/css",e.id="react-draggable-style-el",e.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;}
2
- `,e.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;}
3
- `,t.getElementsByTagName("head")[0].appendChild(e)),t.body&&Qr(t.body,"react-draggable-transparent-selection")}function vi(t){window.requestAnimationFrame?window.requestAnimationFrame(()=>{pr(t)}):pr(t)}function pr(t){if(t)try{if(t.body&&en(t.body,"react-draggable-transparent-selection"),t.selection)t.selection.empty();else{const e=(t.defaultView||window).getSelection();e&&e.type!=="Caret"&&e.removeAllRanges()}}catch{}}function Qr(t,e){t.classList?t.classList.add(e):t.className.match(new RegExp(`(?:^|\\s)${e}(?!\\S)`))||(t.className+=` ${e}`)}function en(t,e){t.classList?t.classList.remove(e):t.className=t.className.replace(new RegExp(`(?:^|\\s)${e}(?!\\S)`,"g"),"")}var ue={};Object.defineProperty(ue,"__esModule",{value:!0});ue.canDragX=Si;ue.canDragY=xi;ue.createCoreData=Di;ue.createDraggableData=_i;ue.getBoundPosition=bi;ue.getControlPosition=Oi;ue.snapToGrid=wi;var Q=le,Ce=W;function bi(t,e,r){if(!t.props.bounds)return[e,r];let{bounds:n}=t.props;n=typeof n=="string"?n:Ri(n);const o=Gt(t);if(typeof n=="string"){const{ownerDocument:i}=o,s=i.defaultView;let u;if(n==="parent"?u=o.parentNode:u=o.getRootNode().querySelector(n),!(u instanceof s.HTMLElement))throw new Error('Bounds selector "'+n+'" could not find an element.');const a=u,l=s.getComputedStyle(o),c=s.getComputedStyle(a);n={left:-o.offsetLeft+(0,Q.int)(c.paddingLeft)+(0,Q.int)(l.marginLeft),top:-o.offsetTop+(0,Q.int)(c.paddingTop)+(0,Q.int)(l.marginTop),right:(0,Ce.innerWidth)(a)-(0,Ce.outerWidth)(o)-o.offsetLeft+(0,Q.int)(c.paddingRight)-(0,Q.int)(l.marginRight),bottom:(0,Ce.innerHeight)(a)-(0,Ce.outerHeight)(o)-o.offsetTop+(0,Q.int)(c.paddingBottom)-(0,Q.int)(l.marginBottom)}}return(0,Q.isNum)(n.right)&&(e=Math.min(e,n.right)),(0,Q.isNum)(n.bottom)&&(r=Math.min(r,n.bottom)),(0,Q.isNum)(n.left)&&(e=Math.max(e,n.left)),(0,Q.isNum)(n.top)&&(r=Math.max(r,n.top)),[e,r]}function wi(t,e,r){const n=Math.round(e/t[0])*t[0],o=Math.round(r/t[1])*t[1];return[n,o]}function Si(t){return t.props.axis==="both"||t.props.axis==="x"}function xi(t){return t.props.axis==="both"||t.props.axis==="y"}function Oi(t,e,r){const n=typeof e=="number"?(0,Ce.getTouch)(t,e):null;if(typeof e=="number"&&!n)return null;const o=Gt(r),i=r.props.offsetParent||o.offsetParent||o.ownerDocument.body;return(0,Ce.offsetXYFromParent)(n||t,i,r.props.scale)}function Di(t,e,r){const n=!(0,Q.isNum)(t.lastX),o=Gt(t);return n?{node:o,deltaX:0,deltaY:0,lastX:e,lastY:r,x:e,y:r}:{node:o,deltaX:e-t.lastX,deltaY:r-t.lastY,lastX:t.lastX,lastY:t.lastY,x:e,y:r}}function _i(t,e){const r=t.props.scale;return{node:e.node,x:t.state.x+e.deltaX/r,y:t.state.y+e.deltaY/r,deltaX:e.deltaX/r,deltaY:e.deltaY/r,lastX:t.state.x,lastY:t.state.y}}function Ri(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom}}function Gt(t){const e=t.findDOMNode();if(!e)throw new Error("<DraggableCore>: Unmounted during event!");return e}var it={},st={};Object.defineProperty(st,"__esModule",{value:!0});st.default=Pi;function Pi(){}Object.defineProperty(it,"__esModule",{value:!0});it.default=void 0;var mt=tn(L),X=Ft(he),ji=Ft(Tt),Y=W,fe=ue,yt=le,He=Ft(st);function Ft(t){return t&&t.__esModule?t:{default:t}}function tn(t,e){if(typeof WeakMap=="function")var r=new WeakMap,n=new WeakMap;return(tn=function(o,i){if(!i&&o&&o.__esModule)return o;var s,u,a={__proto__:null,default:o};if(o===null||typeof o!="object"&&typeof o!="function")return a;if(s=i?n:r){if(s.has(o))return s.get(o);s.set(o,a)}for(const l in o)l!=="default"&&{}.hasOwnProperty.call(o,l)&&((u=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,l))&&(u.get||u.set)?s(a,l,u):a[l]=o[l]);return a})(t,e)}function U(t,e,r){return(e=Ei(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ei(t){var e=Ci(t,"string");return typeof e=="symbol"?e:e+""}function Ci(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}const re={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let pe=re.mouse,at=class extends mt.Component{constructor(){super(...arguments),U(this,"dragging",!1),U(this,"lastX",NaN),U(this,"lastY",NaN),U(this,"touchIdentifier",null),U(this,"mounted",!1),U(this,"handleDragStart",e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&typeof e.button=="number"&&e.button!==0)return!1;const r=this.findDOMNode();if(!r||!r.ownerDocument||!r.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:n}=r;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!(0,Y.matchesSelectorAndParentsTo)(e.target,this.props.handle,r)||this.props.cancel&&(0,Y.matchesSelectorAndParentsTo)(e.target,this.props.cancel,r))return;e.type==="touchstart"&&!this.props.allowMobileScroll&&e.preventDefault();const o=(0,Y.getTouchIdentifier)(e);this.touchIdentifier=o;const i=(0,fe.getControlPosition)(e,o,this);if(i==null)return;const{x:s,y:u}=i,a=(0,fe.createCoreData)(this,s,u);(0,He.default)("DraggableCore: handleDragStart: %j",a),(0,He.default)("calling",this.props.onStart),!(this.props.onStart(e,a)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,Y.addUserSelectStyles)(n),this.dragging=!0,this.lastX=s,this.lastY=u,(0,Y.addEvent)(n,pe.move,this.handleDrag),(0,Y.addEvent)(n,pe.stop,this.handleDragStop))}),U(this,"handleDrag",e=>{const r=(0,fe.getControlPosition)(e,this.touchIdentifier,this);if(r==null)return;let{x:n,y:o}=r;if(Array.isArray(this.props.grid)){let u=n-this.lastX,a=o-this.lastY;if([u,a]=(0,fe.snapToGrid)(this.props.grid,u,a),!u&&!a)return;n=this.lastX+u,o=this.lastY+a}const i=(0,fe.createCoreData)(this,n,o);if((0,He.default)("DraggableCore: handleDrag: %j",i),this.props.onDrag(e,i)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const a=document.createEvent("MouseEvents");a.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(a)}return}this.lastX=n,this.lastY=o}),U(this,"handleDragStop",e=>{if(!this.dragging)return;const r=(0,fe.getControlPosition)(e,this.touchIdentifier,this);if(r==null)return;let{x:n,y:o}=r;if(Array.isArray(this.props.grid)){let a=n-this.lastX||0,l=o-this.lastY||0;[a,l]=(0,fe.snapToGrid)(this.props.grid,a,l),n=this.lastX+a,o=this.lastY+l}const i=(0,fe.createCoreData)(this,n,o);if(this.props.onStop(e,i)===!1||this.mounted===!1)return!1;const u=this.findDOMNode();u&&this.props.enableUserSelectHack&&(0,Y.scheduleRemoveUserSelectStyles)(u.ownerDocument),(0,He.default)("DraggableCore: handleDragStop: %j",i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,u&&((0,He.default)("DraggableCore: Removing handlers"),(0,Y.removeEvent)(u.ownerDocument,pe.move,this.handleDrag),(0,Y.removeEvent)(u.ownerDocument,pe.stop,this.handleDragStop))}),U(this,"onMouseDown",e=>(pe=re.mouse,this.handleDragStart(e))),U(this,"onMouseUp",e=>(pe=re.mouse,this.handleDragStop(e))),U(this,"onTouchStart",e=>(pe=re.touch,this.handleDragStart(e))),U(this,"onTouchEnd",e=>(pe=re.touch,this.handleDragStop(e)))}componentDidMount(){this.mounted=!0;const e=this.findDOMNode();e&&(0,Y.addEvent)(e,re.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const e=this.findDOMNode();if(e){const{ownerDocument:r}=e;(0,Y.removeEvent)(r,re.mouse.move,this.handleDrag),(0,Y.removeEvent)(r,re.touch.move,this.handleDrag),(0,Y.removeEvent)(r,re.mouse.stop,this.handleDragStop),(0,Y.removeEvent)(r,re.touch.stop,this.handleDragStop),(0,Y.removeEvent)(e,re.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,Y.scheduleRemoveUserSelectStyles)(r)}}findDOMNode(){var e,r,n;return(e=this.props)!=null&&e.nodeRef?(n=(r=this.props)==null?void 0:r.nodeRef)==null?void 0:n.current:ji.default.findDOMNode(this)}render(){return mt.cloneElement(mt.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};it.default=at;U(at,"displayName","DraggableCore");U(at,"propTypes",{allowAnyClick:X.default.bool,allowMobileScroll:X.default.bool,children:X.default.node.isRequired,disabled:X.default.bool,enableUserSelectHack:X.default.bool,offsetParent:function(t,e){if(t[e]&&t[e].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:X.default.arrayOf(X.default.number),handle:X.default.string,cancel:X.default.string,nodeRef:X.default.object,onStart:X.default.func,onDrag:X.default.func,onStop:X.default.func,onMouseDown:X.default.func,scale:X.default.number,className:yt.dontSetMe,style:yt.dontSetMe,transform:yt.dontSetMe});U(at,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1});(function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"DraggableCore",{enumerable:!0,get:function(){return a.default}}),t.default=void 0;var e=d(L),r=c(he),n=c(Tt),o=Qe,i=W,s=ue,u=le,a=c(it),l=c(st);function c(m){return m&&m.__esModule?m:{default:m}}function d(m,v){if(typeof WeakMap=="function")var g=new WeakMap,S=new WeakMap;return(d=function(b,E){if(!E&&b&&b.__esModule)return b;var A,I,V={__proto__:null,default:b};if(b===null||typeof b!="object"&&typeof b!="function")return V;if(A=E?S:g){if(A.has(b))return A.get(b);A.set(b,V)}for(const Z in b)Z!=="default"&&{}.hasOwnProperty.call(b,Z)&&((I=(A=Object.defineProperty)&&Object.getOwnPropertyDescriptor(b,Z))&&(I.get||I.set)?A(V,Z,I):V[Z]=b[Z]);return V})(m,v)}function f(){return f=Object.assign?Object.assign.bind():function(m){for(var v=1;v<arguments.length;v++){var g=arguments[v];for(var S in g)({}).hasOwnProperty.call(g,S)&&(m[S]=g[S])}return m},f.apply(null,arguments)}function p(m,v,g){return(v=w(v))in m?Object.defineProperty(m,v,{value:g,enumerable:!0,configurable:!0,writable:!0}):m[v]=g,m}function w(m){var v=D(m,"string");return typeof v=="symbol"?v:v+""}function D(m,v){if(typeof m!="object"||!m)return m;var g=m[Symbol.toPrimitive];if(g!==void 0){var S=g.call(m,v);if(typeof S!="object")return S;throw new TypeError("@@toPrimitive must return a primitive value.")}return(v==="string"?String:Number)(m)}class x extends e.Component{static getDerivedStateFromProps(v,g){let{position:S}=v,{prevPropsPosition:b}=g;return S&&(!b||S.x!==b.x||S.y!==b.y)?((0,l.default)("Draggable: getDerivedStateFromProps %j",{position:S,prevPropsPosition:b}),{x:S.x,y:S.y,prevPropsPosition:{...S}}):null}constructor(v){super(v),p(this,"onDragStart",(g,S)=>{if((0,l.default)("Draggable: onDragStart: %j",S),this.props.onStart(g,(0,s.createDraggableData)(this,S))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),p(this,"onDrag",(g,S)=>{if(!this.state.dragging)return!1;(0,l.default)("Draggable: onDrag: %j",S);const b=(0,s.createDraggableData)(this,S),E={x:b.x,y:b.y,slackX:0,slackY:0};if(this.props.bounds){const{x:I,y:V}=E;E.x+=this.state.slackX,E.y+=this.state.slackY;const[Z,Te]=(0,s.getBoundPosition)(this,E.x,E.y);E.x=Z,E.y=Te,E.slackX=this.state.slackX+(I-E.x),E.slackY=this.state.slackY+(V-E.y),b.x=E.x,b.y=E.y,b.deltaX=E.x-this.state.x,b.deltaY=E.y-this.state.y}if(this.props.onDrag(g,b)===!1)return!1;this.setState(E)}),p(this,"onDragStop",(g,S)=>{if(!this.state.dragging||this.props.onStop(g,(0,s.createDraggableData)(this,S))===!1)return!1;(0,l.default)("Draggable: onDragStop: %j",S);const E={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:I,y:V}=this.props.position;E.x=I,E.y=V}this.setState(E)}),this.state={dragging:!1,dragged:!1,x:v.position?v.position.x:v.defaultPosition.x,y:v.position?v.position.y:v.defaultPosition.y,prevPropsPosition:{...v.position},slackX:0,slackY:0,isElementSVG:!1},v.position&&!(v.onDrag||v.onStop)&&console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){typeof window.SVGElement<"u"&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){var v,g;return((g=(v=this.props)==null?void 0:v.nodeRef)==null?void 0:g.current)??n.default.findDOMNode(this)}render(){const{axis:v,bounds:g,children:S,defaultPosition:b,defaultClassName:E,defaultClassNameDragging:A,defaultClassNameDragged:I,position:V,positionOffset:Z,scale:Te,...pt}=this.props;let Le={},ke=null;const ge=!!!V||this.state.dragging,me=V||b,Be={x:(0,s.canDragX)(this)&&ge?this.state.x:me.x,y:(0,s.canDragY)(this)&&ge?this.state.y:me.y};this.state.isElementSVG?ke=(0,i.createSVGTransform)(Be,Z):Le=(0,i.createCSSTransform)(Be,Z);const ht=(0,o.clsx)(S.props.className||"",E,{[A]:this.state.dragging,[I]:this.state.dragged});return e.createElement(a.default,f({},pt,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),e.cloneElement(e.Children.only(S),{className:ht,style:{...S.props.style,...Le},transform:ke}))}}t.default=x,p(x,"displayName","Draggable"),p(x,"propTypes",{...a.default.propTypes,axis:r.default.oneOf(["both","x","y","none"]),bounds:r.default.oneOfType([r.default.shape({left:r.default.number,right:r.default.number,top:r.default.number,bottom:r.default.number}),r.default.string,r.default.oneOf([!1])]),defaultClassName:r.default.string,defaultClassNameDragging:r.default.string,defaultClassNameDragged:r.default.string,defaultPosition:r.default.shape({x:r.default.number,y:r.default.number}),positionOffset:r.default.shape({x:r.default.oneOfType([r.default.number,r.default.string]),y:r.default.oneOfType([r.default.number,r.default.string])}),position:r.default.shape({x:r.default.number,y:r.default.number}),className:u.dontSetMe,style:u.dontSetMe,transform:u.dontSetMe}),p(x,"defaultProps",{...a.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})})(Ur);const{default:rn,DraggableCore:zi}=Ur;ot.exports=rn;ot.exports.default=rn;ot.exports.DraggableCore=zi;var nn=ot.exports,lt={exports:{}},Ae={},Yt={};Yt.__esModule=!0;Yt.cloneElement=Wi;var Mi=Ti(L);function Ti(t){return t&&t.__esModule?t:{default:t}}function hr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function gr(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?hr(Object(r),!0).forEach(function(n){Li(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):hr(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function Li(t,e,r){return(e=ki(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ki(t){var e=Hi(t,"string");return typeof e=="symbol"?e:e+""}function Hi(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Wi(t,e){return e.style&&t.props.style&&(e.style=gr(gr({},t.props.style),e.style)),e.className&&t.props.className&&(e.className=`${t.props.className} ${e.className}`),Mi.default.cloneElement(t,e)}var Ie={};Ie.__esModule=!0;Ie.resizableProps=void 0;var R=Ni(he);function Ni(t){return t&&t.__esModule?t:{default:t}}Ie.resizableProps={axis:R.default.oneOf(["both","x","y","none"]),className:R.default.string,children:R.default.element.isRequired,draggableOpts:R.default.shape({allowAnyClick:R.default.bool,cancel:R.default.string,children:R.default.node,disabled:R.default.bool,enableUserSelectHack:R.default.bool,offsetParent:typeof Element<"u"?R.default.instanceOf(Element):R.default.any,grid:R.default.arrayOf(R.default.number),handle:R.default.string,nodeRef:R.default.object,onStart:R.default.func,onDrag:R.default.func,onStop:R.default.func,onMouseDown:R.default.func,scale:R.default.number}),height:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];const[n]=e;return n.axis==="both"||n.axis==="y"?R.default.number.isRequired(...e):R.default.number(...e)},handle:R.default.oneOfType([R.default.node,R.default.func]),handleSize:R.default.arrayOf(R.default.number),lockAspectRatio:R.default.bool,maxConstraints:R.default.arrayOf(R.default.number),minConstraints:R.default.arrayOf(R.default.number),onResizeStop:R.default.func,onResizeStart:R.default.func,onResize:R.default.func,resizeHandles:R.default.arrayOf(R.default.oneOf(["s","w","e","n","sw","nw","se","ne"])),transformScale:R.default.number,width:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];const[n]=e;return n.axis==="both"||n.axis==="x"?R.default.number.isRequired(...e):R.default.number(...e)}};Ae.__esModule=!0;Ae.default=void 0;var Re=on(L),$i=nn,qi=Yt,Ai=Ie;const Ii=["children","className","draggableOpts","width","height","handle","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"];function on(t,e){if(typeof WeakMap=="function")var r=new WeakMap,n=new WeakMap;return(on=function(o,i){if(!i&&o&&o.__esModule)return o;var s,u,a={__proto__:null,default:o};if(o===null||typeof o!="object"&&typeof o!="function")return a;if(s=i?n:r){if(s.has(o))return s.get(o);s.set(o,a)}for(const l in o)l!=="default"&&{}.hasOwnProperty.call(o,l)&&((u=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,l))&&(u.get||u.set)?s(a,l,u):a[l]=o[l]);return a})(t,e)}function jt(){return jt=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},jt.apply(null,arguments)}function Bi(t,e){if(t==null)return{};var r,n,o=Gi(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)r=i[n],e.indexOf(r)===-1&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Gi(t,e){if(t==null)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(e.indexOf(n)!==-1)continue;r[n]=t[n]}return r}function mr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function vt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?mr(Object(r),!0).forEach(function(n){Fi(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):mr(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function Fi(t,e,r){return(e=Yi(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Yi(t){var e=Xi(t,"string");return typeof e=="symbol"?e:e+""}function Xi(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}class Xt extends Re.Component{constructor(){super(...arguments),this.handleRefs={},this.lastHandleRect=null,this.slack=null,this.lastSize=null}componentWillUnmount(){this.resetData()}resetData(){this.lastHandleRect=this.slack=this.lastSize=null}runConstraints(e,r){const{minConstraints:n,maxConstraints:o,lockAspectRatio:i}=this.props;if(!n&&!o&&!i)return[e,r];if(i){const c=this.props.width/this.props.height,d=e-this.props.width,f=r-this.props.height;Math.abs(d)>Math.abs(f*c)?r=e/c:e=r*c}const[s,u]=[e,r];let[a,l]=this.slack||[0,0];return e+=a,r+=l,n&&(e=Math.max(n[0],e),r=Math.max(n[1],r)),o&&(e=Math.min(o[0],e),r=Math.min(o[1],r)),this.slack=[a+(s-e),l+(u-r)],[e,r]}resizeHandler(e,r){return(n,o)=>{var v;let{node:i,deltaX:s,deltaY:u}=o;e==="onResizeStart"&&this.resetData();const a=(this.props.axis==="both"||this.props.axis==="x")&&r!=="n"&&r!=="s",l=(this.props.axis==="both"||this.props.axis==="y")&&r!=="e"&&r!=="w";if(!a&&!l)return;const c=r[0],d=r[r.length-1],f=i.getBoundingClientRect();if(this.lastHandleRect!=null){if(d==="w"){const g=f.left-this.lastHandleRect.left;s+=g}if(c==="n"){const g=f.top-this.lastHandleRect.top;u+=g}}this.lastHandleRect=f,d==="w"&&(s=-s),c==="n"&&(u=-u);let p=this.props.width+(a?s/this.props.transformScale:0),w=this.props.height+(l?u/this.props.transformScale:0);[p,w]=this.runConstraints(p,w),e==="onResizeStop"&&this.lastSize&&({width:p,height:w}=this.lastSize);const D=p!==this.props.width||w!==this.props.height;e!=="onResizeStop"&&(this.lastSize={width:p,height:w});const x=typeof this.props[e]=="function"?this.props[e]:null;x&&!(e==="onResize"&&!D)&&((v=n.persist)==null||v.call(n),x(n,{node:i,size:{width:p,height:w},handle:r})),e==="onResizeStop"&&this.resetData()}}renderResizeHandle(e,r){const{handle:n}=this.props;if(!n)return Re.createElement("span",{className:`react-resizable-handle react-resizable-handle-${e}`,ref:r});if(typeof n=="function")return n(e,r);const o=typeof n.type=="string",i=vt({ref:r},o?{}:{handleAxis:e});return Re.cloneElement(n,i)}render(){const e=this.props,{children:r,className:n,draggableOpts:o,width:i,height:s,handle:u,handleSize:a,lockAspectRatio:l,axis:c,minConstraints:d,maxConstraints:f,onResize:p,onResizeStop:w,onResizeStart:D,resizeHandles:x,transformScale:m}=e,v=Bi(e,Ii);return(0,qi.cloneElement)(r,vt(vt({},v),{},{className:`${n?`${n} `:""}react-resizable`,children:[...Re.Children.toArray(r.props.children),...x.map(g=>{const S=this.handleRefs[g]??(this.handleRefs[g]=Re.createRef());return Re.createElement($i.DraggableCore,jt({},o,{nodeRef:S,key:`resizableHandle-${g}`,onStop:this.resizeHandler("onResizeStop",g),onStart:this.resizeHandler("onResizeStart",g),onDrag:this.resizeHandler("onResize",g)}),this.renderResizeHandle(g,S))})]}))}}Ae.default=Xt;Xt.propTypes=Ai.resizableProps;Xt.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1};var ut={};ut.__esModule=!0;ut.default=void 0;var bt=an(L),Ui=sn(he),Vi=sn(Ae),Ki=Ie;const Ji=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function sn(t){return t&&t.__esModule?t:{default:t}}function an(t,e){if(typeof WeakMap=="function")var r=new WeakMap,n=new WeakMap;return(an=function(o,i){if(!i&&o&&o.__esModule)return o;var s,u,a={__proto__:null,default:o};if(o===null||typeof o!="object"&&typeof o!="function")return a;if(s=i?n:r){if(s.has(o))return s.get(o);s.set(o,a)}for(const l in o)l!=="default"&&{}.hasOwnProperty.call(o,l)&&((u=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,l))&&(u.get||u.set)?s(a,l,u):a[l]=o[l]);return a})(t,e)}function Et(){return Et=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},Et.apply(null,arguments)}function yr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function Ke(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?yr(Object(r),!0).forEach(function(n){Zi(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):yr(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function Zi(t,e,r){return(e=Qi(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Qi(t){var e=es(t,"string");return typeof e=="symbol"?e:e+""}function es(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function ts(t,e){if(t==null)return{};var r,n,o=rs(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)r=i[n],e.indexOf(r)===-1&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function rs(t,e){if(t==null)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(e.indexOf(n)!==-1)continue;r[n]=t[n]}return r}class ln extends bt.Component{constructor(){super(...arguments),this.state={width:this.props.width,height:this.props.height,propsWidth:this.props.width,propsHeight:this.props.height},this.onResize=(e,r)=>{var o;const{size:n}=r;this.props.onResize?((o=e.persist)==null||o.call(e),this.setState(n,()=>this.props.onResize&&this.props.onResize(e,r))):this.setState(n)}}static getDerivedStateFromProps(e,r){return r.propsWidth!==e.width||r.propsHeight!==e.height?{width:e.width,height:e.height,propsWidth:e.width,propsHeight:e.height}:null}render(){const e=this.props,{handle:r,handleSize:n,onResize:o,onResizeStart:i,onResizeStop:s,draggableOpts:u,minConstraints:a,maxConstraints:l,lockAspectRatio:c,axis:d,width:f,height:p,resizeHandles:w,style:D,transformScale:x}=e,m=ts(e,Ji);return bt.createElement(Vi.default,{axis:d,draggableOpts:u,handle:r,handleSize:n,height:this.state.height,lockAspectRatio:c,maxConstraints:l,minConstraints:a,onResizeStart:i,onResize:this.onResize,onResizeStop:s,resizeHandles:w,transformScale:x,width:this.state.width},bt.createElement("div",Et({},m,{style:Ke(Ke({},D),{},{width:this.state.width+"px",height:this.state.height+"px"})})))}}ut.default=ln;ln.propTypes=Ke(Ke({},Ki.resizableProps),{},{children:Ui.default.element});lt.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")};lt.exports.Resizable=Ae.default;lt.exports.ResizableBox=ut.default;var ns=lt.exports,ce={};Object.defineProperty(ce,"__esModule",{value:!0});ce.resizeHandleType=ce.resizeHandleAxesType=ce.default=void 0;var P=un(he),os=un(L);function un(t){return t&&t.__esModule?t:{default:t}}const is=ce.resizeHandleAxesType=P.default.arrayOf(P.default.oneOf(["s","w","e","n","sw","nw","se","ne"])),ss=ce.resizeHandleType=P.default.oneOfType([P.default.node,P.default.func]);ce.default={className:P.default.string,style:P.default.object,width:P.default.number,autoSize:P.default.bool,cols:P.default.number,draggableCancel:P.default.string,draggableHandle:P.default.string,verticalCompact:function(t){t.verticalCompact},compactType:P.default.oneOf(["vertical","horizontal"]),layout:function(t){var e=t.layout;e!==void 0&&j.validateLayout(e,"layout")},margin:P.default.arrayOf(P.default.number),containerPadding:P.default.arrayOf(P.default.number),rowHeight:P.default.number,maxRows:P.default.number,isBounded:P.default.bool,isDraggable:P.default.bool,isResizable:P.default.bool,allowOverlap:P.default.bool,preventCollision:P.default.bool,useCSSTransforms:P.default.bool,transformScale:P.default.number,isDroppable:P.default.bool,resizeHandles:is,resizeHandle:ss,onLayoutChange:P.default.func,onDragStart:P.default.func,onDrag:P.default.func,onDragStop:P.default.func,onResizeStart:P.default.func,onResize:P.default.func,onResizeStop:P.default.func,onDrop:P.default.func,droppingItem:P.default.shape({i:P.default.string.isRequired,w:P.default.number.isRequired,h:P.default.number.isRequired}),children:function(t,e){const r=t[e],n={};os.default.Children.forEach(r,function(o){if((o==null?void 0:o.key)!=null){if(n[o.key])throw new Error('Duplicate child key "'+o.key+'" found! This will cause problems in ReactGridLayout.');n[o.key]=!0}})},innerRef:P.default.any};Object.defineProperty(nt,"__esModule",{value:!0});nt.default=void 0;var Pe=Ut(L),vr=Tt,C=Ut(he),as=nn,ls=ns,je=j,G=ae,br=ce,us=Ut(Qe);function Ut(t){return t&&t.__esModule?t:{default:t}}function wr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function wt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?wr(Object(r),!0).forEach(function(n){ne(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):wr(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function ne(t,e,r){return(e=cs(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function cs(t){var e=ds(t,"string");return typeof e=="symbol"?e:e+""}function ds(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}class Vt extends Pe.default.Component{constructor(){super(...arguments),ne(this,"state",{resizing:null,dragging:null,className:""}),ne(this,"elementRef",Pe.default.createRef()),ne(this,"onDragStart",(e,r)=>{let{node:n}=r;const{onDragStart:o,transformScale:i}=this.props;if(!o)return;const s={top:0,left:0},{offsetParent:u}=n;if(!u)return;const a=u.getBoundingClientRect(),l=n.getBoundingClientRect(),c=l.left/i,d=a.left/i,f=l.top/i,p=a.top/i;s.left=c-d+u.scrollLeft,s.top=f-p+u.scrollTop,this.setState({dragging:s});const{x:w,y:D}=(0,G.calcXY)(this.getPositionParams(),s.top,s.left,this.props.w,this.props.h);return o.call(this,this.props.i,w,D,{e,node:n,newPosition:s})}),ne(this,"onDrag",(e,r,n)=>{let{node:o,deltaX:i,deltaY:s}=r;const{onDrag:u}=this.props;if(!u)return;if(!this.state.dragging)throw new Error("onDrag called before onDragStart.");let a=this.state.dragging.top+s,l=this.state.dragging.left+i;const{isBounded:c,i:d,w:f,h:p,containerWidth:w}=this.props,D=this.getPositionParams();if(c){const{offsetParent:g}=o;if(g){const{margin:S,rowHeight:b}=this.props,E=g.clientHeight-(0,G.calcGridItemWHPx)(p,b,S[1]);a=(0,G.clamp)(a,0,E);const A=(0,G.calcGridColWidth)(D),I=w-(0,G.calcGridItemWHPx)(f,A,S[0]);l=(0,G.clamp)(l,0,I)}}const x={top:a,left:l};n?this.setState({dragging:x}):(0,vr.flushSync)(()=>{this.setState({dragging:x})});const{x:m,y:v}=(0,G.calcXY)(D,a,l,f,p);return u.call(this,d,m,v,{e,node:o,newPosition:x})}),ne(this,"onDragStop",(e,r)=>{let{node:n}=r;const{onDragStop:o}=this.props;if(!o)return;if(!this.state.dragging)throw new Error("onDragEnd called before onDragStart.");const{w:i,h:s,i:u}=this.props,{left:a,top:l}=this.state.dragging,c={top:l,left:a};this.setState({dragging:null});const{x:d,y:f}=(0,G.calcXY)(this.getPositionParams(),l,a,i,s);return o.call(this,u,d,f,{e,node:n,newPosition:c})}),ne(this,"onResizeStop",(e,r,n)=>this.onResizeHandler(e,r,n,"onResizeStop")),ne(this,"onResizeStart",(e,r,n)=>this.onResizeHandler(e,r,n,"onResizeStart")),ne(this,"onResize",(e,r,n)=>this.onResizeHandler(e,r,n,"onResize"))}shouldComponentUpdate(e,r){if(this.props.children!==e.children||this.props.droppingPosition!==e.droppingPosition)return!0;const n=(0,G.calcGridItemPosition)(this.getPositionParams(this.props),this.props.x,this.props.y,this.props.w,this.props.h,this.state),o=(0,G.calcGridItemPosition)(this.getPositionParams(e),e.x,e.y,e.w,e.h,r);return!(0,je.fastPositionEqual)(n,o)||this.props.useCSSTransforms!==e.useCSSTransforms}componentDidMount(){this.moveDroppingItem({})}componentDidUpdate(e){this.moveDroppingItem(e)}moveDroppingItem(e){const{droppingPosition:r}=this.props;if(!r)return;const n=this.elementRef.current;if(!n)return;const o=e.droppingPosition||{left:0,top:0},{dragging:i}=this.state,s=i&&r.left!==o.left||r.top!==o.top;if(!i)this.onDragStart(r.e,{node:n,deltaX:r.left,deltaY:r.top});else if(s){const u=r.left-i.left,a=r.top-i.top;this.onDrag(r.e,{node:n,deltaX:u,deltaY:a},!0)}}getPositionParams(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.props;return{cols:e.cols,containerPadding:e.containerPadding,containerWidth:e.containerWidth,margin:e.margin,maxRows:e.maxRows,rowHeight:e.rowHeight}}createStyle(e){const{usePercentages:r,containerWidth:n,useCSSTransforms:o}=this.props;let i;return o?i=(0,je.setTransform)(e):(i=(0,je.setTopLeft)(e),r&&(i.left=(0,je.perc)(e.left/n),i.width=(0,je.perc)(e.width/n))),i}mixinDraggable(e,r){return Pe.default.createElement(as.DraggableCore,{disabled:!r,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop,handle:this.props.handle,cancel:".react-resizable-handle"+(this.props.cancel?","+this.props.cancel:""),scale:this.props.transformScale,nodeRef:this.elementRef},e)}curryResizeHandler(e,r){return(n,o)=>r(n,o,e)}mixinResizable(e,r,n){const{cols:o,minW:i,minH:s,maxW:u,maxH:a,transformScale:l,resizeHandles:c,resizeHandle:d}=this.props,f=this.getPositionParams(),p=(0,G.calcGridItemPosition)(f,0,0,o,0).width,w=(0,G.calcGridItemPosition)(f,0,0,i,s),D=(0,G.calcGridItemPosition)(f,0,0,u,a),x=[w.width,w.height],m=[Math.min(D.width,p),Math.min(D.height,1/0)];return Pe.default.createElement(ls.Resizable,{draggableOpts:{disabled:!n},className:n?void 0:"react-resizable-hide",width:r.width,height:r.height,minConstraints:x,maxConstraints:m,onResizeStop:this.curryResizeHandler(r,this.onResizeStop),onResizeStart:this.curryResizeHandler(r,this.onResizeStart),onResize:this.curryResizeHandler(r,this.onResize),transformScale:l,resizeHandles:c,handle:d},e)}onResizeHandler(e,r,n,o){let{node:i,size:s,handle:u}=r;const a=this.props[o];if(!a)return;const{x:l,y:c,i:d,maxH:f,minH:p,containerWidth:w}=this.props,{minW:D,maxW:x}=this.props;let m=s;i&&(m=(0,je.resizeItemInDirection)(u,n,s,w),(0,vr.flushSync)(()=>{this.setState({resizing:o==="onResizeStop"?null:m})}));let{w:v,h:g}=(0,G.calcWH)(this.getPositionParams(),m.width,m.height,l,c,u);v=(0,G.clamp)(v,Math.max(D,1),x),g=(0,G.clamp)(g,p,f),a.call(this,d,v,g,{e,node:i,size:m,handle:u})}render(){const{x:e,y:r,w:n,h:o,isDraggable:i,isResizable:s,droppingPosition:u,useCSSTransforms:a}=this.props,l=(0,G.calcGridItemPosition)(this.getPositionParams(),e,r,n,o,this.state),c=Pe.default.Children.only(this.props.children);let d=Pe.default.cloneElement(c,{ref:this.elementRef,className:(0,us.default)("react-grid-item",c.props.className,this.props.className,{static:this.props.static,resizing:!!this.state.resizing,"react-draggable":i,"react-draggable-dragging":!!this.state.dragging,dropping:!!u,cssTransforms:a}),style:wt(wt(wt({},this.props.style),c.props.style),this.createStyle(l))});return d=this.mixinResizable(d,l,s),d=this.mixinDraggable(d,i),d}}nt.default=Vt;ne(Vt,"propTypes",{children:C.default.element,cols:C.default.number.isRequired,containerWidth:C.default.number.isRequired,rowHeight:C.default.number.isRequired,margin:C.default.array.isRequired,maxRows:C.default.number.isRequired,containerPadding:C.default.array.isRequired,x:C.default.number.isRequired,y:C.default.number.isRequired,w:C.default.number.isRequired,h:C.default.number.isRequired,minW:function(t,e){const r=t[e];if(typeof r!="number")return new Error("minWidth not Number");if(r>t.w||r>t.maxW)return new Error("minWidth larger than item width/maxWidth")},maxW:function(t,e){const r=t[e];if(typeof r!="number")return new Error("maxWidth not Number");if(r<t.w||r<t.minW)return new Error("maxWidth smaller than item width/minWidth")},minH:function(t,e){const r=t[e];if(typeof r!="number")return new Error("minHeight not Number");if(r>t.h||r>t.maxH)return new Error("minHeight larger than item height/maxHeight")},maxH:function(t,e){const r=t[e];if(typeof r!="number")return new Error("maxHeight not Number");if(r<t.h||r<t.minH)return new Error("maxHeight smaller than item height/minHeight")},i:C.default.string.isRequired,resizeHandles:br.resizeHandleAxesType,resizeHandle:br.resizeHandleType,onDragStop:C.default.func,onDragStart:C.default.func,onDrag:C.default.func,onResizeStop:C.default.func,onResizeStart:C.default.func,onResize:C.default.func,isDraggable:C.default.bool.isRequired,isResizable:C.default.bool.isRequired,isBounded:C.default.bool.isRequired,static:C.default.bool,useCSSTransforms:C.default.bool.isRequired,transformScale:C.default.number,className:C.default.string,handle:C.default.string,cancel:C.default.string,droppingPosition:C.default.shape({e:C.default.object.isRequired,left:C.default.number.isRequired,top:C.default.number.isRequired})});ne(Vt,"defaultProps",{className:"",cancel:"",handle:"",minH:1,minW:1,maxH:1/0,maxW:1/0,transformScale:1});Object.defineProperty(qe,"__esModule",{value:!0});qe.default=void 0;var ye=cn(L),St=Lt,fs=Kt(Qe),O=j,ps=ae,Sr=Kt(nt),hs=Kt(ce);function Kt(t){return t&&t.__esModule?t:{default:t}}function cn(t,e){if(typeof WeakMap=="function")var r=new WeakMap,n=new WeakMap;return(cn=function(o,i){if(!i&&o&&o.__esModule)return o;var s,u,a={__proto__:null,default:o};if(o===null||typeof o!="object"&&typeof o!="function")return a;if(s=i?n:r){if(s.has(o))return s.get(o);s.set(o,a)}for(const l in o)l!=="default"&&{}.hasOwnProperty.call(o,l)&&((u=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,l))&&(u.get||u.set)?s(a,l,u):a[l]=o[l]);return a})(t,e)}function xr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function ve(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?xr(Object(r),!0).forEach(function(n){F(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):xr(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function F(t,e,r){return(e=gs(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function gs(t){var e=ms(t,"string");return typeof e=="symbol"?e:e+""}function ms(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}const Or="react-grid-layout";let dn=!1;try{dn=/firefox/i.test(navigator.userAgent)}catch{}class ct extends ye.Component{constructor(){super(...arguments),F(this,"state",{activeDrag:null,layout:(0,O.synchronizeLayoutWithChildren)(this.props.layout,this.props.children,this.props.cols,(0,O.compactType)(this.props),this.props.allowOverlap),mounted:!1,oldDragItem:null,oldLayout:null,oldResizeItem:null,resizing:!1,droppingDOMNode:null,children:[]}),F(this,"dragEnterCounter",0),F(this,"onDragStart",(e,r,n,o)=>{let{e:i,node:s}=o;const{layout:u}=this.state,a=(0,O.getLayoutItem)(u,e);if(!a)return;const l={w:a.w,h:a.h,x:a.x,y:a.y,placeholder:!0,i:e};return this.setState({oldDragItem:(0,O.cloneLayoutItem)(a),oldLayout:u,activeDrag:l}),this.props.onDragStart(u,a,a,null,i,s)}),F(this,"onDrag",(e,r,n,o)=>{let{e:i,node:s}=o;const{oldDragItem:u}=this.state;let{layout:a}=this.state;const{cols:l,allowOverlap:c,preventCollision:d}=this.props,f=(0,O.getLayoutItem)(a,e);if(!f)return;const p={w:f.w,h:f.h,x:f.x,y:f.y,placeholder:!0,i:e};a=(0,O.moveElement)(a,f,r,n,!0,d,(0,O.compactType)(this.props),l,c),this.props.onDrag(a,u,f,p,i,s),this.setState({layout:c?a:(0,O.compact)(a,(0,O.compactType)(this.props),l),activeDrag:p})}),F(this,"onDragStop",(e,r,n,o)=>{let{e:i,node:s}=o;if(!this.state.activeDrag)return;const{oldDragItem:u}=this.state;let{layout:a}=this.state;const{cols:l,preventCollision:c,allowOverlap:d}=this.props,f=(0,O.getLayoutItem)(a,e);if(!f)return;a=(0,O.moveElement)(a,f,r,n,!0,c,(0,O.compactType)(this.props),l,d);const w=d?a:(0,O.compact)(a,(0,O.compactType)(this.props),l);this.props.onDragStop(w,u,f,null,i,s);const{oldLayout:D}=this.state;this.setState({activeDrag:null,layout:w,oldDragItem:null,oldLayout:null}),this.onLayoutMaybeChanged(w,D)}),F(this,"onResizeStart",(e,r,n,o)=>{let{e:i,node:s}=o;const{layout:u}=this.state,a=(0,O.getLayoutItem)(u,e);a&&(this.setState({oldResizeItem:(0,O.cloneLayoutItem)(a),oldLayout:this.state.layout,resizing:!0}),this.props.onResizeStart(u,a,a,null,i,s))}),F(this,"onResize",(e,r,n,o)=>{let{e:i,node:s,size:u,handle:a}=o;const{oldResizeItem:l}=this.state,{layout:c}=this.state,{cols:d,preventCollision:f,allowOverlap:p}=this.props;let w=!1,D,x,m;const[v,g]=(0,O.withLayoutItem)(c,e,b=>{let E;return x=b.x,m=b.y,["sw","w","nw","n","ne"].indexOf(a)!==-1&&(["sw","nw","w"].indexOf(a)!==-1&&(x=b.x+(b.w-r),r=b.x!==x&&x<0?b.w:r,x=x<0?0:x),["ne","n","nw"].indexOf(a)!==-1&&(m=b.y+(b.h-n),n=b.y!==m&&m<0?b.h:n,m=m<0?0:m),w=!0),f&&!p&&(E=(0,O.getAllCollisions)(c,ve(ve({},b),{},{w:r,h:n,x,y:m})).filter(I=>I.i!==b.i).length>0,E&&(m=b.y,n=b.h,x=b.x,r=b.w,w=!1)),b.w=r,b.h=n,b});if(!g)return;D=v,w&&(D=(0,O.moveElement)(v,g,x,m,!0,this.props.preventCollision,(0,O.compactType)(this.props),d,p));const S={w:g.w,h:g.h,x:g.x,y:g.y,static:!0,i:e};this.props.onResize(D,l,g,S,i,s),this.setState({layout:p?D:(0,O.compact)(D,(0,O.compactType)(this.props),d),activeDrag:S})}),F(this,"onResizeStop",(e,r,n,o)=>{let{e:i,node:s}=o;const{layout:u,oldResizeItem:a}=this.state,{cols:l,allowOverlap:c}=this.props,d=(0,O.getLayoutItem)(u,e),f=c?u:(0,O.compact)(u,(0,O.compactType)(this.props),l);this.props.onResizeStop(f,a,d,null,i,s);const{oldLayout:p}=this.state;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null,resizing:!1}),this.onLayoutMaybeChanged(f,p)}),F(this,"onDragOver",e=>{var r;if(e.preventDefault(),e.stopPropagation(),dn&&!((r=e.nativeEvent.target)!==null&&r!==void 0&&r.classList.contains(Or)))return!1;const{droppingItem:n,onDropDragOver:o,margin:i,cols:s,rowHeight:u,maxRows:a,width:l,containerPadding:c,transformScale:d}=this.props,f=o==null?void 0:o(e);if(f===!1)return this.state.droppingDOMNode&&this.removeDroppingPlaceholder(),!1;const p=ve(ve({},n),f),{layout:w}=this.state,D=e.currentTarget.getBoundingClientRect(),x=e.clientX-D.left,m=e.clientY-D.top,v={left:x/d,top:m/d,e};if(this.state.droppingDOMNode){if(this.state.droppingPosition){const{left:g,top:S}=this.state.droppingPosition;(g!=x||S!=m)&&this.setState({droppingPosition:v})}}else{const g={cols:s,margin:i,maxRows:a,rowHeight:u,containerWidth:l,containerPadding:c||i},S=(0,ps.calcXY)(g,m,x,p.w,p.h);this.setState({droppingDOMNode:ye.createElement("div",{key:p.i}),droppingPosition:v,layout:[...w,ve(ve({},p),{},{x:S.x,y:S.y,static:!1,isDraggable:!0})]})}}),F(this,"removeDroppingPlaceholder",()=>{const{droppingItem:e,cols:r}=this.props,{layout:n}=this.state,o=(0,O.compact)(n.filter(i=>i.i!==e.i),(0,O.compactType)(this.props),r,this.props.allowOverlap);this.setState({layout:o,droppingDOMNode:null,activeDrag:null,droppingPosition:void 0})}),F(this,"onDragLeave",e=>{e.preventDefault(),e.stopPropagation(),this.dragEnterCounter--,this.dragEnterCounter===0&&this.removeDroppingPlaceholder()}),F(this,"onDragEnter",e=>{e.preventDefault(),e.stopPropagation(),this.dragEnterCounter++}),F(this,"onDrop",e=>{e.preventDefault(),e.stopPropagation();const{droppingItem:r}=this.props,{layout:n}=this.state,o=n.find(i=>i.i===r.i);this.dragEnterCounter=0,this.removeDroppingPlaceholder(),this.props.onDrop(n,o,e)})}componentDidMount(){this.setState({mounted:!0}),this.onLayoutMaybeChanged(this.state.layout,this.props.layout)}static getDerivedStateFromProps(e,r){let n;return r.activeDrag?null:(!(0,St.deepEqual)(e.layout,r.propsLayout)||e.compactType!==r.compactType?n=e.layout:(0,O.childrenEqual)(e.children,r.children)||(n=r.layout),n?{layout:(0,O.synchronizeLayoutWithChildren)(n,e.children,e.cols,(0,O.compactType)(e),e.allowOverlap),compactType:e.compactType,children:e.children,propsLayout:e.layout}:null)}shouldComponentUpdate(e,r){return this.props.children!==e.children||!(0,O.fastRGLPropsEqual)(this.props,e,St.deepEqual)||this.state.activeDrag!==r.activeDrag||this.state.mounted!==r.mounted||this.state.droppingPosition!==r.droppingPosition}componentDidUpdate(e,r){if(!this.state.activeDrag){const n=this.state.layout,o=r.layout;this.onLayoutMaybeChanged(n,o)}}containerHeight(){if(!this.props.autoSize)return;const e=(0,O.bottom)(this.state.layout),r=this.props.containerPadding?this.props.containerPadding[1]:this.props.margin[1];return e*this.props.rowHeight+(e-1)*this.props.margin[1]+r*2+"px"}onLayoutMaybeChanged(e,r){r||(r=this.state.layout),(0,St.deepEqual)(r,e)||this.props.onLayoutChange(e)}placeholder(){const{activeDrag:e}=this.state;if(!e)return null;const{width:r,cols:n,margin:o,containerPadding:i,rowHeight:s,maxRows:u,useCSSTransforms:a,transformScale:l}=this.props;return ye.createElement(Sr.default,{w:e.w,h:e.h,x:e.x,y:e.y,i:e.i,className:"react-grid-placeholder ".concat(this.state.resizing?"placeholder-resizing":""),containerWidth:r,cols:n,margin:o,containerPadding:i||o,maxRows:u,rowHeight:s,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:a,transformScale:l},ye.createElement("div",null))}processGridItem(e,r){if(!e||!e.key)return;const n=(0,O.getLayoutItem)(this.state.layout,String(e.key));if(!n)return null;const{width:o,cols:i,margin:s,containerPadding:u,rowHeight:a,maxRows:l,isDraggable:c,isResizable:d,isBounded:f,useCSSTransforms:p,transformScale:w,draggableCancel:D,draggableHandle:x,resizeHandles:m,resizeHandle:v}=this.props,{mounted:g,droppingPosition:S}=this.state,b=typeof n.isDraggable=="boolean"?n.isDraggable:!n.static&&c,E=typeof n.isResizable=="boolean"?n.isResizable:!n.static&&d,A=n.resizeHandles||m,I=b&&f&&n.isBounded!==!1;return ye.createElement(Sr.default,{containerWidth:o,cols:i,margin:s,containerPadding:u||s,maxRows:l,rowHeight:a,cancel:D,handle:x,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:b,isResizable:E,isBounded:I,useCSSTransforms:p&&g,usePercentages:!g,transformScale:w,w:n.w,h:n.h,x:n.x,y:n.y,i:n.i,minH:n.minH,minW:n.minW,maxH:n.maxH,maxW:n.maxW,static:n.static,droppingPosition:r?S:void 0,resizeHandles:A,resizeHandle:v},e)}render(){const{className:e,style:r,isDroppable:n,innerRef:o}=this.props,i=(0,fs.default)(Or,e),s=ve({height:this.containerHeight()},r);return ye.createElement("div",{ref:o,className:i,style:s,onDrop:n?this.onDrop:O.noop,onDragLeave:n?this.onDragLeave:O.noop,onDragEnter:n?this.onDragEnter:O.noop,onDragOver:n?this.onDragOver:O.noop},ye.Children.map(this.props.children,u=>this.processGridItem(u)),n&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}}qe.default=ct;F(ct,"displayName","ReactGridLayout");F(ct,"propTypes",hs.default);F(ct,"defaultProps",{autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isBounded:!1,isDraggable:!0,isResizable:!0,allowOverlap:!1,isDroppable:!1,useCSSTransforms:!0,transformScale:1,verticalCompact:!0,compactType:"vertical",preventCollision:!1,droppingItem:{i:"__dropping-elem__",h:1,w:1},resizeHandles:["se"],onLayoutChange:O.noop,onDragStart:O.noop,onDrag:O.noop,onDragStop:O.noop,onResizeStart:O.noop,onResize:O.noop,onResizeStop:O.noop,onDrop:O.noop,onDropDragOver:O.noop});var dt={},_e={};Object.defineProperty(_e,"__esModule",{value:!0});_e.findOrGenerateResponsiveLayout=bs;_e.getBreakpointFromWidth=ys;_e.getColsFromBreakpoint=vs;_e.sortBreakpoints=Jt;var Ye=j;function ys(t,e){const r=Jt(t);let n=r[0];for(let o=1,i=r.length;o<i;o++){const s=r[o];e>t[s]&&(n=s)}return n}function vs(t,e){if(!e[t])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+t+" is missing!");return e[t]}function bs(t,e,r,n,o,i){if(t[r])return(0,Ye.cloneLayout)(t[r]);let s=t[n];const u=Jt(e),a=u.slice(u.indexOf(r));for(let l=0,c=a.length;l<c;l++){const d=a[l];if(t[d]){s=t[d];break}}return s=(0,Ye.cloneLayout)(s||[]),(0,Ye.compact)((0,Ye.correctBounds)(s,{cols:o}),i,o)}function Jt(t){return Object.keys(t).sort(function(r,n){return t[r]-t[n]})}Object.defineProperty(dt,"__esModule",{value:!0});dt.default=void 0;var Dr=pn(L),K=fn(he),xt=Lt,ze=j,be=_e,ws=fn(qe);const Ss=["breakpoint","breakpoints","cols","layouts","margin","containerPadding","onBreakpointChange","onLayoutChange","onWidthChange"];function fn(t){return t&&t.__esModule?t:{default:t}}function pn(t,e){if(typeof WeakMap=="function")var r=new WeakMap,n=new WeakMap;return(pn=function(o,i){if(!i&&o&&o.__esModule)return o;var s,u,a={__proto__:null,default:o};if(o===null||typeof o!="object"&&typeof o!="function")return a;if(s=i?n:r){if(s.has(o))return s.get(o);s.set(o,a)}for(const l in o)l!=="default"&&{}.hasOwnProperty.call(o,l)&&((u=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,l))&&(u.get||u.set)?s(a,l,u):a[l]=o[l]);return a})(t,e)}function Ct(){return Ct=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},Ct.apply(null,arguments)}function xs(t,e){if(t==null)return{};var r,n,o=Os(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)r=i[n],e.indexOf(r)===-1&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Os(t,e){if(t==null)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(e.indexOf(n)!==-1)continue;r[n]=t[n]}return r}function _r(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function Ot(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?_r(Object(r),!0).forEach(function(n){$e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):_r(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function $e(t,e,r){return(e=Ds(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ds(t){var e=_s(t,"string");return typeof e=="symbol"?e:e+""}function _s(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}const Rr=t=>Object.prototype.toString.call(t);function Xe(t,e){return t==null?null:Array.isArray(t)?t:t[e]}class Zt extends Dr.Component{constructor(){super(...arguments),$e(this,"state",this.generateInitialState()),$e(this,"onLayoutChange",e=>{this.props.onLayoutChange(e,Ot(Ot({},this.props.layouts),{},{[this.state.breakpoint]:e}))})}generateInitialState(){const{width:e,breakpoints:r,layouts:n,cols:o}=this.props,i=(0,be.getBreakpointFromWidth)(r,e),s=(0,be.getColsFromBreakpoint)(i,o),u=this.props.verticalCompact===!1?null:this.props.compactType;return{layout:(0,be.findOrGenerateResponsiveLayout)(n,r,i,i,s,u),breakpoint:i,cols:s}}static getDerivedStateFromProps(e,r){if(!(0,xt.deepEqual)(e.layouts,r.layouts)){const{breakpoint:n,cols:o}=r;return{layout:(0,be.findOrGenerateResponsiveLayout)(e.layouts,e.breakpoints,n,n,o,e.compactType),layouts:e.layouts}}return null}componentDidUpdate(e){(this.props.width!=e.width||this.props.breakpoint!==e.breakpoint||!(0,xt.deepEqual)(this.props.breakpoints,e.breakpoints)||!(0,xt.deepEqual)(this.props.cols,e.cols))&&this.onWidthChange(e)}onWidthChange(e){const{breakpoints:r,cols:n,layouts:o,compactType:i}=this.props,s=this.props.breakpoint||(0,be.getBreakpointFromWidth)(this.props.breakpoints,this.props.width),u=this.state.breakpoint,a=(0,be.getColsFromBreakpoint)(s,n),l=Ot({},o);if(u!==s||e.breakpoints!==r||e.cols!==n){u in l||(l[u]=(0,ze.cloneLayout)(this.state.layout));let f=(0,be.findOrGenerateResponsiveLayout)(l,r,s,u,a,i);f=(0,ze.synchronizeLayoutWithChildren)(f,this.props.children,a,i,this.props.allowOverlap),l[s]=f,this.props.onBreakpointChange(s,a),this.props.onLayoutChange(f,l),this.setState({breakpoint:s,layout:f,cols:a})}const c=Xe(this.props.margin,s),d=Xe(this.props.containerPadding,s);this.props.onWidthChange(this.props.width,c,a,d)}render(){const e=this.props,{breakpoint:r,breakpoints:n,cols:o,layouts:i,margin:s,containerPadding:u,onBreakpointChange:a,onLayoutChange:l,onWidthChange:c}=e,d=xs(e,Ss);return Dr.createElement(ws.default,Ct({},d,{margin:Xe(s,this.state.breakpoint),containerPadding:Xe(u,this.state.breakpoint),onLayoutChange:this.onLayoutChange,layout:this.state.layout,cols:this.state.cols}))}}dt.default=Zt;$e(Zt,"propTypes",{breakpoint:K.default.string,breakpoints:K.default.object,allowOverlap:K.default.bool,cols:K.default.object,margin:K.default.oneOfType([K.default.array,K.default.object]),containerPadding:K.default.oneOfType([K.default.array,K.default.object]),layouts(t,e){if(Rr(t[e])!=="[object Object]")throw new Error("Layout property must be an object. Received: "+Rr(t[e]));Object.keys(t[e]).forEach(r=>{if(!(r in t.breakpoints))throw new Error("Each key in layouts must align with a key in breakpoints.");(0,ze.validateLayout)(t.layouts[r],"layouts."+r)})},width:K.default.number.isRequired,onBreakpointChange:K.default.func,onLayoutChange:K.default.func,onWidthChange:K.default.func});$e(Zt,"defaultProps",{breakpoints:{lg:1200,md:996,sm:768,xs:480,xxs:0},cols:{lg:12,md:10,sm:6,xs:4,xxs:2},containerPadding:{lg:null,md:null,sm:null,xs:null,xxs:null},layouts:{},margin:[10,10],allowOverlap:!1,onBreakpointChange:ze.noop,onLayoutChange:ze.noop,onWidthChange:ze.noop});var Qt={},hn=function(){if(typeof Map<"u")return Map;function t(e,r){var n=-1;return e.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function e(){this.__entries__=[]}return Object.defineProperty(e.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(r){var n=t(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},e.prototype.set=function(r,n){var o=t(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},e.prototype.delete=function(r){var n=this.__entries__,o=t(n,r);~o&&n.splice(o,1)},e.prototype.has=function(r){return!!~t(this.__entries__,r)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o<i.length;o++){var s=i[o];r.call(n,s[1],s[0])}},e}()}(),zt=typeof window<"u"&&typeof document<"u"&&window.document===document,Je=function(){return typeof global<"u"&&global.Math===Math?global:typeof self<"u"&&self.Math===Math?self:typeof window<"u"&&window.Math===Math?window:Function("return this")()}(),Rs=function(){return typeof requestAnimationFrame=="function"?requestAnimationFrame.bind(Je):function(t){return setTimeout(function(){return t(Date.now())},1e3/60)}}(),Ps=2;function js(t,e){var r=!1,n=!1,o=0;function i(){r&&(r=!1,t()),n&&u()}function s(){Rs(i)}function u(){var a=Date.now();if(r){if(a-o<Ps)return;n=!0}else r=!0,n=!1,setTimeout(s,e);o=a}return u}var Es=20,Cs=["top","right","bottom","left","width","height","size","weight"],zs=typeof MutationObserver<"u",Ms=function(){function t(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=js(this.refresh.bind(this),Es)}return t.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},t.prototype.removeObserver=function(e){var r=this.observers_,n=r.indexOf(e);~n&&r.splice(n,1),!r.length&&this.connected_&&this.disconnect_()},t.prototype.refresh=function(){var e=this.updateObservers_();e&&this.refresh()},t.prototype.updateObservers_=function(){var e=this.observers_.filter(function(r){return r.gatherActive(),r.hasActive()});return e.forEach(function(r){return r.broadcastActive()}),e.length>0},t.prototype.connect_=function(){!zt||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),zs?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){!zt||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(e){var r=e.propertyName,n=r===void 0?"":r,o=Cs.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),gn=function(t,e){for(var r=0,n=Object.keys(e);r<n.length;r++){var o=n[r];Object.defineProperty(t,o,{value:e[o],enumerable:!1,writable:!1,configurable:!0})}return t},Me=function(t){var e=t&&t.ownerDocument&&t.ownerDocument.defaultView;return e||Je},mn=ft(0,0,0,0);function Ze(t){return parseFloat(t)||0}function Pr(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return e.reduce(function(n,o){var i=t["border-"+o+"-width"];return n+Ze(i)},0)}function Ts(t){for(var e=["top","right","bottom","left"],r={},n=0,o=e;n<o.length;n++){var i=o[n],s=t["padding-"+i];r[i]=Ze(s)}return r}function Ls(t){var e=t.getBBox();return ft(0,0,e.width,e.height)}function ks(t){var e=t.clientWidth,r=t.clientHeight;if(!e&&!r)return mn;var n=Me(t).getComputedStyle(t),o=Ts(n),i=o.left+o.right,s=o.top+o.bottom,u=Ze(n.width),a=Ze(n.height);if(n.boxSizing==="border-box"&&(Math.round(u+i)!==e&&(u-=Pr(n,"left","right")+i),Math.round(a+s)!==r&&(a-=Pr(n,"top","bottom")+s)),!Ws(t)){var l=Math.round(u+i)-e,c=Math.round(a+s)-r;Math.abs(l)!==1&&(u-=l),Math.abs(c)!==1&&(a-=c)}return ft(o.left,o.top,u,a)}var Hs=function(){return typeof SVGGraphicsElement<"u"?function(t){return t instanceof Me(t).SVGGraphicsElement}:function(t){return t instanceof Me(t).SVGElement&&typeof t.getBBox=="function"}}();function Ws(t){return t===Me(t).document.documentElement}function Ns(t){return zt?Hs(t)?Ls(t):ks(t):mn}function $s(t){var e=t.x,r=t.y,n=t.width,o=t.height,i=typeof DOMRectReadOnly<"u"?DOMRectReadOnly:Object,s=Object.create(i.prototype);return gn(s,{x:e,y:r,width:n,height:o,top:r,right:e+n,bottom:o+r,left:e}),s}function ft(t,e,r,n){return{x:t,y:e,width:r,height:n}}var qs=function(){function t(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=ft(0,0,0,0),this.target=e}return t.prototype.isActive=function(){var e=Ns(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},t.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},t}(),As=function(){function t(e,r){var n=$s(r);gn(this,{target:e,contentRect:n})}return t}(),Is=function(){function t(e,r,n){if(this.activeObservations_=[],this.observations_=new hn,typeof e!="function")throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=r,this.callbackCtx_=n}return t.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(e instanceof Me(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var r=this.observations_;r.has(e)||(r.set(e,new qs(e)),this.controller_.addObserver(this),this.controller_.refresh())}},t.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(e instanceof Me(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var r=this.observations_;r.has(e)&&(r.delete(e),r.size||this.controller_.removeObserver(this))}},t.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},t.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(r){r.isActive()&&e.activeObservations_.push(r)})},t.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,r=this.activeObservations_.map(function(n){return new As(n.target,n.broadcastRect())});this.callback_.call(e,r,e),this.clearActive()}},t.prototype.clearActive=function(){this.activeObservations_.splice(0)},t.prototype.hasActive=function(){return this.activeObservations_.length>0},t}(),yn=typeof WeakMap<"u"?new WeakMap:new hn,vn=function(){function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ms.getInstance(),n=new Is(e,r,this);yn.set(this,n)}return t}();["observe","unobserve","disconnect"].forEach(function(t){vn.prototype[t]=function(){var e;return(e=yn.get(this))[t].apply(e,arguments)}});var Bs=function(){return typeof Je.ResizeObserver<"u"?Je.ResizeObserver:vn}();const Gs=Object.freeze(Object.defineProperty({__proto__:null,default:Bs},Symbol.toStringTag,{value:"Module"})),Fs=kr(Gs);Object.defineProperty(Qt,"__esModule",{value:!0});Qt.default=ta;var Ue=bn(L),Ys=er(he),Xs=er(Fs),Us=er(Qe);const Vs=["measureBeforeMount"];function er(t){return t&&t.__esModule?t:{default:t}}function bn(t,e){if(typeof WeakMap=="function")var r=new WeakMap,n=new WeakMap;return(bn=function(o,i){if(!i&&o&&o.__esModule)return o;var s,u,a={__proto__:null,default:o};if(o===null||typeof o!="object"&&typeof o!="function")return a;if(s=i?n:r){if(s.has(o))return s.get(o);s.set(o,a)}for(const l in o)l!=="default"&&{}.hasOwnProperty.call(o,l)&&((u=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(o,l))&&(u.get||u.set)?s(a,l,u):a[l]=o[l]);return a})(t,e)}function Mt(){return Mt=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},Mt.apply(null,arguments)}function Ks(t,e){if(t==null)return{};var r,n,o=Js(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)r=i[n],e.indexOf(r)===-1&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Js(t,e){if(t==null)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(e.indexOf(n)!==-1)continue;r[n]=t[n]}return r}function Ee(t,e,r){return(e=Zs(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Zs(t){var e=Qs(t,"string");return typeof e=="symbol"?e:e+""}function Qs(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}const ea="react-grid-layout";function ta(t){var e;return e=class extends Ue.Component{constructor(){super(...arguments),Ee(this,"state",{width:1280}),Ee(this,"elementRef",Ue.createRef()),Ee(this,"mounted",!1),Ee(this,"resizeObserver",void 0)}componentDidMount(){this.mounted=!0,this.resizeObserver=new Xs.default(o=>{if(this.elementRef.current instanceof HTMLElement){const s=o[0].contentRect.width;this.setState({width:s})}});const n=this.elementRef.current;n instanceof HTMLElement&&this.resizeObserver.observe(n)}componentWillUnmount(){this.mounted=!1;const n=this.elementRef.current;n instanceof HTMLElement&&this.resizeObserver.unobserve(n),this.resizeObserver.disconnect()}render(){const n=this.props,{measureBeforeMount:o}=n,i=Ks(n,Vs);return o&&!this.mounted?Ue.createElement("div",{className:(0,Us.default)(this.props.className,ea),style:this.props.style,ref:this.elementRef}):Ue.createElement(t,Mt({innerRef:this.elementRef},i,this.state))}},Ee(e,"defaultProps",{measureBeforeMount:!1}),Ee(e,"propTypes",{measureBeforeMount:Ys.default.bool}),e}(function(t){t.exports=qe.default,t.exports.utils=j,t.exports.calculateUtils=ae,t.exports.Responsive=dt.default,t.exports.Responsive.utils=_e,t.exports.WidthProvider=Qt.default})(Hr);var wn=Hr.exports;const ra=Kn(wn),na=wn.WidthProvider(ra),oa=H("div")(({theme:t})=>({"& .react-grid-item":{borderRadius:`${t.shape.borderRadiusMedium}px`},"& .grid-item-drag-handle":{[t.breakpoints.down("md")]:{display:"none"}}})),ia=H("div")(({theme:t})=>({border:`1px solid ${t.palette.divider}`})),fa=({items:t,onLayoutChange:e,cols:r={lg:12,md:12,sm:6,xs:4,xxs:2},rowHeight:n=180})=>{const o=Mr(),i=Tr(o.breakpoints.down("md")),s=L.useMemo(()=>{if(i){let l=0;return t.map(c=>{const d={i:c.id,x:0,y:l,w:r.xs,h:c.h??4,minW:r.xs,minH:c.minH??3,maxW:r.xs,maxH:c.maxH??8,static:!1};return l+=d.h,d})}return t.map((l,c)=>({i:l.id,x:l.x??c%Math.floor(r.lg/(l.w??4))*(l.w??4),y:l.y??Math.floor(c/Math.floor(r.lg/(l.w??4)))*(l.h??4),w:l.w??4,h:l.h??4,minW:l.minW??4,minH:l.minH??3,maxW:l.maxW??12,maxH:l.maxH??8,static:l.static??!1}))},[t,r,i]),u=L.useMemo(()=>t.map(l=>h.jsx(ia,{children:l.component},l.id)),[t]),a=L.useCallback(l=>{i||e==null||e(l)},[e,i]);return h.jsx(oa,{children:h.jsx(na,{className:"impact-metrics-grid",layout:s,cols:i?r.xs:r.lg,rowHeight:n,margin:[Number.parseInt(o.spacing(2),10),Number.parseInt(o.spacing(2),10)],containerPadding:[0,0],isDraggable:!1,isResizable:!1,onLayoutChange:a,resizeHandles:["se"],draggableHandle:".grid-item-drag-handle",compactType:i?null:"vertical",preventCollision:!1,useCSSTransforms:!0,autoSize:!0,allowOverlap:!1,children:u})})};export{ua as C,fa as G,la as a,aa as b,eo as u};
@@ -1 +0,0 @@
1
- import{dx as O,dy as x,b7 as K,j9 as X,r as n,j as t,B as l,fA as Y,R as w,ja as k,dJ as R,T as i,s as e,aB as T,aA as J,k as H,b6 as V,et as j,N as _,aD as D,f as $,h as AA,ap as tA,dz as aA,i as P}from"./index-DMSjiFEm.js";import{b as eA,C as rA,G as nA,a as sA}from"./GridLayoutWrapper-DpJcUbQB.js";const lA=()=>{const A="api/admin/impact-metrics/plausible",{data:g,refetch:p,loading:v,error:B}=O(K(A),()=>x(K(A),"Plausible metrics"),{refreshInterval:3e4,revalidateOnFocus:!0});return{data:g||{data:[]},refetch:p,loading:v,error:B}},oA=({aspectRatio:A,overrideOptions:g={},errorTitle:p="Failed to load Plausible metrics.",emptyDataDescription:v="No Plausible analytics data available.",noSeriesPlaceholder:B,isPreview:q})=>{const{data:a,loading:d,error:Z}=lA(),u=X({fill:!0,type:"constant"}),C=n.useMemo(()=>{if(!(a!=null&&a.data)||a.data.length===0)return{labels:[],datasets:[]};const s=[...a.data].sort((W,S)=>new Date(W.date).getTime()-new Date(S.date).getTime());return{labels:s.map(W=>W.date),datasets:[{label:"Events",data:s.map(W=>W.count),borderColor:"rgb(129, 122, 254)",backgroundColor:"rgba(129, 122, 254, 0.1)",fill:!0,tension:.1}]}},[a]),z=!!Z,U=d,m=n.useMemo(()=>!U&&(!(a!=null&&a.data)||a.data.length===0||!C.datasets.some(s=>s.data.length>1)),[C,U,a]),f=m?B||t.jsx(k,{title:"No Plausible data available",description:v}):U,M={...g,scales:{x:{type:"time",time:{unit:"hour",displayFormats:{hour:"MMM dd, HH:mm"},tooltipFormat:"PPpp"},ticks:{maxRotation:45,minRotation:45,maxTicksLimit:8}},y:{beginAtZero:!0,title:{display:!0,text:"Events"},ticks:{precision:0,callback:s=>typeof s=="number"?R(s):s}}},plugins:{legend:{display:!0,position:"bottom",labels:{usePointStyle:!0,boxWidth:8,padding:12}}},animations:{x:{duration:0},y:{duration:0}}};return t.jsx(t.Fragment,{children:t.jsx(l,{sx:q?{}:{height:"100%",width:"100%","& > div":{height:"100% !important",width:"100% !important"}},children:t.jsx(Y,{data:m||U?u:C,aspectRatio:A,overrideOptions:M,cover:z?t.jsx(w,{severity:"error",children:p}):f})})})},gA=e(T)(({theme:A})=>({borderRadius:`${A.shape.borderRadiusMedium}px`,boxShadow:"none",display:"flex",flexDirection:"column",height:"100%"})),WA=e(l)({flex:1,display:"flex",flexDirection:"column",minHeight:0}),pA=e(l)(({theme:A})=>({position:"relative",minWidth:0,flexGrow:1,height:"100%",display:"flex",flexDirection:"column",margin:"auto 0",padding:A.spacing(3)})),BA=e(l)(({theme:A})=>({display:"flex",gap:A.spacing(2),alignItems:"center",padding:A.spacing(1.5,2),borderBottom:`1px solid ${A.palette.divider}`})),vA=e(l)(({theme:A})=>({display:"flex",flexDirection:"column",justifyContent:"flex-end",flexGrow:1,overflow:"hidden",textOverflow:"ellipsis"})),dA=()=>t.jsxs(gA,{children:[t.jsx(BA,{children:t.jsxs(vA,{children:[t.jsx(i,{variant:"h3",children:"Plausible Analytics"}),t.jsx(i,{variant:"body2",color:"text.secondary",children:"Favorite events from Plausible analytics"})]})}),t.jsx(WA,{children:t.jsx(pA,{children:t.jsx(oA,{aspectRatio:1.5,overrideOptions:{maintainAspectRatio:!1},emptyDataDescription:"No Plausible analytics data available for favorite events."})})})]}),ZA=A=>n.createElement("svg",{width:82,height:82,viewBox:"0 0 82 82",fill:"none",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",...A},n.createElement("rect",{width:82,height:82,fill:"url(#pattern0_1227_73918)"}),n.createElement("defs",null,n.createElement("pattern",{id:"pattern0_1227_73918",patternContentUnits:"objectBoundingBox",width:1,height:1},n.createElement("use",{xlinkHref:"#image0_1227_73918",transform:"scale(0.00110988)"})),n.createElement("image",{id:"image0_1227_73918",width:901,height:901,preserveAspectRatio:"none",xlinkHref:"data:image/png;base64,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cRFZqWddqlreM7eElLOEAFoRFAIAAFSigMwaN2Fl7yYn+CuVZxnLrF8UGFrrRvsBgAxBIQAAgMMKrpRRENnYiax0NCoLjdalnBRAj2uXl5f8xgEAsEFvPHrvrWmanubPZnxKd9KM1aCmfs06v3j9f/vvpk9dfPTc/wgyDx976eXb294icDhkCgEAABZQnyX0sozZrML911420SttpXQUQC+6jwIAACxI7SoaXaeuoYzAAIAMQSEAAIDAOrtXB2Hl65NxjrB+v74ve62kniX85G/cZE4hgBDlowAA4Gy1lFp6IySs9+uOot5aWUOa+rWW/VJGCkBFphAAAMBRN3KJxkt41MH10Xr7ktI68LTKRQkGAbQiKAQAAGfNO4enDKC37mkp+/Seo5wVVNbZeecHj+g+CiBEUAgAAM5WFMB5mThPWeJZNovxzhF6z6zV61prLTHyAsD54kwhAACAoyW4KktMlaH3SidRdch9tM7PG80AQIBMIQAAQMIaHF8rM3leljFrPONRzg0yngJALzKFAAAAomygvDUmorzGK/v07o86mJa8oJGmMwAUBIUAAAAGdQ5g9Hq2bnm/FSAuEdTtGs0AQOTa5eUlv0EAAGzQG4/ee2uapqf5szm+rFw0ygjW16glp/XXUYmo143Uetanv//d6aMMr888fOyll29ve4vA4XCmEAAA4MCsANHqVuqdQSwDxJbh9pwpBKCgfBQAAKCSneXzykmzck8vwxidLbSuV/cDAAqCQgAAgEA2FmIKzv/VwZqVCcwCUCv7F5WOEiACaMWZQgAANoozheurM3vROcHyvezMofK+crZQWYszhRLOFOKskSkEAABweMGXRRlIn70erZsFgl5wSfdRABkazQAAAASUwLDOIGbZvz3lTKJVGlprPdsIACUyhQAAAKLW83/1614jGe9MYja7cP91FAR+8jdu8scLIERQCAAAUFEGx9clnFHAmGUQ62utpjE9HUlpNgNAQVAIAADQKBodMTkZPOW8YU9XUYI/AHMRFAIAABiUc3q9jWTK970sozK70MpoZgErANRoNAMAAFDJAsJsJEV0TRYwWs/yAr8I2UMAKjKFAAAAV1rOEUavRxm8bK06i2j927t+opwUQAcyhQAAAElAqJSDKlnAvbLE07pXWUe5ZrfuP/v7f1vaE4DzRVAIAADQSBkeH2X1ykDQOwMY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9nMv/ekLL36e8tGN6ckMqkFUNkaiXsvL/NWveV1FW4fqdwSDZAqBAZApBABsntqERTljmJWdRu/3NIuxykK9z0PWcCxeiWd23q+lOUx0bk/plpo1qGkZiG89X70WwLZ9iD8fAMAIdgFTFMxl709Vg5r6Xut1696W93avZ6Wj+2us964azeDArA6d+388u0DIC/ayDGHLqApvD8qzrM9QB5nePV7X0tYSVQBjICgEAAzLC6j26vfrEtGWe0tRAJoFp3Wg2LInLE8N5BRZF8/6GVlX0WgvLXssnx1lCJXgru6w6n0OAGPhTCGAk8WZwvMQnf/LBsh7703GulFX0boctLdbaf0e3UePo+WsXGvwqA6T7+lympWvZntp2UPrswqcKQQGQKYQADC03rLS/evZvVMwnzA6w7h/L3p2NAh/99733vz24/yv8/BaMl2tZZfWveU92TUW7zlRiedkZPa8TKVSFps9C8BYaDQDABiOMqNwSprNeO/3niucjCDS2mfrM7E9WfMWSzbYPuo4at3rBZRqYxslQI1GU8wd1QFgWygfBXCyKB89Tb3lotZ12YxBq3Oo113UWs8rK62v8db9zLOfYSTFSnpKNdUgSbluiTOO9To1L8CMRlx0oHwUGABBIYCTRVA4PnXu315LUKjc670W3auuobxGULieqARzmhEwZevW1y4ZEGazC719zERQCAyAoBDAySIoHJ8a5C0haiRT6hmGH11nISjcFmVwfMTLKLYEiJNTTpoNpM8ynN6swWgQfrRHA0EhMAAazQAANisbRD+JYxz210QNY7z76mYx5XlBb10lIPQa3USzC3EYWbMUdfSCMt+vHm5frl/fY63jvW89axLODkaNZWqcHwROF41mAACbppwNbFFn8spzf0r2zrtO3YvyDKszKQ6jp3tmdo+VnSszg1Zg2PK8qGmN+nnUOYXW5wBweggKAQCb0To7sCV4ijqDqgGfN14iu8+61zubeOgyWei80kqv9DPrKpp17GzpYDo1dhXNgtAjnC0EsGEEhQCAzaiDPC8YKzt7tp7dmzPKwlqvvMfqOOpd571GhvC4Wga913o6iPYGbVlWLzvvF52LjJ5j7ZFRFMDpISgEAGyKMkx+6sjoqaJsoMXKBnpjKrL7sR1RVs8KyHrKOL3AzgraouY00ezC8hpluL2yPwCnh6AQALBpPQGeVxrq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"}))),UA="https://docs.getunleash.io/reference/impact-metrics",CA=e(l)(({theme:A})=>({display:"flex",flexDirection:"column",alignItems:"center",padding:A.spacing(6,4)})),mA=e(l)(({theme:A})=>({marginBottom:A.spacing(3)})),cA=e(l)(({theme:A})=>({textAlign:"center",maxWidth:480,marginBottom:A.spacing(3)})),QA=e(l)(({theme:A})=>({display:"flex",gap:A.spacing(2),alignItems:"center",marginBottom:A.spacing(4)})),iA=e(w)(({theme:A})=>({maxWidth:480,backgroundColor:A.palette.info.light,marginTop:A.spacing(4),color:A.palette.info.dark,"& .MuiAlert-icon":{color:A.palette.info.main}})),qA=({onAddChart:A})=>t.jsx(J,{header:t.jsx(D,{title:"Impact metrics",actions:t.jsx(V,{variant:"contained",onClick:A,permission:j,children:"New chart"})}),children:t.jsxs(CA,{children:[t.jsx(mA,{children:t.jsx(ZA,{})}),t.jsxs(cA,{children:[t.jsx(i,{variant:"h3",component:"h2",sx:{mb:1.5},children:"No impact metrics yet"}),t.jsx(i,{color:"text.secondary",children:"Impact metrics help you measure how feature flags affect your application's performance. Get started by sending your first metrics from your code."})]}),t.jsxs(QA,{children:[t.jsx(H,{variant:"text",href:UA,target:"_blank",rel:"noopener noreferrer",children:"Read the docs"}),t.jsx(V,{variant:"contained",onClick:A,permission:j,children:"Create your first chart"})]}),t.jsxs(iA,{severity:"info",icon:t.jsx(_,{}),children:[t.jsx("strong",{children:"Tip:"})," Once you've set up metrics, you'll be able to create charts, set up safeguards, and monitor your application's health in real-time."]})]})});e(l)(({theme:A})=>({display:"flex",alignItems:"center",cursor:"move",padding:A.spacing(.5),borderRadius:A.shape.borderRadius,color:A.palette.text.secondary,"&:hover":{backgroundColor:A.palette.action.hover,color:A.palette.text.primary}}));const uA=()=>{const[A,g]=n.useState(!1),[p,v]=n.useState(),{setToastApiError:B}=$(),q=AA("plausibleMetrics"),{trackEvent:a}=tA(),{charts:d,layout:Z,loading:u,error:C,addChart:z,updateChart:U,deleteChart:m}=eA(),{metricOptions:b,loading:f,error:M}=aA(),s=()=>{v(void 0),g(!0),a("impact-metrics",{props:{eventType:"global chart modal open"}})},W=o=>{v(o),g(!0)},S=async o=>{try{p?await U(p.id,o):await z(o),g(!1)}catch(c){B(P(c))}},L=n.useCallback(async o=>{try{await m(o)}catch(c){B(P(c))}},[m]),y=n.useMemo(()=>{const o=[];if(q){const Q={id:"plausible-analytics",component:t.jsx(dA,{}),w:6,h:2};o.push(Q)}const c=d.map((Q,MA)=>{const r=Z==null?void 0:Z.find(N=>N.i===Q.id);return{id:Q.id,component:t.jsx(rA,{config:Q,onEdit:W,onDelete:L}),w:(r==null?void 0:r.w)??6,h:(r==null?void 0:r.h)??4,x:r==null?void 0:r.x,y:r==null?void 0:r.y,minW:4,minH:2,maxW:12,maxH:8}});return[...o,...c]},[d,Z,W,L,q]),G=M||C,F=f||u,I=d.length>=20,E=F||!!G||I,h=d.length===0&&!F;return t.jsxs(t.Fragment,{children:[h?t.jsx(qA,{onAddChart:s}):t.jsxs(t.Fragment,{children:[t.jsx(D,{title:"Impact metrics",titleElement:t.jsx(i,{variant:"h1",component:"span",children:"Impact metrics"}),actions:t.jsx(V,{variant:"contained",onClick:s,disabled:E,permission:j,tooltipProps:I?{title:"Maximum of 20 impact metrics charts allowed",arrow:!0}:void 0,children:"New chart"})}),y.length>0&&t.jsx(nA,{items:y})]}),t.jsx(sA,{open:A,onClose:()=>g(!1),onSave:S,initialConfig:p,metricSeries:b,loading:f||u})]})},fA=e("div")(({theme:A})=>({paddingTop:A.spacing(2)})),zA=e("div")(({theme:A})=>({display:"flex",flexDirection:"column",gap:A.spacing(4),paddingBottom:A.spacing(4)})),jA=()=>t.jsx(fA,{children:t.jsx(zA,{children:t.jsx(uA,{})})});export{jA as ImpactMetricsPage};