@validationcloud/fractal-ui 1.77.0 → 1.79.0
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.
- package/README.md +20 -0
- package/dist/charts.d.ts +2 -0
- package/dist/charts.js +29 -20
- package/dist/components/dropdown-menu/dropdown-menu.js +34 -26
- package/dist/components/echarts-renderer/geo/africa-countries.json.d.ts +2463 -0
- package/dist/components/echarts-renderer/geo/africa-countries.json.js +9 -0
- package/dist/components/echarts-renderer/geo/americas-countries.json.d.ts +4160 -0
- package/dist/components/echarts-renderer/geo/americas-countries.json.js +9 -0
- package/dist/components/echarts-renderer/geo/asia-countries.json.d.ts +4297 -0
- package/dist/components/echarts-renderer/geo/asia-countries.json.js +9 -0
- package/dist/components/echarts-renderer/geo/europe-countries.json.d.ts +2486 -0
- package/dist/components/echarts-renderer/geo/europe-countries.json.js +9 -0
- package/dist/components/echarts-renderer/geo/us-states.json.d.ts +1338 -0
- package/dist/components/echarts-renderer/geo/us-states.json.js +9 -0
- package/dist/components/echarts-renderer/geo/world-continents.json.d.ts +10639 -0
- package/dist/components/echarts-renderer/geo/world-continents.json.js +9 -0
- package/dist/components/echarts-renderer/geo/world-countries.json.d.ts +14549 -0
- package/dist/components/echarts-renderer/geo/world-countries.json.js +9 -0
- package/dist/components/echarts-renderer/geo/world-regions.json.d.ts +10621 -0
- package/dist/components/echarts-renderer/geo/world-regions.json.js +9 -0
- package/dist/components/echarts-renderer/map-centers.d.ts +1 -0
- package/dist/components/echarts-renderer/map-centers.js +13 -0
- package/dist/components/echarts-renderer/map-style.d.ts +12 -0
- package/dist/components/echarts-renderer/map-style.js +12 -0
- package/dist/components/echarts-renderer/mavrik-theme-horizontal.json.d.ts +36 -0
- package/dist/components/echarts-renderer/mavrik-theme-horizontal.json.js +26 -22
- package/dist/components/echarts-renderer/mavrik-theme.json.d.ts +36 -0
- package/dist/components/echarts-renderer/mavrik-theme.json.js +26 -22
- package/dist/components/echarts-renderer/natural-earth-projection.d.ts +29 -0
- package/dist/components/echarts-renderer/natural-earth-projection.js +64 -0
- package/dist/components/echarts-renderer/register-map.d.ts +24 -0
- package/dist/components/echarts-renderer/register-map.js +62 -0
- package/dist/components/echarts-renderer/sanitize-chart-options.d.ts +2 -2
- package/dist/components/echarts-renderer/sanitize-chart-options.js +28 -5
- package/dist/components/echarts-renderer/use-chart-instance.js +38 -36
- package/dist/hooks/use-scroll-to-bottom.d.ts +4 -3
- package/dist/lib/render-chart-to-image.js +72 -43
- package/dist/maps.json +438 -0
- package/package.json +22 -4
|
@@ -1,39 +1,43 @@
|
|
|
1
|
-
const M = [{ type: "linear", x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: "#C14E64" }, { offset: 1, color: "#DE7385" }] }, "#00BBFA", "#0072B2", "#E69F00", "#D66119", "#56B4E9", "#45B26B", "#F0E442", "#FF99BF", "#8277D8"], L = "#1A1D1F", N = { fontFamily: "Poppins, sans-serif", fontWeight: 500 }, j = { top: 32, left: 32, textStyle: { color: "#FFFFFF", fontSize: 16, fontWeight: 600 }, subtextStyle: { color: "#A7A9AD" } }, A = { itemStyle: { borderWidth: 1 }, lineStyle: { width: 2 }, areaStyle: { opacity: 0.15 }, showSymbol: !1, symbolSize: 5, symbol: "circle", smooth: !1, sampling: "lttb" }, D = { barGap: "25%", barCategoryGap: "25%" }, g = { axisLine: { show: !0, lineStyle: { color: "#3A3D46", type: "dashed" } }, axisTick: { show: !1 }, axisLabel: { show: !0, color: "#A7A9AD", hideOverlap: !0 }, nameLocation: "middle", nameTextStyle: { color: "#A7A9AD", fontSize: 11, fontWeight: 400 }, splitLine: { show: !1 } }, u = { axisLine: { show: !1 }, axisTick: { show: !1 }, axisLabel: { show: !0, color: "#A7A9AD", hideOverlap: !0 }, nameLocation: "middle", nameTextStyle: { color: "#A7A9AD", fontSize: 11, fontWeight: 400 }, splitLine: { show: !0, lineStyle: { color: ["#3A3D46"], type: "dashed" } } }, I = { axisLine: { show: !1 }, axisTick: { show: !1 }, axisLabel: { show: !0, color: "#A7A9AD", hideOverlap: !0 }, nameLocation: "middle", nameTextStyle: { color: "#A7A9AD", fontSize: 11, fontWeight: 400 }, splitLine: { show: !0, lineStyle: { color: ["#3A3D46"], type: "dashed" } } }, t = { axisLine: { show: !0, lineStyle: { color: "#3A3D46" } }, axisTick: { show: !1 }, axisLabel: { show: !0, color: "#A7A9AD", hideOverlap: !0 }, nameLocation: "middle", nameTextStyle: { color: "#A7A9AD", fontSize: 11, fontWeight: 400 }, splitLine: { show: !1 } }, y = { top: 82, left: "auto", right: 32, icon: "circle", itemGap: 22, itemWidth: 12, itemHeight: 12, textStyle: { color: "#A7A9AD", fontSize: 11 } }, T = { top: 132, left: 32, right: 32, bottom: 32, outerBoundsMode: "same", outerBoundsContain: "axisLabel" }, S = { backgroundColor: "rgba(26, 29, 31, 0)", borderColor: "#3A3D46", borderRadius: 4, dataBackground: { lineStyle: { color: "#606060", width: 1 }, areaStyle: { color: "rgba(96, 96, 96, 0.3)" } }, selectedDataBackground: { lineStyle: { color: "#b36674", width: 1 }, areaStyle: { color: "rgba(164, 91, 105, 0.5)" } }, fillerColor: "rgba(82, 45, 52, 0.35)", handleStyle: { color: "#C14E64", borderColor: "#C14E64" }, moveHandleStyle: { color: "#b36674" }, brushStyle: { color: "rgba(95, 58, 65, 0.2)" }, emphasis: { handleStyle: { color: "rgb(209, 123, 140)", borderColor: "rgb(209, 123, 140)" } }, handleSize: "100%", textStyle: { color: "#A7A9AD" } }, i = { color: ["#C14E64", "#00BBFA", "#0072B2", "#E69F00", "#D66119", "#56B4E9", "#45B26B", "#F0E442", "#FF99BF", "#8277D8"], left: 140, right: 140, top: 82, bottom: 32, nodeWidth: 20, nodeGap: 40, layoutIterations: 32, draggable: !1, emphasis: { focus: "adjacency" }, label: { show: !0, formatter: "{b}", color: "#FCFCFC", fontSize: 11, width: 100, overflow: "truncate", ellipsis: "..." }, edgeLabel: { show: !1, fontSize: 9, color: "#A7A9AD", backgroundColor: "rgba(26, 29, 31, 0.85)", padding: [2, 6], borderRadius: 3 }, lineStyle: { color: "gradient", opacity: 0.4, curveness: 0.5 }, itemStyle: { borderWidth: 0 }, levels: [{ depth: 0, itemStyle: { color: "#C14E64" }, lineStyle: { color: "gradient", opacity: 0.4 } }, { depth: 1, itemStyle: { color: "#56B4E9" }, lineStyle: { color: "gradient", opacity: 0.4 } }, { depth: 2, itemStyle: { color: "#0072B2" }, lineStyle: { color: "gradient", opacity: 0.4 } }] }, z = { label: { color: "#A7A9AD" }, emphasis: { label: { color: "#FFFFFF" } } }, o = { confine: !0, backgroundColor: "transparent", padding: 10, borderRadius: 8, borderColor: "#50525A", borderWidth: 1, textStyle: { color: "#FCFCFC", fontFamily: "Poppins, sans-serif", fontSize: 11, fontStyle: "normal", fontWeight: 500 }, extraCssText: "letter-spacing: 0.22px; box-shadow: 0 14px 11px -4px rgba(0, 0, 0, 0.30), 0 -4px 4px 0 rgba(0, 0, 0, 0.04) inset; background: radial-gradient(ellipse at 25% 0%, rgba(217, 217, 217, 0.12) 0%, transparent 60%), #1A1D1F;" }, e = { type: "image", id: "fractal-watermark", left: "center", top: "middle", style: { image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTAiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyMTAgMjQiPgogIDxnIGZpbGw9IiNhN2E5YWQiIGZpbGwtb3BhY2l0eT0iMC4zIj4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMzLjczMyAxLjg2OGgtMjEuNjdDNi40MzggMS44NjggMS44NzggNi40MDQgMS44NzggMTJzNC41NiAxMC4xMzIgMTAuMTg1IDEwLjEzMmgyMS42N2M1LjYyNSAwIDEwLjE4NS00LjUzNiAxMC4xODUtMTAuMTMyUzM5LjM1OCAxLjg2OCAzMy43MzMgMS44NjhNMCAxMmMwIDYuNjI3IDUuNCAxMiAxMi4wNjMgMTJoMjEuNjdjNi42NjIgMCAxMi4wNjMtNS4zNzMgMTIuMDYzLTEycy01LjQtMTItMTIuMDYzLTEyaC0yMS42N0M1LjQwMSAwIDAgNS4zNzMgMCAxMiIgY2xpcC1ydWxlPSJldmVub2RkIi8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zMy43MzQgNS4xNzRoLTIxLjY3QzguMjczIDUuMTc0IDUuMiA4LjIzIDUuMiAxMnMzLjA3MyA2LjgyNiA2Ljg2MyA2LjgyNmgyMS42N2MzLjc5IDAgNi44NjItMy4wNTYgNi44NjItNi44MjZzLTMuMDcyLTYuODI2LTYuODYyLTYuODI2TTMuMzIzIDEyYzAgNC44MDIgMy45MTIgOC42OTUgOC43NCA4LjY5NWgyMS42N2M0LjgyNyAwIDguNzQtMy44OTMgOC43NC04LjY5NXMtMy45MTMtOC42OTUtOC43NC04LjY5NWgtMjEuNjdjLTQuODI4IDAtOC43NCAzLjg5My04Ljc0IDguNjk1IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMzLjczMyA4LjQ4aC0yMS42N0EzLjUzIDMuNTMgMCAwIDAgOC41MjMgMTJhMy41MyAzLjUzIDAgMCAwIDMuNTQgMy41MjFoMjEuNjdhMy41MyAzLjUzIDAgMCAwIDMuNTQtMy41MiAzLjUzIDMuNTMgMCAwIDAtMy41NC0zLjUyMk02LjY0NiAxMmMwIDIuOTc2IDIuNDI1IDUuMzkgNS40MTcgNS4zOWgyMS42N2MyLjk5MiAwIDUuNDE4LTIuNDE0IDUuNDE4LTUuMzlzLTIuNDI2LTUuMzktNS40MTgtNS4zOWgtMjEuNjdjLTIuOTkyIDAtNS40MTcgMi40MTQtNS40MTcgNS4zOSIgY2xpcC1ydWxlPSJldmVub2RkIi8+CiAgICA8cGF0aCBkPSJNNTguNDUgMjAuNjk1aC0yLjc3TDQ4LjU5MiAzLjMyN2gyLjdsNS43NzMgMTQuNTQyIDUuNzczLTE0LjU0MmgyLjd6TTczLjk4NiAyMC42OTVoLTIuMDZsLS4xNC0xLjQ4MnEtLjY0LjgxLTEuNjE3IDEuMjYyLS45NzguNDUtMi4xNjUuNDUxLTEuMjQ2IDAtMi4yMjMtLjQ4NmEzLjg2IDMuODYgMCAwIDEtMS41MzctMS4zMzIgMy40IDMuNCAwIDAgMS0uNTU5LTEuOTIycTAtMS4xMzQuNjA2LTEuOTkxLjYwNS0uODY4IDEuNjUzLTEuMzU1IDEuMDQ3LS40OTggMi4zODYtLjQ5OC44MzggMCAxLjY5OS4xOTdhNi42IDYuNiAwIDAgMSAxLjU3MS41NTZ2LS40MjlxMC0uODQ0LS40NDItMS40NDdhMi43IDIuNyAwIDAgMC0xLjE4Ny0uOTM4IDQuMSA0LjEgMCAwIDAtMS42NTMtLjMyNHEtLjgwMiAwLTEuNjQxLjI3OC0uODI2LjI3Ny0xLjU2Ljg1N2wtLjcyMS0xLjkzNGE5LjMgOS4zIDAgMCAxIDIuMi0uOTUgOC4zIDguMyAwIDAgMSAyLjI1Ny0uMzIzcTEuNTgzIDAgMi43MjQuNjI1YTQuMzUgNC4zNSAwIDAgMSAxLjc4IDEuNzgzcS42MyAxLjE0Ni42MyAyLjcxem0tNS41MTctMS43ODNxLjgyNyAwIDEuNTI1LS4zMzZhMi45MyAyLjkzIDAgMCAwIDEuMTI5LS45NzNxLjQ0Mi0uNjM2LjQ3Ny0xLjQ4MnYtLjE2MmE0LjcgNC43IDAgMCAwLTEuMzM4LS42ODMgNC42IDQuNiAwIDAgMC0xLjUwMi0uMjU1cS0xLjE3NiAwLTEuOTU1LjU1Ni0uNzguNTU1LS43OCAxLjQyNCAwIC41NDQuMzE0Ljk4NC4zMjYuNDMuODczLjY4My41Ni4yNDQgMS4yNTcuMjQ0TTc3Ljk4OCAyMC42OTVoLTIuNTRWMi44NjRoMi41NHpNODAuNjY2IDUuNzU4cS0uNTQ4IDAtLjkyLS4zODJhMS4yOCAxLjI4IDAgMCAxLS4zNzMtLjkyNnEwLS41NDUuMzczLS45MTUuMzcyLS4zODIuOTItLjM4Mi41NiAwIC45MzIuMzgyLjM4NS4zNy4zODUuOTE1dC0uMzg1LjkyNnEtLjM3My4zODItLjkzMi4zODJtMS4xODggMTQuOTM3aC0yLjM4OFY5LjExNmgyLjM4OHpNOTUuNjI4IDIwLjY5NUg5My41MmwtLjEyOC0xLjY1NmE1LjcgNS43IDAgMCAxLTEuOTA5IDEuMzlxLTEuMTA2LjQ5Ny0yLjQzMi40OTctMS42NzcgMC0zLjAwMy0uNzg3YTUuNyA1LjcgMCAwIDEtMi4wOTUtMi4xNTRxLS43NTctMS4zNjUtLjc1Ny0zLjA4IDAtMS43MjQuNzU3LTMuMDhhNS43IDUuNyAwIDAgMSAyLjA5NS0yLjE1M3ExLjMyNi0uNzg3IDMuMDAzLS43ODcgMS4yNTcgMCAyLjMyOC40NTFhNS41IDUuNSAwIDAgMSAxLjg2MiAxLjI2MlYzLjMyN2gyLjM4NnptLTYuMTgtMS45cTEuMDU5IDAgMS45MDgtLjQ4NmEzLjc1IDMuNzUgMCAwIDAgMS4zNzQtMS4zMnEuNTEyLS44MzMuNTEyLTEuODk4di0uMzk0cTAtMS4wNjUtLjUxMi0xLjg5OWEzLjY2IDMuNjYgMCAwIDAtMS4zNzQtMS4zMDhxLS44NS0uNDc1LTEuOTA4LS40NzUtMS4wODMgMC0xLjk0NC41MWEzLjcgMy43IDAgMCAwLTEuMzYyIDEuMzg5cS0uNS44NjktLjUgMS45OHQuNSAxLjk5MWEzLjggMy44IDAgMCAwIDEuMzYyIDEuNDAxcS44NjEuNTEgMS45NDQuNTFNMTA3LjI2OSAyMC42OTVoLTIuMDYxbC0uMTM5LTEuNDgycS0uNjQuODEtMS42MTggMS4yNjItLjk3OC40NS0yLjE2NS40NTEtMS4yNDUgMC0yLjIyMy0uNDg2YTMuODYgMy44NiAwIDAgMS0xLjUzNi0xLjMzMiAzLjQgMy40IDAgMCAxLS41Ni0xLjkyMnEwLTEuMTM0LjYwNi0xLjk5MS42MDUtLjg2OCAxLjY1My0xLjM1NSAxLjA0Ny0uNDk4IDIuMzg2LS40OThhNy42IDcuNiAwIDAgMSAxLjY5OS4xOTcgNi42IDYuNiAwIDAgMSAxLjU3MS41NTZ2LS40MjlxMC0uODQ0LS40NDItMS40NDdhMi43IDIuNyAwIDAgMC0xLjE4Ny0uOTM4IDQuMSA0LjEgMCAwIDAtMS42NTMtLjMyNCA1LjE2NiA1LjE2NiAwIDAgMC0zLjIgMS4xMzVsLS43MjItMS45MzRhOS4zIDkuMyAwIDAgMSAyLjItLjk1IDguMyA4LjMgMCAwIDEgMi4yNTgtLjMyM3ExLjU4MyAwIDIuNzIzLjYyNWE0LjM1IDQuMzUgMCAwIDEgMS43ODEgMS43ODNxLjYyOSAxLjE0Ni42MjkgMi43MXptLTUuNTE3LTEuNzgzcS44MjYgMCAxLjUyNC0uMzM2YTIuOSAyLjkgMCAwIDAgMS4xMjktLjk3M3EuNDQyLS42MzYuNDc3LTEuNDgydi0uMTYyYTQuNiA0LjYgMCAwIDAtMS4zMzgtLjY4MyA0LjYgNC42IDAgMCAwLTEuNTAyLS4yNTVxLTEuMTc1IDAtMS45NTUuNTU2LS43OC41NTUtLjc4IDEuNDI0IDAgLjU0NC4zMTQuOTg0LjMyNy40My44NzMuNjgzLjU2LjI0NCAxLjI1OC4yNDRNMTE2LjQyNCAyMC40MDVxLTEuMjIxLjUyMS0yLjM2Mi41MjF0LTIuMDAyLS40ODZhMy41IDMuNSAwIDAgMS0xLjMzOS0xLjM2NnEtLjQ3Ny0uODkyLS40NzctMi4wNXYtNS43ODloLTIuMDM3VjkuMTE2aDIuMTUzVjYuMjIyaDIuMjd2Mi44OTRoMy4zOTl2Mi4xMTloLTMuMzk5djUuMzVxMCAxLjAxOC41NDcgMS42Mi41NTguNTkgMS40MzIuNTkuNzM0IDAgMS40NTUtLjQ0ek0xMTguNTggNS43NThxLS41NDggMC0uOTItLjM4MmExLjI4IDEuMjggMCAwIDEtLjM3My0uOTI2cTAtLjU0NS4zNzMtLjkxNS4zNzItLjM4Mi45Mi0uMzgyLjU2IDAgLjkzMi4zODIuMzg1LjM3LjM4NS45MTV0LS4zODUuOTI2YTEuMjUgMS4yNSAwIDAgMS0uOTMyLjM4Mm0xLjE4OCAxNC45MzdoLTIuMzg4VjkuMTE2aDIuMzg4ek0xMjcuMjU3IDIwLjkyNnEtMS43NDYgMC0zLjE0My0uNzg3YTUuODUgNS44NSAwIDAgMS0yLjItMi4xNDJxLS44MDMtMS4zNjYtLjgwMy0zLjA5MiAwLTEuNzEzLjgwMy0zLjA2OGE1LjggNS44IDAgMCAxIDIuMi0yLjE1M3ExLjM5Ny0uOCAzLjE0My0uOCAxLjc1NyAwIDMuMTQyLjhhNS43NiA1Ljc2IDAgMCAxIDIuMTc3IDIuMTUzcS44MDMgMS4zNTUuODAzIDMuMDY4IDAgMS43MjUtLjgwMyAzLjA5MmE1LjggNS44IDAgMCAxLTIuMTc3IDIuMTQycS0xLjM4NS43ODctMy4xNDIuNzg3bS0uMDEyLTIuMTNxMS4wNiAwIDEuODg2LS41MWEzLjcgMy43IDAgMCAwIDEuMzE1LTEuMzlxLjQ4OS0uODguNDg5LTIuMDAyIDAtMS4xLS40ODktMS45NjlhMy42IDMuNiAwIDAgMC0xLjMxNS0xLjM4OXEtLjgyNy0uNTItMS44ODYtLjUyLTEuMDQ3IDAtMS44ODUuNTJhMy43IDMuNyAwIDAgMC0xLjMyNyAxLjM5cS0uNDc3Ljg2OC0uNDc3IDEuOTY4IDAgMS4xMjMuNDc3IDIuMDAzYTMuOCAzLjggMCAwIDAgMS4zMjcgMS4zOXEuODM3LjUwOSAxLjg4NS41MDlNMTQ1LjgxNiAyMC42OTVoLTIuMzg2di02LjI4N3EwLTEuNTQtLjg0OS0yLjQ1NS0uODM5LS45MTUtMi4yNTgtLjkxNS0xLjQ2NiAwLTIuMzYzLjk3My0uODk2Ljk3Mi0uODk2IDIuNTgydjYuMTAyaC0yLjM4NlY5LjExNmgyLjAxM2wuMDgyIDEuODY0YTQuMjUgNC4yNSAwIDAgMSAxLjY3Ni0xLjU1MXExLjAzNS0uNTQ0IDIuNDMyLS41NDQgMi4yOTQgMCAzLjYwOSAxLjM3NyAxLjMyNiAxLjM3OSAxLjMyNiAzLjc5OHpNMTY2LjE3OCAxOC40ODNhOC43IDguNyAwIDAgMS0yLjg4OCAxLjg4N3EtMS42NjQuNjcyLTMuNjMxLjY3MnQtMy42MzItLjY3MmE4LjcgOC43IDAgMCAxLTIuODk4LTEuODg3IDguOSA4LjkgMCAwIDEtMS45MDgtMi44NzFxLS42NzYtMS42NTYtLjY3Ni0zLjYwMSAwLTEuOTU3LjY3Ni0zLjYwMWE4LjcgOC43IDAgMCAxIDEuOTA4LTIuODcyIDguNyA4LjcgMCAwIDEgMi44OTgtMS44ODdxMS42NjUtLjY3MSAzLjYzMi0uNjcxIDEuOTU1IDAgMy42MTkuNjgzIDEuNjc3LjY3MSAyLjg3NSAxLjg2NGwtMS43OCAxLjgwNmE2LjIgNi4yIDAgMCAwLTIuMDk0LTEuNTRxLTEuMjEyLS41NjctMi42NTQtLjU2Ny0xLjM5NyAwLTIuNTczLjUxYTYgNiAwIDAgMC0yLjA0OSAxLjQyMyA2LjYgNi42IDAgMCAwLTEuMzYxIDIuMTU0cS0uNDc4IDEuMjM5LS40NzggMi42OTh0LjQ3OCAyLjY5OGE2LjcgNi43IDAgMCAwIDEuMzYxIDIuMTY1IDYuMiA2LjIgMCAwIDAgMi4wNDkgMS40MjRxMS4xNzUuNDk4IDIuNTczLjQ5OCAxLjQ0MiAwIDIuNjU0LS41NTZhNi4yIDYuMiAwIDAgMCAyLjA4My0xLjU1MnpNMTcwLjA5MiAyMC42OTVoLTIuNTRWMi44NjRoMi41NHpNMTc3LjUzNCAyMC45MjZxLTEuNzQ1IDAtMy4xNDMtLjc4N2E1Ljg0IDUuODQgMCAwIDEtMi4xOTktMi4xNDJxLS44MDMtMS4zNjYtLjgwMy0zLjA5MiAwLTEuNzEzLjgwMy0zLjA2OGE1LjggNS44IDAgMCAxIDIuMTk5LTIuMTUzcTEuMzk4LS44IDMuMTQzLS44IDEuNzU4IDAgMy4xNDIuOGE1Ljc1IDUuNzUgMCAwIDEgMi4xNzYgMi4xNTNxLjgwNCAxLjM1NS44MDMgMy4wNjggMCAxLjcyNS0uODAzIDMuMDkyYTUuOCA1LjggMCAwIDEtMi4xNzYgMi4xNDJxLTEuMzg0Ljc4Ny0zLjE0Mi43ODdtLS4wMTMtMi4xM3ExLjA2IDAgMS44ODctLjUxYTMuNyAzLjcgMCAwIDAgMS4zMTUtMS4zOXEuNDg4LS44OC40ODgtMi4wMDIgMC0xLjEtLjQ4OC0xLjk2OWEzLjYgMy42IDAgMCAwLTEuMzE1LTEuMzg5cS0uODI3LS41Mi0xLjg4Ny0uNTJhMy41IDMuNSAwIDAgMC0xLjg4NS41MiAzLjcgMy43IDAgMCAwLTEuMzI2IDEuMzlxLS40NzcuODY4LS40NzcgMS45NjggMCAxLjEyMy40NzcgMi4wMDNhMy44IDMuOCAwIDAgMCAxLjMyNiAxLjM5IDMuNTYgMy41NiAwIDAgMCAxLjg4NS41MDlNMTk2LjEgMjAuNjk1aC0yLjAyNmwtLjA4Mi0xLjg2NHEtLjY0IDEuMDE4LTEuNjc2IDEuNTYzLTEuMDI1LjUzMi0yLjQzMy41MzItMi4yOCAwLTMuNjA3LTEuMzc4LTEuMzE2LTEuMzktMS4zMTYtMy43OTdWOS4xMTZoMi4zODd2Ni4yODdxMCAxLjU0LjgzNyAyLjQ1NS44NC45MTUgMi4yNTguOTE1IDEuNDY4IDAgMi4zNjQtLjk3My45MDctLjk4NC45MDctMi41ODJWOS4xMTZoMi4zODd6TTIwOS44NCAyMC42OTVoLTIuMTA2bC0uMTI5LTEuNjU2YTUuNyA1LjcgMCAwIDEtMS45MDggMS4zOXEtMS4xMDUuNDk3LTIuNDMzLjQ5Ny0xLjY3NiAwLTMuMDAyLS43ODdhNS43IDUuNyAwIDAgMS0yLjA5Ni0yLjE1NHEtLjc1Ni0xLjM2NS0uNzU2LTMuMDggMC0xLjcyNC43NTYtMy4wOGE1LjcgNS43IDAgMCAxIDIuMDk2LTIuMTUzcTEuMzI2LS43ODcgMy4wMDItLjc4NyAxLjI1NyAwIDIuMzI5LjQ1MWE1LjUgNS41IDAgMCAxIDEuODYyIDEuMjYyVjMuMzI3aDIuMzg1em0tNi4xOC0xLjlxMS4wNTkgMCAxLjkwOC0uNDg2YTMuNzQgMy43NCAwIDAgMCAxLjM3NC0xLjMycS41MTItLjgzMy41MTMtMS44OTh2LS4zOTRxMC0xLjA2NS0uNTEzLTEuODk5YTMuNjUgMy42NSAwIDAgMC0xLjM3NC0xLjMwOHEtLjg0OS0uNDc1LTEuOTA4LS40NzUtMS4wODIgMC0xLjk0My41MWEzLjcgMy43IDAgMCAwLTEuMzYzIDEuMzg5cS0uNS44NjktLjQ5OSAxLjk4IDAgMS4xMTEuNDk5IDEuOTkxYTMuOCAzLjggMCAwIDAgMS4zNjMgMS40MDFxLjg2LjUxIDEuOTQzLjUxIi8+CiAgPC9nPgo8L3N2Zz4=", width: 210, height: 24 }, z: 100, silent: !0 }, x = {
|
|
1
|
+
const M = [{ type: "linear", x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: "#C14E64" }, { offset: 1, color: "#DE7385" }] }, "#00BBFA", "#0072B2", "#E69F00", "#D66119", "#56B4E9", "#45B26B", "#F0E442", "#FF99BF", "#8277D8"], L = "#1A1D1F", N = { fontFamily: "Poppins, sans-serif", fontWeight: 500 }, j = { top: 32, left: 32, textStyle: { color: "#FFFFFF", fontSize: 16, fontWeight: 600 }, subtextStyle: { color: "#A7A9AD" } }, D = { itemStyle: { borderWidth: 1 }, lineStyle: { width: 2 }, areaStyle: { opacity: 0.15 }, showSymbol: !1, symbolSize: 5, symbol: "circle", smooth: !1, sampling: "lttb" }, A = { barGap: "25%", barCategoryGap: "25%" }, g = { axisLine: { show: !0, lineStyle: { color: "#3A3D46", type: "dashed" } }, axisTick: { show: !1 }, axisLabel: { show: !0, color: "#A7A9AD", hideOverlap: !0 }, nameLocation: "middle", nameTextStyle: { color: "#A7A9AD", fontSize: 11, fontWeight: 400 }, splitLine: { show: !1 } }, t = { axisLine: { show: !1 }, axisTick: { show: !1 }, axisLabel: { show: !0, color: "#A7A9AD", hideOverlap: !0 }, nameLocation: "middle", nameTextStyle: { color: "#A7A9AD", fontSize: 11, fontWeight: 400 }, splitLine: { show: !0, lineStyle: { color: ["#3A3D46"], type: "dashed" } } }, u = { axisLine: { show: !1 }, axisTick: { show: !1 }, axisLabel: { show: !0, color: "#A7A9AD", hideOverlap: !0 }, nameLocation: "middle", nameTextStyle: { color: "#A7A9AD", fontSize: 11, fontWeight: 400 }, splitLine: { show: !0, lineStyle: { color: ["#3A3D46"], type: "dashed" } } }, I = { axisLine: { show: !0, lineStyle: { color: "#3A3D46" } }, axisTick: { show: !1 }, axisLabel: { show: !0, color: "#A7A9AD", hideOverlap: !0 }, nameLocation: "middle", nameTextStyle: { color: "#A7A9AD", fontSize: 11, fontWeight: 400 }, splitLine: { show: !1 } }, y = { top: 82, left: "auto", right: 32, icon: "circle", itemGap: 22, itemWidth: 12, itemHeight: 12, textStyle: { color: "#A7A9AD", fontSize: 11 } }, T = { top: 132, left: 32, right: 32, bottom: 32, outerBoundsMode: "same", outerBoundsContain: "axisLabel" }, i = { backgroundColor: "rgba(26, 29, 31, 0)", borderColor: "#3A3D46", borderRadius: 4, dataBackground: { lineStyle: { color: "#606060", width: 1 }, areaStyle: { color: "rgba(96, 96, 96, 0.3)" } }, selectedDataBackground: { lineStyle: { color: "#b36674", width: 1 }, areaStyle: { color: "rgba(164, 91, 105, 0.5)" } }, fillerColor: "rgba(82, 45, 52, 0.35)", handleStyle: { color: "#C14E64", borderColor: "#C14E64" }, moveHandleStyle: { color: "#b36674" }, brushStyle: { color: "rgba(95, 58, 65, 0.2)" }, emphasis: { handleStyle: { color: "rgb(209, 123, 140)", borderColor: "rgb(209, 123, 140)" } }, handleSize: "100%", textStyle: { color: "#A7A9AD" } }, S = { color: ["#C14E64", "#00BBFA", "#0072B2", "#E69F00", "#D66119", "#56B4E9", "#45B26B", "#F0E442", "#FF99BF", "#8277D8"], left: 140, right: 140, top: 82, bottom: 32, nodeWidth: 20, nodeGap: 40, layoutIterations: 32, draggable: !1, emphasis: { focus: "adjacency" }, label: { show: !0, formatter: "{b}", color: "#FCFCFC", fontSize: 11, width: 100, overflow: "truncate", ellipsis: "..." }, edgeLabel: { show: !1, fontSize: 9, color: "#A7A9AD", backgroundColor: "rgba(26, 29, 31, 0.85)", padding: [2, 6], borderRadius: 3 }, lineStyle: { color: "gradient", opacity: 0.4, curveness: 0.5 }, itemStyle: { borderWidth: 0 }, levels: [{ depth: 0, itemStyle: { color: "#C14E64" }, lineStyle: { color: "gradient", opacity: 0.4 } }, { depth: 1, itemStyle: { color: "#56B4E9" }, lineStyle: { color: "gradient", opacity: 0.4 } }, { depth: 2, itemStyle: { color: "#0072B2" }, lineStyle: { color: "gradient", opacity: 0.4 } }] }, z = { itemStyle: { areaColor: "#413E3D", borderColor: "#2A2726", borderWidth: 0.5 }, label: { show: !1 }, emphasis: { label: { show: !1 }, itemStyle: { areaColor: "#524E4D" } } }, e = { itemStyle: { areaColor: "#413E3D", borderColor: "#2A2726", borderWidth: 0.5 }, label: { show: !1 }, emphasis: { label: { show: !1 }, itemStyle: { areaColor: "#524E4D" } } }, o = { label: { color: "#A7A9AD" }, emphasis: { label: { color: "#FFFFFF" } } }, x = { confine: !0, backgroundColor: "transparent", padding: 10, borderRadius: 8, borderColor: "#50525A", borderWidth: 1, textStyle: { color: "#FCFCFC", fontFamily: "Poppins, sans-serif", fontSize: 11, fontStyle: "normal", fontWeight: 500 }, extraCssText: "letter-spacing: 0.22px; box-shadow: 0 14px 11px -4px rgba(0, 0, 0, 0.30), 0 -4px 4px 0 rgba(0, 0, 0, 0.04) inset; background: radial-gradient(ellipse at 25% 0%, rgba(217, 217, 217, 0.12) 0%, transparent 60%), #1A1D1F;" }, C = { type: "image", id: "fractal-watermark", left: "center", top: "middle", style: { image: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTAiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyMTAgMjQiPgogIDxnIGZpbGw9IiNhN2E5YWQiIGZpbGwtb3BhY2l0eT0iMC4zIj4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMzLjczMyAxLjg2OGgtMjEuNjdDNi40MzggMS44NjggMS44NzggNi40MDQgMS44NzggMTJzNC41NiAxMC4xMzIgMTAuMTg1IDEwLjEzMmgyMS42N2M1LjYyNSAwIDEwLjE4NS00LjUzNiAxMC4xODUtMTAuMTMyUzM5LjM1OCAxLjg2OCAzMy43MzMgMS44NjhNMCAxMmMwIDYuNjI3IDUuNCAxMiAxMi4wNjMgMTJoMjEuNjdjNi42NjIgMCAxMi4wNjMtNS4zNzMgMTIuMDYzLTEycy01LjQtMTItMTIuMDYzLTEyaC0yMS42N0M1LjQwMSAwIDAgNS4zNzMgMCAxMiIgY2xpcC1ydWxlPSJldmVub2RkIi8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zMy43MzQgNS4xNzRoLTIxLjY3QzguMjczIDUuMTc0IDUuMiA4LjIzIDUuMiAxMnMzLjA3MyA2LjgyNiA2Ljg2MyA2LjgyNmgyMS42N2MzLjc5IDAgNi44NjItMy4wNTYgNi44NjItNi44MjZzLTMuMDcyLTYuODI2LTYuODYyLTYuODI2TTMuMzIzIDEyYzAgNC44MDIgMy45MTIgOC42OTUgOC43NCA4LjY5NWgyMS42N2M0LjgyNyAwIDguNzQtMy44OTMgOC43NC04LjY5NXMtMy45MTMtOC42OTUtOC43NC04LjY5NWgtMjEuNjdjLTQuODI4IDAtOC43NCAzLjg5My04Ljc0IDguNjk1IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMzLjczMyA4LjQ4aC0yMS42N0EzLjUzIDMuNTMgMCAwIDAgOC41MjMgMTJhMy41MyAzLjUzIDAgMCAwIDMuNTQgMy41MjFoMjEuNjdhMy41MyAzLjUzIDAgMCAwIDMuNTQtMy41MiAzLjUzIDMuNTMgMCAwIDAtMy41NC0zLjUyMk02LjY0NiAxMmMwIDIuOTc2IDIuNDI1IDUuMzkgNS40MTcgNS4zOWgyMS42N2MyLjk5MiAwIDUuNDE4LTIuNDE0IDUuNDE4LTUuMzlzLTIuNDI2LTUuMzktNS40MTgtNS4zOWgtMjEuNjdjLTIuOTkyIDAtNS40MTcgMi40MTQtNS40MTcgNS4zOSIgY2xpcC1ydWxlPSJldmVub2RkIi8+CiAgICA8cGF0aCBkPSJNNTguNDUgMjAuNjk1aC0yLjc3TDQ4LjU5MiAzLjMyN2gyLjdsNS43NzMgMTQuNTQyIDUuNzczLTE0LjU0MmgyLjd6TTczLjk4NiAyMC42OTVoLTIuMDZsLS4xNC0xLjQ4MnEtLjY0LjgxLTEuNjE3IDEuMjYyLS45NzguNDUtMi4xNjUuNDUxLTEuMjQ2IDAtMi4yMjMtLjQ4NmEzLjg2IDMuODYgMCAwIDEtMS41MzctMS4zMzIgMy40IDMuNCAwIDAgMS0uNTU5LTEuOTIycTAtMS4xMzQuNjA2LTEuOTkxLjYwNS0uODY4IDEuNjUzLTEuMzU1IDEuMDQ3LS40OTggMi4zODYtLjQ5OC44MzggMCAxLjY5OS4xOTdhNi42IDYuNiAwIDAgMSAxLjU3MS41NTZ2LS40MjlxMC0uODQ0LS40NDItMS40NDdhMi43IDIuNyAwIDAgMC0xLjE4Ny0uOTM4IDQuMSA0LjEgMCAwIDAtMS42NTMtLjMyNHEtLjgwMiAwLTEuNjQxLjI3OC0uODI2LjI3Ny0xLjU2Ljg1N2wtLjcyMS0xLjkzNGE5LjMgOS4zIDAgMCAxIDIuMi0uOTUgOC4zIDguMyAwIDAgMSAyLjI1Ny0uMzIzcTEuNTgzIDAgMi43MjQuNjI1YTQuMzUgNC4zNSAwIDAgMSAxLjc4IDEuNzgzcS42MyAxLjE0Ni42MyAyLjcxem0tNS41MTctMS43ODNxLjgyNyAwIDEuNTI1LS4zMzZhMi45MyAyLjkzIDAgMCAwIDEuMTI5LS45NzNxLjQ0Mi0uNjM2LjQ3Ny0xLjQ4MnYtLjE2MmE0LjcgNC43IDAgMCAwLTEuMzM4LS42ODMgNC42IDQuNiAwIDAgMC0xLjUwMi0uMjU1cS0xLjE3NiAwLTEuOTU1LjU1Ni0uNzguNTU1LS43OCAxLjQyNCAwIC41NDQuMzE0Ljk4NC4zMjYuNDMuODczLjY4My41Ni4yNDQgMS4yNTcuMjQ0TTc3Ljk4OCAyMC42OTVoLTIuNTRWMi44NjRoMi41NHpNODAuNjY2IDUuNzU4cS0uNTQ4IDAtLjkyLS4zODJhMS4yOCAxLjI4IDAgMCAxLS4zNzMtLjkyNnEwLS41NDUuMzczLS45MTUuMzcyLS4zODIuOTItLjM4Mi41NiAwIC45MzIuMzgyLjM4NS4zNy4zODUuOTE1dC0uMzg1LjkyNnEtLjM3My4zODItLjkzMi4zODJtMS4xODggMTQuOTM3aC0yLjM4OFY5LjExNmgyLjM4OHpNOTUuNjI4IDIwLjY5NUg5My41MmwtLjEyOC0xLjY1NmE1LjcgNS43IDAgMCAxLTEuOTA5IDEuMzlxLTEuMTA2LjQ5Ny0yLjQzMi40OTctMS42NzcgMC0zLjAwMy0uNzg3YTUuNyA1LjcgMCAwIDEtMi4wOTUtMi4xNTRxLS43NTctMS4zNjUtLjc1Ny0zLjA4IDAtMS43MjQuNzU3LTMuMDhhNS43IDUuNyAwIDAgMSAyLjA5NS0yLjE1M3ExLjMyNi0uNzg3IDMuMDAzLS43ODcgMS4yNTcgMCAyLjMyOC40NTFhNS41IDUuNSAwIDAgMSAxLjg2MiAxLjI2MlYzLjMyN2gyLjM4NnptLTYuMTgtMS45cTEuMDU5IDAgMS45MDgtLjQ4NmEzLjc1IDMuNzUgMCAwIDAgMS4zNzQtMS4zMnEuNTEyLS44MzMuNTEyLTEuODk4di0uMzk0cTAtMS4wNjUtLjUxMi0xLjg5OWEzLjY2IDMuNjYgMCAwIDAtMS4zNzQtMS4zMDhxLS44NS0uNDc1LTEuOTA4LS40NzUtMS4wODMgMC0xLjk0NC41MWEzLjcgMy43IDAgMCAwLTEuMzYyIDEuMzg5cS0uNS44NjktLjUgMS45OHQuNSAxLjk5MWEzLjggMy44IDAgMCAwIDEuMzYyIDEuNDAxcS44NjEuNTEgMS45NDQuNTFNMTA3LjI2OSAyMC42OTVoLTIuMDYxbC0uMTM5LTEuNDgycS0uNjQuODEtMS42MTggMS4yNjItLjk3OC40NS0yLjE2NS40NTEtMS4yNDUgMC0yLjIyMy0uNDg2YTMuODYgMy44NiAwIDAgMS0xLjUzNi0xLjMzMiAzLjQgMy40IDAgMCAxLS41Ni0xLjkyMnEwLTEuMTM0LjYwNi0xLjk5MS42MDUtLjg2OCAxLjY1My0xLjM1NSAxLjA0Ny0uNDk4IDIuMzg2LS40OThhNy42IDcuNiAwIDAgMSAxLjY5OS4xOTcgNi42IDYuNiAwIDAgMSAxLjU3MS41NTZ2LS40MjlxMC0uODQ0LS40NDItMS40NDdhMi43IDIuNyAwIDAgMC0xLjE4Ny0uOTM4IDQuMSA0LjEgMCAwIDAtMS42NTMtLjMyNCA1LjE2NiA1LjE2NiAwIDAgMC0zLjIgMS4xMzVsLS43MjItMS45MzRhOS4zIDkuMyAwIDAgMSAyLjItLjk1IDguMyA4LjMgMCAwIDEgMi4yNTgtLjMyM3ExLjU4MyAwIDIuNzIzLjYyNWE0LjM1IDQuMzUgMCAwIDEgMS43ODEgMS43ODNxLjYyOSAxLjE0Ni42MjkgMi43MXptLTUuNTE3LTEuNzgzcS44MjYgMCAxLjUyNC0uMzM2YTIuOSAyLjkgMCAwIDAgMS4xMjktLjk3M3EuNDQyLS42MzYuNDc3LTEuNDgydi0uMTYyYTQuNiA0LjYgMCAwIDAtMS4zMzgtLjY4MyA0LjYgNC42IDAgMCAwLTEuNTAyLS4yNTVxLTEuMTc1IDAtMS45NTUuNTU2LS43OC41NTUtLjc4IDEuNDI0IDAgLjU0NC4zMTQuOTg0LjMyNy40My44NzMuNjgzLjU2LjI0NCAxLjI1OC4yNDRNMTE2LjQyNCAyMC40MDVxLTEuMjIxLjUyMS0yLjM2Mi41MjF0LTIuMDAyLS40ODZhMy41IDMuNSAwIDAgMS0xLjMzOS0xLjM2NnEtLjQ3Ny0uODkyLS40NzctMi4wNXYtNS43ODloLTIuMDM3VjkuMTE2aDIuMTUzVjYuMjIyaDIuMjd2Mi44OTRoMy4zOTl2Mi4xMTloLTMuMzk5djUuMzVxMCAxLjAxOC41NDcgMS42Mi41NTguNTkgMS40MzIuNTkuNzM0IDAgMS40NTUtLjQ0ek0xMTguNTggNS43NThxLS41NDggMC0uOTItLjM4MmExLjI4IDEuMjggMCAwIDEtLjM3My0uOTI2cTAtLjU0NS4zNzMtLjkxNS4zNzItLjM4Mi45Mi0uMzgyLjU2IDAgLjkzMi4zODIuMzg1LjM3LjM4NS45MTV0LS4zODUuOTI2YTEuMjUgMS4yNSAwIDAgMS0uOTMyLjM4Mm0xLjE4OCAxNC45MzdoLTIuMzg4VjkuMTE2aDIuMzg4ek0xMjcuMjU3IDIwLjkyNnEtMS43NDYgMC0zLjE0My0uNzg3YTUuODUgNS44NSAwIDAgMS0yLjItMi4xNDJxLS44MDMtMS4zNjYtLjgwMy0zLjA5MiAwLTEuNzEzLjgwMy0zLjA2OGE1LjggNS44IDAgMCAxIDIuMi0yLjE1M3ExLjM5Ny0uOCAzLjE0My0uOCAxLjc1NyAwIDMuMTQyLjhhNS43NiA1Ljc2IDAgMCAxIDIuMTc3IDIuMTUzcS44MDMgMS4zNTUuODAzIDMuMDY4IDAgMS43MjUtLjgwMyAzLjA5MmE1LjggNS44IDAgMCAxLTIuMTc3IDIuMTQycS0xLjM4NS43ODctMy4xNDIuNzg3bS0uMDEyLTIuMTNxMS4wNiAwIDEuODg2LS41MWEzLjcgMy43IDAgMCAwIDEuMzE1LTEuMzlxLjQ4OS0uODguNDg5LTIuMDAyIDAtMS4xLS40ODktMS45NjlhMy42IDMuNiAwIDAgMC0xLjMxNS0xLjM4OXEtLjgyNy0uNTItMS44ODYtLjUyLTEuMDQ3IDAtMS44ODUuNTJhMy43IDMuNyAwIDAgMC0xLjMyNyAxLjM5cS0uNDc3Ljg2OC0uNDc3IDEuOTY4IDAgMS4xMjMuNDc3IDIuMDAzYTMuOCAzLjggMCAwIDAgMS4zMjcgMS4zOXEuODM3LjUwOSAxLjg4NS41MDlNMTQ1LjgxNiAyMC42OTVoLTIuMzg2di02LjI4N3EwLTEuNTQtLjg0OS0yLjQ1NS0uODM5LS45MTUtMi4yNTgtLjkxNS0xLjQ2NiAwLTIuMzYzLjk3My0uODk2Ljk3Mi0uODk2IDIuNTgydjYuMTAyaC0yLjM4NlY5LjExNmgyLjAxM2wuMDgyIDEuODY0YTQuMjUgNC4yNSAwIDAgMSAxLjY3Ni0xLjU1MXExLjAzNS0uNTQ0IDIuNDMyLS41NDQgMi4yOTQgMCAzLjYwOSAxLjM3NyAxLjMyNiAxLjM3OSAxLjMyNiAzLjc5OHpNMTY2LjE3OCAxOC40ODNhOC43IDguNyAwIDAgMS0yLjg4OCAxLjg4N3EtMS42NjQuNjcyLTMuNjMxLjY3MnQtMy42MzItLjY3MmE4LjcgOC43IDAgMCAxLTIuODk4LTEuODg3IDguOSA4LjkgMCAwIDEtMS45MDgtMi44NzFxLS42NzYtMS42NTYtLjY3Ni0zLjYwMSAwLTEuOTU3LjY3Ni0zLjYwMWE4LjcgOC43IDAgMCAxIDEuOTA4LTIuODcyIDguNyA4LjcgMCAwIDEgMi44OTgtMS44ODdxMS42NjUtLjY3MSAzLjYzMi0uNjcxIDEuOTU1IDAgMy42MTkuNjgzIDEuNjc3LjY3MSAyLjg3NSAxLjg2NGwtMS43OCAxLjgwNmE2LjIgNi4yIDAgMCAwLTIuMDk0LTEuNTRxLTEuMjEyLS41NjctMi42NTQtLjU2Ny0xLjM5NyAwLTIuNTczLjUxYTYgNiAwIDAgMC0yLjA0OSAxLjQyMyA2LjYgNi42IDAgMCAwLTEuMzYxIDIuMTU0cS0uNDc4IDEuMjM5LS40NzggMi42OTh0LjQ3OCAyLjY5OGE2LjcgNi43IDAgMCAwIDEuMzYxIDIuMTY1IDYuMiA2LjIgMCAwIDAgMi4wNDkgMS40MjRxMS4xNzUuNDk4IDIuNTczLjQ5OCAxLjQ0MiAwIDIuNjU0LS41NTZhNi4yIDYuMiAwIDAgMCAyLjA4My0xLjU1MnpNMTcwLjA5MiAyMC42OTVoLTIuNTRWMi44NjRoMi41NHpNMTc3LjUzNCAyMC45MjZxLTEuNzQ1IDAtMy4xNDMtLjc4N2E1Ljg0IDUuODQgMCAwIDEtMi4xOTktMi4xNDJxLS44MDMtMS4zNjYtLjgwMy0zLjA5MiAwLTEuNzEzLjgwMy0zLjA2OGE1LjggNS44IDAgMCAxIDIuMTk5LTIuMTUzcTEuMzk4LS44IDMuMTQzLS44IDEuNzU4IDAgMy4xNDIuOGE1Ljc1IDUuNzUgMCAwIDEgMi4xNzYgMi4xNTNxLjgwNCAxLjM1NS44MDMgMy4wNjggMCAxLjcyNS0uODAzIDMuMDkyYTUuOCA1LjggMCAwIDEtMi4xNzYgMi4xNDJxLTEuMzg0Ljc4Ny0zLjE0Mi43ODdtLS4wMTMtMi4xM3ExLjA2IDAgMS44ODctLjUxYTMuNyAzLjcgMCAwIDAgMS4zMTUtMS4zOXEuNDg4LS44OC40ODgtMi4wMDIgMC0xLjEtLjQ4OC0xLjk2OWEzLjYgMy42IDAgMCAwLTEuMzE1LTEuMzg5cS0uODI3LS41Mi0xLjg4Ny0uNTJhMy41IDMuNSAwIDAgMC0xLjg4NS41MiAzLjcgMy43IDAgMCAwLTEuMzI2IDEuMzlxLS40NzcuODY4LS40NzcgMS45NjggMCAxLjEyMy40NzcgMi4wMDNhMy44IDMuOCAwIDAgMCAxLjMyNiAxLjM5IDMuNTYgMy41NiAwIDAgMCAxLjg4NS41MDlNMTk2LjEgMjAuNjk1aC0yLjAyNmwtLjA4Mi0xLjg2NHEtLjY0IDEuMDE4LTEuNjc2IDEuNTYzLTEuMDI1LjUzMi0yLjQzMy41MzItMi4yOCAwLTMuNjA3LTEuMzc4LTEuMzE2LTEuMzktMS4zMTYtMy43OTdWOS4xMTZoMi4zODd2Ni4yODdxMCAxLjU0LjgzNyAyLjQ1NS44NC45MTUgMi4yNTguOTE1IDEuNDY4IDAgMi4zNjQtLjk3My45MDctLjk4NC45MDctMi41ODJWOS4xMTZoMi4zODd6TTIwOS44NCAyMC42OTVoLTIuMTA2bC0uMTI5LTEuNjU2YTUuNyA1LjcgMCAwIDEtMS45MDggMS4zOXEtMS4xMDUuNDk3LTIuNDMzLjQ5Ny0xLjY3NiAwLTMuMDAyLS43ODdhNS43IDUuNyAwIDAgMS0yLjA5Ni0yLjE1NHEtLjc1Ni0xLjM2NS0uNzU2LTMuMDggMC0xLjcyNC43NTYtMy4wOGE1LjcgNS43IDAgMCAxIDIuMDk2LTIuMTUzcTEuMzI2LS43ODcgMy4wMDItLjc4NyAxLjI1NyAwIDIuMzI5LjQ1MWE1LjUgNS41IDAgMCAxIDEuODYyIDEuMjYyVjMuMzI3aDIuMzg1em0tNi4xOC0xLjlxMS4wNTkgMCAxLjkwOC0uNDg2YTMuNzQgMy43NCAwIDAgMCAxLjM3NC0xLjMycS41MTItLjgzMy41MTMtMS44OTh2LS4zOTRxMC0xLjA2NS0uNTEzLTEuODk5YTMuNjUgMy42NSAwIDAgMC0xLjM3NC0xLjMwOHEtLjg0OS0uNDc1LTEuOTA4LS40NzUtMS4wODIgMC0xLjk0My41MWEzLjcgMy43IDAgMCAwLTEuMzYzIDEuMzg5cS0uNS44NjktLjQ5OSAxLjk4IDAgMS4xMTEuNDk5IDEuOTkxYTMuOCAzLjggMCAwIDAgMS4zNjMgMS40MDFxLjg2LjUxIDEuOTQzLjUxIi8+CiAgPC9nPgo8L3N2Zz4=", width: 210, height: 24 }, z: 100, silent: !0 }, l = {
|
|
2
2
|
color: M,
|
|
3
3
|
backgroundColor: L,
|
|
4
4
|
textStyle: N,
|
|
5
5
|
title: j,
|
|
6
|
-
line:
|
|
7
|
-
bar:
|
|
6
|
+
line: D,
|
|
7
|
+
bar: A,
|
|
8
8
|
categoryAxis: g,
|
|
9
|
-
valueAxis:
|
|
10
|
-
logAxis:
|
|
11
|
-
timeAxis:
|
|
9
|
+
valueAxis: t,
|
|
10
|
+
logAxis: u,
|
|
11
|
+
timeAxis: I,
|
|
12
12
|
legend: y,
|
|
13
13
|
grid: T,
|
|
14
|
-
dataZoom:
|
|
15
|
-
sankey:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
dataZoom: i,
|
|
15
|
+
sankey: S,
|
|
16
|
+
map: z,
|
|
17
|
+
geo: e,
|
|
18
|
+
markPoint: o,
|
|
19
|
+
tooltip: x,
|
|
20
|
+
graphic: C
|
|
19
21
|
};
|
|
20
22
|
export {
|
|
21
23
|
L as backgroundColor,
|
|
22
|
-
|
|
24
|
+
A as bar,
|
|
23
25
|
g as categoryAxis,
|
|
24
26
|
M as color,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
e as
|
|
27
|
+
i as dataZoom,
|
|
28
|
+
l as default,
|
|
29
|
+
e as geo,
|
|
30
|
+
C as graphic,
|
|
28
31
|
T as grid,
|
|
29
32
|
y as legend,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
z as
|
|
33
|
-
|
|
33
|
+
D as line,
|
|
34
|
+
u as logAxis,
|
|
35
|
+
z as map,
|
|
36
|
+
o as markPoint,
|
|
37
|
+
S as sankey,
|
|
34
38
|
N as textStyle,
|
|
35
|
-
|
|
39
|
+
I as timeAxis,
|
|
36
40
|
j as title,
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
x as tooltip,
|
|
42
|
+
t as valueAxis
|
|
39
43
|
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { MapName } from './register-map';
|
|
2
|
+
type Projection = {
|
|
3
|
+
project(point: number[]): number[];
|
|
4
|
+
unproject(point: number[]): number[];
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Creates a Natural Earth I projection centered on the given longitude.
|
|
8
|
+
* Polynomial coefficients from Savric et al. (2011).
|
|
9
|
+
*/
|
|
10
|
+
export declare function createNaturalEarthProjection(centerLon?: number): Projection;
|
|
11
|
+
type LambertParams = {
|
|
12
|
+
centerLon: number;
|
|
13
|
+
centerLat: number;
|
|
14
|
+
standardParallel1: number;
|
|
15
|
+
standardParallel2: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Creates a Lambert Conformal Conic projection.
|
|
19
|
+
* Conformal — preserves local shapes. Well suited for mid-latitude regions.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createLambertProjection({ centerLon, centerLat, standardParallel1, standardParallel2, }: LambertParams): Projection;
|
|
22
|
+
/**
|
|
23
|
+
* Creates the appropriate projection for a named map.
|
|
24
|
+
* World maps use Natural Earth I; regional maps use Lambert Conformal Conic.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createMapProjection(mapName: MapName): Projection;
|
|
27
|
+
/** Default Natural Earth I projection centered at longitude 0 (for world maps). */
|
|
28
|
+
export declare const naturalEarthProjection: Projection;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { MAP_CENTERS as w } from "./map-centers.js";
|
|
2
|
+
const n = Math.PI / 180, b = 180 / Math.PI;
|
|
3
|
+
function f(l = 0) {
|
|
4
|
+
const M = l * n;
|
|
5
|
+
return {
|
|
6
|
+
project(e) {
|
|
7
|
+
const u = (e[0] ?? 0) * n - M, o = (e[1] ?? 0) * n, a = o * o, t = a * a;
|
|
8
|
+
return [
|
|
9
|
+
u * (0.8707 - 0.131979 * a + t * (-0.013791 + t * (3971e-6 * a - 1529e-6 * t))),
|
|
10
|
+
-(o * (1.007226 + a * (0.015085 + t * (-0.044475 + 0.028874 * a - 5916e-6 * t))))
|
|
11
|
+
];
|
|
12
|
+
},
|
|
13
|
+
unproject(e) {
|
|
14
|
+
const u = e[0] ?? 0, o = -(e[1] ?? 0);
|
|
15
|
+
let a = o;
|
|
16
|
+
for (let i = 25; i > 0; i--) {
|
|
17
|
+
const s = a * a, r = s * s, h = (a * (1.007226 + s * (0.015085 + r * (-0.044475 + 0.028874 * s - 5916e-6 * r))) - o) / (1.007226 + s * (3 * 0.015085 + r * (7 * -0.044475 + 9 * 0.028874 * s - 11 * 5916e-6 * r)));
|
|
18
|
+
if (a -= h, Math.abs(h) < 1e-12) break;
|
|
19
|
+
}
|
|
20
|
+
const t = a * a, d = t * t;
|
|
21
|
+
return [(u / (0.8707 + t * (-0.131979 + d * (-0.013791 + d * (3971e-6 * t - 1529e-6 * d)))) + M) * b, a * b];
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function m({
|
|
26
|
+
centerLon: l,
|
|
27
|
+
centerLat: M,
|
|
28
|
+
standardParallel1: e,
|
|
29
|
+
standardParallel2: u
|
|
30
|
+
}) {
|
|
31
|
+
const o = l * n, a = M * n, t = e * n, d = u * n, c = Math.abs(t - d) < 1e-10 ? Math.sin(t) : Math.log(Math.cos(t) / Math.cos(d)) / Math.log(Math.tan(Math.PI / 4 + d / 2) / Math.tan(Math.PI / 4 + t / 2)), i = Math.cos(t) * Math.pow(Math.tan(Math.PI / 4 + t / 2), c) / c, s = i / Math.pow(Math.tan(Math.PI / 4 + a / 2), c);
|
|
32
|
+
return {
|
|
33
|
+
project(r) {
|
|
34
|
+
const h = (r[0] ?? 0) * n, P = Math.max(-89.5 * n, Math.min(89.5 * n, (r[1] ?? 0) * n)), p = i / Math.pow(Math.tan(Math.PI / 4 + P / 2), c), L = c * (h - o);
|
|
35
|
+
return [p * Math.sin(L), -(s - p * Math.cos(L))];
|
|
36
|
+
},
|
|
37
|
+
unproject(r) {
|
|
38
|
+
const h = r[0] ?? 0, P = s + (r[1] ?? 0), p = Math.sign(c) * Math.sqrt(h * h + P * P), L = Math.atan2(h, Math.abs(P)) * Math.sign(P), j = 2 * Math.atan(Math.pow(i / p, 1 / c)) - Math.PI / 2;
|
|
39
|
+
return [(L / c + o) * b, j * b];
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const I = {
|
|
44
|
+
"us-states": { centerLon: -96, centerLat: 37, standardParallel1: 33, standardParallel2: 45 },
|
|
45
|
+
"europe-countries": { centerLon: 15, centerLat: 52, standardParallel1: 43, standardParallel2: 62 },
|
|
46
|
+
"americas-countries": { centerLon: -80, centerLat: 10, standardParallel1: -20, standardParallel2: 40 },
|
|
47
|
+
"asia-countries": { centerLon: 90, centerLat: 35, standardParallel1: 20, standardParallel2: 50 },
|
|
48
|
+
"africa-countries": { centerLon: 20, centerLat: 0, standardParallel1: -10, standardParallel2: 20 }
|
|
49
|
+
}, A = /* @__PURE__ */ new Set(["world-countries", "world-continents", "world-regions"]);
|
|
50
|
+
function R(l) {
|
|
51
|
+
if (A.has(l)) {
|
|
52
|
+
const e = w[l] ?? [0, 0];
|
|
53
|
+
return f(e[0]);
|
|
54
|
+
}
|
|
55
|
+
const M = I[l];
|
|
56
|
+
return m(M || { centerLon: 0, centerLat: 0, standardParallel1: -15, standardParallel2: 15 });
|
|
57
|
+
}
|
|
58
|
+
const g = f();
|
|
59
|
+
export {
|
|
60
|
+
m as createLambertProjection,
|
|
61
|
+
R as createMapProjection,
|
|
62
|
+
f as createNaturalEarthProjection,
|
|
63
|
+
g as naturalEarthProjection
|
|
64
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { registerMap } from 'echarts';
|
|
2
|
+
type EChartsModule = {
|
|
3
|
+
registerMap: typeof registerMap;
|
|
4
|
+
};
|
|
5
|
+
/** All available map names. This is the single source of truth for map registration. */
|
|
6
|
+
export declare const MAP_NAMES: readonly ["world-countries", "world-continents", "world-regions", "us-states", "europe-countries", "americas-countries", "asia-countries", "africa-countries"];
|
|
7
|
+
export type MapName = (typeof MAP_NAMES)[number];
|
|
8
|
+
export declare function isMapName(value: string): value is MapName;
|
|
9
|
+
/**
|
|
10
|
+
* Extracts the map name required by chart options, if any.
|
|
11
|
+
* Looks at `series[].map` and `geo[].map` properties.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getRequiredMapName(option: unknown): string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Registers a named map GeoJSON with ECharts (async, for client-side use).
|
|
16
|
+
* Uses dynamic import so each map's GeoJSON is code-split into its own chunk.
|
|
17
|
+
*/
|
|
18
|
+
export declare function registerMapAsync(echarts: EChartsModule, mapName: string): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Registers a named map GeoJSON with ECharts (sync, for server-side use).
|
|
21
|
+
* Accepts pre-loaded GeoJSON to avoid async in synchronous render paths.
|
|
22
|
+
*/
|
|
23
|
+
export declare function registerMapSync(echarts: EChartsModule, mapName: string, geoJSON: unknown): void;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const s = /* @__PURE__ */ new Set(), a = [
|
|
2
|
+
"world-countries",
|
|
3
|
+
"world-continents",
|
|
4
|
+
"world-regions",
|
|
5
|
+
"us-states",
|
|
6
|
+
"europe-countries",
|
|
7
|
+
"americas-countries",
|
|
8
|
+
"asia-countries",
|
|
9
|
+
"africa-countries"
|
|
10
|
+
], u = new Set(a);
|
|
11
|
+
function f(t) {
|
|
12
|
+
return u.has(t);
|
|
13
|
+
}
|
|
14
|
+
const p = {
|
|
15
|
+
"world-countries": () => import("./geo/world-countries.json.js").then((t) => t.default),
|
|
16
|
+
"world-continents": () => import("./geo/world-continents.json.js").then((t) => t.default),
|
|
17
|
+
"world-regions": () => import("./geo/world-regions.json.js").then((t) => t.default),
|
|
18
|
+
"us-states": () => import("./geo/us-states.json.js").then((t) => t.default),
|
|
19
|
+
"europe-countries": () => import("./geo/europe-countries.json.js").then((t) => t.default),
|
|
20
|
+
"americas-countries": () => import("./geo/americas-countries.json.js").then((t) => t.default),
|
|
21
|
+
"asia-countries": () => import("./geo/asia-countries.json.js").then((t) => t.default),
|
|
22
|
+
"africa-countries": () => import("./geo/africa-countries.json.js").then((t) => t.default)
|
|
23
|
+
};
|
|
24
|
+
function d(t) {
|
|
25
|
+
if (!t || typeof t != "object") return;
|
|
26
|
+
const e = t;
|
|
27
|
+
if (e.geo) {
|
|
28
|
+
const o = Array.isArray(e.geo) ? e.geo : [e.geo];
|
|
29
|
+
for (const n of o)
|
|
30
|
+
if (n && typeof n == "object") {
|
|
31
|
+
const i = n.map;
|
|
32
|
+
if (typeof i == "string") return i;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const r = e.series;
|
|
36
|
+
if (!r) return;
|
|
37
|
+
const c = Array.isArray(r) ? r : [r];
|
|
38
|
+
for (const o of c)
|
|
39
|
+
if (o && typeof o == "object" && o.type === "map") {
|
|
40
|
+
const n = o.map;
|
|
41
|
+
if (typeof n == "string") return n;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function g(t, e) {
|
|
45
|
+
if (s.has(e)) return;
|
|
46
|
+
if (!f(e)) {
|
|
47
|
+
console.warn(`Unknown map name: "${e}". Available maps: ${a.join(", ")}`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const r = await p[e]();
|
|
51
|
+
t.registerMap(e, r), s.add(e);
|
|
52
|
+
}
|
|
53
|
+
function l(t, e, r) {
|
|
54
|
+
s.has(e) || (t.registerMap(e, r), s.add(e));
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
a as MAP_NAMES,
|
|
58
|
+
d as getRequiredMapName,
|
|
59
|
+
f as isMapName,
|
|
60
|
+
g as registerMapAsync,
|
|
61
|
+
l as registerMapSync
|
|
62
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EChartsOption } from 'echarts';
|
|
2
2
|
/**
|
|
3
|
-
* Removes problematic interactive components from chart options
|
|
4
|
-
*
|
|
3
|
+
* Removes problematic interactive components from chart options
|
|
4
|
+
* and applies sensible defaults for map charts.
|
|
5
5
|
*/
|
|
6
6
|
export declare function sanitizeChartOptions(option: EChartsOption): EChartsOption;
|
|
@@ -1,9 +1,32 @@
|
|
|
1
|
-
const
|
|
2
|
-
function
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const i = /* @__PURE__ */ new Set(["axisPointer"]);
|
|
2
|
+
function o(t) {
|
|
3
|
+
const e = t.series;
|
|
4
|
+
return e ? (Array.isArray(e) ? e : [e]).some((n) => typeof n == "object" && "type" in n && n.type === "map") : !1;
|
|
5
|
+
}
|
|
6
|
+
function a(t) {
|
|
7
|
+
const e = t.name ?? "", r = t.value;
|
|
8
|
+
if (r == null || typeof r == "number" && isNaN(r))
|
|
9
|
+
return e;
|
|
10
|
+
const n = typeof r == "number" ? r.toLocaleString(void 0, { maximumFractionDigits: 2 }) : r;
|
|
11
|
+
return `${e}: ${n}`;
|
|
12
|
+
}
|
|
13
|
+
function s(t) {
|
|
14
|
+
if (!o(t)) return t;
|
|
15
|
+
const e = t.tooltip ?? {};
|
|
16
|
+
return e.formatter ? t : {
|
|
17
|
+
...t,
|
|
18
|
+
tooltip: {
|
|
19
|
+
...e,
|
|
20
|
+
formatter: a
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function f(t) {
|
|
25
|
+
const e = Object.fromEntries(
|
|
26
|
+
Object.entries(t).filter(([r]) => !i.has(r))
|
|
5
27
|
);
|
|
28
|
+
return s(e);
|
|
6
29
|
}
|
|
7
30
|
export {
|
|
8
|
-
|
|
31
|
+
f as sanitizeChartOptions
|
|
9
32
|
};
|
|
@@ -1,56 +1,58 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useRef as
|
|
2
|
+
import { useRef as f, useState as T, useEffect as I, useCallback as S } from "react";
|
|
3
3
|
import { calculateTitleLayout as m } from "./calculate-title-layout.js";
|
|
4
4
|
import { replaceFormatterTokens as O } from "./formatters/replace-formatter-tokens.js";
|
|
5
5
|
import { mergeThemeGraphicIntoOptions as R } from "./merge-theme-graphic-into-options.js";
|
|
6
|
+
import { getRequiredMapName as j, registerMapAsync as x } from "./register-map.js";
|
|
6
7
|
import { sanitizeChartOptions as w } from "./sanitize-chart-options.js";
|
|
7
8
|
const W = /* @__PURE__ */ new Set();
|
|
8
|
-
function
|
|
9
|
-
const
|
|
10
|
-
y.current =
|
|
11
|
-
const s =
|
|
9
|
+
function B({ options: i, theme: t }) {
|
|
10
|
+
const e = f(null), o = f(null), y = f(i), C = f(t?.config), z = f(t?.config.graphic), [b, v] = T(!1);
|
|
11
|
+
y.current = i, C.current = t?.config, z.current = t?.config.graphic, I(() => {
|
|
12
|
+
const s = e.current;
|
|
12
13
|
if (!s) return;
|
|
13
|
-
let r = !0,
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
if (!
|
|
17
|
-
const p =
|
|
18
|
-
|
|
14
|
+
let r = !0, n;
|
|
15
|
+
const d = new ResizeObserver((c) => {
|
|
16
|
+
const u = c[0], a = o.current;
|
|
17
|
+
if (!u || !a) return;
|
|
18
|
+
const p = u.contentRect.width, g = w(y.current), l = O(g), h = m(l, p, C.current);
|
|
19
|
+
a.setOption(R(h, z.current), {
|
|
19
20
|
replaceMerge: ["graphic"]
|
|
20
|
-
}),
|
|
21
|
+
}), a.resize();
|
|
21
22
|
});
|
|
22
|
-
return
|
|
23
|
+
return d.observe(s), (async () => {
|
|
23
24
|
try {
|
|
24
|
-
const
|
|
25
|
-
if (!r || !
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
const c = await import("echarts");
|
|
26
|
+
if (!r || !e.current) return;
|
|
27
|
+
const u = j(i);
|
|
28
|
+
if (u && await x(c, u), t && !W.has(t.name)) {
|
|
29
|
+
const { graphic: F, ...M } = t.config;
|
|
30
|
+
c.registerTheme(t.name, M), W.add(t.name);
|
|
29
31
|
}
|
|
30
|
-
const a =
|
|
31
|
-
a && a.dispose(),
|
|
32
|
+
const a = c.getInstanceByDom(e.current);
|
|
33
|
+
a && a.dispose(), n = c.init(e.current, t?.name, {
|
|
32
34
|
renderer: "svg"
|
|
33
|
-
}),
|
|
34
|
-
const
|
|
35
|
-
|
|
35
|
+
}), o.current = n;
|
|
36
|
+
const p = e.current.clientWidth, g = w(i), l = O(g), h = m(l, p, t?.config);
|
|
37
|
+
n.setOption(R(h, t?.config.graphic), {
|
|
36
38
|
replaceMerge: ["graphic"]
|
|
37
|
-
}),
|
|
38
|
-
} catch (
|
|
39
|
-
console.error("Failed to load echarts",
|
|
39
|
+
}), n.resize(), v(!0);
|
|
40
|
+
} catch (c) {
|
|
41
|
+
console.error("Failed to load echarts", c);
|
|
40
42
|
}
|
|
41
43
|
})(), () => {
|
|
42
|
-
r = !1,
|
|
44
|
+
r = !1, d.disconnect(), n && n.dispose(), o.current = null, v(!1);
|
|
43
45
|
};
|
|
44
|
-
}, [t,
|
|
45
|
-
if (!b || !
|
|
46
|
-
const s =
|
|
47
|
-
|
|
46
|
+
}, [t, i]), I(() => {
|
|
47
|
+
if (!b || !o.current || !e.current) return;
|
|
48
|
+
const s = e.current.clientWidth, r = w(i), n = O(r), d = m(n, s, t?.config);
|
|
49
|
+
o.current.setOption(R(d, t?.config.graphic), {
|
|
48
50
|
replaceMerge: ["graphic"]
|
|
49
51
|
});
|
|
50
|
-
}, [b,
|
|
52
|
+
}, [b, i, t?.config, t?.config.graphic]);
|
|
51
53
|
const k = S(async () => {
|
|
52
|
-
if (!
|
|
53
|
-
const s =
|
|
54
|
+
if (!o.current) return;
|
|
55
|
+
const s = o.current.getDataURL({
|
|
54
56
|
type: "png",
|
|
55
57
|
pixelRatio: 2,
|
|
56
58
|
backgroundColor: "#fff"
|
|
@@ -58,10 +60,10 @@ function L({ options: o, theme: t }) {
|
|
|
58
60
|
r.download = `chart-${(/* @__PURE__ */ new Date()).toISOString()}.png`, r.href = s, document.body.appendChild(r), r.click(), document.body.removeChild(r);
|
|
59
61
|
}, []);
|
|
60
62
|
return {
|
|
61
|
-
containerRef:
|
|
63
|
+
containerRef: e,
|
|
62
64
|
downloadChart: k
|
|
63
65
|
};
|
|
64
66
|
}
|
|
65
67
|
export {
|
|
66
|
-
|
|
68
|
+
B as useChartInstance
|
|
67
69
|
};
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
type UseScrollToBottomOptions = {
|
|
2
2
|
readonly threshold?: number;
|
|
3
3
|
};
|
|
4
|
-
|
|
5
|
-
containerRef:
|
|
6
|
-
endRef:
|
|
4
|
+
type UseScrollToBottomReturn = {
|
|
5
|
+
containerRef: React.RefObject<HTMLDivElement | null>;
|
|
6
|
+
endRef: React.RefObject<HTMLDivElement | null>;
|
|
7
7
|
isAtBottom: boolean;
|
|
8
8
|
scrollToBottom: (behavior?: ScrollBehavior) => void;
|
|
9
9
|
onViewportEnter: () => void;
|
|
10
10
|
onViewportLeave: () => void;
|
|
11
11
|
};
|
|
12
|
+
export declare function useScrollToBottom({ threshold }?: UseScrollToBottomOptions): UseScrollToBottomReturn;
|
|
12
13
|
export {};
|
|
@@ -1,33 +1,51 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import * as d from "echarts";
|
|
2
|
+
import { writeFileSync as w, mkdtempSync as N } from "node:fs";
|
|
3
|
+
import { tmpdir as T } from "node:os";
|
|
4
|
+
import y from "node:path";
|
|
5
|
+
import { Image as C, Canvas as S, FontLibrary as G } from "skia-canvas";
|
|
6
|
+
import { calculateTitleLayout as F } from "../components/echarts-renderer/calculate-title-layout.js";
|
|
7
|
+
import { isChartTheme as b } from "../components/echarts-renderer/chart-theme.js";
|
|
8
|
+
import { replaceFormatterTokens as J } from "../components/echarts-renderer/formatters/replace-formatter-tokens.js";
|
|
9
|
+
import A from "../components/echarts-renderer/geo/africa-countries.json.js";
|
|
10
|
+
import I from "../components/echarts-renderer/geo/americas-countries.json.js";
|
|
11
|
+
import j from "../components/echarts-renderer/geo/asia-countries.json.js";
|
|
12
|
+
import E from "../components/echarts-renderer/geo/europe-countries.json.js";
|
|
13
|
+
import M from "../components/echarts-renderer/geo/us-states.json.js";
|
|
14
|
+
import R from "../components/echarts-renderer/geo/world-continents.json.js";
|
|
15
|
+
import P from "../components/echarts-renderer/geo/world-countries.json.js";
|
|
16
|
+
import k from "../components/echarts-renderer/geo/world-regions.json.js";
|
|
17
|
+
import { mergeThemeGraphicIntoOptions as v } from "../components/echarts-renderer/merge-theme-graphic-into-options.js";
|
|
18
|
+
import { getRequiredMapName as x, isMapName as D, registerMapSync as _ } from "../components/echarts-renderer/register-map.js";
|
|
19
|
+
const $ = {
|
|
20
|
+
"world-countries": P,
|
|
21
|
+
"world-continents": R,
|
|
22
|
+
"world-regions": k,
|
|
23
|
+
"us-states": M,
|
|
24
|
+
"europe-countries": E,
|
|
25
|
+
"americas-countries": I,
|
|
26
|
+
"asia-countries": j,
|
|
27
|
+
"africa-countries": A
|
|
28
|
+
};
|
|
29
|
+
globalThis.Image = C;
|
|
30
|
+
const g = /* @__PURE__ */ new Set();
|
|
31
|
+
let f;
|
|
32
|
+
function z() {
|
|
33
|
+
return f || (f = N(y.join(T(), "chart-fonts-"))), f;
|
|
16
34
|
}
|
|
17
|
-
function
|
|
35
|
+
function L(r) {
|
|
18
36
|
for (const t of r)
|
|
19
|
-
if (!
|
|
37
|
+
if (!g.has(t.family))
|
|
20
38
|
try {
|
|
21
|
-
const e =
|
|
22
|
-
const
|
|
23
|
-
return
|
|
39
|
+
const e = z(), o = t.data.map((a, m) => {
|
|
40
|
+
const n = y.join(e, `${t.family}-${String(m)}.ttf`);
|
|
41
|
+
return w(n, a), n;
|
|
24
42
|
});
|
|
25
|
-
|
|
43
|
+
G.use(t.family, o), g.add(t.family);
|
|
26
44
|
} catch (e) {
|
|
27
45
|
console.warn(`Failed to register ${t.family} fonts, charts will use fallback font:`, e);
|
|
28
46
|
}
|
|
29
47
|
}
|
|
30
|
-
const
|
|
48
|
+
const V = /* @__PURE__ */ new Set([
|
|
31
49
|
"aria",
|
|
32
50
|
// Tries to set DOM attributes which node-canvas doesn't implement
|
|
33
51
|
"toolbox",
|
|
@@ -39,41 +57,52 @@ const P = /* @__PURE__ */ new Set([
|
|
|
39
57
|
"axisPointer"
|
|
40
58
|
// Crosshair on hover
|
|
41
59
|
]);
|
|
42
|
-
function
|
|
60
|
+
function q(r) {
|
|
43
61
|
if (!r || typeof r != "object" || Array.isArray(r))
|
|
44
62
|
return { animation: !1 };
|
|
45
63
|
const t = Object.fromEntries(
|
|
46
|
-
Object.entries(r).filter(([e]) => !
|
|
64
|
+
Object.entries(r).filter(([e]) => !V.has(e))
|
|
47
65
|
);
|
|
48
66
|
return t.animation = !1, t;
|
|
49
67
|
}
|
|
50
|
-
function
|
|
68
|
+
function B(r) {
|
|
69
|
+
const t = new S(r.width, r.height);
|
|
70
|
+
return t.getContext("2d").drawImage(r, 0, 0), t;
|
|
71
|
+
}
|
|
72
|
+
function U({
|
|
51
73
|
option: r,
|
|
52
74
|
theme: t,
|
|
53
75
|
fonts: e,
|
|
54
|
-
width:
|
|
55
|
-
height:
|
|
56
|
-
devicePixelRatio:
|
|
76
|
+
width: o = 800,
|
|
77
|
+
height: a = 600,
|
|
78
|
+
devicePixelRatio: m = 2
|
|
57
79
|
}) {
|
|
58
|
-
e?.length &&
|
|
59
|
-
let
|
|
80
|
+
e?.length && L(e);
|
|
81
|
+
let n, s, p;
|
|
60
82
|
if (t) {
|
|
61
|
-
|
|
62
|
-
const { graphic:
|
|
63
|
-
|
|
83
|
+
s = b(t) ? t.config : t, p = s.graphic;
|
|
84
|
+
const { graphic: h, ...c } = s;
|
|
85
|
+
n = c;
|
|
64
86
|
}
|
|
65
|
-
const
|
|
87
|
+
const i = x(r);
|
|
88
|
+
i && (D(i) ? _(d, i, $[i]) : console.warn(`Unknown map name for server-side rendering: "${i}"`));
|
|
89
|
+
const l = new S(o, a), u = d.init(l, n, {
|
|
66
90
|
renderer: "canvas",
|
|
67
|
-
devicePixelRatio:
|
|
68
|
-
width:
|
|
69
|
-
height:
|
|
70
|
-
})
|
|
71
|
-
|
|
91
|
+
devicePixelRatio: m,
|
|
92
|
+
width: o,
|
|
93
|
+
height: a
|
|
94
|
+
});
|
|
95
|
+
try {
|
|
96
|
+
const h = q(r), c = J(h), O = F(c, o, s);
|
|
97
|
+
return u.setOption(v(O, p), { replaceMerge: ["graphic"] }), B(l);
|
|
98
|
+
} finally {
|
|
99
|
+
u.dispose();
|
|
100
|
+
}
|
|
72
101
|
}
|
|
73
|
-
function
|
|
74
|
-
return
|
|
102
|
+
function ft(r) {
|
|
103
|
+
return U(r).toBufferSync("png");
|
|
75
104
|
}
|
|
76
105
|
export {
|
|
77
|
-
|
|
78
|
-
|
|
106
|
+
U as renderChartToCanvas,
|
|
107
|
+
ft as renderChartToImage
|
|
79
108
|
};
|