ziya 0.1.49__py3-none-any.whl → 0.1.50__py3-none-any.whl

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.

Potentially problematic release.


This version of ziya might be problematic. Click here for more details.

Files changed (49) hide show
  1. app/agents/.agent.py.swp +0 -0
  2. app/agents/agent.py +315 -113
  3. app/agents/models.py +439 -0
  4. app/agents/prompts.py +32 -4
  5. app/main.py +70 -7
  6. app/server.py +403 -14
  7. app/utils/code_util.py +641 -215
  8. pyproject.toml +2 -3
  9. templates/asset-manifest.json +18 -20
  10. templates/index.html +1 -1
  11. templates/static/css/{main.87f30840.css → main.2bddf34e.css} +2 -2
  12. templates/static/css/main.2bddf34e.css.map +1 -0
  13. templates/static/js/46907.90c6a4f3.chunk.js +2 -0
  14. templates/static/js/46907.90c6a4f3.chunk.js.map +1 -0
  15. templates/static/js/56122.1d6a5c10.chunk.js +3 -0
  16. templates/static/js/56122.1d6a5c10.chunk.js.LICENSE.txt +9 -0
  17. templates/static/js/56122.1d6a5c10.chunk.js.map +1 -0
  18. templates/static/js/83953.61a908f4.chunk.js +3 -0
  19. templates/static/js/83953.61a908f4.chunk.js.map +1 -0
  20. templates/static/js/88261.1e90079d.chunk.js +3 -0
  21. templates/static/js/88261.1e90079d.chunk.js.map +1 -0
  22. templates/static/js/{96603.863a8f96.chunk.js → 96603.18c5d644.chunk.js} +2 -2
  23. templates/static/js/{96603.863a8f96.chunk.js.map → 96603.18c5d644.chunk.js.map} +1 -1
  24. templates/static/js/{97902.75670155.chunk.js → 97902.d1e262d6.chunk.js} +3 -3
  25. templates/static/js/{97902.75670155.chunk.js.map → 97902.d1e262d6.chunk.js.map} +1 -1
  26. templates/static/js/main.9b2b2b57.js +3 -0
  27. templates/static/js/{main.ee8b3c96.js.LICENSE.txt → main.9b2b2b57.js.LICENSE.txt} +8 -2
  28. templates/static/js/main.9b2b2b57.js.map +1 -0
  29. {ziya-0.1.49.dist-info → ziya-0.1.50.dist-info}/METADATA +4 -5
  30. {ziya-0.1.49.dist-info → ziya-0.1.50.dist-info}/RECORD +36 -35
  31. templates/static/css/main.87f30840.css.map +0 -1
  32. templates/static/js/23416.c33f07ab.chunk.js +0 -3
  33. templates/static/js/23416.c33f07ab.chunk.js.map +0 -1
  34. templates/static/js/3799.fedb612f.chunk.js +0 -2
  35. templates/static/js/3799.fedb612f.chunk.js.map +0 -1
  36. templates/static/js/46907.4a730107.chunk.js +0 -2
  37. templates/static/js/46907.4a730107.chunk.js.map +0 -1
  38. templates/static/js/64754.cf383335.chunk.js +0 -2
  39. templates/static/js/64754.cf383335.chunk.js.map +0 -1
  40. templates/static/js/88261.33450351.chunk.js +0 -3
  41. templates/static/js/88261.33450351.chunk.js.map +0 -1
  42. templates/static/js/main.ee8b3c96.js +0 -3
  43. templates/static/js/main.ee8b3c96.js.map +0 -1
  44. /templates/static/js/{23416.c33f07ab.chunk.js.LICENSE.txt → 83953.61a908f4.chunk.js.LICENSE.txt} +0 -0
  45. /templates/static/js/{88261.33450351.chunk.js.LICENSE.txt → 88261.1e90079d.chunk.js.LICENSE.txt} +0 -0
  46. /templates/static/js/{97902.75670155.chunk.js.LICENSE.txt → 97902.d1e262d6.chunk.js.LICENSE.txt} +0 -0
  47. {ziya-0.1.49.dist-info → ziya-0.1.50.dist-info}/LICENSE +0 -0
  48. {ziya-0.1.49.dist-info → ziya-0.1.50.dist-info}/WHEEL +0 -0
  49. {ziya-0.1.49.dist-info → ziya-0.1.50.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 56122.1d6a5c10.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[56122],{81661:(e,t,a)=>{a.d(t,{J:()=>p});var r=a(89379),i=a(65043),n=a(79901),s=a(91686),o=a(66158),l=a(51252);const c=[{name:"network-diagram",priority:1,canHandle:e=>"object"===typeof e&&!e.render&&"network"===e.type&&Array.isArray(e.nodes)&&Array.isArray(e.links)&&e.nodes.length>0&&e.links.length>0&&e.nodes.every((e=>"string"===typeof e.id&&e.id))&&e.links.every((e=>"string"===typeof e.source&&"string"===typeof e.target)),render:(e,t,a)=>{var r;if(console.debug("Network diagram plugin rendering:",a),!function(e){return"object"===typeof e&&"network"===e.type&&Array.isArray(e.nodes)&&Array.isArray(e.links)&&e.nodes.every((e=>"string"===typeof e.id))&&e.links.every((e=>"string"===typeof e.source&&"string"===typeof e.target))}(a))throw new Error("Invalid network diagram specification");console.debug("Network diagram render:",{nodeCount:a.nodes.length,linkCount:a.links.length,groupCount:null===(r=a.groups)||void 0===r?void 0:r.length});try{var i;const r=t.select(e).append("svg").attr("width",a.width).attr("height",a.height).attr("viewBox",[0,0,a.width,a.height]);if(null!==(i=a.groups)&&void 0!==i&&i.length){const e=r.selectAll(".board").data(a.groups).enter().append("g").attr("class","board").attr("transform","translate(0,0)");e.append("rect").attr("x",(e=>"modem_board"===e.id?180:680)).attr("y",50).attr("width",(e=>"modem_board"===e.id?350:200)).attr("height",500).attr("fill","none").attr("stroke","#666").attr("stroke-dasharray","5,5"),e.append("text").attr("x",(e=>"modem_board"===e.id?200:700)).attr("y",80).text((e=>e.label)).attr("fill","#666")}}catch(n){throw console.error("Network diagram render error:",n),t.select(e).selectAll("*").remove(),n}}}];c.forEach((e=>{if(!e.name)throw new Error("Plugin missing required name property");if("number"!==typeof e.priority)throw new Error("Plugin ".concat(e.name," missing required priority number"));if("function"!==typeof e.canHandle)throw new Error("Plugin ".concat(e.name," missing required canHandle function"));if("function"!==typeof e.render)throw new Error("Plugin ".concat(e.name," missing required render function"))}));const d=Object.freeze(c);var u=a(70579);const p=e=>{let{spec:t,width:a=600,height:c=400,containerId:p,type:h="auto",onLoad:m,onError:g,config:y}=e;const{isDarkMode:f}=(0,n.D)(),v=(0,i.useRef)(null),x=(0,i.useRef)(null),w=(0,i.useRef)(null),[b,A]=(0,i.useState)(!0),[M,k]=(0,i.useState)(null),[j,S]=(0,i.useState)([]),C=(0,i.useRef)(null),z=(0,i.useRef)(null),F=(0,i.useRef)(0),R=(0,i.useRef)(!0);(0,i.useEffect)((()=>()=>{if(console.debug("D3Renderer cleanup triggered"),w.current){try{w.current.finalize(),w.current=null}catch(e){}console.debug("Vega view finalized")}x.current&&(z.current&&(z.current.stop(),z.current=null),x.current.innerHTML="",C.current&&(C.current(),C.current=null))}),[]),(0,i.useEffect)((()=>{const e=++F.current;console.debug("Starting render #".concat(e));const i=async()=>{A(!0);try{if(!t)throw new Error("No specification provided");let s,u;try{if("string"===typeof t){if(u=t.replace(/\r\n/g,"\n").split("\n").map((e=>e.trim())).filter((e=>!e.trim().startsWith("//")&&""!==e.trim())),!u.length||!u.some((e=>e.includes("}"))))return void A(!0);const e=u.join("\n").replace(/\/\*[\s\S]*?\*\//g,"");s=JSON.parse(e)}else s=t}catch(i){return A(!0),void console.debug("Waiting for complete spec:",i)}if(!s)return;if("d3"===h||"d3"===s.renderer||"function"===typeof s.render){const t=x.current;if(!t)return;if(e!==F.current)return void console.debug("Skipping stale render #".concat(e));if(z.current)try{z.current.stop(),z.current=null}catch(n){console.warn("Error cleaning up simulation:",n)}const a=document.createElement("div");a.style.width="100%",a.style.height="100%";let r=!1;try{if(s.render&&"function"===typeof s.render){const e=s.render.call(s,a,l);r=!0,"function"===typeof e&&(C.current=e)}else{const e=function(e){if(e.visualizationType){const t=d.find((t=>t.name===e.visualizationType));if(t)return t}const t=d.filter((t=>t.canHandle(e))).sort(((e,t)=>t.priority-e.priority));if(t.length>0)return console.debug("Found ".concat(t.length," matching plugins:"),t.map((e=>"".concat(e.name," (priority: ").concat(e.priority,")")))),t[0]}(s);if(!e)throw new Error("No render function or compatible plugin found");e.render(a,l,s),r=!0}r&&(t.innerHTML="",t.appendChild(a))}catch(M){throw console.error("D3 render error:",M),k(M instanceof Error?M.message:"Render failed"),M}if(!r)throw new Error("Render did not complete successfully");return A(!1),k(null),void(null===m||void 0===m||m())}const p=v.current;if(!p)return;const g=(0,r.A)({$schema:"https://vega.github.io/schema/vega-lite/v5.json",width:a||"container",height:c||300,mark:s.type||"point",data:{values:Array.isArray(s.data)?s.data:[s.data]},encoding:s.encoding||{x:{field:"x",type:"quantitative"},y:{field:"y",type:"quantitative"}}},s);w.current&&(w.current.finalize(),w.current=null),console.debug("Rendering Vega spec:",g);const y=await(0,o.Ay)(p,g,{actions:!1,theme:f?"dark":"excel",renderer:"canvas"});if(!R.current)return void y.view.finalize();w.current=y.view,A(!1),null===m||void 0===m||m()}catch(n){console.error("Visualization error:",n),"Unexpected end of JSON input"!==n.message&&(k(n.message),S([n.message])),A(!1)}};return R.current&&i(),()=>{R.current=!1}}),[t,h,a,c,f]);const P="d3"===h||"object"===typeof t&&("d3"===t.renderer||"function"===typeof t.render);return(0,u.jsx)("div",{id:p||"d3-container",style:{width:"100%",height:c||"300px",minHeight:"200px",padding:"16px",position:"relative"},children:P?(0,u.jsx)("div",{ref:x,className:"d3-container",style:{width:"100%",height:"100%",position:"relative"}}):(0,u.jsxs)("div",{ref:v,id:"vega-container",style:{position:"relative",width:"100%",height:c||"100%"},children:[(b||!t)&&(0,u.jsxs)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0, 0, 0, 0.1)"},children:[(0,u.jsx)(s.A,{size:"large"}),(0,u.jsx)("div",{style:{marginTop:"10px",color:f?"#ffffff":"#000000"},children:"Preparing visualization..."})]}),M&&(0,u.jsxs)("pre",{style:{padding:"16px",margin:"8px",backgroundColor:f?"#2a1215":"#fff1f0",border:"1px solid ".concat(f?"#5c2223":"#ffa39e"),borderRadius:"4px",color:f?"#ff4d4f":"#cf1322",whiteSpace:"pre-wrap",wordWrap:"break-word",maxHeight:"200px",overflowY:"auto",fontSize:"14px",lineHeight:"1.5",fontFamily:"monospace"},children:[(0,u.jsx)("strong",{children:"Error:"}),j.map(((e,t)=>(0,u.jsx)("div",{children:e},t)))]})]})})}},56122:(e,t,a)=>{a.r(t),a.d(t,{D3Test:()=>O,default:()=>G});var r=a(65043),i=a(23927),n=a(6051),s=a(89073),o=a(12624),l=a(96603),c=a(76399),d=a(97606),u=a(4015),p=a(8354),h=a(99472),m=a(81661),g=a(58168);const y={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z"}}]},name:"bar-chart",theme:"outlined"};var f=a(22172),v=function(e,t){return r.createElement(f.A,(0,g.A)({},e,{ref:t,icon:y}))};const x=r.forwardRef(v);const w={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 00-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 00-11.3 0L266.3 586.7a8.03 8.03 0 000 11.3l39.5 39.7z"}}]},name:"line-chart",theme:"outlined"};var b=function(e,t){return r.createElement(f.A,(0,g.A)({},e,{ref:t,icon:w}))};const A=r.forwardRef(b);const M={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 10128 0 64 64 0 10-128 0zm118-224a48 48 0 1096 0 48 48 0 10-96 0zm158 228a96 96 0 10192 0 96 96 0 10-192 0zm148-314a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"dot-chart",theme:"outlined"};var k=function(e,t){return r.createElement(f.A,(0,g.A)({},e,{ref:t,icon:M}))};const j=r.forwardRef(k);const S={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M841 370c3-3.3 2.7-8.3-.6-11.3a8.24 8.24 0 00-5.3-2.1h-72.6c-2.4 0-4.6 1-6.1 2.8L633.5 504.6a7.96 7.96 0 01-13.4-1.9l-63.5-141.3a7.9 7.9 0 00-7.3-4.7H380.7l.9-4.7 8-42.3c10.5-55.4 38-81.4 85.8-81.4 18.6 0 35.5 1.7 48.8 4.7l14.1-66.8c-22.6-4.7-35.2-6.1-54.9-6.1-103.3 0-156.4 44.3-175.9 147.3l-9.4 49.4h-97.6c-3.8 0-7.1 2.7-7.8 6.4L181.9 415a8.07 8.07 0 007.8 9.7H284l-89 429.9a8.07 8.07 0 007.8 9.7H269c3.8 0 7.1-2.7 7.8-6.4l89.7-433.1h135.8l68.2 139.1c1.4 2.9 1 6.4-1.2 8.8l-180.6 203c-2.9 3.3-2.6 8.4.7 11.3 1.5 1.3 3.4 2 5.3 2h72.7c2.4 0 4.6-1 6.1-2.8l123.7-146.7c2.8-3.4 7.9-3.8 11.3-1 .9.8 1.6 1.7 2.1 2.8L676.4 784c1.3 2.8 4.1 4.7 7.3 4.7h64.6a8.02 8.02 0 007.2-11.5l-95.2-198.9c-1.4-2.9-.9-6.4 1.3-8.8L841 370z"}}]},name:"function",theme:"outlined"};var C=function(e,t){return r.createElement(f.A,(0,g.A)({},e,{ref:t,icon:S}))};const z=r.forwardRef(C);const F={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M904 747H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM165.7 621.8l39.7 39.5c3.1 3.1 8.2 3.1 11.3 0l234.7-233.9 97.6 97.3a32.11 32.11 0 0045.2 0l264.2-263.2c3.1-3.1 3.1-8.2 0-11.3l-39.7-39.6a8.03 8.03 0 00-11.3 0l-235.7 235-97.7-97.3a32.11 32.11 0 00-45.2 0L165.7 610.5a7.94 7.94 0 000 11.3z"}}]},name:"stock",theme:"outlined"};var R=function(e,t){return r.createElement(f.A,(0,g.A)({},e,{ref:t,icon:F}))};const P=r.forwardRef(R);const E={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-616-64h536c4.4 0 8-3.6 8-8V284c0-7.2-8.7-10.7-13.7-5.7L592 488.6l-125.4-124a8.03 8.03 0 00-11.3 0l-189 189.6a7.87 7.87 0 00-2.3 5.6V720c0 4.4 3.6 8 8 8z"}}]},name:"area-chart",theme:"outlined"};var D=function(e,t){return r.createElement(f.A,(0,g.A)({},e,{ref:t,icon:E}))};const H=r.forwardRef(D);var B=a(41334),T=a(53159),I=a(70579);const{Title:L,Text:V,Paragraph:q}=i.A,N=[{title:"Simple Vertical Bars",description:"Basic bar chart with single series and value labels",type:"simple",category:"bar",testedFeatures:["Basic bars","Value labels","Tooltips"],status:"working",spec:{type:"bar",data:[{label:"A",value:10},{label:"B",value:20},{label:"C",value:15},{label:"D",value:25},{label:"E",value:18}],options:{interactive:!0,valueLabels:!0,yAxis:{label:"Values"},xAxis:{label:"Categories"}}}},{title:"Grouped Bar Chart",description:"Multiple series with grouping and custom colors",type:"complex",category:"bar",testedFeatures:["Grouped bars","Custom colors","Legend","Interactive tooltips"],status:"working",spec:{type:"bar",data:[{label:"Q1",value:1e3,group:"2023",color:"#ff4d4f"},{label:"Q2",value:1200,group:"2023",color:"#ff4d4f"},{label:"Q3",value:900,group:"2023",color:"#ff4d4f"},{label:"Q4",value:1500,group:"2023",color:"#ff4d4f"},{label:"Q1",value:800,group:"2024",color:"#40a9ff"},{label:"Q2",value:1400,group:"2024",color:"#40a9ff"}],options:{grouped:!0,animation:!0,interactive:!0,legend:!0}}},{title:"Stacked Bar Chart",description:"Stacked bars with multiple categories",type:"complex",category:"bar",testedFeatures:["Stacked bars","Percentage view","Category colors"],status:"working",spec:{type:"bar",data:[{label:"Product A",categories:[{name:"Revenue",value:500},{name:"Costs",value:300},{name:"Profit",value:200}]},{label:"Product B",categories:[{name:"Revenue",value:800},{name:"Costs",value:400},{name:"Profit",value:400}]},{label:"Product C",categories:[{name:"Revenue",value:400},{name:"Costs",value:200},{name:"Profit",value:200}]}],options:{stacked:!0,percentage:!1,interactive:!0,animation:!0}}},{title:"Bars with Negative Values",description:"Bar chart showing positive and negative values",type:"complex",category:"bar",testedFeatures:["Negative values","Zero line","Value coloring"],status:"working",spec:{type:"bar",data:[{label:"Jan",value:50},{label:"Feb",value:-30},{label:"Mar",value:25},{label:"Apr",value:-45},{label:"May",value:60},{label:"Jun",value:-20}],options:{zeroLine:!0,valueColors:!0,interactive:!0}}},{title:"Simple Line Chart",description:"Basic line chart with smooth interpolation",type:"simple",category:"line",testedFeatures:["Line interpolation","Point markers","Hover effects"],status:"working",spec:{type:"line",data:Array.from({length:10},((e,t)=>({date:"2024-".concat(t+1),value:10*Math.sin(t/2)+20}))),options:{interactive:!0,points:!0,smooth:!0,yAxis:{label:"Values"},xAxis:{label:"Time"}}}},{title:"Multiple Line Series",description:"Multiple lines with different scales and patterns",type:"complex",category:"line",testedFeatures:["Multiple series","Different scales","Pattern variations"],status:"working",spec:{type:"line",data:{series:[{name:"Temperature",values:Array.from({length:24},((e,t)=>({date:"2024-".concat(t+1),value:10*Math.sin(t/3)+20}))),pattern:"solid"},{name:"Pressure",values:Array.from({length:24},((e,t)=>({date:"2024-".concat(t+1),value:100*Math.cos(t/4)+1e3}))),pattern:"dashed"},{name:"Humidity",values:Array.from({length:24},((e,t)=>({date:"2024-".concat(t+1),value:20*Math.sin(t/6)+50}))),pattern:"dotted"}]},options:{interactive:!0,legend:!0,multiScale:!0}}},{title:"Area Chart",description:"Stacked area chart with gradient fills",type:"complex",category:"line",testedFeatures:["Area fills","Gradients","Stacking"],status:"working",spec:{type:"line",data:{series:[{name:"Series A",values:Array.from({length:12},((e,t)=>({date:"2024-".concat(t+1),value:50*Math.random()+50}))),fill:"gradient"},{name:"Series B",values:Array.from({length:12},((e,t)=>({date:"2024-".concat(t+1),value:40*Math.random()+30}))),fill:"gradient"},{name:"Series C",values:Array.from({length:12},((e,t)=>({date:"2024-".concat(t+1),value:30*Math.random()+20}))),fill:"gradient"}]},options:{stacked:!0,area:!0,interactive:!0}}},{title:"Step Function Chart",description:"Step-wise line chart with transitions",type:"simple",category:"line",testedFeatures:["Step interpolation","Transitions","Value labels"],status:"working",spec:{type:"line",data:Array.from({length:10},((e,t)=>({date:"2024-".concat(t+1),value:10*Math.floor(5*Math.random())}))),options:{step:!0,valueLabels:!0,animation:{duration:1e3,sequential:!0}}}},{title:"Real-time Data Simulation",description:"Live updating line chart with sliding window",type:"complex",category:"line",testedFeatures:["Real-time updates","Sliding window","Smooth transitions"],status:"working",spec:{type:"line",data:Array.from({length:30},((e,t)=>({date:new Date(Date.now()-1e3*(30-t)).toISOString(),value:10*Math.sin(t/5)+20+5*Math.random()}))),options:{realtime:!0,windowSize:30,updateInterval:1e3,smoothing:!0}}},{title:"Basic Scatter Plot",description:"Simple scatter plot with hover interactions",type:"simple",category:"scatter",testedFeatures:["Basic points","Hover effects","Tooltips"],status:"working",spec:{type:"scatter",data:Array.from({length:50},(()=>({x:100*Math.random(),y:100*Math.random(),label:"Point"}))),options:{interactive:!0,tooltip:!0}}},{title:"Advanced Bubble Chart",description:"Bubble chart with size, color, and category mapping",type:"complex",category:"bubble",testedFeatures:["Size mapping","Color gradients","Categories","Custom tooltips"],status:"working",spec:{type:"bubble",data:Array.from({length:30},((e,t)=>({x:100*Math.random(),y:100*Math.random(),size:50*Math.random()+10,category:"Group ".concat(Math.floor(t/10)),value:1e3*Math.random(),color:"hsl(".concat(360*Math.random(),", 70%, 50%)")}))),options:{sizeScale:{field:"value",range:[10,50]},colorScale:{field:"category",scheme:"category10"},legend:!0,interactive:!0}}},{title:"Quadrant Analysis",description:"Scatter plot with quadrant divisions and statistics",type:"complex",category:"scatter",testedFeatures:["Quadrants","Statistics","Reference lines","Annotations"],status:"working",spec:{type:"scatter",data:Array.from({length:100},(()=>({x:100*(Math.random()-.5),y:100*(Math.random()-.5),category:Math.random()>.5?"A":"B"}))),options:{quadrants:{labels:["High-High","High-Low","Low-Low","Low-High"],stats:!0},referenceLines:!0,annotations:!0}}},{title:"Correlation Plot",description:"Scatter plot with regression line and confidence interval",type:"complex",category:"scatter",testedFeatures:["Regression line","Confidence interval","R-squared","Outliers"],status:"working",spec:{type:"scatter",data:Array.from({length:50},((e,t)=>{const a=2*t+10*Math.random();return{x:a,y:.5*a+20*Math.random()-10}})),options:{regression:{type:"linear",showConfidence:!0,showEquation:!0},outlierDetection:!0}}},{title:"Mathematical Functions",description:"Multiple mathematical functions with interactive features",type:"complex",category:"function",testedFeatures:["Multiple functions","Interactive domain","Function composition"],status:"working",spec:{type:"function",data:[{fn:"Math.sin(x)",domain:[-2*Math.PI,2*Math.PI],label:"sin(x)"},{fn:"Math.cos(x)",domain:[-2*Math.PI,2*Math.PI],label:"cos(x)"},{fn:"Math.sin(x) * Math.cos(x)",domain:[-2*Math.PI,2*Math.PI],label:"sin(x)cos(x)"}],options:{interactive:!0,grid:!0,legend:!0}}},{title:"Parametric Equations",description:"Parametric function visualization with animation",type:"complex",category:"function",testedFeatures:["Parametric equations","Animation","Path tracing"],status:"working",spec:{type:"function",data:[{parameterX:"Math.cos(3*t) * (1 + 0.5 * Math.cos(5*t))",parameterY:"Math.sin(2*t) * (1 + 0.5 * Math.sin(7*t))",domain:[0,2*Math.PI],label:"Rose Curve",samples:500}],options:{animation:{duration:5e3,repeat:!0},pathTrace:!0}}},{title:"Statistical Distributions",description:"Various probability distributions with interactive parameters",type:"complex",category:"function",testedFeatures:["Multiple distributions","Parameter controls","Area highlighting"],status:"working",spec:{type:"function",data:[{fn:"Math.exp(-Math.pow(x-0, 2)/(2*Math.pow(1,2)))/(Math.sqrt(2*Math.PI))",domain:[-4,4],label:"Normal(0,1)",fill:!0},{fn:"Math.exp(-x)*Math.pow(x,2)/2",domain:[0,10],label:"Gamma(3,1)",fill:!0}],options:{interactive:!0,parameters:{mean:[-2,2],variance:[.5,2]}}}},{title:"Dual Axis Comparison",description:"Two different metrics with independent scales",type:"complex",category:"multiaxis",testedFeatures:["Dual axes","Independent scales","Mixed types"],status:"working",spec:{type:"multiaxis",data:{x:Array.from({length:12},((e,t)=>t+1)),series:[{name:"Revenue",values:Array.from({length:12},(()=>1e3*Math.random()+500)),axis:"y1",color:"#1890ff",type:"bar"},{name:"Growth Rate",values:Array.from({length:12},(()=>30*Math.random()-10)),axis:"y2",color:"#52c41a",type:"line"}]},options:{axes:{y1:{label:"Revenue ($)",domain:[0,2e3]},y2:{label:"Growth Rate (%)",domain:[-20,40]}},interactive:!0}}},{title:"Triple Axis Dashboard",description:"Three metrics with synchronized interactions",type:"complex",category:"multiaxis",testedFeatures:["Triple axes","Synchronized tooltips","Mixed visualizations"],status:"working",spec:{type:"multiaxis",data:{x:Array.from({length:24},((e,t)=>t)),series:[{name:"Users",values:Array.from({length:24},(()=>Math.floor(1e3*Math.random()))),axis:"y1",type:"area"},{name:"Response Time",values:Array.from({length:24},(()=>100*Math.random()+50)),axis:"y2",type:"line"},{name:"Error Rate",values:Array.from({length:24},(()=>5*Math.random())),axis:"y3",type:"bar"}]},options:{synchronizedTooltips:!0,legend:!0,interactive:!0}}},{title:"Performance Metrics",description:"System performance visualization with multiple metrics",type:"complex",category:"multiaxis",testedFeatures:["Real-time updates","Thresholds","Alerts"],status:"working",spec:{type:"multiaxis",data:{x:Array.from({length:60},((e,t)=>t)),series:[{name:"CPU",values:Array.from({length:60},(()=>100*Math.random())),axis:"y1",thresholds:[80,90]},{name:"Memory",values:Array.from({length:60},(()=>16*Math.random())),axis:"y2",thresholds:[14,15]},{name:"Network",values:Array.from({length:60},(()=>1e3*Math.random())),axis:"y3",thresholds:[800,900]}]},options:{realtime:!0,alerts:!0,updateInterval:1e3}}},{title:"Time Series with Events",description:"Time series with event markers and annotations",type:"complex",category:"timeseries",testedFeatures:["Event markers","Annotations","Zoom"],status:"working",spec:{type:"timeseries",data:{series:[{name:"Metric",values:Array.from({length:100},((e,t)=>({date:new Date(2024,0,t+1).toISOString(),value:100*Math.random()})))}],events:[{date:new Date(2024,0,15).toISOString(),type:"deployment",label:"v1.0 Release"},{date:new Date(2024,0,45).toISOString(),type:"incident",label:"System Outage"}]},options:{eventMarkers:!0,annotations:!0,zoomable:!0}}},{title:"Aggregated Time Series",description:"Time series with multiple aggregation levels",type:"complex",category:"timeseries",testedFeatures:["Aggregation","Resolution switching","Summary statistics"],status:"working",spec:{type:"timeseries",data:{raw:Array.from({length:1e3},((e,t)=>({date:new Date(2024,0,1+t/24).toISOString(),value:100*Math.random()}))),aggregations:["hour","day","week","month"]},options:{aggregation:{default:"day",methods:["avg","min","max","sum"]},statistics:!0}}},{title:"Large Dataset Performance",description:"Handling and optimizing large datasets",type:"complex",category:"special",testedFeatures:["Data sampling","Progressive loading","Performance optimization"],status:"working",spec:{type:"scatter",data:Array.from({length:1e4},((e,t)=>({x:1e3*Math.random(),y:1e3*Math.random(),category:"Group ".concat(Math.floor(t/1e3)),size:10*Math.random()}))),options:{optimization:{sampling:!0,sampleSize:1e3,progressive:!0,chunkSize:500},clustering:!0,performance:{canvas:!0,webgl:!0}}}},{title:"Error State Handling",description:"Visualization of various error states",type:"complex",category:"special",testedFeatures:["Error states","Fallbacks","Recovery"],status:"working",spec:{type:"multiaxis",data:{series:[{name:"Valid Data",values:Array.from({length:10},(()=>100*Math.random()))},{name:"Missing Data",values:Array.from({length:10},((e,t)=>t%3===0?null:100*Math.random()))},{name:"Invalid Data",values:Array.from({length:10},((e,t)=>t%4===0?"invalid":100*Math.random()))}]},options:{errorHandling:{missing:"interpolate",invalid:"omit",showIndicators:!0}}}},{title:"Interactive Patterns",description:"Advanced interaction patterns and gestures",type:"complex",category:"special",testedFeatures:["Custom interactions","Gestures","Linked views"],status:"working",spec:{type:"scatter",data:Array.from({length:100},(()=>({x:100*Math.random(),y:100*Math.random(),category:Math.random()>.5?"A":"B"}))),options:{interactions:{lasso:!0,brush:!0,zoom:!0,pan:!0},linkedViews:[{type:"histogram",dimension:"x"},{type:"histogram",dimension:"y"}]}}},{title:"Animation Sequence",description:"Complex animation sequences and transitions",type:"complex",category:"special",testedFeatures:["Animation sequences","Transitions","State morphing"],status:"working",spec:{type:"bar",data:{states:[Array.from({length:5},(()=>({value:100*Math.random()}))),Array.from({length:5},(()=>({value:100*Math.random()}))),Array.from({length:5},(()=>({value:100*Math.random()})))],transitions:[{duration:1e3,ease:"linear"},{duration:1e3,ease:"bounce"}]},options:{animation:{sequence:!0,loop:!0,delay:2e3}}}},{title:"Basic Sine Wave with Cosine",description:"Trigonometric function comparison",type:"simple",category:"function",testedFeatures:["Multiple functions","Grid lines","Legend"],status:"working",spec:{type:"function",data:[{fn:"Math.sin(x)",domain:[-6.283185307179586,6.283185307179586],label:"sin(x)"},{fn:"Math.cos(x)",domain:[-6.283185307179586,6.283185307179586],label:"cos(x)"}],options:{interactive:!0,xDomain:[-7,7],yDomain:[-1.5,1.5],grid:!0}}},{title:"Complex Wave Interference",description:"Wave interference patterns with multiple frequencies",type:"complex",category:"function",testedFeatures:["Wave interference","Multiple frequencies","Animation"],status:"working",spec:{type:"function",data:[{fn:"Math.sin(5*x) * Math.cos(3*x)",domain:[-6.283185307179586,6.283185307179586],label:"Wave 1"},{fn:"Math.sin(7*x) * Math.cos(2*x)",domain:[-6.283185307179586,6.283185307179586],label:"Wave 2"},{fn:"(Math.sin(5*x) * Math.cos(3*x) + Math.sin(7*x) * Math.cos(2*x))/2",domain:[-6.283185307179586,6.283185307179586],label:"Interference"}],options:{samples:1e3,interactive:!0,animation:!0}}},{title:"Parametric Heart Curve",description:"Heart-shaped curve using parametric equations",type:"complex",category:"function",testedFeatures:["Parametric equations","Custom domain","Animation"],status:"working",spec:{type:"function",data:[{parameterX:"16 * Math.pow(Math.sin(t), 3)",parameterY:"13 * Math.cos(t) - 5 * Math.cos(2*t) - 2 * Math.cos(3*t) - Math.cos(4*t)",parameter:"t",domain:[0,2*Math.PI],label:"Heart",samples:1e3}],options:{aspectRatio:1,xDomain:[-20,20],yDomain:[-20,20],animation:{duration:3e3,repeat:!0}}}},{title:"Statistical Distributions",description:"Normal and other probability distributions",type:"complex",category:"function",testedFeatures:["Multiple distributions","Area filling","Interactive parameters"],status:"working",spec:{type:"function",data:[{fn:"Math.exp(-Math.pow(x,2)/2)/Math.sqrt(2*Math.PI)",domain:[-4,4],label:"N(0,1)",fill:!0},{fn:"Math.exp(-Math.pow(x-1,2)/4)/Math.sqrt(4*Math.PI)",domain:[-4,4],label:"N(1,2)",fill:!0}],options:{yDomain:[0,.5],interactive:!0,grid:!0,fillOpacity:.3}}},{title:"Monthly Revenue with Trend",description:"Bar chart with trend line overlay",type:"complex",category:"multiaxis",testedFeatures:["Mixed chart types","Trend line","Dual axes"],status:"working",spec:{type:"multiaxis",data:{labels:["Jan","Feb","Mar","Apr","May","Jun"],series:[{name:"Revenue",type:"bar",values:[1e3,1200,900,1500,2e3,1800],axis:"y1"},{name:"Trend",type:"line",values:[1100,1150,1300,1450,1600,1750],axis:"y1",style:{stroke:"#ff4d4f",strokeWidth:2,strokeDasharray:"5,5"}}]},options:{axes:{y1:{label:"Revenue ($)",domain:[0,2500]}},legend:!0,animation:!0}}},{title:"Empty and Edge Cases",description:"Handling of empty and edge case data",type:"complex",category:"special",testedFeatures:["Empty states","Loading states","Error states"],status:"working",spec:{type:"multiaxis",data:{empty:[],partial:[{complete:!0,value:100},{complete:!1},{complete:!0,value:0}],invalid:[{value:1/0},{value:NaN},{value:-1/0}]},options:{emptyState:{message:"No data available",action:"Refresh"},loadingState:{type:"skeleton",animation:!0}}}}],O=()=>{const[e,t]=(0,r.useState)(!1),[a,i]=(0,r.useState)("all"),[g,y]=(0,r.useState)("all"),[f,v]=(0,r.useState)(!1),w=N.filter((e=>("all"===a||e.type===a)&&("all"===g||e.category===g)&&(f||"needs-fix"!==e.status))),b={bar:(0,I.jsx)(x,{}),line:(0,I.jsx)(A,{}),scatter:(0,I.jsx)(j,{}),function:(0,I.jsx)(z,{}),multiaxis:(0,I.jsx)(P,{}),bubble:(0,I.jsx)(j,{}),timeseries:(0,I.jsx)(H,{}),special:(0,I.jsx)(B.A,{})};return(0,I.jsxs)(n.A,{direction:"vertical",size:"large",style:{width:"100%",padding:"20px"},children:[(0,I.jsx)(s.A,{children:(0,I.jsxs)(n.A,{direction:"vertical",size:"middle",style:{width:"100%"},children:[(0,I.jsxs)(n.A,{wrap:!0,children:[(0,I.jsx)(V,{children:"Show Source:"}),(0,I.jsx)(o.A,{checked:e,onChange:t,checkedChildren:(0,I.jsx)(T.A,{}),unCheckedChildren:(0,I.jsx)(T.A,{})}),(0,I.jsx)(V,{children:"Show Broken Examples:"}),(0,I.jsx)(o.A,{checked:f,onChange:v})]}),(0,I.jsxs)(n.A,{wrap:!0,children:[(0,I.jsx)(V,{children:"Complexity:"}),(0,I.jsxs)(l.Ay.Group,{value:a,onChange:e=>i(e.target.value),children:[(0,I.jsx)(l.Ay.Button,{value:"all",children:"All"}),(0,I.jsx)(l.Ay.Button,{value:"simple",children:"Simple"}),(0,I.jsx)(l.Ay.Button,{value:"complex",children:"Complex"})]})]}),(0,I.jsxs)(n.A,{wrap:!0,children:[(0,I.jsx)(V,{children:"Category:"}),(0,I.jsxs)(l.Ay.Group,{value:g,onChange:e=>y(e.target.value),children:[(0,I.jsx)(l.Ay.Button,{value:"all",children:"All"}),Object.entries(b).map((e=>{let[t,a]=e;return(0,I.jsxs)(l.Ay.Button,{value:t,children:[a," ",t.charAt(0).toUpperCase()+t.slice(1)]},t)}))]})]}),(0,I.jsx)(n.A,{children:(0,I.jsxs)(V,{children:["Showing ",w.length," of ",N.length," test cases"]})})]})}),w.map(((t,a)=>(0,I.jsxs)(s.A,{type:"inner",title:(0,I.jsxs)(n.A,{direction:"vertical",size:"small",style:{width:"100%"},children:[(0,I.jsxs)(n.A,{children:[b[t.category],(0,I.jsx)(L,{level:4,style:{margin:0},children:t.title}),(0,I.jsxs)(V,{type:"secondary",children:["(",t.type,")"]}),"needs-fix"===t.status&&(0,I.jsx)(c.A,{color:"error",children:"Needs Fix"})]}),(0,I.jsx)(q,{type:"secondary",children:t.description}),(0,I.jsx)(n.A,{wrap:!0,children:t.testedFeatures.map(((e,t)=>(0,I.jsx)(d.A,{title:"Tested Feature",children:(0,I.jsx)(c.A,{color:"blue",icon:(0,I.jsx)(B.A,{}),children:e})},t)))})]}),extra:(0,I.jsx)(n.A,{children:"needs-fix"===t.status&&(0,I.jsx)(d.A,{title:"View Error Details",children:(0,I.jsx)(u.Ay,{type:"text",danger:!0,icon:(0,I.jsx)(B.A,{}),children:"Error Details"})})}),children:[(0,I.jsx)("div",{style:{position:"relative",minHeight:"300px"},children:(0,I.jsx)(m.J,{spec:JSON.stringify(t.spec),width:800,height:400})}),e&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(p.A,{children:(0,I.jsxs)(n.A,{children:[(0,I.jsx)(T.A,{}),(0,I.jsx)(V,{children:"Source"})]})}),(0,I.jsx)("div",{style:{maxHeight:"400px",overflow:"auto",backgroundColor:"rgb(40, 44, 52)",borderRadius:"6px",padding:"16px"},children:(0,I.jsx)("pre",{style:{margin:0},children:(0,I.jsx)("code",{style:{color:"#abb2bf"},children:JSON.stringify(t.spec,null,2)})})})]})]},a))),0===w.length&&(0,I.jsx)(s.A,{children:(0,I.jsx)(h.A,{description:(0,I.jsxs)(n.A,{direction:"vertical",children:[(0,I.jsx)(V,{children:"No test cases match the current filters"}),(0,I.jsx)(u.Ay,{type:"primary",onClick:()=>{y("all"),i("all")},children:"Reset Filters"})]})})})]})},G=O}}]);
3
+ //# sourceMappingURL=56122.1d6a5c10.chunk.js.map
@@ -0,0 +1,9 @@
1
+ /**![area-chart](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4OCA3OTJIMjAwVjE2OGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2Njg4YzAgNC40IDMuNiA4IDggOGg3NTJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS02MTYtNjRoNTM2YzQuNCAwIDgtMy42IDgtOFYyODRjMC03LjItOC43LTEwLjctMTMuNy01LjdMNTkyIDQ4OC42bC0xMjUuNC0xMjRhOC4wMyA4LjAzIDAgMDAtMTEuMyAwbC0xODkgMTg5LjZhNy44NyA3Ljg3IDAgMDAtMi4zIDUuNlY3MjBjMCA0LjQgMy42IDggOCA4eiIgLz48L3N2Zz4=) */
2
+
3
+ /**![dot-chart](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4OCA3OTJIMjAwVjE2OGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2Njg4YzAgNC40IDMuNiA4IDggOGg3NTJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTI4OCA2MDRhNjQgNjQgMCAxMDEyOCAwIDY0IDY0IDAgMTAtMTI4IDB6bTExOC0yMjRhNDggNDggMCAxMDk2IDAgNDggNDggMCAxMC05NiAwem0xNTggMjI4YTk2IDk2IDAgMTAxOTIgMCA5NiA5NiAwIDEwLTE5MiAwem0xNDgtMzE0YTU2IDU2IDAgMTAxMTIgMCA1NiA1NiAwIDEwLTExMiAweiIgLz48L3N2Zz4=) */
4
+
5
+ /**![function](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHN0eWxlIC8+PC9kZWZzPjxwYXRoIGQ9Ik04NDEgMzcwYzMtMy4zIDIuNy04LjMtLjYtMTEuM2E4LjI0IDguMjQgMCAwMC01LjMtMi4xaC03Mi42Yy0yLjQgMC00LjYgMS02LjEgMi44TDYzMy41IDUwNC42YTcuOTYgNy45NiAwIDAxLTEzLjQtMS45bC02My41LTE0MS4zYTcuOSA3LjkgMCAwMC03LjMtNC43SDM4MC43bC45LTQuNyA4LTQyLjNjMTAuNS01NS40IDM4LTgxLjQgODUuOC04MS40IDE4LjYgMCAzNS41IDEuNyA0OC44IDQuN2wxNC4xLTY2LjhjLTIyLjYtNC43LTM1LjItNi4xLTU0LjktNi4xLTEwMy4zIDAtMTU2LjQgNDQuMy0xNzUuOSAxNDcuM2wtOS40IDQ5LjRoLTk3LjZjLTMuOCAwLTcuMSAyLjctNy44IDYuNEwxODEuOSA0MTVhOC4wNyA4LjA3IDAgMDA3LjggOS43SDI4NGwtODkgNDI5LjlhOC4wNyA4LjA3IDAgMDA3LjggOS43SDI2OWMzLjggMCA3LjEtMi43IDcuOC02LjRsODkuNy00MzMuMWgxMzUuOGw2OC4yIDEzOS4xYzEuNCAyLjkgMSA2LjQtMS4yIDguOGwtMTgwLjYgMjAzYy0yLjkgMy4zLTIuNiA4LjQuNyAxMS4zIDEuNSAxLjMgMy40IDIgNS4zIDJoNzIuN2MyLjQgMCA0LjYtMSA2LjEtMi44bDEyMy43LTE0Ni43YzIuOC0zLjQgNy45LTMuOCAxMS4zLTEgLjkuOCAxLjYgMS43IDIuMSAyLjhMNjc2LjQgNzg0YzEuMyAyLjggNC4xIDQuNyA3LjMgNC43aDY0LjZhOC4wMiA4LjAyIDAgMDA3LjItMTEuNWwtOTUuMi0xOTguOWMtMS40LTIuOS0uOS02LjQgMS4zLTguOEw4NDEgMzcweiIgLz48L3N2Zz4=) */
6
+
7
+ /**![line-chart](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4OCA3OTJIMjAwVjE2OGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2Njg4YzAgNC40IDMuNiA4IDggOGg3NTJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTMwNS44IDYzNy43YzMuMSAzLjEgOC4xIDMuMSAxMS4zIDBsMTM4LjMtMTM3LjZMNTgzIDYyOC41YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMjc1LjQtMjc1LjNjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtMzkuNi0zOS42YTguMDMgOC4wMyAwIDAwLTExLjMgMGwtMjMwIDIyOS45TDQ2MS40IDQwNGE4LjAzIDguMDMgMCAwMC0xMS4zIDBMMjY2LjMgNTg2LjdhOC4wMyA4LjAzIDAgMDAwIDExLjNsMzkuNSAzOS43eiIgLz48L3N2Zz4=) */
8
+
9
+ /**![stock](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkwNCA3NDdIMTIwYy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHpNMTY1LjcgNjIxLjhsMzkuNyAzOS41YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMjM0LjctMjMzLjkgOTcuNiA5Ny4zYTMyLjExIDMyLjExIDAgMDA0NS4yIDBsMjY0LjItMjYzLjJjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtMzkuNy0zOS42YTguMDMgOC4wMyAwIDAwLTExLjMgMGwtMjM1LjcgMjM1LTk3LjctOTcuM2EzMi4xMSAzMi4xMSAwIDAwLTQ1LjIgMEwxNjUuNyA2MTAuNWE3Ljk0IDcuOTQgMCAwMDAgMTEuM3oiIC8+PC9zdmc+) */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/js/56122.1d6a5c10.chunk.js","mappings":"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","sources":["plugins/d3/networkDiagram.ts","plugins/d3/registry.ts","components/D3Renderer.tsx","../node_modules/@ant-design/icons-svg/es/asn/BarChartOutlined.js","../node_modules/@ant-design/icons/es/icons/BarChartOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LineChartOutlined.js","../node_modules/@ant-design/icons/es/icons/LineChartOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DotChartOutlined.js","../node_modules/@ant-design/icons/es/icons/DotChartOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FunctionOutlined.js","../node_modules/@ant-design/icons/es/icons/FunctionOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/StockOutlined.js","../node_modules/@ant-design/icons/es/icons/StockOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/AreaChartOutlined.js","../node_modules/@ant-design/icons/es/icons/AreaChartOutlined.js","components/D3Test.tsx"],"sourcesContent":["import { BaseType, Selection } from 'd3';\nimport { D3RenderPlugin, D3Node, D3Link, D3Style } from '../../types/d3';\nexport interface NetworkDiagramSpec {\n width: number;\n height: number;\n nodes: D3Node[];\n links: D3Link[];\n groups?: Array<{\n id: string;\n label: string;\n members: string[];\n }>;\n styles?: {\n [key: string]: D3Style;\n };\n};\n\nconst isNetworkDiagramSpec = (spec: any): spec is NetworkDiagramSpec => {\n return (\n typeof spec === 'object' &&\n !spec.render && // Don't handle specs with direct render functions\n spec.type === 'network' &&\n Array.isArray(spec.nodes) &&\n Array.isArray(spec.links) &&\n spec.nodes.length > 0 &&\n spec.links.length > 0 &&\n spec.nodes.every((n: any) => typeof n.id === 'string' && n.id) &&\n spec.links.every((l: any) => typeof l.source === 'string' && typeof l.target === 'string')\n );\n};\n\nexport const networkDiagramPlugin: D3RenderPlugin = {\n name: 'network-diagram',\n priority: 1,\n canHandle: isNetworkDiagramSpec,\n render: (container: HTMLElement, d3: any, spec: any) => {\n console.debug('Network diagram plugin rendering:', spec);\n if (!isNetworkDiagramSpec(spec)) {\n throw new Error('Invalid network diagram specification');\n }\n\n function isNetworkDiagramSpec(spec: any): spec is NetworkDiagramSpec {\n return (\n typeof spec === 'object' &&\n spec.type === 'network' &&\n Array.isArray(spec.nodes) &&\n Array.isArray(spec.links) &&\n spec.nodes.every((n: any) => typeof n.id === 'string') &&\n spec.links.every((l: any) => typeof l.source === 'string' && typeof l.target === 'string')\n );\n }\n console.debug('Network diagram render:', {\n nodeCount: spec.nodes.length,\n linkCount: spec.links.length,\n groupCount: spec.groups?.length\n });\n try {\n const svg = d3.select(container)\n .append('svg')\n .attr('width', spec.width)\n .attr('height', spec.height)\n .attr('viewBox', [0, 0, spec.width, spec.height]);\n // Create board containers if groups exist\n if (spec.groups?.length) {\n const boards = svg.selectAll('.board')\n .data(spec.groups)\n .enter()\n .append('g')\n .attr('class', 'board')\n .attr('transform', 'translate(0,0)');\n boards.append('rect')\n .attr('x', d => d.id === 'modem_board' ? 180 : 680)\n .attr('y', 50)\n .attr('width', d => d.id === 'modem_board' ? 350 : 200)\n .attr('height', 500)\n .attr('fill', 'none')\n .attr('stroke', '#666')\n .attr('stroke-dasharray', '5,5');\n boards.append('text')\n .attr('x', d => d.id === 'modem_board' ? 200 : 700)\n .attr('y', 80)\n .text(d => d.label)\n .attr('fill', '#666');\n }\n // Draw links first (rest of the rendering code remains the same)\n // ... (previous link rendering code)\n // Draw nodes\n // ... (previous node rendering code)\n } catch (error) {\n console.error('Network diagram render error:', error);\n // Clean up on error\n d3.select(container).selectAll('*').remove();\n throw error;\n }\n }\n};\n","import { D3RenderPlugin } from '../../types/d3';\nimport { networkDiagramPlugin } from './networkDiagram';\n// Registry for D3 visualization plugins\nconst pluginRegistry: D3RenderPlugin[] = [\n networkDiagramPlugin\n // Add more plugins here as needed\n];\n// Validate plugins on load\npluginRegistry.forEach(plugin => {\n if (!plugin.name) {\n throw new Error('Plugin missing required name property');\n }\n if (typeof plugin.priority !== 'number') {\n throw new Error(`Plugin ${plugin.name} missing required priority number`);\n }\n if (typeof plugin.canHandle !== 'function') {\n throw new Error(`Plugin ${plugin.name} missing required canHandle function`);\n }\n if (typeof plugin.render !== 'function') {\n throw new Error(`Plugin ${plugin.name} missing required render function`);\n }\n});\nexport const d3RenderPlugins = Object.freeze(pluginRegistry);\nexport const getPluginByName = (name: string) => d3RenderPlugins.find(p => p.name === name);\n","import React, { useState, useEffect, useRef } from 'react';\nimport { useTheme } from '../context/ThemeContext';\nimport { Spin } from 'antd';\nimport vegaEmbed from 'vega-embed';\nimport * as d3 from 'd3';\nimport { D3RenderPlugin } from '../types/d3';\nimport { d3RenderPlugins } from '../plugins/d3/registry';\n\ntype RenderType = 'auto' | 'vega-lite' | 'd3';\n\ninterface D3RendererProps {\n spec: any;\n width?: number;\n height?: number;\n containerId?: string; \n type?: RenderType;\n onLoad?: () => void; \n onError?: (error: Error) => void; \n config?: any; \n}\n\nfunction findPlugin(spec: any): D3RenderPlugin | undefined {\n // First check for explicit type\n if (spec.visualizationType) {\n const exactMatch = d3RenderPlugins.find(p => p.name === spec.visualizationType);\n if (exactMatch) return exactMatch;\n }\n // Then check all plugins in priority order\n const matchingPlugins = d3RenderPlugins\n .filter(p => p.canHandle(spec))\n .sort((a, b) => b.priority - a.priority);\n if (matchingPlugins.length > 0) {\n console.debug(`Found ${matchingPlugins.length} matching plugins:`,\n matchingPlugins.map(p => `${p.name} (priority: ${p.priority})`));\n return matchingPlugins[0];\n }\n}\n\nexport const D3Renderer: React.FC<D3RendererProps> = ({\n spec,\n width = 600,\n height = 400,\n containerId,\n type = 'auto',\n onLoad,\n onError,\n config\n}) => {\n const { isDarkMode } = useTheme();\n const vegaContainerRef = useRef<HTMLDivElement>(null);\n const d3ContainerRef = useRef<HTMLDivElement>(null);\n const vegaViewRef = useRef<any>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [renderError, setRenderError] = useState<string | null>(null);\n const [errorDetails, setErrorDetails] = useState<string[]>([]);\n const cleanupRef = useRef<(() => void) | null>(null);\n const simulationRef = useRef<any>(null);\n const renderIdRef = useRef<number>(0);\n const mounted = useRef(true);\n\n // First useEffect for cleanup\nuseEffect(() => {\n return () => {\n console.debug('D3Renderer cleanup triggered');\n if (vegaViewRef.current) {\n try {\n vegaViewRef.current.finalize();\n vegaViewRef.current = null;\n } catch (e) { /* ignore cleanup errors */ }\n console.debug('Vega view finalized');\n }\n // Clear D3 container\n if (d3ContainerRef.current) {\n // Stop any running force simulation\n if (simulationRef.current) {\n simulationRef.current.stop();\n simulationRef.current = null;\n }\n d3ContainerRef.current.innerHTML = '';\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = null;\n }\n }\n };\n}, []);\n\n// Main rendering useEffect\nuseEffect(() => {\n const currentRender = ++renderIdRef.current;\n console.debug(`Starting render #${currentRender}`);\n\n const initializeVisualization = async () => {\n setIsLoading(true);\n try {\n if (!spec) {\n throw new Error('No specification provided');\n }\n\n let parsed: any;\n let specLines: string[];\n\n try {\n if (typeof spec === 'string') {\n // Clean up the spec string\n specLines = spec\n .replace(/\\r\\n/g, '\\n')\n .split('\\n')\n .map(line => line.trim())\n .filter(line => !line.trim().startsWith('//') && line.trim() !== '');\n\n // Check if we have a complete code block\n if (!specLines.length || !specLines.some(line => line.includes('}'))) {\n setIsLoading(true);\n return; // Exit early if code block is incomplete\n }\n\n const cleanSpec = specLines.join('\\n').replace(/\\/\\*[\\s\\S]*?\\*\\//g, '');\n parsed = JSON.parse(cleanSpec);\n } else {\n parsed = spec;\n }\n } catch (parseError) {\n setIsLoading(true); // Keep loading while we wait for complete spec\n console.debug('Waiting for complete spec:', parseError);\n return;\n }\n\n // Only proceed with rendering if we have a valid parsed spec\n if (!parsed) return;\n\n if (type === 'd3' || parsed.renderer === 'd3' || typeof parsed.render === 'function') {\n const container = d3ContainerRef.current;\n if (!container) return;\n\n if (currentRender !== renderIdRef.current) {\n console.debug(`Skipping stale render #${currentRender}`);\n return;\n }\n\n // Cleanup existing simulation\n if (simulationRef.current) {\n try {\n simulationRef.current.stop();\n simulationRef.current = null;\n } catch (error) {\n console.warn('Error cleaning up simulation:', error);\n }\n }\n\n // Create temporary container for safe rendering\n const tempContainer = document.createElement('div');\n tempContainer.style.width = '100%';\n tempContainer.style.height = '100%';\n\n let renderSuccessful = false;\n\n try {\n if (parsed.render && typeof parsed.render === 'function') {\n const result = parsed.render.call(parsed, tempContainer, d3);\n renderSuccessful = true;\n\n // If result is a function, use it as cleanup\n if (typeof result === 'function') {\n cleanupRef.current = result;\n }\n } else {\n const plugin = findPlugin(parsed);\n if (!plugin) {\n throw new Error('No render function or compatible plugin found');\n }\n plugin.render(tempContainer, d3, parsed);\n renderSuccessful = true;\n }\n\n // Only replace main container content if render was successful\n if (renderSuccessful) {\n container.innerHTML = '';\n container.appendChild(tempContainer);\n }\n } catch (renderError) {\n console.error('D3 render error:', renderError);\n setRenderError(renderError instanceof Error ? renderError.message : 'Render failed');\n throw renderError;\n }\n\n if (!renderSuccessful) {\n throw new Error('Render did not complete successfully');\n }\n\n setIsLoading(false);\n setRenderError(null);\n onLoad?.();\n return;\n }\n\n // Handle Vega-Lite rendering\n const container = vegaContainerRef.current;\n if (!container) return;\n\n const vegaSpec = {\n $schema: 'https://vega.github.io/schema/vega-lite/v5.json',\n width: width || 'container',\n height: height || 300,\n mark: parsed.type || 'point',\n data: {\n values: Array.isArray(parsed.data) ? parsed.data : [parsed.data]\n },\n encoding: parsed.encoding || {\n x: { field: 'x', type: 'quantitative' },\n y: { field: 'y', type: 'quantitative' }\n },\n ...parsed\n };\n\n if (vegaViewRef.current) {\n vegaViewRef.current.finalize();\n vegaViewRef.current = null;\n }\n\n console.debug('Rendering Vega spec:', vegaSpec);\n const result = await vegaEmbed(container, vegaSpec, {\n actions: false,\n theme: isDarkMode ? 'dark' : 'excel',\n renderer: 'canvas'\n });\n\n if (!mounted.current) {\n result.view.finalize();\n return;\n }\n\n vegaViewRef.current = result.view;\n setIsLoading(false);\n onLoad?.();\n\n } catch (error: any) {\n console.error('Visualization error:', error);\n // Only show error if we're not just waiting for complete spec\n if (error.message !== 'Unexpected end of JSON input') {\n setRenderError(error.message);\n setErrorDetails([error.message]);\n }\n setIsLoading(false);\n }\n };\n \n if (mounted.current) {\n initializeVisualization();\n }\n\n return () => {\n mounted.current = false;\n };\n}, [spec, type, width, height, isDarkMode]);\n\n\n const isD3Mode = type === 'd3' || (typeof spec === 'object' && (spec.renderer === 'd3' || typeof spec.render === 'function'));\n\n return (\n <div\n id={containerId || 'd3-container'}\n style={{\n width: '100%',\n height: height || '300px',\n minHeight: '200px',\n padding: '16px',\n position: 'relative'\n }}\n >\n {isD3Mode ? (\n <div \n ref={d3ContainerRef}\n className=\"d3-container\"\n style={{\n width: '100%',\n height: '100%',\n position: 'relative'\n }}\n />\n ) : (\n <div\n ref={vegaContainerRef}\n id=\"vega-container\"\n style={{\n position: 'relative',\n width: '100%',\n height: height || '100%'\n }}\n >\n {(isLoading || !spec) && (\n <div style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.1)'\n }}>\n <Spin size=\"large\" />\n <div style={{ marginTop: '10px', color: isDarkMode ? '#ffffff' : '#000000' }}>\n Preparing visualization...\n </div>\n </div>\n )}\n {renderError && (\n <pre style={{\n padding: '16px',\n margin: '8px',\n backgroundColor: isDarkMode ? '#2a1215' : '#fff1f0',\n border: `1px solid ${isDarkMode ? '#5c2223' : '#ffa39e'}`,\n borderRadius: '4px',\n color: isDarkMode ? '#ff4d4f' : '#cf1322',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n maxHeight: '200px',\n overflowY: 'auto',\n fontSize: '14px',\n lineHeight: '1.5',\n fontFamily: 'monospace'\n }}>\n <strong>Error:</strong>\n {errorDetails.map((line, i) => <div key={i}>{line}</div>)}\n </pre>\n )}\n </div>\n )}\n </div>\n );\n};\n","// This icon file is generated automatically.\nvar BarChartOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z\" } }] }, \"name\": \"bar-chart\", \"theme\": \"outlined\" };\nexport default BarChartOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport BarChartOutlinedSvg from \"@ant-design/icons-svg/es/asn/BarChartOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar BarChartOutlined = function BarChartOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: BarChartOutlinedSvg\n }));\n};\n\n/**![bar-chart](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4OCA3OTJIMjAwVjE2OGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2Njg4YzAgNC40IDMuNiA4IDggOGg3NTJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS02MDAtODBoNTZjNC40IDAgOC0zLjYgOC04VjU2MGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2MTQ0YzAgNC40IDMuNiA4IDggOHptMTUyIDBoNTZjNC40IDAgOC0zLjYgOC04VjM4NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2MzIwYzAgNC40IDMuNiA4IDggOHptMTUyIDBoNTZjNC40IDAgOC0zLjYgOC04VjQ2MmMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2MjQyYzAgNC40IDMuNiA4IDggOHptMTUyIDBoNTZjNC40IDAgOC0zLjYgOC04VjMwNGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NDAwYzAgNC40IDMuNiA4IDggOHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(BarChartOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'BarChartOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar LineChartOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 00-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 00-11.3 0L266.3 586.7a8.03 8.03 0 000 11.3l39.5 39.7z\" } }] }, \"name\": \"line-chart\", \"theme\": \"outlined\" };\nexport default LineChartOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport LineChartOutlinedSvg from \"@ant-design/icons-svg/es/asn/LineChartOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar LineChartOutlined = function LineChartOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: LineChartOutlinedSvg\n }));\n};\n\n/**![line-chart](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4OCA3OTJIMjAwVjE2OGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2Njg4YzAgNC40IDMuNiA4IDggOGg3NTJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTMwNS44IDYzNy43YzMuMSAzLjEgOC4xIDMuMSAxMS4zIDBsMTM4LjMtMTM3LjZMNTgzIDYyOC41YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMjc1LjQtMjc1LjNjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtMzkuNi0zOS42YTguMDMgOC4wMyAwIDAwLTExLjMgMGwtMjMwIDIyOS45TDQ2MS40IDQwNGE4LjAzIDguMDMgMCAwMC0xMS4zIDBMMjY2LjMgNTg2LjdhOC4wMyA4LjAzIDAgMDAwIDExLjNsMzkuNSAzOS43eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(LineChartOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'LineChartOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar DotChartOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 10128 0 64 64 0 10-128 0zm118-224a48 48 0 1096 0 48 48 0 10-96 0zm158 228a96 96 0 10192 0 96 96 0 10-192 0zm148-314a56 56 0 10112 0 56 56 0 10-112 0z\" } }] }, \"name\": \"dot-chart\", \"theme\": \"outlined\" };\nexport default DotChartOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DotChartOutlinedSvg from \"@ant-design/icons-svg/es/asn/DotChartOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DotChartOutlined = function DotChartOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DotChartOutlinedSvg\n }));\n};\n\n/**![dot-chart](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4OCA3OTJIMjAwVjE2OGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2Njg4YzAgNC40IDMuNiA4IDggOGg3NTJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6TTI4OCA2MDRhNjQgNjQgMCAxMDEyOCAwIDY0IDY0IDAgMTAtMTI4IDB6bTExOC0yMjRhNDggNDggMCAxMDk2IDAgNDggNDggMCAxMC05NiAwem0xNTggMjI4YTk2IDk2IDAgMTAxOTIgMCA5NiA5NiAwIDEwLTE5MiAwem0xNDgtMzE0YTU2IDU2IDAgMTAxMTIgMCA1NiA1NiAwIDEwLTExMiAweiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DotChartOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'DotChartOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar FunctionOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"defs\", \"attrs\": {}, \"children\": [{ \"tag\": \"style\", \"attrs\": {} }] }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M841 370c3-3.3 2.7-8.3-.6-11.3a8.24 8.24 0 00-5.3-2.1h-72.6c-2.4 0-4.6 1-6.1 2.8L633.5 504.6a7.96 7.96 0 01-13.4-1.9l-63.5-141.3a7.9 7.9 0 00-7.3-4.7H380.7l.9-4.7 8-42.3c10.5-55.4 38-81.4 85.8-81.4 18.6 0 35.5 1.7 48.8 4.7l14.1-66.8c-22.6-4.7-35.2-6.1-54.9-6.1-103.3 0-156.4 44.3-175.9 147.3l-9.4 49.4h-97.6c-3.8 0-7.1 2.7-7.8 6.4L181.9 415a8.07 8.07 0 007.8 9.7H284l-89 429.9a8.07 8.07 0 007.8 9.7H269c3.8 0 7.1-2.7 7.8-6.4l89.7-433.1h135.8l68.2 139.1c1.4 2.9 1 6.4-1.2 8.8l-180.6 203c-2.9 3.3-2.6 8.4.7 11.3 1.5 1.3 3.4 2 5.3 2h72.7c2.4 0 4.6-1 6.1-2.8l123.7-146.7c2.8-3.4 7.9-3.8 11.3-1 .9.8 1.6 1.7 2.1 2.8L676.4 784c1.3 2.8 4.1 4.7 7.3 4.7h64.6a8.02 8.02 0 007.2-11.5l-95.2-198.9c-1.4-2.9-.9-6.4 1.3-8.8L841 370z\" } }] }, \"name\": \"function\", \"theme\": \"outlined\" };\nexport default FunctionOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FunctionOutlinedSvg from \"@ant-design/icons-svg/es/asn/FunctionOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FunctionOutlined = function FunctionOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: FunctionOutlinedSvg\n }));\n};\n\n/**![function](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHN0eWxlIC8+PC9kZWZzPjxwYXRoIGQ9Ik04NDEgMzcwYzMtMy4zIDIuNy04LjMtLjYtMTEuM2E4LjI0IDguMjQgMCAwMC01LjMtMi4xaC03Mi42Yy0yLjQgMC00LjYgMS02LjEgMi44TDYzMy41IDUwNC42YTcuOTYgNy45NiAwIDAxLTEzLjQtMS45bC02My41LTE0MS4zYTcuOSA3LjkgMCAwMC03LjMtNC43SDM4MC43bC45LTQuNyA4LTQyLjNjMTAuNS01NS40IDM4LTgxLjQgODUuOC04MS40IDE4LjYgMCAzNS41IDEuNyA0OC44IDQuN2wxNC4xLTY2LjhjLTIyLjYtNC43LTM1LjItNi4xLTU0LjktNi4xLTEwMy4zIDAtMTU2LjQgNDQuMy0xNzUuOSAxNDcuM2wtOS40IDQ5LjRoLTk3LjZjLTMuOCAwLTcuMSAyLjctNy44IDYuNEwxODEuOSA0MTVhOC4wNyA4LjA3IDAgMDA3LjggOS43SDI4NGwtODkgNDI5LjlhOC4wNyA4LjA3IDAgMDA3LjggOS43SDI2OWMzLjggMCA3LjEtMi43IDcuOC02LjRsODkuNy00MzMuMWgxMzUuOGw2OC4yIDEzOS4xYzEuNCAyLjkgMSA2LjQtMS4yIDguOGwtMTgwLjYgMjAzYy0yLjkgMy4zLTIuNiA4LjQuNyAxMS4zIDEuNSAxLjMgMy40IDIgNS4zIDJoNzIuN2MyLjQgMCA0LjYtMSA2LjEtMi44bDEyMy43LTE0Ni43YzIuOC0zLjQgNy45LTMuOCAxMS4zLTEgLjkuOCAxLjYgMS43IDIuMSAyLjhMNjc2LjQgNzg0YzEuMyAyLjggNC4xIDQuNyA3LjMgNC43aDY0LjZhOC4wMiA4LjAyIDAgMDA3LjItMTEuNWwtOTUuMi0xOTguOWMtMS40LTIuOS0uOS02LjQgMS4zLTguOEw4NDEgMzcweiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(FunctionOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'FunctionOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar StockOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M904 747H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM165.7 621.8l39.7 39.5c3.1 3.1 8.2 3.1 11.3 0l234.7-233.9 97.6 97.3a32.11 32.11 0 0045.2 0l264.2-263.2c3.1-3.1 3.1-8.2 0-11.3l-39.7-39.6a8.03 8.03 0 00-11.3 0l-235.7 235-97.7-97.3a32.11 32.11 0 00-45.2 0L165.7 610.5a7.94 7.94 0 000 11.3z\" } }] }, \"name\": \"stock\", \"theme\": \"outlined\" };\nexport default StockOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport StockOutlinedSvg from \"@ant-design/icons-svg/es/asn/StockOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar StockOutlined = function StockOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: StockOutlinedSvg\n }));\n};\n\n/**![stock](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkwNCA3NDdIMTIwYy00LjQgMC04IDMuNi04IDh2NTZjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTU2YzAtNC40LTMuNi04LTgtOHpNMTY1LjcgNjIxLjhsMzkuNyAzOS41YzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMjM0LjctMjMzLjkgOTcuNiA5Ny4zYTMyLjExIDMyLjExIDAgMDA0NS4yIDBsMjY0LjItMjYzLjJjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtMzkuNy0zOS42YTguMDMgOC4wMyAwIDAwLTExLjMgMGwtMjM1LjcgMjM1LTk3LjctOTcuM2EzMi4xMSAzMi4xMSAwIDAwLTQ1LjIgMEwxNjUuNyA2MTAuNWE3Ljk0IDcuOTQgMCAwMDAgMTEuM3oiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(StockOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'StockOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar AreaChartOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-616-64h536c4.4 0 8-3.6 8-8V284c0-7.2-8.7-10.7-13.7-5.7L592 488.6l-125.4-124a8.03 8.03 0 00-11.3 0l-189 189.6a7.87 7.87 0 00-2.3 5.6V720c0 4.4 3.6 8 8 8z\" } }] }, \"name\": \"area-chart\", \"theme\": \"outlined\" };\nexport default AreaChartOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport AreaChartOutlinedSvg from \"@ant-design/icons-svg/es/asn/AreaChartOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar AreaChartOutlined = function AreaChartOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: AreaChartOutlinedSvg\n }));\n};\n\n/**![area-chart](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4OCA3OTJIMjAwVjE2OGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2Njg4YzAgNC40IDMuNiA4IDggOGg3NTJjNC40IDAgOC0zLjYgOC04di01NmMwLTQuNC0zLjYtOC04LTh6bS02MTYtNjRoNTM2YzQuNCAwIDgtMy42IDgtOFYyODRjMC03LjItOC43LTEwLjctMTMuNy01LjdMNTkyIDQ4OC42bC0xMjUuNC0xMjRhOC4wMyA4LjAzIDAgMDAtMTEuMyAwbC0xODkgMTg5LjZhNy44NyA3Ljg3IDAgMDAtMi4zIDUuNlY3MjBjMCA0LjQgMy42IDggOCA4eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(AreaChartOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'AreaChartOutlined';\n}\nexport default RefIcon;","import React, { useState } from 'react';\nimport { Card, Divider, Space, Typography, Switch, Radio, Tag, Tooltip, Button, Empty } from 'antd';\nimport { D3Renderer } from './D3Renderer';\nimport { \n CodeOutlined, \n BarChartOutlined, \n LineChartOutlined, \n DotChartOutlined, \n FunctionOutlined,\n AreaChartOutlined,\n StockOutlined,\n ExperimentOutlined\n} from '@ant-design/icons';\n\nconst { Title, Text, Paragraph } = Typography;\n\ninterface TestCase {\n title: string;\n description: string;\n type: 'simple' | 'complex';\n category: 'bar' | 'line' | 'scatter' | 'function' | 'multiaxis' | 'bubble' | 'timeseries' | 'special';\n spec: any;\n status?: 'working' | 'needs-fix';\n testedFeatures: string[];\n}\n\nconst TEST_CASES: TestCase[] = [\n // BAR CHARTS\n {\n title: \"Simple Vertical Bars\",\n description: \"Basic bar chart with single series and value labels\",\n type: \"simple\",\n category: \"bar\",\n testedFeatures: [\"Basic bars\", \"Value labels\", \"Tooltips\"],\n status: \"working\",\n spec: {\n type: \"bar\",\n data: [\n { label: \"A\", value: 10 },\n { label: \"B\", value: 20 },\n { label: \"C\", value: 15 },\n { label: \"D\", value: 25 },\n { label: \"E\", value: 18 }\n ],\n options: {\n interactive: true,\n valueLabels: true,\n yAxis: { label: \"Values\" },\n xAxis: { label: \"Categories\" }\n }\n }\n },\n {\n title: \"Grouped Bar Chart\",\n description: \"Multiple series with grouping and custom colors\",\n type: \"complex\",\n category: \"bar\",\n testedFeatures: [\"Grouped bars\", \"Custom colors\", \"Legend\", \"Interactive tooltips\"],\n status: \"working\",\n spec: {\n type: \"bar\",\n data: [\n { label: \"Q1\", value: 1000, group: \"2023\", color: \"#ff4d4f\" },\n { label: \"Q2\", value: 1200, group: \"2023\", color: \"#ff4d4f\" },\n { label: \"Q3\", value: 900, group: \"2023\", color: \"#ff4d4f\" },\n { label: \"Q4\", value: 1500, group: \"2023\", color: \"#ff4d4f\" },\n { label: \"Q1\", value: 800, group: \"2024\", color: \"#40a9ff\" },\n { label: \"Q2\", value: 1400, group: \"2024\", color: \"#40a9ff\" }\n ],\n options: {\n grouped: true,\n animation: true,\n interactive: true,\n legend: true\n }\n }\n },\n {\n title: \"Stacked Bar Chart\",\n description: \"Stacked bars with multiple categories\",\n type: \"complex\",\n category: \"bar\",\n testedFeatures: [\"Stacked bars\", \"Percentage view\", \"Category colors\"],\n status: \"working\",\n spec: {\n type: \"bar\",\n data: [\n { label: \"Product A\", categories: [\n { name: \"Revenue\", value: 500 },\n { name: \"Costs\", value: 300 },\n { name: \"Profit\", value: 200 }\n ]},\n { label: \"Product B\", categories: [\n { name: \"Revenue\", value: 800 },\n { name: \"Costs\", value: 400 },\n { name: \"Profit\", value: 400 }\n ]},\n { label: \"Product C\", categories: [\n { name: \"Revenue\", value: 400 },\n { name: \"Costs\", value: 200 },\n { name: \"Profit\", value: 200 }\n ]}\n ],\n options: {\n stacked: true,\n percentage: false,\n interactive: true,\n animation: true\n }\n }\n },\n {\n title: \"Bars with Negative Values\",\n description: \"Bar chart showing positive and negative values\",\n type: \"complex\",\n category: \"bar\",\n testedFeatures: [\"Negative values\", \"Zero line\", \"Value coloring\"],\n status: \"working\",\n spec: {\n type: \"bar\",\n data: [\n { label: \"Jan\", value: 50 },\n { label: \"Feb\", value: -30 },\n { label: \"Mar\", value: 25 },\n { label: \"Apr\", value: -45 },\n { label: \"May\", value: 60 },\n { label: \"Jun\", value: -20 }\n ],\n options: {\n zeroLine: true,\n valueColors: true,\n interactive: true\n }\n }\n },\n// LINE CHARTS\n {\n title: \"Simple Line Chart\",\n description: \"Basic line chart with smooth interpolation\",\n type: \"simple\",\n category: \"line\",\n testedFeatures: [\"Line interpolation\", \"Point markers\", \"Hover effects\"],\n status: \"working\",\n spec: {\n type: \"line\",\n data: Array.from({length: 10}, (_, i) => ({\n date: `2024-${i+1}`,\n value: Math.sin(i/2) * 10 + 20\n })),\n options: {\n interactive: true,\n points: true,\n smooth: true,\n yAxis: { label: \"Values\" },\n xAxis: { label: \"Time\" }\n }\n }\n },\n {\n title: \"Multiple Line Series\",\n description: \"Multiple lines with different scales and patterns\",\n type: \"complex\",\n category: \"line\",\n testedFeatures: [\"Multiple series\", \"Different scales\", \"Pattern variations\"],\n status: \"working\",\n spec: {\n type: \"line\",\n data: {\n series: [\n {\n name: \"Temperature\",\n values: Array.from({length: 24}, (_, i) => ({\n date: `2024-${i+1}`,\n value: Math.sin(i/3) * 10 + 20\n })),\n pattern: \"solid\"\n },\n {\n name: \"Pressure\",\n values: Array.from({length: 24}, (_, i) => ({\n date: `2024-${i+1}`,\n value: Math.cos(i/4) * 100 + 1000\n })),\n pattern: \"dashed\"\n },\n {\n name: \"Humidity\",\n values: Array.from({length: 24}, (_, i) => ({\n date: `2024-${i+1}`,\n value: Math.sin(i/6) * 20 + 50\n })),\n pattern: \"dotted\"\n }\n ]\n },\n options: {\n interactive: true,\n legend: true,\n multiScale: true\n }\n }\n },\n {\n title: \"Area Chart\",\n description: \"Stacked area chart with gradient fills\",\n type: \"complex\",\n category: \"line\",\n testedFeatures: [\"Area fills\", \"Gradients\", \"Stacking\"],\n status: \"working\",\n spec: {\n type: \"line\",\n data: {\n series: [\n {\n name: \"Series A\",\n values: Array.from({length: 12}, (_, i) => ({\n date: `2024-${i+1}`,\n value: Math.random() * 50 + 50\n })),\n fill: \"gradient\"\n },\n {\n name: \"Series B\",\n values: Array.from({length: 12}, (_, i) => ({\n date: `2024-${i+1}`,\n value: Math.random() * 40 + 30\n })),\n fill: \"gradient\"\n },\n {\n name: \"Series C\",\n values: Array.from({length: 12}, (_, i) => ({\n date: `2024-${i+1}`,\n value: Math.random() * 30 + 20\n })),\n fill: \"gradient\"\n }\n ]\n },\n options: {\n stacked: true,\n area: true,\n interactive: true\n }\n }\n },\n {\n title: \"Step Function Chart\",\n description: \"Step-wise line chart with transitions\",\n type: \"simple\",\n category: \"line\",\n testedFeatures: [\"Step interpolation\", \"Transitions\", \"Value labels\"],\n status: \"working\",\n spec: {\n type: \"line\",\n data: Array.from({length: 10}, (_, i) => ({\n date: `2024-${i+1}`,\n value: Math.floor(Math.random() * 5) * 10\n })),\n options: {\n step: true,\n valueLabels: true,\n animation: {\n duration: 1000,\n sequential: true\n }\n }\n }\n },\n {\n title: \"Real-time Data Simulation\",\n description: \"Live updating line chart with sliding window\",\n type: \"complex\",\n category: \"line\",\n testedFeatures: [\"Real-time updates\", \"Sliding window\", \"Smooth transitions\"],\n status: \"working\",\n spec: {\n type: \"line\",\n data: Array.from({length: 30}, (_, i) => ({\n date: new Date(Date.now() - (30-i)*1000).toISOString(),\n value: Math.sin(i/5) * 10 + 20 + Math.random() * 5\n })),\n options: {\n realtime: true,\n windowSize: 30,\n updateInterval: 1000,\n smoothing: true\n }\n }\n },\n\n // SCATTER/BUBBLE CHARTS\n {\n title: \"Basic Scatter Plot\",\n description: \"Simple scatter plot with hover interactions\",\n type: \"simple\",\n category: \"scatter\",\n testedFeatures: [\"Basic points\", \"Hover effects\", \"Tooltips\"],\n status: \"working\",\n spec: {\n type: \"scatter\",\n data: Array.from({length: 50}, () => ({\n x: Math.random() * 100,\n y: Math.random() * 100,\n label: \"Point\"\n })),\n options: {\n interactive: true,\n tooltip: true\n }\n }\n },\n {\n title: \"Advanced Bubble Chart\",\n description: \"Bubble chart with size, color, and category mapping\",\n type: \"complex\",\n category: \"bubble\",\n testedFeatures: [\"Size mapping\", \"Color gradients\", \"Categories\", \"Custom tooltips\"],\n status: \"working\",\n spec: {\n type: \"bubble\",\n data: Array.from({length: 30}, (_, i) => ({\n x: Math.random() * 100,\n y: Math.random() * 100,\n size: Math.random() * 50 + 10,\n category: `Group ${Math.floor(i/10)}`,\n value: Math.random() * 1000,\n color: `hsl(${Math.random() * 360}, 70%, 50%)`\n })),\n options: {\n sizeScale: {\n field: \"value\",\n range: [10, 50]\n },\n colorScale: {\n field: \"category\",\n scheme: \"category10\"\n },\n legend: true,\n interactive: true\n }\n }\n },\n {\n title: \"Quadrant Analysis\",\n description: \"Scatter plot with quadrant divisions and statistics\",\n type: \"complex\",\n category: \"scatter\",\n testedFeatures: [\"Quadrants\", \"Statistics\", \"Reference lines\", \"Annotations\"],\n status: \"working\",\n spec: {\n type: \"scatter\",\n data: Array.from({length: 100}, () => ({\n x: (Math.random() - 0.5) * 100,\n y: (Math.random() - 0.5) * 100,\n category: Math.random() > 0.5 ? \"A\" : \"B\"\n })),\n options: {\n quadrants: {\n labels: [\"High-High\", \"High-Low\", \"Low-Low\", \"Low-High\"],\n stats: true\n },\n referenceLines: true,\n annotations: true\n }\n }\n },\n {\n title: \"Correlation Plot\",\n description: \"Scatter plot with regression line and confidence interval\",\n type: \"complex\",\n category: \"scatter\",\n testedFeatures: [\"Regression line\", \"Confidence interval\", \"R-squared\", \"Outliers\"],\n status: \"working\",\n spec: {\n type: \"scatter\",\n data: Array.from({length: 50}, (_, i) => {\n const x = i * 2 + Math.random() * 10;\n return {\n x: x,\n y: 0.5 * x + Math.random() * 20 - 10\n };\n }),\n options: {\n regression: {\n type: \"linear\",\n showConfidence: true,\n showEquation: true\n },\n outlierDetection: true\n }\n }\n },\n\n // FUNCTION PLOTS\n {\n title: \"Mathematical Functions\",\n description: \"Multiple mathematical functions with interactive features\",\n type: \"complex\",\n category: \"function\",\n testedFeatures: [\"Multiple functions\", \"Interactive domain\", \"Function composition\"],\n status: \"working\",\n spec: {\n type: \"function\",\n data: [\n {\n fn: \"Math.sin(x)\",\n domain: [-2 * Math.PI, 2 * Math.PI],\n label: \"sin(x)\"\n },\n {\n fn: \"Math.cos(x)\",\n domain: [-2 * Math.PI, 2 * Math.PI],\n label: \"cos(x)\"\n },\n {\n fn: \"Math.sin(x) * Math.cos(x)\",\n domain: [-2 * Math.PI, 2 * Math.PI],\n label: \"sin(x)cos(x)\"\n }\n ],\n options: {\n interactive: true,\n grid: true,\n legend: true\n }\n }\n },\n {\n title: \"Parametric Equations\",\n description: \"Parametric function visualization with animation\",\n type: \"complex\",\n category: \"function\",\n testedFeatures: [\"Parametric equations\", \"Animation\", \"Path tracing\"],\n status: \"working\",\n spec: {\n type: \"function\",\n data: [\n {\n parameterX: \"Math.cos(3*t) * (1 + 0.5 * Math.cos(5*t))\",\n parameterY: \"Math.sin(2*t) * (1 + 0.5 * Math.sin(7*t))\",\n domain: [0, 2 * Math.PI],\n label: \"Rose Curve\",\n samples: 500\n }\n ],\n options: {\n animation: {\n duration: 5000,\n repeat: true\n },\n pathTrace: true\n }\n }\n },\n {\n title: \"Statistical Distributions\",\n description: \"Various probability distributions with interactive parameters\",\n type: \"complex\",\n category: \"function\",\n testedFeatures: [\"Multiple distributions\", \"Parameter controls\", \"Area highlighting\"],\n status: \"working\",\n spec: {\n type: \"function\",\n data: [\n {\n fn: \"Math.exp(-Math.pow(x-0, 2)/(2*Math.pow(1,2)))/(Math.sqrt(2*Math.PI))\",\n domain: [-4, 4],\n label: \"Normal(0,1)\",\n fill: true\n },\n {\n fn: \"Math.exp(-x)*Math.pow(x,2)/2\",\n domain: [0, 10],\n label: \"Gamma(3,1)\",\n fill: true\n }\n ],\n options: {\n interactive: true,\n parameters: {\n mean: [-2, 2],\n variance: [0.5, 2]\n }\n }\n }\n },\n // MULTI-AXIS CHARTS\n {\n title: \"Dual Axis Comparison\",\n description: \"Two different metrics with independent scales\",\n type: \"complex\",\n category: \"multiaxis\",\n testedFeatures: [\"Dual axes\", \"Independent scales\", \"Mixed types\"],\n status: \"working\",\n spec: {\n type: \"multiaxis\",\n data: {\n x: Array.from({length: 12}, (_, i) => i + 1),\n series: [\n {\n name: \"Revenue\",\n values: Array.from({length: 12}, () => Math.random() * 1000 + 500),\n axis: \"y1\",\n color: \"#1890ff\",\n type: \"bar\"\n },\n {\n name: \"Growth Rate\",\n values: Array.from({length: 12}, () => Math.random() * 30 - 10),\n axis: \"y2\",\n color: \"#52c41a\",\n type: \"line\"\n }\n ]\n },\n options: {\n axes: {\n y1: { label: \"Revenue ($)\", domain: [0, 2000] },\n y2: { label: \"Growth Rate (%)\", domain: [-20, 40] }\n },\n interactive: true\n }\n }\n },\n {\n title: \"Triple Axis Dashboard\",\n description: \"Three metrics with synchronized interactions\",\n type: \"complex\",\n category: \"multiaxis\",\n testedFeatures: [\"Triple axes\", \"Synchronized tooltips\", \"Mixed visualizations\"],\n status: \"working\",\n spec: {\n type: \"multiaxis\",\n data: {\n x: Array.from({length: 24}, (_, i) => i),\n series: [\n {\n name: \"Users\",\n values: Array.from({length: 24}, () => Math.floor(Math.random() * 1000)),\n axis: \"y1\",\n type: \"area\"\n },\n {\n name: \"Response Time\",\n values: Array.from({length: 24}, () => Math.random() * 100 + 50),\n axis: \"y2\",\n type: \"line\"\n },\n {\n name: \"Error Rate\",\n values: Array.from({length: 24}, () => Math.random() * 5),\n axis: \"y3\",\n type: \"bar\"\n }\n ]\n },\n options: {\n synchronizedTooltips: true,\n legend: true,\n interactive: true\n }\n }\n },\n {\n title: \"Performance Metrics\",\n description: \"System performance visualization with multiple metrics\",\n type: \"complex\",\n category: \"multiaxis\",\n testedFeatures: [\"Real-time updates\", \"Thresholds\", \"Alerts\"],\n status: \"working\",\n spec: {\n type: \"multiaxis\",\n data: {\n x: Array.from({length: 60}, (_, i) => i),\n series: [\n {\n name: \"CPU\",\n values: Array.from({length: 60}, () => Math.random() * 100),\n axis: \"y1\",\n thresholds: [80, 90]\n },\n {\n name: \"Memory\",\n values: Array.from({length: 60}, () => Math.random() * 16),\n axis: \"y2\",\n thresholds: [14, 15]\n },\n {\n name: \"Network\",\n values: Array.from({length: 60}, () => Math.random() * 1000),\n axis: \"y3\",\n thresholds: [800, 900]\n }\n ]\n },\n options: {\n realtime: true,\n alerts: true,\n updateInterval: 1000\n }\n }\n },\n\n // TIME SERIES\n {\n title: \"Time Series with Events\",\n description: \"Time series with event markers and annotations\",\n type: \"complex\",\n category: \"timeseries\",\n testedFeatures: [\"Event markers\", \"Annotations\", \"Zoom\"],\n status: \"working\",\n spec: {\n type: \"timeseries\",\n data: {\n series: [{\n name: \"Metric\",\n values: Array.from({length: 100}, (_, i) => ({\n date: new Date(2024, 0, i + 1).toISOString(),\n value: Math.random() * 100\n }))\n }],\n events: [\n {\n date: new Date(2024, 0, 15).toISOString(),\n type: \"deployment\",\n label: \"v1.0 Release\"\n },\n {\n date: new Date(2024, 0, 45).toISOString(),\n type: \"incident\",\n label: \"System Outage\"\n }\n ]\n },\n options: {\n eventMarkers: true,\n annotations: true,\n zoomable: true\n }\n }\n },\n {\n title: \"Aggregated Time Series\",\n description: \"Time series with multiple aggregation levels\",\n type: \"complex\",\n category: \"timeseries\",\n testedFeatures: [\"Aggregation\", \"Resolution switching\", \"Summary statistics\"],\n status: \"working\",\n spec: {\n type: \"timeseries\",\n data: {\n raw: Array.from({length: 1000}, (_, i) => ({\n date: new Date(2024, 0, 1 + i/24).toISOString(),\n value: Math.random() * 100\n })),\n aggregations: [\"hour\", \"day\", \"week\", \"month\"]\n },\n options: {\n aggregation: {\n default: \"day\",\n methods: [\"avg\", \"min\", \"max\", \"sum\"]\n },\n statistics: true\n }\n }\n },\n// SPECIAL CASES\n {\n title: \"Large Dataset Performance\",\n description: \"Handling and optimizing large datasets\",\n type: \"complex\",\n category: \"special\",\n testedFeatures: [\"Data sampling\", \"Progressive loading\", \"Performance optimization\"],\n status: \"working\",\n spec: {\n type: \"scatter\",\n data: Array.from({length: 10000}, (_, i) => ({\n x: Math.random() * 1000,\n y: Math.random() * 1000,\n category: `Group ${Math.floor(i/1000)}`,\n size: Math.random() * 10\n })),\n options: {\n optimization: {\n sampling: true,\n sampleSize: 1000,\n progressive: true,\n chunkSize: 500\n },\n clustering: true,\n performance: {\n canvas: true,\n webgl: true\n }\n }\n }\n },\n {\n title: \"Error State Handling\",\n description: \"Visualization of various error states\",\n type: \"complex\",\n category: \"special\",\n testedFeatures: [\"Error states\", \"Fallbacks\", \"Recovery\"],\n status: \"working\",\n spec: {\n type: \"multiaxis\",\n data: {\n series: [\n {\n name: \"Valid Data\",\n values: Array.from({length: 10}, () => Math.random() * 100)\n },\n {\n name: \"Missing Data\",\n values: Array.from({length: 10}, (_, i) => i % 3 === 0 ? null : Math.random() * 100)\n },\n {\n name: \"Invalid Data\",\n values: Array.from({length: 10}, (_, i) => i % 4 === 0 ? \"invalid\" : Math.random() * 100)\n }\n ]\n },\n options: {\n errorHandling: {\n missing: \"interpolate\",\n invalid: \"omit\",\n showIndicators: true\n }\n }\n }\n },\n {\n title: \"Interactive Patterns\",\n description: \"Advanced interaction patterns and gestures\",\n type: \"complex\",\n category: \"special\",\n testedFeatures: [\"Custom interactions\", \"Gestures\", \"Linked views\"],\n status: \"working\",\n spec: {\n type: \"scatter\",\n data: Array.from({length: 100}, () => ({\n x: Math.random() * 100,\n y: Math.random() * 100,\n category: Math.random() > 0.5 ? \"A\" : \"B\"\n })),\n options: {\n interactions: {\n lasso: true,\n brush: true,\n zoom: true,\n pan: true\n },\n linkedViews: [\n {\n type: \"histogram\",\n dimension: \"x\"\n },\n {\n type: \"histogram\",\n dimension: \"y\"\n }\n ]\n }\n }\n },\n {\n title: \"Animation Sequence\",\n description: \"Complex animation sequences and transitions\",\n type: \"complex\",\n category: \"special\",\n testedFeatures: [\"Animation sequences\", \"Transitions\", \"State morphing\"],\n status: \"working\",\n spec: {\n type: \"bar\",\n data: {\n states: [\n Array.from({length: 5}, () => ({ value: Math.random() * 100 })),\n Array.from({length: 5}, () => ({ value: Math.random() * 100 })),\n Array.from({length: 5}, () => ({ value: Math.random() * 100 }))\n ],\n transitions: [\n { duration: 1000, ease: \"linear\" },\n { duration: 1000, ease: \"bounce\" }\n ]\n },\n options: {\n animation: {\n sequence: true,\n loop: true,\n delay: 2000\n }\n }\n }\n },\n // Add Basic Sine Wave with Cosine\n {\n title: \"Basic Sine Wave with Cosine\",\n description: \"Trigonometric function comparison\",\n type: \"simple\",\n category: \"function\",\n testedFeatures: [\"Multiple functions\", \"Grid lines\", \"Legend\"],\n status: \"working\",\n spec: {\n type: \"function\",\n data: [\n {\n fn: \"Math.sin(x)\",\n domain: [-6.283185307179586, 6.283185307179586],\n label: \"sin(x)\"\n },\n {\n fn: \"Math.cos(x)\",\n domain: [-6.283185307179586, 6.283185307179586],\n label: \"cos(x)\"\n }\n ],\n options: {\n interactive: true,\n xDomain: [-7, 7],\n yDomain: [-1.5, 1.5],\n grid: true\n }\n }\n },\n\n // Add Complex Wave Interference\n {\n title: \"Complex Wave Interference\",\n description: \"Wave interference patterns with multiple frequencies\",\n type: \"complex\",\n category: \"function\",\n testedFeatures: [\"Wave interference\", \"Multiple frequencies\", \"Animation\"],\n status: \"working\",\n spec: {\n type: \"function\",\n data: [\n {\n fn: \"Math.sin(5*x) * Math.cos(3*x)\",\n domain: [-6.283185307179586, 6.283185307179586],\n label: \"Wave 1\"\n },\n {\n fn: \"Math.sin(7*x) * Math.cos(2*x)\",\n domain: [-6.283185307179586, 6.283185307179586],\n label: \"Wave 2\"\n },\n {\n fn: \"(Math.sin(5*x) * Math.cos(3*x) + Math.sin(7*x) * Math.cos(2*x))/2\",\n domain: [-6.283185307179586, 6.283185307179586],\n label: \"Interference\"\n }\n ],\n options: {\n samples: 1000,\n interactive: true,\n animation: true\n }\n }\n },\n\n // Add Parametric Heart Curve\n {\n title: \"Parametric Heart Curve\",\n description: \"Heart-shaped curve using parametric equations\",\n type: \"complex\",\n category: \"function\",\n testedFeatures: [\"Parametric equations\", \"Custom domain\", \"Animation\"],\n status: \"working\",\n spec: {\n type: \"function\",\n data: [\n {\n parameterX: \"16 * Math.pow(Math.sin(t), 3)\",\n parameterY: \"13 * Math.cos(t) - 5 * Math.cos(2*t) - 2 * Math.cos(3*t) - Math.cos(4*t)\",\n parameter: \"t\",\n domain: [0, 2 * Math.PI],\n label: \"Heart\",\n samples: 1000\n }\n ],\n options: {\n aspectRatio: 1,\n xDomain: [-20, 20],\n yDomain: [-20, 20],\n animation: {\n duration: 3000,\n repeat: true\n }\n }\n }\n },\n // Add Statistical Distribution\n {\n title: \"Statistical Distributions\",\n description: \"Normal and other probability distributions\",\n type: \"complex\",\n category: \"function\",\n testedFeatures: [\"Multiple distributions\", \"Area filling\", \"Interactive parameters\"],\n status: \"working\",\n spec: {\n type: \"function\",\n data: [\n {\n fn: \"Math.exp(-Math.pow(x,2)/2)/Math.sqrt(2*Math.PI)\",\n domain: [-4, 4],\n label: \"N(0,1)\",\n fill: true\n },\n {\n fn: \"Math.exp(-Math.pow(x-1,2)/4)/Math.sqrt(4*Math.PI)\",\n domain: [-4, 4],\n label: \"N(1,2)\",\n fill: true\n }\n ],\n options: {\n yDomain: [0, 0.5],\n interactive: true,\n grid: true,\n fillOpacity: 0.3\n }\n }\n },\n\n // Add Combined Bar and Line Chart\n {\n title: \"Monthly Revenue with Trend\",\n description: \"Bar chart with trend line overlay\",\n type: \"complex\",\n category: \"multiaxis\",\n testedFeatures: [\"Mixed chart types\", \"Trend line\", \"Dual axes\"],\n status: \"working\",\n spec: {\n type: \"multiaxis\",\n data: {\n labels: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\"],\n series: [\n {\n name: \"Revenue\",\n type: \"bar\",\n values: [1000, 1200, 900, 1500, 2000, 1800],\n axis: \"y1\"\n },\n {\n name: \"Trend\",\n type: \"line\",\n values: [1100, 1150, 1300, 1450, 1600, 1750],\n axis: \"y1\",\n style: {\n stroke: \"#ff4d4f\",\n strokeWidth: 2,\n strokeDasharray: \"5,5\"\n }\n }\n ]\n },\n options: {\n axes: {\n y1: { label: \"Revenue ($)\", domain: [0, 2500] }\n },\n legend: true,\n animation: true\n }\n }\n },\n {\n title: \"Empty and Edge Cases\",\n description: \"Handling of empty and edge case data\",\n type: \"complex\",\n category: \"special\",\n testedFeatures: [\"Empty states\", \"Loading states\", \"Error states\"],\n status: \"working\",\n spec: {\n type: \"multiaxis\",\n data: {\n empty: [],\n partial: [\n { complete: true, value: 100 },\n { complete: false },\n { complete: true, value: 0 }\n ],\n invalid: [\n { value: Infinity },\n { value: NaN },\n { value: -Infinity }\n ]\n },\n options: {\n emptyState: {\n message: \"No data available\",\n action: \"Refresh\"\n },\n loadingState: {\n type: \"skeleton\",\n animation: true\n }\n }\n }\n }\n];\n\n// Component implementation\nexport const D3Test: React.FC = () => {\n const [showSource, setShowSource] = useState(false);\n const [complexity, setComplexity] = useState<'all' | 'simple' | 'complex'>('all');\n const [category, setCategory] = useState<'all' | 'bar' | 'line' | 'scatter' | 'function' | 'multiaxis' | 'bubble' | 'timeseries' | 'special'>('all');\n const [showBroken, setShowBroken] = useState(false);\n\n const filteredTests = TEST_CASES.filter(test =>\n (complexity === 'all' || test.type === complexity) &&\n (category === 'all' || test.category === category) &&\n (showBroken || test.status !== 'needs-fix')\n );\n\n const CategoryIcon = {\n bar: <BarChartOutlined />,\n line: <LineChartOutlined />,\n scatter: <DotChartOutlined />,\n function: <FunctionOutlined />,\n multiaxis: <StockOutlined />,\n bubble: <DotChartOutlined />,\n timeseries: <AreaChartOutlined />,\n special: <ExperimentOutlined />\n };\n\n return (\n <Space direction=\"vertical\" size=\"large\" style={{ width: '100%', padding: '20px' }}>\n <Card>\n <Space direction=\"vertical\" size=\"middle\" style={{ width: '100%' }}>\n <Space wrap>\n <Text>Show Source:</Text>\n <Switch\n checked={showSource}\n onChange={setShowSource}\n checkedChildren={<CodeOutlined />}\n unCheckedChildren={<CodeOutlined />}\n />\n <Text>Show Broken Examples:</Text>\n <Switch\n checked={showBroken}\n onChange={setShowBroken}\n />\n </Space>\n <Space wrap>\n <Text>Complexity:</Text>\n <Radio.Group value={complexity} onChange={e => setComplexity(e.target.value)}>\n <Radio.Button value=\"all\">All</Radio.Button>\n <Radio.Button value=\"simple\">Simple</Radio.Button>\n <Radio.Button value=\"complex\">Complex</Radio.Button>\n </Radio.Group>\n </Space>\n <Space wrap>\n <Text>Category:</Text>\n <Radio.Group value={category} onChange={e => setCategory(e.target.value)}>\n <Radio.Button value=\"all\">All</Radio.Button>\n {Object.entries(CategoryIcon).map(([key, icon]) => (\n <Radio.Button key={key} value={key}>\n {icon} {key.charAt(0).toUpperCase() + key.slice(1)}\n </Radio.Button>\n ))}\n </Radio.Group>\n </Space>\n <Space>\n <Text>\n Showing {filteredTests.length} of {TEST_CASES.length} test cases\n </Text>\n </Space>\n </Space>\n </Card>\n\n {filteredTests.map((test, index) => (\n <Card\n key={index}\n type=\"inner\"\n title={\n <Space direction=\"vertical\" size=\"small\" style={{ width: '100%' }}>\n <Space>\n {CategoryIcon[test.category]}\n <Title level={4} style={{ margin: 0 }}>{test.title}</Title>\n <Text type=\"secondary\">({test.type})</Text>\n {test.status === 'needs-fix' && (\n <Tag color=\"error\">Needs Fix</Tag>\n )}\n </Space>\n <Paragraph type=\"secondary\">{test.description}</Paragraph>\n <Space wrap>\n {test.testedFeatures.map((feature, i) => (\n <Tooltip key={i} title=\"Tested Feature\">\n <Tag color=\"blue\" icon={<ExperimentOutlined />}>\n {feature}\n </Tag>\n </Tooltip>\n ))}\n </Space>\n </Space>\n }\n extra={\n <Space>\n {test.status === 'needs-fix' && (\n <Tooltip title=\"View Error Details\">\n <Button type=\"text\" danger icon={<ExperimentOutlined />}>\n Error Details\n </Button>\n </Tooltip>\n )}\n </Space>\n }\n >\n <div style={{\n position: 'relative',\n minHeight: '300px'\n }}>\n <D3Renderer\n spec={JSON.stringify(test.spec)}\n width={800}\n height={400}\n />\n </div>\n {showSource && (\n <>\n <Divider>\n <Space>\n <CodeOutlined />\n <Text>Source</Text>\n </Space>\n </Divider>\n <div style={{\n maxHeight: '400px',\n overflow: 'auto',\n backgroundColor: 'rgb(40, 44, 52)',\n borderRadius: '6px',\n padding: '16px'\n }}>\n <pre style={{ margin: 0 }}>\n <code style={{ color: '#abb2bf' }}>\n {JSON.stringify(test.spec, null, 2)}\n </code>\n </pre>\n </div>\n </>\n )}\n </Card>\n ))}\n\n {filteredTests.length === 0 && (\n <Card>\n <Empty\n description={\n <Space direction=\"vertical\">\n <Text>No test cases match the current filters</Text>\n <Button\n type=\"primary\"\n onClick={() => {\n setCategory('all');\n setComplexity('all');\n }}\n >\n Reset Filters\n </Button>\n </Space>\n }\n />\n </Card>\n )}\n </Space>\n );\n};\n\nexport default D3Test;\n"],"names":["pluginRegistry","name","priority","canHandle","spec","render","type","Array","isArray","nodes","links","length","every","n","id","l","source","target","container","d3","_spec$groups","console","debug","isNetworkDiagramSpec","Error","nodeCount","linkCount","groupCount","groups","_spec$groups2","svg","select","append","attr","width","height","boards","selectAll","data","enter","d","text","label","error","remove","forEach","plugin","concat","d3RenderPlugins","Object","freeze","D3Renderer","_ref","containerId","onLoad","onError","config","isDarkMode","useTheme","vegaContainerRef","useRef","d3ContainerRef","vegaViewRef","isLoading","setIsLoading","useState","renderError","setRenderError","errorDetails","setErrorDetails","cleanupRef","simulationRef","renderIdRef","mounted","useEffect","current","finalize","e","stop","innerHTML","currentRender","initializeVisualization","async","parsed","specLines","replace","split","map","line","trim","filter","startsWith","some","includes","cleanSpec","join","JSON","parse","parseError","renderer","warn","tempContainer","document","createElement","style","renderSuccessful","result","call","visualizationType","exactMatch","find","p","matchingPlugins","sort","a","b","findPlugin","appendChild","message","vegaSpec","_objectSpread","$schema","mark","values","encoding","x","field","y","vegaEmbed","actions","theme","view","isD3Mode","_jsx","minHeight","padding","position","children","ref","className","_jsxs","top","left","right","bottom","display","alignItems","justifyContent","backgroundColor","Spin","size","marginTop","color","margin","border","borderRadius","whiteSpace","wordWrap","maxHeight","overflowY","fontSize","lineHeight","fontFamily","i","BarChartOutlined","props","React","AntdIcon","_extends","icon","BarChartOutlinedSvg","LineChartOutlined","LineChartOutlinedSvg","DotChartOutlined","DotChartOutlinedSvg","FunctionOutlined","FunctionOutlinedSvg","StockOutlined","StockOutlinedSvg","AreaChartOutlined","AreaChartOutlinedSvg","Title","Text","Paragraph","Typography","TEST_CASES","title","description","category","testedFeatures","status","value","options","interactive","valueLabels","yAxis","xAxis","group","grouped","animation","legend","categories","stacked","percentage","zeroLine","valueColors","from","_","date","Math","sin","points","smooth","series","pattern","cos","multiScale","random","fill","area","floor","step","duration","sequential","Date","now","toISOString","realtime","windowSize","updateInterval","smoothing","tooltip","sizeScale","range","colorScale","scheme","quadrants","labels","stats","referenceLines","annotations","regression","showConfidence","showEquation","outlierDetection","fn","domain","PI","grid","parameterX","parameterY","samples","repeat","pathTrace","parameters","mean","variance","axis","axes","y1","y2","synchronizedTooltips","thresholds","alerts","events","eventMarkers","zoomable","raw","aggregations","aggregation","default","methods","statistics","optimization","sampling","sampleSize","progressive","chunkSize","clustering","performance","canvas","webgl","errorHandling","missing","invalid","showIndicators","interactions","lasso","brush","zoom","pan","linkedViews","dimension","states","transitions","ease","sequence","loop","delay","xDomain","yDomain","parameter","aspectRatio","fillOpacity","stroke","strokeWidth","strokeDasharray","empty","partial","complete","Infinity","NaN","emptyState","action","loadingState","D3Test","showSource","setShowSource","complexity","setComplexity","setCategory","showBroken","setShowBroken","filteredTests","test","CategoryIcon","bar","scatter","function","multiaxis","bubble","timeseries","special","ExperimentOutlined","Space","direction","Card","wrap","Switch","checked","onChange","checkedChildren","CodeOutlined","unCheckedChildren","Radio","entries","key","charAt","toUpperCase","slice","index","level","Tag","feature","Tooltip","extra","Button","danger","stringify","_Fragment","Divider","overflow","Empty","onClick"],"sourceRoot":""}