unleash-server 8.0.1 → 8.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/lib/addons/addon.d.ts +10 -2
  2. package/dist/lib/addons/addon.d.ts.map +1 -1
  3. package/dist/lib/addons/addon.js +104 -6
  4. package/dist/lib/addons/addon.js.map +1 -1
  5. package/dist/lib/addons/datadog-definition.js +1 -1
  6. package/dist/lib/addons/datadog-definition.js.map +1 -1
  7. package/dist/lib/addons/datadog.test.js +2 -0
  8. package/dist/lib/addons/datadog.test.js.map +1 -1
  9. package/dist/lib/addons/index.d.ts.map +1 -1
  10. package/dist/lib/addons/index.js +2 -0
  11. package/dist/lib/addons/index.js.map +1 -1
  12. package/dist/lib/addons/new-relic.d.ts.map +1 -1
  13. package/dist/lib/addons/new-relic.js +0 -1
  14. package/dist/lib/addons/new-relic.js.map +1 -1
  15. package/dist/lib/addons/new-relic.test.js +0 -1
  16. package/dist/lib/addons/new-relic.test.js.map +1 -1
  17. package/dist/lib/addons/slack.test.js +1 -2
  18. package/dist/lib/addons/slack.test.js.map +1 -1
  19. package/dist/lib/addons/teams-definition.d.ts.map +1 -1
  20. package/dist/lib/addons/teams-definition.js +1 -0
  21. package/dist/lib/addons/teams-definition.js.map +1 -1
  22. package/dist/lib/addons/teams-workflow-definition.d.ts +4 -0
  23. package/dist/lib/addons/teams-workflow-definition.d.ts.map +1 -0
  24. package/dist/lib/addons/teams-workflow-definition.js +66 -0
  25. package/dist/lib/addons/teams-workflow-definition.js.map +1 -0
  26. package/dist/lib/addons/teams-workflow.d.ts +15 -0
  27. package/dist/lib/addons/teams-workflow.d.ts.map +1 -0
  28. package/dist/lib/addons/teams-workflow.js +110 -0
  29. package/dist/lib/addons/teams-workflow.js.map +1 -0
  30. package/dist/lib/addons/teams-workflow.test.d.ts +2 -0
  31. package/dist/lib/addons/teams-workflow.test.d.ts.map +1 -0
  32. package/dist/lib/addons/teams-workflow.test.js +202 -0
  33. package/dist/lib/addons/teams-workflow.test.js.map +1 -0
  34. package/dist/lib/addons/teams.d.ts.map +1 -1
  35. package/dist/lib/addons/teams.js +0 -1
  36. package/dist/lib/addons/teams.js.map +1 -1
  37. package/dist/lib/addons/teams.test.js +0 -1
  38. package/dist/lib/addons/teams.test.js.map +1 -1
  39. package/dist/lib/addons/validate-url.d.ts +18 -0
  40. package/dist/lib/addons/validate-url.d.ts.map +1 -0
  41. package/dist/lib/addons/validate-url.js +93 -0
  42. package/dist/lib/addons/validate-url.js.map +1 -0
  43. package/dist/lib/addons/validate-url.test.d.ts +2 -0
  44. package/dist/lib/addons/validate-url.test.d.ts.map +1 -0
  45. package/dist/lib/addons/validate-url.test.js +199 -0
  46. package/dist/lib/addons/validate-url.test.js.map +1 -0
  47. package/dist/lib/create-config.d.ts.map +1 -1
  48. package/dist/lib/create-config.js +7 -0
  49. package/dist/lib/create-config.js.map +1 -1
  50. package/dist/lib/error/bad-data-error.d.ts.map +1 -1
  51. package/dist/lib/error/bad-data-error.js +10 -2
  52. package/dist/lib/error/bad-data-error.js.map +1 -1
  53. package/dist/lib/error/unleash-error.test.js +23 -0
  54. package/dist/lib/error/unleash-error.test.js.map +1 -1
  55. package/dist/lib/features/frontend-api/frontend-api-service.d.ts.map +1 -1
  56. package/dist/lib/features/frontend-api/frontend-api-service.js +17 -20
  57. package/dist/lib/features/frontend-api/frontend-api-service.js.map +1 -1
  58. package/dist/lib/features/metrics/integrations/integration-metrics.d.ts +1 -1
  59. package/dist/lib/features/metrics/integrations/integration-metrics.d.ts.map +1 -1
  60. package/dist/lib/features/metrics/integrations/integration-metrics.js +2 -0
  61. package/dist/lib/features/metrics/integrations/integration-metrics.js.map +1 -1
  62. package/dist/lib/middleware/secure-headers.d.ts.map +1 -1
  63. package/dist/lib/middleware/secure-headers.js +20 -1
  64. package/dist/lib/middleware/secure-headers.js.map +1 -1
  65. package/dist/lib/openapi/spec/addon-create-update-schema.d.ts +1 -1
  66. package/dist/lib/openapi/spec/addon-create-update-schema.js +1 -1
  67. package/dist/lib/openapi/spec/addons-schema.d.ts +15 -0
  68. package/dist/lib/openapi/spec/addons-schema.d.ts.map +1 -1
  69. package/dist/lib/openapi/spec/addons-schema.js +51 -0
  70. package/dist/lib/openapi/spec/addons-schema.js.map +1 -1
  71. package/dist/lib/openapi/spec/profile-schema.d.ts +6 -1
  72. package/dist/lib/openapi/spec/profile-schema.d.ts.map +1 -1
  73. package/dist/lib/openapi/spec/profile-schema.js +13 -1
  74. package/dist/lib/openapi/spec/profile-schema.js.map +1 -1
  75. package/dist/lib/openapi/spec/profile-schema.test.js +1 -0
  76. package/dist/lib/openapi/spec/profile-schema.test.js.map +1 -1
  77. package/dist/lib/routes/admin-api/addon.d.ts.map +1 -1
  78. package/dist/lib/routes/admin-api/addon.js +6 -2
  79. package/dist/lib/routes/admin-api/addon.js.map +1 -1
  80. package/dist/lib/routes/admin-api/user/user.d.ts.map +1 -1
  81. package/dist/lib/routes/admin-api/user/user.js +3 -1
  82. package/dist/lib/routes/admin-api/user/user.js.map +1 -1
  83. package/dist/lib/routes/admin-api/user/user.test.js +32 -7
  84. package/dist/lib/routes/admin-api/user/user.test.js.map +1 -1
  85. package/dist/lib/routes/util.d.ts.map +1 -1
  86. package/dist/lib/routes/util.js +8 -1
  87. package/dist/lib/routes/util.js.map +1 -1
  88. package/dist/lib/routes/util.test.d.ts +2 -0
  89. package/dist/lib/routes/util.test.d.ts.map +1 -0
  90. package/dist/lib/routes/util.test.js +18 -0
  91. package/dist/lib/routes/util.test.js.map +1 -0
  92. package/dist/lib/schema/html-input.d.ts +4 -0
  93. package/dist/lib/schema/html-input.d.ts.map +1 -0
  94. package/dist/lib/schema/html-input.js +38 -0
  95. package/dist/lib/schema/html-input.js.map +1 -0
  96. package/dist/lib/schema/html-input.test.d.ts +2 -0
  97. package/dist/lib/schema/html-input.test.d.ts.map +1 -0
  98. package/dist/lib/schema/html-input.test.js +98 -0
  99. package/dist/lib/schema/html-input.test.js.map +1 -0
  100. package/dist/lib/server-impl.d.ts +2 -1
  101. package/dist/lib/server-impl.d.ts.map +1 -1
  102. package/dist/lib/server-impl.js +2 -1
  103. package/dist/lib/server-impl.js.map +1 -1
  104. package/dist/lib/services/addon-service.d.ts +8 -1
  105. package/dist/lib/services/addon-service.d.ts.map +1 -1
  106. package/dist/lib/services/addon-service.js +24 -1
  107. package/dist/lib/services/addon-service.js.map +1 -1
  108. package/dist/lib/services/addon-service.test.js +75 -8
  109. package/dist/lib/services/addon-service.test.js.map +1 -1
  110. package/dist/lib/services/project-schema.d.ts +1 -2
  111. package/dist/lib/services/project-schema.d.ts.map +1 -1
  112. package/dist/lib/services/project-schema.js +4 -2
  113. package/dist/lib/services/project-schema.js.map +1 -1
  114. package/dist/lib/services/user-service.d.ts +1 -0
  115. package/dist/lib/services/user-service.d.ts.map +1 -1
  116. package/dist/lib/services/user-service.js +7 -0
  117. package/dist/lib/services/user-service.js.map +1 -1
  118. package/dist/lib/types/experimental.d.ts +1 -1
  119. package/dist/lib/types/experimental.d.ts.map +1 -1
  120. package/dist/lib/types/experimental.js +21 -0
  121. package/dist/lib/types/experimental.js.map +1 -1
  122. package/dist/lib/types/model.d.ts +2 -0
  123. package/dist/lib/types/model.d.ts.map +1 -1
  124. package/dist/lib/types/model.js.map +1 -1
  125. package/dist/lib/types/option.d.ts +4 -0
  126. package/dist/lib/types/option.d.ts.map +1 -1
  127. package/dist/lib/ui-config/ui-config-service.d.ts.map +1 -1
  128. package/dist/lib/ui-config/ui-config-service.js +4 -2
  129. package/dist/lib/ui-config/ui-config-service.js.map +1 -1
  130. package/dist/lib/ui-config/ui-config.test.js +21 -2
  131. package/dist/lib/ui-config/ui-config.test.js.map +1 -1
  132. package/dist/lib/util/anonymise.d.ts +1 -0
  133. package/dist/lib/util/anonymise.d.ts.map +1 -1
  134. package/dist/lib/util/anonymise.js +3 -0
  135. package/dist/lib/util/anonymise.js.map +1 -1
  136. package/dist/lib/util/anonymise.test.js +4 -1
  137. package/dist/lib/util/anonymise.test.js.map +1 -1
  138. package/dist/migrations/20260617115403-update-flag-descriptions.d.ts +3 -0
  139. package/dist/migrations/20260617115403-update-flag-descriptions.d.ts.map +1 -0
  140. package/dist/migrations/20260617115403-update-flag-descriptions.js +38 -0
  141. package/dist/migrations/20260617115403-update-flag-descriptions.js.map +1 -0
  142. package/dist/migrations/20260624120000-servicenow-change-references.d.ts +3 -0
  143. package/dist/migrations/20260624120000-servicenow-change-references.d.ts.map +1 -0
  144. package/dist/migrations/20260624120000-servicenow-change-references.js +22 -0
  145. package/dist/migrations/20260624120000-servicenow-change-references.js.map +1 -0
  146. package/dist/server-dev.js +5 -1
  147. package/dist/server-dev.js.map +1 -1
  148. package/dist/test/e2e/api/admin/addon.e2e.test.js +2 -1
  149. package/dist/test/e2e/api/admin/addon.e2e.test.js.map +1 -1
  150. package/dist/test/e2e/services/addon-service.e2e.test.js +2 -0
  151. package/dist/test/e2e/services/addon-service.e2e.test.js.map +1 -1
  152. package/frontend/build/index.html +2 -2
  153. package/frontend/build/static/{AdvancedPlayground-BEYkf6Xg.js → AdvancedPlayground-DdeMb-6I.js} +2 -2
  154. package/frontend/build/static/{BackendConnections-DdvotR_8.js → BackendConnections-kgR0xyIH.js} +1 -1
  155. package/frontend/build/static/DialogWithAside-DzCSDyWo.js +1110 -0
  156. package/frontend/build/static/{EnterpriseEdge-DN23kaQp.js → EnterpriseEdge-CjslqYDM.js} +4 -4
  157. package/frontend/build/static/{FeatureMetricsChart-CmVkRuwG.js → FeatureMetricsChart-B4WryxcW.js} +2 -2
  158. package/frontend/build/static/FeatureStaleDialog-EzReRTI5.js +8 -0
  159. package/frontend/build/static/FeatureViewLazyExport-8eQKTvdS.js +10 -0
  160. package/frontend/build/static/{FlagMetricsChart-ZjHSwulg.js → FlagMetricsChart-hNQuwOxW.js} +2 -2
  161. package/frontend/build/static/{FrontendNetworkTrafficUsage-BmLOJdK9.js → FrontendNetworkTrafficUsage-pcr83PWo.js} +1 -1
  162. package/frontend/build/static/GridLayoutWrapper-B_YyjZ7l.js +5 -0
  163. package/frontend/build/static/{ImpactMetricsPage-D1CETZR_.js → ImpactMetricsPage-DGH_S9oz.js} +1 -1
  164. package/frontend/build/static/ImpactViewsPage-DZqKPFvE.js +1 -0
  165. package/frontend/build/static/{LazyAdminExport-BvtR_me3.js → LazyAdminExport-B1ReAViz.js} +15 -15
  166. package/frontend/build/static/LazyProjectExport-BMVcGpNI.js +46 -0
  167. package/frontend/build/static/LifecycleChartComponent-BeoRUO9q.js +2 -0
  168. package/frontend/build/static/{LineChartComponent-d80f3Tky.js → LineChartComponent-BbCMbJ-m.js} +1 -1
  169. package/frontend/build/static/{MarkCompletedDialogue-CtzRfovJ.js → MarkCompletedDialogue-CcXyp8UE.js} +1 -1
  170. package/frontend/build/static/{NetworkOverview-D1UOxIaf.js → NetworkOverview-0mBnFAZX.js} +1 -1
  171. package/frontend/build/static/{NetworkTraffic-CLnhub6c.js → NetworkTraffic-DmG5Iv25.js} +1 -1
  172. package/frontend/build/static/{NetworkTrafficUsage-PgI0lqze.js → NetworkTrafficUsage-DccaVLYs.js} +1 -1
  173. package/frontend/build/static/OnboardingProgress-Bp9sZ-ZM.js +1 -0
  174. package/frontend/build/static/{PercentageDonut-C6I2UOES.js → PercentageDonut-DBDGNJlh.js} +1 -1
  175. package/frontend/build/static/PermissionButton-B-IfzChn.js +1 -0
  176. package/frontend/build/static/ReactJSONEditor-DeBI7JPg.js +4 -0
  177. package/frontend/build/static/RoleCell-DhYvu4YH.js +1 -0
  178. package/frontend/build/static/Safeguard-DErU6fSK.js +1 -0
  179. package/frontend/build/static/{SelectSdk-D2NaTubs.js → SelectSdk-Dr_pzQgX.js} +1 -1
  180. package/frontend/build/static/StoriesPage-frGP1Bfr.js +2 -0
  181. package/frontend/build/static/{aggregateFeatureMetrics-DBivHCcj.js → aggregateFeatureMetrics-B-67HaIZ.js} +1 -1
  182. package/frontend/build/static/chartjs-plugin-annotation.esm-DP4wCpdA.js +1 -0
  183. package/frontend/build/static/differenceInSeconds-DMZGQwjK.js +1 -0
  184. package/frontend/build/static/endOfMonth-CkSR_DAx.js +1 -0
  185. package/frontend/build/static/esm-DdgY1Q5s.js +12 -0
  186. package/frontend/build/static/formatDistanceToNow-CyouiCIY.js +1 -0
  187. package/frontend/build/static/index-C04TEs4k.js +290 -0
  188. package/frontend/build/static/{metricsFormatters-BEX2qb8Y.js → metricsFormatters-DhX-aU17.js} +1 -1
  189. package/frontend/build/static/networkTrafficUsageHighlightPlugin-DlOtHZg3.js +1 -0
  190. package/frontend/build/static/parse-Chj4PyAg.js +1 -0
  191. package/frontend/build/static/startOfHour-P0Sr6h8e.js +1 -0
  192. package/frontend/build/static/themeStyles-DGVpwkcv.js +1 -0
  193. package/frontend/build/static/{useConditionallyHiddenColumns-DTDzRlyO.js → useConditionallyHiddenColumns-C5q9zdfJ.js} +1 -1
  194. package/frontend/build/static/useCustomEvent-Dj2V5RVb.js +1 -0
  195. package/frontend/build/static/{useGroupedImpactMetricsData-CK8Pz2an.js → useGroupedImpactMetricsData-CW9qnV2y.js} +1 -1
  196. package/frontend/build/static/{useInstanceTrafficMetrics-CIpyIGYi.js → useInstanceTrafficMetrics-CRCDB4TX.js} +1 -1
  197. package/frontend/package.json +9 -7
  198. package/package.json +11 -9
  199. package/frontend/build/static/ChatOutlined-jZlhx14o.js +0 -1
  200. package/frontend/build/static/CloudCircle-BjnxUYAO.js +0 -1
  201. package/frontend/build/static/DialogWithAside-BvaGTcqO.js +0 -1106
  202. package/frontend/build/static/FeatureStaleDialog-BkyjUGR9.js +0 -8
  203. package/frontend/build/static/FeatureViewLazyExport-C5FggFea.js +0 -10
  204. package/frontend/build/static/GridLayoutWrapper-D93wkNEo.js +0 -3
  205. package/frontend/build/static/ImpactViewsPage-DeBga4lU.js +0 -1
  206. package/frontend/build/static/LazyProjectExport-BkOu6pHf.js +0 -46
  207. package/frontend/build/static/LifecycleChartComponent-BYvIFr7Q.js +0 -2
  208. package/frontend/build/static/PermissionButton-BIeM26DH.js +0 -1
  209. package/frontend/build/static/ReactJSONEditor-C-paZV5Q.js +0 -4
  210. package/frontend/build/static/RoleCell-BCPNstXC.js +0 -1
  211. package/frontend/build/static/Safeguard-9zs64Bna.js +0 -1
  212. package/frontend/build/static/StoriesPage-5lbMiQlA.js +0 -1
  213. package/frontend/build/static/chartjs-plugin-annotation.esm-BxKcCGhA.js +0 -1
  214. package/frontend/build/static/esm-CFWP4-MJ.js +0 -15
  215. package/frontend/build/static/index-BJ2iUk24.js +0 -289
  216. package/frontend/build/static/networkTrafficUsageHighlightPlugin-DVWh8Lrd.js +0 -1
  217. package/frontend/build/static/parse-BhYjTMCL.js +0 -1
  218. package/frontend/build/static/startOfHour-KiLZtdEa.js +0 -1
  219. package/frontend/build/static/themeStyles-BPY8RNQO.js +0 -1
  220. package/frontend/build/static/useCustomEvent-CwoY8S5F.js +0 -1
  221. /package/frontend/build/static/{connect-DbjGV9Hl.png → cr-DbjGV9Hl.png} +0 -0
