unleash-server 8.0.0 → 8.0.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 (501) hide show
  1. package/dist/lib/addons/addon.d.ts +10 -2
  2. package/dist/lib/addons/addon.d.ts.map +1 -1
  3. package/dist/lib/addons/addon.js +104 -6
  4. package/dist/lib/addons/addon.js.map +1 -1
  5. package/dist/lib/addons/datadog-definition.js +1 -1
  6. package/dist/lib/addons/datadog-definition.js.map +1 -1
  7. package/dist/lib/addons/datadog.test.js +2 -0
  8. package/dist/lib/addons/datadog.test.js.map +1 -1
  9. package/dist/lib/addons/index.d.ts.map +1 -1
  10. package/dist/lib/addons/index.js +2 -0
  11. package/dist/lib/addons/index.js.map +1 -1
  12. package/dist/lib/addons/new-relic.d.ts.map +1 -1
  13. package/dist/lib/addons/new-relic.js +0 -1
  14. package/dist/lib/addons/new-relic.js.map +1 -1
  15. package/dist/lib/addons/new-relic.test.js +0 -1
  16. package/dist/lib/addons/new-relic.test.js.map +1 -1
  17. package/dist/lib/addons/slack.test.js +1 -2
  18. package/dist/lib/addons/slack.test.js.map +1 -1
  19. package/dist/lib/addons/teams-definition.d.ts.map +1 -1
  20. package/dist/lib/addons/teams-definition.js +1 -0
  21. package/dist/lib/addons/teams-definition.js.map +1 -1
  22. package/dist/lib/addons/teams-workflow-definition.d.ts +4 -0
  23. package/dist/lib/addons/teams-workflow-definition.d.ts.map +1 -0
  24. package/dist/lib/addons/teams-workflow-definition.js +66 -0
  25. package/dist/lib/addons/teams-workflow-definition.js.map +1 -0
  26. package/dist/lib/addons/teams-workflow.d.ts +15 -0
  27. package/dist/lib/addons/teams-workflow.d.ts.map +1 -0
  28. package/dist/lib/addons/teams-workflow.js +110 -0
  29. package/dist/lib/addons/teams-workflow.js.map +1 -0
  30. package/dist/lib/addons/teams-workflow.test.d.ts +2 -0
  31. package/dist/lib/addons/teams-workflow.test.d.ts.map +1 -0
  32. package/dist/lib/addons/teams-workflow.test.js +202 -0
  33. package/dist/lib/addons/teams-workflow.test.js.map +1 -0
  34. package/dist/lib/addons/teams.d.ts.map +1 -1
  35. package/dist/lib/addons/teams.js +0 -1
  36. package/dist/lib/addons/teams.js.map +1 -1
  37. package/dist/lib/addons/teams.test.js +0 -1
  38. package/dist/lib/addons/teams.test.js.map +1 -1
  39. package/dist/lib/addons/validate-url.d.ts +18 -0
  40. package/dist/lib/addons/validate-url.d.ts.map +1 -0
  41. package/dist/lib/addons/validate-url.js +93 -0
  42. package/dist/lib/addons/validate-url.js.map +1 -0
  43. package/dist/lib/addons/validate-url.test.d.ts +2 -0
  44. package/dist/lib/addons/validate-url.test.d.ts.map +1 -0
  45. package/dist/lib/addons/validate-url.test.js +199 -0
  46. package/dist/lib/addons/validate-url.test.js.map +1 -0
  47. package/dist/lib/create-config.d.ts.map +1 -1
  48. package/dist/lib/create-config.js +7 -0
  49. package/dist/lib/create-config.js.map +1 -1
  50. package/dist/lib/db/session-store.d.ts +1 -0
  51. package/dist/lib/db/session-store.d.ts.map +1 -1
  52. package/dist/lib/db/session-store.js +6 -0
  53. package/dist/lib/db/session-store.js.map +1 -1
  54. package/dist/lib/error/bad-data-error.d.ts.map +1 -1
  55. package/dist/lib/error/bad-data-error.js +10 -2
  56. package/dist/lib/error/bad-data-error.js.map +1 -1
  57. package/dist/lib/error/unleash-error.test.js +23 -0
  58. package/dist/lib/error/unleash-error.test.js.map +1 -1
  59. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.d.ts.map +1 -1
  60. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js +2 -0
  61. package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js.map +1 -1
  62. package/dist/lib/features/constraints/constraints-controller.d.ts.map +1 -1
  63. package/dist/lib/features/constraints/constraints-controller.js +1 -0
  64. package/dist/lib/features/constraints/constraints-controller.js.map +1 -1
  65. package/dist/lib/features/context/context.d.ts.map +1 -1
  66. package/dist/lib/features/context/context.js +3 -1
  67. package/dist/lib/features/context/context.js.map +1 -1
  68. package/dist/lib/features/dependent-features/dependent-features-controller.d.ts.map +1 -1
  69. package/dist/lib/features/dependent-features/dependent-features-controller.js +6 -0
  70. package/dist/lib/features/dependent-features/dependent-features-controller.js.map +1 -1
  71. package/dist/lib/features/environments/environments-controller.d.ts.map +1 -1
  72. package/dist/lib/features/environments/environments-controller.js +6 -0
  73. package/dist/lib/features/environments/environments-controller.js.map +1 -1
  74. package/dist/lib/features/events/event-search-controller.d.ts.map +1 -1
  75. package/dist/lib/features/events/event-search-controller.js +1 -0
  76. package/dist/lib/features/events/event-search-controller.js.map +1 -1
  77. package/dist/lib/features/export-import-toggles/export-import-controller.d.ts.map +1 -1
  78. package/dist/lib/features/export-import-toggles/export-import-controller.js +3 -0
  79. package/dist/lib/features/export-import-toggles/export-import-controller.js.map +1 -1
  80. package/dist/lib/features/feature-search/feature-search-controller.d.ts.map +1 -1
  81. package/dist/lib/features/feature-search/feature-search-controller.js +1 -0
  82. package/dist/lib/features/feature-search/feature-search-controller.js.map +1 -1
  83. package/dist/lib/features/feature-search/feature-search-service.d.ts.map +1 -1
  84. package/dist/lib/features/feature-search/feature-search-service.js +5 -0
  85. package/dist/lib/features/feature-search/feature-search-service.js.map +1 -1
  86. package/dist/lib/features/feature-search/feature-search-store.d.ts +1 -1
  87. package/dist/lib/features/feature-search/feature-search-store.d.ts.map +1 -1
  88. package/dist/lib/features/feature-search/feature-search-store.js +60 -10
  89. package/dist/lib/features/feature-search/feature-search-store.js.map +1 -1
  90. package/dist/lib/features/feature-search/feature.search.e2e.test.js +77 -0
  91. package/dist/lib/features/feature-search/feature.search.e2e.test.js.map +1 -1
  92. package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.d.ts.map +1 -1
  93. package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.js +2 -0
  94. package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.js.map +1 -1
  95. package/dist/lib/features/feature-toggle/feature-toggle-controller.d.ts.map +1 -1
  96. package/dist/lib/features/feature-toggle/feature-toggle-controller.js +21 -0
  97. package/dist/lib/features/feature-toggle/feature-toggle-controller.js.map +1 -1
  98. package/dist/lib/features/feature-toggle/legacy/feature-toggle-legacy-controller.d.ts.map +1 -1
  99. package/dist/lib/features/feature-toggle/legacy/feature-toggle-legacy-controller.js +5 -0
  100. package/dist/lib/features/feature-toggle/legacy/feature-toggle-legacy-controller.js.map +1 -1
  101. package/dist/lib/features/frontend-api/frontend-api-controller.d.ts.map +1 -1
  102. package/dist/lib/features/frontend-api/frontend-api-controller.js +4 -0
  103. package/dist/lib/features/frontend-api/frontend-api-controller.js.map +1 -1
  104. package/dist/lib/features/frontend-api/frontend-api-service.d.ts.map +1 -1
  105. package/dist/lib/features/frontend-api/frontend-api-service.js +17 -20
  106. package/dist/lib/features/frontend-api/frontend-api-service.js.map +1 -1
  107. package/dist/lib/features/maintenance/maintenance-controller.d.ts.map +1 -1
  108. package/dist/lib/features/maintenance/maintenance-controller.js +2 -0
  109. package/dist/lib/features/maintenance/maintenance-controller.js.map +1 -1
  110. package/dist/lib/features/metrics/client-metrics/client-metrics.d.ts.map +1 -1
  111. package/dist/lib/features/metrics/client-metrics/client-metrics.js +2 -0
  112. package/dist/lib/features/metrics/client-metrics/client-metrics.js.map +1 -1
  113. package/dist/lib/features/metrics/custom/custom-metrics-controller.d.ts.map +1 -1
  114. package/dist/lib/features/metrics/custom/custom-metrics-controller.js +2 -0
  115. package/dist/lib/features/metrics/custom/custom-metrics-controller.js.map +1 -1
  116. package/dist/lib/features/metrics/instance/metrics.d.ts.map +1 -1
  117. package/dist/lib/features/metrics/instance/metrics.js +3 -0
  118. package/dist/lib/features/metrics/instance/metrics.js.map +1 -1
  119. package/dist/lib/features/metrics/instance/register.d.ts.map +1 -1
  120. package/dist/lib/features/metrics/instance/register.js +1 -0
  121. package/dist/lib/features/metrics/instance/register.js.map +1 -1
  122. package/dist/lib/features/metrics/integrations/integration-metrics.d.ts +1 -1
  123. package/dist/lib/features/metrics/integrations/integration-metrics.d.ts.map +1 -1
  124. package/dist/lib/features/metrics/integrations/integration-metrics.js +2 -0
  125. package/dist/lib/features/metrics/integrations/integration-metrics.js.map +1 -1
  126. package/dist/lib/features/metrics/unknown-flags/unknown-flags-controller.d.ts.map +1 -1
  127. package/dist/lib/features/metrics/unknown-flags/unknown-flags-controller.js +1 -0
  128. package/dist/lib/features/metrics/unknown-flags/unknown-flags-controller.js.map +1 -1
  129. package/dist/lib/features/playground/playground.d.ts.map +1 -1
  130. package/dist/lib/features/playground/playground.js +2 -0
  131. package/dist/lib/features/playground/playground.js.map +1 -1
  132. package/dist/lib/features/project/project-controller.d.ts.map +1 -1
  133. package/dist/lib/features/project/project-controller.js +6 -0
  134. package/dist/lib/features/project/project-controller.js.map +1 -1
  135. package/dist/lib/features/project-environments/project-environments-controller.d.ts.map +1 -1
  136. package/dist/lib/features/project-environments/project-environments-controller.js +3 -0
  137. package/dist/lib/features/project-environments/project-environments-controller.js.map +1 -1
  138. package/dist/lib/features/project-insights/project-insights-controller.d.ts.map +1 -1
  139. package/dist/lib/features/project-insights/project-insights-controller.js +1 -0
  140. package/dist/lib/features/project-insights/project-insights-controller.js.map +1 -1
  141. package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.d.ts.map +1 -1
  142. package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.js +5 -2
  143. package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.js.map +1 -1
  144. package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.test.js +34 -0
  145. package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.test.js.map +1 -1
  146. package/dist/lib/features/segment/segment-controller.d.ts.map +1 -1
  147. package/dist/lib/features/segment/segment-controller.js +9 -0
  148. package/dist/lib/features/segment/segment-controller.js.map +1 -1
  149. package/dist/lib/features/tag-type/tag-type.d.ts.map +1 -1
  150. package/dist/lib/features/tag-type/tag-type.js +6 -0
  151. package/dist/lib/features/tag-type/tag-type.js.map +1 -1
  152. package/dist/lib/features/ui-observability-controller/ui-observability-controller.d.ts.map +1 -1
  153. package/dist/lib/features/ui-observability-controller/ui-observability-controller.js +1 -0
  154. package/dist/lib/features/ui-observability-controller/ui-observability-controller.js.map +1 -1
  155. package/dist/lib/middleware/secure-headers.d.ts.map +1 -1
  156. package/dist/lib/middleware/secure-headers.js +20 -1
  157. package/dist/lib/middleware/secure-headers.js.map +1 -1
  158. package/dist/lib/openapi/spec/addon-create-update-schema.d.ts +1 -1
  159. package/dist/lib/openapi/spec/addon-create-update-schema.js +1 -1
  160. package/dist/lib/openapi/spec/addons-schema.d.ts +15 -0
  161. package/dist/lib/openapi/spec/addons-schema.d.ts.map +1 -1
  162. package/dist/lib/openapi/spec/addons-schema.js +51 -0
  163. package/dist/lib/openapi/spec/addons-schema.js.map +1 -1
  164. package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts +3 -2
  165. package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts.map +1 -1
  166. package/dist/lib/openapi/spec/feature-search-query-parameters.js +3 -2
  167. package/dist/lib/openapi/spec/feature-search-query-parameters.js.map +1 -1
  168. package/dist/lib/openapi/spec/profile-schema.d.ts +6 -1
  169. package/dist/lib/openapi/spec/profile-schema.d.ts.map +1 -1
  170. package/dist/lib/openapi/spec/profile-schema.js +13 -1
  171. package/dist/lib/openapi/spec/profile-schema.js.map +1 -1
  172. package/dist/lib/openapi/spec/profile-schema.test.js +1 -0
  173. package/dist/lib/openapi/spec/profile-schema.test.js.map +1 -1
  174. package/dist/lib/openapi/util/api-operation.d.ts +1 -1
  175. package/dist/lib/openapi/util/api-stability.js +1 -1
  176. package/dist/lib/openapi/util/api-stability.test.js +8 -5
  177. package/dist/lib/openapi/util/api-stability.test.js.map +1 -1
  178. package/dist/lib/routes/admin-api/addon.d.ts.map +1 -1
  179. package/dist/lib/routes/admin-api/addon.js +12 -2
  180. package/dist/lib/routes/admin-api/addon.js.map +1 -1
  181. package/dist/lib/routes/admin-api/api-token.d.ts.map +1 -1
  182. package/dist/lib/routes/admin-api/api-token.js +5 -0
  183. package/dist/lib/routes/admin-api/api-token.js.map +1 -1
  184. package/dist/lib/routes/admin-api/event.d.ts.map +1 -1
  185. package/dist/lib/routes/admin-api/event.js +3 -0
  186. package/dist/lib/routes/admin-api/event.js.map +1 -1
  187. package/dist/lib/routes/admin-api/favorites.d.ts.map +1 -1
  188. package/dist/lib/routes/admin-api/favorites.js +4 -0
  189. package/dist/lib/routes/admin-api/favorites.js.map +1 -1
  190. package/dist/lib/routes/admin-api/feature-type.d.ts.map +1 -1
  191. package/dist/lib/routes/admin-api/feature-type.js +2 -0
  192. package/dist/lib/routes/admin-api/feature-type.js.map +1 -1
  193. package/dist/lib/routes/admin-api/instance-admin.d.ts.map +1 -1
  194. package/dist/lib/routes/admin-api/instance-admin.js +2 -0
  195. package/dist/lib/routes/admin-api/instance-admin.js.map +1 -1
  196. package/dist/lib/routes/admin-api/metrics.d.ts.map +1 -1
  197. package/dist/lib/routes/admin-api/metrics.js +7 -0
  198. package/dist/lib/routes/admin-api/metrics.js.map +1 -1
  199. package/dist/lib/routes/admin-api/project/api-token.d.ts.map +1 -1
  200. package/dist/lib/routes/admin-api/project/api-token.js +3 -0
  201. package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
  202. package/dist/lib/routes/admin-api/project/health-report.d.ts.map +1 -1
  203. package/dist/lib/routes/admin-api/project/health-report.js +1 -0
  204. package/dist/lib/routes/admin-api/project/health-report.js.map +1 -1
  205. package/dist/lib/routes/admin-api/project/project-archive.d.ts.map +1 -1
  206. package/dist/lib/routes/admin-api/project/project-archive.js +4 -0
  207. package/dist/lib/routes/admin-api/project/project-archive.js.map +1 -1
  208. package/dist/lib/routes/admin-api/project/variants.d.ts.map +1 -1
  209. package/dist/lib/routes/admin-api/project/variants.js +4 -0
  210. package/dist/lib/routes/admin-api/project/variants.js.map +1 -1
  211. package/dist/lib/routes/admin-api/public-signup.d.ts.map +1 -1
  212. package/dist/lib/routes/admin-api/public-signup.js +4 -0
  213. package/dist/lib/routes/admin-api/public-signup.js.map +1 -1
  214. package/dist/lib/routes/admin-api/strategy.d.ts.map +1 -1
  215. package/dist/lib/routes/admin-api/strategy.js +7 -0
  216. package/dist/lib/routes/admin-api/strategy.js.map +1 -1
  217. package/dist/lib/routes/admin-api/tag.d.ts.map +1 -1
  218. package/dist/lib/routes/admin-api/tag.js +5 -0
  219. package/dist/lib/routes/admin-api/tag.js.map +1 -1
  220. package/dist/lib/routes/admin-api/telemetry.d.ts.map +1 -1
  221. package/dist/lib/routes/admin-api/telemetry.js +1 -0
  222. package/dist/lib/routes/admin-api/telemetry.js.map +1 -1
  223. package/dist/lib/routes/admin-api/user/pat.d.ts.map +1 -1
  224. package/dist/lib/routes/admin-api/user/pat.js +3 -0
  225. package/dist/lib/routes/admin-api/user/pat.js.map +1 -1
  226. package/dist/lib/routes/admin-api/user/user.d.ts.map +1 -1
  227. package/dist/lib/routes/admin-api/user/user.js +11 -2
  228. package/dist/lib/routes/admin-api/user/user.js.map +1 -1
  229. package/dist/lib/routes/admin-api/user/user.test.js +56 -6
  230. package/dist/lib/routes/admin-api/user/user.test.js.map +1 -1
  231. package/dist/lib/routes/admin-api/user-admin.d.ts.map +1 -1
  232. package/dist/lib/routes/admin-api/user-admin.js +12 -0
  233. package/dist/lib/routes/admin-api/user-admin.js.map +1 -1
  234. package/dist/lib/routes/admin-api/user-feedback.d.ts.map +1 -1
  235. package/dist/lib/routes/admin-api/user-feedback.js +2 -0
  236. package/dist/lib/routes/admin-api/user-feedback.js.map +1 -1
  237. package/dist/lib/routes/admin-api/user-splash.d.ts.map +1 -1
  238. package/dist/lib/routes/admin-api/user-splash.js +1 -0
  239. package/dist/lib/routes/admin-api/user-splash.js.map +1 -1
  240. package/dist/lib/routes/auth/reset-password-controller.d.ts.map +1 -1
  241. package/dist/lib/routes/auth/reset-password-controller.js +4 -0
  242. package/dist/lib/routes/auth/reset-password-controller.js.map +1 -1
  243. package/dist/lib/routes/auth/simple-password-provider.d.ts.map +1 -1
  244. package/dist/lib/routes/auth/simple-password-provider.js +1 -0
  245. package/dist/lib/routes/auth/simple-password-provider.js.map +1 -1
  246. package/dist/lib/routes/edge-api/index.d.ts.map +1 -1
  247. package/dist/lib/routes/edge-api/index.js +1 -0
  248. package/dist/lib/routes/edge-api/index.js.map +1 -1
  249. package/dist/lib/routes/health-check.d.ts.map +1 -1
  250. package/dist/lib/routes/health-check.js +1 -0
  251. package/dist/lib/routes/health-check.js.map +1 -1
  252. package/dist/lib/routes/public-invite.d.ts.map +1 -1
  253. package/dist/lib/routes/public-invite.js +2 -0
  254. package/dist/lib/routes/public-invite.js.map +1 -1
  255. package/dist/lib/routes/ready-check.d.ts.map +1 -1
  256. package/dist/lib/routes/ready-check.js +1 -0
  257. package/dist/lib/routes/ready-check.js.map +1 -1
  258. package/dist/lib/routes/util.d.ts.map +1 -1
  259. package/dist/lib/routes/util.js +8 -1
  260. package/dist/lib/routes/util.js.map +1 -1
  261. package/dist/lib/routes/util.test.d.ts +2 -0
  262. package/dist/lib/routes/util.test.d.ts.map +1 -0
  263. package/dist/lib/routes/util.test.js +18 -0
  264. package/dist/lib/routes/util.test.js.map +1 -0
  265. package/dist/lib/schema/html-input.d.ts +4 -0
  266. package/dist/lib/schema/html-input.d.ts.map +1 -0
  267. package/dist/lib/schema/html-input.js +38 -0
  268. package/dist/lib/schema/html-input.js.map +1 -0
  269. package/dist/lib/schema/html-input.test.d.ts +2 -0
  270. package/dist/lib/schema/html-input.test.d.ts.map +1 -0
  271. package/dist/lib/schema/html-input.test.js +98 -0
  272. package/dist/lib/schema/html-input.test.js.map +1 -0
  273. package/dist/lib/server-impl.d.ts +2 -1
  274. package/dist/lib/server-impl.d.ts.map +1 -1
  275. package/dist/lib/server-impl.js +2 -1
  276. package/dist/lib/server-impl.js.map +1 -1
  277. package/dist/lib/services/addon-service.d.ts +8 -1
  278. package/dist/lib/services/addon-service.d.ts.map +1 -1
  279. package/dist/lib/services/addon-service.js +24 -1
  280. package/dist/lib/services/addon-service.js.map +1 -1
  281. package/dist/lib/services/addon-service.test.js +75 -8
  282. package/dist/lib/services/addon-service.test.js.map +1 -1
  283. package/dist/lib/services/openapi-service.d.ts +2 -6
  284. package/dist/lib/services/openapi-service.d.ts.map +1 -1
  285. package/dist/lib/services/openapi-service.js.map +1 -1
  286. package/dist/lib/services/project-schema.d.ts +1 -2
  287. package/dist/lib/services/project-schema.d.ts.map +1 -1
  288. package/dist/lib/services/project-schema.js +4 -2
  289. package/dist/lib/services/project-schema.js.map +1 -1
  290. package/dist/lib/services/session-service.d.ts +6 -0
  291. package/dist/lib/services/session-service.d.ts.map +1 -1
  292. package/dist/lib/services/session-service.js +8 -0
  293. package/dist/lib/services/session-service.js.map +1 -1
  294. package/dist/lib/services/user-service.d.ts +18 -5
  295. package/dist/lib/services/user-service.d.ts.map +1 -1
  296. package/dist/lib/services/user-service.js +27 -7
  297. package/dist/lib/services/user-service.js.map +1 -1
  298. package/dist/lib/services/user-service.test.js +68 -0
  299. package/dist/lib/services/user-service.test.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 +23 -2
  303. package/dist/lib/types/experimental.js.map +1 -1
  304. package/dist/lib/types/model.d.ts +2 -0
  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 +4 -0
  308. package/dist/lib/types/option.d.ts.map +1 -1
  309. package/dist/lib/types/stores/session-store.d.ts +1 -0
  310. package/dist/lib/types/stores/session-store.d.ts.map +1 -1
  311. package/dist/lib/ui-config/ui-config-controller.d.ts.map +1 -1
  312. package/dist/lib/ui-config/ui-config-controller.js +2 -0
  313. package/dist/lib/ui-config/ui-config-controller.js.map +1 -1
  314. package/dist/lib/ui-config/ui-config-service.d.ts.map +1 -1
  315. package/dist/lib/ui-config/ui-config-service.js +4 -2
  316. package/dist/lib/ui-config/ui-config-service.js.map +1 -1
  317. package/dist/lib/ui-config/ui-config.test.js +21 -2
  318. package/dist/lib/ui-config/ui-config.test.js.map +1 -1
  319. package/dist/lib/users/inactive/inactive-users-controller.d.ts.map +1 -1
  320. package/dist/lib/users/inactive/inactive-users-controller.js +2 -0
  321. package/dist/lib/users/inactive/inactive-users-controller.js.map +1 -1
  322. package/dist/lib/util/anonymise.d.ts +1 -0
  323. package/dist/lib/util/anonymise.d.ts.map +1 -1
  324. package/dist/lib/util/anonymise.js +3 -0
  325. package/dist/lib/util/anonymise.js.map +1 -1
  326. package/dist/lib/util/anonymise.test.js +4 -1
  327. package/dist/lib/util/anonymise.test.js.map +1 -1
  328. package/dist/migrations/20260617115403-update-flag-descriptions.d.ts +3 -0
  329. package/dist/migrations/20260617115403-update-flag-descriptions.d.ts.map +1 -0
  330. package/dist/migrations/20260617115403-update-flag-descriptions.js +38 -0
  331. package/dist/migrations/20260617115403-update-flag-descriptions.js.map +1 -0
  332. package/dist/migrations/20260624120000-servicenow-change-references.d.ts +3 -0
  333. package/dist/migrations/20260624120000-servicenow-change-references.d.ts.map +1 -0
  334. package/dist/migrations/20260624120000-servicenow-change-references.js +22 -0
  335. package/dist/migrations/20260624120000-servicenow-change-references.js.map +1 -0
  336. package/dist/server-dev.js +6 -1
  337. package/dist/server-dev.js.map +1 -1
  338. package/dist/test/e2e/api/admin/addon.e2e.test.js +2 -1
  339. package/dist/test/e2e/api/admin/addon.e2e.test.js.map +1 -1
  340. package/dist/test/e2e/services/addon-service.e2e.test.js +2 -0
  341. package/dist/test/e2e/services/addon-service.e2e.test.js.map +1 -1
  342. package/dist/test/e2e/services/session-service.e2e.test.js +11 -0
  343. package/dist/test/e2e/services/session-service.e2e.test.js.map +1 -1
  344. package/dist/test/fixtures/fake-session-store.d.ts +1 -0
  345. package/dist/test/fixtures/fake-session-store.d.ts.map +1 -1
  346. package/dist/test/fixtures/fake-session-store.js +3 -0
  347. package/dist/test/fixtures/fake-session-store.js.map +1 -1
  348. package/frontend/build/index.html +2 -2
  349. package/frontend/build/static/AccordionSummary-wye3oOm6.js +1 -0
  350. package/frontend/build/static/AdvancedPlayground-DdeMb-6I.js +3 -0
  351. package/frontend/build/static/Alert-_bLyWbvx.js +1 -0
  352. package/frontend/build/static/BackendConnections-kgR0xyIH.js +1 -0
  353. package/frontend/build/static/Box-BQsxfFmC.js +1 -0
  354. package/frontend/build/static/Button-CebB8EPB.js +1 -0
  355. package/frontend/build/static/CircularProgress-C_LUU3DK.js +101 -0
  356. package/frontend/build/static/Close-DyTASMSq.js +1 -0
  357. package/frontend/build/static/Collapse-DPPTUMpf.js +1 -0
  358. package/frontend/build/static/ConditionallyRender---uTpMBn.js +1 -0
  359. package/frontend/build/static/CreateProject-BSlg0WYM.js +1 -0
  360. package/frontend/build/static/Dialog-C-xQxqWX.js +1 -0
  361. package/frontend/build/static/DialogWithAside-DzCSDyWo.js +1110 -0
  362. package/frontend/build/static/Divider-CsdWvu5F.js +1 -0
  363. package/frontend/build/static/EnterpriseEdge-CjslqYDM.js +6 -0
  364. package/frontend/build/static/FeatureMetricsChart-B4WryxcW.js +2 -0
  365. package/frontend/build/static/FeatureStaleDialog-EzReRTI5.js +8 -0
  366. package/frontend/build/static/FeatureViewLazyExport-8eQKTvdS.js +10 -0
  367. package/frontend/build/static/FileCopy-B8HZEA83.js +1 -0
  368. package/frontend/build/static/FlagMetricsChart-hNQuwOxW.js +2 -0
  369. package/frontend/build/static/FormControlLabel-F5gDLixN.js +1 -0
  370. package/frontend/build/static/FrontendNetworkTrafficUsage-pcr83PWo.js +1 -0
  371. package/frontend/build/static/GridLayoutWrapper-B_YyjZ7l.js +5 -0
  372. package/frontend/build/static/Grow-BIbmvKVy.js +1 -0
  373. package/frontend/build/static/HelpOutlineOutlined-CpMsVJZu.js +1 -0
  374. package/frontend/build/static/Highlighter-MomUaQww.js +1 -0
  375. package/frontend/build/static/HtmlTooltip-B9jv1G1R.js +1 -0
  376. package/frontend/build/static/ImpactMetricsPage-DGH_S9oz.js +1 -0
  377. package/frontend/build/static/ImpactViewsPage-DZqKPFvE.js +1 -0
  378. package/frontend/build/static/LazyAdminExport-B1ReAViz.js +38 -0
  379. package/frontend/build/static/LazyProjectExport-BMVcGpNI.js +46 -0
  380. package/frontend/build/static/LifecycleChartComponent-BeoRUO9q.js +2 -0
  381. package/frontend/build/static/LineChartComponent-BbCMbJ-m.js +1 -0
  382. package/frontend/build/static/Link-CfIScd2f.js +1 -0
  383. package/frontend/build/static/Loader-DdgXftPc.js +1 -0
  384. package/frontend/build/static/{LogRocketRunner-D_e4hzJQ.js → LogRocketRunner-Duzg1Kzh.js} +4 -4
  385. package/frontend/build/static/Logo-nextjs-DCzT4YXr.svg +1 -0
  386. package/frontend/build/static/Logo-react-CyIpikqs.svg +10 -0
  387. package/frontend/build/static/Logo-reactnative-DZ9HKW2l.svg +10 -0
  388. package/frontend/build/static/MarkCompletedDialogue-CcXyp8UE.js +1 -0
  389. package/frontend/build/static/NetworkOverview-0mBnFAZX.js +1 -0
  390. package/frontend/build/static/NetworkPrometheusAPIWarning-Bq62ygkV.js +1 -0
  391. package/frontend/build/static/NetworkTraffic-DmG5Iv25.js +1 -0
  392. package/frontend/build/static/NetworkTrafficUsage-DccaVLYs.js +1 -0
  393. package/frontend/build/static/OnboardingProgress-Bp9sZ-ZM.js +1 -0
  394. package/frontend/build/static/PageContent-c0NDm5oD.js +1 -0
  395. package/frontend/build/static/PercentageDonut-DBDGNJlh.js +1 -0
  396. package/frontend/build/static/PermissionButton-B-IfzChn.js +1 -0
  397. package/frontend/build/static/Popover-CUTnSn2h.js +1 -0
  398. package/frontend/build/static/Radio-DL8ja0ll.js +1 -0
  399. package/frontend/build/static/RadioGroup-Ci3WHaOy.js +1 -0
  400. package/frontend/build/static/ReactJSONEditor-DeBI7JPg.js +4 -0
  401. package/frontend/build/static/RoleCell-DhYvu4YH.js +1 -0
  402. package/frontend/build/static/Safeguard-DErU6fSK.js +1 -0
  403. package/frontend/build/static/SelectSdk-Dr_pzQgX.js +2 -0
  404. package/frontend/build/static/StoriesPage-frGP1Bfr.js +2 -0
  405. package/frontend/build/static/SwitchBase-DWPIxZnN.js +1 -0
  406. package/frontend/build/static/TextField-oipjeg6n.js +3 -0
  407. package/frontend/build/static/Tooltip-BaILXXti.js +1 -0
  408. package/frontend/build/static/TooltipResolver-4A1YhwBy.js +1 -0
  409. package/frontend/build/static/Truncator-D2bO9ub6.js +1 -0
  410. package/frontend/build/static/Typography-BTdLWIUX.js +1 -0
  411. package/frontend/build/static/aggregateFeatureMetrics-B-67HaIZ.js +1 -0
  412. package/frontend/build/static/chartjs-plugin-annotation.esm-DP4wCpdA.js +1 -0
  413. package/frontend/build/static/chunk-QUQL4437-Dr42NpoL.js +3 -0
  414. package/frontend/build/static/createBox-Cf2UJsmc.js +1 -0
  415. package/frontend/build/static/createLocalStorage-WS-MCMlG.js +1 -0
  416. package/frontend/build/static/createSimplePaletteValueFilter-BRAMrHWJ.js +1 -0
  417. package/frontend/build/static/differenceInSeconds-DMZGQwjK.js +1 -0
  418. package/frontend/build/static/dividerClasses-Cc45lyWo.js +1 -0
  419. package/frontend/build/static/endOfMonth-CkSR_DAx.js +1 -0
  420. package/frontend/build/static/{enterpriseEdgeCloud-DtcZf9iv.js → enterpriseEdgeCloud-C5u35XAw.js} +1 -1
  421. package/frontend/build/static/esm-DdgY1Q5s.js +12 -0
  422. package/frontend/build/static/format-C8UVjLNw.js +1 -0
  423. package/frontend/build/static/formatDate-cFuM4JYl.js +1 -0
  424. package/frontend/build/static/formatDistanceToNow-CyouiCIY.js +1 -0
  425. package/frontend/build/static/httpErrorResponseHandler-FMtt7Zqh.js +1 -0
  426. package/frontend/build/static/{impact-metrics-icon-1LLLS-bG.js → impact-metrics-icon-6dt-ye-h.js} +1 -1
  427. package/frontend/build/static/index-C04TEs4k.js +290 -0
  428. package/frontend/build/static/jsx-runtime-BnvnyDTF.js +1 -0
  429. package/frontend/build/static/metricsFormatters-DhX-aU17.js +1 -0
  430. package/frontend/build/static/mui-CoU2c-id.js +5 -0
  431. package/frontend/build/static/networkTrafficUsageHighlightPlugin-DlOtHZg3.js +1 -0
  432. package/frontend/build/static/parse-Chj4PyAg.js +1 -0
  433. package/frontend/build/static/parseISO-Cup6hyvQ.js +1 -0
  434. package/frontend/build/static/{react-DW1tWzGJ.js → react-GZhdek4G.js} +1 -1
  435. package/frontend/build/static/startOfHour-P0Sr6h8e.js +1 -0
  436. package/frontend/build/static/testIds-B_Ev-uQn.js +1 -0
  437. package/frontend/build/static/themeStyles-DGVpwkcv.js +1 -0
  438. package/frontend/build/static/useApiGetter-7FP8Avm4.js +1 -0
  439. package/frontend/build/static/useApiTokens-C8Dqw_X1.js +1 -0
  440. package/frontend/build/static/useConditionalSWR-DGgzun6i.js +1 -0
  441. package/frontend/build/static/useConditionallyHiddenColumns-C5q9zdfJ.js +5 -0
  442. package/frontend/build/static/useCustomEvent-Dj2V5RVb.js +1 -0
  443. package/frontend/build/static/useEnvironments-CTguhgy0.js +2 -0
  444. package/frontend/build/static/useGroupedImpactMetricsData-CW9qnV2y.js +1 -0
  445. package/frontend/build/static/useImpactMetrics-9qDSEpTn.js +3 -0
  446. package/frontend/build/static/useImpactMetricsEnabled-wRNO6-Oh.js +1 -0
  447. package/frontend/build/static/useInstanceTrafficMetrics-CRCDB4TX.js +1 -0
  448. package/frontend/build/static/useMediaQuery-DGx8zAkf.js +2 -0
  449. package/frontend/build/static/useOptionalPathParam-Cx3ru9yC.js +1 -0
  450. package/frontend/build/static/usePageTitle-CHzzFshF.js +1 -0
  451. package/frontend/build/static/useTheme-CQqAmDLr.js +9 -0
  452. package/frontend/build/static/useUiConfig-DbVjTDpE.js +1 -0
  453. package/frontend/package.json +13 -13
  454. package/package.json +13 -11
  455. package/frontend/build/static/AdvancedPlayground-Dc5CjsH6.js +0 -3
  456. package/frontend/build/static/BackendConnections-BzoyVkqE.js +0 -1
  457. package/frontend/build/static/CreateProject-CARqyXgr.js +0 -1
  458. package/frontend/build/static/DialogWithAside-CtKlvRxJ.js +0 -947
  459. package/frontend/build/static/EnterpriseEdge-6F99gSET.js +0 -6
  460. package/frontend/build/static/FeatureMetricsChart-CCUsCbvl.js +0 -2
  461. package/frontend/build/static/FeatureStaleDialog-IRgDg5x8.js +0 -8
  462. package/frontend/build/static/FeatureViewLazyExport-7dlvG8T-.js +0 -10
  463. package/frontend/build/static/FlagMetricsChart-CQCEqI6k.js +0 -2
  464. package/frontend/build/static/FrontendNetworkTrafficUsage-CdHe-oU2.js +0 -1
  465. package/frontend/build/static/GridLayoutWrapper-L_W9K-dV.js +0 -3
  466. package/frontend/build/static/ImpactMetricsPage-0OKGAVog.js +0 -1
  467. package/frontend/build/static/ImpactViewsPage-CdwvIuE9.js +0 -1
  468. package/frontend/build/static/LazyAdminExport-lAWqz1Kg.js +0 -38
  469. package/frontend/build/static/LazyProjectExport-CjjWWq5H.js +0 -46
  470. package/frontend/build/static/LifecycleChartComponent-Dw7X54qU.js +0 -2
  471. package/frontend/build/static/LineChartComponent-D81JPWi4.js +0 -1
  472. package/frontend/build/static/Logo-react-D2SuVol5.svg +0 -1
  473. package/frontend/build/static/MarkCompletedDialogue-vW74sVuW.js +0 -1
  474. package/frontend/build/static/NetworkOverview-Dx3Yhmnr.js +0 -1
  475. package/frontend/build/static/NetworkPrometheusAPIWarning-BlbOSbDW.js +0 -1
  476. package/frontend/build/static/NetworkTraffic-CJI952Qr.js +0 -1
  477. package/frontend/build/static/NetworkTrafficUsage-DP83K2Q6.js +0 -1
  478. package/frontend/build/static/OnboardingProgress-DECLEUJE.js +0 -1
  479. package/frontend/build/static/PercentageDonut-CV__KCpE.js +0 -1
  480. package/frontend/build/static/ReactJSONEditor-D4-lWgEb.js +0 -4
  481. package/frontend/build/static/RoleCell-0_ZJUpz5.js +0 -1
  482. package/frontend/build/static/Safeguard-B93Tz6lG.js +0 -1
  483. package/frontend/build/static/SelectSdk-Cxw0QOfY.js +0 -2
  484. package/frontend/build/static/StoriesPage-ZDw2ahU0.js +0 -1
  485. package/frontend/build/static/aggregateFeatureMetrics-Byd95jx-.js +0 -1
  486. package/frontend/build/static/chart-CG3XAKw_.js +0 -3
  487. package/frontend/build/static/chartjs-plugin-annotation.esm-bUcqmHD4.js +0 -1
  488. package/frontend/build/static/esm-LYuUsJ00.js +0 -15
  489. package/frontend/build/static/index-DIBimazR.js +0 -409
  490. package/frontend/build/static/networkTrafficUsageHighlightPlugin-C8avnJ5K.js +0 -1
  491. package/frontend/build/static/objectId-CwvEBicG.js +0 -1
  492. package/frontend/build/static/useApiTokens-CdZD_-zn.js +0 -1
  493. package/frontend/build/static/useGroupedImpactMetricsData-D2KwIe7Z.js +0 -1
  494. package/frontend/build/static/useImpactMetricsEnabled-Yb36cM6y.js +0 -1
  495. package/frontend/build/static/useInstanceTrafficMetrics-CcZqSYy1.js +0 -1
  496. /package/frontend/build/static/{daysOrHours-DZ037Bzn.js → daysOrHours-owFAL-4S.js} +0 -0
  497. /package/frontend/build/static/{formatPath-vbOoY_VU.js → formatPath-j72gcKwy.js} +0 -0
  498. /package/frontend/build/static/{formatTickValue-xCLMih6P.js → formatTickValue-DWHZUXee.js} +0 -0
  499. /package/frontend/build/static/{storage-DS1Ts5PA.js → storage-tBZ25pJM.js} +0 -0
  500. /package/frontend/build/static/{toDate-JUEZGP0n.js → toDate-BEKdmfOu.js} +0 -0
  501. /package/frontend/build/static/{unknownify-D0N8k6Ch.js → unknownify-CCAQc7w1.js} +0 -0
