mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-10-24 08:54:27 +00:00
feat: Web 版独立入口 + SQLite 持久化存储
- 拆分 main.go 为 main_cli.go 和 main_web.go,Web 版不再包含 CLI 参数解析 - Web 版直接启动 HTTP 服务,通过 -port/-lang 控制,无需 -web flag - 结果存储从内存 map 替换为 SQLite(modernc.org/sqlite,纯 Go 零 CGO) - 数据库文件 ~/.fscan/results.db,进程重启后结果不丢失 - 修复结果分布面板跟随 tab 筛选联动的问题
This commit is contained in:
1 parent
d0295dcb92
commit
e0468ecd35
12 files changed
+285
-131
No files matched your search
@@ -64,7 +64,7 @@ build-web: build-ui
|
||||
@echo "$(BLUE)构建Web版本...$(NC)"
|
||||
$(GO) build -tags web -ldflags="-s -w" -trimpath -o $(BINARY_NAME)-web .
|
||||
@echo "$(GREEN)✓ 构建完成: $(BINARY_NAME)-web$(NC)"
|
||||
@echo "$(BLUE)提示: 运行 ./$(BINARY_NAME)-web -web 启动Web界面$(NC)"
|
||||
@echo "$(BLUE)提示: 运行 ./$(BINARY_NAME)-web 启动Web界面(默认端口 10240)$(NC)"
|
||||
|
||||
## build-ui: 构建前端(需要Node.js和npm)
|
||||
build-ui:
|
||||
|
||||
+4
-15
@@ -2,19 +2,8 @@
|
||||
|
||||
package common
|
||||
|
||||
import (
|
||||
"flag"
|
||||
// WebMode Web版本始终为true
|
||||
const WebMode = true
|
||||
|
||||
"github.com/shadow1ng/fscan/common/i18n"
|
||||
)
|
||||
|
||||
// WebMode 表示是否启动Web管理界面
|
||||
var WebMode bool
|
||||
|
||||
// WebPort Web服务器端口
|
||||
var WebPort int
|
||||
|
||||
func init() {
|
||||
flag.BoolVar(&WebMode, "web", false, i18n.GetText("flag_web_mode"))
|
||||
flag.IntVar(&WebPort, "webport", 10240, i18n.GetText("flag_web_port"))
|
||||
}
|
||||
// WebPort 不再使用,端口由 main_web.go 的 -port 参数控制
|
||||
var WebPort = 0
|
||||
@@ -1,6 +1,6 @@
|
||||
module github.com/shadow1ng/fscan
|
||||
|
||||
go 1.20
|
||||
go 1.25.0
|
||||
|
||||
require (
|
||||
github.com/fatih/color v1.18.0
|
||||
@@ -24,13 +24,14 @@ require (
|
||||
go.ciq.dev/go-rsync v0.0.0-20240304021629-0a3bb196e6d1
|
||||
golang.org/x/crypto v0.31.0
|
||||
golang.org/x/net v0.32.0
|
||||
golang.org/x/sys v0.28.0
|
||||
golang.org/x/sys v0.42.0
|
||||
golang.org/x/term v0.27.0
|
||||
golang.org/x/text v0.21.0
|
||||
google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c
|
||||
google.golang.org/protobuf v1.28.1
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
modernc.org/sqlite v1.52.0
|
||||
)
|
||||
|
||||
require (
|
||||
@@ -38,6 +39,7 @@ require (
|
||||
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect
|
||||
github.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa // indirect
|
||||
github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 // indirect
|
||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||
github.com/geoffgarside/ber v1.1.0 // indirect
|
||||
github.com/go-asn1-ber/asn1-ber v1.5.7 // indirect
|
||||
github.com/hashicorp/errwrap v1.0.0 // indirect
|
||||
@@ -53,9 +55,14 @@ require (
|
||||
github.com/kr/pretty v0.3.0 // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/ncruces/go-strftime v1.0.0 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
||||
github.com/rogpeppe/go-internal v1.12.0 // indirect
|
||||
github.com/stoewer/go-strcase v1.2.0 // indirect
|
||||
golang.org/x/sync v0.11.0 // indirect
|
||||
golang.org/x/sync v0.20.0 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
|
||||
modernc.org/libc v1.72.3 // indirect
|
||||
modernc.org/mathutil v1.7.1 // indirect
|
||||
modernc.org/memory v1.11.0 // indirect
|
||||
)
|
||||
@@ -5,6 +5,7 @@ github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 h1:mFRzDkZVAjdal+
|
||||
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
|
||||
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||
github.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa h1:LHTHcTQiSGT7VVbI0o4wBRNQIgn917usHWOd6VAffYI=
|
||||
github.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa/go.mod h1:cEWa1LVoE5KvSD9ONXsZrj0z6KqySlCCNKHlLzbqAt4=
|
||||
github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves=
|
||||
@@ -16,6 +17,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
@@ -50,6 +53,8 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs=
|
||||
github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=
|
||||
@@ -65,6 +70,8 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9
|
||||
github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
|
||||
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
|
||||
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
||||
github.com/hirochachacha/go-smb2 v1.1.0 h1:b6hs9qKIql9eVXAiN0M2wSFY5xnhbHAQoCwRKbaRTZI=
|
||||
github.com/hirochachacha/go-smb2 v1.1.0/go.mod h1:8F1A4d5EZzrGu5R7PU163UcMRDJQl4FtcxjBfsY8TZE=
|
||||
github.com/huin/asn1ber v0.0.0-20120622192748-af09f62e6358 h1:hVXNJ57IHkOA8FBq80UG263MEBwNUMfS9c82J2QE5UQ=
|
||||
@@ -108,6 +115,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed h1:FI2NIv6fpef6BQl2u3IZX/Cj20tfypRF4yd+uaHOMtI=
|
||||
github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0=
|
||||
github.com/ncruces/go-strftime v1.0.0 h1:HMFp8mLCTPp341M/ZnA4qaf7ZlsbTc+miZjCLOFAw7w=
|
||||
github.com/ncruces/go-strftime v1.0.0/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
||||
github.com/nicksnyder/go-i18n/v2 v2.4.0 h1:3IcvPOAvnCKwNm0TB0dLDTuawWEj+ax/RERNC+diLMM=
|
||||
github.com/nicksnyder/go-i18n/v2 v2.4.0/go.mod h1:nxYSZE9M0bf3Y70gPQjN9ha7XNHX7gMc814+6wVyEI4=
|
||||
github.com/panjf2000/ants/v2 v2.11.3 h1:AfI0ngBoXJmYOpDh9m516vjqoUu2sLrIVgppI9TZVpg=
|
||||
@@ -117,6 +126,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
||||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||
@@ -133,6 +144,7 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho=
|
||||
github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
@@ -159,6 +171,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=
|
||||
golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@@ -187,8 +201,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
|
||||
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
|
||||
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
@@ -204,8 +218,9 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
|
||||
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
|
||||
golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
@@ -236,6 +251,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
||||
golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
|
||||
golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
@@ -270,3 +287,31 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
modernc.org/cc/v4 v4.28.2 h1:3tQ0lf2ADtoby2EtSP+J7IE2SHwEJdP8ioR59wx7XpY=
|
||||
modernc.org/cc/v4 v4.28.2/go.mod h1:OnovgIhbbMXMu1aISnJ0wvVD1KnW+cAUJkIrAWh+kVI=
|
||||
modernc.org/ccgo/v4 v4.34.0 h1:yRLPFZieg532OT4rp4JFNIVcquwalMX26G95WQDqwCQ=
|
||||
modernc.org/ccgo/v4 v4.34.0/go.mod h1:AS5WYMyBakQ+fhsHhtP8mWB82KTGPkNNJDGfGQCe0/A=
|
||||
modernc.org/fileutil v1.4.0 h1:j6ZzNTftVS054gi281TyLjHPp6CPHr2KCxEXjEbD6SM=
|
||||
modernc.org/fileutil v1.4.0/go.mod h1:EqdKFDxiByqxLk8ozOxObDSfcVOv/54xDs/DUHdvCUU=
|
||||
modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI=
|
||||
modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito=
|
||||
modernc.org/gc/v3 v3.1.2 h1:ZtDCnhonXSZexk/AYsegNRV1lJGgaNZJuKjJSWKyEqo=
|
||||
modernc.org/gc/v3 v3.1.2/go.mod h1:HFK/6AGESC7Ex+EZJhJ2Gni6cTaYpSMmU/cT9RmlfYY=
|
||||
modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks=
|
||||
modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI=
|
||||
modernc.org/libc v1.72.3 h1:ZnDF4tXn4NBXFutMMQC4vtbTFSXhhKzR73fv0beZEAU=
|
||||
modernc.org/libc v1.72.3/go.mod h1:dn0dZNnnn1clLyvRxLxYExxiKRZIRENOfqQ8XEeg4Qs=
|
||||
modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=
|
||||
modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=
|
||||
modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=
|
||||
modernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw=
|
||||
modernc.org/opt v0.2.0 h1:tGyef5ApycA7FSEOMraay9SaTk5zmbx7Tu+cJs4QKZg=
|
||||
modernc.org/opt v0.2.0/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=
|
||||
modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=
|
||||
modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=
|
||||
modernc.org/sqlite v1.52.0 h1:p4dhYh2tXZCiyaqHwRVJDjIGKWyXayiQpThxgDzJaxo=
|
||||
modernc.org/sqlite v1.52.0/go.mod h1:tcNzv5p84E0skkmJn038y+hWJbLQXQqEnQfeh5r2JLM=
|
||||
modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=
|
||||
modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=
|
||||
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
|
||||
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
||||
+2
-10
@@ -1,3 +1,5 @@
|
||||
//go:build !web
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
@@ -10,7 +12,6 @@ import (
|
||||
"github.com/shadow1ng/fscan/common/debug"
|
||||
"github.com/shadow1ng/fscan/common/i18n"
|
||||
"github.com/shadow1ng/fscan/core"
|
||||
"github.com/shadow1ng/fscan/web"
|
||||
|
||||
// 导入统一插件系统
|
||||
_ "github.com/shadow1ng/fscan/plugins/local"
|
||||
@@ -33,15 +34,6 @@ func main() {
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Web模式:启动Web服务器
|
||||
if common.WebMode {
|
||||
if err := web.StartServer(common.WebPort); err != nil {
|
||||
common.LogError(err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 检查参数互斥性
|
||||
if err := common.ValidateExclusiveParams(&info); err != nil {
|
||||
common.LogError(i18n.Tr("error_generic", err))
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
//go:build web
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/shadow1ng/fscan/common"
|
||||
"github.com/shadow1ng/fscan/common/i18n"
|
||||
"github.com/shadow1ng/fscan/web"
|
||||
|
||||
// 导入统一插件系统
|
||||
_ "github.com/shadow1ng/fscan/plugins/local"
|
||||
_ "github.com/shadow1ng/fscan/plugins/services"
|
||||
_ "github.com/shadow1ng/fscan/plugins/web"
|
||||
)
|
||||
|
||||
func main() {
|
||||
port := flag.Int("port", 10240, "Web server listen port")
|
||||
lang := flag.String("lang", "zh", "Language (zh/en)")
|
||||
flag.Parse()
|
||||
|
||||
i18n.SetLanguage(*lang)
|
||||
|
||||
fmt.Printf("fscan web v%s\n", common.GetVersion())
|
||||
|
||||
if err := web.StartServer(*port); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
Generated
+24
-5
@@ -21,6 +21,7 @@
|
||||
"@radix-ui/react-switch": "^1.2.6",
|
||||
"@radix-ui/react-tabs": "^1.1.13",
|
||||
"@radix-ui/react-tooltip": "^1.2.8",
|
||||
"@rollup/rollup-linux-x64-gnu": "^4.61.1",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
"i18next": "^25.7.3",
|
||||
@@ -2496,15 +2497,16 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||
"version": "4.54.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz",
|
||||
"integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==",
|
||||
"version": "4.61.1",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.1.tgz",
|
||||
"integrity": "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
]
|
||||
@@ -5318,6 +5320,23 @@
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||
"version": "4.54.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz",
|
||||
"integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/run-parallel": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
"@radix-ui/react-switch": "^1.2.6",
|
||||
"@radix-ui/react-tabs": "^1.1.13",
|
||||
"@radix-ui/react-tooltip": "^1.2.8",
|
||||
"@rollup/rollup-linux-x64-gnu": "^4.61.1",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
"i18next": "^25.7.3",
|
||||
|
||||
@@ -53,14 +53,14 @@ export function ResultsPage() {
|
||||
const fetchResults = useCallback(async () => {
|
||||
setLoading(true);
|
||||
try {
|
||||
const data = await getResults(filter === 'all' ? undefined : filter);
|
||||
const data = await getResults();
|
||||
setResults(data.items);
|
||||
} catch (err) {
|
||||
console.error('Failed to fetch results:', err);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
}, [filter]);
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
fetchResults();
|
||||
|
||||
+146
-78
@@ -3,15 +3,19 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"encoding/csv"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/shadow1ng/fscan/common/i18n"
|
||||
_ "modernc.org/sqlite"
|
||||
)
|
||||
|
||||
// ResultItem 扫描结果项
|
||||
@@ -24,26 +28,66 @@ type ResultItem struct {
|
||||
Details interface{} `json:"details,omitempty"`
|
||||
}
|
||||
|
||||
// ResultStore 结果存储
|
||||
// ResultStore SQLite 结果存储
|
||||
type ResultStore struct {
|
||||
mu sync.RWMutex
|
||||
items []ResultItem
|
||||
counter int64
|
||||
stats ScanStats
|
||||
// 去重
|
||||
seen map[string]bool
|
||||
// service 类型按 target 索引,用于更新
|
||||
serviceIndex map[string]int
|
||||
mu sync.RWMutex
|
||||
db *sql.DB
|
||||
}
|
||||
|
||||
// 全局结果存储
|
||||
var globalResultStore = &ResultStore{
|
||||
items: make([]ResultItem, 0),
|
||||
seen: make(map[string]bool),
|
||||
serviceIndex: make(map[string]int),
|
||||
var globalResultStore *ResultStore
|
||||
|
||||
func init() {
|
||||
store, err := NewResultStore()
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("failed to init result store: %v", err))
|
||||
}
|
||||
globalResultStore = store
|
||||
}
|
||||
|
||||
// Add 添加结果,返回格式化后的结果项(去重,重复则返回nil)
|
||||
// dbPath 返回数据库文件路径
|
||||
func dbPath() string {
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
home = "."
|
||||
}
|
||||
dir := filepath.Join(home, ".fscan")
|
||||
_ = os.MkdirAll(dir, 0755)
|
||||
return filepath.Join(dir, "results.db")
|
||||
}
|
||||
|
||||
// NewResultStore 创建 SQLite 存储
|
||||
func NewResultStore() (*ResultStore, error) {
|
||||
db, err := sql.Open("sqlite", dbPath())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// WAL 模式,提升并发读写
|
||||
if _, err := db.Exec("PRAGMA journal_mode=WAL"); err != nil {
|
||||
db.Close()
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if _, err := db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS results (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
time TEXT NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
target TEXT NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT '',
|
||||
details TEXT NOT NULL DEFAULT '{}',
|
||||
UNIQUE(type, target, status)
|
||||
)
|
||||
`); err != nil {
|
||||
db.Close()
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &ResultStore{db: db}, nil
|
||||
}
|
||||
|
||||
// Add 添加结果(去重,重复返回 nil)
|
||||
func (s *ResultStore) Add(result interface{}) *ResultItem {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
@@ -53,10 +97,10 @@ func (s *ResultStore) Add(result interface{}) *ResultItem {
|
||||
Details: result,
|
||||
}
|
||||
|
||||
// 根据结果类型分类
|
||||
// 解析结果字段
|
||||
if m, ok := result.(map[string]interface{}); ok {
|
||||
if t, ok := m["type"].(string); ok {
|
||||
item.Type = strings.ToLower(t) // 统一转小写
|
||||
item.Type = strings.ToLower(t)
|
||||
}
|
||||
if target, ok := m["target"].(string); ok {
|
||||
item.Target = target
|
||||
@@ -64,64 +108,58 @@ func (s *ResultStore) Add(result interface{}) *ResultItem {
|
||||
if status, ok := m["status"].(string); ok {
|
||||
item.Status = status
|
||||
}
|
||||
// 从details提取更多信息
|
||||
if details, ok := m["details"].(map[string]interface{}); ok {
|
||||
item.Details = details
|
||||
// 组合 target:port
|
||||
if port, ok := details["port"]; ok {
|
||||
if item.Target != "" && !strings.Contains(item.Target, ":") {
|
||||
item.Target = fmt.Sprintf("%s:%v", item.Target, port)
|
||||
}
|
||||
}
|
||||
// 构建更有意义的status
|
||||
item.Status = buildStatusFromDetails(item.Type, item.Status, details)
|
||||
}
|
||||
}
|
||||
|
||||
// 生成去重键
|
||||
key := fmt.Sprintf("%s|%s|%s", item.Type, item.Target, item.Status)
|
||||
if s.seen[key] {
|
||||
return nil // 完全重复,不添加
|
||||
}
|
||||
detailsJSON, _ := json.Marshal(item.Details)
|
||||
|
||||
// service/port 类型特殊处理:同一 target 只保留最详细的
|
||||
// service/port 类型:同一 target 只保留最详细的
|
||||
if item.Type == "service" || item.Type == "port" {
|
||||
indexKey := item.Type + "|" + item.Target
|
||||
if idx, exists := s.serviceIndex[indexKey]; exists {
|
||||
oldStatus := s.items[idx].Status
|
||||
// 如果旧的是基础状态,新的更详细,则更新
|
||||
if (oldStatus == "identified" || oldStatus == "open" || oldStatus == "") &&
|
||||
var existID int64
|
||||
var existStatus string
|
||||
err := s.db.QueryRow(
|
||||
"SELECT id, status FROM results WHERE type = ? AND target = ? LIMIT 1",
|
||||
item.Type, item.Target,
|
||||
).Scan(&existID, &existStatus)
|
||||
|
||||
if err == nil {
|
||||
// 已有记录,判断是否需要更新
|
||||
if (existStatus == "identified" || existStatus == "open" || existStatus == "") &&
|
||||
item.Status != "identified" && item.Status != "open" && item.Status != "" {
|
||||
s.items[idx].Status = item.Status
|
||||
s.items[idx].Details = item.Details
|
||||
s.items[idx].Time = item.Time
|
||||
s.seen[key] = true
|
||||
return &s.items[idx]
|
||||
s.db.Exec(
|
||||
"UPDATE results SET status = ?, details = ?, time = ? WHERE id = ?",
|
||||
item.Status, string(detailsJSON), item.Time.Format(time.RFC3339), existID,
|
||||
)
|
||||
item.ID = existID
|
||||
return &item
|
||||
}
|
||||
// 否则跳过(保留已有信息)
|
||||
return nil
|
||||
}
|
||||
// 新记录,记录索引
|
||||
s.serviceIndex[indexKey] = len(s.items)
|
||||
}
|
||||
|
||||
s.seen[key] = true
|
||||
|
||||
// 统计
|
||||
switch item.Type {
|
||||
case "host":
|
||||
s.stats.HostsScanned++
|
||||
case "port":
|
||||
s.stats.PortsScanned++
|
||||
case "service":
|
||||
s.stats.ServicesFound++
|
||||
case "vuln":
|
||||
s.stats.VulnsFound++
|
||||
// 插入(UNIQUE 约束自动去重)
|
||||
res, err := s.db.Exec(
|
||||
"INSERT OR IGNORE INTO results (time, type, target, status, details) VALUES (?, ?, ?, ?, ?)",
|
||||
item.Time.Format(time.RFC3339), item.Type, item.Target, item.Status, string(detailsJSON),
|
||||
)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
s.counter++
|
||||
item.ID = s.counter
|
||||
s.items = append(s.items, item)
|
||||
affected, _ := res.RowsAffected()
|
||||
if affected == 0 {
|
||||
return nil // 重复
|
||||
}
|
||||
|
||||
item.ID, _ = res.LastInsertId()
|
||||
return &item
|
||||
}
|
||||
|
||||
@@ -129,25 +167,71 @@ func (s *ResultStore) Add(result interface{}) *ResultItem {
|
||||
func (s *ResultStore) List() []ResultItem {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
return append([]ResultItem{}, s.items...)
|
||||
|
||||
rows, err := s.db.Query("SELECT id, time, type, target, status, details FROM results ORDER BY id")
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
return scanRows(rows)
|
||||
}
|
||||
|
||||
// Stats 获取统计信息
|
||||
func (s *ResultStore) Stats() ScanStats {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
return s.stats
|
||||
|
||||
var stats ScanStats
|
||||
rows, err := s.db.Query("SELECT type, COUNT(*) FROM results GROUP BY type")
|
||||
if err != nil {
|
||||
return stats
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
for rows.Next() {
|
||||
var t string
|
||||
var count int
|
||||
if rows.Scan(&t, &count) == nil {
|
||||
switch t {
|
||||
case "host":
|
||||
stats.HostsScanned = count
|
||||
case "port":
|
||||
stats.PortsScanned = count
|
||||
case "service":
|
||||
stats.ServicesFound = count
|
||||
case "vuln":
|
||||
stats.VulnsFound = count
|
||||
}
|
||||
}
|
||||
}
|
||||
return stats
|
||||
}
|
||||
|
||||
// Clear 清空结果
|
||||
func (s *ResultStore) Clear() {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
s.items = make([]ResultItem, 0)
|
||||
s.counter = 0
|
||||
s.stats = ScanStats{}
|
||||
s.seen = make(map[string]bool)
|
||||
s.serviceIndex = make(map[string]int)
|
||||
s.db.Exec("DELETE FROM results")
|
||||
}
|
||||
|
||||
// scanRows 解析查询结果
|
||||
func scanRows(rows *sql.Rows) []ResultItem {
|
||||
var items []ResultItem
|
||||
for rows.Next() {
|
||||
var item ResultItem
|
||||
var timeStr, detailsStr string
|
||||
if err := rows.Scan(&item.ID, &timeStr, &item.Type, &item.Target, &item.Status, &detailsStr); err != nil {
|
||||
continue
|
||||
}
|
||||
item.Time, _ = time.Parse(time.RFC3339, timeStr)
|
||||
var details interface{}
|
||||
if json.Unmarshal([]byte(detailsStr), &details) == nil {
|
||||
item.Details = details
|
||||
}
|
||||
items = append(items, item)
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
||||
// ResultHandler 结果处理器
|
||||
@@ -169,7 +253,6 @@ func (h *ResultHandler) List(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// 支持类型过滤
|
||||
typeFilter := r.URL.Query().Get("type")
|
||||
items := h.store.List()
|
||||
|
||||
@@ -190,7 +273,7 @@ func (h *ResultHandler) List(w http.ResponseWriter, r *http.Request) {
|
||||
})
|
||||
}
|
||||
|
||||
// ExportOutput 导出输出结构(与CLI格式一致)
|
||||
// ExportOutput 导出输出结构
|
||||
type ExportOutput struct {
|
||||
ScanTime time.Time `json:"scan_time"`
|
||||
Summary ExportSummary `json:"summary"`
|
||||
@@ -208,7 +291,7 @@ type ExportSummary struct {
|
||||
TotalVulns int `json:"total_vulns"`
|
||||
}
|
||||
|
||||
// Export 导出结果(与CLI格式一致)
|
||||
// Export 导出结果
|
||||
func (h *ResultHandler) Export(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodGet {
|
||||
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
||||
@@ -222,7 +305,6 @@ func (h *ResultHandler) Export(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
items := h.store.List()
|
||||
|
||||
// 按类型分类
|
||||
var hosts, ports, services, vulns []ResultItem
|
||||
for _, item := range items {
|
||||
switch item.Type {
|
||||
@@ -262,7 +344,6 @@ func (h *ResultHandler) Export(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Disposition", "attachment; filename=fscan_results.csv")
|
||||
writer := csv.NewWriter(w)
|
||||
|
||||
// Hosts section
|
||||
if len(hosts) > 0 {
|
||||
writer.Write([]string{"# Hosts"})
|
||||
writer.Write([]string{"Target"})
|
||||
@@ -272,7 +353,6 @@ func (h *ResultHandler) Export(w http.ResponseWriter, r *http.Request) {
|
||||
writer.Write([]string{})
|
||||
}
|
||||
|
||||
// Ports section
|
||||
if len(ports) > 0 {
|
||||
writer.Write([]string{"# Ports"})
|
||||
writer.Write([]string{"Target", "Port", "Status"})
|
||||
@@ -284,7 +364,6 @@ func (h *ResultHandler) Export(w http.ResponseWriter, r *http.Request) {
|
||||
writer.Write([]string{})
|
||||
}
|
||||
|
||||
// Services section
|
||||
if len(services) > 0 {
|
||||
writer.Write([]string{"# Services"})
|
||||
writer.Write([]string{"Target", "Service", "Version", "Banner"})
|
||||
@@ -295,7 +374,6 @@ func (h *ResultHandler) Export(w http.ResponseWriter, r *http.Request) {
|
||||
writer.Write([]string{})
|
||||
}
|
||||
|
||||
// Vulns section
|
||||
if len(vulns) > 0 {
|
||||
writer.Write([]string{"# Vulns"})
|
||||
writer.Write([]string{"Target", "Type", "Details"})
|
||||
@@ -394,19 +472,15 @@ func buildStatusFromDetails(resultType, originalStatus string, details map[strin
|
||||
return "open"
|
||||
|
||||
case "service":
|
||||
// 服务名
|
||||
if name, ok := details["name"].(string); ok && name != "" {
|
||||
parts = append(parts, name)
|
||||
}
|
||||
// 版本
|
||||
if version, ok := details["version"].(string); ok && version != "" {
|
||||
parts = append(parts, version)
|
||||
}
|
||||
// 产品
|
||||
if product, ok := details["product"].(string); ok && product != "" {
|
||||
parts = append(parts, product)
|
||||
}
|
||||
// 系统
|
||||
if os, ok := details["os"].(string); ok && os != "" {
|
||||
parts = append(parts, os)
|
||||
}
|
||||
@@ -415,7 +489,6 @@ func buildStatusFromDetails(resultType, originalStatus string, details map[strin
|
||||
}
|
||||
|
||||
case "vuln":
|
||||
// 统一漏洞显示格式
|
||||
return normalizeVulnStatus(originalStatus, details)
|
||||
|
||||
case "host":
|
||||
@@ -427,7 +500,6 @@ func buildStatusFromDetails(resultType, originalStatus string, details map[strin
|
||||
|
||||
// normalizeVulnStatus 统一漏洞状态显示
|
||||
func normalizeVulnStatus(status string, details map[string]interface{}) string {
|
||||
// 英文转中文映射
|
||||
vulnTranslations := map[string]string{
|
||||
"weak_credential": i18n.GetText("web_result_weak_credential"),
|
||||
"unauthorized": i18n.GetText("unauthorized_access"),
|
||||
@@ -436,21 +508,17 @@ func normalizeVulnStatus(status string, details map[string]interface{}) string {
|
||||
"CVE": i18n.GetText("web_result_vulnerability"),
|
||||
}
|
||||
|
||||
// 处理 "weak_credential: user:pass" 格式
|
||||
if strings.HasPrefix(status, "weak_credential:") {
|
||||
cred := strings.TrimPrefix(status, "weak_credential:")
|
||||
cred = strings.TrimSpace(cred)
|
||||
return i18n.Tr("web_result_weak_credential_detail", cred)
|
||||
}
|
||||
|
||||
// 处理其他已知格式
|
||||
for eng, chn := range vulnTranslations {
|
||||
if strings.Contains(strings.ToLower(status), strings.ToLower(eng)) {
|
||||
// 如果已经是中文格式,直接返回
|
||||
if strings.Contains(status, chn) {
|
||||
return status
|
||||
}
|
||||
// 替换英文部分
|
||||
return strings.Replace(status, eng, chn, 1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ function C$(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&
|
||||
`);for(g=d=0;d<k.length&&!k[d].includes("DetermineComponentFrameRoot");)d++;for(;g<Y.length&&!Y[g].includes("DetermineComponentFrameRoot");)g++;if(d===k.length||g===Y.length)for(d=k.length-1,g=Y.length-1;1<=d&&0<=g&&k[d]!==Y[g];)g--;for(;1<=d&&0<=g;d--,g--)if(k[d]!==Y[g]){if(d!==1||g!==1)do if(d--,g--,0>g||k[d]!==Y[g]){var te=`
|
||||
`+k[d].replace(" at new "," at ");return a.displayName&&te.includes("<anonymous>")&&(te=te.replace("<anonymous>",a.displayName)),te}while(1<=d&&0<=g);break}}}finally{bt=!1,Error.prepareStackTrace=s}return(s=a?a.displayName||a.name:"")?je(s):""}function Cn(a,o){switch(a.tag){case 26:case 27:case 5:return je(a.type);case 16:return je("Lazy");case 13:return a.child!==o&&o!==null?je("Suspense Fallback"):je("Suspense");case 19:return je("SuspenseList");case 0:case 15:return xt(a.type,!1);case 11:return xt(a.type.render,!1);case 1:return xt(a.type,!0);case 31:return je("Activity");default:return""}}function ls(a){try{var o="",s=null;do o+=Cn(a,s),s=a,a=a.return;while(a);return o}catch(d){return`
|
||||
Error generating stack: `+d.message+`
|
||||
`+d.stack}}var Vp=Object.prototype.hasOwnProperty,Kp=e.unstable_scheduleCallback,Yp=e.unstable_cancelCallback,a5=e.unstable_shouldYield,i5=e.unstable_requestPaint,_n=e.unstable_now,o5=e.unstable_getCurrentPriorityLevel,uw=e.unstable_ImmediatePriority,fw=e.unstable_UserBlockingPriority,yu=e.unstable_NormalPriority,l5=e.unstable_LowPriority,dw=e.unstable_IdlePriority,s5=e.log,c5=e.unstable_setDisableYieldValue,ss=null,Tn=null;function Ba(a){if(typeof s5=="function"&&c5(a),Tn&&typeof Tn.setStrictMode=="function")try{Tn.setStrictMode(ss,a)}catch{}}var Nn=Math.clz32?Math.clz32:d5,u5=Math.log,f5=Math.LN2;function d5(a){return a>>>=0,a===0?32:31-(u5(a)/f5|0)|0}var bu=256,xu=262144,wu=4194304;function Mi(a){var o=a&42;if(o!==0)return o;switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return a&261888;case 262144:case 524288:case 1048576:case 2097152:return a&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return a&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return a}}function Su(a,o,s){var d=a.pendingLanes;if(d===0)return 0;var g=0,b=a.suspendedLanes,C=a.pingedLanes;a=a.warmLanes;var N=d&134217727;return N!==0?(d=N&~b,d!==0?g=Mi(d):(C&=N,C!==0?g=Mi(C):s||(s=N&~a,s!==0&&(g=Mi(s))))):(N=d&~b,N!==0?g=Mi(N):C!==0?g=Mi(C):s||(s=d&~a,s!==0&&(g=Mi(s)))),g===0?0:o!==0&&o!==g&&(o&b)===0&&(b=g&-g,s=o&-o,b>=s||b===32&&(s&4194048)!==0)?o:g}function cs(a,o){return(a.pendingLanes&~(a.suspendedLanes&~a.pingedLanes)&o)===0}function h5(a,o){switch(a){case 1:case 2:case 4:case 8:case 64:return o+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function hw(){var a=wu;return wu<<=1,(wu&62914560)===0&&(wu=4194304),a}function Gp(a){for(var o=[],s=0;31>s;s++)o.push(a);return o}function us(a,o){a.pendingLanes|=o,o!==268435456&&(a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0)}function p5(a,o,s,d,g,b){var C=a.pendingLanes;a.pendingLanes=s,a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0,a.expiredLanes&=s,a.entangledLanes&=s,a.errorRecoveryDisabledLanes&=s,a.shellSuspendCounter=0;var N=a.entanglements,k=a.expirationTimes,Y=a.hiddenUpdates;for(s=C&~s;0<s;){var te=31-Nn(s),ie=1<<te;N[te]=0,k[te]=-1;var W=Y[te];if(W!==null)for(Y[te]=null,te=0;te<W.length;te++){var J=W[te];J!==null&&(J.lane&=-536870913)}s&=~ie}d!==0&&pw(a,d,0),b!==0&&g===0&&a.tag!==0&&(a.suspendedLanes|=b&~(C&~o))}function pw(a,o,s){a.pendingLanes|=o,a.suspendedLanes&=~o;var d=31-Nn(o);a.entangledLanes|=o,a.entanglements[d]=a.entanglements[d]|1073741824|s&261930}function mw(a,o){var s=a.entangledLanes|=o;for(a=a.entanglements;s;){var d=31-Nn(s),g=1<<d;g&o|a[d]&o&&(a[d]|=o),s&=~g}}function vw(a,o){var s=o&-o;return s=(s&42)!==0?1:Wp(s),(s&(a.suspendedLanes|o))!==0?0:s}function Wp(a){switch(a){case 2:a=1;break;case 8:a=4;break;case 32:a=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:a=128;break;case 268435456:a=134217728;break;default:a=0}return a}function Xp(a){return a&=-a,2<a?8<a?(a&134217727)!==0?32:268435456:8:2}function gw(){var a=F.p;return a!==0?a:(a=window.event,a===void 0?32:nA(a.type))}function yw(a,o){var s=F.p;try{return F.p=a,o()}finally{F.p=s}}var Ua=Math.random().toString(36).slice(2),Yt="__reactFiber$"+Ua,vn="__reactProps$"+Ua,Mo="__reactContainer$"+Ua,Zp="__reactEvents$"+Ua,m5="__reactListeners$"+Ua,v5="__reactHandles$"+Ua,bw="__reactResources$"+Ua,fs="__reactMarker$"+Ua;function Qp(a){delete a[Yt],delete a[vn],delete a[Zp],delete a[m5],delete a[v5]}function jo(a){var o=a[Yt];if(o)return o;for(var s=a.parentNode;s;){if(o=s[Mo]||s[Yt]){if(s=o.alternate,o.child!==null||s!==null&&s.child!==null)for(a=BE(a);a!==null;){if(s=a[Yt])return s;a=BE(a)}return o}a=s,s=a.parentNode}return null}function Po(a){if(a=a[Yt]||a[Mo]){var o=a.tag;if(o===5||o===6||o===13||o===31||o===26||o===27||o===3)return a}return null}function ds(a){var o=a.tag;if(o===5||o===26||o===27||o===6)return a.stateNode;throw Error(r(33))}function Ro(a){var o=a[bw];return o||(o=a[bw]={hoistableStyles:new Map,hoistableScripts:new Map}),o}function $t(a){a[fs]=!0}var xw=new Set,ww={};function ji(a,o){Do(a,o),Do(a+"Capture",o)}function Do(a,o){for(ww[a]=o,a=0;a<o.length;a++)xw.add(o[a])}var g5=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\
Line truncated
|
||||
`).replace(G4,"")}function ME(a,o){return o=NE(o),NE(a)===o}function Qe(a,o,s,d,g,b){switch(s){case"children":typeof d=="string"?o==="body"||o==="textarea"&&d===""||Lo(a,d):(typeof d=="number"||typeof d=="bigint")&&o!=="body"&&Lo(a,""+d);break;case"className":Eu(a,"class",d);break;case"tabIndex":Eu(a,"tabindex",d);break;case"dir":case"role":case"viewBox":case"width":case"height":Eu(a,s,d);break;case"style":Mw(a,d,b);break;case"data":if(o!=="object"){Eu(a,"data",d);break}case"src":case"href":if(d===""&&(o!=="a"||s!=="href")){a.removeAttribute(s);break}if(d==null||typeof d=="function"||typeof d=="symbol"||typeof d=="boolean"){a.removeAttribute(s);break}d=Cu(""+d),a.setAttribute(s,d);break;case"action":case"formAction":if(typeof d=="function"){a.setAttribute(s,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof b=="function"&&(s==="formAction"?(o!=="input"&&Qe(a,o,"name",g.name,g,null),Qe(a,o,"formEncType",g.formEncType,g,null),Qe(a,o,"formMethod",g.formMethod,g,null),Qe(a,o,"formTarget",g.formTarget,g,null)):(Qe(a,o,"encType",g.encType,g,null),Qe(a,o,"method",g.method,g,null),Qe(a,o,"target",g.target,g,null)));if(d==null||typeof d=="symbol"||typeof d=="boolean"){a.removeAttribute(s);break}d=Cu(""+d),a.setAttribute(s,d);break;case"onClick":d!=null&&(a.onclick=Xr);break;case"onScroll":d!=null&&Ie("scroll",a);break;case"onScrollEnd":d!=null&&Ie("scrollend",a);break;case"dangerouslySetInnerHTML":if(d!=null){if(typeof d!="object"||!("__html"in d))throw Error(r(61));if(s=d.__html,s!=null){if(g.children!=null)throw Error(r(60));a.innerHTML=s}}break;case"multiple":a.multiple=d&&typeof d!="function"&&typeof d!="symbol";break;case"muted":a.muted=d&&typeof d!="function"&&typeof d!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(d==null||typeof d=="function"||typeof d=="boolean"||typeof d=="symbol"){a.removeAttribute("xlink:href");break}s=Cu(""+d),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":d!=null&&typeof d!="function"&&typeof d!="symbol"?a.setAttribute(s,""+d):a.removeAttribute(s);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":d&&typeof d!="function"&&typeof d!="symbol"?a.setAttribute(s,""):a.removeAttribute(s);break;case"capture":case"download":d===!0?a.setAttribute(s,""):d!==!1&&d!=null&&typeof d!="function"&&typeof d!="symbol"?a.setAttribute(s,d):a.removeAttribute(s);break;case"cols":case"rows":case"size":case"span":d!=null&&typeof d!="function"&&typeof d!="symbol"&&!isNaN(d)&&1<=d?a.setAttribute(s,d):a.removeAttribute(s);break;case"rowSpan":case"start":d==null||typeof d=="function"||typeof d=="symbol"||isNaN(d)?a.removeAttribute(s):a.setAttribute(s,d);break;case"popover":Ie("beforetoggle",a),Ie("toggle",a),Ou(a,"popover",d);break;case"xlinkActuate":Wr(a,"http://www.w3.org/1999/xlink","xlink:actuate",d);break;case"xlinkArcrole":Wr(a,"http://www.w3.org/1999/xlink","xlink:arcrole",d);break;case"xlinkRole":Wr(a,"http://www.w3.org/1999/xlink","xlink:role",d);break;case"xlinkShow":Wr(a,"http://www.w3.org/1999/xlink","xlink:show",d);break;case"xlinkTitle":Wr(a,"http://www.w3.org/1999/xlink","xlink:title",d);break;case"xlinkType":Wr(a,"http://www.w3.org/1999/xlink","xlink:type",d);break;case"xmlBase":Wr(a,"http://www.w3.org/XML/1998/namespace","xml:base",d);break;case"xmlLang":Wr(a,"http://www.w3.org/XML/1998/namespace","xml:lang",d);break;case"xmlSpace":Wr(a,"http://www.w3.org/XML/1998/namespace","xml:space",d);break;case"is":Ou(a,"is",d);break;case"innerText":case"textContent":break;default:(!(2<s.length)||s[0]!=="o"&&s[0]!=="O"||s[1]!=="n"&&s[1]!=="N")&&(s=S5.get(s)||s,Ou(a,s,d))}}function Hv(a,o,s,d,g,b){switch(s){case"style":Mw(a,d,b);break;case"dangerouslySetInnerHTML":if(d!=null){if(typeof d!="object"||!("__html"in d))throw Error(r(61));if(s=d.__html,s!=null){if(g.children!=null)throw Error(r(60));a.innerHTML=s}}break;case"children":typeof d=="string"?Lo(a,d):(typeof d=="number"||typeof d=="bigint")&&Lo(a,""+d);break;case"onScroll":d!=null&&Ie("scroll",a);break;case"onScrollEnd":d!=null&&Ie("scrollend",a);break;case"onClick":d!=null&&(a.onclick=Xr);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"inne
Line truncated
|
||||
`+d.stack}}var Vp=Object.prototype.hasOwnProperty,Kp=e.unstable_scheduleCallback,Yp=e.unstable_cancelCallback,a5=e.unstable_shouldYield,i5=e.unstable_requestPaint,_n=e.unstable_now,o5=e.unstable_getCurrentPriorityLevel,uw=e.unstable_ImmediatePriority,fw=e.unstable_UserBlockingPriority,yu=e.unstable_NormalPriority,l5=e.unstable_LowPriority,dw=e.unstable_IdlePriority,s5=e.log,c5=e.unstable_setDisableYieldValue,ss=null,Tn=null;function Ba(a){if(typeof s5=="function"&&c5(a),Tn&&typeof Tn.setStrictMode=="function")try{Tn.setStrictMode(ss,a)}catch{}}var Nn=Math.clz32?Math.clz32:d5,u5=Math.log,f5=Math.LN2;function d5(a){return a>>>=0,a===0?32:31-(u5(a)/f5|0)|0}var bu=256,xu=262144,wu=4194304;function Ni(a){var o=a&42;if(o!==0)return o;switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return a&261888;case 262144:case 524288:case 1048576:case 2097152:return a&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return a&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return a}}function Su(a,o,s){var d=a.pendingLanes;if(d===0)return 0;var g=0,b=a.suspendedLanes,C=a.pingedLanes;a=a.warmLanes;var N=d&134217727;return N!==0?(d=N&~b,d!==0?g=Ni(d):(C&=N,C!==0?g=Ni(C):s||(s=N&~a,s!==0&&(g=Ni(s))))):(N=d&~b,N!==0?g=Ni(N):C!==0?g=Ni(C):s||(s=d&~a,s!==0&&(g=Ni(s)))),g===0?0:o!==0&&o!==g&&(o&b)===0&&(b=g&-g,s=o&-o,b>=s||b===32&&(s&4194048)!==0)?o:g}function cs(a,o){return(a.pendingLanes&~(a.suspendedLanes&~a.pingedLanes)&o)===0}function h5(a,o){switch(a){case 1:case 2:case 4:case 8:case 64:return o+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function hw(){var a=wu;return wu<<=1,(wu&62914560)===0&&(wu=4194304),a}function Gp(a){for(var o=[],s=0;31>s;s++)o.push(a);return o}function us(a,o){a.pendingLanes|=o,o!==268435456&&(a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0)}function p5(a,o,s,d,g,b){var C=a.pendingLanes;a.pendingLanes=s,a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0,a.expiredLanes&=s,a.entangledLanes&=s,a.errorRecoveryDisabledLanes&=s,a.shellSuspendCounter=0;var N=a.entanglements,k=a.expirationTimes,Y=a.hiddenUpdates;for(s=C&~s;0<s;){var te=31-Nn(s),ie=1<<te;N[te]=0,k[te]=-1;var W=Y[te];if(W!==null)for(Y[te]=null,te=0;te<W.length;te++){var J=W[te];J!==null&&(J.lane&=-536870913)}s&=~ie}d!==0&&pw(a,d,0),b!==0&&g===0&&a.tag!==0&&(a.suspendedLanes|=b&~(C&~o))}function pw(a,o,s){a.pendingLanes|=o,a.suspendedLanes&=~o;var d=31-Nn(o);a.entangledLanes|=o,a.entanglements[d]=a.entanglements[d]|1073741824|s&261930}function mw(a,o){var s=a.entangledLanes|=o;for(a=a.entanglements;s;){var d=31-Nn(s),g=1<<d;g&o|a[d]&o&&(a[d]|=o),s&=~g}}function vw(a,o){var s=o&-o;return s=(s&42)!==0?1:Wp(s),(s&(a.suspendedLanes|o))!==0?0:s}function Wp(a){switch(a){case 2:a=1;break;case 8:a=4;break;case 32:a=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:a=128;break;case 268435456:a=134217728;break;default:a=0}return a}function Xp(a){return a&=-a,2<a?8<a?(a&134217727)!==0?32:268435456:8:2}function gw(){var a=F.p;return a!==0?a:(a=window.event,a===void 0?32:nA(a.type))}function yw(a,o){var s=F.p;try{return F.p=a,o()}finally{F.p=s}}var Ua=Math.random().toString(36).slice(2),Yt="__reactFiber$"+Ua,vn="__reactProps$"+Ua,Mo="__reactContainer$"+Ua,Zp="__reactEvents$"+Ua,m5="__reactListeners$"+Ua,v5="__reactHandles$"+Ua,bw="__reactResources$"+Ua,fs="__reactMarker$"+Ua;function Qp(a){delete a[Yt],delete a[vn],delete a[Zp],delete a[m5],delete a[v5]}function jo(a){var o=a[Yt];if(o)return o;for(var s=a.parentNode;s;){if(o=s[Mo]||s[Yt]){if(s=o.alternate,o.child!==null||s!==null&&s.child!==null)for(a=BE(a);a!==null;){if(s=a[Yt])return s;a=BE(a)}return o}a=s,s=a.parentNode}return null}function Po(a){if(a=a[Yt]||a[Mo]){var o=a.tag;if(o===5||o===6||o===13||o===31||o===26||o===27||o===3)return a}return null}function ds(a){var o=a.tag;if(o===5||o===26||o===27||o===6)return a.stateNode;throw Error(r(33))}function Ro(a){var o=a[bw];return o||(o=a[bw]={hoistableStyles:new Map,hoistableScripts:new Map}),o}function $t(a){a[fs]=!0}var xw=new Set,ww={};function Mi(a,o){Do(a,o),Do(a+"Capture",o)}function Do(a,o){for(ww[a]=o,a=0;a<o.length;a++)xw.add(o[a])}var g5=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\
Line truncated
|
||||
`).replace(G4,"")}function ME(a,o){return o=NE(o),NE(a)===o}function Qe(a,o,s,d,g,b){switch(s){case"children":typeof d=="string"?o==="body"||o==="textarea"&&d===""||Lo(a,d):(typeof d=="number"||typeof d=="bigint")&&o!=="body"&&Lo(a,""+d);break;case"className":Eu(a,"class",d);break;case"tabIndex":Eu(a,"tabindex",d);break;case"dir":case"role":case"viewBox":case"width":case"height":Eu(a,s,d);break;case"style":Mw(a,d,b);break;case"data":if(o!=="object"){Eu(a,"data",d);break}case"src":case"href":if(d===""&&(o!=="a"||s!=="href")){a.removeAttribute(s);break}if(d==null||typeof d=="function"||typeof d=="symbol"||typeof d=="boolean"){a.removeAttribute(s);break}d=Cu(""+d),a.setAttribute(s,d);break;case"action":case"formAction":if(typeof d=="function"){a.setAttribute(s,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof b=="function"&&(s==="formAction"?(o!=="input"&&Qe(a,o,"name",g.name,g,null),Qe(a,o,"formEncType",g.formEncType,g,null),Qe(a,o,"formMethod",g.formMethod,g,null),Qe(a,o,"formTarget",g.formTarget,g,null)):(Qe(a,o,"encType",g.encType,g,null),Qe(a,o,"method",g.method,g,null),Qe(a,o,"target",g.target,g,null)));if(d==null||typeof d=="symbol"||typeof d=="boolean"){a.removeAttribute(s);break}d=Cu(""+d),a.setAttribute(s,d);break;case"onClick":d!=null&&(a.onclick=Xr);break;case"onScroll":d!=null&&Ie("scroll",a);break;case"onScrollEnd":d!=null&&Ie("scrollend",a);break;case"dangerouslySetInnerHTML":if(d!=null){if(typeof d!="object"||!("__html"in d))throw Error(r(61));if(s=d.__html,s!=null){if(g.children!=null)throw Error(r(60));a.innerHTML=s}}break;case"multiple":a.multiple=d&&typeof d!="function"&&typeof d!="symbol";break;case"muted":a.muted=d&&typeof d!="function"&&typeof d!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(d==null||typeof d=="function"||typeof d=="boolean"||typeof d=="symbol"){a.removeAttribute("xlink:href");break}s=Cu(""+d),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":d!=null&&typeof d!="function"&&typeof d!="symbol"?a.setAttribute(s,""+d):a.removeAttribute(s);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":d&&typeof d!="function"&&typeof d!="symbol"?a.setAttribute(s,""):a.removeAttribute(s);break;case"capture":case"download":d===!0?a.setAttribute(s,""):d!==!1&&d!=null&&typeof d!="function"&&typeof d!="symbol"?a.setAttribute(s,d):a.removeAttribute(s);break;case"cols":case"rows":case"size":case"span":d!=null&&typeof d!="function"&&typeof d!="symbol"&&!isNaN(d)&&1<=d?a.setAttribute(s,d):a.removeAttribute(s);break;case"rowSpan":case"start":d==null||typeof d=="function"||typeof d=="symbol"||isNaN(d)?a.removeAttribute(s):a.setAttribute(s,d);break;case"popover":Ie("beforetoggle",a),Ie("toggle",a),Ou(a,"popover",d);break;case"xlinkActuate":Wr(a,"http://www.w3.org/1999/xlink","xlink:actuate",d);break;case"xlinkArcrole":Wr(a,"http://www.w3.org/1999/xlink","xlink:arcrole",d);break;case"xlinkRole":Wr(a,"http://www.w3.org/1999/xlink","xlink:role",d);break;case"xlinkShow":Wr(a,"http://www.w3.org/1999/xlink","xlink:show",d);break;case"xlinkTitle":Wr(a,"http://www.w3.org/1999/xlink","xlink:title",d);break;case"xlinkType":Wr(a,"http://www.w3.org/1999/xlink","xlink:type",d);break;case"xmlBase":Wr(a,"http://www.w3.org/XML/1998/namespace","xml:base",d);break;case"xmlLang":Wr(a,"http://www.w3.org/XML/1998/namespace","xml:lang",d);break;case"xmlSpace":Wr(a,"http://www.w3.org/XML/1998/namespace","xml:space",d);break;case"is":Ou(a,"is",d);break;case"innerText":case"textContent":break;default:(!(2<s.length)||s[0]!=="o"&&s[0]!=="O"||s[1]!=="n"&&s[1]!=="N")&&(s=S5.get(s)||s,Ou(a,s,d))}}function Hv(a,o,s,d,g,b){switch(s){case"style":Mw(a,d,b);break;case"dangerouslySetInnerHTML":if(d!=null){if(typeof d!="object"||!("__html"in d))throw Error(r(61));if(s=d.__html,s!=null){if(g.children!=null)throw Error(r(60));a.innerHTML=s}}break;case"children":typeof d=="string"?Lo(a,d):(typeof d=="number"||typeof d=="bigint")&&Lo(a,""+d);break;case"onScroll":d!=null&&Ie("scroll",a);break;case"onScrollEnd":d!=null&&Ie("scrollend",a);break;case"onClick":d!=null&&(a.onclick=Xr);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"inne
Line truncated
|
||||
.`.concat(_9,` {
|
||||
overflow: hidden `).concat(r,`;
|
||||
padding-right: `).concat(u,"px ").concat(r,`;
|
||||
@@ -46,10 +46,10 @@ Error generating stack: `+d.message+`
|
||||
`)},vC=function(){var e=parseInt(document.body.getAttribute(_l)||"0",10);return isFinite(e)?e:0},Y9=function(){v.useEffect(function(){return document.body.setAttribute(_l,(vC()+1).toString()),function(){var e=vC()-1;e<=0?document.body.removeAttribute(_l):document.body.setAttribute(_l,e.toString())}},[])},G9=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?"margin":r;Y9();var l=v.useMemo(function(){return F9(i)},[i]);return v.createElement(V9,{styles:K9(l,!t,i,n?"":"!important")})},y0=!1;if(typeof window<"u")try{var qf=Object.defineProperty({},"passive",{get:function(){return y0=!0,!0}});window.addEventListener("test",qf,qf),window.removeEventListener("test",qf,qf)}catch{y0=!1}var gl=y0?{passive:!1}:!1,W9=function(e){return e.tagName==="TEXTAREA"},Lj=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!W9(e)&&n[t]==="visible")},X9=function(e){return Lj(e,"overflowY")},Z9=function(e){return Lj(e,"overflowX")},gC=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var i=Ij(e,r);if(i){var l=zj(e,r),c=l[1],u=l[2];if(c>u)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},Q9=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},J9=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},Ij=function(e,t){return e==="v"?X9(t):Z9(t)},zj=function(e,t){return e==="v"?Q9(t):J9(t)},e7=function(e,t){return e==="h"&&t==="rtl"?-1:1},t7=function(e,t,n,r,i){var l=e7(e,window.getComputedStyle(t).direction),c=l*r,u=n.target,f=t.contains(u),h=!1,p=c>0,m=0,y=0;do{if(!u)break;var x=zj(e,u),S=x[0],w=x[1],O=x[2],A=w-O-l*S;(S||A)&&Ij(e,u)&&(m+=A,y+=S);var _=u.parentNode;u=_&&_.nodeType===Node.DOCUMENT_FRAGMENT_NODE?_.host:_}while(!f&&u!==document.body||f&&(t.contains(u)||t===u));return(p&&Math.abs(m)<1||!p&&Math.abs(y)<1)&&(h=!0),h},Ff=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},yC=function(e){return[e.deltaX,e.deltaY]},bC=function(e){return e&&"current"in e?e.current:e},n7=function(e,t){return e[0]===t[0]&&e[1]===t[1]},r7=function(e){return`
|
||||
.block-interactivity-`.concat(e,` {pointer-events: none;}
|
||||
.allow-interactivity-`).concat(e,` {pointer-events: all;}
|
||||
`)},a7=0,yl=[];function i7(e){var t=v.useRef([]),n=v.useRef([0,0]),r=v.useRef(),i=v.useState(a7++)[0],l=v.useState(kj)[0],c=v.useRef(e);v.useEffect(function(){c.current=e},[e]),v.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var w=C9([e.lockRef.current],(e.shards||[]).map(bC),!0).filter(Boolean);return w.forEach(function(O){return O.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),w.forEach(function(O){return O.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var u=v.useCallback(function(w,O){if("touches"in w&&w.touches.length===2||w.type==="wheel"&&w.ctrlKey)return!c.current.allowPinchZoom;var A=Ff(w),_=n.current,T="deltaX"in w?w.deltaX:_[0]-A[0],j="deltaY"in w?w.deltaY:_[1]-A[1],M,P=w.target,R=Math.abs(T)>Math.abs(j)?"h":"v";if("touches"in w&&R==="h"&&P.type==="range")return!1;var I=window.getSelection(),B=I&&I.anchorNode,q=B?B===P||B.contains(P):!1;if(q)return!1;var U=gC(R,P);if(!U)return!0;if(U?M=R:(M=R==="v"?"h":"v",U=gC(R,P)),!U)return!1;if(!r.current&&"changedTouches"in w&&(T||j)&&(r.current=M),!M)return!0;var V=r.current||M;return t7(V,O,w,V==="h"?T:j)},[]),f=v.useCallback(function(w){var O=w;if(!(!yl.length||yl[yl.length-1]!==l)){var A="deltaY"in O?yC(O):Ff(O),_=t.current.filter(function(M){return M.name===O.type&&(M.target===O.target||O.target===M.shadowParent)&&n7(M.delta,A)})[0];if(_&&_.should){O.cancelable&&O.preventDefault();return}if(!_){var T=(c.current.shards||[]).map(bC).filter(Boolean).filter(function(M){return M.contains(O.target)}),j=T.length>0?u(O,T[0]):!c.current.noIsolation;j&&O.cancelable&&O.preventDefault()}}},[]),h=v.useCallback(function(w,O,A,_){var T={name:w,delta:O,target:A,should:_,shadowParent:o7(A)};t.current.push(T),setTimeout(function(){t.current=t.current.filter(function(j){return j!==T})},1)},[]),p=v.useCallback(function(w){n.current=Ff(w),r.current=void 0},[]),m=v.useCallback(function(w){h(w.type,yC(w),w.target,u(w,e.lockRef.current))},[]),y=v.useCallback(function(w){h(w.type,Ff(w),w.target,u(w,e.lockRef.current))},[]);v.useEffect(function(){return yl.push(l),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:y}),document.addEventListener("wheel",f,gl),document.addEventListener("touchmove",f,gl),document.addEventListener("touchstart",p,gl),function(){yl=yl.filter(function(w){return w!==l}),document.removeEventListener("wheel",f,gl),document.removeEventListener("touchmove",f,gl),document.removeEventListener("touchstart",p,gl)}},[]);var x=e.removeScrollBar,S=e.inert;return v.createElement(v.Fragment,null,S?v.createElement(l,{styles:r7(i)}):null,x?v.createElement(G9,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function o7(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const l7=k9(Dj,i7);var zh=v.forwardRef(function(e,t){return v.createElement(Ih,Dr({},e,{ref:t,sideCar:l7}))});zh.classNames=Ih.classNames;var s7=[" ","Enter","ArrowUp","ArrowDown"],c7=[" ","Enter"],lo="Select",[$h,Bh,u7]=Kb(lo),[Yl]=Fn(lo,[u7,Fl]),Uh=Fl(),[f7,Ci]=Yl(lo),[d7,h7]=Yl(lo),$j=e=>{const{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:l,value:c,defaultValue:u,onValueChange:f,dir:h,name:p,autoComplete:m,disabled:y,required:x,form:S}=e,w=Uh(t),[O,A]=v.useState(null),[_,T]=v.useState(null),[j,M]=v.useState(!1),P=Kc(h),[R,I]=Oa({prop:r,defaultProp:i??!1,onChange:l,caller:lo}),[B,q]=Oa({prop:c,defaultProp:u,onChange:f,caller:lo}),U=v.useRef(null),V=O?S||!!O.closest("form"):!0,[oe,le]=v.useState(new Set),ce=Array.from(oe).map(L=>L.props.value).join(";");return E.jsx(zb,{...w,children:E.jsxs(f7,{required:x,scope:t,trigger:O,onTriggerChange:A,valueNode:_,onValueNodeChange:T,valueNodeHasChildren:j,onValueNodeHasChildrenChange:M,contentId:sr(),value:B,onValueChange:q,open:R,onOpenChange:I,dir:P,triggerPointerDownPosRef:U,disabled:y,children:[E.jsx($h.Provider,{scope:t,children:E.jsx(d7,{scope:e.__scopeSelect,onNativeOptionAdd:v.useCallback(L=>{le(F=>new Set(F).add(L))},[]),onNativeOptionRemove:v.useCallback(L=>{le(F=>{const $=new Set(F);return $.delete(L),$})},[]),children:n})}),V?E.jsxs(cP,{"aria-hidden":!0,required:x,tabIndex:-1,name:p,autoComplete:m,value:B,onChange:L=>q(L.target.value),disabled:y,form:S,children:[B===void 0?E.jsx("option",{value:""}):null,Array.from(oe)]},ce):null]})})};$j.displayName=lo;var Bj="SelectTrigger",Uj=v.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...i}=e,l=Uh(n),c=Ci(Bj,n),u=c.disabled||r,f=De(t,c.onTriggerChange),h=Bh(n),p=v.useRef("touch"),[m,y,x]=fP(w=>{const O=h().filter(T=>!T.disabled),A=O.find(T=>T.value===c.value),_=dP(O,w,A);_!==void 0&&c.onValueChange(_.value)}),S=w=>{u||(c.onOpenChange(!0),x()),w&&(c.triggerPointerDownPosRef.current={x:Math.round(w.pageX),y:Math.round(w.pageY)})};return E.jsx($b,{asChild:!0,...l,children:E.jsx(Ce.button,{type:"button",role:"combobox","aria-controls":c.contentId,"aria-
Line truncated
|
||||
`)},a7=0,yl=[];function i7(e){var t=v.useRef([]),n=v.useRef([0,0]),r=v.useRef(),i=v.useState(a7++)[0],l=v.useState(kj)[0],c=v.useRef(e);v.useEffect(function(){c.current=e},[e]),v.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var w=C9([e.lockRef.current],(e.shards||[]).map(bC),!0).filter(Boolean);return w.forEach(function(O){return O.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),w.forEach(function(O){return O.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var u=v.useCallback(function(w,O){if("touches"in w&&w.touches.length===2||w.type==="wheel"&&w.ctrlKey)return!c.current.allowPinchZoom;var A=Ff(w),_=n.current,T="deltaX"in w?w.deltaX:_[0]-A[0],j="deltaY"in w?w.deltaY:_[1]-A[1],M,P=w.target,R=Math.abs(T)>Math.abs(j)?"h":"v";if("touches"in w&&R==="h"&&P.type==="range")return!1;var I=window.getSelection(),B=I&&I.anchorNode,q=B?B===P||B.contains(P):!1;if(q)return!1;var U=gC(R,P);if(!U)return!0;if(U?M=R:(M=R==="v"?"h":"v",U=gC(R,P)),!U)return!1;if(!r.current&&"changedTouches"in w&&(T||j)&&(r.current=M),!M)return!0;var V=r.current||M;return t7(V,O,w,V==="h"?T:j)},[]),f=v.useCallback(function(w){var O=w;if(!(!yl.length||yl[yl.length-1]!==l)){var A="deltaY"in O?yC(O):Ff(O),_=t.current.filter(function(M){return M.name===O.type&&(M.target===O.target||O.target===M.shadowParent)&&n7(M.delta,A)})[0];if(_&&_.should){O.cancelable&&O.preventDefault();return}if(!_){var T=(c.current.shards||[]).map(bC).filter(Boolean).filter(function(M){return M.contains(O.target)}),j=T.length>0?u(O,T[0]):!c.current.noIsolation;j&&O.cancelable&&O.preventDefault()}}},[]),h=v.useCallback(function(w,O,A,_){var T={name:w,delta:O,target:A,should:_,shadowParent:o7(A)};t.current.push(T),setTimeout(function(){t.current=t.current.filter(function(j){return j!==T})},1)},[]),p=v.useCallback(function(w){n.current=Ff(w),r.current=void 0},[]),m=v.useCallback(function(w){h(w.type,yC(w),w.target,u(w,e.lockRef.current))},[]),y=v.useCallback(function(w){h(w.type,Ff(w),w.target,u(w,e.lockRef.current))},[]);v.useEffect(function(){return yl.push(l),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:y}),document.addEventListener("wheel",f,gl),document.addEventListener("touchmove",f,gl),document.addEventListener("touchstart",p,gl),function(){yl=yl.filter(function(w){return w!==l}),document.removeEventListener("wheel",f,gl),document.removeEventListener("touchmove",f,gl),document.removeEventListener("touchstart",p,gl)}},[]);var x=e.removeScrollBar,S=e.inert;return v.createElement(v.Fragment,null,S?v.createElement(l,{styles:r7(i)}):null,x?v.createElement(G9,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function o7(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const l7=k9(Dj,i7);var zh=v.forwardRef(function(e,t){return v.createElement(Ih,Dr({},e,{ref:t,sideCar:l7}))});zh.classNames=Ih.classNames;var s7=[" ","Enter","ArrowUp","ArrowDown"],c7=[" ","Enter"],oo="Select",[$h,Bh,u7]=Kb(oo),[Yl]=Fn(oo,[u7,Fl]),Uh=Fl(),[f7,Ai]=Yl(oo),[d7,h7]=Yl(oo),$j=e=>{const{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:l,value:c,defaultValue:u,onValueChange:f,dir:h,name:p,autoComplete:m,disabled:y,required:x,form:S}=e,w=Uh(t),[O,A]=v.useState(null),[_,T]=v.useState(null),[j,M]=v.useState(!1),P=Kc(h),[R,I]=Oa({prop:r,defaultProp:i??!1,onChange:l,caller:oo}),[B,q]=Oa({prop:c,defaultProp:u,onChange:f,caller:oo}),U=v.useRef(null),V=O?S||!!O.closest("form"):!0,[oe,le]=v.useState(new Set),ce=Array.from(oe).map(L=>L.props.value).join(";");return E.jsx(zb,{...w,children:E.jsxs(f7,{required:x,scope:t,trigger:O,onTriggerChange:A,valueNode:_,onValueNodeChange:T,valueNodeHasChildren:j,onValueNodeHasChildrenChange:M,contentId:sr(),value:B,onValueChange:q,open:R,onOpenChange:I,dir:P,triggerPointerDownPosRef:U,disabled:y,children:[E.jsx($h.Provider,{scope:t,children:E.jsx(d7,{scope:e.__scopeSelect,onNativeOptionAdd:v.useCallback(L=>{le(F=>new Set(F).add(L))},[]),onNativeOptionRemove:v.useCallback(L=>{le(F=>{const $=new Set(F);return $.delete(L),$})},[]),children:n})}),V?E.jsxs(cP,{"aria-hidden":!0,required:x,tabIndex:-1,name:p,autoComplete:m,value:B,onChange:L=>q(L.target.value),disabled:y,form:S,children:[B===void 0?E.jsx("option",{value:""}):null,Array.from(oe)]},ce):null]})})};$j.displayName=oo;var Bj="SelectTrigger",Uj=v.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...i}=e,l=Uh(n),c=Ai(Bj,n),u=c.disabled||r,f=De(t,c.onTriggerChange),h=Bh(n),p=v.useRef("touch"),[m,y,x]=fP(w=>{const O=h().filter(T=>!T.disabled),A=O.find(T=>T.value===c.value),_=dP(O,w,A);_!==void 0&&c.onValueChange(_.value)}),S=w=>{u||(c.onOpenChange(!0),x()),w&&(c.triggerPointerDownPosRef.current={x:Math.round(w.pageX),y:Math.round(w.pageY)})};return E.jsx($b,{asChild:!0,...l,children:E.jsx(Ce.button,{type:"button",role:"combobox","aria-controls":c.contentId,"aria-
Line truncated
|
||||
please check the style of container, or the props width(%s) and height(%s),
|
||||
or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the
|
||||
height and width.`,P,R,i,l,c,u,n),v.createElement("div",{id:m?"".concat(m):void 0,className:Ye("recharts-responsive-container",y),style:X_(X_({},S),{},{width:i,height:l,minWidth:c,minHeight:u,maxHeight:f}),ref:w},v.createElement("div",{style:lY({width:i,height:l})},v.createElement(hD,{width:P,height:R},h)))}),pY=v.forwardRef((e,t)=>{var n=Ox();if(Si(n.width)&&Si(n.height))return e.children;var{width:r,height:i}=sY({width:e.width,height:e.height,aspect:e.aspect}),{calculatedWidth:l,calculatedHeight:c}=fD(void 0,void 0,{width:r,height:i,aspect:e.aspect,maxHeight:e.maxHeight});return Oe(l)&&Oe(c)?v.createElement(hD,{width:l,height:c},e.children):v.createElement(hY,U0({},e,{width:r,height:i,ref:t}))});function pD(e){if(e)return{x:e.x,y:e.y,upperWidth:"upperWidth"in e?e.upperWidth:e.width,lowerWidth:"lowerWidth"in e?e.lowerWidth:e.width,width:e.width,height:e.height}}var up=()=>{var e,t=Vn(),n=we(WK),r=we(cp),i=(e=we(sp))===null||e===void 0?void 0:e.padding;return!t||!r||!i?n:{width:r.width-i.left-i.right,height:r.height-i.top-i.bottom,x:i.left,y:i.top}},mY={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},vY=()=>{var e;return(e=we(kt))!==null&&e!==void 0?e:mY},gY=()=>we(Pa),yY=()=>we(Ra),Fe=e=>e.layout.layoutType,Jc=()=>we(Fe),bY=()=>{var e=Jc();return e!==void 0},fp=e=>{var t=ft(),n=Vn(),{width:r,height:i}=e,l=Ox(),c=r,u=i;return l&&(c=l.width>0?l.width:r,u=l.height>0?l.height:i),v.useEffect(()=>{!n&&Si(c)&&Si(u)&&t(xK({width:c,height:u}))},[t,n,c,u]),null},mD=Symbol.for("immer-nothing"),Z_=Symbol.for("immer-draftable"),qn=Symbol.for("immer-state");function xr(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Nc=Object.getPrototypeOf;function kl(e){return!!e&&!!e[qn]}function ho(e){return e?vD(e)||Array.isArray(e)||!!e[Z_]||!!e.constructor?.[Z_]||eu(e)||hp(e):!1}var xY=Object.prototype.constructor.toString(),Q_=new WeakMap;function vD(e){if(!e||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;const n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;if(n===Object)return!0;if(typeof n!="function")return!1;let r=Q_.get(n);return r===void 0&&(r=Function.toString.call(n),Q_.set(n,r)),r===xY}function Fd(e,t,n=!0){dp(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(i=>{t(i,e[i],e)}):e.forEach((r,i)=>t(i,r,e))}function dp(e){const t=e[qn];return t?t.type_:Array.isArray(e)?1:eu(e)?2:hp(e)?3:0}function H0(e,t){return dp(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function gD(e,t,n){const r=dp(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function wY(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function eu(e){return e instanceof Map}function hp(e){return e instanceof Set}function Xi(e){return e.copy_||e.base_}function q0(e,t){if(eu(e))return new Map(e);if(hp(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const n=vD(e);if(t===!0||t==="class_only"&&!n){const r=Object.getOwnPropertyDescriptors(e);delete r[qn];let i=Reflect.ownKeys(r);for(let l=0;l<i.length;l++){const c=i[l],u=r[c];u.writable===!1&&(u.writable=!0,u.configurable=!0),(u.get||u.set)&&(r[c]={configurable:!0,writable:!0,enumerable:u.enumerable,value:e[c]})}return Object.create(Nc(e),r)}else{const r=Nc(e);if(r!==null&&n)return{...e};const i=Object.create(r);return Object.assign(i,e)}}function Ex(e,t=!1){return pp(e)||kl(e)||!ho(e)||(dp(e)>1&&Object.defineProperties(e,{set:Qf,add:Qf,clear:Qf,delete:Qf}),Object.freeze(e),t&&Object.values(e).forEach(n=>Ex(n,!0))),e}function SY(){xr(2)}var Qf={value:SY};function pp(e){return e===null||typeof e!="object"?!0:Object.isFrozen(e)}var OY={};function po(e){const t=OY[e];return t||xr(0,e),t}var Mc;function yD(){return Mc}function EY(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function J_(e,t){t&&(po("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function F0(e){V0(e),e.drafts_.forEach(AY),e.drafts_=null}function V0(e){e===Mc&&(Mc=e.parent_)}function eT(e){return Mc=EY(Mc,e)}function AY(e){const t=e[qn];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function tT(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];return e!==void 0&&e!==n?(n[qn].modified_&&(F0(t),xr(4)),ho(e)&&(e=Vd(t,e),t.parent_||Kd(t,e)),t.patches_&&po("Patches").generateReplacementPatches_(n[qn].base_,e,t.patches_,t.inversePatches_)):e=Vd(t,n,[]),F0(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==mD?e:void 0}function Vd(e,t,n){if(pp(t))return t;const r=e.immer_.shouldUseStrictIteration(),i=t[qn];if(!i)return Fd(t,(l,c)=>nT(e,i,t,l,c,n),r),t;if(i.scope_!==e)return t;if(!i.modified_)return Kd(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const l=i.copy_;let c=l,u=!1;i.type_===3&&(c=new Set(l),l.clear(),u=!0),Fd(c,(f,h)=>nT(e,i,l,f,h,n,u),r),Kd(e,l,!1),n&&e.patches_&&po("Patches").generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}funct
Line truncated
|
||||
height and width.`,P,R,i,l,c,u,n),v.createElement("div",{id:m?"".concat(m):void 0,className:Ye("recharts-responsive-container",y),style:X_(X_({},S),{},{width:i,height:l,minWidth:c,minHeight:u,maxHeight:f}),ref:w},v.createElement("div",{style:lY({width:i,height:l})},v.createElement(hD,{width:P,height:R},h)))}),pY=v.forwardRef((e,t)=>{var n=Ox();if(Si(n.width)&&Si(n.height))return e.children;var{width:r,height:i}=sY({width:e.width,height:e.height,aspect:e.aspect}),{calculatedWidth:l,calculatedHeight:c}=fD(void 0,void 0,{width:r,height:i,aspect:e.aspect,maxHeight:e.maxHeight});return Oe(l)&&Oe(c)?v.createElement(hD,{width:l,height:c},e.children):v.createElement(hY,U0({},e,{width:r,height:i,ref:t}))});function pD(e){if(e)return{x:e.x,y:e.y,upperWidth:"upperWidth"in e?e.upperWidth:e.width,lowerWidth:"lowerWidth"in e?e.lowerWidth:e.width,width:e.width,height:e.height}}var up=()=>{var e,t=Vn(),n=we(WK),r=we(cp),i=(e=we(sp))===null||e===void 0?void 0:e.padding;return!t||!r||!i?n:{width:r.width-i.left-i.right,height:r.height-i.top-i.bottom,x:i.left,y:i.top}},mY={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},vY=()=>{var e;return(e=we(kt))!==null&&e!==void 0?e:mY},gY=()=>we(Pa),yY=()=>we(Ra),Fe=e=>e.layout.layoutType,Jc=()=>we(Fe),bY=()=>{var e=Jc();return e!==void 0},fp=e=>{var t=ft(),n=Vn(),{width:r,height:i}=e,l=Ox(),c=r,u=i;return l&&(c=l.width>0?l.width:r,u=l.height>0?l.height:i),v.useEffect(()=>{!n&&Si(c)&&Si(u)&&t(xK({width:c,height:u}))},[t,n,c,u]),null},mD=Symbol.for("immer-nothing"),Z_=Symbol.for("immer-draftable"),qn=Symbol.for("immer-state");function xr(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Nc=Object.getPrototypeOf;function kl(e){return!!e&&!!e[qn]}function fo(e){return e?vD(e)||Array.isArray(e)||!!e[Z_]||!!e.constructor?.[Z_]||eu(e)||hp(e):!1}var xY=Object.prototype.constructor.toString(),Q_=new WeakMap;function vD(e){if(!e||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;const n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;if(n===Object)return!0;if(typeof n!="function")return!1;let r=Q_.get(n);return r===void 0&&(r=Function.toString.call(n),Q_.set(n,r)),r===xY}function Fd(e,t,n=!0){dp(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(i=>{t(i,e[i],e)}):e.forEach((r,i)=>t(i,r,e))}function dp(e){const t=e[qn];return t?t.type_:Array.isArray(e)?1:eu(e)?2:hp(e)?3:0}function H0(e,t){return dp(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function gD(e,t,n){const r=dp(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function wY(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function eu(e){return e instanceof Map}function hp(e){return e instanceof Set}function Wi(e){return e.copy_||e.base_}function q0(e,t){if(eu(e))return new Map(e);if(hp(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const n=vD(e);if(t===!0||t==="class_only"&&!n){const r=Object.getOwnPropertyDescriptors(e);delete r[qn];let i=Reflect.ownKeys(r);for(let l=0;l<i.length;l++){const c=i[l],u=r[c];u.writable===!1&&(u.writable=!0,u.configurable=!0),(u.get||u.set)&&(r[c]={configurable:!0,writable:!0,enumerable:u.enumerable,value:e[c]})}return Object.create(Nc(e),r)}else{const r=Nc(e);if(r!==null&&n)return{...e};const i=Object.create(r);return Object.assign(i,e)}}function Ex(e,t=!1){return pp(e)||kl(e)||!fo(e)||(dp(e)>1&&Object.defineProperties(e,{set:Qf,add:Qf,clear:Qf,delete:Qf}),Object.freeze(e),t&&Object.values(e).forEach(n=>Ex(n,!0))),e}function SY(){xr(2)}var Qf={value:SY};function pp(e){return e===null||typeof e!="object"?!0:Object.isFrozen(e)}var OY={};function ho(e){const t=OY[e];return t||xr(0,e),t}var Mc;function yD(){return Mc}function EY(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function J_(e,t){t&&(ho("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function F0(e){V0(e),e.drafts_.forEach(AY),e.drafts_=null}function V0(e){e===Mc&&(Mc=e.parent_)}function eT(e){return Mc=EY(Mc,e)}function AY(e){const t=e[qn];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function tT(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];return e!==void 0&&e!==n?(n[qn].modified_&&(F0(t),xr(4)),fo(e)&&(e=Vd(t,e),t.parent_||Kd(t,e)),t.patches_&&ho("Patches").generateReplacementPatches_(n[qn].base_,e,t.patches_,t.inversePatches_)):e=Vd(t,n,[]),F0(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==mD?e:void 0}function Vd(e,t,n){if(pp(t))return t;const r=e.immer_.shouldUseStrictIteration(),i=t[qn];if(!i)return Fd(t,(l,c)=>nT(e,i,t,l,c,n),r),t;if(i.scope_!==e)return t;if(!i.modified_)return Kd(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const l=i.copy_;let c=l,u=!1;i.type_===3&&(c=new Set(l),l.clear(),u=!0),Fd(c,(f,h)=>nT(e,i,l,f,h,n,u),r),Kd(e,l,!1),n&&e.patches_&&ho("Patches").generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}funct
Line truncated
|
||||
`,",",""])),y[1],y[1],p,e+n,t+f*y[1])),m+=gt(wT||(wT=Pr(["L ",",",""])),e+n,t+r-f*y[2]),y[2]>0&&(m+=gt(ST||(ST=Pr(["A ",",",",0,0,",`,
|
||||
`,",",""])),y[2],y[2],p,e+n-h*y[2],t+r)),m+=gt(OT||(OT=Pr(["L ",",",""])),e+h*y[3],t+r),y[3]>0&&(m+=gt(ET||(ET=Pr(["A ",",",",0,0,",`,
|
||||
`,",",""])),y[3],y[3],p,e,t+r-f*y[3])),m+="Z"}else if(u>0&&i===+i&&i>0){var w=Math.min(u,i);m=gt(AT||(AT=Pr(["M ",",",`
|
||||
@@ -59,31 +59,31 @@ Error generating stack: `+d.message+`
|
||||
L `,",",`
|
||||
A `,",",",0,0,",",",",",`
|
||||
L `,",",`
|
||||
A `,",",",0,0,",",",","," Z"])),e,t+f*w,w,w,p,e+h*w,t,e+n-h*w,t,w,w,p,e+n,t+f*w,e+n,t+r-f*w,w,w,p,e+n-h*w,t+r,e+h*w,t+r,w,w,p,e,t+r-f*w)}else m=gt(CT||(CT=Pr(["M ",","," h "," v "," h "," Z"])),e,t,n,r,-n);return m},jT={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},MD=e=>{var t=pn(e,jT),n=v.useRef(null),[r,i]=v.useState(-1);v.useEffect(()=>{if(n.current&&n.current.getTotalLength)try{var F=n.current.getTotalLength();F&&i(F)}catch{}},[]);var{x:l,y:c,width:u,height:f,radius:h,className:p}=t,{animationEasing:m,animationDuration:y,animationBegin:x,isAnimationActive:S,isUpdateAnimationActive:w}=t,O=v.useRef(u),A=v.useRef(f),_=v.useRef(l),T=v.useRef(c),j=v.useMemo(()=>({x:l,y:c,width:u,height:f,radius:h}),[l,c,u,f,h]),M=gp(j,"rectangle-");if(l!==+l||c!==+c||u!==+u||f!==+f||u===0||f===0)return null;var P=Ye("recharts-rectangle",p);if(!w){var R=ur(t),{radius:I}=R,B=NT(R,MG);return v.createElement("path",Xd({},B,{x:yi(l),y:yi(c),width:yi(u),height:yi(f),radius:typeof h=="number"?h:void 0,className:P,d:MT(l,c,u,f,h)}))}var q=O.current,U=A.current,V=_.current,oe=T.current,le="0px ".concat(r===-1?1:r,"px"),ce="".concat(r,"px 0px"),L=CD(["strokeDasharray"],y,typeof m=="string"?m:jT.animationEasing);return v.createElement(vp,{animationId:M,key:M,canBegin:r>0,duration:y,easing:m,isActive:w,begin:x},F=>{var $=Rt(q,u,F),Z=Rt(U,f,F),de=Rt(V,l,F),D=Rt(oe,c,F);n.current&&(O.current=$,A.current=Z,_.current=de,T.current=D);var X;S?F>0?X={transition:L,strokeDasharray:ce}:X={strokeDasharray:le}:X={strokeDasharray:ce};var ae=ur(t),{radius:se}=ae,me=NT(ae,jG);return v.createElement("path",Xd({},me,{radius:typeof h=="number"?h:void 0,className:P,d:MT(de,D,$,Z,h),ref:n,style:TT(TT({},X),t.style)}))})};function PT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function RT(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?PT(Object(n),!0).forEach(function(r){LG(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):PT(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function LG(e,t,n){return(t=IG(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function IG(e){var t=zG(e,"string");return typeof t=="symbol"?t:t+""}function zG(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Zd=Math.PI/180,$G=e=>e*180/Math.PI,Nt=(e,t,n,r)=>({x:e+Math.cos(-Zd*r)*n,y:t+Math.sin(-Zd*r)*n}),jD=function(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(t-(r.left||0)-(r.right||0)),Math.abs(n-(r.top||0)-(r.bottom||0)))/2},BG=(e,t)=>{var{x:n,y:r}=e,{x:i,y:l}=t;return Math.sqrt((n-i)**2+(r-l)**2)},UG=(e,t)=>{var{x:n,y:r}=e,{cx:i,cy:l}=t,c=BG({x:n,y:r},{x:i,y:l});if(c<=0)return{radius:c,angle:0};var u=(n-i)/c,f=Math.acos(u);return r>l&&(f=2*Math.PI-f),{radius:c,angle:$G(f),angleInRadian:f}},HG=e=>{var{startAngle:t,endAngle:n}=e,r=Math.floor(t/360),i=Math.floor(n/360),l=Math.min(r,i);return{startAngle:t-l*360,endAngle:n-l*360}},qG=(e,t)=>{var{startAngle:n,endAngle:r}=t,i=Math.floor(n/360),l=Math.floor(r/360),c=Math.min(i,l);return e+c*360},FG=(e,t)=>{var{chartX:n,chartY:r}=e,{radius:i,angle:l}=UG({x:n,y:r},t),{innerRadius:c,outerRadius:u}=t;if(i<c||i>u||i===0)return null;var{startAngle:f,endAngle:h}=HG(t),p=l,m;if(f<=h){for(;p>h;)p-=360;for(;p<f;)p+=360;m=p>=f&&p<=h}else{for(;p>f;)p-=360;for(;p<h;)p+=360;m=p>=h&&p<=f}return m?RT(RT({},t),{},{radius:i,angle:qG(p,t)}):null};function PD(e){var{cx:t,cy:n,radius:r,startAngle:i,endAngle:l}=e,c=Nt(t,n,r,i),u=Nt(t,n,r,l);return{points:[c,u],cx:t,cy:n,radius:r,startAngle:i,endAngle:l}}var DT,kT,LT,IT,zT,$T,BT;function J0(){return J0=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},J0.apply(null,arguments)}function Qi(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var VG=(e,t)=>{var n=tn(t-e),r=Math.min(Math.abs(t-e),359.999);return n*r},ed=e=>{var{cx:t,cy:n,radius:r,angle:i,sign:l,isExternal:c,cornerRadius:u,cornerIsExternal:f}=e,h=u*(c?1:-1)+r,p=Math.asin(u/h)/Zd,m=f?i:i+l*p,y=Nt(t,n,h,m),x=Nt(t,n,r,m),S=f?i-l*p:i,w=Nt(t,n,h*Math.cos(p*Zd),S);return{center:y,circleTangency:x,lineTangency:w,theta:p}},RD=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:l,endAngle:c}=e,u=VG(l,c),f=l+u,h=Nt(t,n,i,l),p=Nt(t,n,i,f),m=gt(DT||(DT=Qi([
Line truncated
|
||||
A `,",",",0,0,",",",","," Z"])),e,t+f*w,w,w,p,e+h*w,t,e+n-h*w,t,w,w,p,e+n,t+f*w,e+n,t+r-f*w,w,w,p,e+n-h*w,t+r,e+h*w,t+r,w,w,p,e,t+r-f*w)}else m=gt(CT||(CT=Pr(["M ",","," h "," v "," h "," Z"])),e,t,n,r,-n);return m},jT={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},MD=e=>{var t=pn(e,jT),n=v.useRef(null),[r,i]=v.useState(-1);v.useEffect(()=>{if(n.current&&n.current.getTotalLength)try{var F=n.current.getTotalLength();F&&i(F)}catch{}},[]);var{x:l,y:c,width:u,height:f,radius:h,className:p}=t,{animationEasing:m,animationDuration:y,animationBegin:x,isAnimationActive:S,isUpdateAnimationActive:w}=t,O=v.useRef(u),A=v.useRef(f),_=v.useRef(l),T=v.useRef(c),j=v.useMemo(()=>({x:l,y:c,width:u,height:f,radius:h}),[l,c,u,f,h]),M=gp(j,"rectangle-");if(l!==+l||c!==+c||u!==+u||f!==+f||u===0||f===0)return null;var P=Ye("recharts-rectangle",p);if(!w){var R=ur(t),{radius:I}=R,B=NT(R,MG);return v.createElement("path",Xd({},B,{x:yi(l),y:yi(c),width:yi(u),height:yi(f),radius:typeof h=="number"?h:void 0,className:P,d:MT(l,c,u,f,h)}))}var q=O.current,U=A.current,V=_.current,oe=T.current,le="0px ".concat(r===-1?1:r,"px"),ce="".concat(r,"px 0px"),L=CD(["strokeDasharray"],y,typeof m=="string"?m:jT.animationEasing);return v.createElement(vp,{animationId:M,key:M,canBegin:r>0,duration:y,easing:m,isActive:w,begin:x},F=>{var $=Rt(q,u,F),Z=Rt(U,f,F),de=Rt(V,l,F),D=Rt(oe,c,F);n.current&&(O.current=$,A.current=Z,_.current=de,T.current=D);var X;S?F>0?X={transition:L,strokeDasharray:ce}:X={strokeDasharray:le}:X={strokeDasharray:ce};var ae=ur(t),{radius:se}=ae,me=NT(ae,jG);return v.createElement("path",Xd({},me,{radius:typeof h=="number"?h:void 0,className:P,d:MT(de,D,$,Z,h),ref:n,style:TT(TT({},X),t.style)}))})};function PT(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function RT(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?PT(Object(n),!0).forEach(function(r){LG(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):PT(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function LG(e,t,n){return(t=IG(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function IG(e){var t=zG(e,"string");return typeof t=="symbol"?t:t+""}function zG(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var Zd=Math.PI/180,$G=e=>e*180/Math.PI,Nt=(e,t,n,r)=>({x:e+Math.cos(-Zd*r)*n,y:t+Math.sin(-Zd*r)*n}),jD=function(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(t-(r.left||0)-(r.right||0)),Math.abs(n-(r.top||0)-(r.bottom||0)))/2},BG=(e,t)=>{var{x:n,y:r}=e,{x:i,y:l}=t;return Math.sqrt((n-i)**2+(r-l)**2)},UG=(e,t)=>{var{x:n,y:r}=e,{cx:i,cy:l}=t,c=BG({x:n,y:r},{x:i,y:l});if(c<=0)return{radius:c,angle:0};var u=(n-i)/c,f=Math.acos(u);return r>l&&(f=2*Math.PI-f),{radius:c,angle:$G(f),angleInRadian:f}},HG=e=>{var{startAngle:t,endAngle:n}=e,r=Math.floor(t/360),i=Math.floor(n/360),l=Math.min(r,i);return{startAngle:t-l*360,endAngle:n-l*360}},qG=(e,t)=>{var{startAngle:n,endAngle:r}=t,i=Math.floor(n/360),l=Math.floor(r/360),c=Math.min(i,l);return e+c*360},FG=(e,t)=>{var{chartX:n,chartY:r}=e,{radius:i,angle:l}=UG({x:n,y:r},t),{innerRadius:c,outerRadius:u}=t;if(i<c||i>u||i===0)return null;var{startAngle:f,endAngle:h}=HG(t),p=l,m;if(f<=h){for(;p>h;)p-=360;for(;p<f;)p+=360;m=p>=f&&p<=h}else{for(;p>f;)p-=360;for(;p<h;)p+=360;m=p>=h&&p<=f}return m?RT(RT({},t),{},{radius:i,angle:qG(p,t)}):null};function PD(e){var{cx:t,cy:n,radius:r,startAngle:i,endAngle:l}=e,c=Nt(t,n,r,i),u=Nt(t,n,r,l);return{points:[c,u],cx:t,cy:n,radius:r,startAngle:i,endAngle:l}}var DT,kT,LT,IT,zT,$T,BT;function J0(){return J0=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},J0.apply(null,arguments)}function Zi(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var VG=(e,t)=>{var n=tn(t-e),r=Math.min(Math.abs(t-e),359.999);return n*r},ed=e=>{var{cx:t,cy:n,radius:r,angle:i,sign:l,isExternal:c,cornerRadius:u,cornerIsExternal:f}=e,h=u*(c?1:-1)+r,p=Math.asin(u/h)/Zd,m=f?i:i+l*p,y=Nt(t,n,h,m),x=Nt(t,n,r,m),S=f?i-l*p:i,w=Nt(t,n,h*Math.cos(p*Zd),S);return{center:y,circleTangency:x,lineTangency:w,theta:p}},RD=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:l,endAngle:c}=e,u=VG(l,c),f=l+u,h=Nt(t,n,i,l),p=Nt(t,n,i,f),m=gt(DT||(DT=Zi([
Line truncated
|
||||
A `,",",`,0,
|
||||
`,",",`,
|
||||
`,",",`
|
||||
`])),h.x,h.y,i,i,+(Math.abs(u)>180),+(l>f),p.x,p.y);if(r>0){var y=Nt(t,n,r,l),x=Nt(t,n,r,f);m+=gt(kT||(kT=Qi(["L ",",",`
|
||||
`])),h.x,h.y,i,i,+(Math.abs(u)>180),+(l>f),p.x,p.y);if(r>0){var y=Nt(t,n,r,l),x=Nt(t,n,r,f);m+=gt(kT||(kT=Zi(["L ",",",`
|
||||
A `,",",`,0,
|
||||
`,",",`,
|
||||
`,","," Z"])),x.x,x.y,r,r,+(Math.abs(u)>180),+(l<=f),y.x,y.y)}else m+=gt(LT||(LT=Qi(["L ",","," Z"])),t,n);return m},KG=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,cornerRadius:l,forceCornerRadius:c,cornerIsExternal:u,startAngle:f,endAngle:h}=e,p=tn(h-f),{circleTangency:m,lineTangency:y,theta:x}=ed({cx:t,cy:n,radius:i,angle:f,sign:p,cornerRadius:l,cornerIsExternal:u}),{circleTangency:S,lineTangency:w,theta:O}=ed({cx:t,cy:n,radius:i,angle:h,sign:-p,cornerRadius:l,cornerIsExternal:u}),A=u?Math.abs(f-h):Math.abs(f-h)-x-O;if(A<0)return c?gt(IT||(IT=Qi(["M ",",",`
|
||||
`,","," Z"])),x.x,x.y,r,r,+(Math.abs(u)>180),+(l<=f),y.x,y.y)}else m+=gt(LT||(LT=Zi(["L ",","," Z"])),t,n);return m},KG=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,cornerRadius:l,forceCornerRadius:c,cornerIsExternal:u,startAngle:f,endAngle:h}=e,p=tn(h-f),{circleTangency:m,lineTangency:y,theta:x}=ed({cx:t,cy:n,radius:i,angle:f,sign:p,cornerRadius:l,cornerIsExternal:u}),{circleTangency:S,lineTangency:w,theta:O}=ed({cx:t,cy:n,radius:i,angle:h,sign:-p,cornerRadius:l,cornerIsExternal:u}),A=u?Math.abs(f-h):Math.abs(f-h)-x-O;if(A<0)return c?gt(IT||(IT=Zi(["M ",",",`
|
||||
a`,",",",0,0,1,",`,0
|
||||
a`,",",",0,0,1,",`,0
|
||||
`])),y.x,y.y,l,l,l*2,l,l,-l*2):RD({cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:f,endAngle:h});var _=gt(zT||(zT=Qi(["M ",",",`
|
||||
`])),y.x,y.y,l,l,l*2,l,l,-l*2):RD({cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:f,endAngle:h});var _=gt(zT||(zT=Zi(["M ",",",`
|
||||
A`,",",",0,0,",",",",",`
|
||||
A`,",",",0,",",",",",",",`
|
||||
A`,",",",0,0,",",",",",`
|
||||
`])),y.x,y.y,l,l,+(p<0),m.x,m.y,i,i,+(A>180),+(p<0),S.x,S.y,l,l,+(p<0),w.x,w.y);if(r>0){var{circleTangency:T,lineTangency:j,theta:M}=ed({cx:t,cy:n,radius:r,angle:f,sign:p,isExternal:!0,cornerRadius:l,cornerIsExternal:u}),{circleTangency:P,lineTangency:R,theta:I}=ed({cx:t,cy:n,radius:r,angle:h,sign:-p,isExternal:!0,cornerRadius:l,cornerIsExternal:u}),B=u?Math.abs(f-h):Math.abs(f-h)-M-I;if(B<0&&l===0)return"".concat(_,"L").concat(t,",").concat(n,"Z");_+=gt($T||($T=Qi(["L",",",`
|
||||
`])),y.x,y.y,l,l,+(p<0),m.x,m.y,i,i,+(A>180),+(p<0),S.x,S.y,l,l,+(p<0),w.x,w.y);if(r>0){var{circleTangency:T,lineTangency:j,theta:M}=ed({cx:t,cy:n,radius:r,angle:f,sign:p,isExternal:!0,cornerRadius:l,cornerIsExternal:u}),{circleTangency:P,lineTangency:R,theta:I}=ed({cx:t,cy:n,radius:r,angle:h,sign:-p,isExternal:!0,cornerRadius:l,cornerIsExternal:u}),B=u?Math.abs(f-h):Math.abs(f-h)-M-I;if(B<0&&l===0)return"".concat(_,"L").concat(t,",").concat(n,"Z");_+=gt($T||($T=Zi(["L",",",`
|
||||
A`,",",",0,0,",",",",",`
|
||||
A`,",",",0,",",",",",",",`
|
||||
A`,",",",0,0,",",",",","Z"])),R.x,R.y,l,l,+(p<0),P.x,P.y,r,r,+(B>180),+(p>0),T.x,T.y,l,l,+(p<0),j.x,j.y)}else _+=gt(BT||(BT=Qi(["L",",","Z"])),t,n);return _},YG={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},DD=e=>{var t=pn(e,YG),{cx:n,cy:r,innerRadius:i,outerRadius:l,cornerRadius:c,forceCornerRadius:u,cornerIsExternal:f,startAngle:h,endAngle:p,className:m}=t;if(l<i||h===p)return null;var y=Ye("recharts-sector",m),x=l-i,S=on(c,x,0,!0),w;return S>0&&Math.abs(h-p)<360?w=KG({cx:n,cy:r,innerRadius:i,outerRadius:l,cornerRadius:Math.min(S,x/2),forceCornerRadius:u,cornerIsExternal:f,startAngle:h,endAngle:p}):w=RD({cx:n,cy:r,innerRadius:i,outerRadius:l,startAngle:h,endAngle:p}),v.createElement("path",J0({},ur(t),{className:y,d:w}))};function GG(e,t,n){if(e==="horizontal")return[{x:t.x,y:n.top},{x:t.x,y:n.top+n.height}];if(e==="vertical")return[{x:n.left,y:t.y},{x:n.left+n.width,y:t.y}];if(yR(t)){if(e==="centric"){var{cx:r,cy:i,innerRadius:l,outerRadius:c,angle:u}=t,f=Nt(r,i,l,u),h=Nt(r,i,c,u);return[{x:f.x,y:f.y},{x:h.x,y:h.y}]}return PD(t)}}var jy={},Py={},Ry={},UT;function WG(){return UT||(UT=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=NR();function n(r){return t.isSymbol(r)?NaN:Number(r)}e.toNumber=n})(Ry)),Ry}var HT;function XG(){return HT||(HT=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=WG();function n(r){return r?(r=t.toNumber(r),r===1/0||r===-1/0?(r<0?-1:1)*Number.MAX_VALUE:r===r?r:0):r===0?r:0}e.toFinite=n})(Py)),Py}var qT;function ZG(){return qT||(qT=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=MR(),n=XG();function r(i,l,c){c&&typeof c!="number"&&t.isIterateeCall(i,l,c)&&(l=c=void 0),i=n.toFinite(i),l===void 0?(l=i,i=0):l=n.toFinite(l),c=c===void 0?i<l?1:-1:n.toFinite(c);const u=Math.max(Math.ceil((l-i)/(c||1)),0),f=new Array(u);for(let h=0;h<u;h++)f[h]=i,i+=c;return f}e.range=r})(jy)),jy}var Dy,FT;function QG(){return FT||(FT=1,Dy=ZG().range),Dy}var JG=QG();const kD=Vr(JG);function bi(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function eW(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function _x(e){let t,n,r;e.length!==2?(t=bi,n=(u,f)=>bi(e(u),f),r=(u,f)=>e(u)-f):(t=e===bi||e===eW?e:tW,n=e,r=e);function i(u,f,h=0,p=u.length){if(h<p){if(t(f,f)!==0)return p;do{const m=h+p>>>1;n(u[m],f)<0?h=m+1:p=m}while(h<p)}return h}function l(u,f,h=0,p=u.length){if(h<p){if(t(f,f)!==0)return p;do{const m=h+p>>>1;n(u[m],f)<=0?h=m+1:p=m}while(h<p)}return h}function c(u,f,h=0,p=u.length){const m=i(u,f,h,p-1);return m>h&&r(u[m-1],f)>-r(u[m],f)?m-1:m}return{left:i,center:c,right:l}}function tW(){return 0}function LD(e){return e===null?NaN:+e}function*nW(e,t){for(let n of e)n!=null&&(n=+n)>=n&&(yield n)}const rW=_x(bi),tu=rW.right;_x(LD).center;class VT extends Map{constructor(t,n=oW){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),t!=null)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(KT(this,t))}has(t){return super.has(KT(this,t))}set(t,n){return super.set(aW(this,t),n)}delete(t){return super.delete(iW(this,t))}}function KT({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):n}function aW({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function iW({_intern:e,_key:t},n){const r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function oW(e){return e!==null&&typeof e=="object"?e.valueOf():e}function lW(e=bi){if(e===bi)return ID;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,n)=>{const r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function ID(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}const sW=Math.sqrt(50),cW=Math.sqrt(10),uW=Math.sqrt(2);function Qd(e,t,n){const r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),l=r/Math.pow(10,i),c=l>=sW?10:l>=cW?5:l>=uW?2:1;let u,f,h;return i<0?(h=Math.pow(10,-i)/c,u=Math.round(e*h),f=Math.round(t*h),u/h<e&&++u,f/h>t&&--f,h=-h):(h=Math.pow(10,i)*c,u=Math.round(e/h),f=Math.round(t/h),u*h<e&&++u,f*h>t&&--f),f<u&&.5<=n&&n<2?Qd(e,t,n*2):[u,f,h]}function eb(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];const r=t<e,[i,l,c]=r?Qd(t,e,n):Qd(e,t,n);if(!(l>=i))return[];const u=l-i+1,f=new Array(u);if(r)if(c<0)for(let h=0;h<u;++h)f[h]=(l-h)/-c;else for(let h=0;h<u;++h)f[h]=(l-h)*c;else if(c<0)for(let h=0;h<u;++h)f[h]=(i+h)/-c;else for(let h=0;h<u;++h)f[h]=(i+h)*c;return f}function tb(e,t,n){return t=+t,e=+e,n=+n,Qd(e,t,n)[2]}function nb(e,t,n){t=+t,e=+e,n=+n;const r=t<e,i=r?tb(t,e,n):tb(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function YT(e,t){let n;for(const r of e)r!=null&&(n<r||n===void 0&&r>=r)&&(n=r);return n}function GT(e,t){let n;for(const r of e)r!=null&&(n>r||n===void 0&&r>=r)&&(n=r);return n}function zD(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e
Line truncated
|
||||
A`,",",",0,0,",",",",","Z"])),R.x,R.y,l,l,+(p<0),P.x,P.y,r,r,+(B>180),+(p>0),T.x,T.y,l,l,+(p<0),j.x,j.y)}else _+=gt(BT||(BT=Zi(["L",",","Z"])),t,n);return _},YG={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},DD=e=>{var t=pn(e,YG),{cx:n,cy:r,innerRadius:i,outerRadius:l,cornerRadius:c,forceCornerRadius:u,cornerIsExternal:f,startAngle:h,endAngle:p,className:m}=t;if(l<i||h===p)return null;var y=Ye("recharts-sector",m),x=l-i,S=on(c,x,0,!0),w;return S>0&&Math.abs(h-p)<360?w=KG({cx:n,cy:r,innerRadius:i,outerRadius:l,cornerRadius:Math.min(S,x/2),forceCornerRadius:u,cornerIsExternal:f,startAngle:h,endAngle:p}):w=RD({cx:n,cy:r,innerRadius:i,outerRadius:l,startAngle:h,endAngle:p}),v.createElement("path",J0({},ur(t),{className:y,d:w}))};function GG(e,t,n){if(e==="horizontal")return[{x:t.x,y:n.top},{x:t.x,y:n.top+n.height}];if(e==="vertical")return[{x:n.left,y:t.y},{x:n.left+n.width,y:t.y}];if(yR(t)){if(e==="centric"){var{cx:r,cy:i,innerRadius:l,outerRadius:c,angle:u}=t,f=Nt(r,i,l,u),h=Nt(r,i,c,u);return[{x:f.x,y:f.y},{x:h.x,y:h.y}]}return PD(t)}}var jy={},Py={},Ry={},UT;function WG(){return UT||(UT=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=NR();function n(r){return t.isSymbol(r)?NaN:Number(r)}e.toNumber=n})(Ry)),Ry}var HT;function XG(){return HT||(HT=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=WG();function n(r){return r?(r=t.toNumber(r),r===1/0||r===-1/0?(r<0?-1:1)*Number.MAX_VALUE:r===r?r:0):r===0?r:0}e.toFinite=n})(Py)),Py}var qT;function ZG(){return qT||(qT=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=MR(),n=XG();function r(i,l,c){c&&typeof c!="number"&&t.isIterateeCall(i,l,c)&&(l=c=void 0),i=n.toFinite(i),l===void 0?(l=i,i=0):l=n.toFinite(l),c=c===void 0?i<l?1:-1:n.toFinite(c);const u=Math.max(Math.ceil((l-i)/(c||1)),0),f=new Array(u);for(let h=0;h<u;h++)f[h]=i,i+=c;return f}e.range=r})(jy)),jy}var Dy,FT;function QG(){return FT||(FT=1,Dy=ZG().range),Dy}var JG=QG();const kD=Vr(JG);function bi(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function eW(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function _x(e){let t,n,r;e.length!==2?(t=bi,n=(u,f)=>bi(e(u),f),r=(u,f)=>e(u)-f):(t=e===bi||e===eW?e:tW,n=e,r=e);function i(u,f,h=0,p=u.length){if(h<p){if(t(f,f)!==0)return p;do{const m=h+p>>>1;n(u[m],f)<0?h=m+1:p=m}while(h<p)}return h}function l(u,f,h=0,p=u.length){if(h<p){if(t(f,f)!==0)return p;do{const m=h+p>>>1;n(u[m],f)<=0?h=m+1:p=m}while(h<p)}return h}function c(u,f,h=0,p=u.length){const m=i(u,f,h,p-1);return m>h&&r(u[m-1],f)>-r(u[m],f)?m-1:m}return{left:i,center:c,right:l}}function tW(){return 0}function LD(e){return e===null?NaN:+e}function*nW(e,t){for(let n of e)n!=null&&(n=+n)>=n&&(yield n)}const rW=_x(bi),tu=rW.right;_x(LD).center;class VT extends Map{constructor(t,n=oW){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),t!=null)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(KT(this,t))}has(t){return super.has(KT(this,t))}set(t,n){return super.set(aW(this,t),n)}delete(t){return super.delete(iW(this,t))}}function KT({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):n}function aW({_intern:e,_key:t},n){const r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function iW({_intern:e,_key:t},n){const r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function oW(e){return e!==null&&typeof e=="object"?e.valueOf():e}function lW(e=bi){if(e===bi)return ID;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,n)=>{const r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function ID(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(e<t?-1:e>t?1:0)}const sW=Math.sqrt(50),cW=Math.sqrt(10),uW=Math.sqrt(2);function Qd(e,t,n){const r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),l=r/Math.pow(10,i),c=l>=sW?10:l>=cW?5:l>=uW?2:1;let u,f,h;return i<0?(h=Math.pow(10,-i)/c,u=Math.round(e*h),f=Math.round(t*h),u/h<e&&++u,f/h>t&&--f,h=-h):(h=Math.pow(10,i)*c,u=Math.round(e/h),f=Math.round(t/h),u*h<e&&++u,f*h>t&&--f),f<u&&.5<=n&&n<2?Qd(e,t,n*2):[u,f,h]}function eb(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];const r=t<e,[i,l,c]=r?Qd(t,e,n):Qd(e,t,n);if(!(l>=i))return[];const u=l-i+1,f=new Array(u);if(r)if(c<0)for(let h=0;h<u;++h)f[h]=(l-h)/-c;else for(let h=0;h<u;++h)f[h]=(l-h)*c;else if(c<0)for(let h=0;h<u;++h)f[h]=(i+h)/-c;else for(let h=0;h<u;++h)f[h]=(i+h)*c;return f}function tb(e,t,n){return t=+t,e=+e,n=+n,Qd(e,t,n)[2]}function nb(e,t,n){t=+t,e=+e,n=+n;const r=t<e,i=r?tb(t,e,n):tb(e,t,n);return(r?-1:1)*(i<0?1/-i:i)}function YT(e,t){let n;for(const r of e)r!=null&&(n<r||n===void 0&&r>=r)&&(n=r);return n}function GT(e,t){let n;for(const r of e)r!=null&&(n>r||n===void 0&&r>=r)&&(n=r);return n}function zD(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e
Line truncated
|
||||
A`).concat(S,",").concat(S,",0,1,").concat(_?0:1,`,
|
||||
`).concat(j.x,",").concat(j.y),P=Vt(e.id)?Ac("recharts-radial-line-"):e.id;return v.createElement("text",va({},r,{dominantBaseline:"central",className:Ye("recharts-radial-bar-label",c)}),v.createElement("defs",null,v.createElement("path",{id:P,d:M})),v.createElement("textPath",{xlinkHref:"#".concat(P)},n))},Kte=(e,t,n)=>{var{cx:r,cy:i,innerRadius:l,outerRadius:c,startAngle:u,endAngle:f}=e,h=(u+f)/2;if(n==="outside"){var{x:p,y:m}=Nt(r,i,c+t,h);return{x:p,y:m,textAnchor:p>=r?"start":"end",verticalAnchor:"middle"}}if(n==="center")return{x:r,y:i,textAnchor:"middle",verticalAnchor:"middle"};if(n==="centerTop")return{x:r,y:i,textAnchor:"middle",verticalAnchor:"start"};if(n==="centerBottom")return{x:r,y:i,textAnchor:"middle",verticalAnchor:"end"};var y=(l+c)/2,{x,y:S}=Nt(r,i,y,h);return{x,y:S,textAnchor:"middle",verticalAnchor:"middle"}},mb=e=>"cx"in e&&Oe(e.cx),Yte=(e,t)=>{var{parentViewBox:n,offset:r,position:i}=e,l;n!=null&&!mb(n)&&(l=n);var{x:c,y:u,upperWidth:f,lowerWidth:h,height:p}=t,m=c,y=c+(f-h)/2,x=(m+y)/2,S=(f+h)/2,w=m+f/2,O=p>=0?1:-1,A=O*r,_=O>0?"end":"start",T=O>0?"start":"end",j=f>=0?1:-1,M=j*r,P=j>0?"end":"start",R=j>0?"start":"end";if(i==="top"){var I={x:m+f/2,y:u-A,textAnchor:"middle",verticalAnchor:_};return Ot(Ot({},I),l?{height:Math.max(u-l.y,0),width:f}:{})}if(i==="bottom"){var B={x:y+h/2,y:u+p+A,textAnchor:"middle",verticalAnchor:T};return Ot(Ot({},B),l?{height:Math.max(l.y+l.height-(u+p),0),width:h}:{})}if(i==="left"){var q={x:x-M,y:u+p/2,textAnchor:P,verticalAnchor:"middle"};return Ot(Ot({},q),l?{width:Math.max(q.x-l.x,0),height:p}:{})}if(i==="right"){var U={x:x+S+M,y:u+p/2,textAnchor:R,verticalAnchor:"middle"};return Ot(Ot({},U),l?{width:Math.max(l.x+l.width-U.x,0),height:p}:{})}var V=l?{width:S,height:p}:{};return i==="insideLeft"?Ot({x:x+M,y:u+p/2,textAnchor:R,verticalAnchor:"middle"},V):i==="insideRight"?Ot({x:x+S-M,y:u+p/2,textAnchor:P,verticalAnchor:"middle"},V):i==="insideTop"?Ot({x:m+f/2,y:u+A,textAnchor:"middle",verticalAnchor:T},V):i==="insideBottom"?Ot({x:y+h/2,y:u+p-A,textAnchor:"middle",verticalAnchor:_},V):i==="insideTopLeft"?Ot({x:m+M,y:u+A,textAnchor:R,verticalAnchor:T},V):i==="insideTopRight"?Ot({x:m+f-M,y:u+A,textAnchor:P,verticalAnchor:T},V):i==="insideBottomLeft"?Ot({x:y+M,y:u+p-A,textAnchor:R,verticalAnchor:_},V):i==="insideBottomRight"?Ot({x:y+h-M,y:u+p-A,textAnchor:P,verticalAnchor:_},V):i&&typeof i=="object"&&(Oe(i.x)||Ea(i.x))&&(Oe(i.y)||Ea(i.y))?Ot({x:c+on(i.x,S),y:u+on(i.y,p),textAnchor:"end",verticalAnchor:"end"},V):Ot({x:w,y:u+p/2,textAnchor:"middle",verticalAnchor:"middle"},V)},Gte={angle:0,offset:5,zIndex:an.label,position:"middle",textBreakAll:!1};function vi(e){var t=pn(e,Gte),{viewBox:n,position:r,value:i,children:l,content:c,className:u="",textBreakAll:f,labelRef:h}=t,p=Hte(),m=WL(),y=r==="center"?m:p??m,x,S,w;if(n==null?x=y:mb(n)?x=n:x=pD(n),!x||Vt(i)&&Vt(l)&&!v.isValidElement(c)&&typeof c!="function")return null;var O=Ot(Ot({},t),{},{viewBox:x});if(v.isValidElement(c)){var{labelRef:A}=O,_=l2(O,Dte);return v.cloneElement(c,_)}if(typeof c=="function"){var{content:T}=O,j=l2(O,kte);if(S=v.createElement(c,j),v.isValidElement(S))return S}else S=qte(t);var M=ur(t);if(mb(x)){if(r==="insideStart"||r==="insideEnd"||r==="end")return Vte(t,r,S,M,x);w=Kte(x,t.offset,t.position)}else w=Yte(t,x);return v.createElement(Gr,{zIndex:t.zIndex},v.createElement(kp,va({ref:h,className:Ye("recharts-label",u)},M,w,{textAnchor:Nte(M.textAnchor)?M.textAnchor:w.textAnchor,breakAll:f}),S))}vi.displayName="Label";var Wte=(e,t,n)=>{if(!e)return null;var r={viewBox:t,labelRef:n};return e===!0?v.createElement(vi,va({key:"label-implicit"},r)):qr(e)?v.createElement(vi,va({key:"label-implicit",value:e},r)):v.isValidElement(e)?e.type===vi?v.cloneElement(e,Ot({key:"label-implicit"},r)):v.createElement(vi,va({key:"label-implicit",content:e},r)):I1(e)?v.createElement(vi,va({key:"label-implicit",content:e},r)):e&&typeof e=="object"?v.createElement(vi,va({},e,{key:"label-implicit"},r)):null};function Xte(e){var{label:t,labelRef:n}=e,r=WL();return Wte(t,r,n)||null}var Vy={},Ky={},c2;function Zte(){return c2||(c2=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return n[n.length-1]}e.last=t})(Ky)),Ky}var Yy={},u2;function Qte(){return u2||(u2=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return Array.isArray(n)?n:Array.from(n)}e.toArray=t})(Yy)),Yy}var f2;function Jte(){return f2||(f2=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Zte(),n=Qte(),r=dx();function i(l){if(r.isArrayLike(l))return t.last(n.toArray(l))}e.last=i})(Vy)),Vy}var Gy,d2;function ene(){return d2||(d2=1,Gy=Jte().last),Gy}var tne=ene();const nne=Vr(tne);var rne=["valueAccessor"],ane=["dataKey","clockWise","id","textBreakAll","zIndex"];function fh(){return fh=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e
Line truncated
|
||||
`).concat(j.x,",").concat(j.y),P=Vt(e.id)?Ac("recharts-radial-line-"):e.id;return v.createElement("text",va({},r,{dominantBaseline:"central",className:Ye("recharts-radial-bar-label",c)}),v.createElement("defs",null,v.createElement("path",{id:P,d:M})),v.createElement("textPath",{xlinkHref:"#".concat(P)},n))},Kte=(e,t,n)=>{var{cx:r,cy:i,innerRadius:l,outerRadius:c,startAngle:u,endAngle:f}=e,h=(u+f)/2;if(n==="outside"){var{x:p,y:m}=Nt(r,i,c+t,h);return{x:p,y:m,textAnchor:p>=r?"start":"end",verticalAnchor:"middle"}}if(n==="center")return{x:r,y:i,textAnchor:"middle",verticalAnchor:"middle"};if(n==="centerTop")return{x:r,y:i,textAnchor:"middle",verticalAnchor:"start"};if(n==="centerBottom")return{x:r,y:i,textAnchor:"middle",verticalAnchor:"end"};var y=(l+c)/2,{x,y:S}=Nt(r,i,y,h);return{x,y:S,textAnchor:"middle",verticalAnchor:"middle"}},mb=e=>"cx"in e&&Oe(e.cx),Yte=(e,t)=>{var{parentViewBox:n,offset:r,position:i}=e,l;n!=null&&!mb(n)&&(l=n);var{x:c,y:u,upperWidth:f,lowerWidth:h,height:p}=t,m=c,y=c+(f-h)/2,x=(m+y)/2,S=(f+h)/2,w=m+f/2,O=p>=0?1:-1,A=O*r,_=O>0?"end":"start",T=O>0?"start":"end",j=f>=0?1:-1,M=j*r,P=j>0?"end":"start",R=j>0?"start":"end";if(i==="top"){var I={x:m+f/2,y:u-A,textAnchor:"middle",verticalAnchor:_};return Ot(Ot({},I),l?{height:Math.max(u-l.y,0),width:f}:{})}if(i==="bottom"){var B={x:y+h/2,y:u+p+A,textAnchor:"middle",verticalAnchor:T};return Ot(Ot({},B),l?{height:Math.max(l.y+l.height-(u+p),0),width:h}:{})}if(i==="left"){var q={x:x-M,y:u+p/2,textAnchor:P,verticalAnchor:"middle"};return Ot(Ot({},q),l?{width:Math.max(q.x-l.x,0),height:p}:{})}if(i==="right"){var U={x:x+S+M,y:u+p/2,textAnchor:R,verticalAnchor:"middle"};return Ot(Ot({},U),l?{width:Math.max(l.x+l.width-U.x,0),height:p}:{})}var V=l?{width:S,height:p}:{};return i==="insideLeft"?Ot({x:x+M,y:u+p/2,textAnchor:R,verticalAnchor:"middle"},V):i==="insideRight"?Ot({x:x+S-M,y:u+p/2,textAnchor:P,verticalAnchor:"middle"},V):i==="insideTop"?Ot({x:m+f/2,y:u+A,textAnchor:"middle",verticalAnchor:T},V):i==="insideBottom"?Ot({x:y+h/2,y:u+p-A,textAnchor:"middle",verticalAnchor:_},V):i==="insideTopLeft"?Ot({x:m+M,y:u+A,textAnchor:R,verticalAnchor:T},V):i==="insideTopRight"?Ot({x:m+f-M,y:u+A,textAnchor:P,verticalAnchor:T},V):i==="insideBottomLeft"?Ot({x:y+M,y:u+p-A,textAnchor:R,verticalAnchor:_},V):i==="insideBottomRight"?Ot({x:y+h-M,y:u+p-A,textAnchor:P,verticalAnchor:_},V):i&&typeof i=="object"&&(Oe(i.x)||Ea(i.x))&&(Oe(i.y)||Ea(i.y))?Ot({x:c+on(i.x,S),y:u+on(i.y,p),textAnchor:"end",verticalAnchor:"end"},V):Ot({x:w,y:u+p/2,textAnchor:"middle",verticalAnchor:"middle"},V)},Gte={angle:0,offset:5,zIndex:an.label,position:"middle",textBreakAll:!1};function vi(e){var t=pn(e,Gte),{viewBox:n,position:r,value:i,children:l,content:c,className:u="",textBreakAll:f,labelRef:h}=t,p=Hte(),m=WL(),y=r==="center"?m:p??m,x,S,w;if(n==null?x=y:mb(n)?x=n:x=pD(n),!x||Vt(i)&&Vt(l)&&!v.isValidElement(c)&&typeof c!="function")return null;var O=Ot(Ot({},t),{},{viewBox:x});if(v.isValidElement(c)){var{labelRef:A}=O,_=l2(O,Dte);return v.cloneElement(c,_)}if(typeof c=="function"){var{content:T}=O,j=l2(O,kte);if(S=v.createElement(c,j),v.isValidElement(S))return S}else S=qte(t);var M=ur(t);if(mb(x)){if(r==="insideStart"||r==="insideEnd"||r==="end")return Vte(t,r,S,M,x);w=Kte(x,t.offset,t.position)}else w=Yte(t,x);return v.createElement(Gr,{zIndex:t.zIndex},v.createElement(kp,va({ref:h,className:Ye("recharts-label",u)},M,w,{textAnchor:Nte(M.textAnchor)?M.textAnchor:w.textAnchor,breakAll:f}),S))}vi.displayName="Label";var Wte=(e,t,n)=>{if(!e)return null;var r={viewBox:t,labelRef:n};return e===!0?v.createElement(vi,va({key:"label-implicit"},r)):qr(e)?v.createElement(vi,va({key:"label-implicit",value:e},r)):v.isValidElement(e)?e.type===vi?v.cloneElement(e,Ot({key:"label-implicit"},r)):v.createElement(vi,va({key:"label-implicit",content:e},r)):I1(e)?v.createElement(vi,va({key:"label-implicit",content:e},r)):e&&typeof e=="object"?v.createElement(vi,va({},e,{key:"label-implicit"},r)):null};function Xte(e){var{label:t,labelRef:n}=e,r=WL();return Wte(t,r,n)||null}var Vy={},Ky={},c2;function Zte(){return c2||(c2=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return n[n.length-1]}e.last=t})(Ky)),Ky}var Yy={},u2;function Qte(){return u2||(u2=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){return Array.isArray(n)?n:Array.from(n)}e.toArray=t})(Yy)),Yy}var f2;function Jte(){return f2||(f2=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Zte(),n=Qte(),r=dx();function i(l){if(r.isArrayLike(l))return t.last(n.toArray(l))}e.last=i})(Vy)),Vy}var Gy,d2;function ene(){return d2||(d2=1,Gy=Jte().last),Gy}var tne=ene();const nne=Vr(tne);var rne=["valueAccessor"],ane=["dataKey","clockWise","id","textBreakAll","zIndex"];function fh(){return fh=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e
Line truncated
|
||||
- a positive number
|
||||
- less than the value passed to \`max\` (or ${Q1} if no \`max\` prop is set)
|
||||
- \`null\` or \`undefined\` if the progress is indeterminate.
|
||||
|
||||
Defaulting to \`null\`.`}var VI=UI,Tle=qI;const KI=v.forwardRef(({className:e,value:t,...n},r)=>E.jsx(VI,{ref:r,className:Ee("relative h-2 w-full overflow-hidden rounded-full bg-secondary",e),...n,children:E.jsx(Tle,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(t||0)}%)`}})}));KI.displayName=VI.displayName;const YI=v.createContext(null);function Nle(){const e=v.useContext(YI);if(!e)throw new Error("useChart must be used within a <ChartContainer />");return e}const bh=v.forwardRef(({id:e,className:t,children:n,config:r,...i},l)=>{const c=v.useId(),u=`chart-${e||c.replace(/:/g,"")}`;return E.jsx(YI.Provider,{value:{config:r},children:E.jsx("div",{"data-chart":u,ref:l,className:Ee("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",t),...i,children:E.jsx(pY,{children:n})})})});bh.displayName="Chart";const Ob=nte,xh=v.forwardRef(({active:e,payload:t,className:n,indicator:r="dot",hideLabel:i=!1,hideIndicator:l=!1,label:c,labelFormatter:u,formatter:f,nameKey:h,labelKey:p},m)=>{const{config:y}=Nle(),x=v.useMemo(()=>{if(i||!t?.length)return null;const[w]=t,O=`${p||w?.dataKey||w?.name||"value"}`,_=y[O]?.label||c;return u&&t?E.jsx("div",{className:"font-medium",children:u(_,t)}):_?E.jsx("div",{className:"font-medium",children:_}):null},[c,u,t,i,y,p]);if(!e||!t?.length)return null;const S=t.length===1&&r!=="dot";return E.jsxs("div",{ref:m,className:Ee("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",n),children:[S?null:x,E.jsx("div",{className:"grid gap-1.5",children:t.map((w,O)=>{const A=`${h||w.name||w.dataKey||"value"}`,_=y[A],T=w.payload?.fill||w.fill||w.color;return E.jsx("div",{className:Ee("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",r==="dot"&&"items-center"),children:f&&w?.value!==void 0&&w.name?f(w.value,w.name,w,O,w.payload):E.jsxs(E.Fragment,{children:[_?.icon?E.jsx(_.icon,{}):!l&&E.jsx("div",{className:Ee("shrink-0 rounded-[2px]",{"h-2.5 w-2.5":r==="dot","w-1":r==="line","w-0 border-[1.5px] border-dashed bg-transparent":r==="dashed","my-0.5":S&&r==="dashed"}),style:{backgroundColor:T,borderColor:T}}),E.jsxs("div",{className:Ee("flex flex-1 justify-between leading-none",S?"items-end":"items-center"),children:[E.jsxs("div",{className:"grid gap-1.5",children:[S?x:null,E.jsx("span",{className:"text-muted-foreground",children:_?.label||w.name})]}),w.value!==void 0&&E.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:w.value.toLocaleString()})]})]})},w.dataKey||O)})})]})});xh.displayName="ChartTooltip";const ar={hosts:"hsl(var(--chart-1))",ports:"hsl(var(--chart-2))",services:"hsl(var(--chart-3))",vulns:"hsl(var(--chart-4))"};function Mle({status:e}){const{t}=wo(),n=e?.state==="running",r=e?.state==="stopping",i=v.useMemo(()=>e?.stats?[{name:t("statsHosts"),value:e.stats.hosts_scanned||0,fill:ar.hosts},{name:t("statsPorts"),value:e.stats.ports_scanned||0,fill:ar.ports},{name:t("statsServices"),value:e.stats.services_found||0,fill:ar.services},{name:t("statsVulns"),value:e.stats.vulns_found||0,fill:ar.vulns}].filter(f=>f.value>0):[],[e?.stats,t]),l={hosts:{label:t("statsHosts"),color:ar.hosts},ports:{label:t("statsPorts"),color:ar.ports},services:{label:t("statsServices"),color:ar.services},vulns:{label:t("statsVulns"),color:ar.vulns}},c=v.useMemo(()=>e?.stats?(e.stats.hosts_scanned||0)+(e.stats.ports_scanned||0)+(e.stats.services_found||0)+(e.stats.vulns_found||0):0,[e?.stats]),u=[{key:"hosts",label:t("statsHosts"),value:e?.stats.hosts_scanned||0,color:ar.hosts},{key:"ports",label:t("statsPorts"),value:e?.stats.ports_scanned||0,color:ar.ports},{key:"services",label:t("statsServices"),value:e?.stats.services_found||0,color:ar.services},{key:"vulns",label:t("statsVulns"),value:e?.stats.vulns_found||0,color:ar.vulns}];return E.jsxs(Gl,{className:"h-full",children:[E.jsxs(Wl,{className:"flex flex-row items-center justify-between space-y-0 pb-3",children:[E.jsxs(Xl,{className:"flex items-center gap-2 text-base",children:[E.jsx(xd,{className:"w-4 h-4 sm:w-5 sm:h-5 text-muted-foreground"}),t("resultsDistribution")]}),E.jsxs(ga,{variant:n?"default":r?"secondary":"outline",className:"gap-1",children:[n?E.jsx(yM,{className:"w-3 h-3"}):r?E.jsx(c0,{className:"w-3 h-3 animate-spin"}):E.jsx(xM,{className:"w-3 h-3"Line truncated
|
||||
Defaulting to \`null\`.`}var VI=UI,Tle=qI;const KI=v.forwardRef(({className:e,value:t,...n},r)=>E.jsx(VI,{ref:r,className:Ee("relative h-2 w-full overflow-hidden rounded-full bg-secondary",e),...n,children:E.jsx(Tle,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(t||0)}%)`}})}));KI.displayName=VI.displayName;const YI=v.createContext(null);function Nle(){const e=v.useContext(YI);if(!e)throw new Error("useChart must be used within a <ChartContainer />");return e}const bh=v.forwardRef(({id:e,className:t,children:n,config:r,...i},l)=>{const c=v.useId(),u=`chart-${e||c.replace(/:/g,"")}`;return E.jsx(YI.Provider,{value:{config:r},children:E.jsx("div",{"data-chart":u,ref:l,className:Ee("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",t),...i,children:E.jsx(pY,{children:n})})})});bh.displayName="Chart";const Ob=nte,xh=v.forwardRef(({active:e,payload:t,className:n,indicator:r="dot",hideLabel:i=!1,hideIndicator:l=!1,label:c,labelFormatter:u,formatter:f,nameKey:h,labelKey:p},m)=>{const{config:y}=Nle(),x=v.useMemo(()=>{if(i||!t?.length)return null;const[w]=t,O=`${p||w?.dataKey||w?.name||"value"}`,_=y[O]?.label||c;return u&&t?E.jsx("div",{className:"font-medium",children:u(_,t)}):_?E.jsx("div",{className:"font-medium",children:_}):null},[c,u,t,i,y,p]);if(!e||!t?.length)return null;const S=t.length===1&&r!=="dot";return E.jsxs("div",{ref:m,className:Ee("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",n),children:[S?null:x,E.jsx("div",{className:"grid gap-1.5",children:t.map((w,O)=>{const A=`${h||w.name||w.dataKey||"value"}`,_=y[A],T=w.payload?.fill||w.fill||w.color;return E.jsx("div",{className:Ee("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",r==="dot"&&"items-center"),children:f&&w?.value!==void 0&&w.name?f(w.value,w.name,w,O,w.payload):E.jsxs(E.Fragment,{children:[_?.icon?E.jsx(_.icon,{}):!l&&E.jsx("div",{className:Ee("shrink-0 rounded-[2px]",{"h-2.5 w-2.5":r==="dot","w-1":r==="line","w-0 border-[1.5px] border-dashed bg-transparent":r==="dashed","my-0.5":S&&r==="dashed"}),style:{backgroundColor:T,borderColor:T}}),E.jsxs("div",{className:Ee("flex flex-1 justify-between leading-none",S?"items-end":"items-center"),children:[E.jsxs("div",{className:"grid gap-1.5",children:[S?x:null,E.jsx("span",{className:"text-muted-foreground",children:_?.label||w.name})]}),w.value!==void 0&&E.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:w.value.toLocaleString()})]})]})},w.dataKey||O)})})]})});xh.displayName="ChartTooltip";const ar={hosts:"hsl(var(--chart-1))",ports:"hsl(var(--chart-2))",services:"hsl(var(--chart-3))",vulns:"hsl(var(--chart-4))"};function Mle({status:e}){const{t}=xo(),n=e?.state==="running",r=e?.state==="stopping",i=v.useMemo(()=>e?.stats?[{name:t("statsHosts"),value:e.stats.hosts_scanned||0,fill:ar.hosts},{name:t("statsPorts"),value:e.stats.ports_scanned||0,fill:ar.ports},{name:t("statsServices"),value:e.stats.services_found||0,fill:ar.services},{name:t("statsVulns"),value:e.stats.vulns_found||0,fill:ar.vulns}].filter(f=>f.value>0):[],[e?.stats,t]),l={hosts:{label:t("statsHosts"),color:ar.hosts},ports:{label:t("statsPorts"),color:ar.ports},services:{label:t("statsServices"),color:ar.services},vulns:{label:t("statsVulns"),color:ar.vulns}},c=v.useMemo(()=>e?.stats?(e.stats.hosts_scanned||0)+(e.stats.ports_scanned||0)+(e.stats.services_found||0)+(e.stats.vulns_found||0):0,[e?.stats]),u=[{key:"hosts",label:t("statsHosts"),value:e?.stats.hosts_scanned||0,color:ar.hosts},{key:"ports",label:t("statsPorts"),value:e?.stats.ports_scanned||0,color:ar.ports},{key:"services",label:t("statsServices"),value:e?.stats.services_found||0,color:ar.services},{key:"vulns",label:t("statsVulns"),value:e?.stats.vulns_found||0,color:ar.vulns}];return E.jsxs(Gl,{className:"h-full",children:[E.jsxs(Wl,{className:"flex flex-row items-center justify-between space-y-0 pb-3",children:[E.jsxs(Xl,{className:"flex items-center gap-2 text-base",children:[E.jsx(xd,{className:"w-4 h-4 sm:w-5 sm:h-5 text-muted-foreground"}),t("resultsDistribution")]}),E.jsxs(ga,{variant:n?"default":r?"secondary":"outline",className:"gap-1",children:[n?E.jsx(yM,{className:"w-3 h-3"}):r?E.jsx(c0,{className:"w-3 h-3 animate-spin"}):E.jsx(xM,{className:"w-3 h-3"Line truncated
|
||||
|
||||
If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
|
||||
|
||||
@@ -93,4 +93,4 @@ You can add a description to the \`${Ml}\` by passing a \`${V3}\` component as a
|
||||
|
||||
Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${Ml}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
|
||||
|
||||
For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return v.useEffect(()=>{document.getElementById(e.current?.getAttribute("aria-describedby"))||console.warn(t)},[t,e]),null},zse=z3,$se=$3,Bse=B3,X3=U3,Z3=H3,Q3=Y3,J3=W3,ez=F3,tz=K3;const Use=zse,Hse=$se,qse=Bse,nz=v.forwardRef(({className:e,...t},n)=>E.jsx(X3,{className:Ee("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t,ref:n}));nz.displayName=X3.displayName;const rz=v.forwardRef(({className:e,...t},n)=>E.jsxs(qse,{children:[E.jsx(nz,{}),E.jsx(Z3,{ref:n,className:Ee("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...t})]}));rz.displayName=Z3.displayName;const az=({className:e,...t})=>E.jsx("div",{className:Ee("flex flex-col space-y-2 text-center sm:text-left",e),...t});az.displayName="AlertDialogHeader";const iz=({className:e,...t})=>E.jsx("div",{className:Ee("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});iz.displayName="AlertDialogFooter";const oz=v.forwardRef(({className:e,...t},n)=>E.jsx(ez,{ref:n,className:Ee("text-lg font-semibold",e),...t}));oz.displayName=ez.displayName;const lz=v.forwardRef(({className:e,...t},n)=>E.jsx(tz,{ref:n,className:Ee("text-sm text-muted-foreground",e),...t}));lz.displayName=tz.displayName;const sz=v.forwardRef(({className:e,...t},n)=>E.jsx(Q3,{ref:n,className:Ee(Vb(),e),...t}));sz.displayName=Q3.displayName;const cz=v.forwardRef(({className:e,...t},n)=>E.jsx(J3,{ref:n,className:Ee(Vb({variant:"outline"}),"mt-2 sm:mt-0",e),...t}));cz.displayName=J3.displayName;function Fse(e){const t=Vse(e),n=v.forwardRef((r,i)=>{const{children:l,...c}=r,u=v.Children.toArray(l),f=u.find(Yse);if(f){const h=f.props.children,p=u.map(m=>m===f?v.Children.count(h)>1?v.Children.only(null):v.isValidElement(h)?h.props.children:null:m);return E.jsx(t,{...c,ref:i,children:v.isValidElement(h)?v.cloneElement(h,void 0,p):null})}return E.jsx(t,{...c,ref:i,children:l})});return n.displayName=`${e}.Slot`,n}function Vse(e){const t=v.forwardRef((n,r)=>{const{children:i,...l}=n;if(v.isValidElement(i)){const c=Wse(i),u=Gse(l,i.props);return i.type!==v.Fragment&&(u.ref=r?ja(r,c):c),v.cloneElement(i,u)}return v.Children.count(i)>1?v.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Kse=Symbol("radix.slottable");function Yse(e){return v.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Kse}function Gse(e,t){const n={...t};for(const r in t){const i=e[r],l=t[r];/^on[A-Z]/.test(r)?i&&l?n[r]=(...u)=>{const f=l(...u);return i(...u),f}:i&&(n[r]=i):r==="style"?n[r]={...i,...l}:r==="className"&&(n[r]=[i,l].filter(Boolean).join(" "))}return{...e,...n}}function Wse(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Ab=["Enter"," "],Xse=["ArrowDown","PageUp","Home"],uz=["ArrowUp","PageDown","End"],Zse=[...Xse,...uz],Qse={ltr:[...Ab,"ArrowRight"],rtl:[...Ab,"ArrowLeft"]},Jse={ltr:["ArrowLeft"],rtl:["ArrowRight"]},vu="Menu",[Bc,ece,tce]=Kb(vu),[To,fz]=Fn(vu,[tce,Fl,$p]),Hp=Fl(),dz=$p(),[nce,No]=To(vu),[rce,gu]=To(vu),hz=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:l,modal:c=!0}=e,u=Hp(t),[f,h]=v.useState(null),p=v.useRef(!1),m=en(l),y=Kc(i);return v.useEffect(()=>{const x=()=>{p.current=!0,document.addEventListener("pointerdown",S,{capture:!0,once:!0}),document.addEventListener("pointermove",S,{capture:!0,once:!0})},S=()=>p.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",S,{capture:!0}),document.removeEventListener("pointermove",S,{capture:!0})}},[]),E.jsx(zb,{...u,children:E.jsx(nce,{scope:t,open:n,onOpenChange:m,content:f,onContentChange:h,children:E.jsx(rce,{scope:t,onClose:v.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:p,dir:y,modal:c,children:r})})})};hz.displayName=vu;var ace="MenuAnchor",rw=v.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,i=Hp(n);return E.jsx($b,{...i,...r,ref:t})});rw.displayName=ace;var aw="MenuPortal",[ice,pz]=To(aw,{forceMount:void 0}),mz=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:i}=e,l=No(aw,t);return E.jsx(ice,{scope:t,forceMount:n,children:E.jsx(ln,{present:n||l.open,children:E.jsx(Fc,{asChild:!0,container
Line truncated
|
||||
For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return v.useEffect(()=>{document.getElementById(e.current?.getAttribute("aria-describedby"))||console.warn(t)},[t,e]),null},zse=z3,$se=$3,Bse=B3,X3=U3,Z3=H3,Q3=Y3,J3=W3,ez=F3,tz=K3;const Use=zse,Hse=$se,qse=Bse,nz=v.forwardRef(({className:e,...t},n)=>E.jsx(X3,{className:Ee("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t,ref:n}));nz.displayName=X3.displayName;const rz=v.forwardRef(({className:e,...t},n)=>E.jsxs(qse,{children:[E.jsx(nz,{}),E.jsx(Z3,{ref:n,className:Ee("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...t})]}));rz.displayName=Z3.displayName;const az=({className:e,...t})=>E.jsx("div",{className:Ee("flex flex-col space-y-2 text-center sm:text-left",e),...t});az.displayName="AlertDialogHeader";const iz=({className:e,...t})=>E.jsx("div",{className:Ee("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});iz.displayName="AlertDialogFooter";const oz=v.forwardRef(({className:e,...t},n)=>E.jsx(ez,{ref:n,className:Ee("text-lg font-semibold",e),...t}));oz.displayName=ez.displayName;const lz=v.forwardRef(({className:e,...t},n)=>E.jsx(tz,{ref:n,className:Ee("text-sm text-muted-foreground",e),...t}));lz.displayName=tz.displayName;const sz=v.forwardRef(({className:e,...t},n)=>E.jsx(Q3,{ref:n,className:Ee(Vb(),e),...t}));sz.displayName=Q3.displayName;const cz=v.forwardRef(({className:e,...t},n)=>E.jsx(J3,{ref:n,className:Ee(Vb({variant:"outline"}),"mt-2 sm:mt-0",e),...t}));cz.displayName=J3.displayName;function Fse(e){const t=Vse(e),n=v.forwardRef((r,i)=>{const{children:l,...c}=r,u=v.Children.toArray(l),f=u.find(Yse);if(f){const h=f.props.children,p=u.map(m=>m===f?v.Children.count(h)>1?v.Children.only(null):v.isValidElement(h)?h.props.children:null:m);return E.jsx(t,{...c,ref:i,children:v.isValidElement(h)?v.cloneElement(h,void 0,p):null})}return E.jsx(t,{...c,ref:i,children:l})});return n.displayName=`${e}.Slot`,n}function Vse(e){const t=v.forwardRef((n,r)=>{const{children:i,...l}=n;if(v.isValidElement(i)){const c=Wse(i),u=Gse(l,i.props);return i.type!==v.Fragment&&(u.ref=r?ja(r,c):c),v.cloneElement(i,u)}return v.Children.count(i)>1?v.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Kse=Symbol("radix.slottable");function Yse(e){return v.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Kse}function Gse(e,t){const n={...t};for(const r in t){const i=e[r],l=t[r];/^on[A-Z]/.test(r)?i&&l?n[r]=(...u)=>{const f=l(...u);return i(...u),f}:i&&(n[r]=i):r==="style"?n[r]={...i,...l}:r==="className"&&(n[r]=[i,l].filter(Boolean).join(" "))}return{...e,...n}}function Wse(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Ab=["Enter"," "],Xse=["ArrowDown","PageUp","Home"],uz=["ArrowUp","PageDown","End"],Zse=[...Xse,...uz],Qse={ltr:[...Ab,"ArrowRight"],rtl:[...Ab,"ArrowLeft"]},Jse={ltr:["ArrowLeft"],rtl:["ArrowRight"]},vu="Menu",[Bc,ece,tce]=Kb(vu),[To,fz]=Fn(vu,[tce,Fl,$p]),Hp=Fl(),dz=$p(),[nce,No]=To(vu),[rce,gu]=To(vu),hz=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:l,modal:c=!0}=e,u=Hp(t),[f,h]=v.useState(null),p=v.useRef(!1),m=en(l),y=Kc(i);return v.useEffect(()=>{const x=()=>{p.current=!0,document.addEventListener("pointerdown",S,{capture:!0,once:!0}),document.addEventListener("pointermove",S,{capture:!0,once:!0})},S=()=>p.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",S,{capture:!0}),document.removeEventListener("pointermove",S,{capture:!0})}},[]),E.jsx(zb,{...u,children:E.jsx(nce,{scope:t,open:n,onOpenChange:m,content:f,onContentChange:h,children:E.jsx(rce,{scope:t,onClose:v.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:p,dir:y,modal:c,children:r})})})};hz.displayName=vu;var ace="MenuAnchor",rw=v.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,i=Hp(n);return E.jsx($b,{...i,...r,ref:t})});rw.displayName=ace;var aw="MenuPortal",[ice,pz]=To(aw,{forceMount:void 0}),mz=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:i}=e,l=No(aw,t);return E.jsx(ice,{scope:t,forceMount:n,children:E.jsx(ln,{present:n||l.open,children:E.jsx(Fc,{asChild:!0,container
Line truncated
|
||||
Vendored
+1
-1
@@ -5,7 +5,7 @@
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>web-ui</title>
|
||||
<script type="module" crossorigin src="/assets/index-DR5QRXeN.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-5JoZok-U.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-CTrwF18n.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
Reference in new issue
Block a user