unleash-server 7.6.2 → 7.6.4

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 (316) hide show
  1. package/dist/lib/db/client-applications-store.d.ts.map +1 -1
  2. package/dist/lib/db/client-applications-store.js +1 -0
  3. package/dist/lib/db/client-applications-store.js.map +1 -1
  4. package/dist/lib/db/client-applications-store.test.d.ts +2 -0
  5. package/dist/lib/db/client-applications-store.test.d.ts.map +1 -0
  6. package/dist/lib/db/client-applications-store.test.js +134 -0
  7. package/dist/lib/db/client-applications-store.test.js.map +1 -0
  8. package/dist/lib/db/index.js +2 -2
  9. package/dist/lib/db/index.js.map +1 -1
  10. package/dist/lib/events/index.d.ts +2 -1
  11. package/dist/lib/events/index.d.ts.map +1 -1
  12. package/dist/lib/events/index.js +2 -0
  13. package/dist/lib/events/index.js.map +1 -1
  14. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-types.d.ts +1 -1
  15. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-types.d.ts.map +1 -1
  16. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-types.js +2 -3
  17. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta-types.js.map +1 -1
  18. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.d.ts +3 -3
  19. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.d.ts.map +1 -1
  20. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.js +77 -27
  21. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.js.map +1 -1
  22. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.test.js +566 -20
  23. package/dist/lib/features/client-feature-toggles/delta/client-feature-toggle-delta.test.js.map +1 -1
  24. package/dist/lib/features/client-feature-toggles/delta/visible-revision.d.ts +3 -1
  25. package/dist/lib/features/client-feature-toggles/delta/visible-revision.d.ts.map +1 -1
  26. package/dist/lib/features/client-feature-toggles/delta/visible-revision.js +26 -3
  27. package/dist/lib/features/client-feature-toggles/delta/visible-revision.js.map +1 -1
  28. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.js +9 -1
  29. package/dist/lib/features/client-feature-toggles/delta/visible-revision.test.js.map +1 -1
  30. package/dist/lib/features/events/event-store.d.ts +1 -1
  31. package/dist/lib/features/events/event-store.d.ts.map +1 -1
  32. package/dist/lib/features/events/event-store.js +26 -4
  33. package/dist/lib/features/events/event-store.js.map +1 -1
  34. package/dist/lib/features/frontend-api/createFrontendApiService.d.ts.map +1 -1
  35. package/dist/lib/features/frontend-api/createFrontendApiService.js +3 -10
  36. package/dist/lib/features/frontend-api/createFrontendApiService.js.map +1 -1
  37. package/dist/lib/features/index.d.ts +1 -0
  38. package/dist/lib/features/index.d.ts.map +1 -1
  39. package/dist/lib/features/index.js +1 -0
  40. package/dist/lib/features/index.js.map +1 -1
  41. package/dist/lib/features/instance-stats/createInstanceStatsService.js +2 -2
  42. package/dist/lib/features/instance-stats/createInstanceStatsService.js.map +1 -1
  43. package/dist/lib/features/maintenance/maintenance-service.d.ts +1 -1
  44. package/dist/lib/features/maintenance/maintenance-service.d.ts.map +1 -1
  45. package/dist/lib/features/maintenance/maintenance-service.test.js +2 -2
  46. package/dist/lib/features/maintenance/maintenance-service.test.js.map +1 -1
  47. package/dist/lib/features/onboarding/createOnboardingReadModel.d.ts +2 -3
  48. package/dist/lib/features/onboarding/createOnboardingReadModel.d.ts.map +1 -1
  49. package/dist/lib/features/onboarding/createOnboardingReadModel.js +2 -2
  50. package/dist/lib/features/onboarding/createOnboardingReadModel.js.map +1 -1
  51. package/dist/lib/features/onboarding/onboarding-read-model.d.ts +3 -1
  52. package/dist/lib/features/onboarding/onboarding-read-model.d.ts.map +1 -1
  53. package/dist/lib/features/onboarding/onboarding-read-model.js +17 -2
  54. package/dist/lib/features/onboarding/onboarding-read-model.js.map +1 -1
  55. package/dist/lib/features/personal-dashboard/createPersonalDashboardService.js +1 -1
  56. package/dist/lib/features/personal-dashboard/createPersonalDashboardService.js.map +1 -1
  57. package/dist/lib/features/project/createProjectService.js +1 -1
  58. package/dist/lib/features/project/createProjectService.js.map +1 -1
  59. package/dist/lib/features/project/projects.e2e.test.js +48 -0
  60. package/dist/lib/features/project/projects.e2e.test.js.map +1 -1
  61. package/dist/lib/features/scheduler/scheduler-service.test.js +2 -2
  62. package/dist/lib/features/scheduler/scheduler-service.test.js.map +1 -1
  63. package/dist/lib/features/settings/createSettingService.d.ts +6 -0
  64. package/dist/lib/features/settings/createSettingService.d.ts.map +1 -0
  65. package/dist/lib/features/settings/createSettingService.js +15 -0
  66. package/dist/lib/features/settings/createSettingService.js.map +1 -0
  67. package/dist/{test/fixtures → lib/features/settings}/fake-setting-store.d.ts +1 -1
  68. package/dist/lib/features/settings/fake-setting-store.d.ts.map +1 -0
  69. package/dist/lib/features/settings/fake-setting-store.js.map +1 -0
  70. package/dist/lib/{services → features/settings}/setting-service.d.ts +4 -4
  71. package/dist/lib/features/settings/setting-service.d.ts.map +1 -0
  72. package/dist/lib/features/settings/setting-service.e2e.test.d.ts +2 -0
  73. package/dist/lib/features/settings/setting-service.e2e.test.d.ts.map +1 -0
  74. package/dist/{test/e2e/services/setting-service.test.js → lib/features/settings/setting-service.e2e.test.js} +7 -7
  75. package/dist/lib/features/settings/setting-service.e2e.test.js.map +1 -0
  76. package/dist/lib/{services → features/settings}/setting-service.js +2 -2
  77. package/dist/lib/features/settings/setting-service.js.map +1 -0
  78. package/dist/lib/{db → features/settings}/setting-store.d.ts +3 -3
  79. package/dist/lib/features/settings/setting-store.d.ts.map +1 -0
  80. package/dist/lib/features/settings/setting-store.e2e.test.d.ts.map +1 -0
  81. package/dist/{test/e2e/stores → lib/features/settings}/setting-store.e2e.test.js +2 -2
  82. package/dist/lib/features/settings/setting-store.e2e.test.js.map +1 -0
  83. package/dist/lib/features/settings/setting-store.js.map +1 -0
  84. package/dist/lib/{types/stores/settings-store.d.ts → features/settings/settings-store-type.d.ts} +2 -2
  85. package/dist/lib/features/settings/settings-store-type.d.ts.map +1 -0
  86. package/dist/lib/features/settings/settings-store-type.js +2 -0
  87. package/dist/lib/features/settings/settings-store-type.js.map +1 -0
  88. package/dist/lib/features/users/createUserService.d.ts.map +1 -1
  89. package/dist/lib/features/users/createUserService.js +3 -4
  90. package/dist/lib/features/users/createUserService.js.map +1 -1
  91. package/dist/lib/middleware/cors-origin-middleware.test.js +1 -1
  92. package/dist/lib/middleware/cors-origin-middleware.test.js.map +1 -1
  93. package/dist/lib/openapi/spec/context-query-parameters.d.ts +1 -1
  94. package/dist/lib/openapi/spec/context-query-parameters.d.ts.map +1 -1
  95. package/dist/lib/openapi/spec/event-schema.d.ts +1 -1
  96. package/dist/lib/openapi/spec/event-search-response-schema.d.ts +1 -1
  97. package/dist/lib/openapi/spec/events-schema.d.ts +1 -1
  98. package/dist/lib/openapi/spec/feature-events-schema.d.ts +1 -1
  99. package/dist/lib/openapi/spec/integration-event-schema.d.ts +1 -1
  100. package/dist/lib/openapi/spec/integration-events-schema.d.ts +2 -2
  101. package/dist/lib/openapi/spec/personal-dashboard-project-details-schema.d.ts +1 -1
  102. package/dist/lib/openapi/spec/project-overview-schema.d.ts +1 -1
  103. package/dist/lib/openapi/spec/project-overview-schema.d.ts.map +1 -1
  104. package/dist/lib/openapi/spec/project-overview-schema.js +5 -1
  105. package/dist/lib/openapi/spec/project-overview-schema.js.map +1 -1
  106. package/dist/lib/server-impl.d.ts +4 -4
  107. package/dist/lib/server-impl.d.ts.map +1 -1
  108. package/dist/lib/server-impl.js +2 -2
  109. package/dist/lib/server-impl.js.map +1 -1
  110. package/dist/lib/services/index.d.ts +1 -1
  111. package/dist/lib/services/index.d.ts.map +1 -1
  112. package/dist/lib/services/index.js +1 -1
  113. package/dist/lib/services/index.js.map +1 -1
  114. package/dist/lib/services/scheduler-service.test.js +2 -2
  115. package/dist/lib/services/scheduler-service.test.js.map +1 -1
  116. package/dist/lib/services/user-service.d.ts +1 -1
  117. package/dist/lib/services/user-service.d.ts.map +1 -1
  118. package/dist/lib/services/user-service.test.js +2 -2
  119. package/dist/lib/services/user-service.test.js.map +1 -1
  120. package/dist/lib/types/experimental.d.ts +1 -1
  121. package/dist/lib/types/experimental.d.ts.map +1 -1
  122. package/dist/lib/types/experimental.js +4 -3
  123. package/dist/lib/types/experimental.js.map +1 -1
  124. package/dist/lib/types/model.d.ts +1 -1
  125. package/dist/lib/types/model.d.ts.map +1 -1
  126. package/dist/lib/types/stores/client-applications-store.d.ts +1 -0
  127. package/dist/lib/types/stores/client-applications-store.d.ts.map +1 -1
  128. package/dist/lib/types/stores/event-store.d.ts +3 -2
  129. package/dist/lib/types/stores/event-store.d.ts.map +1 -1
  130. package/dist/lib/types/stores.d.ts +1 -1
  131. package/dist/lib/types/stores.d.ts.map +1 -1
  132. package/dist/lib/util/postgres-version-checker.test.js +1 -1
  133. package/dist/lib/util/postgres-version-checker.test.js.map +1 -1
  134. package/dist/server-dev.js +1 -1
  135. package/dist/server-dev.js.map +1 -1
  136. package/dist/test/e2e/api/auth/reset-password-controller.e2e.test.js +2 -2
  137. package/dist/test/e2e/api/auth/reset-password-controller.e2e.test.js.map +1 -1
  138. package/dist/test/e2e/api/auth/simple-password-provider.e2e.test.js +1 -1
  139. package/dist/test/e2e/api/auth/simple-password-provider.e2e.test.js.map +1 -1
  140. package/dist/test/e2e/services/reset-token-service.e2e.test.js +2 -2
  141. package/dist/test/e2e/services/reset-token-service.e2e.test.js.map +1 -1
  142. package/dist/test/e2e/services/user-service.e2e.test.js +1 -1
  143. package/dist/test/e2e/services/user-service.e2e.test.js.map +1 -1
  144. package/dist/test/e2e/stores/event-store.e2e.test.js +28 -4
  145. package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
  146. package/dist/test/e2e/users/inactive/inactive-users-service.test.js +1 -1
  147. package/dist/test/e2e/users/inactive/inactive-users-service.test.js.map +1 -1
  148. package/dist/test/fixtures/fake-client-applications-store.d.ts +1 -0
  149. package/dist/test/fixtures/fake-client-applications-store.d.ts.map +1 -1
  150. package/dist/test/fixtures/fake-client-applications-store.js +3 -0
  151. package/dist/test/fixtures/fake-client-applications-store.js.map +1 -1
  152. package/dist/test/fixtures/fake-event-store.d.ts +3 -2
  153. package/dist/test/fixtures/fake-event-store.d.ts.map +1 -1
  154. package/dist/test/fixtures/fake-event-store.js +3 -2
  155. package/dist/test/fixtures/fake-event-store.js.map +1 -1
  156. package/dist/test/fixtures/fake-impact-metrics.d.ts +2 -7
  157. package/dist/test/fixtures/fake-impact-metrics.d.ts.map +1 -1
  158. package/dist/test/fixtures/fake-impact-metrics.js.map +1 -1
  159. package/dist/test/fixtures/store.js +1 -1
  160. package/dist/test/fixtures/store.js.map +1 -1
  161. package/dist/test-setup.d.ts.map +1 -1
  162. package/dist/test-setup.js +3 -1
  163. package/dist/test-setup.js.map +1 -1
  164. package/frontend/build/index.html +2 -2
  165. package/frontend/build/static/AdvancedPlayground-V8umnmfG.js +3 -0
  166. package/frontend/build/static/BackendConnections-Cnrrjtsn.js +1 -0
  167. package/frontend/build/static/CreateProject-e6oazDvk.js +1 -0
  168. package/frontend/build/static/EnterpriseEdge-DBAPcWwZ.js +6 -0
  169. package/frontend/build/static/FeatureMetricsChart-CKOQrO5t.js +2 -0
  170. package/frontend/build/static/FeatureStaleDialog-BfIPQAKa.js +689 -0
  171. package/frontend/build/static/FeatureViewLazyExport-TYU7Gf7Q.js +11 -0
  172. package/frontend/build/static/FlagMetricsChart-D1Fksr08.js +2 -0
  173. package/frontend/build/static/FrontendNetworkTrafficUsage-NjIKHiwN.js +1 -0
  174. package/frontend/build/static/GridLayoutWrapper-CN2Zeusb.js +3 -0
  175. package/frontend/build/static/ImpactMetricsPage-PU6tVGs8.js +1 -0
  176. package/frontend/build/static/LazyAdminExport-7jFrQoFr.js +38 -0
  177. package/frontend/build/static/LazyProjectExport-DUuBB2EA.js +46 -0
  178. package/frontend/build/static/LifecycleChartComponent-LoQvj2mM.js +2 -0
  179. package/frontend/build/static/LineChartComponent-C2nacZSy.js +1 -0
  180. package/frontend/build/static/MarkCompletedDialogue-x4B5vgpn.js +1 -0
  181. package/frontend/build/static/NetworkOverview-DRDwkRie.js +1 -0
  182. package/frontend/build/static/NetworkPrometheusAPIWarning-DxrGyF-4.js +1 -0
  183. package/frontend/build/static/NetworkTraffic-DBNI6tQ4.js +1 -0
  184. package/frontend/build/static/NetworkTrafficUsage-Cp7LXHBW.js +1 -0
  185. package/frontend/build/static/PercentageDonut-DxYx2sDT.js +1 -0
  186. package/frontend/build/static/ReactJSONEditor-EiPmcfsb.js +3846 -0
  187. package/frontend/build/static/RoleCell-DPCs9tBq.js +1 -0
  188. package/frontend/build/static/Safeguard-B2SRkWlK.js +1 -0
  189. package/frontend/build/static/aggregateFeatureMetrics-B--WhUm6.js +1 -0
  190. package/frontend/build/static/chart-BMc0j_v5.js +3 -0
  191. package/frontend/build/static/chartjs-plugin-annotation.esm-CII-nIyK.js +1 -0
  192. package/frontend/build/static/daysOrHours-CWsdHL8Z.js +1 -0
  193. package/frontend/build/static/dist-CYYjHgCS.js +12 -0
  194. package/frontend/build/static/enterpriseEdgeCloud-DI6o2DkU.js +1 -0
  195. package/frontend/build/static/formatTickValue-DHdXPo89.js +1 -0
  196. package/frontend/build/static/helpers-Dz6x6iMP.js +1 -0
  197. package/frontend/build/static/index-B0RbDPtk.js +403 -0
  198. package/frontend/build/static/jsx-runtime-ButemYzH.js +1 -0
  199. package/frontend/build/static/networkTrafficUsageHighlightPlugin-ecHJHisK.js +1 -0
  200. package/frontend/build/static/objectId-D7ukzTLu.js +1 -0
  201. package/frontend/build/static/style-D9DNbuD5.css +2 -0
  202. package/frontend/build/static/toDate-zSA17Csy.js +1 -0
  203. package/frontend/build/static/unknownify-D1gvOkgV.js +1 -0
  204. package/frontend/build/static/useApiTokens-Cl4y9yhp.js +1 -0
  205. package/frontend/build/static/useInstanceTrafficMetrics--5pof2Er.js +1 -0
  206. package/frontend/build/static/vanilla-picker-DhahMYgI.js +2 -0
  207. package/frontend/package.json +18 -15
  208. package/package.json +9 -9
  209. package/dist/lib/db/setting-store.d.ts.map +0 -1
  210. package/dist/lib/db/setting-store.js.map +0 -1
  211. package/dist/lib/services/setting-service.d.ts.map +0 -1
  212. package/dist/lib/services/setting-service.js.map +0 -1
  213. package/dist/lib/types/stores/settings-store.d.ts.map +0 -1
  214. package/dist/lib/types/stores/settings-store.js +0 -2
  215. package/dist/lib/types/stores/settings-store.js.map +0 -1
  216. package/dist/test/e2e/services/setting-service.test.d.ts +0 -2
  217. package/dist/test/e2e/services/setting-service.test.d.ts.map +0 -1
  218. package/dist/test/e2e/services/setting-service.test.js.map +0 -1
  219. package/dist/test/e2e/stores/setting-store.e2e.test.d.ts.map +0 -1
  220. package/dist/test/e2e/stores/setting-store.e2e.test.js.map +0 -1
  221. package/dist/test/fixtures/fake-setting-store.d.ts.map +0 -1
  222. package/dist/test/fixtures/fake-setting-store.js.map +0 -1
  223. package/frontend/build/static/24_Text format off-fTw1GZh5.svg +0 -3
  224. package/frontend/build/static/24_Text format-CsA8QQJI.svg +0 -3
  225. package/frontend/build/static/AdvancedPlayground-BTPrG6RW.js +0 -3
  226. package/frontend/build/static/BackendConnections-CRh8Vxoe.js +0 -1
  227. package/frontend/build/static/CreateProject-DEMalH1j.js +0 -1
  228. package/frontend/build/static/EnterpriseEdge-Cp-pGMa0.js +0 -6
  229. package/frontend/build/static/FeatureMetricsChart-DQOE71LA.js +0 -2
  230. package/frontend/build/static/FeatureStaleDialog-B6BfnDiQ.js +0 -689
  231. package/frontend/build/static/FeatureViewLazyExport-BkNTNFqK.js +0 -10
  232. package/frontend/build/static/FlagMetricsChart-zYDF9bet.js +0 -2
  233. package/frontend/build/static/FrontendNetworkTrafficUsage-CbxdFXH7.js +0 -1
  234. package/frontend/build/static/GridLayoutWrapper-Cq6Bzm36.js +0 -3
  235. package/frontend/build/static/ImpactMetricsPage-CFYXYXPb.js +0 -1
  236. package/frontend/build/static/LazyAdminExport-ByTh4iFa.js +0 -38
  237. package/frontend/build/static/LazyProjectExport-K12Xy3w9.js +0 -46
  238. package/frontend/build/static/LifecycleChartComponent-DHvlFNd2.js +0 -7
  239. package/frontend/build/static/LineChartComponent-BlhKm3cw.js +0 -1
  240. package/frontend/build/static/MarkCompletedDialogue-apmlFjVY.js +0 -1
  241. package/frontend/build/static/NetworkOverview-BiLOuQ4c.js +0 -1
  242. package/frontend/build/static/NetworkPrometheusAPIWarning-CYo3j2Tj.js +0 -1
  243. package/frontend/build/static/NetworkTraffic-DONL5oIx.js +0 -1
  244. package/frontend/build/static/NetworkTrafficUsage-DjQiYq0S.js +0 -1
  245. package/frontend/build/static/PercentageDonut-CA9hYg3v.js +0 -1
  246. package/frontend/build/static/ReactJSONEditor-9cJL1vJY.js +0 -3864
  247. package/frontend/build/static/RoleCell-ZzU5Oqy8.js +0 -1
  248. package/frontend/build/static/Safeguard-DY1N4aPz.js +0 -1
  249. package/frontend/build/static/aggregateFeatureMetrics-D6bHft_C.js +0 -1
  250. package/frontend/build/static/arrowLeft-CLDXfK18.svg +0 -10
  251. package/frontend/build/static/arrowRight-CPIADLBv.svg +0 -10
  252. package/frontend/build/static/case-insensitive-CuU5weZd.svg +0 -1
  253. package/frontend/build/static/case-sensitive-D19NntKP.svg +0 -1
  254. package/frontend/build/static/changeRequestProcessWithSchedule-BmvIIWQK.svg +0 -1
  255. package/frontend/build/static/constraint-equals-giGu3HWQ.svg +0 -1
  256. package/frontend/build/static/constraint-not-equals-CJGG9pRv.svg +0 -1
  257. package/frontend/build/static/docker-HG7DQx-Z.svg +0 -5
  258. package/frontend/build/static/email-D1NVbpvG.svg +0 -17
  259. package/frontend/build/static/enterpriseEdgeCloud-DzRtm8v6.svg +0 -58
  260. package/frontend/build/static/enterpriseEdgeSelfHosted-4bnmOQVF.svg +0 -44
  261. package/frontend/build/static/formatTickValue-BcLsqREh.js +0 -6
  262. package/frontend/build/static/heart-FRDdnX3J.svg +0 -3
  263. package/frontend/build/static/impact-metrics-icon-a6_57VN1.svg +0 -9
  264. package/frontend/build/static/import-zkumD9Zv.svg +0 -3
  265. package/frontend/build/static/index-B87DWXbl.js +0 -12
  266. package/frontend/build/static/index-CoLhlfXP.js +0 -565
  267. package/frontend/build/static/instance-health-BtMrnXEj.svg +0 -5
  268. package/frontend/build/static/isenabled-false-Bx8bRzGD.svg +0 -5
  269. package/frontend/build/static/isenabled-true-BARsh3fa.svg +0 -5
  270. package/frontend/build/static/lenovo-DIzNtfrT.svg +0 -3
  271. package/frontend/build/static/lloyds-DxlC9g3t.svg +0 -10
  272. package/frontend/build/static/logo-BpeRJ1SV.svg +0 -7
  273. package/frontend/build/static/logoBg-DDUbF9lh.svg +0 -1
  274. package/frontend/build/static/logoDark-CknUTJYV.svg +0 -1
  275. package/frontend/build/static/logoDarkWithText-D0ImZCxR.svg +0 -1
  276. package/frontend/build/static/logoWhiteBg-CwoWCg7m.svg +0 -1
  277. package/frontend/build/static/logoWhiteTransparentHorizontal-5xxVCWh8.svg +0 -1
  278. package/frontend/build/static/logoWithWhiteText-Dz7VvON3.svg +0 -1
  279. package/frontend/build/static/milestone-C0FnRl9y.svg +0 -3
  280. package/frontend/build/static/mobileGuidanceBg-D9dRgnhs.svg +0 -3
  281. package/frontend/build/static/networkTrafficUsageHighlightPlugin-CqEM-cK_.js +0 -1
  282. package/frontend/build/static/new-feature-badge-FwMmHlwT.svg +0 -7
  283. package/frontend/build/static/not_operator_selected-jLHDQXLO.svg +0 -5
  284. package/frontend/build/static/not_operator_unselected-C-130FKT.svg +0 -3
  285. package/frontend/build/static/pro-enterprise-feature-badge-PZ3Bfajk.svg +0 -7
  286. package/frontend/build/static/pro-enterprise-feature-badge-light-k8Z592E8.svg +0 -6
  287. package/frontend/build/static/projectIconSmall-USf1kO_6.svg +0 -5
  288. package/frontend/build/static/projectStatus-BQym9o3t.svg +0 -3
  289. package/frontend/build/static/releaseTemplates-GIHEC4g-.svg +0 -39
  290. package/frontend/build/static/rollout-DAvS9K1l.svg +0 -4
  291. package/frontend/build/static/samsung-DOytOsnV.svg +0 -10
  292. package/frontend/build/static/signals-Bg0cQEqp.svg +0 -21
  293. package/frontend/build/static/stage-archived-DVpSnWM_.svg +0 -12
  294. package/frontend/build/static/stage-completed-BqA7cOHN.svg +0 -10
  295. package/frontend/build/static/stage-created-IXXGyXPL.svg +0 -5
  296. package/frontend/build/static/stage-live-CnCQFmyK.svg +0 -9
  297. package/frontend/build/static/stage-prelive-BLsuhDY7.svg +0 -7
  298. package/frontend/build/static/stars-C5lq_xha.svg +0 -9
  299. package/frontend/build/static/strategyCustom-Db-ZtYWl.svg +0 -23
  300. package/frontend/build/static/strategyDefault-LnSyH2eZ.svg +0 -17
  301. package/frontend/build/static/strategyGradual-oCA99tj3.svg +0 -18
  302. package/frontend/build/static/strategyHosts-4lVYC2Bf.svg +0 -23
  303. package/frontend/build/static/strategyIPs-BHaXsOYV.svg +0 -24
  304. package/frontend/build/static/strategyOn-CX-xL0oK.svg +0 -18
  305. package/frontend/build/static/style-BfdqROT6.css +0 -1
  306. package/frontend/build/static/unknownify-B7hmSXnj.js +0 -1
  307. package/frontend/build/static/unleashHoliday-CQEG77-1.svg +0 -33
  308. package/frontend/build/static/unleashHolidayDark-B9sYfzSK.svg +0 -33
  309. package/frontend/build/static/usage-line-BHicDx-Y.svg +0 -3
  310. package/frontend/build/static/usage-rate-DnXQhqDI.svg +0 -3
  311. package/frontend/build/static/useApiTokens-ClWvohC9.js +0 -1
  312. package/frontend/build/static/vanilla-picker-B6E6ObS_.js +0 -8
  313. package/frontend/build/static/visa-CkneNM2O.svg +0 -10
  314. /package/dist/{test/fixtures → lib/features/settings}/fake-setting-store.js +0 -0
  315. /package/dist/{test/e2e/stores → lib/features/settings}/setting-store.e2e.test.d.ts +0 -0
  316. /package/dist/lib/{db → features/settings}/setting-store.js +0 -0