@@ -1,2 +0,0 @@
1
- import{o as e,t}from"./react-DW1tWzGJ.js";import{_ as n,a as r,d as i,g as a,i as o,o as s,v as c}from"./chart-CG3XAKw_.js";import{Hc as l,Jd as u,Kd as d,Lt as f,Rs as p,Td as m,Uc as h,Us as g,Vc as _,df as v,gc as y,gd as b,jo as x,so as S}from"./index-DIBimazR.js";import{t as C}from"./chartjs-plugin-annotation.esm-bUcqmHD4.js";import{t as w}from"./formatTickValue-xCLMih6P.js";import{i as T,t as E}from"./MarkCompletedDialogue-vW74sVuW.js";import{i as D,n as O,r as k,t as A}from"./aggregateFeatureMetrics-Byd95jx-.js";var j=e(t(),1),M=(e,t)=>({datasets:[{label:`Enabled`,hoverBackgroundColor:e.palette.charts.flagMetrics.enabled,backgroundColor:e.palette.charts.flagMetrics.enabled,data:N(t,e=>e.yes)},{label:`Not enabled`,hoverBackgroundColor:e.palette.charts.flagMetrics.notEnabled,backgroundColor:e.palette.charts.flagMetrics.notEnabled,data:N(t,e=>e.no)}]}),N=(e,t)=>e.map(e=>({x:e.timestamp,y:t(e),variants:e.variants||{}})),P=(e,t)=>{if(t===0)return``;let[n,r]=e;return`${r} (${Math.floor(Number(r)/t*100)}%) - ${n}`},F=e=>({plugins:{legend:{position:`top`,labels:{color:e.palette.text.primary,usePointStyle:!0,pointStyle:`none`,boxHeight:0,padding:15}},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:{color:e.palette.divider},border:{display:!1}}},elements:{bar:{borderRadius:5}},interaction:{mode:`index`,intersect:!1}}),I=(e,t,n)=>{let{responsive:r,elements:i,interaction:a,scales:o,maintainAspectRatio:s}=F(e);return{plugins:{legend:{position:`bottom`,labels:{color:e.palette.text.primary,pointStyle:`circle`,usePointStyle:!0,boxHeight:6,padding:15}},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:e=>`${e.formattedValue} - ${e.dataset.label}`,afterLabel:e=>{let t=e.dataset.data[e.dataIndex];if(e.dataset.label!==`Enabled`||t.variants===void 0)return``;let{disabled:n,...r}=t.variants;return Object.entries(r).map(e=>P(e,t.y)).join(`
2
- `)},title:e=>`Time: ${t>48?h(e[0].label,n.locale,`UTC`):_(e[0].label,n.locale)}`}}},responsive:r,maintainAspectRatio:s,scales:{x:{...o?o.x:{},ticks:{color:e.palette.text.secondary,callback(e){let r=this.getLabelForValue(Number(e));return t>48?l(r,n.locale,`UTC`):_(r,n.locale)}}},y:{...o?.y??{},ticks:{...o?.y?.ticks??{},color:e.palette.text.secondary,callback:w,display:!0}}},elements:i,interaction:a}},L=v(),R=({project:e,flagName:t,onArchive:n,className:r})=>{let{feature:i,refetchFeature:a}=S(e,t),o=i.environments?.map(e=>({name:e.name,lastSeenAt:e.lastSeenAt,enabled:e.enabled,yes:e.yes,no:e.no})),[s,c]=(0,j.useState)(!1),[l,u]=(0,j.useState)(!1);return(0,L.jsxs)(b,{sx:{display:`flex`},className:r,children:[(0,L.jsx)(p,{sx:{pt:0,pb:0},featureLastSeen:i.lastSeenAt,environments:o}),(0,L.jsx)(x,{feature:i,onArchive:()=>c(!0),onComplete:()=>u(!0),onUncomplete:a}),i.children.length>0?(0,L.jsx)(D,{features:i.children,project:e,isOpen:s,onClose:()=>c(!1)}):(0,L.jsx)(T,{isOpen:s,onConfirm:n,onClose:()=>c(!1),projectId:e,featureIds:[t]}),i.project?(0,L.jsx)(E,{isOpen:l,setIsOpen:u,projectId:i.project,featureId:i.name,onComplete:a}):null]})},z=[0,14,28,21,33,31,31,22,26,37,31,14,21,14,0],B=e=>({labels:Array.from({length:15},(e,t)=>t+1),datasets:[{data:z,backgroundColor:e.palette.divider,hoverBackgroundColor:e.palette.divider,label:``}]}),V=d(`div`)({width:`100%`,flexGrow:1}),H=({label:e})=>{let t=u(),n=(0,j.useMemo)(()=>F(t),[t]),r=(0,j.useMemo)(()=>B(t),[t]),i=`placeholder-chart-label`;return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(m,{id:i,children:e}),(0,L.jsx)(V,{children:(0,L.jsx)(f,{data:r,options:n,"aria-describedby":i})})]})},U=()=>{let e=u(),t=(0,j.useMemo)(()=>F(e),[e]);return(0,L.jsx)(V,{children:(0,L.jsx)(f,{data:(0,j.useMemo)(()=>({labels:[],datasets:[]}),[e]),options:t,"aria-label":`A placeholder bar chart with a single feature flag exposure metrics`})})},W=(e,t)=>{let[n,r]=(0,j.useState)(null),{feature:i}=S(e,t),a=(i?.environments??[]).map(e=>({name:e.name,type:e.type})),o=a.find(e=>e.type===`production`);return(0,j.useEffect)(()=>{o?r(o.name):a.length>0&&r(a[0].name)},[t,JSON.stringify(a)]),{environment:n,setEnvironment:r,activeEnvironments:a}},G=(e,t,n)=>{let r=u(),{featureMetrics:i=[],loading:a,error:o}=k(e,n),s=(0,j.useMemo)(()=>[...i].sort((e,t)=>e.timestamp.localeCompare(t.timestamp)),[i]),c=(0,j.useMemo)(()=>A(s?.filter(e=>t===e.environment)).map(e=>({...e,appName:`all selected`})),[s,t]),l=(0,j.useMemo)(()=>M(r,c),[r,c]),{locationSettings:d}=y();return{data:l,options:(0,j.useMemo)(()=>I(r,n,d),[r,n,d]),loading:a,error:o}},K=({activeEnvironments:e,environment:t,setEnvironment:n})=>(0,L.jsx)(g,{name:`feature-environments`,label:`Environment`,id:`feature-environments`,options:e.map(e=>({key:e.name,label:e.name})),value:String(t),onChange:n}),q=d(b)(({theme:e})=>({display:`flex`,justifyContent:`flex-start`,flexFlow:`row wrap`,gap:e.spacing(2)})),J=d(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(3),alignItems:`center`,height:`100%`,justifyContent:`space-between`})),Y=d(R)({alignItems:`center`,justifySelf:`start`}),X=d(`div`)(({theme:e})=>({display:`flex`,justifyContent:`space-between`,flexFlow:`row wrap`,width:`100%`,gap:e.spacing(4)})),Z=e=>(0,L.jsx)(J,{children:(0,L.jsx)(H,{...e})}),Q=({flag:e,onArchive:t})=>{let[n,r]=(0,j.useState)(48),{environment:i,setEnvironment:a,activeEnvironments:o}=W(e.project,e.name),{data:s,options:c,loading:l,error:u}=G(e.name,i,n);if(u)return(0,L.jsx)(J,{children:(0,L.jsx)(H,{label:`Couldn't fetch metrics for the current flag right now. Please try again. Report this if it doesn't resolve itself.`})});let d=s.datasets[0].data.length===0;return(0,L.jsxs)(J,{children:[(0,L.jsxs)(X,{children:[(0,L.jsx)(Y,{project:e.project,flagName:e.name,onArchive:t}),(0,L.jsxs)(q,{children:[i?(0,L.jsx)(K,{environment:i,setEnvironment:a,activeEnvironments:o}):null,(0,L.jsx)(O,{hoursBack:n,setHoursBack:r})]})]}),l?(0,L.jsx)(U,{}):d?(0,L.jsx)(H,{label:`No metrics for this feature flag in the selected environment and time period`}):(0,L.jsx)(V,{children:(0,L.jsx)(f,{data:s,options:c,"aria-label":`A bar chart with a single feature flag exposure metrics`})})]})},$=e=>[`.`,`..`].includes(e.flag.name)?(0,L.jsx)(J,{children:(0,L.jsx)(H,{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.`})}):(0,L.jsx)(Q,{...e});s.register(C,r,i,o,n,c,a);export{$ as FlagMetricsChart,Z as PlaceholderFlagMetricsChartWithWrapper};
@@ -1 +0,0 @@
1
- import{_ as e,a as t,d as n,g as r,i,o as a,v as o}from"./chart-CG3XAKw_.js";import{Ed as s,Lt as c,Zc as l,df as u,gd as d,lc as f,vu as p}from"./index-DIBimazR.js";import{a as m,i as h,l as g,n as _,s as v,t as y,u as b}from"./networkTrafficUsageHighlightPlugin-C8avnJ5K.js";import{t as x}from"./chartjs-plugin-annotation.esm-bUcqmHD4.js";var S=u(),C=()=>{f(`Network - Frontend Traffic Usage`);let{isOss:e}=l(),{chartDataSelection:t,setChartDataSelection:n,options:r}=_(),{chartData:i}=v(t);return(0,S.jsx)(p,{condition:e(),show:(0,S.jsx)(s,{severity:`warning`,children:`Not enabled.`}),elseShow:(0,S.jsx)(S.Fragment,{children:(0,S.jsxs)(h,{children:[(0,S.jsxs)(m,{children:[(0,S.jsx)(d,{children:(0,S.jsx)(s,{severity:`info`,icon:!1,children:`Frontend traffic is determined by the total SDK requests to the Frontend API`})}),(0,S.jsx)(b,{selectedPeriod:t,setPeriod:n})]}),(0,S.jsx)(c,{data:i,plugins:[y],options:r,"aria-label":g(t)})]})})})};a.register(x,t,n,i,e,o,r);export{C as default};
@@ -1,3 +0,0 @@
1
- import{a as e,i as t,n,o as r,r as i,t as a}from"./react-DW1tWzGJ.js";import{n as o}from"./formatPath-vbOoY_VU.js";import{$a as s,A as c,D as l,Ed as u,Ef as d,I as f,Jd as p,Kc as m,Kd as h,M as g,Of as _,Ou as v,P as y,Pd as b,Qs as x,R as S,Td as C,Ua as w,Uu as T,ad as E,bd as D,cl as O,dd as k,df as A,eo as j,ff as M,gd as N,hd as P,il as F,k as I,ku as L,la as R,pd as z,ps as B,qc as ee,rc as V,yd as te}from"./index-DIBimazR.js";var H=A(),ne=({formData:e,actions:t,metrics:n,loading:r,labelsFilter:i})=>{let{pathname:a}=d(),o=a.includes(`/impact-metrics`)?`impact-metrics-page`:`flag-impact-metrics-accordion`;return(0,H.jsxs)(N,{children:[(0,H.jsxs)(N,{sx:e=>({display:`flex`,flexDirection:`column`,gap:e.spacing(3)}),children:[(0,H.jsx)(l,{value:e.metricName,valueSource:e.source,onChange:t.handleSeriesChange,options:n,loading:r,entryPoint:o}),i,e.metricName?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(c,{value:e.timeRange,onChange:t.setTimeRange,children:[(0,H.jsx)(T,{value:`hour`,children:`Last hour`}),(0,H.jsx)(T,{value:`day`,children:`Last 24 hours`}),(0,H.jsx)(T,{value:`week`,children:`Last 7 days`}),(0,H.jsx)(T,{value:`month`,children:`Last 30 days`})]}),(0,H.jsx)(I,{value:e.aggregationMode,onChange:t.setAggregationMode,metricType:e.metricType})]}):null]}),e.metricName?(0,H.jsx)(E,{sx:e=>({margin:e.spacing(1.5,0)}),control:(0,H.jsx)(z,{checked:e.yAxisMin===`zero`,onChange:e=>t.setYAxisMin(e.target.checked?`zero`:`auto`)}),label:`Begin at zero`}):null]})},U=r(a(),1),re=({open:e,initialConfig:t})=>{let[n,r]=(0,U.useState)(t?.title||``),[i,a]=(0,U.useState)(t?.metricName||``),[o,s]=(0,U.useState)(t?.timeRange||`day`),[c,l]=(0,U.useState)(t?.yAxisMin||`auto`),[u,d]=(0,U.useState)(t?.labelSelectors||{}),[p,m]=(0,U.useState)(t?.aggregationMode||y(f(i))),[h,g]=(0,U.useState)(t?.source),{data:{labels:_}}=S(i?{metricName:i,range:o,aggregationMode:p,source:h,mode:`edit`}:void 0);(0,U.useEffect)(()=>{e&&t?(r(t.title||``),a(t.metricName),s(t.timeRange),l(t.yAxisMin),d(t.labelSelectors),m(t.aggregationMode||y(f(t.metricName))),g(t.source)):e&&!t&&(r(``),a(``),s(`day`),l(`auto`),d({}),m(`count`),g(void 0))},[e,t]);let v=e=>{a(e.metricName),g(e.source),d({});let t=f(e.metricName);t!==`unknown`&&m(y(t))},b=()=>({title:n||void 0,metricName:i,timeRange:o,yAxisMin:c,labelSelectors:u,aggregationMode:p,source:h}),x=i.length>0,C=f(i,_?.metric_type);return(0,U.useEffect)(()=>{i!==t?.metricName&&C!==`unknown`&&m(y(C))},[i,C]),{formData:{title:n,metricName:i,metricType:C,timeRange:o,yAxisMin:c,aggregationMode:p,labelSelectors:u,source:h},actions:{setTitle:r,setMetricName:a,setTimeRange:s,setYAxisMin:l,setAggregationMode:m,setLabelSelectors:d,handleSeriesChange:v,getConfigToSave:b},isValid:x,currentAvailableLabels:_}},ie=()=>{let e=`api/admin/impact-metrics/config`,{data:t,refetch:n,loading:r,error:i}=ee(o(e),()=>m(o(e),`impactMetricsConfig`));return{configs:t?.configs||[],refetch:n,loading:r,error:i}},ae=e=>{let t=e?`api/admin/projects/${e.projectId}/features/${e.featureName}/impact-metrics/config`:`api/admin/impact-metrics/config`,{makeRequest:n,createRequest:r,errors:i,loading:a}=x({propagateErrors:!0});return{createImpactMetric:(0,U.useCallback)(async e=>{let i=r(t,{method:`POST`,body:JSON.stringify(e)},`updateImpactMetric`);return n(i.caller,i.id)},[n,r]),deleteImpactMetric:(0,U.useCallback)(async e=>{let i=r(`${t}/${e}`,{method:`DELETE`},`deleteImpactMetric`);return n(i.caller,i.id)},[n,r,t]),errors:i,loading:a}},oe=()=>{let{configs:e,loading:t,error:n,refetch:r}=ie(),{layout:i,charts:a}=(0,U.useMemo)(()=>({layout:e.map((e,t)=>{let n=t%2,r=Math.floor(t/2);return{i:e.id,x:n*6,y:r*2,w:6,h:2,minW:4,minH:2,maxW:12,maxH:8}}),charts:e}),[e]),{createImpactMetric:o,deleteImpactMetric:s,loading:c,errors:l}=ae(),u=(0,U.useCallback)(async e=>{await o(e),r()},[o,r]),d=(0,U.useCallback)(async(e,t)=>{await o({...t,id:e}),r()},[e,o,r]),f=(0,U.useCallback)(async e=>{await s(e),r()},[e,s,r]);return{charts:a,layout:i,loading:t||c,error:n||Object.keys(l).length>0?l:void 0,addChart:u,updateChart:d,deleteChart:f}},se=({labelKey:e,options:t,value:n,onChange:r})=>{let i=n.includes(`*`),a=`autocomplete-${e}`,o=t.length>=1e3;return(0,H.jsx)(te,{multiple:!0,disableCloseOnSelect:!0,id:a,options:[`*`,...t],value:i?t:n,getOptionLabel:e=>e===`*`?`(Select all)`:e,onChange:(e,t,n,a)=>{if(a?.option===`*`){r(i?[]:[`*`]);return}r(t.filter(e=>e!==`*`))},renderOption:(e,t,{selected:n})=>{let{key:r,...a}=e;return(0,H.jsxs)(`li`,{...a,children:[(0,H.jsx)(z,{size:`small`,checked:t===`*`?i:n,style:{marginRight:8}}),t===`*`?(0,H.jsx)(C,{component:`span`,sx:{color:`text.secondary`},children:`Select all`}):t]},r||t)},renderValue:(e,t)=>{let n=e.slice(-5),r=e.length-5;return(0,H.jsxs)(H.Fragment,{children:[n.map((e,n)=>{let{key:r,...i}=t({index:n});return(0,U.createElement)(D,{...i,key:r,label:e,size:`small`})}),r>0?(0,H.jsxs)(C,{component:`span`,sx:{color:`text.secondary`},children:[` `,`(+`,r,`)`]}):null]})},renderInput:t=>(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(L,{...t,label:e,placeholder:i?void 0:`Select values…`,variant:`outlined`,size:`small`}),o&&(0,H.jsx)(u,{severity:`warning`,sx:e=>({padding:e.spacing(1,2),marginTop:e.spacing(1)}),children:`Maximum of 1000 values loaded due to performance.`})]})})},ce=h(N)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(1),width:`100%`})),le=h(N)(({theme:e})=>({width:`100%`,display:`flex`,alignItems:`center`,gap:e.spacing(1)})),ue=h(N)(({theme:e})=>({display:`grid`,gridTemplateColumns:`repeat(auto-fill, minmax(250px, 1fr))`,gap:e.spacing(2),flexGrow:1})),de=h(N)({display:`flex`,flexDirection:`column`,flexGrow:1}),fe=h(C)({lineHeight:1.5,height:`24px`}),pe=h(D)(({theme:e})=>({position:`relative`,height:`20px`,margin:e.spacing(-1,0)})),me=({title:e,labels:t,labelSelectors:n,onLabelChange:r,onAllToggle:i,onChange:a})=>{let o=t.map(([e])=>e),s=o.some(e=>n[e]);return(0,H.jsxs)(ce,{children:[(0,H.jsxs)(le,{children:[(0,H.jsx)(fe,{variant:`subtitle2`,children:e}),s&&(0,H.jsx)(pe,{label:`Clear all`,size:`small`,variant:`outlined`,onClick:()=>{let e={};Object.entries(n).forEach(([t,n])=>{o.includes(t)||(e[t]=n)}),a(e)}})]}),(0,H.jsx)(ue,{children:t.map(([e,t])=>(0,H.jsx)(de,{children:(0,H.jsx)(se,{labelKey:e,options:t,value:n[e]||[],onChange:t=>r(e,t),handleAllToggle:i})},e))})]})},he=[`environment`,`appName`,`origin`],ge=({labelSelectors:e,onChange:t,availableLabels:n})=>{let r=(n,r)=>{let i={...e};r.length===0?delete i[n]:i[n]=r,t(i)},i=(n,r)=>{let i={...e};r?i[n]=[`*`]:delete i[n],t(i)};if(!n||Object.keys(n).length===0)return null;let a=Object.entries(n).filter(([e])=>he.includes(e)).sort(),o=Object.entries(n).filter(([e])=>!he.includes(e)&&e!==`type`&&e!==`metric_type`).sort();return(0,H.jsxs)(N,{sx:{display:`flex`,gap:2,flexWrap:`wrap`},children:[a.length>0&&(0,H.jsx)(me,{title:`Filter by labels`,labels:a,labelSelectors:e,onLabelChange:r,onAllToggle:i,onChange:t}),o.length>0&&(0,H.jsx)(me,{title:`Other filters`,labels:o,labelSelectors:e,onLabelChange:r,onAllToggle:i,onChange:t})]})},_e=h(k)(({theme:e})=>({"& .MuiDialog-paper":{borderRadius:e.shape.borderRadiusLarge,maxWidth:e.spacing(170),width:`100%`,backgroundColor:`transparent`},padding:0,"& .MuiPaper-root > section":{overflowX:`hidden`}})),ve=h(`form`)({display:`flex`,flexDirection:`column`,height:`100%`}),ye=h(`h1`)(({theme:e})=>({fontWeight:`normal`,fontSize:e.typography.h1.fontSize,margin:0})),be=h(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(3),padding:e.spacing(6),flexGrow:1,minHeight:600})),xe=h(`div`)(({theme:e})=>({display:`flex`,gap:e.spacing(3),justifyContent:`flex-end`,padding:e.spacing(4,6),borderTop:`1px solid ${e.palette.divider}`})),Se=h(C)(({theme:e})=>({fontWeight:e.typography.fontWeightBold,color:e.palette.common.white,marginBottom:e.spacing(1)})),Ce=h(`a`)(({theme:e})=>({color:e.palette.common.white,display:`flex`,alignItems:`center`,gap:e.spacing(1),marginTop:e.spacing(1.5),textDecoration:`underline`,"&:hover":{textDecoration:`none`}})),we=h(C)(({theme:e})=>({fontWeight:e.typography.fontWeightBold,color:e.palette.common.white,marginBottom:e.spacing(1.5)})),Te=h(N)(({theme:e})=>({borderRadius:e.shape.borderRadiusLarge,overflow:`hidden`,backgroundColor:e.palette.background.paper,padding:e.spacing(2)})),Ee=({open:e,onClose:t,onSave:n,initialConfig:r,metrics:i,loading:a=!1})=>{let{formData:o,actions:s,isValid:c,currentAvailableLabels:l}=re({open:e,initialConfig:r}),u=v(p().breakpoints.down(`lg`)),{trackEvent:d}=V(),f=()=>{c&&(n(s.getConfigToSave()),d(`impact-metrics`,{props:{eventType:`chart added`}}),t())};return(0,H.jsx)(_e,{open:e,onClose:t,children:(0,H.jsx)(R,{compact:!0,disablePadding:!0,description:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Se,{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.`,(0,H.jsxs)(Ce,{href:`https://docs.getunleash.io/concepts/impact-metrics`,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{d(`impact-metrics`,{props:{eventType:`sidebar docs clicked`}})},children:[(0,H.jsx)(O,{fontSize:`small`}),`Learn how to use impact metrics`]}),(0,H.jsxs)(N,{sx:{mt:3},children:[(0,H.jsx)(we,{children:`Preview chart`}),(0,H.jsx)(Te,{children:(0,H.jsx)(g,{metricName:o.metricName,timeRange:o.timeRange,labelSelectors:o.labelSelectors,yAxisMin:o.yAxisMin,aggregationMode:o.aggregationMode,source:o.source,isPreview:!0},u?`small`:`large`)})]})]}),showLink:!1,sidebarWidth:`55%`,children:(0,H.jsxs)(ve,{onSubmit:e=>{e.preventDefault(),f()},children:[(0,H.jsxs)(be,{children:[(0,H.jsx)(ye,{children:r?`Edit impact metric`:`Add impact metric`}),(0,H.jsx)(L,{label:`Chart Title (optional)`,value:o.title,onChange:e=>s.setTitle(e.target.value),fullWidth:!0,variant:`outlined`,size:`small`}),(0,H.jsx)(ne,{formData:o,actions:s,metrics:i,loading:a,labelsFilter:l?(0,H.jsx)(ge,{labelSelectors:o.labelSelectors,onChange:s.setLabelSelectors,availableLabels:l}):null})]}),(0,H.jsxs)(xe,{children:[(0,H.jsx)(P,{onClick:t,children:`Cancel`}),(0,H.jsx)(P,{variant:`contained`,type:`submit`,disabled:!c,children:r?`Update`:`Add impact metric`})]})]})})})},De=e=>{let t=[];e.displayName&&t.push(`${e.displayName}`),t.push(`last ${e.timeRange}`),t.push(e.aggregationMode);let n=Object.keys(e.labelSelectors).length;return n>0&&t.push(`${n} filter${n>1?`s`:``}`),t.join(` • `)},Oe=h(b)(({theme:e})=>({borderRadius:`${e.shape.borderRadiusMedium}px`,boxShadow:`none`,display:`flex`,flexDirection:`column`,height:`100%`})),ke=h(N)({flex:1,display:`flex`,flexDirection:`column`,minHeight:0}),Ae=h(N)(({theme:e})=>({position:`relative`,minWidth:0,flexGrow:1,height:`100%`,display:`flex`,flexDirection:`column`,margin:`auto 0`,padding:e.spacing(3)})),je=h(N)(({theme:e})=>({display:`flex`,gap:e.spacing(1),alignItems:`center`,padding:e.spacing(1.5,2),borderBottom:`1px solid ${e.palette.divider}`})),Me=h(N)(({theme:e})=>({display:`flex`,flexDirection:`column`,justifyContent:`flex-end`,flexGrow:1,overflow:`hidden`,textOverflow:`ellipsis`})),Ne=h(N)(({theme:e})=>({marginLeft:`auto`,display:`flex`,alignItems:`center`,gap:e.spacing(.5)})),Pe=h(F)(({theme:e})=>({alignSelf:`start`,color:e.palette.primary.main,marginTop:e.spacing(.25)})),Fe=({config:e,onEdit:t,onDelete:n,permission:r=B,projectId:i,dragHandle:a,icon:o})=>(0,H.jsxs)(Oe,{children:[(0,H.jsxs)(je,{children:[a,e.mode===`read`?(0,H.jsx)(Pe,{}):null,(0,H.jsxs)(Me,{children:[e.title&&(0,H.jsx)(C,{variant:`h3`,children:e.title}),(0,H.jsx)(C,{variant:`body2`,sx:{color:`text.secondary`},children:De(e)})]}),o,e.mode!==`read`&&(0,H.jsxs)(Ne,{children:[(0,H.jsx)(j,{onClick:()=>t(e),permission:r,projectId:i,tooltipProps:{title:`Edit chart`},children:(0,H.jsx)(s,{})}),(0,H.jsx)(j,{onClick:()=>n(e.id),permission:r,projectId:i,tooltipProps:{title:`Remove chart`},children:(0,H.jsx)(w,{})})]})]}),(0,H.jsx)(ke,{children:(0,H.jsx)(Ae,{children:(0,H.jsx)(g,{metricName:e.metricName,timeRange:e.timeRange,labelSelectors:e.labelSelectors,yAxisMin:e.yAxisMin,aggregationMode:e.aggregationMode,source:e.source,aspectRatio:1.5,overrideOptions:{maintainAspectRatio:!1},emptyDataDescription:`Send impact metrics using Unleash SDK for this series to view the chart.`})})})]}),W=n(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?r(e):typeof define==`function`&&define.amd?define([`exports`],r):(n=typeof globalThis<`u`?globalThis:n||self,r(n[`fast-equals`]={}))})(e,(function(e){function t(e){return function(t,n,r,i,a,o,s){return e(t,n,s)}}function n(e){return function(t,n,r,i){if(!t||!n||typeof t!=`object`||typeof n!=`object`)return e(t,n,r,i);var a=i.get(t),o=i.get(n);if(a&&o)return a===n&&o===t;i.set(t,n),i.set(n,t);var s=e(t,n,r,i);return i.delete(t),i.delete(n),s}}function r(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n}function i(e){return e.constructor===Object||e.constructor==null}function a(e){return typeof e.then==`function`}function o(e,t){return e===t||e!==e&&t!==t}var s=`[object Arguments]`,c=`[object Boolean]`,l=`[object Date]`,u=`[object RegExp]`,d=`[object Map]`,f=`[object Number]`,p=`[object Object]`,m=`[object Set]`,h=`[object String]`,g=Object.prototype.toString;function _(e){var t=e.areArraysEqual,n=e.areDatesEqual,r=e.areMapsEqual,_=e.areObjectsEqual,v=e.areRegExpsEqual,y=e.areSetsEqual,b=e.createIsNestedEqual,x=b(S);function S(e,b,S){if(e===b)return!0;if(!e||!b||typeof e!=`object`||typeof b!=`object`)return e!==e&&b!==b;if(i(e)&&i(b))return _(e,b,x,S);var C=Array.isArray(e),w=Array.isArray(b);if(C||w)return C===w&&t(e,b,x,S);var T=g.call(e);return T===g.call(b)?T===l?n(e,b,x,S):T===u?v(e,b,x,S):T===d?r(e,b,x,S):T===m?y(e,b,x,S):T===p||T===s?a(e)||a(b)?!1:_(e,b,x,S):T===c||T===f||T===h?o(e.valueOf(),b.valueOf()):!1:!1}return S}function v(e,t,n,r){var i=e.length;if(t.length!==i)return!1;for(;i-- >0;)if(!n(e[i],t[i],i,i,e,t,r))return!1;return!0}var y=n(v);function b(e,t){return o(e.valueOf(),t.valueOf())}function x(e,t,n,r){var i=e.size===t.size;if(!i)return!1;if(!e.size)return!0;var a={},o=0;return e.forEach(function(s,c){if(i){var l=!1,u=0;t.forEach(function(i,d){!l&&!a[u]&&(l=n(c,d,o,u,e,t,r)&&n(s,i,c,d,e,t,r))&&(a[u]=!0),u++}),o++,i=l}}),i}var S=n(x),C=`_owner`,w=Object.prototype.hasOwnProperty;function T(e,t,n,r){var i=Object.keys(e),a=i.length;if(Object.keys(t).length!==a)return!1;for(var o;a-- >0;){if(o=i[a],o===C){var s=!!e.$$typeof,c=!!t.$$typeof;if((s||c)&&s!==c)return!1}if(!w.call(t,o)||!n(e[o],t[o],o,o,e,t,r))return!1}return!0}var E=n(T);function D(e,t){return e.source===t.source&&e.flags===t.flags}function O(e,t,n,r){var i=e.size===t.size;if(!i)return!1;if(!e.size)return!0;var a={};return e.forEach(function(o,s){if(i){var c=!1,l=0;t.forEach(function(i,u){!c&&!a[l]&&(c=n(o,i,s,u,e,t,r))&&(a[l]=!0),l++}),i=c}}),i}var k=n(O),A=Object.freeze({areArraysEqual:v,areDatesEqual:b,areMapsEqual:x,areObjectsEqual:T,areRegExpsEqual:D,areSetsEqual:O,createIsNestedEqual:t}),j=Object.freeze({areArraysEqual:y,areDatesEqual:b,areMapsEqual:S,areObjectsEqual:E,areRegExpsEqual:D,areSetsEqual:k,createIsNestedEqual:t}),M=_(A);function N(e,t){return M(e,t,void 0)}var P=_(r(A,{createIsNestedEqual:function(){return o}}));function F(e,t){return P(e,t,void 0)}var I=_(j);function L(e,t){return I(e,t,new WeakMap)}var R=_(r(j,{createIsNestedEqual:function(){return o}}));function z(e,t){return R(e,t,new WeakMap)}function B(e){return _(r(A,e(A)))}function ee(e){var t=_(r(j,e(j)));return(function(e,n,r){return r===void 0&&(r=new WeakMap),t(e,n,r)})}e.circularDeepEqual=L,e.circularShallowEqual=z,e.createCustomCircularEqual=ee,e.createCustomEqual=B,e.deepEqual=N,e.sameValueZeroEqual=o,e.shallowEqual=F,Object.defineProperty(e,`__esModule`,{value:!0})}))})),G=n(((e,t)=>{function n(e){var t,r,i=``;if(typeof e==`string`||typeof e==`number`)i+=e;else if(typeof e==`object`)if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(r=n(e[t]))&&(i&&(i+=` `),i+=r)}else for(r in e)e[r]&&(i&&(i+=` `),i+=r);return i}function r(){for(var e,t,r=0,i=``,a=arguments.length;r<a;r++)(e=arguments[r])&&(t=n(e))&&(i&&(i+=` `),i+=t);return i}t.exports=r,t.exports.clsx=r})),Ie=n(((e,t)=>{t.exports=function(e,t,n){return e===t?!0:e.className===t.className&&n(e.style,t.style)&&e.width===t.width&&e.autoSize===t.autoSize&&e.cols===t.cols&&e.draggableCancel===t.draggableCancel&&e.draggableHandle===t.draggableHandle&&n(e.verticalCompact,t.verticalCompact)&&n(e.compactType,t.compactType)&&n(e.layout,t.layout)&&n(e.margin,t.margin)&&n(e.containerPadding,t.containerPadding)&&e.rowHeight===t.rowHeight&&e.maxRows===t.maxRows&&e.isBounded===t.isBounded&&e.isDraggable===t.isDraggable&&e.isResizable===t.isResizable&&e.allowOverlap===t.allowOverlap&&e.preventCollision===t.preventCollision&&e.useCSSTransforms===t.useCSSTransforms&&e.transformScale===t.transformScale&&e.isDroppable===t.isDroppable&&n(e.resizeHandles,t.resizeHandles)&&n(e.resizeHandle,t.resizeHandle)&&e.onLayoutChange===t.onLayoutChange&&e.onDragStart===t.onDragStart&&e.onDrag===t.onDrag&&e.onDragStop===t.onDragStop&&e.onResizeStart===t.onResizeStart&&e.onResize===t.onResize&&e.onResizeStop===t.onResizeStop&&e.onDrop===t.onDrop&&n(e.droppingItem,t.droppingItem)&&n(e.innerRef,t.innerRef)}})),K=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.bottom=u,e.childrenEqual=h,e.cloneLayout=d,e.cloneLayoutItem=m,e.collides=_,e.compact=v,e.compactItem=x,e.compactType=re,e.correctBounds=S,e.fastPositionEqual=g,e.fastRGLPropsEqual=void 0,e.getAllCollisions=T,e.getFirstCollision=w,e.getLayoutItem=C,e.getStatics=E,e.modifyLayout=f,e.moveElement=D,e.moveElementAwayFromCollision=O,e.noop=void 0,e.perc=k,e.resizeItemInDirection=z,e.setTopLeft=ee,e.setTransform=B,e.sortLayoutItems=V,e.sortLayoutItemsByColRow=H,e.sortLayoutItemsByRowCol=te,e.synchronizeLayoutWithChildren=ne,e.validateLayout=U,e.withLayoutItem=p;var t=W(),n=r(a());function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?i(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function s(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e){var t=l(e,`string`);return typeof t==`symbol`?t:t+``}function l(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function u(e){let t=0,n;for(let r=0,i=e.length;r<i;r++)n=e[r].y+e[r].h,n>t&&(t=n);return t}function d(e){let t=Array(e.length);for(let n=0,r=e.length;n<r;n++)t[n]=m(e[n]);return t}function f(e,t){let n=Array(e.length);for(let r=0,i=e.length;r<i;r++)t.i===e[r].i?n[r]=t:n[r]=e[r];return n}function p(e,t,n){let r=C(e,t);return r?(r=n(m(r)),e=f(e,r),[e,r]):[e,null]}function m(e){return{w:e.w,h:e.h,x:e.x,y:e.y,i:e.i,minW:e.minW,maxW:e.maxW,minH:e.minH,maxH:e.maxH,moved:!!e.moved,static:!!e.static,isDraggable:e.isDraggable,isResizable:e.isResizable,resizeHandles:e.resizeHandles,isBounded:e.isBounded}}function h(e,r){return(0,t.deepEqual)(n.default.Children.map(e,e=>e?.key),n.default.Children.map(r,e=>e?.key))&&(0,t.deepEqual)(n.default.Children.map(e,e=>e?.props[`data-grid`]),n.default.Children.map(r,e=>e?.props[`data-grid`]))}e.fastRGLPropsEqual=Ie();function g(e,t){return e.left===t.left&&e.top===t.top&&e.width===t.width&&e.height===t.height}function _(e,t){return!(e.i===t.i||e.x+e.w<=t.x||e.x>=t.x+t.w||e.y+e.h<=t.y||e.y>=t.y+t.h)}function v(e,t,n,r){let i=E(e),a=u(i),o=V(e,t),s=Array(e.length);for(let c=0,l=o.length;c<l;c++){let l=m(o[c]);l.static||(l=x(i,l,t,n,o,r,a),a=Math.max(a,l.y+l.h),i.push(l)),s[e.indexOf(o[c])]=l,l.moved=!1}return s}var y={x:`w`,y:`h`};function b(e,t,n,r){let i=y[r];t[r]+=1;let a=e.map(e=>e.i).indexOf(t.i);for(let o=a+1;o<e.length;o++){let a=e[o];if(!a.static){if(a.y>t.y+t.h)break;_(t,a)&&b(e,a,n+t[i],r)}}t[r]=n}function x(e,t,n,r,i,a,o){let s=n===`vertical`,c=n===`horizontal`;if(s)for(typeof o==`number`?t.y=Math.min(o,t.y):t.y=Math.min(u(e),t.y);t.y>0&&!w(e,t);)t.y--;else if(c)for(;t.x>0&&!w(e,t);)t.x--;let l;for(;(l=w(e,t))&&!(n===null&&a);)if(c?b(i,t,l.x+l.w,`x`):b(i,t,l.y+l.h,`y`),c&&t.x+t.w>r)for(t.x=r-t.w,t.y++;t.x>0&&!w(e,t);)t.x--;return t.y=Math.max(t.y,0),t.x=Math.max(t.x,0),t}function S(e,t){let n=E(e);for(let r=0,i=e.length;r<i;r++){let i=e[r];if(i.x+i.w>t.cols&&(i.x=t.cols-i.w),i.x<0&&(i.x=0,i.w=t.cols),!i.static)n.push(i);else for(;w(n,i);)i.y++}return e}function C(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n].i===t)return e[n]}function w(e,t){for(let n=0,r=e.length;n<r;n++)if(_(e[n],t))return e[n]}function T(e,t){return e.filter(e=>_(e,t))}function E(e){return e.filter(e=>e.static)}function D(e,t,n,r,i,a,o,s,c){if(t.static&&t.isDraggable!==!0||t.y===r&&t.x===n)return e;`${t.i}${String(n)}${String(r)}${t.x}${t.y}`;let l=t.x,u=t.y;typeof n==`number`&&(t.x=n),typeof r==`number`&&(t.y=r),t.moved=!0;let f=V(e,o);(o===`vertical`&&typeof r==`number`?u>=r:o===`horizontal`&&typeof n==`number`&&l>=n)&&(f=f.reverse());let p=T(f,t),m=p.length>0;if(m&&c)return d(e);if(m&&a)return`${t.i}`,t.x=l,t.y=u,t.moved=!1,e;for(let n=0,r=p.length;n<r;n++){let r=p[n];`${t.i}${t.x}${t.y}${r.i}${r.x}${r.y}`,!r.moved&&(e=r.static?O(e,r,t,i,o,s):O(e,t,r,i,o,s))}return e}function O(e,t,n,r,i,a){let o=i===`horizontal`,s=i===`vertical`,c=t.static;if(r){r=!1;let l={x:o?Math.max(t.x-n.w,0):n.x,y:s?Math.max(t.y-n.h,0):n.y,w:n.w,h:n.h,i:`-1`},u=w(e,l),d=u&&u.y+u.h>t.y,f=u&&t.x+t.w>u.x;if(!u)return`${n.i}${l.x}${l.y}`,D(e,n,o?l.x:void 0,s?l.y:void 0,r,c,i,a);if(d&&s)return D(e,n,void 0,n.y+1,r,c,i,a);if(d&&i==null)return t.y=n.y,n.y+=n.h,e;if(f&&o)return D(e,t,n.x,void 0,r,c,i,a)}let l=o?n.x+1:void 0,u=s?n.y+1:void 0;return l==null&&u==null?e:D(e,n,o?n.x+1:void 0,s?n.y+1:void 0,r,c,i,a)}function k(e){return e*100+`%`}var A=(e,t,n,r)=>e+n>r?t:n,j=(e,t,n)=>e<0?t:n,M=e=>Math.max(0,e),N=e=>Math.max(0,e),P=(e,t,n)=>{let{left:r,height:i,width:a}=t,o=e.top-(i-e.height);return{left:r,width:a,height:j(o,e.height,i),top:N(o)}},F=(e,t,n)=>{let{top:r,left:i,height:a,width:o}=t;return{top:r,height:a,width:A(e.left,e.width,o,n),left:M(i)}},I=(e,t,n)=>{let{top:r,height:i,width:a}=t,o=e.left-(a-e.width);return{height:i,width:o<0?e.width:A(e.left,e.width,a,n),top:N(r),left:M(o)}},L=(e,t,n)=>{let{top:r,left:i,height:a,width:o}=t;return{width:o,left:i,height:j(r,e.height,a),top:N(r)}},R={n:P,ne:function(){return P(arguments.length<=0?void 0:arguments[0],F(...arguments),arguments.length<=2?void 0:arguments[2])},e:F,se:function(){return L(arguments.length<=0?void 0:arguments[0],F(...arguments),arguments.length<=2?void 0:arguments[2])},s:L,sw:function(){return L(arguments.length<=0?void 0:arguments[0],I(...arguments),arguments.length<=2?void 0:arguments[2])},w:I,nw:function(){return P(arguments.length<=0?void 0:arguments[0],I(...arguments),arguments.length<=2?void 0:arguments[2])}};function z(e,t,n,r){let i=R[e];return i?i(t,o(o({},t),n),r):n}function B(e){let{top:t,left:n,width:r,height:i}=e,a=`translate(${n}px,${t}px)`;return{transform:a,WebkitTransform:a,MozTransform:a,msTransform:a,OTransform:a,width:`${r}px`,height:`${i}px`,position:`absolute`}}function ee(e){let{top:t,left:n,width:r,height:i}=e;return{top:`${t}px`,left:`${n}px`,width:`${r}px`,height:`${i}px`,position:`absolute`}}function V(e,t){return t===`horizontal`?H(e):t===`vertical`?te(e):e}function te(e){return e.slice(0).sort(function(e,t){return e.y>t.y||e.y===t.y&&e.x>t.x?1:e.y===t.y&&e.x===t.x?0:-1})}function H(e){return e.slice(0).sort(function(e,t){return e.x>t.x||e.x===t.x&&e.y>t.y?1:-1})}function ne(e,t,r,i,a){e||=[];let s=[];n.default.Children.forEach(t,t=>{if(t?.key==null)return;let n=C(e,String(t.key)),r=t.props[`data-grid`];n&&r==null?s.push(m(n)):r?s.push(m(o(o({},r),{},{i:t.key}))):s.push(m({w:1,h:1,x:0,y:u(s),i:String(t.key)}))});let c=S(s,{cols:r});return a?c:v(c,i,r)}function U(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Layout`,n=[`x`,`y`,`w`,`h`];if(!Array.isArray(e))throw Error(t+` must be an array!`);for(let r=0,i=e.length;r<i;r++){let i=e[r];for(let e=0;e<n.length;e++){let a=n[e],o=i[a];if(typeof o!=`number`||Number.isNaN(o))throw Error(`ReactGridLayout: ${t}[${r}].${a} must be a number! Received: ${o} (${typeof o})`)}if(i.i!==void 0&&typeof i.i!=`string`)throw Error(`ReactGridLayout: ${t}[${r}].i must be a string! Received: ${i.i} (${typeof i.i})`)}}function re(e){let{verticalCompact:t,compactType:n}=e||{};return t===!1?null:n}e.noop=()=>{}})),q=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.calcGridColWidth=t,e.calcGridItemPosition=r,e.calcGridItemWHPx=n,e.calcWH=a,e.calcXY=i,e.clamp=o;function t(e){let{margin:t,containerPadding:n,containerWidth:r,cols:i}=e;return(r-t[0]*(i-1)-n[0]*2)/i}function n(e,t,n){return Number.isFinite(e)?Math.round(t*e+Math.max(0,e-1)*n):e}function r(e,r,i,a,o,s){let{margin:c,containerPadding:l,rowHeight:u}=e,d=t(e),f={};return s&&s.resizing?(f.width=Math.round(s.resizing.width),f.height=Math.round(s.resizing.height)):(f.width=n(a,d,c[0]),f.height=n(o,u,c[1])),s&&s.dragging?(f.top=Math.round(s.dragging.top),f.left=Math.round(s.dragging.left)):s&&s.resizing&&typeof s.resizing.top==`number`&&typeof s.resizing.left==`number`?(f.top=Math.round(s.resizing.top),f.left=Math.round(s.resizing.left)):(f.top=Math.round((u+c[1])*i+l[1]),f.left=Math.round((d+c[0])*r+l[0])),f}function i(e,n,r,i,a){let{margin:s,containerPadding:c,cols:l,rowHeight:u,maxRows:d}=e,f=t(e),p=Math.round((r-c[0])/(f+s[0])),m=Math.round((n-c[1])/(u+s[1]));return p=o(p,0,l-i),m=o(m,0,d-a),{x:p,y:m}}function a(e,n,r,i,a,s){let{margin:c,maxRows:l,cols:u,rowHeight:d}=e,f=t(e),p=Math.round((n+c[0])/(f+c[0])),m=Math.round((r+c[1])/(d+c[1])),h=o(p,0,u-i),g=o(m,0,l-a);return[`sw`,`w`,`nw`].indexOf(s)!==-1&&(h=o(p,0,u)),[`nw`,`n`,`ne`].indexOf(s)!==-1&&(g=o(m,0,l)),{w:h,h:g}}function o(e,t,n){return Math.max(Math.min(e,n),t)}})),J=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.dontSetMe=a,e.findInArray=t,e.int=i,e.isFunction=n,e.isNum=r;function t(e,t){for(let n=0,r=e.length;n<r;n++)if(t.apply(t,[e[n],n,e]))return e[n]}function n(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Function]`}function r(e){return typeof e==`number`&&!isNaN(e)}function i(e){return parseInt(e,10)}function a(e,t,n){if(e[t])return Error(`Invalid prop ${t} passed to ${n} - do not set this, set it on the child.`)}})),Le=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.browserPrefixToKey=r,e.browserPrefixToStyle=i,e.default=void 0,e.getPrefix=n;var t=[`Moz`,`Webkit`,`O`,`ms`];function n(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`transform`;if(typeof window>`u`)return``;let n=window.document?.documentElement?.style;if(!n||e in n)return``;for(let i=0;i<t.length;i++)if(r(e,t[i])in n)return t[i];return``}function r(e,t){return t?`${t}${a(e)}`:e}function i(e,t){return t?`-${t.toLowerCase()}-${e}`:e}function a(e){let t=``,n=!0;for(let r=0;r<e.length;r++)n?(t+=e[r].toUpperCase(),n=!1):e[r]===`-`?n=!0:t+=e[r];return t}e.default=n()})),Re=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.addClassName=S,e.addEvent=s,e.addUserSelectStyles=y,e.createCSSTransform=m,e.createSVGTransform=h,e.getTouch=_,e.getTouchIdentifier=v,e.getTranslation=g,e.innerHeight=d,e.innerWidth=f,e.matchesSelector=a,e.matchesSelectorAndParentsTo=o,e.offsetXYFromParent=p,e.outerHeight=l,e.outerWidth=u,e.removeClassName=C,e.removeEvent=c,e.scheduleRemoveUserSelectStyles=b;var t=J(),n=r(Le());function r(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,i=new WeakMap;return(r=function(e,t){if(!t&&e&&e.__esModule)return e;var r,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(r=t?i:n){if(r.has(e))return r.get(e);r.set(e,o)}for(let t in e)t!==`default`&&{}.hasOwnProperty.call(e,t)&&((a=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?r(o,t,a):o[t]=e[t]);return o})(e,t)}var i=``;function a(e,n){return i||=(0,t.findInArray)([`matches`,`webkitMatchesSelector`,`mozMatchesSelector`,`msMatchesSelector`,`oMatchesSelector`],function(n){return(0,t.isFunction)(e[n])}),(0,t.isFunction)(e[i])?e[i](n):!1}function o(e,t,n){let r=e;do{if(a(r,t))return!0;if(r===n)return!1;r=r.parentNode}while(r);return!1}function s(e,t,n,r){if(!e)return;let i={capture:!0,...r};e.addEventListener?e.addEventListener(t,n,i):e.attachEvent?e.attachEvent(`on`+t,n):e[`on`+t]=n}function c(e,t,n,r){if(!e)return;let i={capture:!0,...r};e.removeEventListener?e.removeEventListener(t,n,i):e.detachEvent?e.detachEvent(`on`+t,n):e[`on`+t]=null}function l(e){let n=e.clientHeight,r=e.ownerDocument.defaultView.getComputedStyle(e);return n+=(0,t.int)(r.borderTopWidth),n+=(0,t.int)(r.borderBottomWidth),n}function u(e){let n=e.clientWidth,r=e.ownerDocument.defaultView.getComputedStyle(e);return n+=(0,t.int)(r.borderLeftWidth),n+=(0,t.int)(r.borderRightWidth),n}function d(e){let n=e.clientHeight,r=e.ownerDocument.defaultView.getComputedStyle(e);return n-=(0,t.int)(r.paddingTop),n-=(0,t.int)(r.paddingBottom),n}function f(e){let n=e.clientWidth,r=e.ownerDocument.defaultView.getComputedStyle(e);return n-=(0,t.int)(r.paddingLeft),n-=(0,t.int)(r.paddingRight),n}function p(e,t,n){let r=t===t.ownerDocument.body?{left:0,top:0}:t.getBoundingClientRect();return{x:(e.clientX+t.scrollLeft-r.left)/n,y:(e.clientY+t.scrollTop-r.top)/n}}function m(e,t){let r=g(e,t,`px`);return{[(0,n.browserPrefixToKey)(`transform`,n.default)]:r}}function h(e,t){return g(e,t,``)}function g(e,t,n){let{x:r,y:i}=e,a=`translate(${r}${n},${i}${n})`;return t&&(a=`translate(${`${typeof t.x==`string`?t.x:t.x+n}`}, ${`${typeof t.y==`string`?t.y:t.y+n}`})`+a),a}function _(e,n){return e.targetTouches&&(0,t.findInArray)(e.targetTouches,e=>n===e.identifier)||e.changedTouches&&(0,t.findInArray)(e.changedTouches,e=>n===e.identifier)}function v(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier}function y(e){if(!e)return;let t=e.getElementById(`react-draggable-style-el`);t||(t=e.createElement(`style`),t.type=`text/css`,t.id=`react-draggable-style-el`,t.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;}
2
- `,t.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;}
3
- `,e.getElementsByTagName(`head`)[0].appendChild(t)),e.body&&S(e.body,`react-draggable-transparent-selection`)}function b(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{x(e)}):x(e)}function x(e){if(e)try{if(e.body&&C(e.body,`react-draggable-transparent-selection`),e.selection)e.selection.empty();else{let t=(e.defaultView||window).getSelection();t&&t.type!==`Caret`&&t.removeAllRanges()}}catch{}}function S(e,t){e.classList?e.classList.add(t):e.className.match(RegExp(`(?:^|\\s)${t}(?!\\S)`))||(e.className+=` ${t}`)}function C(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(RegExp(`(?:^|\\s)${t}(?!\\S)`,`g`),``)}})),ze=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.canDragX=a,e.canDragY=o,e.createCoreData=c,e.createDraggableData=l,e.getBoundPosition=r,e.getControlPosition=s,e.snapToGrid=i;var t=J(),n=Re();function r(e,r,i){if(!e.props.bounds)return[r,i];let{bounds:a}=e.props;a=typeof a==`string`?a:u(a);let o=d(e);if(typeof a==`string`){let{ownerDocument:e}=o,r=e.defaultView,i;if(i=a===`parent`?o.parentNode:o.getRootNode().querySelector(a),!(i instanceof r.HTMLElement))throw Error(`Bounds selector "`+a+`" could not find an element.`);let s=i,c=r.getComputedStyle(o),l=r.getComputedStyle(s);a={left:-o.offsetLeft+(0,t.int)(l.paddingLeft)+(0,t.int)(c.marginLeft),top:-o.offsetTop+(0,t.int)(l.paddingTop)+(0,t.int)(c.marginTop),right:(0,n.innerWidth)(s)-(0,n.outerWidth)(o)-o.offsetLeft+(0,t.int)(l.paddingRight)-(0,t.int)(c.marginRight),bottom:(0,n.innerHeight)(s)-(0,n.outerHeight)(o)-o.offsetTop+(0,t.int)(l.paddingBottom)-(0,t.int)(c.marginBottom)}}return(0,t.isNum)(a.right)&&(r=Math.min(r,a.right)),(0,t.isNum)(a.bottom)&&(i=Math.min(i,a.bottom)),(0,t.isNum)(a.left)&&(r=Math.max(r,a.left)),(0,t.isNum)(a.top)&&(i=Math.max(i,a.top)),[r,i]}function i(e,t,n){return[Math.round(t/e[0])*e[0],Math.round(n/e[1])*e[1]]}function a(e){return e.props.axis===`both`||e.props.axis===`x`}function o(e){return e.props.axis===`both`||e.props.axis===`y`}function s(e,t,r){let i=typeof t==`number`?(0,n.getTouch)(e,t):null;if(typeof t==`number`&&!i)return null;let a=d(r),o=r.props.offsetParent||a.offsetParent||a.ownerDocument.body;return(0,n.offsetXYFromParent)(i||e,o,r.props.scale)}function c(e,n,r){let i=!(0,t.isNum)(e.lastX),a=d(e);return i?{node:a,deltaX:0,deltaY:0,lastX:n,lastY:r,x:n,y:r}:{node:a,deltaX:n-e.lastX,deltaY:r-e.lastY,lastX:e.lastX,lastY:e.lastY,x:n,y:r}}function l(e,t){let n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}}function u(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}function d(e){let t=e.findDOMNode();if(!t)throw Error(`<DraggableCore>: Unmounted during event!`);return t}})),Be=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=t;function t(){}})),Ve=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=u(a()),n=l(M()),r=l(_()),i=Re(),o=ze(),s=J(),c=l(Be());function l(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(u=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!==`default`&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function d(e,t,n){return(t=f(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e){var t=p(e,`string`);return typeof t==`symbol`?t:t+``}function p(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var m={touch:{start:`touchstart`,move:`touchmove`,stop:`touchend`},mouse:{start:`mousedown`,move:`mousemove`,stop:`mouseup`}},h=m.mouse,g=class extends t.Component{constructor(){super(...arguments),d(this,`dragging`,!1),d(this,`lastX`,NaN),d(this,`lastY`,NaN),d(this,`touchIdentifier`,null),d(this,`mounted`,!1),d(this,`handleDragStart`,e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&typeof e.button==`number`&&e.button!==0)return!1;let t=this.findDOMNode();if(!t||!t.ownerDocument||!t.ownerDocument.body)throw Error(`<DraggableCore> not mounted on DragStart!`);let{ownerDocument:n}=t;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!(0,i.matchesSelectorAndParentsTo)(e.target,this.props.handle,t)||this.props.cancel&&(0,i.matchesSelectorAndParentsTo)(e.target,this.props.cancel,t))return;e.type===`touchstart`&&!this.props.allowMobileScroll&&e.preventDefault();let r=(0,i.getTouchIdentifier)(e);this.touchIdentifier=r;let a=(0,o.getControlPosition)(e,r,this);if(a==null)return;let{x:s,y:l}=a,u=(0,o.createCoreData)(this,s,l);(0,c.default)(`DraggableCore: handleDragStart: %j`,u),(0,c.default)(`calling`,this.props.onStart),!(this.props.onStart(e,u)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,i.addUserSelectStyles)(n),this.dragging=!0,this.lastX=s,this.lastY=l,(0,i.addEvent)(n,h.move,this.handleDrag),(0,i.addEvent)(n,h.stop,this.handleDragStop))}),d(this,`handleDrag`,e=>{let t=(0,o.getControlPosition)(e,this.touchIdentifier,this);if(t==null)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX,t=r-this.lastY;if([e,t]=(0,o.snapToGrid)(this.props.grid,e,t),!e&&!t)return;n=this.lastX+e,r=this.lastY+t}let i=(0,o.createCoreData)(this,n,r);if((0,c.default)(`DraggableCore: handleDrag: %j`,i),this.props.onDrag(e,i)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent(`mouseup`))}catch{let e=document.createEvent(`MouseEvents`);e.initMouseEvent(`mouseup`,!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(e)}return}this.lastX=n,this.lastY=r}),d(this,`handleDragStop`,e=>{if(!this.dragging)return;let t=(0,o.getControlPosition)(e,this.touchIdentifier,this);if(t==null)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX||0,t=r-this.lastY||0;[e,t]=(0,o.snapToGrid)(this.props.grid,e,t),n=this.lastX+e,r=this.lastY+t}let a=(0,o.createCoreData)(this,n,r);if(this.props.onStop(e,a)===!1||this.mounted===!1)return!1;let s=this.findDOMNode();s&&this.props.enableUserSelectHack&&(0,i.scheduleRemoveUserSelectStyles)(s.ownerDocument),(0,c.default)(`DraggableCore: handleDragStop: %j`,a),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,s&&((0,c.default)(`DraggableCore: Removing handlers`),(0,i.removeEvent)(s.ownerDocument,h.move,this.handleDrag),(0,i.removeEvent)(s.ownerDocument,h.stop,this.handleDragStop))}),d(this,`onMouseDown`,e=>(h=m.mouse,this.handleDragStart(e))),d(this,`onMouseUp`,e=>(h=m.mouse,this.handleDragStop(e))),d(this,`onTouchStart`,e=>(h=m.touch,this.handleDragStart(e))),d(this,`onTouchEnd`,e=>(h=m.touch,this.handleDragStop(e)))}componentDidMount(){this.mounted=!0;let e=this.findDOMNode();e&&(0,i.addEvent)(e,m.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;let e=this.findDOMNode();if(e){let{ownerDocument:t}=e;(0,i.removeEvent)(t,m.mouse.move,this.handleDrag),(0,i.removeEvent)(t,m.touch.move,this.handleDrag),(0,i.removeEvent)(t,m.mouse.stop,this.handleDragStop),(0,i.removeEvent)(t,m.touch.stop,this.handleDragStop),(0,i.removeEvent)(e,m.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,i.scheduleRemoveUserSelectStyles)(t)}}findDOMNode(){return this.props?.nodeRef?this.props?.nodeRef?.current:r.default.findDOMNode(this)}render(){return t.cloneElement(t.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};e.default=g,d(g,`displayName`,`DraggableCore`),d(g,`propTypes`,{allowAnyClick:n.default.bool,allowMobileScroll:n.default.bool,children:n.default.node.isRequired,disabled:n.default.bool,enableUserSelectHack:n.default.bool,offsetParent:function(e,t){if(e[t]&&e[t].nodeType!==1)throw Error(`Draggable's offsetParent must be a DOM Node.`)},grid:n.default.arrayOf(n.default.number),handle:n.default.string,cancel:n.default.string,nodeRef:n.default.object,onStart:n.default.func,onDrag:n.default.func,onStop:n.default.func,onMouseDown:n.default.func,scale:n.default.number,className:s.dontSetMe,style:s.dontSetMe,transform:s.dontSetMe}),d(g,`defaultProps`,{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1})})),He=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),Object.defineProperty(e,`DraggableCore`,{enumerable:!0,get:function(){return l.default}}),e.default=void 0;var t=f(a()),n=d(M()),r=d(_()),i=G(),o=Re(),s=ze(),c=J(),l=d(Ve()),u=d(Be());function d(e){return e&&e.__esModule?e:{default:e}}function f(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(f=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!==`default`&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(null,arguments)}function m(e,t,n){return(t=h(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e){var t=g(e,`string`);return typeof t==`symbol`?t:t+``}function g(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var v=class extends t.Component{static getDerivedStateFromProps(e,t){let{position:n}=e,{prevPropsPosition:r}=t;return n&&(!r||n.x!==r.x||n.y!==r.y)?((0,u.default)(`Draggable: getDerivedStateFromProps %j`,{position:n,prevPropsPosition:r}),{x:n.x,y:n.y,prevPropsPosition:{...n}}):null}constructor(e){super(e),m(this,`onDragStart`,(e,t)=>{if((0,u.default)(`Draggable: onDragStart: %j`,t),this.props.onStart(e,(0,s.createDraggableData)(this,t))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),m(this,`onDrag`,(e,t)=>{if(!this.state.dragging)return!1;(0,u.default)(`Draggable: onDrag: %j`,t);let n=(0,s.createDraggableData)(this,t),r={x:n.x,y:n.y,slackX:0,slackY:0};if(this.props.bounds){let{x:e,y:t}=r;r.x+=this.state.slackX,r.y+=this.state.slackY;let[i,a]=(0,s.getBoundPosition)(this,r.x,r.y);r.x=i,r.y=a,r.slackX=this.state.slackX+(e-r.x),r.slackY=this.state.slackY+(t-r.y),n.x=r.x,n.y=r.y,n.deltaX=r.x-this.state.x,n.deltaY=r.y-this.state.y}if(this.props.onDrag(e,n)===!1)return!1;this.setState(r)}),m(this,`onDragStop`,(e,t)=>{if(!this.state.dragging||this.props.onStop(e,(0,s.createDraggableData)(this,t))===!1)return!1;(0,u.default)(`Draggable: onDragStop: %j`,t);let n={dragging:!1,slackX:0,slackY:0};if(this.props.position){let{x:e,y:t}=this.props.position;n.x=e,n.y=t}this.setState(n)}),this.state={dragging:!1,dragged:!1,x:e.position?e.position.x:e.defaultPosition.x,y:e.position?e.position.y:e.defaultPosition.y,prevPropsPosition:{...e.position},slackX:0,slackY:0,isElementSVG:!1},e.position&&!(e.onDrag||e.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(){window.SVGElement!==void 0&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){return this.props?.nodeRef?.current??r.default.findDOMNode(this)}render(){let{axis:e,bounds:n,children:r,defaultPosition:a,defaultClassName:c,defaultClassNameDragging:u,defaultClassNameDragged:d,position:f,positionOffset:m,scale:h,...g}=this.props,_={},v=null,y=!f||this.state.dragging,b=f||a,x={x:(0,s.canDragX)(this)&&y?this.state.x:b.x,y:(0,s.canDragY)(this)&&y?this.state.y:b.y};this.state.isElementSVG?v=(0,o.createSVGTransform)(x,m):_=(0,o.createCSSTransform)(x,m);let S=(0,i.clsx)(r.props.className||``,c,{[u]:this.state.dragging,[d]:this.state.dragged});return t.createElement(l.default,p({},g,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),t.cloneElement(t.Children.only(r),{className:S,style:{...r.props.style,..._},transform:v}))}};e.default=v,m(v,`displayName`,`Draggable`),m(v,`propTypes`,{...l.default.propTypes,axis:n.default.oneOf([`both`,`x`,`y`,`none`]),bounds:n.default.oneOfType([n.default.shape({left:n.default.number,right:n.default.number,top:n.default.number,bottom:n.default.number}),n.default.string,n.default.oneOf([!1])]),defaultClassName:n.default.string,defaultClassNameDragging:n.default.string,defaultClassNameDragged:n.default.string,defaultPosition:n.default.shape({x:n.default.number,y:n.default.number}),positionOffset:n.default.shape({x:n.default.oneOfType([n.default.number,n.default.string]),y:n.default.oneOfType([n.default.number,n.default.string])}),position:n.default.shape({x:n.default.number,y:n.default.number}),className:c.dontSetMe,style:c.dontSetMe,transform:c.dontSetMe}),m(v,`defaultProps`,{...l.default.defaultProps,axis:`both`,bounds:!1,defaultClassName:`react-draggable`,defaultClassNameDragging:`react-draggable-dragging`,defaultClassNameDragged:`react-draggable-dragged`,defaultPosition:{x:0,y:0},scale:1})})),Ue=n(((e,t)=>{var{default:n,DraggableCore:r}=He();t.exports=n,t.exports.default=n,t.exports.DraggableCore=r})),We=n((e=>{e.__esModule=!0,e.cloneElement=l;var t=n(a());function n(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?r(Object(n),!0).forEach(function(t){o(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function o(e,t,n){return(t=s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e){var t=c(e,`string`);return typeof t==`symbol`?t:t+``}function c(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function l(e,n){return n.style&&e.props.style&&(n.style=i(i({},e.props.style),n.style)),n.className&&e.props.className&&(n.className=`${e.props.className} ${n.className}`),t.default.cloneElement(e,n)}})),Ge=n((e=>{e.__esModule=!0,e.resizableProps=void 0;var t=n(M());Ue();function n(e){return e&&e.__esModule?e:{default:e}}e.resizableProps={axis:t.default.oneOf([`both`,`x`,`y`,`none`]),className:t.default.string,children:t.default.element.isRequired,draggableOpts:t.default.shape({allowAnyClick:t.default.bool,cancel:t.default.string,children:t.default.node,disabled:t.default.bool,enableUserSelectHack:t.default.bool,offsetParent:typeof Element<`u`?t.default.instanceOf(Element):t.default.any,grid:t.default.arrayOf(t.default.number),handle:t.default.string,nodeRef:t.default.object,onStart:t.default.func,onDrag:t.default.func,onStop:t.default.func,onMouseDown:t.default.func,scale:t.default.number}),height:function(){var e=[...arguments];let[n]=e;return n.axis===`both`||n.axis===`y`?t.default.number.isRequired(...e):t.default.number(...e)},handle:t.default.oneOfType([t.default.node,t.default.func]),handleSize:t.default.arrayOf(t.default.number),lockAspectRatio:t.default.bool,maxConstraints:t.default.arrayOf(t.default.number),minConstraints:t.default.arrayOf(t.default.number),onResizeStop:t.default.func,onResizeStart:t.default.func,onResize:t.default.func,resizeHandles:t.default.arrayOf(t.default.oneOf([`s`,`w`,`e`,`n`,`sw`,`nw`,`se`,`ne`])),transformScale:t.default.number,width:function(){var e=[...arguments];let[n]=e;return n.axis===`both`||n.axis===`x`?t.default.number.isRequired(...e):t.default.number(...e)}}})),Ke=n((e=>{e.__esModule=!0,e.default=void 0;var t=s(a()),n=Ue(),r=We(),i=Ge(),o=[`children`,`className`,`draggableOpts`,`width`,`height`,`handle`,`handleSize`,`lockAspectRatio`,`axis`,`minConstraints`,`maxConstraints`,`onResize`,`onResizeStop`,`onResizeStart`,`resizeHandles`,`transformScale`];function s(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(s=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!==`default`&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},c.apply(null,arguments)}function l(e,t){if(e==null)return{};var n,r,i=u(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function u(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?d(Object(n),!0).forEach(function(t){p(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function p(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e){var t=h(e,`string`);return typeof t==`symbol`?t:t+``}function h(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var g=class extends t.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,t){let{minConstraints:n,maxConstraints:r,lockAspectRatio:i}=this.props;if(!n&&!r&&!i)return[e,t];if(i){let n=this.props.width/this.props.height,r=e-this.props.width,i=t-this.props.height;Math.abs(r)>Math.abs(i*n)?t=e/n:e=t*n}let[a,o]=[e,t],[s,c]=this.slack||[0,0];return e+=s,t+=c,n&&(e=Math.max(n[0],e),t=Math.max(n[1],t)),r&&(e=Math.min(r[0],e),t=Math.min(r[1],t)),this.slack=[s+(a-e),c+(o-t)],[e,t]}resizeHandler(e,t){return(n,r)=>{let{node:i,deltaX:a,deltaY:o}=r;e===`onResizeStart`&&this.resetData();let s=(this.props.axis===`both`||this.props.axis===`x`)&&t!==`n`&&t!==`s`,c=(this.props.axis===`both`||this.props.axis===`y`)&&t!==`e`&&t!==`w`;if(!s&&!c)return;let l=t[0],u=t[t.length-1],d=i.getBoundingClientRect();if(this.lastHandleRect!=null){if(u===`w`){let e=d.left-this.lastHandleRect.left;a+=e}if(l===`n`){let e=d.top-this.lastHandleRect.top;o+=e}}this.lastHandleRect=d,u===`w`&&(a=-a),l===`n`&&(o=-o);let f=this.props.width+(s?a/this.props.transformScale:0),p=this.props.height+(c?o/this.props.transformScale:0);[f,p]=this.runConstraints(f,p),e===`onResizeStop`&&this.lastSize&&({width:f,height:p}=this.lastSize);let m=f!==this.props.width||p!==this.props.height;e!==`onResizeStop`&&(this.lastSize={width:f,height:p});let h=typeof this.props[e]==`function`?this.props[e]:null;h&&!(e===`onResize`&&!m)&&(n.persist?.(),h(n,{node:i,size:{width:f,height:p},handle:t})),e===`onResizeStop`&&this.resetData()}}renderResizeHandle(e,n){let{handle:r}=this.props;if(!r)return t.createElement(`span`,{className:`react-resizable-handle react-resizable-handle-${e}`,ref:n});if(typeof r==`function`)return r(e,n);let i=typeof r.type==`string`,a=f({ref:n},i?{}:{handleAxis:e});return t.cloneElement(r,a)}render(){let e=this.props,{children:i,className:a,draggableOpts:s,width:u,height:d,handle:p,handleSize:m,lockAspectRatio:h,axis:g,minConstraints:_,maxConstraints:v,onResize:y,onResizeStop:b,onResizeStart:x,resizeHandles:S,transformScale:C}=e,w=l(e,o);return(0,r.cloneElement)(i,f(f({},w),{},{className:`${a?`${a} `:``}react-resizable`,children:[...t.Children.toArray(i.props.children),...S.map(e=>{let r=this.handleRefs[e]??(this.handleRefs[e]=t.createRef());return t.createElement(n.DraggableCore,c({},s,{nodeRef:r,key:`resizableHandle-${e}`,onStop:this.resizeHandler(`onResizeStop`,e),onStart:this.resizeHandler(`onResizeStart`,e),onDrag:this.resizeHandler(`onResize`,e)}),this.renderResizeHandle(e,r))})]}))}};e.default=g,g.propTypes=i.resizableProps,g.defaultProps={axis:`both`,handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:[`se`],transformScale:1}})),qe=n((e=>{e.__esModule=!0,e.default=void 0;var t=c(a()),n=s(M()),r=s(Ke()),i=Ge(),o=[`handle`,`handleSize`,`onResize`,`onResizeStart`,`onResizeStop`,`draggableOpts`,`minConstraints`,`maxConstraints`,`lockAspectRatio`,`axis`,`width`,`height`,`resizeHandles`,`style`,`transformScale`];function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(c=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!==`default`&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(null,arguments)}function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?u(Object(n),!0).forEach(function(t){f(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function f(e,t,n){return(t=p(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e){var t=m(e,`string`);return typeof t==`symbol`?t:t+``}function m(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function h(e,t){if(e==null)return{};var n,r,i=g(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function g(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var _=class extends t.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,t)=>{let{size:n}=t;this.props.onResize?(e.persist?.(),this.setState(n,()=>this.props.onResize&&this.props.onResize(e,t))):this.setState(n)}}static getDerivedStateFromProps(e,t){return t.propsWidth!==e.width||t.propsHeight!==e.height?{width:e.width,height:e.height,propsWidth:e.width,propsHeight:e.height}:null}render(){let e=this.props,{handle:n,handleSize:i,onResize:a,onResizeStart:s,onResizeStop:c,draggableOpts:u,minConstraints:f,maxConstraints:p,lockAspectRatio:m,axis:g,width:_,height:v,resizeHandles:y,style:b,transformScale:x}=e,S=h(e,o);return t.createElement(r.default,{axis:g,draggableOpts:u,handle:n,handleSize:i,height:this.state.height,lockAspectRatio:m,maxConstraints:p,minConstraints:f,onResizeStart:s,onResize:this.onResize,onResizeStop:c,resizeHandles:y,transformScale:x,width:this.state.width},t.createElement(`div`,l({},S,{style:d(d({},b),{},{width:this.state.width+`px`,height:this.state.height+`px`})})))}};e.default=_,_.propTypes=d(d({},i.resizableProps),{},{children:n.default.element})})),Je=n(((e,t)=>{t.exports=function(){throw Error(`Don't instantiate Resizable directly! Use require('react-resizable').Resizable`)},t.exports.Resizable=Ke().default,t.exports.ResizableBox=qe().default})),Ye=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.resizeHandleType=e.resizeHandleAxesType=e.default=void 0;var t=r(M()),n=r(a());function r(e){return e&&e.__esModule?e:{default:e}}var i=e.resizeHandleAxesType=t.default.arrayOf(t.default.oneOf([`s`,`w`,`e`,`n`,`sw`,`nw`,`se`,`ne`])),o=e.resizeHandleType=t.default.oneOfType([t.default.node,t.default.func]);e.default={className:t.default.string,style:t.default.object,width:t.default.number,autoSize:t.default.bool,cols:t.default.number,draggableCancel:t.default.string,draggableHandle:t.default.string,verticalCompact:function(e){e.verticalCompact},compactType:t.default.oneOf([`vertical`,`horizontal`]),layout:function(e){var t=e.layout;t!==void 0&&K().validateLayout(t,`layout`)},margin:t.default.arrayOf(t.default.number),containerPadding:t.default.arrayOf(t.default.number),rowHeight:t.default.number,maxRows:t.default.number,isBounded:t.default.bool,isDraggable:t.default.bool,isResizable:t.default.bool,allowOverlap:t.default.bool,preventCollision:t.default.bool,useCSSTransforms:t.default.bool,transformScale:t.default.number,isDroppable:t.default.bool,resizeHandles:i,resizeHandle:o,onLayoutChange:t.default.func,onDragStart:t.default.func,onDrag:t.default.func,onDragStop:t.default.func,onResizeStart:t.default.func,onResize:t.default.func,onResizeStop:t.default.func,onDrop:t.default.func,droppingItem:t.default.shape({i:t.default.string.isRequired,w:t.default.number.isRequired,h:t.default.number.isRequired}),children:function(e,t){let r=e[t],i={};n.default.Children.forEach(r,function(e){if(e?.key!=null){if(i[e.key])throw Error(`Duplicate child key "`+e.key+`" found! This will cause problems in ReactGridLayout.`);i[e.key]=!0}})},innerRef:t.default.any}})),Xe=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=d(a()),n=_(),r=d(M()),i=Ue(),o=Je(),s=K(),c=q(),l=Ye(),u=d(G());function d(e){return e&&e.__esModule?e:{default:e}}function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?f(Object(n),!0).forEach(function(t){m(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):f(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function m(e,t,n){return(t=h(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e){var t=g(e,`string`);return typeof t==`symbol`?t:t+``}function g(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var v=class extends t.default.Component{constructor(){super(...arguments),m(this,`state`,{resizing:null,dragging:null,className:``}),m(this,`elementRef`,t.default.createRef()),m(this,`onDragStart`,(e,t)=>{let{node:n}=t,{onDragStart:r,transformScale:i}=this.props;if(!r)return;let a={top:0,left:0},{offsetParent:o}=n;if(!o)return;let s=o.getBoundingClientRect(),l=n.getBoundingClientRect(),u=l.left/i,d=s.left/i,f=l.top/i,p=s.top/i;a.left=u-d+o.scrollLeft,a.top=f-p+o.scrollTop,this.setState({dragging:a});let{x:m,y:h}=(0,c.calcXY)(this.getPositionParams(),a.top,a.left,this.props.w,this.props.h);return r.call(this,this.props.i,m,h,{e,node:n,newPosition:a})}),m(this,`onDrag`,(e,t,r)=>{let{node:i,deltaX:a,deltaY:o}=t,{onDrag:s}=this.props;if(!s)return;if(!this.state.dragging)throw Error(`onDrag called before onDragStart.`);let l=this.state.dragging.top+o,u=this.state.dragging.left+a,{isBounded:d,i:f,w:p,h:m,containerWidth:h}=this.props,g=this.getPositionParams();if(d){let{offsetParent:e}=i;if(e){let{margin:t,rowHeight:n}=this.props,r=e.clientHeight-(0,c.calcGridItemWHPx)(m,n,t[1]);l=(0,c.clamp)(l,0,r);let i=(0,c.calcGridColWidth)(g),a=h-(0,c.calcGridItemWHPx)(p,i,t[0]);u=(0,c.clamp)(u,0,a)}}let _={top:l,left:u};r?this.setState({dragging:_}):(0,n.flushSync)(()=>{this.setState({dragging:_})});let{x:v,y}=(0,c.calcXY)(g,l,u,p,m);return s.call(this,f,v,y,{e,node:i,newPosition:_})}),m(this,`onDragStop`,(e,t)=>{let{node:n}=t,{onDragStop:r}=this.props;if(!r)return;if(!this.state.dragging)throw Error(`onDragEnd called before onDragStart.`);let{w:i,h:a,i:o}=this.props,{left:s,top:l}=this.state.dragging,u={top:l,left:s};this.setState({dragging:null});let{x:d,y:f}=(0,c.calcXY)(this.getPositionParams(),l,s,i,a);return r.call(this,o,d,f,{e,node:n,newPosition:u})}),m(this,`onResizeStop`,(e,t,n)=>this.onResizeHandler(e,t,n,`onResizeStop`)),m(this,`onResizeStart`,(e,t,n)=>this.onResizeHandler(e,t,n,`onResizeStart`)),m(this,`onResize`,(e,t,n)=>this.onResizeHandler(e,t,n,`onResize`))}shouldComponentUpdate(e,t){if(this.props.children!==e.children||this.props.droppingPosition!==e.droppingPosition)return!0;let n=(0,c.calcGridItemPosition)(this.getPositionParams(this.props),this.props.x,this.props.y,this.props.w,this.props.h,this.state),r=(0,c.calcGridItemPosition)(this.getPositionParams(e),e.x,e.y,e.w,e.h,t);return!(0,s.fastPositionEqual)(n,r)||this.props.useCSSTransforms!==e.useCSSTransforms}componentDidMount(){this.moveDroppingItem({})}componentDidUpdate(e){this.moveDroppingItem(e)}moveDroppingItem(e){let{droppingPosition:t}=this.props;if(!t)return;let n=this.elementRef.current;if(!n)return;let r=e.droppingPosition||{left:0,top:0},{dragging:i}=this.state,a=i&&t.left!==r.left||t.top!==r.top;if(!i)this.onDragStart(t.e,{node:n,deltaX:t.left,deltaY:t.top});else if(a){let e=t.left-i.left,r=t.top-i.top;this.onDrag(t.e,{node:n,deltaX:e,deltaY:r},!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){let{usePercentages:t,containerWidth:n,useCSSTransforms:r}=this.props,i;return r?i=(0,s.setTransform)(e):(i=(0,s.setTopLeft)(e),t&&(i.left=(0,s.perc)(e.left/n),i.width=(0,s.perc)(e.width/n))),i}mixinDraggable(e,n){return t.default.createElement(i.DraggableCore,{disabled:!n,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,t){return(n,r)=>t(n,r,e)}mixinResizable(e,n,r){let{cols:i,minW:a,minH:s,maxW:l,maxH:u,transformScale:d,resizeHandles:f,resizeHandle:p}=this.props,m=this.getPositionParams(),h=(0,c.calcGridItemPosition)(m,0,0,i,0).width,g=(0,c.calcGridItemPosition)(m,0,0,a,s),_=(0,c.calcGridItemPosition)(m,0,0,l,u),v=[g.width,g.height],y=[Math.min(_.width,h),Math.min(_.height,1/0)];return t.default.createElement(o.Resizable,{draggableOpts:{disabled:!r},className:r?void 0:`react-resizable-hide`,width:n.width,height:n.height,minConstraints:v,maxConstraints:y,onResizeStop:this.curryResizeHandler(n,this.onResizeStop),onResizeStart:this.curryResizeHandler(n,this.onResizeStart),onResize:this.curryResizeHandler(n,this.onResize),transformScale:d,resizeHandles:f,handle:p},e)}onResizeHandler(e,t,r,i){let{node:a,size:o,handle:l}=t,u=this.props[i];if(!u)return;let{x:d,y:f,i:p,maxH:m,minH:h,containerWidth:g}=this.props,{minW:_,maxW:v}=this.props,y=o;a&&(y=(0,s.resizeItemInDirection)(l,r,o,g),(0,n.flushSync)(()=>{this.setState({resizing:i===`onResizeStop`?null:y})}));let{w:b,h:x}=(0,c.calcWH)(this.getPositionParams(),y.width,y.height,d,f,l);b=(0,c.clamp)(b,Math.max(_,1),v),x=(0,c.clamp)(x,h,m),u.call(this,p,b,x,{e,node:a,size:y,handle:l})}render(){let{x:e,y:n,w:r,h:i,isDraggable:a,isResizable:o,droppingPosition:s,useCSSTransforms:l}=this.props,d=(0,c.calcGridItemPosition)(this.getPositionParams(),e,n,r,i,this.state),f=t.default.Children.only(this.props.children),m=t.default.cloneElement(f,{ref:this.elementRef,className:(0,u.default)(`react-grid-item`,f.props.className,this.props.className,{static:this.props.static,resizing:!!this.state.resizing,"react-draggable":a,"react-draggable-dragging":!!this.state.dragging,dropping:!!s,cssTransforms:l}),style:p(p(p({},this.props.style),f.props.style),this.createStyle(d))});return m=this.mixinResizable(m,d,o),m=this.mixinDraggable(m,a),m}};e.default=v,m(v,`propTypes`,{children:r.default.element,cols:r.default.number.isRequired,containerWidth:r.default.number.isRequired,rowHeight:r.default.number.isRequired,margin:r.default.array.isRequired,maxRows:r.default.number.isRequired,containerPadding:r.default.array.isRequired,x:r.default.number.isRequired,y:r.default.number.isRequired,w:r.default.number.isRequired,h:r.default.number.isRequired,minW:function(e,t){let n=e[t];if(typeof n!=`number`)return Error(`minWidth not Number`);if(n>e.w||n>e.maxW)return Error(`minWidth larger than item width/maxWidth`)},maxW:function(e,t){let n=e[t];if(typeof n!=`number`)return Error(`maxWidth not Number`);if(n<e.w||n<e.minW)return Error(`maxWidth smaller than item width/minWidth`)},minH:function(e,t){let n=e[t];if(typeof n!=`number`)return Error(`minHeight not Number`);if(n>e.h||n>e.maxH)return Error(`minHeight larger than item height/maxHeight`)},maxH:function(e,t){let n=e[t];if(typeof n!=`number`)return Error(`maxHeight not Number`);if(n<e.h||n<e.minH)return Error(`maxHeight smaller than item height/minHeight`)},i:r.default.string.isRequired,resizeHandles:l.resizeHandleAxesType,resizeHandle:l.resizeHandleType,onDragStop:r.default.func,onDragStart:r.default.func,onDrag:r.default.func,onResizeStop:r.default.func,onResizeStart:r.default.func,onResize:r.default.func,isDraggable:r.default.bool.isRequired,isResizable:r.default.bool.isRequired,isBounded:r.default.bool.isRequired,static:r.default.bool,useCSSTransforms:r.default.bool.isRequired,transformScale:r.default.number,className:r.default.string,handle:r.default.string,cancel:r.default.string,droppingPosition:r.default.shape({e:r.default.object.isRequired,left:r.default.number.isRequired,top:r.default.number.isRequired})}),m(v,`defaultProps`,{className:``,cancel:``,handle:``,minH:1,minW:1,maxH:1/0,maxW:1/0,transformScale:1})})),Ze=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=u(a()),n=W(),r=l(G()),i=K(),o=q(),s=l(Xe()),c=l(Ye());function l(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(u=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!==`default`&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?d(Object(n),!0).forEach(function(t){p(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function p(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e){var t=h(e,`string`);return typeof t==`symbol`?t:t+``}function h(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var g=`react-grid-layout`,_=!1;try{_=/firefox/i.test(navigator.userAgent)}catch{}var v=class extends t.Component{constructor(){super(...arguments),p(this,`state`,{activeDrag:null,layout:(0,i.synchronizeLayoutWithChildren)(this.props.layout,this.props.children,this.props.cols,(0,i.compactType)(this.props),this.props.allowOverlap),mounted:!1,oldDragItem:null,oldLayout:null,oldResizeItem:null,resizing:!1,droppingDOMNode:null,children:[]}),p(this,`dragEnterCounter`,0),p(this,`onDragStart`,(e,t,n,r)=>{let{e:a,node:o}=r,{layout:s}=this.state,c=(0,i.getLayoutItem)(s,e);if(!c)return;let l={w:c.w,h:c.h,x:c.x,y:c.y,placeholder:!0,i:e};return this.setState({oldDragItem:(0,i.cloneLayoutItem)(c),oldLayout:s,activeDrag:l}),this.props.onDragStart(s,c,c,null,a,o)}),p(this,`onDrag`,(e,t,n,r)=>{let{e:a,node:o}=r,{oldDragItem:s}=this.state,{layout:c}=this.state,{cols:l,allowOverlap:u,preventCollision:d}=this.props,f=(0,i.getLayoutItem)(c,e);if(!f)return;let p={w:f.w,h:f.h,x:f.x,y:f.y,placeholder:!0,i:e};c=(0,i.moveElement)(c,f,t,n,!0,d,(0,i.compactType)(this.props),l,u),this.props.onDrag(c,s,f,p,a,o),this.setState({layout:u?c:(0,i.compact)(c,(0,i.compactType)(this.props),l),activeDrag:p})}),p(this,`onDragStop`,(e,t,n,r)=>{let{e:a,node:o}=r;if(!this.state.activeDrag)return;let{oldDragItem:s}=this.state,{layout:c}=this.state,{cols:l,preventCollision:u,allowOverlap:d}=this.props,f=(0,i.getLayoutItem)(c,e);if(!f)return;c=(0,i.moveElement)(c,f,t,n,!0,u,(0,i.compactType)(this.props),l,d);let p=d?c:(0,i.compact)(c,(0,i.compactType)(this.props),l);this.props.onDragStop(p,s,f,null,a,o);let{oldLayout:m}=this.state;this.setState({activeDrag:null,layout:p,oldDragItem:null,oldLayout:null}),this.onLayoutMaybeChanged(p,m)}),p(this,`onResizeStart`,(e,t,n,r)=>{let{e:a,node:o}=r,{layout:s}=this.state,c=(0,i.getLayoutItem)(s,e);c&&(this.setState({oldResizeItem:(0,i.cloneLayoutItem)(c),oldLayout:this.state.layout,resizing:!0}),this.props.onResizeStart(s,c,c,null,a,o))}),p(this,`onResize`,(e,t,n,r)=>{let{e:a,node:o,size:s,handle:c}=r,{oldResizeItem:l}=this.state,{layout:u}=this.state,{cols:d,preventCollision:p,allowOverlap:m}=this.props,h=!1,g,_,v,[y,b]=(0,i.withLayoutItem)(u,e,e=>{let r;return _=e.x,v=e.y,[`sw`,`w`,`nw`,`n`,`ne`].indexOf(c)!==-1&&([`sw`,`nw`,`w`].indexOf(c)!==-1&&(_=e.x+(e.w-t),t=e.x!==_&&_<0?e.w:t,_=_<0?0:_),[`ne`,`n`,`nw`].indexOf(c)!==-1&&(v=e.y+(e.h-n),n=e.y!==v&&v<0?e.h:n,v=v<0?0:v),h=!0),p&&!m&&(r=(0,i.getAllCollisions)(u,f(f({},e),{},{w:t,h:n,x:_,y:v})).filter(t=>t.i!==e.i).length>0,r&&(v=e.y,n=e.h,_=e.x,t=e.w,h=!1)),e.w=t,e.h=n,e});if(!b)return;g=y,h&&(g=(0,i.moveElement)(y,b,_,v,!0,this.props.preventCollision,(0,i.compactType)(this.props),d,m));let x={w:b.w,h:b.h,x:b.x,y:b.y,static:!0,i:e};this.props.onResize(g,l,b,x,a,o),this.setState({layout:m?g:(0,i.compact)(g,(0,i.compactType)(this.props),d),activeDrag:x})}),p(this,`onResizeStop`,(e,t,n,r)=>{let{e:a,node:o}=r,{layout:s,oldResizeItem:c}=this.state,{cols:l,allowOverlap:u}=this.props,d=(0,i.getLayoutItem)(s,e),f=u?s:(0,i.compact)(s,(0,i.compactType)(this.props),l);this.props.onResizeStop(f,c,d,null,a,o);let{oldLayout:p}=this.state;this.setState({activeDrag:null,layout:f,oldResizeItem:null,oldLayout:null,resizing:!1}),this.onLayoutMaybeChanged(f,p)}),p(this,`onDragOver`,e=>{var n;if(e.preventDefault(),e.stopPropagation(),_&&!((n=e.nativeEvent.target)!=null&&n.classList.contains(g)))return!1;let{droppingItem:r,onDropDragOver:i,margin:a,cols:s,rowHeight:c,maxRows:l,width:u,containerPadding:d,transformScale:p}=this.props,m=i?.(e);if(m===!1)return this.state.droppingDOMNode&&this.removeDroppingPlaceholder(),!1;let h=f(f({},r),m),{layout:v}=this.state,y=e.currentTarget.getBoundingClientRect(),b=e.clientX-y.left,x=e.clientY-y.top,S={left:b/p,top:x/p,e};if(!this.state.droppingDOMNode){let e={cols:s,margin:a,maxRows:l,rowHeight:c,containerWidth:u,containerPadding:d||a},n=(0,o.calcXY)(e,x,b,h.w,h.h);this.setState({droppingDOMNode:t.createElement(`div`,{key:h.i}),droppingPosition:S,layout:[...v,f(f({},h),{},{x:n.x,y:n.y,static:!1,isDraggable:!0})]})}else if(this.state.droppingPosition){let{left:e,top:t}=this.state.droppingPosition;(e!=b||t!=x)&&this.setState({droppingPosition:S})}}),p(this,`removeDroppingPlaceholder`,()=>{let{droppingItem:e,cols:t}=this.props,{layout:n}=this.state,r=(0,i.compact)(n.filter(t=>t.i!==e.i),(0,i.compactType)(this.props),t,this.props.allowOverlap);this.setState({layout:r,droppingDOMNode:null,activeDrag:null,droppingPosition:void 0})}),p(this,`onDragLeave`,e=>{e.preventDefault(),e.stopPropagation(),this.dragEnterCounter--,this.dragEnterCounter===0&&this.removeDroppingPlaceholder()}),p(this,`onDragEnter`,e=>{e.preventDefault(),e.stopPropagation(),this.dragEnterCounter++}),p(this,`onDrop`,e=>{e.preventDefault(),e.stopPropagation();let{droppingItem:t}=this.props,{layout:n}=this.state,r=n.find(e=>e.i===t.i);this.dragEnterCounter=0,this.removeDroppingPlaceholder(),this.props.onDrop(n,r,e)})}componentDidMount(){this.setState({mounted:!0}),this.onLayoutMaybeChanged(this.state.layout,this.props.layout)}static getDerivedStateFromProps(e,t){let r;return t.activeDrag?null:(!(0,n.deepEqual)(e.layout,t.propsLayout)||e.compactType!==t.compactType?r=e.layout:(0,i.childrenEqual)(e.children,t.children)||(r=t.layout),r?{layout:(0,i.synchronizeLayoutWithChildren)(r,e.children,e.cols,(0,i.compactType)(e),e.allowOverlap),compactType:e.compactType,children:e.children,propsLayout:e.layout}:null)}shouldComponentUpdate(e,t){return this.props.children!==e.children||!(0,i.fastRGLPropsEqual)(this.props,e,n.deepEqual)||this.state.activeDrag!==t.activeDrag||this.state.mounted!==t.mounted||this.state.droppingPosition!==t.droppingPosition}componentDidUpdate(e,t){if(!this.state.activeDrag){let e=this.state.layout,n=t.layout;this.onLayoutMaybeChanged(e,n)}}containerHeight(){if(!this.props.autoSize)return;let e=(0,i.bottom)(this.state.layout),t=this.props.containerPadding?this.props.containerPadding[1]:this.props.margin[1];return e*this.props.rowHeight+(e-1)*this.props.margin[1]+t*2+`px`}onLayoutMaybeChanged(e,t){t||=this.state.layout,(0,n.deepEqual)(t,e)||this.props.onLayoutChange(e)}placeholder(){let{activeDrag:e}=this.state;if(!e)return null;let{width:n,cols:r,margin:i,containerPadding:a,rowHeight:o,maxRows:c,useCSSTransforms:l,transformScale:u}=this.props;return t.createElement(s.default,{w:e.w,h:e.h,x:e.x,y:e.y,i:e.i,className:`react-grid-placeholder ${this.state.resizing?`placeholder-resizing`:``}`,containerWidth:n,cols:r,margin:i,containerPadding:a||i,maxRows:c,rowHeight:o,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:l,transformScale:u},t.createElement(`div`,null))}processGridItem(e,n){if(!e||!e.key)return;let r=(0,i.getLayoutItem)(this.state.layout,String(e.key));if(!r)return null;let{width:a,cols:o,margin:c,containerPadding:l,rowHeight:u,maxRows:d,isDraggable:f,isResizable:p,isBounded:m,useCSSTransforms:h,transformScale:g,draggableCancel:_,draggableHandle:v,resizeHandles:y,resizeHandle:b}=this.props,{mounted:x,droppingPosition:S}=this.state,C=typeof r.isDraggable==`boolean`?r.isDraggable:!r.static&&f,w=typeof r.isResizable==`boolean`?r.isResizable:!r.static&&p,T=r.resizeHandles||y,E=C&&m&&r.isBounded!==!1;return t.createElement(s.default,{containerWidth:a,cols:o,margin:c,containerPadding:l||c,maxRows:d,rowHeight:u,cancel:_,handle:v,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:C,isResizable:w,isBounded:E,useCSSTransforms:h&&x,usePercentages:!x,transformScale:g,w:r.w,h:r.h,x:r.x,y:r.y,i:r.i,minH:r.minH,minW:r.minW,maxH:r.maxH,maxW:r.maxW,static:r.static,droppingPosition:n?S:void 0,resizeHandles:T,resizeHandle:b},e)}render(){let{className:e,style:n,isDroppable:a,innerRef:o}=this.props,s=(0,r.default)(g,e),c=f({height:this.containerHeight()},n);return t.createElement(`div`,{ref:o,className:s,style:c,onDrop:a?this.onDrop:i.noop,onDragLeave:a?this.onDragLeave:i.noop,onDragEnter:a?this.onDragEnter:i.noop,onDragOver:a?this.onDragOver:i.noop},t.Children.map(this.props.children,e=>this.processGridItem(e)),a&&this.state.droppingDOMNode&&this.processGridItem(this.state.droppingDOMNode,!0),this.placeholder())}};e.default=v,p(v,`displayName`,`ReactGridLayout`),p(v,`propTypes`,c.default),p(v,`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:i.noop,onDragStart:i.noop,onDrag:i.noop,onDragStop:i.noop,onResizeStart:i.noop,onResize:i.noop,onResizeStop:i.noop,onDrop:i.noop,onDropDragOver:i.noop})})),Qe=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.findOrGenerateResponsiveLayout=i,e.getBreakpointFromWidth=n,e.getColsFromBreakpoint=r,e.sortBreakpoints=a;var t=K();function n(e,t){let n=a(e),r=n[0];for(let i=1,a=n.length;i<a;i++){let a=n[i];t>e[a]&&(r=a)}return r}function r(e,t){if(!t[e])throw Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+e+` is missing!`);return t[e]}function i(e,n,r,i,o,s){if(e[r])return(0,t.cloneLayout)(e[r]);let c=e[i],l=a(n),u=l.slice(l.indexOf(r));for(let t=0,n=u.length;t<n;t++){let n=u[t];if(e[n]){c=e[n];break}}return c=(0,t.cloneLayout)(c||[]),(0,t.compact)((0,t.correctBounds)(c,{cols:o}),s,o)}function a(e){return Object.keys(e).sort(function(t,n){return e[t]-e[n]})}})),$e=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=u(a()),n=l(M()),r=W(),i=K(),o=Qe(),s=l(Ze()),c=[`breakpoint`,`breakpoints`,`cols`,`layouts`,`margin`,`containerPadding`,`onBreakpointChange`,`onLayoutChange`,`onWidthChange`];function l(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(u=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!==`default`&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},d.apply(null,arguments)}function f(e,t){if(e==null)return{};var n,r,i=p(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function p(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?m(Object(n),!0).forEach(function(t){g(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function g(e,t,n){return(t=_(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _(e){var t=v(e,`string`);return typeof t==`symbol`?t:t+``}function v(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var y=e=>Object.prototype.toString.call(e);function b(e,t){return e==null?null:Array.isArray(e)?e:e[t]}var x=class extends t.Component{constructor(){super(...arguments),g(this,`state`,this.generateInitialState()),g(this,`onLayoutChange`,e=>{this.props.onLayoutChange(e,h(h({},this.props.layouts),{},{[this.state.breakpoint]:e}))})}generateInitialState(){let{width:e,breakpoints:t,layouts:n,cols:r}=this.props,i=(0,o.getBreakpointFromWidth)(t,e),a=(0,o.getColsFromBreakpoint)(i,r),s=this.props.verticalCompact===!1?null:this.props.compactType;return{layout:(0,o.findOrGenerateResponsiveLayout)(n,t,i,i,a,s),breakpoint:i,cols:a}}static getDerivedStateFromProps(e,t){if(!(0,r.deepEqual)(e.layouts,t.layouts)){let{breakpoint:n,cols:r}=t;return{layout:(0,o.findOrGenerateResponsiveLayout)(e.layouts,e.breakpoints,n,n,r,e.compactType),layouts:e.layouts}}return null}componentDidUpdate(e){(this.props.width!=e.width||this.props.breakpoint!==e.breakpoint||!(0,r.deepEqual)(this.props.breakpoints,e.breakpoints)||!(0,r.deepEqual)(this.props.cols,e.cols))&&this.onWidthChange(e)}onWidthChange(e){let{breakpoints:t,cols:n,layouts:r,compactType:a}=this.props,s=this.props.breakpoint||(0,o.getBreakpointFromWidth)(this.props.breakpoints,this.props.width),c=this.state.breakpoint,l=(0,o.getColsFromBreakpoint)(s,n),u=h({},r);if(c!==s||e.breakpoints!==t||e.cols!==n){c in u||(u[c]=(0,i.cloneLayout)(this.state.layout));let e=(0,o.findOrGenerateResponsiveLayout)(u,t,s,c,l,a);e=(0,i.synchronizeLayoutWithChildren)(e,this.props.children,l,a,this.props.allowOverlap),u[s]=e,this.props.onBreakpointChange(s,l),this.props.onLayoutChange(e,u),this.setState({breakpoint:s,layout:e,cols:l})}let d=b(this.props.margin,s),f=b(this.props.containerPadding,s);this.props.onWidthChange(this.props.width,d,l,f)}render(){let e=this.props,{breakpoint:n,breakpoints:r,cols:i,layouts:a,margin:o,containerPadding:l,onBreakpointChange:u,onLayoutChange:p,onWidthChange:m}=e,h=f(e,c);return t.createElement(s.default,d({},h,{margin:b(o,this.state.breakpoint),containerPadding:b(l,this.state.breakpoint),onLayoutChange:this.onLayoutChange,layout:this.state.layout,cols:this.state.cols}))}};e.default=x,g(x,`propTypes`,{breakpoint:n.default.string,breakpoints:n.default.object,allowOverlap:n.default.bool,cols:n.default.object,margin:n.default.oneOfType([n.default.array,n.default.object]),containerPadding:n.default.oneOfType([n.default.array,n.default.object]),layouts(e,t){if(y(e[t])!==`[object Object]`)throw Error(`Layout property must be an object. Received: `+y(e[t]));Object.keys(e[t]).forEach(t=>{if(!(t in e.breakpoints))throw Error(`Each key in layouts must align with a key in breakpoints.`);(0,i.validateLayout)(e.layouts[t],`layouts.`+t)})},width:n.default.number.isRequired,onBreakpointChange:n.default.func,onLayoutChange:n.default.func,onWidthChange:n.default.func}),g(x,`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:i.noop,onLayoutChange:i.noop,onWidthChange:i.noop})})),et=t({default:()=>wt});function tt(e,t){var n=!1,r=!1,i=0;function a(){n&&(n=!1,e()),r&&s()}function o(){ut(a)}function s(){var e=Date.now();if(n){if(e-i<dt)return;r=!0}else n=!0,r=!1,setTimeout(o,t);i=e}return s}function Y(e){return parseFloat(e)||0}function nt(e){return[...arguments].slice(1).reduce(function(t,n){var r=e[`border-`+n+`-width`];return t+Y(r)},0)}function rt(e){for(var t=[`top`,`right`,`bottom`,`left`],n={},r=0,i=t;r<i.length;r++){var a=i[r],o=e[`padding-`+a];n[a]=Y(o)}return n}function it(e){var t=e.getBBox();return X(0,0,t.width,t.height)}function at(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return _t;var r=$(e).getComputedStyle(e),i=rt(r),a=i.left+i.right,o=i.top+i.bottom,s=Y(r.width),c=Y(r.height);if(r.boxSizing===`border-box`&&(Math.round(s+a)!==t&&(s-=nt(r,`left`,`right`)+a),Math.round(c+o)!==n&&(c-=nt(r,`top`,`bottom`)+o)),!ot(e)){var l=Math.round(s+a)-t,u=Math.round(c+o)-n;Math.abs(l)!==1&&(s-=l),Math.abs(u)!==1&&(c-=u)}return X(i.left,i.top,s,c)}function ot(e){return e===$(e).document.documentElement}function st(e){return Z?vt(e)?it(e):at(e):_t}function ct(e){var t=e.x,n=e.y,r=e.width,i=e.height,a=Object.create((typeof DOMRectReadOnly<`u`?DOMRectReadOnly:Object).prototype);return gt(a,{x:t,y:n,width:r,height:i,top:n,right:t+r,bottom:i+n,left:t}),a}function X(e,t,n,r){return{x:e,y:t,width:n,height:r}}var lt,Z,Q,ut,dt,ft,pt,mt,ht,gt,$,_t,vt,yt,bt,xt,St,Ct,wt,Tt=i((()=>{lt=(function(){if(typeof Map<`u`)return Map;function e(e,t){var n=-1;return e.some(function(e,r){return e[0]===t?(n=r,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,`size`,{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){t===void 0&&(t=null);for(var n=0,r=this.__entries__;n<r.length;n++){var i=r[n];e.call(t,i[1],i[0])}},t}()})(),Z=typeof window<`u`&&typeof document<`u`&&window.document===document,Q=(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`)()})(),ut=(function(){return typeof requestAnimationFrame==`function`?requestAnimationFrame.bind(Q):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)}})(),dt=2,ft=20,pt=[`top`,`right`,`bottom`,`left`,`width`,`height`,`size`,`weight`],mt=typeof MutationObserver<`u`,ht=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=tt(this.refresh.bind(this),ft)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter(function(e){return e.gatherActive(),e.hasActive()});return e.forEach(function(e){return e.broadcastActive()}),e.length>0},e.prototype.connect_=function(){!Z||this.connected_||(document.addEventListener(`transitionend`,this.onTransitionEnd_),window.addEventListener(`resize`,this.refresh),mt?(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)},e.prototype.disconnect_=function(){!Z||!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)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=t===void 0?``:t;pt.some(function(e){return!!~n.indexOf(e)})&&this.refresh()},e.getInstance=function(){return this.instance_||=new e,this.instance_},e.instance_=null,e}(),gt=(function(e,t){for(var n=0,r=Object.keys(t);n<r.length;n++){var i=r[n];Object.defineProperty(e,i,{value:t[i],enumerable:!1,writable:!1,configurable:!0})}return e}),$=(function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||Q}),_t=X(0,0,0,0),vt=(function(){return typeof SVGGraphicsElement<`u`?function(e){return e instanceof $(e).SVGGraphicsElement}:function(e){return e instanceof $(e).SVGElement&&typeof e.getBBox==`function`}})(),yt=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=X(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=st(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),bt=function(){function e(e,t){var n=ct(t);gt(this,{target:e,contentRect:n})}return e}(),xt=function(){function e(e,t,n){if(this.activeObservations_=[],this.observations_=new lt,typeof e!=`function`)throw TypeError(`The callback provided as parameter 1 is not a function.`);this.callback_=e,this.controller_=t,this.callbackCtx_=n}return e.prototype.observe=function(e){if(!arguments.length)throw TypeError(`1 argument required, but only 0 present.`);if(!(typeof Element>`u`||!(Element instanceof Object))){if(!(e instanceof $(e).Element))throw TypeError(`parameter 1 is not of type "Element".`);var t=this.observations_;t.has(e)||(t.set(e,new yt(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw TypeError(`1 argument required, but only 0 present.`);if(!(typeof Element>`u`||!(Element instanceof Object))){if(!(e instanceof $(e).Element))throw TypeError(`parameter 1 is not of type "Element".`);var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map(function(e){return new bt(e.target,e.broadcastRect())});this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),St=typeof WeakMap<`u`?new WeakMap:new lt,Ct=function(){function e(t){if(!(this instanceof e))throw TypeError(`Cannot call a class as a function.`);if(!arguments.length)throw TypeError(`1 argument required, but only 0 present.`);var n=new xt(t,ht.getInstance(),this);St.set(this,n)}return e}(),[`observe`,`unobserve`,`disconnect`].forEach(function(e){Ct.prototype[e]=function(){var t;return(t=St.get(this))[e].apply(t,arguments)}}),wt=(function(){return Q.ResizeObserver===void 0?Ct:Q.ResizeObserver})()})),Et=n((t=>{Object.defineProperty(t,`__esModule`,{value:!0}),t.default=_;var n=l(a()),r=c(M()),i=c((Tt(),e(et))),o=c(G()),s=[`measureBeforeMount`];function c(e){return e&&e.__esModule?e:{default:e}}function l(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(l=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!==`default`&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u.apply(null,arguments)}function d(e,t){if(e==null)return{};var n,r,i=f(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function f(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function p(e,t,n){return(t=m(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e){var t=h(e,`string`);return typeof t==`symbol`?t:t+``}function h(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var g=`react-grid-layout`;function _(e){var t;return t=class extends n.Component{constructor(){super(...arguments),p(this,`state`,{width:1280}),p(this,`elementRef`,n.createRef()),p(this,`mounted`,!1),p(this,`resizeObserver`,void 0)}componentDidMount(){this.mounted=!0,this.resizeObserver=new i.default(e=>{if(this.elementRef.current instanceof HTMLElement){let t=e[0].contentRect.width;this.setState({width:t})}});let e=this.elementRef.current;e instanceof HTMLElement&&this.resizeObserver.observe(e)}componentWillUnmount(){this.mounted=!1;let e=this.elementRef.current;e instanceof HTMLElement&&this.resizeObserver.unobserve(e),this.resizeObserver.disconnect()}render(){let t=this.props,{measureBeforeMount:r}=t,i=d(t,s);return r&&!this.mounted?n.createElement(`div`,{className:(0,o.default)(this.props.className,g),style:this.props.style,ref:this.elementRef}):n.createElement(e,u({innerRef:this.elementRef},i,this.state))}},p(t,`defaultProps`,{measureBeforeMount:!1}),p(t,`propTypes`,{measureBeforeMount:r.default.bool}),t}})),Dt=r(n(((e,t)=>{t.exports=Ze().default,t.exports.utils=K(),t.exports.calculateUtils=q(),t.exports.Responsive=$e().default,t.exports.Responsive.utils=Qe(),t.exports.WidthProvider=Et().default}))(),1),Ot=(0,Dt.WidthProvider)(Dt.default),kt=h(`div`)(({theme:e})=>({"& .react-grid-item":{borderRadius:`${e.shape.borderRadiusMedium}px`},"& .grid-item-drag-handle":{[e.breakpoints.down(`md`)]:{display:`none`}}})),At=h(`div`)(({theme:e})=>({border:`1px solid ${e.palette.divider}`})),jt=({items:e,onLayoutChange:t,cols:n={lg:12,md:12,sm:6,xs:4,xxs:2},rowHeight:r=180})=>{let i=p(),a=v(i.breakpoints.down(`md`)),o=(0,U.useMemo)(()=>{if(a){let t=0;return e.map(e=>{let r={i:e.id,x:0,y:t,w:n.xs,h:e.h??4,minW:n.xs,minH:e.minH??3,maxW:n.xs,maxH:e.maxH??8,static:!1};return t+=r.h,r})}return e.map((e,t)=>({i:e.id,x:e.x??t%Math.floor(n.lg/(e.w??4))*(e.w??4),y:e.y??Math.floor(t/Math.floor(n.lg/(e.w??4)))*(e.h??4),w:e.w??4,h:e.h??4,minW:e.minW??4,minH:e.minH??3,maxW:e.maxW??12,maxH:e.maxH??8,static:e.static??!1}))},[e,n,a]),s=(0,U.useMemo)(()=>e.map(e=>(0,H.jsx)(At,{children:e.component},e.id)),[e]),c=(0,U.useCallback)(e=>{a||t?.(e)},[t,a]);return(0,H.jsx)(kt,{children:(0,H.jsx)(Ot,{className:`impact-metrics-grid`,layout:o,cols:a?n.xs:n.lg,rowHeight:r,margin:[Number.parseInt(i.spacing(2),10),Number.parseInt(i.spacing(2),10)],containerPadding:[0,0],isDraggable:!1,isResizable:!1,onLayoutChange:c,resizeHandles:[`se`],draggableHandle:`.grid-item-drag-handle`,compactType:a?null:`vertical`,preventCollision:!1,useCSSTransforms:!0,autoSize:!0,allowOverlap:!1,children:s})})};export{ae as a,oe as i,Fe as n,Ee as r,jt as t};
@@ -1 +0,0 @@
1
- import{o as e,t}from"./react-DW1tWzGJ.js";import{n}from"./formatPath-vbOoY_VU.js";import{$s as r,$t as i,Ed as a,Gt as o,Kc as s,Kd as c,Ki as l,Kt as u,Lo as d,N as f,Pd as p,Td as m,cc as h,df as g,ec as _,gd as v,hd as y,ho as b,j as x,oc as S,ps as C,qc as w,qt as T,rc as E}from"./index-DIBimazR.js";import{n as D}from"./useImpactMetricsEnabled-Yb36cM6y.js";import{i as O,n as k,r as A,t as j}from"./GridLayoutWrapper-L_W9K-dV.js";import{t as M}from"./impact-metrics-icon-1LLLS-bG.js";var N=e(t(),1),P=()=>{let e=`api/admin/impact-metrics/plausible`,{data:t,refetch:r,loading:i,error:a}=w(n(e),()=>s(n(e),`Plausible metrics`),{refreshInterval:30*1e3,revalidateOnFocus:!0});return{data:t||{data:[]},refetch:r,loading:i,error:a}},F=g(),I=({aspectRatio:e,overrideOptions:t={},errorTitle:n=`Failed to load Plausible metrics.`,emptyDataDescription:r=`No Plausible analytics data available.`,noSeriesPlaceholder:i,isPreview:s})=>{let{data:c,loading:l,error:d}=P(),p=o({fill:!0,type:`constant`}),m=(0,N.useMemo)(()=>{if(!c?.data||c.data.length===0)return{labels:[],datasets:[]};let e=[...c.data].sort((e,t)=>new Date(e.date).getTime()-new Date(t.date).getTime());return{labels:e.map(e=>e.date),datasets:[{label:`Events`,data:e.map(e=>e.count),borderColor:`rgb(129, 122, 254)`,backgroundColor:`rgba(129, 122, 254, 0.1)`,fill:!0,tension:.1}]}},[c]),h=!!d,g=l,_=(0,N.useMemo)(()=>!g&&(!c?.data||c.data.length===0||!m.datasets.some(e=>e.data.length>1)),[m,g,c]),y=_?i||(0,F.jsx)(T,{title:`No Plausible data available`,description:r}):g,b={...t,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:e=>typeof e==`number`?f(e):e}}},plugins:{legend:{display:!0,position:`bottom`,labels:{usePointStyle:!0,boxWidth:8,padding:12}}},animations:{x:{duration:0},y:{duration:0}}};return(0,F.jsx)(F.Fragment,{children:(0,F.jsx)(v,{sx:s?{}:{height:`100%`,width:`100%`,"& > div":{height:`100% !important`,width:`100% !important`}},children:(0,F.jsx)(u,{data:_||g?p:m,aspectRatio:e,overrideOptions:b,cover:h?(0,F.jsx)(a,{severity:`error`,children:n}):y})})})},L=c(p)(({theme:e})=>({borderRadius:`${e.shape.borderRadiusMedium}px`,boxShadow:`none`,display:`flex`,flexDirection:`column`,height:`100%`})),R=c(v)({flex:1,display:`flex`,flexDirection:`column`,minHeight:0}),z=c(v)(({theme:e})=>({position:`relative`,minWidth:0,flexGrow:1,height:`100%`,display:`flex`,flexDirection:`column`,margin:`auto 0`,padding:e.spacing(3)})),B=c(v)(({theme:e})=>({display:`flex`,gap:e.spacing(2),alignItems:`center`,padding:e.spacing(1.5,2),borderBottom:`1px solid ${e.palette.divider}`})),V=c(v)(({theme:e})=>({display:`flex`,flexDirection:`column`,justifyContent:`flex-end`,flexGrow:1,overflow:`hidden`,textOverflow:`ellipsis`})),H=()=>(0,F.jsxs)(L,{children:[(0,F.jsx)(B,{children:(0,F.jsxs)(V,{children:[(0,F.jsx)(m,{variant:`h3`,children:`Plausible Analytics`}),(0,F.jsx)(m,{variant:`body2`,sx:{color:`text.secondary`},children:`Favorite events from Plausible analytics`})]})}),(0,F.jsx)(R,{children:(0,F.jsx)(z,{children:(0,F.jsx)(I,{aspectRatio:1.5,overrideOptions:{maintainAspectRatio:!1},emptyDataDescription:`No Plausible analytics data available for favorite events.`})})})]}),U=`https://docs.getunleash.io/concepts/impact-metrics`,W=c(v)(({theme:e})=>({display:`flex`,flexDirection:`column`,alignItems:`center`,padding:e.spacing(6,4)})),G=c(v)(({theme:e})=>({marginBottom:e.spacing(3)})),K=c(v)(({theme:e})=>({textAlign:`center`,maxWidth:480,marginBottom:e.spacing(3)})),q=c(v)(({theme:e})=>({display:`flex`,gap:e.spacing(2),alignItems:`center`,marginBottom:e.spacing(4)})),J=c(a)(({theme:e})=>({maxWidth:480,backgroundColor:e.palette.info.light,marginTop:e.spacing(4),color:e.palette.info.dark,"& .MuiAlert-icon":{color:e.palette.info.main}})),Y=({onAddChart:e})=>(0,F.jsx)(S,{header:(0,F.jsx)(h,{title:`Impact metrics`,actions:(0,F.jsx)(d,{variant:`contained`,onClick:e,permission:C,children:`New chart`})}),children:(0,F.jsxs)(W,{children:[(0,F.jsx)(G,{children:(0,F.jsx)(M,{})}),(0,F.jsxs)(K,{children:[(0,F.jsx)(m,{variant:`h3`,component:`h2`,sx:{mb:1.5},children:`No impact metrics yet`}),(0,F.jsx)(m,{sx:{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.`})]}),(0,F.jsxs)(q,{children:[(0,F.jsx)(y,{variant:`text`,href:U,target:`_blank`,rel:`noopener noreferrer`,children:`Read the docs`}),(0,F.jsx)(d,{variant:`contained`,onClick:e,permission:C,children:`Create your first chart`})]}),(0,F.jsxs)(J,{severity:`info`,icon:(0,F.jsx)(l,{}),children:[(0,F.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.`]})]})});c(v)(({theme:e})=>({display:`flex`,alignItems:`center`,cursor:`move`,padding:e.spacing(.5),borderRadius:e.shape.borderRadius,color:e.palette.text.secondary,"&:hover":{backgroundColor:e.palette.action.hover,color:e.palette.text.primary}}));var X=()=>{let[e,t]=(0,N.useState)(!1),[n,i]=(0,N.useState)(),{setToastApiError:a}=_(),o=b(`plausibleMetrics`),{trackEvent:s}=E(),{charts:c,layout:l,loading:u,error:f,addChart:p,updateChart:g,deleteChart:v}=O(),{metricOptions:y,loading:S,error:w}=x(),T=()=>{i(void 0),t(!0),s(`impact-metrics`,{props:{eventType:`global chart modal open`}})},D=e=>{i(e),t(!0)},M=async e=>{try{n?await g(n.id,e):await p(e),t(!1)}catch(e){a(r(e))}},P=(0,N.useCallback)(async e=>{try{await v(e)}catch(e){a(r(e))}},[v]),I=(0,N.useMemo)(()=>{let e=[];if(o){let t={id:`plausible-analytics`,component:(0,F.jsx)(H,{}),w:6,h:2};e.push(t)}let t=c.map((e,t)=>{let n=l?.find(t=>t.i===e.id);return{id:e.id,component:(0,F.jsx)(k,{config:e,onEdit:D,onDelete:P}),w:n?.w??6,h:n?.h??4,x:n?.x,y:n?.y,minW:4,minH:2,maxW:12,maxH:8}});return[...e,...t]},[c,l,D,P,o]),L=w||f,R=S||u,z=c.length>=20,B=R||!!L||z;return(0,F.jsxs)(F.Fragment,{children:[c.length===0&&!R?(0,F.jsx)(Y,{onAddChart:T}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(h,{title:`Impact metrics`,titleElement:(0,F.jsx)(m,{variant:`h1`,component:`span`,children:`Impact metrics`}),actions:(0,F.jsx)(d,{variant:`contained`,onClick:T,disabled:B,permission:C,tooltipProps:z?{title:`Maximum of 20 impact metrics charts allowed`,arrow:!0}:void 0,children:`New chart`})}),I.length>0&&(0,F.jsx)(j,{items:I})]}),(0,F.jsx)(A,{open:e,onClose:()=>t(!1),onSave:M,initialConfig:n,metrics:y,loading:S||u})]})},Z=c(`div`)(({theme:e})=>({paddingTop:e.spacing(2)})),Q=c(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(4),paddingBottom:e.spacing(4)})),$=()=>D()?(0,F.jsx)(Z,{children:(0,F.jsx)(Q,{children:(0,F.jsx)(X,{})})}):(0,F.jsx)(i,{});export{$ as ImpactMetricsPage};
@@ -1 +0,0 @@
1
- import{o as e,t}from"./react-DW1tWzGJ.js";import{$u as n,Au as r,Bd as i,Dd as a,Ed as o,Fo as s,Fu as c,Gs as l,Hu as u,I as d,Iu as f,Jd as p,Ju as m,Kd as h,Ki as ee,Ks as te,Ls as g,Mu as ne,N as _,Nu as v,P as y,Pd as re,Pu as ie,So as b,Td as x,Ul as ae,Us as S,Uu as C,Vd as w,Wu as oe,Yu as T,Zn as se,ad as E,ba as ce,cc as D,co as le,df as ue,di as O,gd as k,hd as A,j as de,jc as j,ju as M,ku as N,oc as fe,q as pe,tl as me,to as P,uo as F,xa as I,xf as L,yd as R}from"./index-DIBimazR.js";import{a as z,i as he,n as ge,r as _e,t as ve}from"./useGroupedImpactMetricsData-D2KwIe7Z.js";import{t as ye}from"./impact-metrics-icon-1LLLS-bG.js";var B=e(t(),1),V=2,H=(e,t,n,r,i)=>n===t?(r+i)/2:r+(e-t)/(n-t)*(i-r),be=e=>{let t=e.data.filter(([,e])=>Number.isFinite(e));if(t.length<2)return null;let n=t.map(([e])=>e),r=t.map(([,e])=>e),i=n[0],a=n[n.length-1],o=Math.min(...r),s=Math.max(...r),c=V,l=64-V,u=e=>H(e,i,a,0,320),d=e=>H(e,o,s,l,c),f=t.map(([e,t],n)=>`${n===0?`M`:`L`} ${u(e).toFixed(1)} ${d(t).toFixed(1)}`).join(` `),p=u(i).toFixed(1);return{line:f,area:`${f} L ${u(a).toFixed(1)} 64 L ${p} 64 Z`}},U=ue(),xe=h(k)(({theme:e})=>({position:`relative`,display:`flex`,flexDirection:`column`,flex:1,justifyContent:`center`,gap:e.spacing(.5),margin:e.spacing(-3,-3,-3,-3),padding:e.spacing(4,3,4,3),borderTopRightRadius:e.shape.borderRadiusMedium,background:e.mode===`dark`?`linear-gradient(135deg, ${e.palette.background.alternative} 0%, ${e.palette.action.alternative} 100%)`:`linear-gradient(135deg, ${e.palette.primary.main} 0%, ${e.palette.primary.dark} 100%)`,color:e.palette.common.white,overflow:`hidden`,[e.breakpoints.down(`lg`)]:{margin:e.spacing(-2.5,-2,-2.5,-2),padding:e.spacing(3.5,2,3.5,2),borderTopRightRadius:0}})),Se=h(k)(({theme:e})=>({display:`grid`,gridTemplateColumns:`minmax(0, 1fr) minmax(140px, 0.6fr)`,gap:e.spacing(2.5),alignItems:`stretch`,[e.breakpoints.down(`md`)]:{gridTemplateColumns:`1fr`,gap:e.spacing(1.5),alignItems:`center`}})),Ce=h(k)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(.5),minWidth:0})),we=h(k)(({theme:e})=>({width:`100%`,minHeight:64,display:`flex`,alignItems:`stretch`,[e.breakpoints.down(`md`)]:{height:64*.7,minHeight:`unset`}})),Te=h(k)(({theme:e})=>({display:`inline-flex`,alignItems:`center`,gap:e.spacing(.75),color:e.palette.common.white})),Ee=h(x)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,fontWeight:e.typography.fontWeightBold,color:e.palette.common.white,textTransform:`uppercase`,letterSpacing:`0.08em`})),De=h(x)(({theme:e})=>({fontSize:e.fontSizes.smallBody,fontWeight:e.typography.fontWeightBold,color:e.palette.common.white,lineHeight:1.3,display:`-webkit-box`,WebkitLineClamp:2,WebkitBoxOrient:`vertical`,overflow:`hidden`,overflowWrap:`anywhere`})),Oe=h(k)(({theme:e})=>({display:`flex`,alignItems:`baseline`,gap:e.spacing(1),marginTop:e.spacing(1.5)})),ke=h(x)(({theme:e})=>({fontSize:e.typography.h2.fontSize,fontWeight:700,color:e.palette.common.white,lineHeight:1})),Ae=h(k)(({theme:e})=>({display:`inline-flex`,alignItems:`center`,gap:e.spacing(.5),fontSize:e.fontSizes.smallBody})),je=h(x)(()=>({color:`rgba(255, 255, 255, 0.75)`,fontSize:`0.75rem`})),Me=h(`svg`)({width:`100%`,height:`100%`,display:`block`}),Ne=e=>e===null||e===0?`flat`:e>0?`up`:`down`,Pe=e=>`${e>0?`+`:``}${Number.isInteger(e)?`${e}`:e.toFixed(1)}%`,W=e=>`${e>0?`+`:e<0?`−`:``}${_(Math.abs(e))}`,Fe=({goalMetricLabel:e,summary:t,series:n,timeLabel:r})=>{let i=p(),a=(0,B.useId)(),o=Ne(t.deltaAbs),s=n?be(n):null,c=t.mode===`latest`&&t.deltaAbs!==null&&t.deltaAbs!==0,l=i.palette.common.white,u=i.palette.common.white,d=o===`up`?z:o===`down`?F:he,f=t.mode===`cumulative`?`Total over ${r.toLowerCase()}`:`vs. start of ${r.toLowerCase()}`;return(0,U.jsxs)(xe,{children:[(0,U.jsxs)(Te,{children:[(0,U.jsx)(me,{sx:{fontSize:16}}),(0,U.jsx)(Ee,{children:`Goal`})]}),(0,U.jsxs)(Se,{children:[(0,U.jsxs)(Ce,{children:[(0,U.jsx)(De,{title:e,children:e}),(0,U.jsxs)(Oe,{children:[(0,U.jsx)(ke,{children:_(t.current)}),c&&t.deltaAbs!==null?(0,U.jsxs)(Ae,{sx:{color:l},children:[(0,U.jsx)(d,{sx:{fontSize:16}}),(0,U.jsx)(x,{component:`span`,sx:{fontSize:`inherit`,fontWeight:600,color:`inherit`},children:t.deltaPct===null?W(t.deltaAbs):`${Pe(t.deltaPct)} (${W(t.deltaAbs)})`})]}):null]}),(0,U.jsx)(je,{variant:`caption`,children:f})]}),s?(0,U.jsx)(we,{children:(0,U.jsxs)(Me,{viewBox:`0 0 320 64`,preserveAspectRatio:`none`,role:`img`,"aria-label":`${e} trend sparkline`,children:[(0,U.jsx)(`defs`,{children:(0,U.jsxs)(`linearGradient`,{id:a,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,U.jsx)(`stop`,{offset:`0%`,stopColor:u,stopOpacity:.35}),(0,U.jsx)(`stop`,{offset:`100%`,stopColor:u,stopOpacity:0})]})}),(0,U.jsx)(`path`,{d:s.area,fill:`url(#${a})`,stroke:`none`}),(0,U.jsx)(`path`,{d:s.line,fill:`none`,stroke:u,strokeWidth:1.5,strokeLinejoin:`round`,strokeLinecap:`round`,vectorEffect:`non-scaling-stroke`})]})}):null]})]})},Ie=h(k)(({theme:e})=>({borderRadius:e.shape.borderRadiusMedium,border:`1px solid ${e.palette.divider}`,backgroundColor:e.palette.background.paper,color:`inherit`})),Le=h(k)(({theme:e})=>({display:`flex`,flexDirection:`row`,[e.breakpoints.down(`lg`)]:{flexDirection:`column`}})),Re=h(k)({flex:2,minWidth:0,display:`flex`,flexDirection:`column`}),ze=h(k)(({theme:e})=>({flex:1,display:`flex`,flexDirection:`column`,backgroundColor:e.palette.background.elevation1,borderTopRightRadius:e.shape.borderRadiusMedium,borderBottomRightRadius:e.shape.borderRadiusMedium,[e.breakpoints.down(`lg`)]:{borderTopRightRadius:0,borderBottomLeftRadius:e.shape.borderRadiusMedium}})),Be=h(k)(({theme:e})=>({display:`flex`,flexDirection:`column`,padding:e.spacing(1.5,3,0,3),minWidth:0,[e.breakpoints.down(`lg`)]:{padding:e.spacing(1.5,2,0,2)}})),Ve=h(k)(({theme:e})=>({display:`flex`,alignItems:`flex-end`,padding:e.spacing(3,3,0,3),minWidth:0,[e.breakpoints.down(`lg`)]:{padding:e.spacing(2.5,2,0,2)}})),He=h(x)(({theme:e})=>({fontSize:e.fontSizes.smallBody,fontWeight:e.typography.fontWeightBold,color:e.palette.text.primary})),Ue=h(x)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,color:e.palette.text.secondary})),We=h(x)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,fontWeight:e.typography.fontWeightBold,color:e.palette.text.secondary,textTransform:`uppercase`,letterSpacing:`0.06em`})),Ge=h(k,{shouldForwardProp:e=>e!==`heightSpacing`})(({theme:e,heightSpacing:t})=>({display:`flex`,minWidth:0,flex:1,minHeight:e.spacing(t.base),padding:e.spacing(1.5,3),"& > *":{minWidth:0,flex:1},[e.breakpoints.down(`lg`)]:{minHeight:e.spacing(t.lg),padding:e.spacing(1.5,2)},[e.breakpoints.down(`sm`)]:{minHeight:e.spacing(t.sm)}})),Ke=h(k)(({theme:e})=>({flex:1,minWidth:0,display:`flex`,flexDirection:`column`,justifyContent:`center`,padding:e.spacing(1.5,3,3,3),[e.breakpoints.down(`lg`)]:{padding:e.spacing(1.5,2,2.5,2)}})),qe=h(k)(({theme:e})=>({flex:1,display:`flex`,flexDirection:`column`,padding:e.spacing(3,3,3,3),borderBottom:`1px solid ${e.palette.divider}`,[e.breakpoints.down(`lg`)]:{padding:e.spacing(2.5,2,2.5,2)}})),Je=new Set([`count`,`sum`]),Ye=({title:e,subtitle:t,timeRange:n,aggregationMode:r,stepSeries:i,stepTotals:a,featureEvents:o,start:s,end:c,loading:l,chartHeightSpacing:u,totalsHeaderSlot:d,totalsLabel:f})=>{let p=r&&!Je.has(r)?`Last recorded value`:`Totals`;return(0,U.jsx)(Ie,{children:(0,U.jsxs)(Le,{children:[(0,U.jsxs)(Re,{children:[(0,U.jsxs)(Be,{children:[(0,U.jsx)(He,{children:e}),(0,U.jsx)(Ue,{children:t})]}),(0,U.jsx)(Ge,{heightSpacing:u,children:(0,U.jsx)(ge,{stepSeries:i,timeRange:n,start:s,end:c,loading:l,featureEvents:o})})]}),(0,U.jsxs)(ze,{children:[(0,U.jsx)(qe,{children:d}),(0,U.jsx)(Ve,{children:(0,U.jsx)(We,{children:f??p})}),(0,U.jsx)(Ke,{children:(0,U.jsx)(_e,{steps:a})})]})]})})},Xe=[`initial`,`pre-live`,`live`,`completed`,`archived`,`unknown`],Ze=e=>e.lifecycleStage??`unknown`,Qe=h(`div`)(({theme:e})=>({display:`flex`,alignItems:`baseline`,gap:e.spacing(1),marginBottom:e.spacing(1.5)})),$e=h(x)(({theme:e})=>({fontSize:e.fontSizes.bodySize,fontWeight:e.typography.fontWeightBold,color:e.palette.text.primary})),et=h(x)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,color:e.palette.text.secondary})),tt=h(ne)({"& th:first-of-type":{borderBottomLeftRadius:0},"& th:last-of-type":{borderBottomRightRadius:0}}),nt=h(re)(({theme:e})=>({borderRadius:e.shape.borderRadiusLarge,boxShadow:`none`,border:`1px solid ${e.palette.divider}`,overflow:`hidden`})),rt=h(M)(({theme:e})=>({backgroundColor:e.palette.background.elevation1})),it=h(v)(({theme:e})=>({padding:e.spacing(.75,2),color:e.palette.text.secondary,fontSize:e.fontSizes.smallerBody,fontWeight:e.typography.fontWeightBold,letterSpacing:`0.04em`,textTransform:`uppercase`})),at=h(`button`)(({theme:e})=>({all:`unset`,display:`flex`,alignItems:`center`,gap:e.spacing(.75),cursor:`pointer`,"&:focus-visible":{outline:`2px solid ${e.palette.primary.main}`,outlineOffset:2,borderRadius:e.shape.borderRadius}})),ot=h(k)(({theme:e})=>({display:`inline-flex`,alignItems:`center`,color:e.palette.text.disabled,"& svg":{fontSize:16}})),G=h(k)({display:`inline-flex`,alignItems:`center`,"& svg":{height:18,width:`auto`,display:`block`}}),st=h(`span`)(({theme:e})=>({color:e.palette.text.disabled,fontWeight:e.typography.fontWeightRegular,textTransform:`none`,letterSpacing:0,marginLeft:e.spacing(.25)})),ct=h(k)(({theme:e})=>({display:`inline-flex`,alignItems:`center`,gap:e.spacing(1),color:e.palette.text.primary,fontWeight:e.typography.fontWeightMedium})),lt=h(n)(({theme:e})=>({fontWeight:e.typography.fontWeightBold})),ut=h(k)(({theme:e})=>({display:`inline-flex`,alignItems:`center`,gap:e.spacing(.75)})),dt=h(`span`)(({theme:e})=>({color:e.palette.text.disabled})),ft=({stage:e})=>(0,U.jsxs)(ut,{children:[(0,U.jsx)(G,{children:(0,U.jsx)(g,{stage:{name:e}})}),(0,U.jsx)(`span`,{children:s(e)})]}),pt=({groupKey:e,count:t,collapsed:n,onToggle:r})=>(0,U.jsx)(rt,{children:(0,U.jsx)(it,{colSpan:4,children:(0,U.jsxs)(at,{type:`button`,"aria-expanded":!n,onClick:r,children:[(0,U.jsx)(ot,{children:n?(0,U.jsx)(I,{}):(0,U.jsx)(ae,{})}),e===`unknown`?(0,U.jsx)(`span`,{children:`Not found`}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(G,{children:(0,U.jsx)(g,{stage:{name:e}})}),(0,U.jsx)(`span`,{children:s(e)})]}),(0,U.jsx)(st,{children:t})]})})}),mt=({feature:e})=>(0,U.jsxs)(M,{children:[(0,U.jsx)(v,{children:(0,U.jsx)(ct,{children:e.project?(0,U.jsx)(lt,{component:L,to:`/projects/${e.project}/features/${e.name}`,underline:`hover`,children:e.name}):(0,U.jsx)(`span`,{children:e.name})})}),(0,U.jsx)(v,{children:e.project}),(0,U.jsx)(v,{sx:{textTransform:`capitalize`},children:e.type}),(0,U.jsx)(v,{children:e.lifecycleStage?(0,U.jsx)(ft,{stage:e.lifecycleStage}):(0,U.jsx)(dt,{children:`—`})})]}),ht=({features:e})=>{let[t,n]=(0,B.useState)({}),r=(0,B.useMemo)(()=>Xe.map(t=>({key:t,entries:e.filter(e=>Ze(e)===t)})).filter(e=>e.entries.length>0),[e]);if(e.length===0)return null;let i=e=>n(t=>({...t,[e]:!t[e]}));return(0,U.jsxs)(k,{children:[(0,U.jsxs)(Qe,{children:[(0,U.jsx)($e,{children:`Followed features`}),(0,U.jsx)(et,{children:`${e.length} total`})]}),(0,U.jsx)(nt,{children:(0,U.jsxs)(c,{children:[(0,U.jsx)(tt,{children:(0,U.jsxs)(M,{children:[(0,U.jsx)(v,{children:`Name`}),(0,U.jsx)(v,{children:`Project`}),(0,U.jsx)(v,{children:`Type`}),(0,U.jsx)(v,{children:`Lifecycle stage`})]})}),(0,U.jsx)(ie,{children:r.map(({key:e,entries:n})=>(0,U.jsxs)(B.Fragment,{children:[(0,U.jsx)(pt,{groupKey:e,count:n.length,collapsed:!!t[e],onToggle:()=>i(e)}),t[e]?null:n.map(e=>(0,U.jsx)(mt,{feature:e},e.name))]},e))})]})})]})},gt=w((0,U.jsx)(`path`,{d:`m14.06 9.02.92.92L5.92 19H5v-.92zM17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29m-3.6 3.19L3 17.25V21h3.75L17.81 9.94z`}),`EditOutlined`),_t=w((0,U.jsx)(`path`,{d:`M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z`}),`ContentCopyOutlined`),vt=h(`div`)(({theme:e})=>({display:`flex`,alignItems:`center`,gap:e.spacing(2),borderBottom:`1px solid ${e.palette.divider}`})),yt=h(r)({flex:1,minWidth:0,"& .MuiTabs-flexContainer":{gap:4}}),bt=h(f)(({theme:e})=>({textTransform:`none`,fontSize:e.fontSizes.smallBody,fontWeight:e.typography.fontWeightMedium,minHeight:e.spacing(5.5),padding:e.spacing(.5,1,.5,2),"& .tab-actions":{opacity:.4,marginLeft:e.spacing(.5)},"&:hover .tab-actions, &.Mui-selected .tab-actions":{opacity:1}})),xt=h(k)({display:`flex`,alignItems:`center`,gap:4}),St=h(A)(({theme:e})=>({textTransform:`none`,whiteSpace:`nowrap`,flexShrink:0,marginLeft:e.spacing(1),marginBottom:e.spacing(.5)})),Ct=({views:e,activeViewId:t,onSelect:n,onCreate:r,onEdit:i,onDuplicate:o,onDelete:s})=>{let[c,l]=(0,B.useState)(null),[u,d]=(0,B.useState)(null),f=(e,t)=>{e.stopPropagation(),l(e.currentTarget),d(t)},p=()=>{l(null),d(null)},h=e.find(e=>e.id===u)??null;return(0,U.jsxs)(vt,{children:[(0,U.jsx)(yt,{value:t??!1,onChange:(e,t)=>n(t),variant:`scrollable`,scrollButtons:`auto`,children:e.map(e=>(0,U.jsx)(bt,{value:e.id,label:(0,U.jsxs)(xt,{children:[(0,U.jsx)(`span`,{children:e.title}),(0,U.jsx)(a,{component:`span`,className:`tab-actions`,size:`small`,"aria-label":`${e.title} actions`,onClick:t=>f(t,e.id),children:(0,U.jsx)(ce,{fontSize:`small`})})]})},e.id))}),(0,U.jsx)(St,{variant:`outlined`,startIcon:(0,U.jsx)(P,{}),onClick:r,children:`New view`}),(0,U.jsxs)(oe,{anchorEl:c,open:!!c,onClose:p,children:[(0,U.jsxs)(C,{onClick:()=>{h&&i(h),p()},children:[(0,U.jsx)(T,{children:(0,U.jsx)(gt,{fontSize:`small`})}),(0,U.jsx)(m,{children:`Edit`})]}),(0,U.jsxs)(C,{onClick:()=>{h&&o(h),p()},children:[(0,U.jsx)(T,{children:(0,U.jsx)(_t,{fontSize:`small`})}),(0,U.jsx)(m,{children:`Duplicate`})]}),(0,U.jsxs)(C,{onClick:()=>{h&&s(h),p()},children:[(0,U.jsx)(T,{children:(0,U.jsx)(pe,{fontSize:`small`})}),(0,U.jsx)(m,{children:`Delete`})]})]})]})},wt=`50`,Tt=({option:e})=>(0,U.jsxs)(k,{sx:{display:`flex`,flexDirection:`column`},children:[(0,U.jsx)(x,{variant:`body2`,children:e.name}),e.project?(0,U.jsx)(x,{variant:`caption`,sx:{color:`text.secondary`},children:e.project}):null]}),Et=({value:e,onChange:t,disabled:n})=>{let[r,a]=(0,B.useState)(``),[o,s]=(0,B.useState)(``),c=(0,B.useMemo)(()=>i(e=>{s(e)},250),[]),{features:l,loading:u}=b({query:o||void 0,limit:wt}),d=l.map(({name:e,project:t})=>({name:e,project:t}));return(0,U.jsx)(R,{multiple:!0,disableCloseOnSelect:!0,disabled:n,loading:u,options:d,value:e.map(e=>d.find(t=>t.name===e)??{name:e,project:``}),inputValue:r,onInputChange:(e,t,n)=>{n===`input`&&(a(t),c(t))},onChange:(e,n)=>{t(n.map(e=>e.name))},isOptionEqualToValue:(e,t)=>e.name===t.name,getOptionLabel:e=>e.name,renderOption:(e,t)=>(0,B.createElement)(k,{component:`li`,...e,key:t.name},(0,U.jsx)(Tt,{option:t})),renderInput:t=>(0,U.jsx)(N,{...t,label:`Features to follow`,placeholder:e.length===0?`Search for features…`:`Add another feature…`,size:`small`,variant:`outlined`,helperText:`Toggle events for these features will be drawn over the chart.`})})},K={hour:`Last hour`,day:`Last 24 hours`,week:`Last 7 days`,month:`Last 30 days`},Dt=Object.entries(K).map(([e,t])=>({key:e,label:t})),q=`production`,Ot=`month`,J=`count`,Y=h(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(.5),flex:1,minWidth:220})),kt=h(x)(({theme:e})=>({fontSize:e.fontSizes.smallBody,fontWeight:e.typography.fontWeightBold,color:e.palette.text.primary})),X=h(x)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,color:e.palette.text.secondary})),At=h(`div`)(({theme:e})=>({display:`flex`,alignItems:`center`,gap:e.spacing(1.5),padding:e.spacing(1,1.5),borderRadius:e.shape.borderRadius,border:`1px solid ${e.palette.divider}`,backgroundColor:e.palette.background.elevation1})),jt=h(`div`)(({theme:e})=>({flex:1,minWidth:0,display:`flex`,flexDirection:`column`})),Mt=h(x)(({theme:e})=>({fontSize:e.fontSizes.smallBody,fontWeight:e.typography.fontWeightMedium,color:e.palette.text.primary,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`})),Nt=h(x)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,color:e.palette.text.secondary})),Pt=[{key:`count`,label:`Count`},{key:`rps`,label:`Rate per second`},{key:`sum`,label:`Sum`},{key:`avg`,label:`Average`},{key:`p50`,label:`50th percentile`},{key:`p95`,label:`95th percentile`},{key:`p99`,label:`99th percentile`}],Ft=(e,t)=>{let n=d(e.name);return{id:O(),metricName:e.name,displayName:e.displayName||e.name,aggregationMode:y(n),labelSelectors:{},source:e.source,title:void 0,yAxisMin:`auto`,timeRange:t}},It=e=>({name:e.metricName,displayName:e.displayName,help:``,source:e.source===`external`?`external`:`internal`}),Lt=e=>{let t=d(e);return t===`unknown`?`Metric type could not be inferred.`:`${t.charAt(0).toUpperCase()}${t.slice(1)} metric`},Rt=({option:e})=>(0,U.jsxs)(k,{sx:{display:`flex`,flexDirection:`column`},children:[(0,U.jsx)(x,{variant:`body2`,children:e.displayName||e.name}),e.help?(0,U.jsx)(x,{variant:`caption`,sx:{color:`text.secondary`},children:e.help}):null]}),zt=({metric:e,onSelectGoal:t})=>{let n=e.displayName||e.metricName;return(0,U.jsxs)(At,{children:[(0,U.jsx)(E,{sx:{mr:0},"aria-label":`Mark ${n} as the goal`,control:(0,U.jsx)(u,{size:`small`,checked:!!e.goal,onChange:()=>t(e.metricName)}),label:(0,U.jsx)(x,{variant:`caption`,sx:{color:`text.secondary`},children:`Goal`}),labelPlacement:`bottom`}),(0,U.jsxs)(jt,{children:[(0,U.jsx)(Mt,{title:e.metricName,children:n}),(0,U.jsx)(Nt,{children:Lt(e.metricName)})]})]})},Bt=e=>(e.find(e=>e.goal)??e[0])?.aggregationMode??J,Z=e=>e?{title:e.title,featureNames:e.featureNames,metrics:e.metrics,timeRange:e.timeRange,aggregationMode:Bt(e.metrics),environment:e.environment}:{title:``,featureNames:[],metrics:[],timeRange:Ot,aggregationMode:J,environment:q},Q=(e,t)=>e.map(e=>({...e,...t})),Vt=(e,t)=>e.metrics.length===0&&t.length>0?y(d(t[0].name)):e.aggregationMode,Ht=(e,t)=>{let n=new Map(e.metrics.map(e=>[e.metricName,e]));return t.map(t=>n.get(t.name)??Ft(t,e.timeRange))},Ut=(e,t)=>{switch(t.type){case`reset`:return t.form;case`setTitle`:return{...e,title:t.title};case`setFeatureNames`:return{...e,featureNames:t.featureNames};case`setEnvironment`:return{...e,environment:t.environment};case`setTimeRange`:return{...e,timeRange:t.timeRange,metrics:Q(e.metrics,{timeRange:t.timeRange})};case`setAggregation`:return{...e,aggregationMode:t.aggregationMode,metrics:Q(e.metrics,{aggregationMode:t.aggregationMode})};case`setMetrics`:{let n=Vt(e,t.options),r=Ht(e,t.options);return{...e,aggregationMode:n,metrics:Q(r,{aggregationMode:n})}}case`setGoal`:return{...e,metrics:e.metrics.map(e=>({...e,goal:e.metricName===t.metricName}))}}},Wt=({open:e,initialView:t,onClose:n,onSave:r})=>{let{metricOptions:i,loading:a}=de(),{environments:o,loading:s}=te(),[c,u]=(0,B.useReducer)(Ut,t,Z);(0,B.useEffect)(()=>{e&&u({type:`reset`,form:Z(t)})},[e,t]);let d=c.metrics.map(e=>i.find(t=>t.name===e.metricName)??It(e)),f=o.length>0?o.map(e=>({key:e.name,label:e.name})):[{key:q,label:q}],p=c.title.trim().length>0&&c.metrics.length>0;return(0,U.jsx)(l,{open:e,onClose:n,onClick:()=>{p&&r({title:c.title.trim(),featureNames:c.featureNames,metrics:c.metrics,timeRange:c.timeRange,environment:c.environment})},title:t?`Edit view`:`Create a new view`,primaryButtonText:t?`Save changes`:`Create view`,secondaryButtonText:`Cancel`,disabledPrimaryButton:!p,maxWidth:`md`,fullWidth:!0,children:(0,U.jsxs)(k,{sx:{display:`flex`,flexDirection:`column`,gap:3,pt:1},children:[(0,U.jsx)(N,{label:`View title`,value:c.title,onChange:e=>u({type:`setTitle`,title:e.target.value}),placeholder:`e.g. Checkout funnel`,size:`small`,autoFocus:!0,required:!0}),(0,U.jsxs)(Y,{children:[(0,U.jsx)(kt,{children:`Metrics`}),(0,U.jsx)(R,{multiple:!0,disableCloseOnSelect:!0,loading:a,options:i,value:d,onChange:(e,t)=>u({type:`setMetrics`,options:t}),isOptionEqualToValue:(e,t)=>e.name===t.name,getOptionLabel:e=>e.displayName||e.name,groupBy:e=>e.source===`external`?`External metrics`:`Internal metrics`,renderOption:(e,t)=>(0,B.createElement)(k,{component:`li`,...e,key:`${t.source}__${t.name}`},(0,U.jsx)(Rt,{option:t})),renderInput:e=>(0,U.jsx)(N,{...e,placeholder:c.metrics.length===0?`Pick one or more metrics…`:`Add another metric…`,size:`small`,variant:`outlined`})}),(0,U.jsx)(X,{children:`All selected metrics are drawn together on a single chart.`}),c.metrics.length>0?(0,U.jsx)(k,{sx:{display:`flex`,flexDirection:`column`,gap:1,mt:.5},children:c.metrics.map(e=>(0,U.jsx)(zt,{metric:e,onSelectGoal:e=>u({type:`setGoal`,metricName:e})},e.metricName))}):null]}),(0,U.jsx)(Et,{value:c.featureNames,onChange:e=>u({type:`setFeatureNames`,featureNames:e})}),(0,U.jsxs)(k,{sx:{display:`flex`,gap:2,flexWrap:`wrap`},children:[(0,U.jsxs)(Y,{children:[(0,U.jsx)(S,{id:`view-aggregation`,labelId:`view-aggregation-label`,label:`Aggregation`,value:c.aggregationMode,options:Pt,onChange:e=>u({type:`setAggregation`,aggregationMode:e})}),(0,U.jsx)(X,{children:`Applied to all metrics in this view.`})]}),(0,U.jsx)(Y,{children:(0,U.jsx)(S,{id:`view-time-range`,labelId:`view-time-range-label`,label:`Time range`,value:c.timeRange,options:Dt,onChange:e=>u({type:`setTimeRange`,timeRange:e})})}),(0,U.jsxs)(Y,{children:[(0,U.jsx)(S,{id:`view-environment`,labelId:`view-environment-label`,label:`Environment`,value:c.environment,options:f,disabled:s,onChange:e=>u({type:`setEnvironment`,environment:e})}),(0,U.jsx)(X,{children:`Toggle events from this environment are drawn over the chart.`})]})]})]})})},Gt=`https://docs.getunleash.io/reference/impact-metrics`,Kt=h(k)(({theme:e})=>({display:`flex`,flexDirection:`column`,alignItems:`center`,padding:e.spacing(6,4)})),qt=h(k)(({theme:e})=>({marginBottom:e.spacing(3)})),Jt=h(k)(({theme:e})=>({textAlign:`center`,maxWidth:520,marginBottom:e.spacing(3)})),Yt=h(k)(({theme:e})=>({display:`flex`,gap:e.spacing(2),alignItems:`center`,marginBottom:e.spacing(4)})),Xt=h(o)(({theme:e})=>({maxWidth:520,backgroundColor:e.palette.info.light,marginTop:e.spacing(4),color:e.palette.info.dark,"& .MuiAlert-icon":{color:e.palette.info.main}})),Zt=({onCreate:e})=>(0,U.jsx)(fe,{header:(0,U.jsx)(D,{title:`Impact views`}),children:(0,U.jsxs)(Kt,{children:[(0,U.jsx)(qt,{children:(0,U.jsx)(ye,{})}),(0,U.jsxs)(Jt,{children:[(0,U.jsx)(x,{variant:`h3`,component:`h2`,sx:{mb:1.5},children:`Start telling a story with your metrics`}),(0,U.jsx)(x,{sx:{color:`text.secondary`},children:`A view combines the features you want to follow with the impact metrics that matter to you. Toggle events for each feature are drawn over the chart so you can see exactly when a rollout moved the needle.`})]}),(0,U.jsxs)(Yt,{children:[(0,U.jsx)(A,{variant:`text`,href:Gt,target:`_blank`,rel:`noopener noreferrer`,children:`Read the docs`}),(0,U.jsx)(A,{variant:`contained`,startIcon:(0,U.jsx)(P,{}),onClick:e,children:`Create your first view`})]}),(0,U.jsxs)(Xt,{severity:`info`,icon:(0,U.jsx)(ee,{}),children:[(0,U.jsx)(`strong`,{children:`Tip:`}),` Views are stored locally in your browser — only you can see them in this iteration.`]})]})}),Qt=new Set([`count`,`sum`]),$t=e=>{for(let[,t]of e)if(Number.isFinite(t))return t;return 0},$=e=>{for(let t=e.length-1;t>=0;--t){let n=e[t][1];if(Number.isFinite(n))return n}return 0},en=(e,t,n)=>{if(Qt.has(t))return{current:n,mode:`cumulative`,deltaAbs:null,deltaPct:null};if(!e||e.data.length===0)return{current:0,mode:`latest`,deltaAbs:0,deltaPct:null};let r=$(e.data),i=$t(e.data),a=r-i;return{current:r,mode:`latest`,deltaAbs:a,deltaPct:i===0?null:a/i*100}},tn=e=>{let{features:t,loading:n}=b({query:e.join(`,`),limit:`100`});return{features:(0,B.useMemo)(()=>{let n=new Set(e);return t.filter(e=>n.has(e.name)).map(e=>({name:e.name,project:e.project,type:e.type,lifecycleStage:e.lifecycle?.stage??null}))},[t,e]),loading:n}},nn=`IS_ANY_OF:feature-environment-enabled,feature-environment-disabled`,rn=(e,t)=>{let{events:n,loading:r}=se({feature:`IS_ANY_OF:${e.join(`,`)}`,type:nn,environment:`IS:${t}`,limit:`1000`},{refreshInterval:3e4});return{featureEvents:(0,B.useMemo)(()=>n.map(e=>({id:e.id,timestamp:new Date(e.createdAt).getTime(),type:e.type,label:e.label??e.type,createdBy:e.createdBy})),[n]),loading:r}},an=e=>{let t=e.metrics,{stepSeries:n,stepTotals:r,start:i,end:a,loading:o}=ve(t),{features:s,loading:c}=tn(e.featureNames),{featureEvents:l,loading:u}=rn(e.featureNames,e.environment),d=e.metrics.findIndex(e=>e.goal),f=d>=0?e.metrics[d]:void 0,p=d>=0?n[d]:void 0;return{goalSummary:f?en(p,f.aggregationMode,r[d]?.value??0):void 0,goalSeries:p,goalLabel:f?.title||f?.displayName||e.title,stepSeries:n,stepTotals:r,start:i,end:a,featureEvents:l,resolvedFeatures:s,loading:o||c||u}},on=`impact-metric-views:list`,sn=`impact-metric-views:active-id`,cn=[],ln=()=>{let[e,t]=j(on,cn),[n,r]=j(sn,``),i=e.some(e=>e.id===n),a=n&&i?n:e[0]?.id??null;return{views:e,activeView:e.find(e=>e.id===a)??null,activeViewId:a,setActiveViewId:(0,B.useCallback)(e=>{r(e??``)},[r]),addView:(0,B.useCallback)(e=>{let n=Date.now(),i={...e,id:O(),createdAt:n,updatedAt:n};return t(e=>[...e,i]),r(i.id),i},[t,r]),updateView:(0,B.useCallback)((e,n)=>{t(t=>t.map(t=>t.id===e?{...t,...n,updatedAt:Date.now()}:t))},[t]),deleteView:(0,B.useCallback)(e=>{t(t=>t.filter(t=>t.id!==e)),n===e&&r(``)},[t,n,r]),duplicateView:(0,B.useCallback)(n=>{let i=e.find(e=>e.id===n);if(!i)return null;let a=Date.now(),o={...i,id:O(),title:`${i.title} (copy)`,createdAt:a,updatedAt:a};return t(e=>[...e,o]),r(o.id),o},[e,t,r])}},un=({view:e})=>{let t=an(e),n=K[e.timeRange];return(0,U.jsxs)(k,{sx:{display:`flex`,flexDirection:`column`,gap:3},children:[(0,U.jsx)(Ye,{title:t.goalLabel,subtitle:`Goal · ${n}`,timeRange:e.timeRange,aggregationMode:e.metrics[0]?.aggregationMode,stepSeries:t.stepSeries,stepTotals:t.stepTotals,featureEvents:t.featureEvents,start:t.start,end:t.end,loading:t.loading,chartHeightSpacing:{base:48,lg:40,sm:32},totalsLabel:`Signals`,totalsHeaderSlot:t.goalSummary?(0,U.jsx)(Fe,{goalMetricLabel:t.goalLabel,summary:t.goalSummary,series:t.goalSeries,timeLabel:n}):null}),(0,U.jsx)(ht,{features:t.resolvedFeatures})]})},dn=()=>{let{views:e,activeView:t,activeViewId:n,setActiveViewId:r,addView:i,updateView:a,deleteView:o,duplicateView:s}=ln(),[c,u]=(0,B.useState)({type:`closed`}),[d,f]=(0,B.useState)(null),p=()=>u({type:`create`}),m=e=>u({type:`edit`,view:e}),h=()=>u({type:`closed`});return(0,U.jsxs)(k,{sx:{pt:3,mt:-4},children:[e.length===0?(0,U.jsx)(Zt,{onCreate:p}):(0,U.jsxs)(k,{sx:{display:`flex`,flexDirection:`column`,gap:3},children:[(0,U.jsx)(D,{title:`Impact views`,actions:(0,U.jsx)(le,{color:`info`,children:`Internal beta`})}),(0,U.jsx)(Ct,{views:e,activeViewId:n,onSelect:r,onCreate:p,onEdit:m,onDuplicate:e=>s(e.id),onDelete:f}),t?(0,U.jsx)(un,{view:t}):null]}),(0,U.jsx)(Wt,{open:c.type!==`closed`,initialView:c.type===`edit`?c.view:null,onClose:h,onSave:e=>{c.type===`edit`?a(c.view.id,e):i(e),h()}}),(0,U.jsx)(l,{open:d!==null,title:d?`Delete "${d.title}"?`:`Delete view?`,primaryButtonText:`Delete`,secondaryButtonText:`Cancel`,onClick:()=>{d&&o(d.id),f(null)},onClose:()=>f(null)})]})};export{dn as ImpactViewsPage};