@@ -1,3 +1,3 @@
1
- import{o as e,t}from"./react-GZhdek4G.js";import{f as n,r}from"./chunk-QUQL4437-Dr42NpoL.js";import{t as i}from"./useTheme-CQqAmDLr.js";import{t as a}from"./jsx-runtime-BnvnyDTF.js";import{v as o}from"./createSimplePaletteValueFilter-BRAMrHWJ.js";import{A as s,D as c,E as l,L as u,M as d,N as f,O as p,R as m,T as h,U as g,_,a as v,c as y,f as b,g as x,j as S,k as C,l as w,n as T,o as E,r as D,s as ee,t as O,v as te,w as k}from"./useConditionallyHiddenColumns-DTDzRlyO.js";import{t as A}from"./useMediaQuery-DGx8zAkf.js";import{t as j}from"./Tooltip-BaILXXti.js";import{T as ne,b as M,t as N}from"./TextField-oipjeg6n.js";import{t as P}from"./Popover-CUTnSn2h.js";import{i as F}from"./CircularProgress-C_LUU3DK.js";import{n as re,t as I}from"./ConditionallyRender---uTpMBn.js";import{r as L,t as R}from"./Alert-_bLyWbvx.js";import{t as z}from"./Typography-BTdLWIUX.js";import{t as B}from"./Box-BQsxfFmC.js";import{t as V}from"./Button-CebB8EPB.js";import{t as ie}from"./Divider-CsdWvu5F.js";import{a as ae,n as oe,t as se}from"./useEnvironments-CTguhgy0.js";import{a as ce,i as H,n as le,o as ue}from"./TooltipResolver-4A1YhwBy.js";import{u as de}from"./themeStyles-BPY8RNQO.js";import{t as fe}from"./Close-DyTASMSq.js";import{r as pe}from"./httpErrorResponseHandler-FMtt7Zqh.js";import{t as me}from"./createLocalStorage-WS-MCMlG.js";import{n as he,r as ge,t as _e}from"./PageContent-c0NDm5oD.js";import{n as ve,t as ye}from"./Loader-DdgXftPc.js";import{Dr as be,Fr as xe,Gs as Se,Mn as Ce,Nn as we,Ot as Te,Pr as Ee,Ua as U,Uo as De,Xo as Oe,Ya as ke,Za as Ae,_s as je,_t as Me,aa as Ne,ai as Pe,ct as Fe,dt as Ie,fo as Le,ga as W,gt as Re,ht as ze,ii as Be,la as G,ot as Ve,pt as He,ro as Ue,va as K,vi as q,vt as We,yi as Ge,zn as Ke}from"./index-BJ2iUk24.js";import{t as qe}from"./useApiTokens-C8Dqw_X1.js";import{a as Je,c as Ye,i as Xe,l as J,n as Ze,s as Qe,t as $e}from"./esm-CFWP4-MJ.js";var Y=e(t(),1),et=()=>{let{makeRequest:e,createRequest:t,errors:n,loading:r}=le({propagateErrors:!0}),i=`api/admin/playground`;return{evaluateAdvancedPlayground:async n=>{let r=t(`${i}/advanced`,{method:`POST`,body:JSON.stringify(n)});return(await e(r.caller,r.id)).json()},evaluateChangeRequestPlayground:async(n,r)=>{let a=t(`${i}/change-request/${n}`,{method:`POST`,body:JSON.stringify(r)});return(await e(a.caller,a.id)).json()},errors:n,loading:r}},tt=e(x(),1),nt=e=>{var t=e.theme,n=e.settings,r=n===void 0?{}:n,i=e.styles,a=i===void 0?[]:i,o={".cm-gutters":{}},s={};r.background&&(s.backgroundColor=r.background),r.backgroundImage&&(s.backgroundImage=r.backgroundImage),r.foreground&&(s.color=r.foreground),r.fontSize&&(s.fontSize=r.fontSize),(r.background||r.foreground)&&(o[`&`]=s),r.fontFamily&&(o[`&.cm-editor .cm-scroller`]={fontFamily:r.fontFamily}),r.gutterBackground&&(o[`.cm-gutters`].backgroundColor=r.gutterBackground),r.gutterForeground&&(o[`.cm-gutters`].color=r.gutterForeground),r.gutterBorder&&(o[`.cm-gutters`].borderRightColor=r.gutterBorder),r.caret&&(o[`.cm-content`]={caretColor:r.caret},o[`.cm-cursor, .cm-dropCursor`]={borderLeftColor:r.caret});var c={};return r.gutterActiveForeground&&(c.color=r.gutterActiveForeground),r.lineHighlight&&(o[`.cm-activeLine`]={backgroundColor:r.lineHighlight},c.backgroundColor=r.lineHighlight),o[`.cm-activeLineGutter`]=c,r.selection&&(o[`&.cm-focused .cm-selectionBackground, & .cm-line::selection, & .cm-selectionLayer .cm-selectionBackground, .cm-content ::selection`]={background:r.selection+` !important`}),r.selectionMatch&&(o[`& .cm-selectionMatch`]={backgroundColor:r.selectionMatch}),[Xe.theme(o,{dark:t===`dark`}),Ye(Qe.define(a))]},rt={background:`#faf8f5`,foreground:`#b29762`,caret:`#93abdc`,selection:`#e3dcce`,selectionMatch:`#e3dcce`,gutterBackground:`#faf8f5`,gutterForeground:`#cdc4b1`,gutterBorder:`transparent`,lineHighlight:`#ddceb154`},it=[{tag:[J.comment,J.bracket],color:`#b6ad9a`},{tag:[J.atom,J.number,J.keyword,J.link,J.attributeName,J.quote],color:`#063289`},{tag:[J.emphasis,J.heading,J.tagName,J.propertyName,J.variableName],color:`#2d2006`},{tag:[J.typeName,J.url,J.string],color:`#896724`},{tag:[J.operator,J.string],color:`#1659df`},{tag:[J.propertyName],color:`#b29762`},{tag:[J.unit,J.punctuation],color:`#063289`}],at=(e=>{var t=e||{},n=t.theme,r=n===void 0?`light`:n,i=t.settings,a=i===void 0?{}:i,o=t.styles,s=o===void 0?[]:o;return nt({theme:r,settings:Ze({},rt,a),styles:[...it,...s]})})(),ot={background:`#2a2734`,foreground:`#6c6783`,caret:`#ffad5c`,selection:`#91ff6c26`,selectionMatch:`#91ff6c26`,gutterBackground:`#2a2734`,gutterForeground:`#545167`,lineHighlight:`#36334280`},st=[{tag:[J.comment,J.bracket],color:`#6c6783`},{tag:[J.atom,J.number,J.keyword,J.link,J.attributeName,J.quote],color:`#ffcc99`},{tag:[J.emphasis,J.heading,J.tagName,J.propertyName,J.className,J.variableName],color:`#eeebff`},{tag:[J.typeName,J.url],color:`#7a63ee`},{tag:J.operator,color:`#ffad5c`},{tag:J.string,color:`#ffb870`},{tag:[J.propertyName],color:`#9a86fd`},{tag:[J.unit,J.punctuation],color:`#e09142`}],ct=(e=>{var t=e||{},n=t.theme,r=n===void 0?`dark`:n,i=t.settings,a=i===void 0?{}:i,o=t.styles,s=o===void 0?[]:o;return nt({theme:r,settings:Ze({},ot,a),styles:[...st,...s]})})(),X=a(),lt=o(`aside`)(({theme:e})=>({height:`50px`,backgroundColor:e.palette.background.paper,borderTopRightRadius:e.shape.borderRadiusMedium,borderTopLeftRadius:e.shape.borderRadiusMedium,padding:e.spacing(1,2),color:e.palette.text.primary,display:`flex`,justifyContent:`space-between`,alignItems:`center`,border:`1px solid ${e.palette.divider}`})),ut=o(`div`)(({theme:e,style:t})=>({width:e.spacing(3),height:e.spacing(3),display:`flex`,alignItems:`center`,color:e.palette.background.paper,justifyContent:`center`,transition:`background-color 0.5s ease-in-out`,borderRadius:`50%`,...t})),dt=o(`div`)(({theme:e})=>({fontSize:e.fontSizes.smallBody,color:e.palette.error.dark,marginRight:e.spacing(1)})),ft=()=>(0,X.jsx)(ut,{style:{backgroundColor:i().palette.success.main},children:(0,X.jsx)(je,{sx:e=>({width:e.spacing(2),height:e.spacing(2)})})}),pt=()=>(0,X.jsx)(ut,{style:{backgroundColor:i().palette.error.main},children:(0,X.jsx)(Ve,{})}),mt=({context:e,setContext:t,error:n})=>{let r=i(),a=(0,Y.useCallback)(e=>{t(e)},[t]),o=`calc(6 * ${r.typography.body1.fontSize} * ${r.typography.body1.lineHeight}) + 8px`;return(0,X.jsxs)(B,{sx:{width:`100%`},children:[(0,X.jsxs)(lt,{children:[`JSON`,(0,X.jsx)(I,{condition:!!n,show:(0,X.jsxs)(B,{sx:e=>({display:`flex`,alignItems:`center`}),children:[(0,X.jsx)(dt,{children:n}),(0,X.jsx)(pt,{})]}),elseShow:(0,X.jsx)(ft,{})})]}),(0,X.jsx)($e,{value:e,minHeight:o,theme:r.mode===`dark`?ct:at,extensions:[Je()],onChange:a,style:{border:`1px solid ${r.palette.divider}`,borderTop:`none`},placeholder:JSON.stringify({currentTime:`2022-07-04T14:13:03.929Z`,appName:`playground`,userId:`test`,remoteAddress:`127.0.0.1`},null,2)})]})};function ht(e){return Array.isArray(e)?e:[e]}var gt=e=>!e||e.length===0||e.length===1&&e[0]===`*`?`*`:ht(e),_t=e=>ht(e),vt=e=>{let t=yt(e);return t.length>0?t[0]:``},yt=e=>e.filter(({enabled:e})=>!!e).sort((e,t)=>e.sortOrder-t.sortOrder).map(({name:e})=>e),bt=(e,t)=>e?`100%`:t&&!e?`60%`:`50%`,xt=e=>typeof e==`string`?!0:Array.isArray(e)?e.every(e=>typeof e==`string`):!1,St=e=>{let t=new Set([`appName`,`environment`,`userId`,`sessionId`,`remoteAddress`,`currentTime`,`properties`]),n={...e},r=!1;for(let i in e)t.has(i)||(n.properties||={},n.properties[i]=e[i],delete n[i],r=!0);return!r&&!e.properties&&delete n.properties,n},Ct=e=>{let[t]=e.split(`.`),[n,r]=t.split(`:`);if(!n||!r)throw Error(`Invalid token format`);if(r===`*`)throw Error(`Admin tokens are not supported in the playground`)},wt=e=>{let[t]=e.split(`.`);return t.split(`:`)},Tt=e=>Ne({mode:`all`},e),Et=e=>{let t=e=>e.toSorted((e,t)=>e.sortOrder-t.sortOrder).map(e=>({key:e.name,label:e.name})),n=e.reduce(({project:e,global:t},n)=>(n.project?e.push(n):t.push(n),{project:e,global:t}),{project:[],global:[]}),r=[];return n.project.length&&r.push({groupHeader:`Project context fields`,options:t(n.project)}),n.global.length&&r.push({groupHeader:`Global context fields`,options:t(n.global)}),r},Dt=({context:e,setContext:t})=>{let n=i(),{setToastData:r}=ce(),{context:a}=Tt(),o=Et(a),[s,c]=(0,Y.useState)(),[l,d]=(0,Y.useState)(!1),[f,p]=(0,Y.useState)(``),[h,g]=(0,Y.useState)(``),_=(0,Y.useMemo)(()=>(0,tt.default)(e=>{if(!e)return c(void 0);try{let t=JSON.parse(e);d(t[f]!==void 0||t?.properties?.[f]!==void 0)}catch(e){return c(H(e))}return c(void 0)},250),[c,f,d]);(0,Y.useEffect)(()=>{_(e)},[_,e]);let v=()=>{try{let n=JSON.parse(e||`{}`);t(JSON.stringify(St({...n,[f]:h}),null,2));let r=a.find(e=>e.name===f);if(r?.legalValues&&r.legalValues.length>0||f===`currentTime`)return g(``)}catch(e){r({type:`error`,text:`Error parsing context: ${H(e)}`})}},y=(e,t)=>{if(xt(t)){if(Array.isArray(t))return g((t||[]).length>1?t.join(`,`):t[0]);g(t)}},b=()=>{if(!h||h===``)return[];let e=(a.find(e=>e.name===f)?.legalValues||[]).length>1;return h.includes(`,`)&&e?h.split(`,`):[h]};return(0,X.jsxs)(B,{children:[(0,X.jsx)(B,{sx:{display:`flex`,alignItems:`center`,mb:2},children:(0,X.jsx)(z,{variant:`body2`,color:n.palette.text.primary,sx:{ml:1},children:`Unleash context`})}),(0,X.jsxs)(B,{sx:{display:`flex`,gap:2,flexWrap:`wrap`,mb:2},children:[(0,X.jsx)(De,{label:`Context field`,labelId:`context-field-label`,id:`context-field`,value:f,onChange:e=>{if(p(e||``),e===`currentTime`)return g(new Date().toISOString());g(``)},variant:`outlined`,size:`small`,sx:{width:200,maxWidth:`100%`},options:o}),(()=>{if(f===`currentTime`){let e=m(h);return(0,X.jsx)(N,{id:`date`,label:`Date`,size:`small`,type:`datetime-local`,value:u(e?e.toISOString():new Date().toISOString()),sx:{width:200,maxWidth:`100%`},onChange:e=>{let t=m(e.target.value)?.toISOString();t&&g(t)},required:!0,slotProps:{inputLabel:{shrink:!0}}})}let e=a.find(e=>e.name===f);return e?.legalValues&&e.legalValues.length>0?(0,X.jsx)(M,{disablePortal:!0,limitTags:3,id:`context-legal-values`,multiple:!0,options:e.legalValues.map(({value:e})=>e),disableCloseOnSelect:!0,size:`small`,value:b(),onChange:y,getOptionLabel:e=>e,renderOption:(e,t,{selected:n})=>(0,X.jsxs)(`li`,{...e,children:[(0,X.jsx)(Se,{icon:(0,X.jsx)(xe,{fontSize:`small`}),checkedIcon:(0,X.jsx)(Ee,{fontSize:`small`}),sx:e=>({marginRight:e.spacing(.5)}),checked:n}),t]}),sx:{width:370,maxWidth:`100%`},renderInput:e=>(0,X.jsx)(N,{...e,label:`Value`})}):(0,X.jsx)(N,{label:`Value`,id:`context-value`,sx:{width:370,maxWidth:`100%`},placeholder:`value1,value2,value3`,size:`small`,value:h,onChange:e=>g(e.target.value||``)})})(),(0,X.jsx)(V,{variant:`outlined`,disabled:!f||!!s,onClick:v,sx:{width:`95px`,maxHeight:`40px`},children:`${l?`Replace`:`Add`} `})]}),(0,X.jsx)(mt,{context:e,setContext:t,error:s})]})},Ot=({environments:e,setEnvironments:t,availableEnvironments:n,disabled:r})=>{let i=[...n.map(e=>({label:e,id:e}))],a=i.filter(({id:t})=>e.includes(t));return(0,X.jsx)(M,{disablePortal:!0,limitTags:3,id:`environment`,multiple:!0,options:i,sx:{flex:1},renderInput:e=>(0,X.jsx)(N,{...e,label:`Environments`}),renderOption:we,renderValue:(e,t)=>e.map((e,n)=>{let{key:r,...i}=t({index:n});return(0,X.jsx)(ne,{size:`small`,...i,label:e.label},r)}),getOptionLabel:({label:e})=>e,disableCloseOnSelect:!1,size:`small`,value:a,onChange:(e,n,r)=>{let i=n;return r===`clear`||i===null?t([]):Array.isArray(i)?i.length===0?t([]):t(i.map(({id:e})=>e)):t([i.id])},disabled:r,"data-testid":`PLAYGROUND_ENVIRONMENT_SELECT`})},Z={label:`ALL`,id:`*`},kt=o(D)({fontSize:`1.25rem`}),At=o(y)(()=>({width:`100%`})),jt=o(B)(({theme:e})=>({display:`grid`,columnGap:e.spacing(2),rowGap:e.spacing(2),gridTemplateColumns:`1fr`,[e.breakpoints.up(`md`)]:{gridTemplateColumns:`1fr 1fr`}})),Mt=o(At)(({theme:e})=>({"& label":{WebkitTextFillColor:e.palette.text.secondary},"& input.Mui-disabled":{WebkitTextFillColor:e.palette.text.secondary}})),Nt=({environments:e,projects:t,token:n,setProjects:a,setEnvironments:o,setToken:s,availableEnvironments:c,changeRequest:l,onClearChangeRequest:u})=>{let d=i(),{tokens:f}=qe(),[p,m]=(0,Y.useState)(),{projects:h}=ve(),_=[Z,...h.map(({name:e,id:t})=>({label:e,id:t}))],v=async e=>{let t=e.target.value;if(s?.(t),t===``){w();return}try{Ct(t),m(void 0),y(t)}catch(e){m(e.message)}},y=e=>{let[t,n]=wt(e);switch(o([n]),t){case`[]`:x(e);break;case`*`:S();break;default:C(t)}},b=e=>{!e.projects||e.projects===`*`?a([Z.id]):typeof e.projects==`string`?a([e.projects]):Array.isArray(e.projects)&&a(e.projects)},x=e=>{let t=f.find(({secret:t})=>t===e);t?b(t):m(`Invalid token. Ensure you use a valid token from this Unleash instance.`)},S=()=>{a([Z.id])},C=e=>{_.map(e=>e.id).includes(e)?a([e]):m(`Invalid token. Project ${e} does not exist.`)},w=()=>{m(void 0)};return(0,X.jsxs)(B,{sx:{pb:2},children:[(0,X.jsx)(B,{sx:{display:`flex`,alignItems:`center`,mb:2},children:(0,X.jsx)(z,{variant:`body2`,color:d.palette.text.primary,sx:{ml:1},children:`Access configuration`})}),(0,X.jsxs)(jt,{children:[(0,X.jsx)(B,{children:(0,X.jsx)(j,{arrow:!0,title:n?`Environment is automatically selected because you are using a token`:`Select environments to use in the playground`,children:(0,X.jsx)(B,{children:(0,X.jsx)(Ot,{environments:e,setEnvironments:o,availableEnvironments:c,disabled:!!(n||l)})})})}),(0,X.jsx)(B,{children:(0,X.jsx)(j,{arrow:!0,title:n?`Project is automatically selected because you are using a token`:`Select projects to use in the playground`,children:(0,X.jsx)(Ce,{selectedProjects:t,onChange:a,dataTestId:`PLAYGROUND_PROJECT_SELECT`,disabled:!!(n||l),limitTags:3})})}),(0,X.jsx)(B,{children:(0,X.jsx)(At,{label:`API token`,value:n||(l?` `:``),onChange:v,type:`text`,error:!!p,errorText:p,placeholder:`Enter your API token`,"data-testid":`PLAYGROUND_TOKEN_INPUT`,slotProps:{input:{endAdornment:n?(0,X.jsx)(g,{position:`end`,"data-testid":`TOKEN_INPUT_CLEAR_BTN`,children:(0,X.jsx)(L,{"aria-label":`clear API token`,onClick:()=>{s?.(``),w()},edge:`end`,children:(0,X.jsx)(kt,{})})}):null}},disabled:!!l})}),(0,X.jsx)(I,{condition:!!l,show:(0,X.jsxs)(B,{sx:{display:`flex`,gap:2},children:[(0,X.jsx)(B,{sx:{flex:1},children:(0,X.jsx)(Mt,{label:`Change request`,value:l?`Change request #${l}`:``,onChange:()=>{},type:`text`,disabled:!0,slotProps:{input:{endAdornment:(0,X.jsx)(g,{position:`end`,children:(0,X.jsx)(L,{"aria-label":`clear Change request results`,onClick:u,edge:`end`,children:(0,X.jsx)(kt,{})})})}}})}),(0,X.jsx)(V,{variant:`outlined`,size:`small`,to:`/projects/${t[0]}/change-requests/${l}`,component:r,nativeButton:!1,children:`View change request`})]})})]})]})},Pt=({availableEnvironments:e,environments:t,onSubmit:n,projects:r,token:i,setToken:a,setProjects:o,setEnvironments:s,context:c,setContext:l,changeRequest:u,onClearChangeRequest:d})=>(0,X.jsxs)(B,{component:`form`,onSubmit:n,sx:{display:`flex`,flexDirection:`column`},children:[(0,X.jsx)(Nt,{environments:Array.isArray(t)?t:[t],projects:r,token:i,setToken:a,setEnvironments:s,setProjects:o,availableEnvironments:e.map(({name:e})=>e),changeRequest:u,onClearChangeRequest:d}),(0,X.jsx)(Dt,{context:c,setContext:l}),(0,X.jsx)(B,{sx:{mt:2,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:(0,X.jsx)(V,{variant:`contained`,size:`large`,type:`submit`,sx:{marginLeft:`auto`},children:`Try configuration`})})]}),Ft=o(`div`)(({style:e,theme:t})=>({width:`25px`,height:`25px`,borderRadius:`50%`,color:t.palette.common.white,display:`flex`,alignItems:`center`,justifyContent:`center`,fontWeight:`bold`,...e})),It=({style:e,children:t,type:n})=>{let r=i(),a={backgroundColor:r.palette.background.alternative,color:r.palette.common.white};return n===`secondary`&&(a.backgroundColor=r.palette.background.paper,a.color=r.palette.text.secondary),(0,X.jsx)(Ft,{style:{...a,...e},children:t})},Q=({headerText:e,bodyText:t,sectionNumber:n})=>(0,X.jsx)(B,{sx:{display:`flex`,alignItems:`flex-start`,mt:2,flexDirection:`column`},children:(0,X.jsxs)(B,{sx:{display:`flex`},children:[(0,X.jsx)(B,{children:(0,X.jsx)(It,{children:n})}),(0,X.jsxs)(B,{sx:{ml:2,display:`flex`,flexDirection:`column`},children:[(0,X.jsx)(z,{variant:`body1`,sx:{fontWeight:`bold`},children:e}),(0,X.jsx)(I,{condition:!!t,show:(0,X.jsx)(z,{variant:`body1`,sx:{mt:1},children:t})})]})]})}),Lt=()=>(0,X.jsxs)(B,{sx:{ml:4},children:[(0,X.jsx)(z,{variant:`body1`,children:`Unleash playground is for helping you to understand how Unleash works, how feature flags are evaluated and for you to easily debug your feature flags.`}),(0,X.jsx)(ie,{sx:{mt:2,mb:2}}),(0,X.jsx)(z,{variant:`body1`,sx:{mb:1},children:`What you need to do is:`}),(0,X.jsx)(Q,{headerText:`Select in which environment you want to test your
1
+ import{o as e,t}from"./react-GZhdek4G.js";import{f as n,r}from"./chunk-QUQL4437-Dr42NpoL.js";import{t as i}from"./useTheme-CQqAmDLr.js";import{t as a}from"./jsx-runtime-BnvnyDTF.js";import{v as o}from"./createSimplePaletteValueFilter-BRAMrHWJ.js";import{A as s,D as c,E as l,L as u,M as d,N as f,O as p,R as m,T as h,U as g,_,a as v,c as y,f as b,g as x,j as S,k as C,l as w,n as T,o as E,r as D,s as ee,t as O,v as te,w as k}from"./useConditionallyHiddenColumns-C5q9zdfJ.js";import{t as A}from"./useMediaQuery-DGx8zAkf.js";import{t as j}from"./Tooltip-BaILXXti.js";import{T as ne,b as M,t as N}from"./TextField-oipjeg6n.js";import{t as P}from"./Popover-CUTnSn2h.js";import{i as F}from"./CircularProgress-C_LUU3DK.js";import{n as re,t as I}from"./ConditionallyRender---uTpMBn.js";import{r as L,t as R}from"./Alert-_bLyWbvx.js";import{t as z}from"./Typography-BTdLWIUX.js";import{t as B}from"./Box-BQsxfFmC.js";import{t as V}from"./Button-CebB8EPB.js";import{t as ie}from"./Divider-CsdWvu5F.js";import{a as ae,n as oe,t as se}from"./useEnvironments-CTguhgy0.js";import{a as ce,i as H,n as le,o as ue}from"./TooltipResolver-4A1YhwBy.js";import{u as de}from"./themeStyles-DGVpwkcv.js";import{t as fe}from"./Close-DyTASMSq.js";import{r as pe}from"./httpErrorResponseHandler-FMtt7Zqh.js";import{t as me}from"./createLocalStorage-WS-MCMlG.js";import{n as he,r as ge,t as _e}from"./PageContent-c0NDm5oD.js";import{n as ve,t as ye}from"./Loader-DdgXftPc.js";import{$o as be,At as xe,Fn as Se,Ir as Ce,Ko as we,Lr as Te,Pn as Ee,Qa as De,Ss as Oe,Vn as ke,Wa as U,Xa as Ae,Xs as je,_a as W,_t as Me,bi as G,bt as Ne,ct as Pe,da as K,ht as Fe,io as Ie,kr as Le,oi as Re,po as ze,pt as Be,sa as Ve,si as He,ut as Ue,vt as We,xi as Ge,ya as q,yt as Ke}from"./index-C04TEs4k.js";import{t as qe}from"./useApiTokens-C8Dqw_X1.js";import{c as Je,i as Ye,l as J,n as Xe,o as Ze,s as Qe,t as $e}from"./esm-DdgY1Q5s.js";var Y=e(t(),1),et=()=>{let{makeRequest:e,createRequest:t,errors:n,loading:r}=le({propagateErrors:!0}),i=`api/admin/playground`;return{evaluateAdvancedPlayground:async n=>{let r=t(`${i}/advanced`,{method:`POST`,body:JSON.stringify(n)});return(await e(r.caller,r.id)).json()},evaluateChangeRequestPlayground:async(n,r)=>{let a=t(`${i}/change-request/${n}`,{method:`POST`,body:JSON.stringify(r)});return(await e(a.caller,a.id)).json()},errors:n,loading:r}},tt=e(x(),1),nt=e=>{var t=e.theme,n=e.settings,r=n===void 0?{}:n,i=e.styles,a=i===void 0?[]:i,o={".cm-gutters":{}},s={};r.background&&(s.backgroundColor=r.background),r.backgroundImage&&(s.backgroundImage=r.backgroundImage),r.foreground&&(s.color=r.foreground),r.fontSize&&(s.fontSize=r.fontSize),(r.background||r.foreground)&&(o[`&`]=s),r.fontFamily&&(o[`&.cm-editor .cm-scroller`]={fontFamily:r.fontFamily}),r.gutterBackground&&(o[`.cm-gutters`].backgroundColor=r.gutterBackground),r.gutterForeground&&(o[`.cm-gutters`].color=r.gutterForeground),r.gutterBorder&&(o[`.cm-gutters`].borderRightColor=r.gutterBorder),r.caret&&(o[`.cm-content`]={caretColor:r.caret},o[`.cm-cursor, .cm-dropCursor`]={borderLeftColor:r.caret});var c={};return r.gutterActiveForeground&&(c.color=r.gutterActiveForeground),r.lineHighlight&&(o[`.cm-activeLine`]={backgroundColor:r.lineHighlight},c.backgroundColor=r.lineHighlight),o[`.cm-activeLineGutter`]=c,r.selection&&(o[`&.cm-focused .cm-selectionBackground, & .cm-line::selection, & .cm-selectionLayer .cm-selectionBackground, .cm-content ::selection`]={background:r.selection+` !important`}),r.selectionMatch&&(o[`& .cm-selectionMatch`]={backgroundColor:r.selectionMatch}),[Je.theme(o,{dark:t===`dark`}),Qe(Ze.define(a))]},rt={background:`#faf8f5`,foreground:`#b29762`,caret:`#93abdc`,selection:`#e3dcce`,selectionMatch:`#e3dcce`,gutterBackground:`#faf8f5`,gutterForeground:`#cdc4b1`,gutterBorder:`transparent`,lineHighlight:`#ddceb154`},it=[{tag:[J.comment,J.bracket],color:`#b6ad9a`},{tag:[J.atom,J.number,J.keyword,J.link,J.attributeName,J.quote],color:`#063289`},{tag:[J.emphasis,J.heading,J.tagName,J.propertyName,J.variableName],color:`#2d2006`},{tag:[J.typeName,J.url,J.string],color:`#896724`},{tag:[J.operator,J.string],color:`#1659df`},{tag:[J.propertyName],color:`#b29762`},{tag:[J.unit,J.punctuation],color:`#063289`}],at=(e=>{var t=e||{},n=t.theme,r=n===void 0?`light`:n,i=t.settings,a=i===void 0?{}:i,o=t.styles,s=o===void 0?[]:o;return nt({theme:r,settings:Xe({},rt,a),styles:[...it,...s]})})(),ot={background:`#2a2734`,foreground:`#6c6783`,caret:`#ffad5c`,selection:`#91ff6c26`,selectionMatch:`#91ff6c26`,gutterBackground:`#2a2734`,gutterForeground:`#545167`,lineHighlight:`#36334280`},st=[{tag:[J.comment,J.bracket],color:`#6c6783`},{tag:[J.atom,J.number,J.keyword,J.link,J.attributeName,J.quote],color:`#ffcc99`},{tag:[J.emphasis,J.heading,J.tagName,J.propertyName,J.className,J.variableName],color:`#eeebff`},{tag:[J.typeName,J.url],color:`#7a63ee`},{tag:J.operator,color:`#ffad5c`},{tag:J.string,color:`#ffb870`},{tag:[J.propertyName],color:`#9a86fd`},{tag:[J.unit,J.punctuation],color:`#e09142`}],ct=(e=>{var t=e||{},n=t.theme,r=n===void 0?`dark`:n,i=t.settings,a=i===void 0?{}:i,o=t.styles,s=o===void 0?[]:o;return nt({theme:r,settings:Xe({},ot,a),styles:[...st,...s]})})(),X=a(),lt=o(`aside`)(({theme:e})=>({height:`50px`,backgroundColor:e.palette.background.paper,borderTopRightRadius:e.shape.borderRadiusMedium,borderTopLeftRadius:e.shape.borderRadiusMedium,padding:e.spacing(1,2),color:e.palette.text.primary,display:`flex`,justifyContent:`space-between`,alignItems:`center`,border:`1px solid ${e.palette.divider}`})),ut=o(`div`)(({theme:e,style:t})=>({width:e.spacing(3),height:e.spacing(3),display:`flex`,alignItems:`center`,color:e.palette.background.paper,justifyContent:`center`,transition:`background-color 0.5s ease-in-out`,borderRadius:`50%`,...t})),dt=o(`div`)(({theme:e})=>({fontSize:e.fontSizes.smallBody,color:e.palette.error.dark,marginRight:e.spacing(1)})),ft=()=>(0,X.jsx)(ut,{style:{backgroundColor:i().palette.success.main},children:(0,X.jsx)(Oe,{sx:e=>({width:e.spacing(2),height:e.spacing(2)})})}),pt=()=>(0,X.jsx)(ut,{style:{backgroundColor:i().palette.error.main},children:(0,X.jsx)(Pe,{})}),mt=({context:e,setContext:t,error:n})=>{let r=i(),a=(0,Y.useCallback)(e=>{t(e)},[t]),o=`calc(6 * ${r.typography.body1.fontSize} * ${r.typography.body1.lineHeight}) + 8px`;return(0,X.jsxs)(B,{sx:{width:`100%`},children:[(0,X.jsxs)(lt,{children:[`JSON`,(0,X.jsx)(I,{condition:!!n,show:(0,X.jsxs)(B,{sx:e=>({display:`flex`,alignItems:`center`}),children:[(0,X.jsx)(dt,{children:n}),(0,X.jsx)(pt,{})]}),elseShow:(0,X.jsx)(ft,{})})]}),(0,X.jsx)($e,{value:e,minHeight:o,theme:r.mode===`dark`?ct:at,extensions:[Ye()],onChange:a,style:{border:`1px solid ${r.palette.divider}`,borderTop:`none`},placeholder:JSON.stringify({currentTime:`2022-07-04T14:13:03.929Z`,appName:`playground`,userId:`test`,remoteAddress:`127.0.0.1`},null,2)})]})};function ht(e){return Array.isArray(e)?e:[e]}var gt=e=>!e||e.length===0||e.length===1&&e[0]===`*`?`*`:ht(e),_t=e=>ht(e),vt=e=>{let t=yt(e);return t.length>0?t[0]:``},yt=e=>e.filter(({enabled:e})=>!!e).sort((e,t)=>e.sortOrder-t.sortOrder).map(({name:e})=>e),bt=(e,t)=>e?`100%`:t&&!e?`60%`:`50%`,xt=e=>typeof e==`string`?!0:Array.isArray(e)?e.every(e=>typeof e==`string`):!1,St=e=>{let t=new Set([`appName`,`environment`,`userId`,`sessionId`,`remoteAddress`,`currentTime`,`properties`]),n={...e},r=!1;for(let i in e)t.has(i)||(n.properties||={},n.properties[i]=e[i],delete n[i],r=!0);return!r&&!e.properties&&delete n.properties,n},Ct=e=>{let[t]=e.split(`.`),[n,r]=t.split(`:`);if(!n||!r)throw Error(`Invalid token format`);if(r===`*`)throw Error(`Admin tokens are not supported in the playground`)},wt=e=>{let[t]=e.split(`.`);return t.split(`:`)},Tt=e=>Ve({mode:`all`},e),Et=e=>{let t=e=>e.toSorted((e,t)=>e.sortOrder-t.sortOrder).map(e=>({key:e.name,label:e.name})),n=e.reduce(({project:e,global:t},n)=>(n.project?e.push(n):t.push(n),{project:e,global:t}),{project:[],global:[]}),r=[];return n.project.length&&r.push({groupHeader:`Project context fields`,options:t(n.project)}),n.global.length&&r.push({groupHeader:`Global context fields`,options:t(n.global)}),r},Dt=({context:e,setContext:t})=>{let n=i(),{setToastData:r}=ce(),{context:a}=Tt(),o=Et(a),[s,c]=(0,Y.useState)(),[l,d]=(0,Y.useState)(!1),[f,p]=(0,Y.useState)(``),[h,g]=(0,Y.useState)(``),_=(0,Y.useMemo)(()=>(0,tt.default)(e=>{if(!e)return c(void 0);try{let t=JSON.parse(e);d(t[f]!==void 0||t?.properties?.[f]!==void 0)}catch(e){return c(H(e))}return c(void 0)},250),[c,f,d]);(0,Y.useEffect)(()=>{_(e)},[_,e]);let v=()=>{try{let n=JSON.parse(e||`{}`);t(JSON.stringify(St({...n,[f]:h}),null,2));let r=a.find(e=>e.name===f);if(r?.legalValues&&r.legalValues.length>0||f===`currentTime`)return g(``)}catch(e){r({type:`error`,text:`Error parsing context: ${H(e)}`})}},y=(e,t)=>{if(xt(t)){if(Array.isArray(t))return g((t||[]).length>1?t.join(`,`):t[0]);g(t)}},b=()=>{if(!h||h===``)return[];let e=(a.find(e=>e.name===f)?.legalValues||[]).length>1;return h.includes(`,`)&&e?h.split(`,`):[h]};return(0,X.jsxs)(B,{children:[(0,X.jsx)(B,{sx:{display:`flex`,alignItems:`center`,mb:2},children:(0,X.jsx)(z,{variant:`body2`,color:n.palette.text.primary,sx:{ml:1},children:`Unleash context`})}),(0,X.jsxs)(B,{sx:{display:`flex`,gap:2,flexWrap:`wrap`,mb:2},children:[(0,X.jsx)(we,{label:`Context field`,labelId:`context-field-label`,id:`context-field`,value:f,onChange:e=>{if(p(e||``),e===`currentTime`)return g(new Date().toISOString());g(``)},variant:`outlined`,size:`small`,sx:{width:200,maxWidth:`100%`},options:o}),(()=>{if(f===`currentTime`){let e=m(h);return(0,X.jsx)(N,{id:`date`,label:`Date`,size:`small`,type:`datetime-local`,value:u(e?e.toISOString():new Date().toISOString()),sx:{width:200,maxWidth:`100%`},onChange:e=>{let t=m(e.target.value)?.toISOString();t&&g(t)},required:!0,slotProps:{inputLabel:{shrink:!0}}})}let e=a.find(e=>e.name===f);return e?.legalValues&&e.legalValues.length>0?(0,X.jsx)(M,{disablePortal:!0,limitTags:3,id:`context-legal-values`,multiple:!0,options:e.legalValues.map(({value:e})=>e),disableCloseOnSelect:!0,size:`small`,value:b(),onChange:y,getOptionLabel:e=>e,renderOption:(e,t,{selected:n})=>(0,X.jsxs)(`li`,{...e,children:[(0,X.jsx)(je,{icon:(0,X.jsx)(Te,{fontSize:`small`}),checkedIcon:(0,X.jsx)(Ce,{fontSize:`small`}),sx:e=>({marginRight:e.spacing(.5)}),checked:n}),t]}),sx:{width:370,maxWidth:`100%`},renderInput:e=>(0,X.jsx)(N,{...e,label:`Value`})}):(0,X.jsx)(N,{label:`Value`,id:`context-value`,sx:{width:370,maxWidth:`100%`},placeholder:`value1,value2,value3`,size:`small`,value:h,onChange:e=>g(e.target.value||``)})})(),(0,X.jsx)(V,{variant:`outlined`,disabled:!f||!!s,onClick:v,sx:{width:`95px`,maxHeight:`40px`},children:`${l?`Replace`:`Add`} `})]}),(0,X.jsx)(mt,{context:e,setContext:t,error:s})]})},Ot=({environments:e,setEnvironments:t,availableEnvironments:n,disabled:r})=>{let i=[...n.map(e=>({label:e,id:e}))],a=i.filter(({id:t})=>e.includes(t));return(0,X.jsx)(M,{disablePortal:!0,limitTags:3,id:`environment`,multiple:!0,options:i,sx:{flex:1},renderInput:e=>(0,X.jsx)(N,{...e,label:`Environments`}),renderOption:Se,renderValue:(e,t)=>e.map((e,n)=>{let{key:r,...i}=t({index:n});return(0,X.jsx)(ne,{size:`small`,...i,label:e.label},r)}),getOptionLabel:({label:e})=>e,disableCloseOnSelect:!1,size:`small`,value:a,onChange:(e,n,r)=>{let i=n;return r===`clear`||i===null?t([]):Array.isArray(i)?i.length===0?t([]):t(i.map(({id:e})=>e)):t([i.id])},disabled:r,"data-testid":`PLAYGROUND_ENVIRONMENT_SELECT`})},Z={label:`ALL`,id:`*`},kt=o(D)({fontSize:`1.25rem`}),At=o(y)(()=>({width:`100%`})),jt=o(B)(({theme:e})=>({display:`grid`,columnGap:e.spacing(2),rowGap:e.spacing(2),gridTemplateColumns:`1fr`,[e.breakpoints.up(`md`)]:{gridTemplateColumns:`1fr 1fr`}})),Mt=o(At)(({theme:e})=>({"& label":{WebkitTextFillColor:e.palette.text.secondary},"& input.Mui-disabled":{WebkitTextFillColor:e.palette.text.secondary}})),Nt=({environments:e,projects:t,token:n,setProjects:a,setEnvironments:o,setToken:s,availableEnvironments:c,changeRequest:l,onClearChangeRequest:u})=>{let d=i(),{tokens:f}=qe(),[p,m]=(0,Y.useState)(),{projects:h}=ve(),_=[Z,...h.map(({name:e,id:t})=>({label:e,id:t}))],v=async e=>{let t=e.target.value;if(s?.(t),t===``){w();return}try{Ct(t),m(void 0),y(t)}catch(e){m(e.message)}},y=e=>{let[t,n]=wt(e);switch(o([n]),t){case`[]`:x(e);break;case`*`:S();break;default:C(t)}},b=e=>{!e.projects||e.projects===`*`?a([Z.id]):typeof e.projects==`string`?a([e.projects]):Array.isArray(e.projects)&&a(e.projects)},x=e=>{let t=f.find(({secret:t})=>t===e);t?b(t):m(`Invalid token. Ensure you use a valid token from this Unleash instance.`)},S=()=>{a([Z.id])},C=e=>{_.map(e=>e.id).includes(e)?a([e]):m(`Invalid token. Project ${e} does not exist.`)},w=()=>{m(void 0)};return(0,X.jsxs)(B,{sx:{pb:2},children:[(0,X.jsx)(B,{sx:{display:`flex`,alignItems:`center`,mb:2},children:(0,X.jsx)(z,{variant:`body2`,color:d.palette.text.primary,sx:{ml:1},children:`Access configuration`})}),(0,X.jsxs)(jt,{children:[(0,X.jsx)(B,{children:(0,X.jsx)(j,{arrow:!0,title:n?`Environment is automatically selected because you are using a token`:`Select environments to use in the playground`,children:(0,X.jsx)(B,{children:(0,X.jsx)(Ot,{environments:e,setEnvironments:o,availableEnvironments:c,disabled:!!(n||l)})})})}),(0,X.jsx)(B,{children:(0,X.jsx)(j,{arrow:!0,title:n?`Project is automatically selected because you are using a token`:`Select projects to use in the playground`,children:(0,X.jsx)(Ee,{selectedProjects:t,onChange:a,dataTestId:`PLAYGROUND_PROJECT_SELECT`,disabled:!!(n||l),limitTags:3})})}),(0,X.jsx)(B,{children:(0,X.jsx)(At,{label:`API token`,value:n||(l?` `:``),onChange:v,type:`text`,error:!!p,errorText:p,placeholder:`Enter your API token`,"data-testid":`PLAYGROUND_TOKEN_INPUT`,slotProps:{input:{endAdornment:n?(0,X.jsx)(g,{position:`end`,"data-testid":`TOKEN_INPUT_CLEAR_BTN`,children:(0,X.jsx)(L,{"aria-label":`clear API token`,onClick:()=>{s?.(``),w()},edge:`end`,children:(0,X.jsx)(kt,{})})}):null}},disabled:!!l})}),(0,X.jsx)(I,{condition:!!l,show:(0,X.jsxs)(B,{sx:{display:`flex`,gap:2},children:[(0,X.jsx)(B,{sx:{flex:1},children:(0,X.jsx)(Mt,{label:`Change request`,value:l?`Change request #${l}`:``,onChange:()=>{},type:`text`,disabled:!0,slotProps:{input:{endAdornment:(0,X.jsx)(g,{position:`end`,children:(0,X.jsx)(L,{"aria-label":`clear Change request results`,onClick:u,edge:`end`,children:(0,X.jsx)(kt,{})})})}}})}),(0,X.jsx)(V,{variant:`outlined`,size:`medium`,to:`/projects/${t[0]}/change-requests/${l}`,component:r,nativeButton:!1,children:`View change request`})]})})]})]})},Pt=({availableEnvironments:e,environments:t,onSubmit:n,projects:r,token:i,setToken:a,setProjects:o,setEnvironments:s,context:c,setContext:l,changeRequest:u,onClearChangeRequest:d})=>(0,X.jsxs)(B,{component:`form`,onSubmit:n,sx:{display:`flex`,flexDirection:`column`},children:[(0,X.jsx)(Nt,{environments:Array.isArray(t)?t:[t],projects:r,token:i,setToken:a,setEnvironments:s,setProjects:o,availableEnvironments:e.map(({name:e})=>e),changeRequest:u,onClearChangeRequest:d}),(0,X.jsx)(Dt,{context:c,setContext:l}),(0,X.jsx)(B,{sx:{mt:2,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:(0,X.jsx)(V,{variant:`contained`,size:`large`,type:`submit`,sx:{marginLeft:`auto`},children:`Try configuration`})})]}),Ft=o(`div`)(({style:e,theme:t})=>({width:`25px`,height:`25px`,borderRadius:`50%`,color:t.palette.common.white,display:`flex`,alignItems:`center`,justifyContent:`center`,fontWeight:`bold`,...e})),It=({style:e,children:t,type:n})=>{let r=i(),a={backgroundColor:r.palette.background.alternative,color:r.palette.common.white};return n===`secondary`&&(a.backgroundColor=r.palette.background.paper,a.color=r.palette.text.secondary),(0,X.jsx)(Ft,{style:{...a,...e},children:t})},Q=({headerText:e,bodyText:t,sectionNumber:n})=>(0,X.jsx)(B,{sx:{display:`flex`,alignItems:`flex-start`,mt:2,flexDirection:`column`},children:(0,X.jsxs)(B,{sx:{display:`flex`},children:[(0,X.jsx)(B,{children:(0,X.jsx)(It,{children:n})}),(0,X.jsxs)(B,{sx:{ml:2,display:`flex`,flexDirection:`column`},children:[(0,X.jsx)(z,{variant:`body1`,sx:{fontWeight:`bold`},children:e}),(0,X.jsx)(I,{condition:!!t,show:(0,X.jsx)(z,{variant:`body1`,sx:{mt:1},children:t})})]})]})}),Lt=()=>(0,X.jsxs)(B,{sx:{ml:4},children:[(0,X.jsx)(z,{variant:`body1`,children:`Unleash playground is for helping you to understand how Unleash works, how feature flags are evaluated and for you to easily debug your feature flags.`}),(0,X.jsx)(ie,{sx:{mt:2,mb:2}}),(0,X.jsx)(z,{variant:`body1`,sx:{mb:1},children:`What you need to do is:`}),(0,X.jsx)(Q,{headerText:`Select in which environment you want to test your
2
2
  feature flag configuration`,bodyText:`You can also specify specific projects, or check
3
- flags in all projects.`,sectionNumber:`1`}),(0,X.jsx)(Q,{headerText:`Select a context field that you'd like to check`,bodyText:`You can configure as many context fields as you want. You can also leave the context empty to test against an empty context.`,sectionNumber:`2`}),(0,X.jsx)(Q,{headerText:`Submit the form to try the configuration`,bodyText:`The results of evaluating your feature flags will appear after you submit the form. Then view the results.`,sectionNumber:`3`})]}),Rt=F((0,X.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 17h-2v-2h2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25`}),`Help`),zt=o(P)(({theme:e})=>({"& .MuiPaper-root":{borderRadius:e.shape.borderRadiusExtraLarge,border:`1px solid ${e.palette.divider}`,padding:e.spacing(8,4),maxWidth:`500px`}})),Bt=()=>{let[e,t]=(0,Y.useState)(null),n=e=>t(e.currentTarget),r=()=>t(null);return(0,X.jsxs)(B,{children:[(0,X.jsx)(L,{onClick:n,"aria-label":`Open Playground guidance`,children:(0,X.jsx)(Rt,{})}),(0,X.jsxs)(zt,{open:!!e,anchorEl:e,onClose:r,anchorOrigin:{vertical:`bottom`,horizontal:`center`},transformOrigin:{vertical:`top`,horizontal:`center`},sx:e=>({zIndex:e.zIndex.tooltip,background:`none`}),children:[(0,X.jsx)(L,{onClick:r,sx:{position:`absolute`,right:25,top:15},children:(0,X.jsx)(fe,{})}),(0,X.jsx)(Lt,{})]})]})},Vt=e=>(0,X.jsx)(`svg`,{width:14,height:14,viewBox:`0 0 14 14`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,X.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M8.84818 0.184159C8.56367 -0.0789547 8.1234 -0.0575747 7.86482 0.231912C7.60623 0.521399 7.62724 0.96937 7.91175 1.23248C9.48292 2.68551 10.6076 4.74934 10.6076 7C10.6076 9.25066 9.48292 11.3145 7.91175 12.7675C7.62724 13.0306 7.60623 13.4786 7.86482 13.7681C8.1234 14.0576 8.56367 14.079 8.84818 13.8158C10.6396 12.1592 11.9998 9.73702 11.9998 7C11.9998 4.26298 10.6396 1.84083 8.84818 0.184159ZM6.04105 2.23302C6.29109 1.93586 6.73054 1.90121 7.02259 2.15563C8.33146 3.29586 9.35426 5.02309 9.35426 6.99995C9.35426 8.97682 8.33145 10.7039 7.02259 11.8441C6.73054 12.0986 6.29109 12.0639 6.04105 11.7668C5.79101 11.4696 5.82506 11.0225 6.11711 10.768C7.19425 9.82969 7.96199 8.46967 7.96199 6.99995C7.96199 5.53021 7.19423 4.17007 6.11711 3.23173C5.82506 2.97731 5.79101 2.53017 6.04105 2.23302ZM6.56908 7.00015C6.56908 8.56492 5.3224 9.83342 3.78454 9.83342C2.24668 9.83342 1 8.56492 1 7.00015C1 5.43539 2.24668 4.16689 3.78454 4.16689C5.3224 4.16689 6.56908 5.43539 6.56908 7.00015Z`,fill:`currentColor`})}),Ht=e=>(0,X.jsx)(`svg`,{width:14,height:14,viewBox:`0 0 14 14`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,X.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M8.84835 0.184159C8.56384 -0.0789547 8.12358 -0.0575747 7.86499 0.231912C7.6064 0.521399 7.62741 0.96937 7.91192 1.23248C9.4831 2.68551 10.6078 4.74934 10.6078 7C10.6078 7.40738 10.5709 7.80863 10.5012 8.20125L11.6597 9.35972C11.8783 8.60937 12 7.81877 12 7C12 4.26298 10.6397 1.84083 8.84835 0.184159ZM9.35443 6.99995L9.35418 7.0542L7.63252 5.33255C7.30901 4.52372 6.76993 3.80029 6.11728 3.23173C5.82523 2.97731 5.79118 2.53017 6.04122 2.23302C6.29127 1.93586 6.73072 1.90121 7.02276 2.15563C8.33164 3.29586 9.35443 5.02309 9.35443 6.99995ZM7.57827 8.79752L6.48307 7.70233C6.17606 8.92745 5.08437 9.83342 3.78471 9.83342C2.24685 9.83342 1.00017 8.56492 1.00017 7.00015C1.00017 5.69492 1.8676 4.59583 3.04789 4.26714L0.458225 1.67748C0.172794 1.39205 0.178843 0.923223 0.471736 0.63033C0.764629 0.337437 1.23345 0.331388 1.51889 0.616819L13.2132 12.3111C13.4986 12.5965 13.4926 13.0654 13.1997 13.3583C12.9068 13.6511 12.4379 13.6572 12.1525 13.3718L10.556 11.7753C10.0694 12.539 9.48623 13.2259 8.84835 13.8158C8.56384 14.079 8.12358 14.0576 7.86499 13.7681C7.6064 13.4786 7.62741 13.0306 7.91192 12.7675C8.54021 12.1865 9.0971 11.5078 9.53922 10.7585L8.62356 9.84281C8.20906 10.6195 7.64861 11.2989 7.02276 11.8441C6.73072 12.0986 6.29127 12.0639 6.04122 11.7668C5.79118 11.4696 5.82523 11.0225 6.11728 10.768C6.73471 10.2302 7.25048 9.55374 7.57827 8.79752Z`,fill:`currentColor`})}),Ut=e=>e===`unknown`||e===`unevaluated`?[K,`info`]:e===!0?[Vt,`success`]:[Ht,`error`],$=({enabled:e,label:t,showIcon:n=!0})=>{let[r,i]=Ut(e);return(0,X.jsx)(Le,{color:i,icon:n?(0,X.jsx)(r,{"aria-hidden":!0,color:i,strokeWidth:`0.25`}):void 0,children:t})},Wt=o(B)(({theme:e})=>({display:`flex`,alignItems:`center`,padding:e.spacing(1,0,1,2)})),Gt=o(B)(()=>({marginRight:`auto`})),Kt=({feature:e})=>{let[t,n]=e?.isEnabled?[!0,`True`]:e?.strategies?.result===`unknown`?[`unknown`,`Unknown`]:[!1,`False`];return(0,X.jsx)(Wt,{children:(0,X.jsx)(Gt,{"data-loading":!0,children:(0,X.jsx)($,{enabled:t,label:n,showIcon:t!==`unknown`})})})};function qt(e){return e===void 0?!0:Object.values(e).every(e=>e&&typeof e==`object`?qt(e):e===null)}var Jt=e=>e.strategies?.data?.find(e=>!ke.includes(e.name)),Yt=e=>e.strategies?.data?.length>0&&!e.strategies?.data?.find(e=>ke.includes(e.name)),Xt=o(`div`)({display:`flex`,justifyContent:`space-between`,width:`100%`}),Zt=o(`hgroup`)(({theme:e})=>({display:`inline-flex`,alignItems:`center`,gap:e.spacing(1.5)})),Qt=o(`h3`)(({theme:e})=>({fontWeight:`bold`,fontSize:e.typography.subtitle1.fontSize,margin:0})),$t=({feature:e,input:t,onClose:n})=>{let r=i(),[a,o,s]=e.isEnabled?[`This feature flag is True in ${t?.environment} because `,`at least one strategy is True`,r.palette.success.contrastText]:e.hasUnsatisfiedDependency&&!e.isEnabledInCurrentEnvironment?[`This feature flag is False in ${t?.environment} because `,`parent dependency is not satisfied and the environment is disabled`,r.palette.error.contrastText]:e.isEnabledInCurrentEnvironment?Yt(e)?[`This feature flag is Unknown in ${t?.environment} because `,`no strategies could be fully evaluated`,r.palette.warning.contrastText]:Jt(e)?[`This feature flag is Unknown in ${t?.environment} because `,`not all strategies could be fully evaluated`,r.palette.warning.contrastText]:e.hasUnsatisfiedDependency?[`This feature flag is False in ${t?.environment} because `,`parent dependency is not satisfied`,r.palette.error.contrastText]:[`This feature flag is False in ${t?.environment} because `,`all strategies are either False or could not be fully evaluated`,r.palette.error.contrastText]:[`This feature flag is False in ${t?.environment} because `,`the environment is disabled`,r.palette.error.contrastText],c=qt(t?.context)?`You did not provide a value for your context field in step 2 of the configuration`:void 0,l=Jt(e)?`This feature uses custom strategies. Custom strategies can't be evaluated, so they will be marked accordingly.`:void 0,u=n&&(e=>{e.stopPropagation(),n()});return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(Xt,{children:[(0,X.jsxs)(Zt,{children:[(0,X.jsx)(Qt,{children:e.name}),(0,X.jsx)(`p`,{children:e?.strategies?.result===`unknown`?(0,X.jsx)($,{enabled:`unknown`,label:`Unknown`,showIcon:!1}):(0,X.jsx)($,{enabled:e.isEnabled,label:e.isEnabled?`True`:`False`})})]}),(0,X.jsx)(L,{"aria-label":`Close`,onClick:u,children:(0,X.jsx)(be,{})})]}),(0,X.jsxs)(`p`,{children:[a,(0,X.jsx)(z,{color:s,component:`span`,children:o}),`.`]}),c?(0,X.jsx)(R,{color:`info`,children:c}):null,l?(0,X.jsx)(R,{severity:`warning`,color:`info`,children:l}):null]})},en=o(`div`,{shouldForwardProp:e=>e!==`variant`})(({theme:e,variant:t})=>({"--font-size":e.typography.body2.fontSize,display:`flex`,alignItems:`center`,gap:e.spacing(1),padding:e.spacing(.5,.25),color:t===`ok`?e.palette.success.dark:e.palette.error.dark,fontSize:`var(--font-size)`,svg:{fontSize:`calc(var(--font-size) * 1.25)`}})),tn=()=>(0,X.jsxs)(en,{variant:`ok`,children:[(0,X.jsx)(Te,{"aria-hidden":`true`}),(0,X.jsx)(`p`,{children:`Constraint met by value in context`})]}),nn=({text:e})=>(0,X.jsxs)(en,{variant:`error`,children:[(0,X.jsx)(v,{"aria-hidden":`true`}),(0,X.jsx)(`p`,{children:e})]}),rn=({constraint:e,input:t})=>{if(!e)return null;let n=()=>{let n=t?.context[e.contextName];return e.operator===`REGEX`&&n&&e.value?`Constraint not met – the value in the context ${e.contextName}: { ${n} } is not matching ${e.operator} ${e.value}`:n?`Constraint not met – the value in the context: { ${n} } is not ${e.operator} ${e.contextName}`:`Constraint not met – no value was specified for ${e.contextName}`};return(0,X.jsx)(q,{children:(0,X.jsxs)(`div`,{children:[(0,X.jsx)(Pe,{...e}),e.result?(0,X.jsx)(tn,{}):(0,X.jsx)(nn,{text:n()})]})})},an=o(B)(({theme:e})=>({width:`auto`,height:`auto`,padding:e.spacing(2,3),borderRadius:e.shape.borderRadiusMedium,border:`1px solid ${e.palette.divider}`})),on=({segment:e,input:t})=>(0,X.jsx)(Be,{segment:e,constraintList:e.constraints.length>0?(0,X.jsx)(Ge,{children:e.constraints.map(e=>(0,X.jsx)(rn,{constraint:e,input:t},W(e)))}):void 0,isExpanded:!0}),sn=({strategyResult:e,input:t})=>{let{name:n,constraints:r,segments:i,parameters:a}=e,o=Re(e),{strategies:s}=Ue(),{isCustomStrategy:c,customStrategyParameters:l}=Me(e,s),u=!!(i&&i.length>0),d=!!(r&&r?.length>0),f=n!=="default"&&Object.keys(Ae).includes(n);if(!a)return null;let p=[...u?i.map(e=>(0,X.jsx)(on,{segment:e,input:t},W(e))):[],...d?r.map(e=>(0,X.jsx)(rn,{constraint:e,input:t},W(e))):[],f&&o.map((e,t)=>(0,X.jsx)(q,{children:e},t)),c&&l.map((e,t)=>(0,X.jsx)(q,{children:e},t)),n==="default"&&(0,X.jsxs)(an,{sx:{width:`100%`},children:[`The standard strategy is `,(0,X.jsx)(Le,{color:`success`,children:`ON`}),` for all users.`]},`default-on`)].filter(Boolean),{variant:m,variants:h}=e.result;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Ge,{children:p}),h?.length?(0,X.jsx)(ze,{variants:h,selected:m?.name}):null]})},cn=({strategy:e,input:t,className:n})=>{let{result:r}=e,i=r.evaluationStatus===`incomplete`||r.evaluationStatus===`unevaluated`?`Not evaluated`:r.enabled?`True`:`False`;return(0,X.jsx)(He,{strategy:{...e,id:`${W(e)}`},strategyHeaderLevel:4,className:n,headerItemsLeft:e.disabled?null:(0,X.jsx)($,{showIcon:!1,enabled:r.enabled,label:i}),children:(0,X.jsx)(sn,{strategyResult:e,input:t})})},ln=o(`hgroup`)(({theme:e})=>({paddingBottom:e.spacing(2)})),un=o(`h4`)(({theme:e})=>({fontWeight:`normal`,fontSize:e.typography.body1.fontSize,margin:0})),dn=o(`p`)(({theme:e})=>({fontWeight:`bold`,fontSize:e.typography.body2.fontSize})),fn=o(Ie)(({theme:e})=>({marginInline:`calc(var(--popover-inline-padding) * -1)`,borderTop:`1px solid ${e.palette.divider}`,"> li:last-of-type":{paddingBottom:0}})),pn=({strategies:e,input:t,titlePrefix:n,infoText:r})=>e.length===0?null:(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(ln,{children:[(0,X.jsx)(un,{children:`${n?n.concat(` strategies`):`Strategies`} (${e?.length})`}),r?(0,X.jsx)(dn,{children:r}):null]}),(0,X.jsx)(fn,{children:e?.map((e,n)=>(0,X.jsxs)(Fe,{children:[n>0?(0,X.jsx)(We,{}):``,(0,X.jsx)(cn,{strategy:e,input:t})]},e.id))})]}),mn=({feature:e})=>{if(!e?.strategies?.data)return null;let t;if(e.hasUnsatisfiedDependency&&!e.isEnabledInCurrentEnvironment)t=`If the environment was enabled and parent dependencies were satisfied`;else if(e.hasUnsatisfiedDependency)t=`If parent dependencies were satisfied`;else if(!e.isEnabledInCurrentEnvironment)t=`If the environment was enabled`;else return;return(0,X.jsxs)(R,{severity:`info`,color:`info`,children:[t,`, then this feature flag would be`,` `,e.strategies?.result?`TRUE`:`FALSE`,` with strategies evaluated like this:`]})},hn=({feature:e,input:t})=>{let n=e.strategies?.data?.filter(e=>!e.disabled),r=e.strategies?.data?.filter(e=>e.disabled),i=r?.length>0;return(e?.strategies?.data.length??0)===0?(0,X.jsx)(R,{severity:`info`,children:`There are no strategies added to this feature flag in the selected environment.`}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(mn,{feature:e}),(0,X.jsx)(pn,{strategies:n||[],input:t,titlePrefix:i?`Enabled`:void 0}),i?(0,X.jsx)(pn,{strategies:r,input:t,titlePrefix:`Disabled`,infoText:`Disabled strategies are not evaluated for the overall result.`}):null]})},gn=o(`div`)(({theme:e})=>({alignItems:`flex-end`,color:e.palette.divider})),_n=({feature:e,input:t})=>{let[n,r]=(0,Y.useState)(!1),i=(0,Y.useRef)(null);return(0,X.jsxs)(gn,{children:[(0,X.jsx)(L,{onClick:()=>{r(!n)},children:(0,X.jsx)(K,{ref:i})}),(0,X.jsxs)(P,{open:n,onClose:()=>r(!1),anchorEl:i.current,anchorOrigin:{vertical:`top`,horizontal:`right`},transformOrigin:{vertical:`center`,horizontal:`left`},slotProps:{paper:{sx:e=>({"--popover-inline-padding":e.spacing(4),paddingInline:`var(--popover-inline-padding)`,paddingBlock:e.spacing(3),display:`flex`,flexDirection:`column`,width:728,maxWidth:`100%`,height:`auto`,gap:e.spacing(3),overflowY:`auto`,backgroundColor:e.palette.background.elevation1,borderRadius:e.shape.borderRadius})}},children:[(0,X.jsx)($t,{feature:e,input:t,onClose:()=>r(!1)}),(0,X.jsx)(hn,{feature:e,input:t})]})]})},vn=e=>e.feature?(0,X.jsx)(_n,{...e}):null,yn=F((0,X.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m4.59-12.42L10 14.17l-2.59-2.58L6 13l4 4 8-8z`}),`CheckCircleOutlined`),bn=o(`div`)(({theme:e})=>({padding:e.spacing(4),maxWidth:`400px`})),xn=o(z)(({theme:e})=>({marginBottom:e.spacing(2)})),Sn=o(yn)(({theme:e})=>({color:e.palette.success.main})),Cn=[{id:`Icon`,cell:({row:{original:{selected:e}}})=>(0,X.jsx)(I,{condition:e,show:(0,X.jsx)(T,{icon:(0,X.jsx)(Sn,{})})}),meta:{maxWidth:25}},{id:`name`,header:`Name`,accessorKey:`name`,cell:({row:{original:{name:e}}})=>(0,X.jsx)(_,{children:e}),meta:{maxWidth:175,width:175}},{id:`weight`,header:`Weight`,accessorKey:`weight`,sortingFn:`alphanumeric`,cell:({row:{original:{weight:e}}})=>(0,X.jsx)(_,{children:e}),meta:{maxWidth:75}}],wn=({variants:e,selectedVariant:t})=>{let n=i(),r=p({columns:Cn,data:(0,Y.useMemo)(()=>e.map(e=>({name:e.name,weight:`${f(e.weight)}%`,selected:e.name===t})),[e,t]),initialState:{sorting:[{id:`name`,desc:!1}]},getCoreRowModel:s(),getSortedRowModel:d(),autoResetAll:!1,enableSortingRemoval:!1});return(0,X.jsxs)(bn,{children:[(0,X.jsx)(xn,{variant:`subtitle2`,children:`Variant Information`}),(0,X.jsx)(xn,{variant:`body2`,children:`The following table shows the variants defined on this feature toggle and the variant result based on your context configuration.`}),(0,X.jsx)(xn,{variant:`body2`,children:`If you include "userId" or "sessionId" in your context, the variant will be the same every time because unleash uses these properties to ensure that the user receives the same experience.`}),(0,X.jsxs)(l,{rowHeight:`dense`,children:[(0,X.jsx)(ee,{tableInstance:r}),(0,X.jsx)(ae,{children:r.getRowModel().rows.map(e=>{let t={};return e.original.selected||(t.color=n.palette.text.secondary),(0,X.jsx)(oe,{hover:!0,children:e.getVisibleCells().map(e=>(0,X.jsx)(h,{style:t,children:c(e.column.columnDef.cell,e.getContext())},e.id))},e.id)})})]})]})},Tn=o(`div`)(()=>({maxWidth:`100%`,display:`flex`,alignItems:`center`,wordBreak:`break-all`})),En=({variant:e,variants:t,feature:n,isEnabled:r})=>{let a=i(),[o,s]=(0,Y.useState)(null),c=e=>s(e.currentTarget),l=()=>s(null),u=!!o;return(0,X.jsxs)(Tn,{children:[e,(0,X.jsx)(I,{condition:!!t&&t.length>0&&r,show:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(L,{onClick:c,children:(0,X.jsx)(K,{})}),(0,X.jsx)(P,{open:u,id:`${n}-result-variants`,onClose:l,anchorEl:o,anchorOrigin:{vertical:`bottom`,horizontal:-320},slotProps:{paper:{sx:{borderRadius:`${a.shape.borderRadiusLarge}px`}}},children:(0,X.jsx)(wn,{variants:t,selectedVariant:e})})]})})]})},Dn=({features:e})=>{let t=A(i().breakpoints.down(`sm`)),n=C(),r=(0,Y.useMemo)(()=>[...Object.keys(e[0].context).map(e=>n.accessor(t=>t.context?.[e],{id:`context_${e}`,header:U(e),cell:({getValue:e})=>(0,X.jsx)(E,{value:String(e()??``)}),meta:{minWidth:160}})),n.accessor(e=>e.variant?.name??``,{id:`variant`,header:`Variant`,sortingFn:`alphanumeric`,cell:({getValue:e,row:{original:{variant:t,name:n,variants:r,isEnabled:i}}})=>(0,X.jsx)(En,{variant:t?.enabled?String(e()):``,variants:r,feature:n,isEnabled:i}),meta:{maxWidth:200}}),n.accessor(e=>e?.isEnabled?`true`:e?.strategies?.result===`unknown`?`unknown`:`false`,{id:`isEnabled`,header:`isEnabled`,cell:({row:e})=>(0,X.jsx)(Kt,{feature:e.original}),sortingFn:Ke.playgroundResultState,sortDescFirst:!0,meta:{maxWidth:120}}),n.display({id:`info`,header:``,cell:({row:e})=>(0,X.jsx)(vn,{feature:e.original,input:{environment:e.original.environment,context:e.original.context}}),meta:{maxWidth:70}})],[]),a=p({columns:r,data:e,getCoreRowModel:s(),getSortedRowModel:d(),getFilteredRowModel:S(),autoResetAll:!1,enableSortingRemoval:!1,enableMultiSort:!1});O([{condition:t,columns:[`variant`]}],a.setColumnVisibility,r);let o=(0,Y.useRef)(null);return(0,X.jsx)(B,{ref:o,sx:{overflow:`auto`,maxHeight:`800px`},children:(0,X.jsx)(G,{parentRef:o,tableInstance:a})})},On=o(`div`,{})(({theme:e})=>({flexGrow:0,...de,justifyContent:`flex-start`,margin:e.spacing(0,1.5)})),kn=o(B)(({theme:e})=>({display:`flex`,flexDirection:`row`,gap:e.spacing(1)})),An=({value:e})=>{let t=i(),[n,r]=(0,Y.useState)(null),a=e=>r(e.currentTarget),o=()=>r(null),s=!!n,c=(e||[]).filter(e=>e.isEnabled),l=(e||[]).filter(e=>!e.isEnabled);return(0,X.jsxs)(On,{children:[(0,X.jsxs)(kn,{children:[(0,X.jsx)(I,{condition:c.length>0,show:(0,X.jsx)($,{enabled:!0,label:`${c.length}`,showIcon:!0})}),(0,X.jsx)(I,{condition:l.length>0,show:(0,X.jsx)($,{enabled:!1,label:`${l.length}`,showIcon:!0})})]}),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(L,{onClick:a,children:(0,X.jsx)(K,{})}),(0,X.jsxs)(P,{open:s,id:`${e}-result-details`,onClose:o,anchorEl:n,anchorOrigin:{vertical:`bottom`,horizontal:-320},slotProps:{paper:{sx:{borderRadius:`${t.shape.borderRadiusLarge}px`,padding:t.spacing(3)}}},children:[(0,X.jsx)(z,{variant:`subtitle2`,sx:{mb:3},children:e[0].environment}),(0,X.jsx)(Dn,{features:e})]})]})]})},jn=({features:e})=>{let t=Object.keys(e),n=e[t[0]],r=n[0].context,i=(0,Y.useMemo)(()=>n.map((n,r)=>({...Object.fromEntries(t.map(t=>[t,e[t][r]]))})),[JSON.stringify(e)]),a=C(),o=p({columns:(0,Y.useMemo)(()=>{let e=Object.keys(r).map(e=>a.accessor(n=>n[t[0]].context[e],{id:`context_${e}`,header:U(e),cell:({getValue:e})=>(0,X.jsx)(E,{value:String(e()??``)}),meta:{minWidth:160}})),n=t.map(e=>a.accessor(t=>t[e]?.isEnabled?`true`:t[e]?.strategies?.result===`unknown`?`unknown`:`false`,{id:e,header:e,cell:({row:t})=>(0,X.jsxs)(B,{sx:{display:`flex`},children:[(0,X.jsx)(Kt,{feature:t.original[e]}),(0,X.jsx)(vn,{feature:t.original[e],input:{environment:t.original[e].environment,context:t.original[e].context}})]}),sortingFn:Ke.playgroundResultState,meta:{maxWidth:140}}));return[...e,...n]},[]),data:i,getCoreRowModel:s(),getSortedRowModel:d(),getFilteredRowModel:S(),autoResetAll:!1,enableSortingRemoval:!1,enableMultiSort:!1}),c=(0,Y.useRef)(null);return(0,X.jsx)(B,{ref:c,sx:{overflow:`auto`,maxHeight:`800px`},children:(0,X.jsx)(G,{parentRef:c,tableInstance:o})})},Mn=o(`div`,{})(({theme:e})=>({flexGrow:0,...de,justifyContent:`flex-start`,margin:e.spacing(0,1.5)})),Nn=o(V)(({theme:e})=>({textAlign:`left`,textDecorationStyle:`dotted`,textDecorationLine:`underline`,textUnderlineOffset:e.spacing(.75),color:e.palette.neutral.dark,padding:0,fontWeight:`normal`})),Pn=({value:e})=>{let t=i(),[n,r]=(0,Y.useState)(null);return(0,X.jsx)(Mn,{children:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Nn,{variant:`text`,onClick:e=>r(e.currentTarget),children:`View diff`}),(0,X.jsxs)(P,{open:!!n,id:`${e}-result-details`,onClose:()=>r(null),anchorEl:n,anchorOrigin:{vertical:`bottom`,horizontal:-320},slotProps:{paper:{sx:{borderRadius:`${t.shape.borderRadiusLarge}px`,padding:t.spacing(3)}}},children:[(0,X.jsx)(z,{variant:`subtitle2`,sx:{mb:3},children:`Environments diff`}),(0,X.jsx)(jn,{features:e})]})]})})},Fn=e=>e.reduce((e,t)=>e+Object.values(t.environments).flatMap(e=>Object.keys(e)).length,0),In=e=>e<0?`invalid bucket`:e>=2e4?`20000+`:e>=1e4?`10000-20000`:e>=1e3?`1000-10000`:e>=100?`100-1000`:`0-100`,{value:Ln,setValue:Rn}=me(`AdvancedPlaygroundResultsTable:v1`,{id:`name`,desc:!1}),zn=({features:e,input:t,loading:r})=>{let{trackEvent:a}=ue();e&&a(`playground`,{props:{eventType:`number-of-combinations`,count:In(Fn(e))}});let[o,c]=n(),l=he(r),[u,f]=(0,Y.useState)(o.get(`search`)||``),m=A(i().breakpoints.down(`md`)),h=e&&e.length>0?Object.keys(e[0].environments).length:0,g=(0,Y.useMemo)(()=>{let e=[{id:`name`,header:`Name`,accessorKey:`name`,cell:({getValue:e,row:{original:t}})=>(0,X.jsx)(Oe,{title:String(e()??``),to:`/projects/${t?.projectId}/features/${e()}`}),meta:{searchable:!0,minWidth:160}},{id:`projectId`,header:`Project ID`,accessorKey:`projectId`,sortingFn:`alphanumeric`,cell:({getValue:e})=>{let t=String(e()??``);return(0,X.jsx)(Oe,{title:t,to:`/projects/${t}`})},meta:{filterName:`projectId`,searchable:!0,minWidth:150}},...t?.environments?.map(e=>({id:`environments.${e}`,header:r?``:U(e),cell:({row:t})=>(0,X.jsx)(An,{value:t.original.environments[e]}),meta:{maxWidth:150,align:`left`}}))||[]];return h>1&&e.push({id:`diff`,header:`Diff`,cell:({row:e})=>(0,X.jsx)(Pn,{value:e.original.environments}),meta:{minWidth:150,align:`left`}}),e},[t,r]),{data:_,getSearchText:v,getSearchContext:y}=b(g,u,e||[]),x=(0,Y.useMemo)(()=>r?[,,,,,].fill({name:`Feature name`,projectId:`Feature Project`,environments:{name:`Feature Environments`,variants:[]},enabled:!0}):_,[_,r]),[S]=(0,Y.useState)(()=>({sorting:[{id:o.get(`sort`)||Ln.id,desc:o.has(`order`)?o.get(`order`)===`desc`:Ln.desc}]})),C=p({columns:g,data:x,initialState:S,defaultColumn:{cell:({getValue:e})=>(0,X.jsx)(E,{value:String(e()??``)})},getCoreRowModel:s(),getSortedRowModel:d(),autoResetAll:!1,enableSortingRemoval:!1,enableMultiSort:!1});O([{condition:m,columns:[`projectId`]}],C.setColumnVisibility,g);let T=C.getState().sorting,D=C.getRowModel().rows;return(0,Y.useEffect)(()=>{if(r)return;let e=T[0];if(!e)return;let t=Object.fromEntries(o);t.sort=e.id,e.desc?t.order=`desc`:t.order&&delete t.order,u?t.search=u:delete t.search,c(t,{replace:!0}),Rn({id:e.id,desc:e.desc||!1})},[r,T,u]),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(B,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,mb:3},children:[(0,X.jsx)(z,{variant:`subtitle1`,sx:{ml:1},children:e!==void 0&&!r?`Results (${D.length<x.length?`${D.length} of ${x.length}`:x.length})`:`Results`}),(0,X.jsx)(w,{initialValue:u,onChange:f,hasFilters:!0,getSearchContext:y,disabled:r,containerStyles:{marginLeft:`1rem`,maxWidth:`400px`}})]}),(0,X.jsx)(I,{condition:!r&&!x,show:()=>(0,X.jsx)(k,{children:x===void 0?`None of the feature flags were evaluated yet.`:`No results found.`}),elseShow:()=>(0,X.jsxs)(B,{ref:l,sx:{overflow:`auto`},children:[(0,X.jsx)(te,{value:v(u),children:(0,X.jsx)(G,{tableInstance:C})}),(0,X.jsx)(I,{condition:x.length===0&&u?.length>0,show:(0,X.jsxs)(k,{children:[`No feature flags found matching “`,u,`”`]})}),(0,X.jsx)(I,{condition:x&&x.length===0&&!u,show:(0,X.jsx)(k,{children:`No features flags to display`})})]})})]})},Bn=o(R)(({theme:e})=>({marginBottom:e.spacing(3)})),Vn=({response:e})=>{let t=e?.warnings?.invalidContextProperties;return t&&t.length>0?(t.sort(),(0,X.jsx)(Bn,{severity:`warning`,children:(0,X.jsxs)(o(`details`)(({theme:e})=>({"* + *":{marginBlockStart:e.spacing(1)}})),{children:[(0,X.jsx)(`summary`,{children:`Some context properties were not taken into account during evaluation`}),(0,X.jsx)(`p`,{children:`The context you provided for this query contained top-level properties with invalid values. These properties were not taken into consideration when evaluating your query. The properties are:`}),(0,X.jsx)(`ul`,{children:t.map(e=>(0,X.jsx)(`li`,{"data-testid":`context-warning-list-element`,children:(0,X.jsx)(`code`,{children:e})},e))}),(0,X.jsxs)(`p`,{children:[`Remember that context fields (with the exception of the`,` `,(0,X.jsx)(`code`,{children:`properties`}),` object) must be strings.`]}),(0,X.jsx)(`p`,{children:`Because we didn't take these properties into account during the feature flag evaluation, they will not appear in the results table.`})]})})):null},Hn=({FormComponent:e=Pt})=>{let{value:t,setValue:r}=me(`AdvancedPlayground:v1`,{projects:[],environments:[]}),{trackEvent:a}=ue(),{environments:o}=se(),s=i(),[c,l]=(0,Y.useState)(),[u,d]=(0,Y.useState)(t.environments),[f,p]=(0,Y.useState)(t.projects),[m,h]=(0,Y.useState)(t.token),[g,_]=(0,Y.useState)(t.context),[v,y]=(0,Y.useState)(),{setToastData:b}=ce(),[x,S]=n(),[C,w]=(0,Y.useState)(),{evaluateAdvancedPlayground:T,evaluateChangeRequestPlayground:E,loading:D,errors:ee}=et(),[O,te]=(0,Y.useState)(!1);(0,Y.useEffect)(()=>{u?.length===0&&o.length>0&&d([vt(o)])},[JSON.stringify(u),JSON.stringify(o)]),(0,Y.useEffect)(()=>{k()},[]);let k=async()=>{try{let e=A(),t=j(),n=ne();M(),N(),e&&n&&await P(e||[],t||`*`,n)}catch(e){b({type:`error`,text:`Failed to parse URL parameters: ${H(e)}`})}},A=()=>{let e=null,t=x.get(`environments`);return t&&(e=t.split(`,`),d(e)),e},j=()=>{let e=null,t=x.get(`projects`);return t&&(e=t.split(`,`),p(e)),e},ne=()=>{let e=x.get(`context`);return e&&(e=decodeURI(e),_(e)),e},M=()=>{let e=x.get(`token`);return e&&(e=decodeURI(e),h(e)),e},N=()=>{let e=x.get(`changeRequest`);e&&w(e)},P=async(e,t,n,r)=>{try{l(void 0);let i={appName:`playground`,...JSON.parse(n||`{}`)},a=C?await E(C,{context:i}):await T({environments:_t(e),projects:gt(t),context:i});r&&typeof r==`function`&&r(),y(a)}catch(e){e instanceof pe?l(e.message):e instanceof SyntaxError?b({type:`error`,text:`Error parsing context: ${H(e)}`}):b({type:`error`,text:H(e)})}},F=()=>{let e=`default`;m&&m!==``?e=`api_token`:C&&(e=`change_request`),a(`playground`,{props:{eventType:`try-configuration`,mode:e}})},L=async e=>{e.preventDefault(),te(!0),F(),await P(u,f,g,()=>{z(),C||r({environments:u,projects:f,context:g})})},R=()=>{w(void 0)},z=()=>{x.set(`context`,encodeURI(g||``)),Array.isArray(u)&&u.length>0&&!(u.length===1&&u[0]===`*`)?x.set(`environments`,u.join(`,`)):x.delete(`projects`),Array.isArray(f)&&f.length>0&&!(f.length===1&&f[0]===`*`)?x.set(`projects`,f.join(`,`)):x.delete(`projects`),C?x.set(`changeRequest`,C):x.delete(`changeRequest`),S(x)},V=bt(!0,v);return(0,X.jsx)(_e,{header:(0,X.jsx)(ge,{title:`Unleash playground`,actions:(0,X.jsx)(Bt,{})}),disableLoading:!0,bodyClass:`no-padding`,children:(0,X.jsxs)(B,{sx:{display:`flex`,flexDirection:`column`},children:[(0,X.jsx)(B,{sx:{background:s.palette.background.elevation2,borderBottomLeftRadius:s.shape.borderRadiusMedium,isolation:`isolate`,zIndex:2},children:(0,X.jsx)(re,{elevation:0,sx:{px:4,py:3,background:s.palette.background.elevation2,transition:`width 0.4s ease`,minWidth:`auto`,width:`auto`,position:`sticky`,top:0},children:(0,X.jsx)(e,{onSubmit:L,context:g,setContext:_,availableEnvironments:o,projects:f,environments:u,token:m,setToken:h,setProjects:p,setEnvironments:d,changeRequest:C||void 0,onClearChangeRequest:R})})}),(0,X.jsxs)(B,{sx:e=>({width:V,transition:`width 0.4s ease`,padding:e.spacing(4,4),isolation:`isolate`,zIndex:1}),children:[(0,X.jsx)(I,{condition:!!c,show:(0,X.jsx)(Bn,{severity:`warning`,children:c})}),(0,X.jsx)(I,{condition:D,show:(0,X.jsx)(ye,{}),elseShow:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(I,{condition:!!v&&Object.values(ee).length===0,show:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Vn,{response:v}),(0,X.jsx)(zn,{loading:D,features:v?.features,input:v?.input})]})}),(0,X.jsx)(I,{condition:!v&&!O,show:(0,X.jsx)(Lt,{})})]})})]})]})})};export{Hn as AdvancedPlayground,Hn as default};
3
+ flags in all projects.`,sectionNumber:`1`}),(0,X.jsx)(Q,{headerText:`Select a context field that you'd like to check`,bodyText:`You can configure as many context fields as you want. You can also leave the context empty to test against an empty context.`,sectionNumber:`2`}),(0,X.jsx)(Q,{headerText:`Submit the form to try the configuration`,bodyText:`The results of evaluating your feature flags will appear after you submit the form. Then view the results.`,sectionNumber:`3`})]}),Rt=F((0,X.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 17h-2v-2h2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25`}),`Help`),zt=o(P)(({theme:e})=>({"& .MuiPaper-root":{borderRadius:e.shape.borderRadiusExtraLarge,border:`1px solid ${e.palette.divider}`,padding:e.spacing(8,4),maxWidth:`500px`}})),Bt=()=>{let[e,t]=(0,Y.useState)(null),n=e=>t(e.currentTarget),r=()=>t(null);return(0,X.jsxs)(B,{children:[(0,X.jsx)(L,{onClick:n,"aria-label":`Open Playground guidance`,children:(0,X.jsx)(Rt,{})}),(0,X.jsxs)(zt,{open:!!e,anchorEl:e,onClose:r,anchorOrigin:{vertical:`bottom`,horizontal:`center`},transformOrigin:{vertical:`top`,horizontal:`center`},sx:e=>({zIndex:e.zIndex.tooltip,background:`none`}),children:[(0,X.jsx)(L,{onClick:r,sx:{position:`absolute`,right:25,top:15},children:(0,X.jsx)(fe,{})}),(0,X.jsx)(Lt,{})]})]})},Vt=e=>(0,X.jsx)(`svg`,{width:14,height:14,viewBox:`0 0 14 14`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,X.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M8.84818 0.184159C8.56367 -0.0789547 8.1234 -0.0575747 7.86482 0.231912C7.60623 0.521399 7.62724 0.96937 7.91175 1.23248C9.48292 2.68551 10.6076 4.74934 10.6076 7C10.6076 9.25066 9.48292 11.3145 7.91175 12.7675C7.62724 13.0306 7.60623 13.4786 7.86482 13.7681C8.1234 14.0576 8.56367 14.079 8.84818 13.8158C10.6396 12.1592 11.9998 9.73702 11.9998 7C11.9998 4.26298 10.6396 1.84083 8.84818 0.184159ZM6.04105 2.23302C6.29109 1.93586 6.73054 1.90121 7.02259 2.15563C8.33146 3.29586 9.35426 5.02309 9.35426 6.99995C9.35426 8.97682 8.33145 10.7039 7.02259 11.8441C6.73054 12.0986 6.29109 12.0639 6.04105 11.7668C5.79101 11.4696 5.82506 11.0225 6.11711 10.768C7.19425 9.82969 7.96199 8.46967 7.96199 6.99995C7.96199 5.53021 7.19423 4.17007 6.11711 3.23173C5.82506 2.97731 5.79101 2.53017 6.04105 2.23302ZM6.56908 7.00015C6.56908 8.56492 5.3224 9.83342 3.78454 9.83342C2.24668 9.83342 1 8.56492 1 7.00015C1 5.43539 2.24668 4.16689 3.78454 4.16689C5.3224 4.16689 6.56908 5.43539 6.56908 7.00015Z`,fill:`currentColor`})}),Ht=e=>(0,X.jsx)(`svg`,{width:14,height:14,viewBox:`0 0 14 14`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,...e,children:(0,X.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M8.84835 0.184159C8.56384 -0.0789547 8.12358 -0.0575747 7.86499 0.231912C7.6064 0.521399 7.62741 0.96937 7.91192 1.23248C9.4831 2.68551 10.6078 4.74934 10.6078 7C10.6078 7.40738 10.5709 7.80863 10.5012 8.20125L11.6597 9.35972C11.8783 8.60937 12 7.81877 12 7C12 4.26298 10.6397 1.84083 8.84835 0.184159ZM9.35443 6.99995L9.35418 7.0542L7.63252 5.33255C7.30901 4.52372 6.76993 3.80029 6.11728 3.23173C5.82523 2.97731 5.79118 2.53017 6.04122 2.23302C6.29127 1.93586 6.73072 1.90121 7.02276 2.15563C8.33164 3.29586 9.35443 5.02309 9.35443 6.99995ZM7.57827 8.79752L6.48307 7.70233C6.17606 8.92745 5.08437 9.83342 3.78471 9.83342C2.24685 9.83342 1.00017 8.56492 1.00017 7.00015C1.00017 5.69492 1.8676 4.59583 3.04789 4.26714L0.458225 1.67748C0.172794 1.39205 0.178843 0.923223 0.471736 0.63033C0.764629 0.337437 1.23345 0.331388 1.51889 0.616819L13.2132 12.3111C13.4986 12.5965 13.4926 13.0654 13.1997 13.3583C12.9068 13.6511 12.4379 13.6572 12.1525 13.3718L10.556 11.7753C10.0694 12.539 9.48623 13.2259 8.84835 13.8158C8.56384 14.079 8.12358 14.0576 7.86499 13.7681C7.6064 13.4786 7.62741 13.0306 7.91192 12.7675C8.54021 12.1865 9.0971 11.5078 9.53922 10.7585L8.62356 9.84281C8.20906 10.6195 7.64861 11.2989 7.02276 11.8441C6.73072 12.0986 6.29127 12.0639 6.04122 11.7668C5.79118 11.4696 5.82523 11.0225 6.11728 10.768C6.73471 10.2302 7.25048 9.55374 7.57827 8.79752Z`,fill:`currentColor`})}),Ut=e=>e===`unknown`||e===`unevaluated`?[q,`info`]:e===!0?[Vt,`success`]:[Ht,`error`],$=({enabled:e,label:t,showIcon:n=!0})=>{let[r,i]=Ut(e);return(0,X.jsx)(ze,{color:i,icon:n?(0,X.jsx)(r,{"aria-hidden":!0,color:i,strokeWidth:`0.25`}):void 0,children:t})},Wt=o(B)(({theme:e})=>({display:`flex`,alignItems:`center`,padding:e.spacing(1,0,1,2)})),Gt=o(B)(()=>({marginRight:`auto`})),Kt=({feature:e})=>{let[t,n]=e?.isEnabled?[!0,`True`]:e?.strategies?.result===`unknown`?[`unknown`,`Unknown`]:[!1,`False`];return(0,X.jsx)(Wt,{children:(0,X.jsx)(Gt,{"data-loading":!0,children:(0,X.jsx)($,{enabled:t,label:n,showIcon:t!==`unknown`})})})};function qt(e){return e===void 0?!0:Object.values(e).every(e=>e&&typeof e==`object`?qt(e):e===null)}var Jt=e=>e.strategies?.data?.find(e=>!Ae.includes(e.name)),Yt=e=>e.strategies?.data?.length>0&&!e.strategies?.data?.find(e=>Ae.includes(e.name)),Xt=o(`div`)({display:`flex`,justifyContent:`space-between`,width:`100%`}),Zt=o(`hgroup`)(({theme:e})=>({display:`inline-flex`,alignItems:`center`,gap:e.spacing(1.5)})),Qt=o(`h3`)(({theme:e})=>({fontWeight:`bold`,fontSize:e.typography.subtitle1.fontSize,margin:0})),$t=({feature:e,input:t,onClose:n})=>{let r=i(),[a,o,s]=e.isEnabled?[`This feature flag is True in ${t?.environment} because `,`at least one strategy is True`,r.palette.success.contrastText]:e.hasUnsatisfiedDependency&&!e.isEnabledInCurrentEnvironment?[`This feature flag is False in ${t?.environment} because `,`parent dependency is not satisfied and the environment is disabled`,r.palette.error.contrastText]:e.isEnabledInCurrentEnvironment?Yt(e)?[`This feature flag is Unknown in ${t?.environment} because `,`no strategies could be fully evaluated`,r.palette.warning.contrastText]:Jt(e)?[`This feature flag is Unknown in ${t?.environment} because `,`not all strategies could be fully evaluated`,r.palette.warning.contrastText]:e.hasUnsatisfiedDependency?[`This feature flag is False in ${t?.environment} because `,`parent dependency is not satisfied`,r.palette.error.contrastText]:[`This feature flag is False in ${t?.environment} because `,`all strategies are either False or could not be fully evaluated`,r.palette.error.contrastText]:[`This feature flag is False in ${t?.environment} because `,`the environment is disabled`,r.palette.error.contrastText],c=qt(t?.context)?`You did not provide a value for your context field in step 2 of the configuration`:void 0,l=Jt(e)?`This feature uses custom strategies. Custom strategies can't be evaluated, so they will be marked accordingly.`:void 0,u=n&&(e=>{e.stopPropagation(),n()});return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(Xt,{children:[(0,X.jsxs)(Zt,{children:[(0,X.jsx)(Qt,{children:e.name}),(0,X.jsx)(`p`,{children:e?.strategies?.result===`unknown`?(0,X.jsx)($,{enabled:`unknown`,label:`Unknown`,showIcon:!1}):(0,X.jsx)($,{enabled:e.isEnabled,label:e.isEnabled?`True`:`False`})})]}),(0,X.jsx)(L,{"aria-label":`Close`,onClick:u,children:(0,X.jsx)(Le,{})})]}),(0,X.jsxs)(`p`,{children:[a,(0,X.jsx)(z,{color:s,component:`span`,children:o}),`.`]}),c?(0,X.jsx)(R,{color:`info`,children:c}):null,l?(0,X.jsx)(R,{severity:`warning`,color:`info`,children:l}):null]})},en=o(`div`,{shouldForwardProp:e=>e!==`variant`})(({theme:e,variant:t})=>({"--font-size":e.typography.body2.fontSize,display:`flex`,alignItems:`center`,gap:e.spacing(1),padding:e.spacing(.5,.25),color:t===`ok`?e.palette.success.dark:e.palette.error.dark,fontSize:`var(--font-size)`,svg:{fontSize:`calc(var(--font-size) * 1.25)`}})),tn=()=>(0,X.jsxs)(en,{variant:`ok`,children:[(0,X.jsx)(xe,{"aria-hidden":`true`}),(0,X.jsx)(`p`,{children:`Constraint met by value in context`})]}),nn=({text:e})=>(0,X.jsxs)(en,{variant:`error`,children:[(0,X.jsx)(v,{"aria-hidden":`true`}),(0,X.jsx)(`p`,{children:e})]}),rn=({constraint:e,input:t})=>{if(!e)return null;let n=()=>{let n=t?.context[e.contextName];return e.operator===`REGEX`&&n&&e.value?`Constraint not met – the value in the context ${e.contextName}: { ${n} } is not matching ${e.operator} ${e.value}`:n?`Constraint not met – the value in the context: { ${n} } is not ${e.operator} ${e.contextName}`:`Constraint not met – no value was specified for ${e.contextName}`};return(0,X.jsx)(G,{children:(0,X.jsxs)(`div`,{children:[(0,X.jsx)(He,{...e}),e.result?(0,X.jsx)(tn,{}):(0,X.jsx)(nn,{text:n()})]})})},an=o(B)(({theme:e})=>({width:`auto`,height:`auto`,padding:e.spacing(2,3),borderRadius:e.shape.borderRadiusMedium,border:`1px solid ${e.palette.divider}`})),on=({segment:e,input:t})=>(0,X.jsx)(Re,{segment:e,constraintList:e.constraints.length>0?(0,X.jsx)(Ge,{children:e.constraints.map(e=>(0,X.jsx)(rn,{constraint:e,input:t},W(e)))}):void 0,isExpanded:!0}),sn=({strategyResult:e,input:t})=>{let{name:n,constraints:r,segments:i,parameters:a}=e,o=We(e),{strategies:s}=Ie(),{isCustomStrategy:c,customStrategyParameters:l}=Ke(e,s),u=!!(i&&i.length>0),d=!!(r&&r?.length>0),f=n!=="default"&&Object.keys(De).includes(n);if(!a)return null;let p=[...u?i.map(e=>(0,X.jsx)(on,{segment:e,input:t},W(e))):[],...d?r.map(e=>(0,X.jsx)(rn,{constraint:e,input:t},W(e))):[],f&&o.map((e,t)=>(0,X.jsx)(G,{children:e},t)),c&&l.map((e,t)=>(0,X.jsx)(G,{children:e},t)),n==="default"&&(0,X.jsxs)(an,{sx:{width:`100%`},children:[`The standard strategy is `,(0,X.jsx)(ze,{color:`success`,children:`ON`}),` for all users.`]},`default-on`)].filter(Boolean),{variant:m,variants:h}=e.result;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Ge,{children:p}),h?.length?(0,X.jsx)(Me,{variants:h,selected:m?.name}):null]})},cn=({strategy:e,input:t,className:n})=>{let{result:r}=e,i=r.evaluationStatus===`incomplete`||r.evaluationStatus===`unevaluated`?`Not evaluated`:r.enabled?`True`:`False`;return(0,X.jsx)(Fe,{strategy:{...e,id:`${W(e)}`},strategyHeaderLevel:4,className:n,headerItemsLeft:e.disabled?null:(0,X.jsx)($,{showIcon:!1,enabled:r.enabled,label:i}),children:(0,X.jsx)(sn,{strategyResult:e,input:t})})},ln=o(`hgroup`)(({theme:e})=>({paddingBottom:e.spacing(2)})),un=o(`h4`)(({theme:e})=>({fontWeight:`normal`,fontSize:e.typography.body1.fontSize,margin:0})),dn=o(`p`)(({theme:e})=>({fontWeight:`bold`,fontSize:e.typography.body2.fontSize})),fn=o(Be)(({theme:e})=>({marginInline:`calc(var(--popover-inline-padding) * -1)`,borderTop:`1px solid ${e.palette.divider}`,"> li:last-of-type":{paddingBottom:0}})),pn=({strategies:e,input:t,titlePrefix:n,infoText:r})=>e.length===0?null:(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(ln,{children:[(0,X.jsx)(un,{children:`${n?n.concat(` strategies`):`Strategies`} (${e?.length})`}),r?(0,X.jsx)(dn,{children:r}):null]}),(0,X.jsx)(fn,{children:e?.map((e,n)=>(0,X.jsxs)(Ue,{children:[n>0?(0,X.jsx)(Ne,{}):``,(0,X.jsx)(cn,{strategy:e,input:t})]},e.id))})]}),mn=({feature:e})=>{if(!e?.strategies?.data)return null;let t;if(e.hasUnsatisfiedDependency&&!e.isEnabledInCurrentEnvironment)t=`If the environment was enabled and parent dependencies were satisfied`;else if(e.hasUnsatisfiedDependency)t=`If parent dependencies were satisfied`;else if(!e.isEnabledInCurrentEnvironment)t=`If the environment was enabled`;else return;return(0,X.jsxs)(R,{severity:`info`,color:`info`,children:[t,`, then this feature flag would be`,` `,e.strategies?.result?`TRUE`:`FALSE`,` with strategies evaluated like this:`]})},hn=({feature:e,input:t})=>{let n=e.strategies?.data?.filter(e=>!e.disabled),r=e.strategies?.data?.filter(e=>e.disabled),i=r?.length>0;return(e?.strategies?.data.length??0)===0?(0,X.jsx)(R,{severity:`info`,children:`There are no strategies added to this feature flag in the selected environment.`}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(mn,{feature:e}),(0,X.jsx)(pn,{strategies:n||[],input:t,titlePrefix:i?`Enabled`:void 0}),i?(0,X.jsx)(pn,{strategies:r,input:t,titlePrefix:`Disabled`,infoText:`Disabled strategies are not evaluated for the overall result.`}):null]})},gn=o(`div`)(({theme:e})=>({alignItems:`flex-end`,color:e.palette.divider})),_n=({feature:e,input:t})=>{let[n,r]=(0,Y.useState)(!1),i=(0,Y.useRef)(null);return(0,X.jsxs)(gn,{children:[(0,X.jsx)(L,{onClick:()=>{r(!n)},children:(0,X.jsx)(q,{ref:i})}),(0,X.jsxs)(P,{open:n,onClose:()=>r(!1),anchorEl:i.current,anchorOrigin:{vertical:`top`,horizontal:`right`},transformOrigin:{vertical:`center`,horizontal:`left`},slotProps:{paper:{sx:e=>({"--popover-inline-padding":e.spacing(4),paddingInline:`var(--popover-inline-padding)`,paddingBlock:e.spacing(3),display:`flex`,flexDirection:`column`,width:728,maxWidth:`100%`,height:`auto`,gap:e.spacing(3),overflowY:`auto`,backgroundColor:e.palette.background.elevation1,borderRadius:e.shape.borderRadius})}},children:[(0,X.jsx)($t,{feature:e,input:t,onClose:()=>r(!1)}),(0,X.jsx)(hn,{feature:e,input:t})]})]})},vn=e=>e.feature?(0,X.jsx)(_n,{...e}):null,yn=F((0,X.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m4.59-12.42L10 14.17l-2.59-2.58L6 13l4 4 8-8z`}),`CheckCircleOutlined`),bn=o(`div`)(({theme:e})=>({padding:e.spacing(4),maxWidth:`400px`})),xn=o(z)(({theme:e})=>({marginBottom:e.spacing(2)})),Sn=o(yn)(({theme:e})=>({color:e.palette.success.main})),Cn=[{id:`Icon`,cell:({row:{original:{selected:e}}})=>(0,X.jsx)(I,{condition:e,show:(0,X.jsx)(T,{icon:(0,X.jsx)(Sn,{})})}),meta:{maxWidth:25}},{id:`name`,header:`Name`,accessorKey:`name`,cell:({row:{original:{name:e}}})=>(0,X.jsx)(_,{children:e}),meta:{maxWidth:175,width:175}},{id:`weight`,header:`Weight`,accessorKey:`weight`,sortingFn:`alphanumeric`,cell:({row:{original:{weight:e}}})=>(0,X.jsx)(_,{children:e}),meta:{maxWidth:75}}],wn=({variants:e,selectedVariant:t})=>{let n=i(),r=p({columns:Cn,data:(0,Y.useMemo)(()=>e.map(e=>({name:e.name,weight:`${f(e.weight)}%`,selected:e.name===t})),[e,t]),initialState:{sorting:[{id:`name`,desc:!1}]},getCoreRowModel:s(),getSortedRowModel:d(),autoResetAll:!1,enableSortingRemoval:!1});return(0,X.jsxs)(bn,{children:[(0,X.jsx)(xn,{variant:`subtitle2`,children:`Variant Information`}),(0,X.jsx)(xn,{variant:`body2`,children:`The following table shows the variants defined on this feature toggle and the variant result based on your context configuration.`}),(0,X.jsx)(xn,{variant:`body2`,children:`If you include "userId" or "sessionId" in your context, the variant will be the same every time because unleash uses these properties to ensure that the user receives the same experience.`}),(0,X.jsxs)(l,{rowHeight:`dense`,children:[(0,X.jsx)(ee,{tableInstance:r}),(0,X.jsx)(ae,{children:r.getRowModel().rows.map(e=>{let t={};return e.original.selected||(t.color=n.palette.text.secondary),(0,X.jsx)(oe,{hover:!0,children:e.getVisibleCells().map(e=>(0,X.jsx)(h,{style:t,children:c(e.column.columnDef.cell,e.getContext())},e.id))},e.id)})})]})]})},Tn=o(`div`)(()=>({maxWidth:`100%`,display:`flex`,alignItems:`center`,wordBreak:`break-all`})),En=({variant:e,variants:t,feature:n,isEnabled:r})=>{let a=i(),[o,s]=(0,Y.useState)(null),c=e=>s(e.currentTarget),l=()=>s(null),u=!!o;return(0,X.jsxs)(Tn,{children:[e,(0,X.jsx)(I,{condition:!!t&&t.length>0&&r,show:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(L,{onClick:c,children:(0,X.jsx)(q,{})}),(0,X.jsx)(P,{open:u,id:`${n}-result-variants`,onClose:l,anchorEl:o,anchorOrigin:{vertical:`bottom`,horizontal:-320},slotProps:{paper:{sx:{borderRadius:`${a.shape.borderRadiusLarge}px`}}},children:(0,X.jsx)(wn,{variants:t,selectedVariant:e})})]})})]})},Dn=({features:e})=>{let t=A(i().breakpoints.down(`sm`)),n=C(),r=(0,Y.useMemo)(()=>[...Object.keys(e[0].context).map(e=>n.accessor(t=>t.context?.[e],{id:`context_${e}`,header:U(e),cell:({getValue:e})=>(0,X.jsx)(E,{value:String(e()??``)}),meta:{minWidth:160}})),n.accessor(e=>e.variant?.name??``,{id:`variant`,header:`Variant`,sortingFn:`alphanumeric`,cell:({getValue:e,row:{original:{variant:t,name:n,variants:r,isEnabled:i}}})=>(0,X.jsx)(En,{variant:t?.enabled?String(e()):``,variants:r,feature:n,isEnabled:i}),meta:{maxWidth:200}}),n.accessor(e=>e?.isEnabled?`true`:e?.strategies?.result===`unknown`?`unknown`:`false`,{id:`isEnabled`,header:`isEnabled`,cell:({row:e})=>(0,X.jsx)(Kt,{feature:e.original}),sortingFn:ke.playgroundResultState,sortDescFirst:!0,meta:{maxWidth:120}}),n.display({id:`info`,header:``,cell:({row:e})=>(0,X.jsx)(vn,{feature:e.original,input:{environment:e.original.environment,context:e.original.context}}),meta:{maxWidth:70}})],[]),a=p({columns:r,data:e,getCoreRowModel:s(),getSortedRowModel:d(),getFilteredRowModel:S(),autoResetAll:!1,enableSortingRemoval:!1,enableMultiSort:!1});O([{condition:t,columns:[`variant`]}],a.setColumnVisibility,r);let o=(0,Y.useRef)(null);return(0,X.jsx)(B,{ref:o,sx:{overflow:`auto`,maxHeight:`800px`},children:(0,X.jsx)(K,{parentRef:o,tableInstance:a})})},On=o(`div`,{})(({theme:e})=>({flexGrow:0,...de,justifyContent:`flex-start`,margin:e.spacing(0,1.5)})),kn=o(B)(({theme:e})=>({display:`flex`,flexDirection:`row`,gap:e.spacing(1)})),An=({value:e})=>{let t=i(),[n,r]=(0,Y.useState)(null),a=e=>r(e.currentTarget),o=()=>r(null),s=!!n,c=(e||[]).filter(e=>e.isEnabled),l=(e||[]).filter(e=>!e.isEnabled);return(0,X.jsxs)(On,{children:[(0,X.jsxs)(kn,{children:[(0,X.jsx)(I,{condition:c.length>0,show:(0,X.jsx)($,{enabled:!0,label:`${c.length}`,showIcon:!0})}),(0,X.jsx)(I,{condition:l.length>0,show:(0,X.jsx)($,{enabled:!1,label:`${l.length}`,showIcon:!0})})]}),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(L,{onClick:a,children:(0,X.jsx)(q,{})}),(0,X.jsxs)(P,{open:s,id:`${e}-result-details`,onClose:o,anchorEl:n,anchorOrigin:{vertical:`bottom`,horizontal:-320},slotProps:{paper:{sx:{borderRadius:`${t.shape.borderRadiusLarge}px`,padding:t.spacing(3)}}},children:[(0,X.jsx)(z,{variant:`subtitle2`,sx:{mb:3},children:e[0].environment}),(0,X.jsx)(Dn,{features:e})]})]})]})},jn=({features:e})=>{let t=Object.keys(e),n=e[t[0]],r=n[0].context,i=(0,Y.useMemo)(()=>n.map((n,r)=>({...Object.fromEntries(t.map(t=>[t,e[t][r]]))})),[JSON.stringify(e)]),a=C(),o=p({columns:(0,Y.useMemo)(()=>{let e=Object.keys(r).map(e=>a.accessor(n=>n[t[0]].context[e],{id:`context_${e}`,header:U(e),cell:({getValue:e})=>(0,X.jsx)(E,{value:String(e()??``)}),meta:{minWidth:160}})),n=t.map(e=>a.accessor(t=>t[e]?.isEnabled?`true`:t[e]?.strategies?.result===`unknown`?`unknown`:`false`,{id:e,header:e,cell:({row:t})=>(0,X.jsxs)(B,{sx:{display:`flex`},children:[(0,X.jsx)(Kt,{feature:t.original[e]}),(0,X.jsx)(vn,{feature:t.original[e],input:{environment:t.original[e].environment,context:t.original[e].context}})]}),sortingFn:ke.playgroundResultState,meta:{maxWidth:140}}));return[...e,...n]},[]),data:i,getCoreRowModel:s(),getSortedRowModel:d(),getFilteredRowModel:S(),autoResetAll:!1,enableSortingRemoval:!1,enableMultiSort:!1}),c=(0,Y.useRef)(null);return(0,X.jsx)(B,{ref:c,sx:{overflow:`auto`,maxHeight:`800px`},children:(0,X.jsx)(K,{parentRef:c,tableInstance:o})})},Mn=o(`div`,{})(({theme:e})=>({flexGrow:0,...de,justifyContent:`flex-start`,margin:e.spacing(0,1.5)})),Nn=o(V)(({theme:e})=>({textAlign:`left`,textDecorationStyle:`dotted`,textDecorationLine:`underline`,textUnderlineOffset:e.spacing(.75),color:e.palette.neutral.dark,padding:0,fontWeight:`normal`})),Pn=({value:e})=>{let t=i(),[n,r]=(0,Y.useState)(null);return(0,X.jsx)(Mn,{children:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Nn,{variant:`text`,onClick:e=>r(e.currentTarget),children:`View diff`}),(0,X.jsxs)(P,{open:!!n,id:`${e}-result-details`,onClose:()=>r(null),anchorEl:n,anchorOrigin:{vertical:`bottom`,horizontal:-320},slotProps:{paper:{sx:{borderRadius:`${t.shape.borderRadiusLarge}px`,padding:t.spacing(3)}}},children:[(0,X.jsx)(z,{variant:`subtitle2`,sx:{mb:3},children:`Environments diff`}),(0,X.jsx)(jn,{features:e})]})]})})},Fn=e=>e.reduce((e,t)=>e+Object.values(t.environments).flatMap(e=>Object.keys(e)).length,0),In=e=>e<0?`invalid bucket`:e>=2e4?`20000+`:e>=1e4?`10000-20000`:e>=1e3?`1000-10000`:e>=100?`100-1000`:`0-100`,{value:Ln,setValue:Rn}=me(`AdvancedPlaygroundResultsTable:v1`,{id:`name`,desc:!1}),zn=({features:e,input:t,loading:r})=>{let{trackEvent:a}=ue();e&&a(`playground`,{props:{eventType:`number-of-combinations`,count:In(Fn(e))}});let[o,c]=n(),l=he(r),[u,f]=(0,Y.useState)(o.get(`search`)||``),m=A(i().breakpoints.down(`md`)),h=e&&e.length>0?Object.keys(e[0].environments).length:0,g=(0,Y.useMemo)(()=>{let e=[{id:`name`,header:`Name`,accessorKey:`name`,cell:({getValue:e,row:{original:t}})=>(0,X.jsx)(be,{title:String(e()??``),to:`/projects/${t?.projectId}/features/${e()}`}),meta:{searchable:!0,minWidth:160}},{id:`projectId`,header:`Project ID`,accessorKey:`projectId`,sortingFn:`alphanumeric`,cell:({getValue:e})=>{let t=String(e()??``);return(0,X.jsx)(be,{title:t,to:`/projects/${t}`})},meta:{filterName:`projectId`,searchable:!0,minWidth:150}},...t?.environments?.map(e=>({id:`environments.${e}`,header:r?``:U(e),cell:({row:t})=>(0,X.jsx)(An,{value:t.original.environments[e]}),meta:{maxWidth:150,align:`left`}}))||[]];return h>1&&e.push({id:`diff`,header:`Diff`,cell:({row:e})=>(0,X.jsx)(Pn,{value:e.original.environments}),meta:{minWidth:150,align:`left`}}),e},[t,r]),{data:_,getSearchText:v,getSearchContext:y}=b(g,u,e||[]),x=(0,Y.useMemo)(()=>r?[,,,,,].fill({name:`Feature name`,projectId:`Feature Project`,environments:{name:`Feature Environments`,variants:[]},enabled:!0}):_,[_,r]),[S]=(0,Y.useState)(()=>({sorting:[{id:o.get(`sort`)||Ln.id,desc:o.has(`order`)?o.get(`order`)===`desc`:Ln.desc}]})),C=p({columns:g,data:x,initialState:S,defaultColumn:{cell:({getValue:e})=>(0,X.jsx)(E,{value:String(e()??``)})},getCoreRowModel:s(),getSortedRowModel:d(),autoResetAll:!1,enableSortingRemoval:!1,enableMultiSort:!1});O([{condition:m,columns:[`projectId`]}],C.setColumnVisibility,g);let T=C.getState().sorting,D=C.getRowModel().rows;return(0,Y.useEffect)(()=>{if(r)return;let e=T[0];if(!e)return;let t=Object.fromEntries(o);t.sort=e.id,e.desc?t.order=`desc`:t.order&&delete t.order,u?t.search=u:delete t.search,c(t,{replace:!0}),Rn({id:e.id,desc:e.desc||!1})},[r,T,u]),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(B,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,mb:3},children:[(0,X.jsx)(z,{variant:`subtitle1`,sx:{ml:1},children:e!==void 0&&!r?`Results (${D.length<x.length?`${D.length} of ${x.length}`:x.length})`:`Results`}),(0,X.jsx)(w,{initialValue:u,onChange:f,hasFilters:!0,getSearchContext:y,disabled:r,containerStyles:{marginLeft:`1rem`,maxWidth:`400px`}})]}),(0,X.jsx)(I,{condition:!r&&!x,show:()=>(0,X.jsx)(k,{children:x===void 0?`None of the feature flags were evaluated yet.`:`No results found.`}),elseShow:()=>(0,X.jsxs)(B,{ref:l,sx:{overflow:`auto`},children:[(0,X.jsx)(te,{value:v(u),children:(0,X.jsx)(K,{tableInstance:C})}),(0,X.jsx)(I,{condition:x.length===0&&u?.length>0,show:(0,X.jsxs)(k,{children:[`No feature flags found matching “`,u,`”`]})}),(0,X.jsx)(I,{condition:x&&x.length===0&&!u,show:(0,X.jsx)(k,{children:`No features flags to display`})})]})})]})},Bn=o(R)(({theme:e})=>({marginBottom:e.spacing(3)})),Vn=({response:e})=>{let t=e?.warnings?.invalidContextProperties;return t&&t.length>0?(t.sort(),(0,X.jsx)(Bn,{severity:`warning`,children:(0,X.jsxs)(o(`details`)(({theme:e})=>({"* + *":{marginBlockStart:e.spacing(1)}})),{children:[(0,X.jsx)(`summary`,{children:`Some context properties were not taken into account during evaluation`}),(0,X.jsx)(`p`,{children:`The context you provided for this query contained top-level properties with invalid values. These properties were not taken into consideration when evaluating your query. The properties are:`}),(0,X.jsx)(`ul`,{children:t.map(e=>(0,X.jsx)(`li`,{"data-testid":`context-warning-list-element`,children:(0,X.jsx)(`code`,{children:e})},e))}),(0,X.jsxs)(`p`,{children:[`Remember that context fields (with the exception of the`,` `,(0,X.jsx)(`code`,{children:`properties`}),` object) must be strings.`]}),(0,X.jsx)(`p`,{children:`Because we didn't take these properties into account during the feature flag evaluation, they will not appear in the results table.`})]})})):null},Hn=({FormComponent:e=Pt})=>{let{value:t,setValue:r}=me(`AdvancedPlayground:v1`,{projects:[],environments:[]}),{trackEvent:a}=ue(),{environments:o}=se(),s=i(),[c,l]=(0,Y.useState)(),[u,d]=(0,Y.useState)(t.environments),[f,p]=(0,Y.useState)(t.projects),[m,h]=(0,Y.useState)(t.token),[g,_]=(0,Y.useState)(t.context),[v,y]=(0,Y.useState)(),{setToastData:b}=ce(),[x,S]=n(),[C,w]=(0,Y.useState)(),{evaluateAdvancedPlayground:T,evaluateChangeRequestPlayground:E,loading:D,errors:ee}=et(),[O,te]=(0,Y.useState)(!1);(0,Y.useEffect)(()=>{u?.length===0&&o.length>0&&d([vt(o)])},[JSON.stringify(u),JSON.stringify(o)]),(0,Y.useEffect)(()=>{k()},[]);let k=async()=>{try{let e=A(),t=j(),n=ne();M(),N(),e&&n&&await P(e||[],t||`*`,n)}catch(e){b({type:`error`,text:`Failed to parse URL parameters: ${H(e)}`})}},A=()=>{let e=null,t=x.get(`environments`);return t&&(e=t.split(`,`),d(e)),e},j=()=>{let e=null,t=x.get(`projects`);return t&&(e=t.split(`,`),p(e)),e},ne=()=>{let e=x.get(`context`);return e&&(e=decodeURI(e),_(e)),e},M=()=>{let e=x.get(`token`);return e&&(e=decodeURI(e),h(e)),e},N=()=>{let e=x.get(`changeRequest`);e&&w(e)},P=async(e,t,n,r)=>{try{l(void 0);let i={appName:`playground`,...JSON.parse(n||`{}`)},a=C?await E(C,{context:i}):await T({environments:_t(e),projects:gt(t),context:i});r&&typeof r==`function`&&r(),y(a)}catch(e){e instanceof pe?l(e.message):e instanceof SyntaxError?b({type:`error`,text:`Error parsing context: ${H(e)}`}):b({type:`error`,text:H(e)})}},F=()=>{let e=`default`;m&&m!==``?e=`api_token`:C&&(e=`change_request`),a(`playground`,{props:{eventType:`try-configuration`,mode:e}})},L=async e=>{e.preventDefault(),te(!0),F(),await P(u,f,g,()=>{z(),C||r({environments:u,projects:f,context:g})})},R=()=>{w(void 0)},z=()=>{x.set(`context`,encodeURI(g||``)),Array.isArray(u)&&u.length>0&&!(u.length===1&&u[0]===`*`)?x.set(`environments`,u.join(`,`)):x.delete(`projects`),Array.isArray(f)&&f.length>0&&!(f.length===1&&f[0]===`*`)?x.set(`projects`,f.join(`,`)):x.delete(`projects`),C?x.set(`changeRequest`,C):x.delete(`changeRequest`),S(x)},V=bt(!0,v);return(0,X.jsx)(_e,{header:(0,X.jsx)(ge,{title:`Unleash playground`,actions:(0,X.jsx)(Bt,{})}),disableLoading:!0,bodyClass:`no-padding`,children:(0,X.jsxs)(B,{sx:{display:`flex`,flexDirection:`column`},children:[(0,X.jsx)(B,{sx:{background:s.palette.background.elevation2,borderBottomLeftRadius:s.shape.borderRadiusMedium,isolation:`isolate`,zIndex:2},children:(0,X.jsx)(re,{elevation:0,sx:{px:4,py:3,background:s.palette.background.elevation2,transition:`width 0.4s ease`,minWidth:`auto`,width:`auto`,position:`sticky`,top:0},children:(0,X.jsx)(e,{onSubmit:L,context:g,setContext:_,availableEnvironments:o,projects:f,environments:u,token:m,setToken:h,setProjects:p,setEnvironments:d,changeRequest:C||void 0,onClearChangeRequest:R})})}),(0,X.jsxs)(B,{sx:e=>({width:V,transition:`width 0.4s ease`,padding:e.spacing(4,4),isolation:`isolate`,zIndex:1}),children:[(0,X.jsx)(I,{condition:!!c,show:(0,X.jsx)(Bn,{severity:`warning`,children:c})}),(0,X.jsx)(I,{condition:D,show:(0,X.jsx)(ye,{}),elseShow:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(I,{condition:!!v&&Object.values(ee).length===0,show:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Vn,{response:v}),(0,X.jsx)(zn,{loading:D,features:v?.features,input:v?.input})]})}),(0,X.jsx)(I,{condition:!v&&!O,show:(0,X.jsx)(Lt,{})})]})})]})]})})};export{Hn as AdvancedPlayground,Hn as default};
@@ -1 +1 @@
1
- import{t as e}from"./jsx-runtime-BnvnyDTF.js";import{v as t}from"./createSimplePaletteValueFilter-BRAMrHWJ.js";import{t as n}from"./Tooltip-BaILXXti.js";import{t as r}from"./ConditionallyRender---uTpMBn.js";import{t as i}from"./Alert-_bLyWbvx.js";import{t as a}from"./Typography-BTdLWIUX.js";import{t as o}from"./Box-BQsxfFmC.js";import{t as s}from"./useUiConfig-DbVjTDpE.js";import{t as c}from"./usePageTitle-CHzzFshF.js";import{t as l}from"./HelpOutlineOutlined-CpMsVJZu.js";import{Gt as u,Kt as d,Nt as f,Wt as p,Xt as m,en as h,nn as g,tn as _}from"./index-BJ2iUk24.js";import{a as v,i as y,l as b,n as x,o as S,t as C,u as w}from"./networkTrafficUsageHighlightPlugin-DVWh8Lrd.js";import{t as T}from"./chartjs-plugin-annotation.esm-BxKcCGhA.js";var E=e(),D=t(o)(({theme:e})=>({display:`flex`,alignItems:`center`,gap:e.spacing(.5)})),O=()=>{c(`Network - Backend Connections`);let{isOss:e}=s(),{chartDataSelection:t,setChartDataSelection:u,options:d}=x(),{chartData:p}=S(t);return(0,E.jsx)(r,{condition:e(),show:(0,E.jsx)(i,{severity:`warning`,children:`Not enabled.`}),elseShow:(0,E.jsx)(E.Fragment,{children:(0,E.jsxs)(y,{children:[(0,E.jsxs)(v,{children:[(0,E.jsx)(o,{children:(0,E.jsx)(i,{severity:`info`,icon:!1,children:(0,E.jsxs)(D,{children:[(0,E.jsx)(a,{children:`1 connection = 7200 backend SDK requests per day`}),(0,E.jsx)(n,{title:`1 connection involves polling every 15 seconds and sending metrics every 60 seconds. This translates to 5 requests per minute, 300 requests per hour, and 7200 requests per day.`,children:(0,E.jsx)(l,{})})]})})}),(0,E.jsx)(w,{selectedPeriod:t,setPeriod:u})]}),(0,E.jsx)(f,{data:p,plugins:[C],options:d,"aria-label":b(t)})]})})})};d.register(T,u,m,p,_,g,h);export{O as BackendConnections,O as default};
1
+ import{t as e}from"./jsx-runtime-BnvnyDTF.js";import{v as t}from"./createSimplePaletteValueFilter-BRAMrHWJ.js";import{t as n}from"./Tooltip-BaILXXti.js";import{t as r}from"./ConditionallyRender---uTpMBn.js";import{t as i}from"./Alert-_bLyWbvx.js";import{t as a}from"./Typography-BTdLWIUX.js";import{t as o}from"./Box-BQsxfFmC.js";import{t as s}from"./useUiConfig-DbVjTDpE.js";import{t as c}from"./usePageTitle-CHzzFshF.js";import{t as l}from"./HelpOutlineOutlined-CpMsVJZu.js";import{Ft as u,Jt as d,Kt as f,Qt as p,in as m,nn as h,qt as g,rn as _}from"./index-C04TEs4k.js";import{a as v,i as y,l as b,n as x,o as S,t as C,u as w}from"./networkTrafficUsageHighlightPlugin-DlOtHZg3.js";import{t as T}from"./chartjs-plugin-annotation.esm-DP4wCpdA.js";var E=e(),D=t(o)(({theme:e})=>({display:`flex`,alignItems:`center`,gap:e.spacing(.5)})),O=()=>{c(`Network - Backend Connections`);let{isOss:e}=s(),{chartDataSelection:t,setChartDataSelection:d,options:f}=x(),{chartData:p}=S(t);return(0,E.jsx)(r,{condition:e(),show:(0,E.jsx)(i,{severity:`warning`,children:`Not enabled.`}),elseShow:(0,E.jsx)(E.Fragment,{children:(0,E.jsxs)(y,{children:[(0,E.jsxs)(v,{children:[(0,E.jsx)(o,{children:(0,E.jsx)(i,{severity:`info`,icon:!1,children:(0,E.jsxs)(D,{children:[(0,E.jsx)(a,{children:`1 connection = 7200 backend SDK requests per day`}),(0,E.jsx)(n,{title:`1 connection involves polling every 15 seconds and sending metrics every 60 seconds. This translates to 5 requests per minute, 300 requests per hour, and 7200 requests per day.`,children:(0,E.jsx)(l,{})})]})})}),(0,E.jsx)(w,{selectedPeriod:t,setPeriod:d})]}),(0,E.jsx)(u,{data:p,plugins:[C],options:f,"aria-label":b(t)})]})})})};d.register(T,g,p,f,_,m,h);export{O as BackendConnections,O as default};