@@ -0,0 +1,2 @@
1
+ import{n as e,s as t,t as n}from"./jsx-runtime-ButemYzH.js";import{_ as r,a as i,g as a,h as o,i as s,o as c,u as l}from"./chart-BMc0j_v5.js";import{Cd as u,Cs as d,Ua as f,Xs as p,Xu as m,bc as h,do as g,jt as _,rd as v,vs as y,xc as b,xd as x,yc as S}from"./index-B0RbDPtk.js";import{t as C}from"./chartjs-plugin-annotation.esm-CII-nIyK.js";import{t as w}from"./formatTickValue-DHdXPo89.js";import{i as T,t as E}from"./MarkCompletedDialogue-x4B5vgpn.js";import{i as D,n as O,r as k,t as A}from"./aggregateFeatureMetrics-B--WhUm6.js";var j=t(e()),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,boxPadding:5}},tooltip:{enabled:!1}},responsive:!0,maintainAspectRatio:!1,scales:{x:{stacked:!0,ticks:{display:!1},grid:{display:!1}},y:{stacked:!0,ticks:{maxTicksLimit:5,display:!1},grid:{drawBorder:!1,color:e.palette.divider}}},elements:{bar:{borderRadius:5}},interaction:{mode:`index`,intersect:!1}}),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,boxPadding:5}},annotation:{clip:!1,annotations:{}},tooltip:{backgroundColor:e.palette.background.paper,titleColor:e.palette.text.primary,bodyColor:e.palette.text.primary,bodySpacing:6,padding:{top:20,bottom:20,left:30,right:30},borderColor:`rgba(0, 0, 0, 0.05)`,borderWidth:3,usePointStyle:!0,caretSize:0,boxPadding:10,callbacks:{label: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?b(e[0].label,n.locale,`UTC`):S(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?h(r,n.locale,`UTC`):S(r,n.locale)}}},y:{...o?.y??{},ticks:{...o?.y?.ticks??{},color:e.palette.text.secondary,callback:w,display:!0}}},elements:i,interaction:a}},L=n(),R=({project:e,flagName:t,onArchive:n,className:r})=>{let{feature:i,refetchFeature:a}=f(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)(m,{sx:{display:`flex`},className:r,children:[(0,L.jsx)(y,{sx:{pt:0,pb:0},featureLastSeen:i.lastSeenAt,environments:o}),(0,L.jsx)(g,{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=x(`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)(v,{id:i,children:e}),(0,L.jsx)(V,{children:(0,L.jsx)(_,{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)(_,{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}=f(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}=p();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)(d,{name:`feature-environments`,label:`Environment`,id:`feature-environments`,options:e.map(e=>({key:e.name,label:e.name})),value:String(t),onChange:n}),q=x(m)(({theme:e})=>({display:`flex`,justifyContent:`flex-start`,flexFlow:`row wrap`,gap:e.spacing(2)})),J=x(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(3),alignItems:`center`,height:`100%`,justifyContent:`space-between`})),Y=x(R)({alignItems:`center`,justifySelf:`start`}),X=x(`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)(_,{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});c.register(C,i,l,s,a,r,o);export{$ as FlagMetricsChart,Z as PlaceholderFlagMetricsChartWithWrapper};
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-ButemYzH.js";import{_ as t,a as n,g as r,h as i,i as a,o,u as s}from"./chart-BMc0j_v5.js";import{$l as c,Us as l,Xu as u,id as d,jt as f,kc as p}from"./index-B0RbDPtk.js";import{a as m,i as h,l as g,n as _,s as v,t as y,u as b}from"./networkTrafficUsageHighlightPlugin-ecHJHisK.js";import{t as x}from"./chartjs-plugin-annotation.esm-CII-nIyK.js";var S=e(),C=()=>{l(`Network - Frontend Traffic Usage`);let{isOss:e}=p(),{chartDataSelection:t,setChartDataSelection:n,options:r}=_(),{chartData:i}=v(t);return(0,S.jsx)(c,{condition:e(),show:(0,S.jsx)(d,{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)(u,{children:(0,S.jsx)(d,{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)(f,{data:i,plugins:[y],options:r,"aria-label":g(t)})]})})})};o.register(x,n,s,a,r,t,i);export{C as default};
@@ -0,0 +1,3 @@
1
+ import{a as e,i as t,n,o as r,r as i,s as a,t as o}from"./jsx-runtime-ButemYzH.js";import{$u as s,A as c,Bc as l,Cd as u,D as d,Fa as f,Fc as p,Gu as m,Hd as h,I as g,Ia as _,Iu as v,Ls as y,M as b,Ms as x,Ol as S,P as C,R as w,Ta as T,Tc as E,Xu as D,Yu as O,ed as k,id as A,k as j,pd as M,qi as N,qo as P,qu as F,rd as I,rf as L,tf as ee,uu as R,wc as z,wu as B,xd as V,zu as te}from"./index-B0RbDPtk.js";var H=o(),ne=({formData:e,actions:t,metrics:n,loading:r,labelsFilter:i})=>{let{pathname:a}=ee(),o=a.includes(`/impact-metrics`)?`impact-metrics-page`:`flag-impact-metrics-accordion`;return(0,H.jsxs)(D,{children:[(0,H.jsxs)(D,{sx:e=>({display:`flex`,flexDirection:`column`,gap:e.spacing(3)}),children:[(0,H.jsx)(d,{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)(B,{value:`hour`,children:`Last hour`}),(0,H.jsx)(B,{value:`day`,children:`Last 24 hours`}),(0,H.jsx)(B,{value:`week`,children:`Last 7 days`}),(0,H.jsx)(B,{value:`month`,children:`Last 30 days`})]}),(0,H.jsx)(j,{value:e.aggregationMode,onChange:t.setAggregationMode,metricType:e.metricType})]}):null]}),e.metricName?(0,H.jsx)(te,{sx:e=>({margin:e.spacing(1.5,0)}),control:(0,H.jsx)(F,{checked:e.yAxisMin===`zero`,onChange:e=>t.setYAxisMin(e.target.checked?`zero`:`auto`)}),label:`Begin at zero`}):null]})},U=a(n(),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||{}),[f,p]=(0,U.useState)(t?.aggregationMode||C(g(i))),[m,h]=(0,U.useState)(t?.source),{data:{labels:_}}=w(i?{metricName:i,range:o,aggregationMode:f,source:m,mode:`edit`}:void 0);(0,U.useEffect)(()=>{e&&t?(r(t.title||``),a(t.metricName),s(t.timeRange),l(t.yAxisMin),d(t.labelSelectors),p(t.aggregationMode||C(g(t.metricName))),h(t.source)):e&&!t&&(r(``),a(``),s(`day`),l(`auto`),d({}),p(`count`),h(void 0))},[e,t]);let v=e=>{a(e.metricName),h(e.source),d({});let t=g(e.metricName);t!==`unknown`&&p(C(t))},y=()=>({title:n||void 0,metricName:i,timeRange:o,yAxisMin:c,labelSelectors:u,aggregationMode:f,source:m}),b=i.length>0,x=g(i,_?.metric_type);return(0,U.useEffect)(()=>{i!==t?.metricName&&x!==`unknown`&&p(C(x))},[i,x]),{formData:{title:n,metricName:i,metricType:x,timeRange:o,yAxisMin:c,aggregationMode:f,labelSelectors:u,source:m},actions:{setTitle:r,setMetricName:a,setTimeRange:s,setYAxisMin:l,setAggregationMode:p,setLabelSelectors:d,handleSeriesChange:v,getConfigToSave:y},isValid:b,currentAvailableLabels:_}},ie=()=>{let e=`api/admin/impact-metrics/config`,{data:t,refetch:n,loading:r,error:i}=E(S(e),()=>z(S(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)(s,{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)(F,{size:`small`,checked:t===`*`?i:n,style:{marginRight:8}}),t===`*`?(0,H.jsx)(I,{component:`span`,sx:{color:`text.secondary`},children:`Select all`}):t]},r||t)},renderTags:(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)(k,{...i,key:r,label:e,size:`small`})}),r>0?(0,H.jsxs)(I,{component:`span`,sx:{color:`text.secondary`},children:[` `,`(+`,r,`)`]}):null]})},renderInput:t=>(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(R,{...t,label:e,placeholder:i?void 0:`Select values…`,variant:`outlined`,size:`small`,inputProps:{...t.inputProps}}),o&&(0,H.jsx)(A,{severity:`warning`,sx:e=>({padding:e.spacing(1,2),marginTop:e.spacing(1)}),children:`Maximum of 1000 values loaded due to performance.`})]})})},ce=V(D)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(1),width:`100%`})),le=V(D)(({theme:e})=>({width:`100%`,display:`flex`,alignItems:`center`,gap:e.spacing(1)})),ue=V(D)(({theme:e})=>({display:`grid`,gridTemplateColumns:`repeat(auto-fill, minmax(250px, 1fr))`,gap:e.spacing(2),flexGrow:1})),de=V(D)({display:`flex`,flexDirection:`column`,flexGrow:1}),fe=V(I)({lineHeight:1.5,height:`24px`}),pe=V(k)(({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)(D,{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=V(m)(({theme:e})=>({"& .MuiDialog-paper":{borderRadius:e.shape.borderRadiusLarge,maxWidth:e.spacing(170),width:`100%`,backgroundColor:`transparent`},padding:0,"& .MuiPaper-root > section":{overflowX:`hidden`}})),ve=V(`form`)({display:`flex`,flexDirection:`column`,height:`100%`}),ye=V(`h1`)(({theme:e})=>({fontWeight:`normal`,fontSize:e.typography.h1.fontSize,margin:0})),be=V(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(3),padding:e.spacing(6),flexGrow:1,minHeight:600})),xe=V(`div`)(({theme:e})=>({display:`flex`,gap:e.spacing(3),justifyContent:`flex-end`,padding:e.spacing(4,6),borderTop:`1px solid ${e.palette.divider}`})),Se=V(I)(({theme:e})=>({fontWeight:e.typography.fontWeightBold,color:e.palette.common.white,marginBottom:e.spacing(1)})),Ce=V(`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=V(I)(({theme:e})=>({fontWeight:e.typography.fontWeightBold,color:e.palette.common.white,marginBottom:e.spacing(1.5)})),Te=V(D)(({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:d}=re({open:e,initialConfig:r}),f=v(u().breakpoints.down(`lg`)),{trackEvent:p}=y(),m=()=>{c&&(n(s.getConfigToSave()),p(`impact-metrics`,{props:{eventType:`chart added`}}),t())};return(0,H.jsx)(_e,{open:e,onClose:t,children:(0,H.jsx)(N,{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/reference/impact-metrics`,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{p(`impact-metrics`,{props:{eventType:`sidebar docs clicked`}})},children:[(0,H.jsx)(l,{fontSize:`small`}),`Learn how to use impact metrics`]}),(0,H.jsxs)(D,{sx:{mt:3},children:[(0,H.jsx)(we,{children:`Preview chart`}),(0,H.jsx)(Te,{children:(0,H.jsx)(b,{metricName:o.metricName,timeRange:o.timeRange,labelSelectors:o.labelSelectors,yAxisMin:o.yAxisMin,aggregationMode:o.aggregationMode,source:o.source,isPreview:!0},f?`small`:`large`)})]})]}),showLink:!1,sidebarWidth:`55%`,children:(0,H.jsxs)(ve,{onSubmit:e=>{e.preventDefault(),m()},children:[(0,H.jsxs)(be,{children:[(0,H.jsx)(ye,{children:r?`Edit impact metric`:`Add impact metric`}),(0,H.jsx)(R,{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:d?(0,H.jsx)(ge,{labelSelectors:o.labelSelectors,onChange:s.setLabelSelectors,availableLabels:d}):null})]}),(0,H.jsxs)(xe,{children:[(0,H.jsx)(O,{onClick:t,children:`Cancel`}),(0,H.jsx)(O,{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=V(M)(({theme:e})=>({borderRadius:`${e.shape.borderRadiusMedium}px`,boxShadow:`none`,display:`flex`,flexDirection:`column`,height:`100%`})),ke=V(D)({flex:1,display:`flex`,flexDirection:`column`,minHeight:0}),Ae=V(D)(({theme:e})=>({position:`relative`,minWidth:0,flexGrow:1,height:`100%`,display:`flex`,flexDirection:`column`,margin:`auto 0`,padding:e.spacing(3)})),je=V(D)(({theme:e})=>({display:`flex`,gap:e.spacing(1),alignItems:`center`,padding:e.spacing(1.5,2),borderBottom:`1px solid ${e.palette.divider}`})),Me=V(D)(({theme:e})=>({display:`flex`,flexDirection:`column`,justifyContent:`flex-end`,flexGrow:1,overflow:`hidden`,textOverflow:`ellipsis`})),Ne=V(D)(({theme:e})=>({marginLeft:`auto`,display:`flex`,alignItems:`center`,gap:e.spacing(.5)})),Pe=V(p)(({theme:e})=>({alignSelf:`start`,color:e.palette.primary.main,marginTop:e.spacing(.25)})),Fe=({config:e,onEdit:t,onDelete:n,permission:r=P,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)(I,{variant:`h3`,children:e.title}),(0,H.jsx)(I,{variant:`body2`,color:`text.secondary`,children:De(e)})]}),o,e.mode!==`read`&&(0,H.jsxs)(Ne,{children:[(0,H.jsx)(_,{onClick:()=>t(e),permission:r,projectId:i,tooltipProps:{title:`Edit chart`},children:(0,H.jsx)(f,{})}),(0,H.jsx)(_,{onClick:()=>n(e.id),permission:r,projectId:i,tooltipProps:{title:`Remove chart`},children:(0,H.jsx)(T,{})})]})]}),(0,H.jsx)(ke,{children:(0,H.jsx)(Ae,{children:(0,H.jsx)(b,{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=i(((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 ee=_(r(j,{createIsNestedEqual:function(){return o}}));function R(e,t){return ee(e,t,new WeakMap)}function z(e){return _(r(A,e(A)))}function B(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=R,e.createCustomCircularEqual=B,e.createCustomEqual=z,e.deepEqual=N,e.sameValueZeroEqual=o,e.shallowEqual=F,Object.defineProperty(e,`__esModule`,{value:!0})}))})),G=i(((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=i(((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=i((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=R,e.setTopLeft=B,e.setTransform=z,e.sortLayoutItems=V,e.sortLayoutItemsByColRow=H,e.sortLayoutItemsByRowCol=te,e.synchronizeLayoutWithChildren=ne,e.validateLayout=U,e.withLayoutItem=p;var t=W(),r=i(n());function i(e){return e&&e.__esModule?e:{default:e}}function a(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?a(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(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,n){return(0,t.deepEqual)(r.default.Children.map(e,e=>e?.key),r.default.Children.map(n,e=>e?.key))&&(0,t.deepEqual)(r.default.Children.map(e,e=>e?.props[`data-grid`]),r.default.Children.map(n,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)}},ee={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 R(e,t,n,r){let i=ee[e];return i?i(t,o(o({},t),n),r):n}function z(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 B(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,n,i,a){e||=[];let s=[];r.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:n});return a?c:v(c,i,n)}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=i((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=i((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=i((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=i((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=i((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=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=t;function t(){}})),Ve=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=u(n()),r=l(h()),i=l(L()),a=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`}},g=m.mouse,_=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,a.matchesSelectorAndParentsTo)(e.target,this.props.handle,t)||this.props.cancel&&(0,a.matchesSelectorAndParentsTo)(e.target,this.props.cancel,t))return;e.type===`touchstart`&&!this.props.allowMobileScroll&&e.preventDefault();let r=(0,a.getTouchIdentifier)(e);this.touchIdentifier=r;let i=(0,o.getControlPosition)(e,r,this);if(i==null)return;let{x:s,y:l}=i,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,a.addUserSelectStyles)(n),this.dragging=!0,this.lastX=s,this.lastY=l,(0,a.addEvent)(n,g.move,this.handleDrag),(0,a.addEvent)(n,g.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 i=(0,o.createCoreData)(this,n,r);if(this.props.onStop(e,i)===!1||this.mounted===!1)return!1;let s=this.findDOMNode();s&&this.props.enableUserSelectHack&&(0,a.scheduleRemoveUserSelectStyles)(s.ownerDocument),(0,c.default)(`DraggableCore: handleDragStop: %j`,i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,s&&((0,c.default)(`DraggableCore: Removing handlers`),(0,a.removeEvent)(s.ownerDocument,g.move,this.handleDrag),(0,a.removeEvent)(s.ownerDocument,g.stop,this.handleDragStop))}),d(this,`onMouseDown`,e=>(g=m.mouse,this.handleDragStart(e))),d(this,`onMouseUp`,e=>(g=m.mouse,this.handleDragStop(e))),d(this,`onTouchStart`,e=>(g=m.touch,this.handleDragStart(e))),d(this,`onTouchEnd`,e=>(g=m.touch,this.handleDragStop(e)))}componentDidMount(){this.mounted=!0;let e=this.findDOMNode();e&&(0,a.addEvent)(e,m.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;let e=this.findDOMNode();if(e){let{ownerDocument:t}=e;(0,a.removeEvent)(t,m.mouse.move,this.handleDrag),(0,a.removeEvent)(t,m.touch.move,this.handleDrag),(0,a.removeEvent)(t,m.mouse.stop,this.handleDragStop),(0,a.removeEvent)(t,m.touch.stop,this.handleDragStop),(0,a.removeEvent)(e,m.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,a.scheduleRemoveUserSelectStyles)(t)}}findDOMNode(){return this.props?.nodeRef?this.props?.nodeRef?.current:i.default.findDOMNode(this)}render(){return t.cloneElement(t.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};e.default=_,d(_,`displayName`,`DraggableCore`),d(_,`propTypes`,{allowAnyClick:r.default.bool,allowMobileScroll:r.default.bool,children:r.default.node.isRequired,disabled:r.default.bool,enableUserSelectHack:r.default.bool,offsetParent:function(e,t){if(e[t]&&e[t].nodeType!==1)throw Error(`Draggable's offsetParent must be a DOM Node.`)},grid:r.default.arrayOf(r.default.number),handle:r.default.string,cancel:r.default.string,nodeRef:r.default.object,onStart:r.default.func,onDrag:r.default.func,onStop:r.default.func,onMouseDown:r.default.func,scale:r.default.number,className:s.dontSetMe,style:s.dontSetMe,transform:s.dontSetMe}),d(_,`defaultProps`,{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1})})),He=i((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(n()),r=d(h()),i=d(L()),a=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=g(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e){var t=_(e,`string`);return typeof t==`symbol`?t:t+``}function _(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??i.default.findDOMNode(this)}render(){let{axis:e,bounds:n,children:r,defaultPosition:i,defaultClassName:c,defaultClassNameDragging:u,defaultClassNameDragged:d,position:f,positionOffset:m,scale:h,...g}=this.props,_={},v=null,y=!f||this.state.dragging,b=f||i,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,a.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:r.default.oneOf([`both`,`x`,`y`,`none`]),bounds:r.default.oneOfType([r.default.shape({left:r.default.number,right:r.default.number,top:r.default.number,bottom:r.default.number}),r.default.string,r.default.oneOf([!1])]),defaultClassName:r.default.string,defaultClassNameDragging:r.default.string,defaultClassNameDragged:r.default.string,defaultPosition:r.default.shape({x:r.default.number,y:r.default.number}),positionOffset:r.default.shape({x:r.default.oneOfType([r.default.number,r.default.string]),y:r.default.oneOfType([r.default.number,r.default.string])}),position:r.default.shape({x:r.default.number,y:r.default.number}),className: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=i(((e,t)=>{var{default:n,DraggableCore:r}=He();t.exports=n,t.exports.default=n,t.exports.DraggableCore=r})),We=i((e=>{e.__esModule=!0,e.cloneElement=l;var t=r(n());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 a(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){o(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 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=a(a({},e.props.style),n.style)),n.className&&e.props.className&&(n.className=`${e.props.className} ${n.className}`),t.default.cloneElement(e,n)}})),Ge=i((e=>{e.__esModule=!0,e.resizableProps=void 0;var t=n(h());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=i((e=>{e.__esModule=!0,e.default=void 0;var t=s(n()),r=Ue(),i=We(),a=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:n,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,i.cloneElement)(n,f(f({},w),{},{className:`${a?`${a} `:``}react-resizable`,children:[...t.Children.toArray(n.props.children),...S.map(e=>{let n=this.handleRefs[e]??(this.handleRefs[e]=t.createRef());return t.createElement(r.DraggableCore,c({},s,{nodeRef:n,key:`resizableHandle-${e}`,onStop:this.resizeHandler(`onResizeStop`,e),onStart:this.resizeHandler(`onResizeStart`,e),onDrag:this.resizeHandler(`onResize`,e)}),this.renderResizeHandle(e,n))})]}))}};e.default=g,g.propTypes=a.resizableProps,g.defaultProps={axis:`both`,handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:[`se`],transformScale:1}})),qe=i((e=>{e.__esModule=!0,e.default=void 0;var t=c(n()),r=s(h()),i=s(Ke()),a=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 g(e,t){if(e==null)return{};var n,r,i=_(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 _(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 v=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:r,onResize:a,onResizeStart:s,onResizeStop:c,draggableOpts:u,minConstraints:f,maxConstraints:p,lockAspectRatio:m,axis:h,width:_,height:v,resizeHandles:y,style:b,transformScale:x}=e,S=g(e,o);return t.createElement(i.default,{axis:h,draggableOpts:u,handle:n,handleSize:r,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=v,v.propTypes=d(d({},a.resizableProps),{},{children:r.default.element})})),Je=i(((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=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.resizeHandleType=e.resizeHandleAxesType=e.default=void 0;var t=i(h()),r=i(n());function i(e){return e&&e.__esModule?e:{default:e}}var a=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:a,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 n=e[t],i={};r.default.Children.forEach(n,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=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=d(n()),r=L(),i=d(h()),a=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=g(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e){var t=_(e,`string`);return typeof t==`symbol`?t:t+``}function _(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,n)=>{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};n?this.setState({dragging:_}):(0,r.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(a.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,n,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,n,o,g),(0,r.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:i.default.element,cols:i.default.number.isRequired,containerWidth:i.default.number.isRequired,rowHeight:i.default.number.isRequired,margin:i.default.array.isRequired,maxRows:i.default.number.isRequired,containerPadding:i.default.array.isRequired,x:i.default.number.isRequired,y:i.default.number.isRequired,w:i.default.number.isRequired,h:i.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:i.default.string.isRequired,resizeHandles:l.resizeHandleAxesType,resizeHandle:l.resizeHandleType,onDragStop:i.default.func,onDragStart:i.default.func,onDrag:i.default.func,onResizeStop:i.default.func,onResizeStart:i.default.func,onResize:i.default.func,isDraggable:i.default.bool.isRequired,isResizable:i.default.bool.isRequired,isBounded:i.default.bool.isRequired,static:i.default.bool,useCSSTransforms:i.default.bool.isRequired,transformScale:i.default.number,className:i.default.string,handle:i.default.string,cancel:i.default.string,droppingPosition:i.default.shape({e:i.default.object.isRequired,left:i.default.number.isRequired,top:i.default.number.isRequired})}),m(v,`defaultProps`,{className:``,cancel:``,handle:``,minH:1,minW:1,maxH:1/0,maxW:1/0,transformScale:1})})),Ze=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=u(n()),r=W(),i=l(G()),a=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,a.synchronizeLayoutWithChildren)(this.props.layout,this.props.children,this.props.cols,(0,a.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:i,node:o}=r,{layout:s}=this.state,c=(0,a.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,a.cloneLayoutItem)(c),oldLayout:s,activeDrag:l}),this.props.onDragStart(s,c,c,null,i,o)}),p(this,`onDrag`,(e,t,n,r)=>{let{e:i,node:o}=r,{oldDragItem:s}=this.state,{layout:c}=this.state,{cols:l,allowOverlap:u,preventCollision:d}=this.props,f=(0,a.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,a.moveElement)(c,f,t,n,!0,d,(0,a.compactType)(this.props),l,u),this.props.onDrag(c,s,f,p,i,o),this.setState({layout:u?c:(0,a.compact)(c,(0,a.compactType)(this.props),l),activeDrag:p})}),p(this,`onDragStop`,(e,t,n,r)=>{let{e:i,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,a.getLayoutItem)(c,e);if(!f)return;c=(0,a.moveElement)(c,f,t,n,!0,u,(0,a.compactType)(this.props),l,d);let p=d?c:(0,a.compact)(c,(0,a.compactType)(this.props),l);this.props.onDragStop(p,s,f,null,i,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:i,node:o}=r,{layout:s}=this.state,c=(0,a.getLayoutItem)(s,e);c&&(this.setState({oldResizeItem:(0,a.cloneLayoutItem)(c),oldLayout:this.state.layout,resizing:!0}),this.props.onResizeStart(s,c,c,null,i,o))}),p(this,`onResize`,(e,t,n,r)=>{let{e:i,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,a.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,a.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,a.moveElement)(y,b,_,v,!0,this.props.preventCollision,(0,a.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,i,o),this.setState({layout:m?g:(0,a.compact)(g,(0,a.compactType)(this.props),d),activeDrag:x})}),p(this,`onResizeStop`,(e,t,n,r)=>{let{e:i,node:o}=r,{layout:s,oldResizeItem:c}=this.state,{cols:l,allowOverlap:u}=this.props,d=(0,a.getLayoutItem)(s,e),f=u?s:(0,a.compact)(s,(0,a.compactType)(this.props),l);this.props.onResizeStop(f,c,d,null,i,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,a.compact)(n.filter(t=>t.i!==e.i),(0,a.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 n;return t.activeDrag?null:(!(0,r.deepEqual)(e.layout,t.propsLayout)||e.compactType!==t.compactType?n=e.layout:(0,a.childrenEqual)(e.children,t.children)||(n=t.layout),n?{layout:(0,a.synchronizeLayoutWithChildren)(n,e.children,e.cols,(0,a.compactType)(e),e.allowOverlap),compactType:e.compactType,children:e.children,propsLayout:e.layout}:null)}shouldComponentUpdate(e,t){return this.props.children!==e.children||!(0,a.fastRGLPropsEqual)(this.props,e,r.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,a.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,r.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,a.getLayoutItem)(this.state.layout,String(e.key));if(!r)return null;let{width:i,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:i,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:r,innerRef:o}=this.props,s=(0,i.default)(g,e),c=f({height:this.containerHeight()},n);return t.createElement(`div`,{ref:o,className:s,style:c,onDrop:r?this.onDrop:a.noop,onDragLeave:r?this.onDragLeave:a.noop,onDragEnter:r?this.onDragEnter:a.noop,onDragOver:r?this.onDragOver:a.noop},t.Children.map(this.props.children,e=>this.processGridItem(e)),r&&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:a.noop,onDragStart:a.noop,onDrag:a.noop,onDragStop:a.noop,onResizeStart:a.noop,onResize:a.noop,onResizeStop:a.noop,onDrop:a.noop,onDropDragOver:a.noop})})),Qe=i((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=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=void 0;var t=u(n()),r=l(h()),i=W(),a=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 g(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){_(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 _(e,t,n){return(t=v(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function v(e){var t=y(e,`string`);return typeof t==`symbol`?t:t+``}function y(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 b=e=>Object.prototype.toString.call(e);function x(e,t){return e==null?null:Array.isArray(e)?e:e[t]}var S=class extends t.Component{constructor(){super(...arguments),_(this,`state`,this.generateInitialState()),_(this,`onLayoutChange`,e=>{this.props.onLayoutChange(e,g(g({},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,i.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,i.deepEqual)(this.props.breakpoints,e.breakpoints)||!(0,i.deepEqual)(this.props.cols,e.cols))&&this.onWidthChange(e)}onWidthChange(e){let{breakpoints:t,cols:n,layouts:r,compactType:i}=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=g({},r);if(c!==s||e.breakpoints!==t||e.cols!==n){c in u||(u[c]=(0,a.cloneLayout)(this.state.layout));let e=(0,o.findOrGenerateResponsiveLayout)(u,t,s,c,l,i);e=(0,a.synchronizeLayoutWithChildren)(e,this.props.children,l,i,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=x(this.props.margin,s),f=x(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:x(o,this.state.breakpoint),containerPadding:x(l,this.state.breakpoint),onLayoutChange:this.onLayoutChange,layout:this.state.layout,cols:this.state.cols}))}};e.default=S,_(S,`propTypes`,{breakpoint:r.default.string,breakpoints:r.default.object,allowOverlap:r.default.bool,cols:r.default.object,margin:r.default.oneOfType([r.default.array,r.default.object]),containerPadding:r.default.oneOfType([r.default.array,r.default.object]),layouts(e,t){if(b(e[t])!==`[object Object]`)throw Error(`Layout property must be an object. Received: `+b(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,a.validateLayout)(e.layouts[t],`layouts.`+t)})},width:r.default.number.isRequired,onBreakpointChange:r.default.func,onLayoutChange:r.default.func,onWidthChange:r.default.func}),_(S,`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:a.noop,onLayoutChange:a.noop,onWidthChange:a.noop})})),et=e({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=t((()=>{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=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.default=v;var t=l(n()),i=c(h()),a=c((Tt(),r(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=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 _=`react-grid-layout`;function v(e){var n;return n=class extends t.Component{constructor(){super(...arguments),p(this,`state`,{width:1280}),p(this,`elementRef`,t.createRef()),p(this,`mounted`,!1),p(this,`resizeObserver`,void 0)}componentDidMount(){this.mounted=!0,this.resizeObserver=new a.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 n=this.props,{measureBeforeMount:r}=n,i=d(n,s);return r&&!this.mounted?t.createElement(`div`,{className:(0,o.default)(this.props.className,_),style:this.props.style,ref:this.elementRef}):t.createElement(e,u({innerRef:this.elementRef},i,this.state))}},p(n,`defaultProps`,{measureBeforeMount:!1}),p(n,`propTypes`,{measureBeforeMount:i.default.bool}),n}})),Dt=a(i(((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=V(`div`)(({theme:e})=>({"& .react-grid-item":{borderRadius:`${e.shape.borderRadiusMedium}px`},"& .grid-item-drag-handle":{[e.breakpoints.down(`md`)]:{display:`none`}}})),At=V(`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=u(),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};
@@ -0,0 +1 @@
1
+ import{n as e,s as t,t as n}from"./jsx-runtime-ButemYzH.js";import{Bs as r,Bt as i,Hs as a,Ls as o,N as s,Ns as c,Ol as l,Ps as u,Ri as d,Tc as f,Vt as p,Xu as m,Yu as h,_o as g,id as _,j as v,ki as y,pd as b,qo as x,rd as S,wc as C,xd as w,zt as T}from"./index-B0RbDPtk.js";import{i as E,n as D,r as O,t as k}from"./GridLayoutWrapper-CN2Zeusb.js";var A=t(e(),1),j=()=>{let e=`api/admin/impact-metrics/plausible`,{data:t,refetch:n,loading:r,error:i}=f(l(e),()=>C(l(e),`Plausible metrics`),{refreshInterval:30*1e3,revalidateOnFocus:!0});return{data:t||{data:[]},refetch:n,loading:r,error:i}},M=n(),N=({aspectRatio:e,overrideOptions:t={},errorTitle:n=`Failed to load Plausible metrics.`,emptyDataDescription:r=`No Plausible analytics data available.`,noSeriesPlaceholder:a,isPreview:o})=>{let{data:c,loading:l,error:u}=j(),d=T({fill:!0,type:`constant`}),f=(0,A.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=!!u,g=l,v=(0,A.useMemo)(()=>!g&&(!c?.data||c.data.length===0||!f.datasets.some(e=>e.data.length>1)),[f,g,c]),y=v?a||(0,M.jsx)(p,{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`?s(e):e}}},plugins:{legend:{display:!0,position:`bottom`,labels:{usePointStyle:!0,boxWidth:8,padding:12}}},animations:{x:{duration:0},y:{duration:0}}};return(0,M.jsx)(M.Fragment,{children:(0,M.jsx)(m,{sx:o?{}:{height:`100%`,width:`100%`,"& > div":{height:`100% !important`,width:`100% !important`}},children:(0,M.jsx)(i,{data:v||g?d:f,aspectRatio:e,overrideOptions:b,cover:h?(0,M.jsx)(_,{severity:`error`,children:n}):y})})})},P=w(b)(({theme:e})=>({borderRadius:`${e.shape.borderRadiusMedium}px`,boxShadow:`none`,display:`flex`,flexDirection:`column`,height:`100%`})),F=w(m)({flex:1,display:`flex`,flexDirection:`column`,minHeight:0}),I=w(m)(({theme:e})=>({position:`relative`,minWidth:0,flexGrow:1,height:`100%`,display:`flex`,flexDirection:`column`,margin:`auto 0`,padding:e.spacing(3)})),L=w(m)(({theme:e})=>({display:`flex`,gap:e.spacing(2),alignItems:`center`,padding:e.spacing(1.5,2),borderBottom:`1px solid ${e.palette.divider}`})),R=w(m)(({theme:e})=>({display:`flex`,flexDirection:`column`,justifyContent:`flex-end`,flexGrow:1,overflow:`hidden`,textOverflow:`ellipsis`})),z=()=>(0,M.jsxs)(P,{children:[(0,M.jsx)(L,{children:(0,M.jsxs)(R,{children:[(0,M.jsx)(S,{variant:`h3`,children:`Plausible Analytics`}),(0,M.jsx)(S,{variant:`body2`,color:`text.secondary`,children:`Favorite events from Plausible analytics`})]})}),(0,M.jsx)(F,{children:(0,M.jsx)(I,{children:(0,M.jsx)(N,{aspectRatio:1.5,overrideOptions:{maintainAspectRatio:!1},emptyDataDescription:`No Plausible analytics data available for favorite events.`})})})]}),B=e=>(0,M.jsxs)(`svg`,{width:82,height:82,viewBox:`0 0 82 82`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,...e,children:[(0,M.jsx)(`rect`,{width:82,height:82,fill:`url(#pattern0_1227_73918)`}),(0,M.jsxs)(`defs`,{children:[(0,M.jsx)(`pattern`,{id:`pattern0_1227_73918`,patternContentUnits:`objectBoundingBox`,width:1,height:1,children:(0,M.jsx)(`use`,{xlinkHref:`#image0_1227_73918`,transform:`scale(0.00110988)`})}),(0,M.jsx)(`image`,{id:`image0_1227_73918`,width:901,height:901,preserveAspectRatio:`none`,xlinkHref:`data:image/png;base64,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cRFZqWddqlreM7eElLOEAFoRFAIAAFSigMwaN2Fl7yYn+CuVZxnLrF8UGFrrRvsBgAxBIQAAgMMKrpRRENnYiax0NCoLjdalnBRAj2uXl5f8xgEAsEFvPHrvrWmanubPZnxKd9KM1aCmfs06v3j9f/vvpk9dfPTc/wgyDx976eXb294icDhkCgEAABZQnyX0sozZrML911420SttpXQUQC+6jwIAACxI7SoaXaeuoYzAAIAMQSEAAIDAOrtXB2Hl65NxjrB+v74ve62kniX85G/cZE4hgBDlowAA4Gy1lFp6IySs9+uOot5aWUOa+rWW/VJGCkBFphAAAMBRN3KJxkt41MH10Xr7ktI68LTKRQkGAbQiKAQAAGfNO4enDKC37mkp+/Seo5wVVNbZeecHj+g+CiBEUAgAAM5WFMB5mThPWeJZNovxzhF6z6zV61prLTHyAsD54kwhAACAoyW4KktMlaH3SidRdch9tM7PG80AQIBMIQAAQMIaHF8rM3leljFrPONRzg0yngJALzKFAAAAomygvDUmorzGK/v07o86mJa8oJGmMwAUBIUAAAAGdQ5g9Hq2bnm/FSAuEdTtGs0AQOTa5eUlv0EAAGzQG4/ee2uapqf5szm+rFw0ygjW16glp/XXUYmo143Uetanv//d6aMMr888fOyll29ve4vA4XCmEAAA4MCsANHqVuqdQSwDxJbh9pwpBKCgfBQAAKCSneXzykmzck8vwxidLbSuV/cDAAqCQgAAgEA2FmIKzv/VwZqVCcwCUCv7F5WOEiACaMWZQgAANoozheurM3vROcHyvezMofK+crZQWYszhRLOFOKskSkEAABweMGXRRlIn70erZsFgl5wSfdRABkazQAAAASUwLDOIGbZvz3lTKJVGlprPdsIACUyhQAAAKLW83/1614jGe9MYja7cP91FAR+8jdu8scLIERQCAAAUFEGx9clnFHAmGUQ62utpjE9HUlpNgNAQVAIAADQKBodMTkZPOW8YU9XUYI/AHMRFAIAABiUc3q9jWTK970sozK70MpoZgErANRoNAMAAFDJAsJsJEV0TRYwWs/yAr8I2UMAKjKFAAAAV1rOEUavRxm8bK06i2j927t+opwUQAcyhQAAAElAqJSDKlnAvbLE07pXWUe5ZrfuP/v7f1vaE4DzRVAIAADQSBkeH2X1ykDQOwMY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9nMv/ekLL36e8tGN6ckMqkFUNkaiXsvL/NWveV1FW4fqdwSDZAqBAZApBABsntqERTljmJWdRu/3NIuxykK9z0PWcCxeiWd23q+lOUx0bk/plpo1qGkZiG89X70WwLZ9iD8fAMAIdgFTFMxl709Vg5r6Xut1696W93avZ6Wj+2us964azeDArA6d+388u0DIC/ayDGHLqApvD8qzrM9QB5nePV7X0tYSVQBjICgEAAzLC6j26vfrEtGWe0tRAJoFp3Wg2LInLE8N5BRZF8/6GVlX0WgvLXssnx1lCJXgru6w6n0OAGPhTCGAk8WZwvMQnf/LBsh7703GulFX0boctLdbaf0e3UePo+WsXGvwqA6T7+lympWvZntp2UPrswqcKQQGQKYQADC03rLS/evZvVMwnzA6w7h/L3p2NAh/99733vz24/yv8/BaMl2tZZfWveU92TUW7zlRiedkZPa8TKVSFps9C8BYaDQDABiOMqNwSprNeO/3niucjCDS2mfrM7E9WfMWSzbYPuo4at3rBZRqYxslQI1GU8wd1QFgWygfBXCyKB89Tb3lotZ12YxBq3Oo113UWs8rK62v8db9zLOfYSTFSnpKNdUgSbluiTOO9To1L8CMRlx0oHwUGABBIYCTRVA4PnXu315LUKjc670W3auuobxGULieqARzmhEwZevW1y4ZEGazC719zERQCAyAoBDAySIoHJ8a5C0haiRT6hmGH11nISjcFmVwfMTLKLYEiJNTTpoNpM8ynN6swWgQfrRHA0EhMAAazQAANisbRD+JYxz210QNY7z76mYx5XlBb10lIPQa3USzC3EYWbMUdfSCMt+vHm5frl/fY63jvW89axLODkaNZWqcHwROF41mAACbppwNbFFn8spzf0r2zrtO3YvyDKszKQ6jp3tmdo+VnSszg1Zg2PK8qGmN+nnUOYXW5wBweggKAQCb0To7sCV4ijqDqgGfN14iu8+61zubeOgyWei80kqv9DPrKpp17GzpYDo1dhXNgtAjnC0EsGEEhQCAzaiDPC8YKzt7tp7dmzPKwlqvvMfqOOpd571GhvC4Wga913o6iPYGbVlWLzvvF52LjJ5j7ZFRFMDpISgEAGyKMkx+6sjoqaJsoMXKBnpjKrL7sR1RVs8KyHrKOL3AzgraouY00ezC8hpluL2yPwCnh6AQALBpPQGeVxrq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`})]})]}),V=`https://docs.getunleash.io/reference/impact-metrics`,H=w(m)(({theme:e})=>({display:`flex`,flexDirection:`column`,alignItems:`center`,padding:e.spacing(6,4)})),U=w(m)(({theme:e})=>({marginBottom:e.spacing(3)})),W=w(m)(({theme:e})=>({textAlign:`center`,maxWidth:480,marginBottom:e.spacing(3)})),G=w(m)(({theme:e})=>({display:`flex`,gap:e.spacing(2),alignItems:`center`,marginBottom:e.spacing(4)})),K=w(_)(({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}})),q=({onAddChart:e})=>(0,M.jsx)(r,{header:(0,M.jsx)(a,{title:`Impact metrics`,actions:(0,M.jsx)(g,{variant:`contained`,onClick:e,permission:x,children:`New chart`})}),children:(0,M.jsxs)(H,{children:[(0,M.jsx)(U,{children:(0,M.jsx)(B,{})}),(0,M.jsxs)(W,{children:[(0,M.jsx)(S,{variant:`h3`,component:`h2`,sx:{mb:1.5},children:`No impact metrics yet`}),(0,M.jsx)(S,{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,M.jsxs)(G,{children:[(0,M.jsx)(h,{variant:`text`,href:V,target:`_blank`,rel:`noopener noreferrer`,children:`Read the docs`}),(0,M.jsx)(g,{variant:`contained`,onClick:e,permission:x,children:`Create your first chart`})]}),(0,M.jsxs)(K,{severity:`info`,icon:(0,M.jsx)(y,{}),children:[(0,M.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.`]})]})});w(m)(({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 J=()=>{let[e,t]=(0,A.useState)(!1),[n,r]=(0,A.useState)(),{setToastApiError:i}=u(),s=d(`plausibleMetrics`),{trackEvent:l}=o(),{charts:f,layout:p,loading:m,error:h,addChart:_,updateChart:y,deleteChart:b}=E(),{metricOptions:C,loading:w,error:T}=v(),j=()=>{r(void 0),t(!0),l(`impact-metrics`,{props:{eventType:`global chart modal open`}})},N=e=>{r(e),t(!0)},P=async e=>{try{n?await y(n.id,e):await _(e),t(!1)}catch(e){i(c(e))}},F=(0,A.useCallback)(async e=>{try{await b(e)}catch(e){i(c(e))}},[b]),I=(0,A.useMemo)(()=>{let e=[];if(s){let t={id:`plausible-analytics`,component:(0,M.jsx)(z,{}),w:6,h:2};e.push(t)}let t=f.map((e,t)=>{let n=p?.find(t=>t.i===e.id);return{id:e.id,component:(0,M.jsx)(D,{config:e,onEdit:N,onDelete:F}),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]},[f,p,N,F,s]),L=T||h,R=w||m,B=f.length>=20,V=R||!!L||B;return(0,M.jsxs)(M.Fragment,{children:[f.length===0&&!R?(0,M.jsx)(q,{onAddChart:j}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(a,{title:`Impact metrics`,titleElement:(0,M.jsx)(S,{variant:`h1`,component:`span`,children:`Impact metrics`}),actions:(0,M.jsx)(g,{variant:`contained`,onClick:j,disabled:V,permission:x,tooltipProps:B?{title:`Maximum of 20 impact metrics charts allowed`,arrow:!0}:void 0,children:`New chart`})}),I.length>0&&(0,M.jsx)(k,{items:I})]}),(0,M.jsx)(O,{open:e,onClose:()=>t(!1),onSave:P,initialConfig:n,metrics:C,loading:w||m})]})},Y=w(`div`)(({theme:e})=>({paddingTop:e.spacing(2)})),X=w(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(4),paddingBottom:e.spacing(4)})),Z=()=>(0,M.jsx)(Y,{children:(0,M.jsx)(X,{children:(0,M.jsx)(J,{})})});export{Z as ImpactMetricsPage};