mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-17 00:01:00 -04:00
Compare commits
13 Commits
0f2361fedd
...
7692240daa
Author | SHA1 | Date | |
---|---|---|---|
|
7692240daa | ||
|
345aa09756 | ||
|
e200c68bad | ||
|
272cf6a2a9 | ||
|
4b72206805 | ||
|
6bad0fb24f | ||
|
574d8fe6d6 | ||
|
8d9f8e10b1 | ||
|
661e78bed5 | ||
|
4938945668 | ||
|
39d3711f30 | ||
|
19bfea6d7d | ||
|
623a539f23 |
5
assets/go-licenses.json
generated
5
assets/go-licenses.json
generated
File diff suppressed because one or more lines are too long
26
cmd/web.go
26
cmd/web.go
@ -9,6 +9,8 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
_ "net/http/pprof" // Used for debugging if enabled and a web server is running
|
_ "net/http/pprof" // Used for debugging if enabled and a web server is running
|
||||||
@ -25,6 +27,9 @@ import (
|
|||||||
ini "gopkg.in/ini.v1"
|
ini "gopkg.in/ini.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// PIDFile could be set from build tag
|
||||||
|
var PIDFile = "/run/gitea.pid"
|
||||||
|
|
||||||
// CmdWeb represents the available web sub-command.
|
// CmdWeb represents the available web sub-command.
|
||||||
var CmdWeb = cli.Command{
|
var CmdWeb = cli.Command{
|
||||||
Name: "web",
|
Name: "web",
|
||||||
@ -45,7 +50,7 @@ and it takes care of all the other things for you`,
|
|||||||
},
|
},
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "pid, P",
|
Name: "pid, P",
|
||||||
Value: setting.PIDFile,
|
Value: PIDFile,
|
||||||
Usage: "Custom pid file path",
|
Usage: "Custom pid file path",
|
||||||
},
|
},
|
||||||
cli.BoolFlag{
|
cli.BoolFlag{
|
||||||
@ -81,6 +86,22 @@ func runHTTPRedirector() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createPIDFile(pidPath string) {
|
||||||
|
currentPid := os.Getpid()
|
||||||
|
if err := os.MkdirAll(filepath.Dir(pidPath), os.ModePerm); err != nil {
|
||||||
|
log.Fatal("Failed to create PID folder: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
file, err := os.Create(pidPath)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("Failed to create PID file: %v", err)
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
if _, err := file.WriteString(strconv.FormatInt(int64(currentPid), 10)); err != nil {
|
||||||
|
log.Fatal("Failed to write PID information: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func runWeb(ctx *cli.Context) error {
|
func runWeb(ctx *cli.Context) error {
|
||||||
if ctx.Bool("verbose") {
|
if ctx.Bool("verbose") {
|
||||||
_ = log.DelLogger("console")
|
_ = log.DelLogger("console")
|
||||||
@ -107,8 +128,7 @@ func runWeb(ctx *cli.Context) error {
|
|||||||
|
|
||||||
// Set pid file setting
|
// Set pid file setting
|
||||||
if ctx.IsSet("pid") {
|
if ctx.IsSet("pid") {
|
||||||
setting.PIDFile = ctx.String("pid")
|
createPIDFile(ctx.String("pid"))
|
||||||
setting.WritePIDFile = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Perform pre-initialization
|
// Perform pre-initialization
|
||||||
|
@ -159,7 +159,7 @@ using the `LDFLAGS` environment variable for `make`. The appropriate settings ar
|
|||||||
- For _`CustomConf`_ you should use `-X \"code.gitea.io/gitea/modules/setting.CustomConf=conf.ini\"`
|
- For _`CustomConf`_ you should use `-X \"code.gitea.io/gitea/modules/setting.CustomConf=conf.ini\"`
|
||||||
- For _`AppWorkPath`_ you should use `-X \"code.gitea.io/gitea/modules/setting.AppWorkPath=working-path\"`
|
- For _`AppWorkPath`_ you should use `-X \"code.gitea.io/gitea/modules/setting.AppWorkPath=working-path\"`
|
||||||
- For _`StaticRootPath`_ you should use `-X \"code.gitea.io/gitea/modules/setting.StaticRootPath=static-root-path\"`
|
- For _`StaticRootPath`_ you should use `-X \"code.gitea.io/gitea/modules/setting.StaticRootPath=static-root-path\"`
|
||||||
- To change the default PID file location use `-X \"code.gitea.io/gitea/modules/setting.PIDFile=/run/gitea.pid\"`
|
- To change the default PID file location use `-X \"code.gitea.io/gitea/cmd.PIDFile=/run/gitea.pid\"`
|
||||||
|
|
||||||
Add as many of the strings with their preceding `-X` to the `LDFLAGS` variable and run `make build`
|
Add as many of the strings with their preceding `-X` to the `LDFLAGS` variable and run `make build`
|
||||||
with the appropriate `TAGS` as above.
|
with the appropriate `TAGS` as above.
|
||||||
|
9
go.mod
9
go.mod
@ -78,7 +78,7 @@ require (
|
|||||||
github.com/minio/minio-go/v7 v7.0.49
|
github.com/minio/minio-go/v7 v7.0.49
|
||||||
github.com/minio/sha256-simd v1.0.0
|
github.com/minio/sha256-simd v1.0.0
|
||||||
github.com/msteinert/pam v1.1.0
|
github.com/msteinert/pam v1.1.0
|
||||||
github.com/nektos/act v0.0.0
|
github.com/nektos/act v0.2.43
|
||||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
|
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
|
||||||
github.com/niklasfasching/go-org v1.6.5
|
github.com/niklasfasching/go-org v1.6.5
|
||||||
github.com/oliamb/cutter v0.2.2
|
github.com/oliamb/cutter v0.2.2
|
||||||
@ -106,7 +106,7 @@ require (
|
|||||||
golang.org/x/crypto v0.6.0
|
golang.org/x/crypto v0.6.0
|
||||||
golang.org/x/net v0.7.0
|
golang.org/x/net v0.7.0
|
||||||
golang.org/x/oauth2 v0.5.0
|
golang.org/x/oauth2 v0.5.0
|
||||||
golang.org/x/sys v0.5.0
|
golang.org/x/sys v0.6.0
|
||||||
golang.org/x/text v0.7.0
|
golang.org/x/text v0.7.0
|
||||||
golang.org/x/tools v0.6.0
|
golang.org/x/tools v0.6.0
|
||||||
google.golang.org/grpc v1.53.0
|
google.golang.org/grpc v1.53.0
|
||||||
@ -174,7 +174,6 @@ require (
|
|||||||
github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect
|
github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect
|
||||||
github.com/go-enry/go-oniguruma v1.2.1 // indirect
|
github.com/go-enry/go-oniguruma v1.2.1 // indirect
|
||||||
github.com/go-git/gcfg v1.5.0 // indirect
|
github.com/go-git/gcfg v1.5.0 // indirect
|
||||||
github.com/go-ini/ini v1.67.0 // indirect
|
|
||||||
github.com/go-openapi/analysis v0.21.4 // indirect
|
github.com/go-openapi/analysis v0.21.4 // indirect
|
||||||
github.com/go-openapi/errors v0.20.3 // indirect
|
github.com/go-openapi/errors v0.20.3 // indirect
|
||||||
github.com/go-openapi/inflect v0.19.0 // indirect
|
github.com/go-openapi/inflect v0.19.0 // indirect
|
||||||
@ -240,7 +239,7 @@ require (
|
|||||||
github.com/prometheus/client_model v0.3.0 // indirect
|
github.com/prometheus/client_model v0.3.0 // indirect
|
||||||
github.com/prometheus/common v0.37.0 // indirect
|
github.com/prometheus/common v0.37.0 // indirect
|
||||||
github.com/prometheus/procfs v0.8.0 // indirect
|
github.com/prometheus/procfs v0.8.0 // indirect
|
||||||
github.com/rhysd/actionlint v1.6.22 // indirect
|
github.com/rhysd/actionlint v1.6.23 // indirect
|
||||||
github.com/rivo/uniseg v0.4.4 // indirect
|
github.com/rivo/uniseg v0.4.4 // indirect
|
||||||
github.com/robfig/cron v1.2.0 // indirect
|
github.com/robfig/cron v1.2.0 // indirect
|
||||||
github.com/rogpeppe/go-internal v1.9.0 // indirect
|
github.com/rogpeppe/go-internal v1.9.0 // indirect
|
||||||
@ -287,7 +286,7 @@ replace github.com/shurcooL/vfsgen => github.com/lunny/vfsgen v0.0.0-20220105142
|
|||||||
|
|
||||||
replace github.com/blevesearch/zapx/v15 v15.3.6 => github.com/zeripath/zapx/v15 v15.3.6-alignment-fix
|
replace github.com/blevesearch/zapx/v15 v15.3.6 => github.com/zeripath/zapx/v15 v15.3.6-alignment-fix
|
||||||
|
|
||||||
replace github.com/nektos/act => gitea.com/gitea/act v0.234.2-0.20230131074955-e46ede1b1744
|
replace github.com/nektos/act => gitea.com/gitea/act v0.243.1
|
||||||
|
|
||||||
exclude github.com/gofrs/uuid v3.2.0+incompatible
|
exclude github.com/gofrs/uuid v3.2.0+incompatible
|
||||||
|
|
||||||
|
18
go.sum
18
go.sum
@ -52,8 +52,8 @@ codeberg.org/gusted/mcaptcha v0.0.0-20220723083913-4f3072e1d570/go.mod h1:IIAjsi
|
|||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 h1:cliQ4HHsCo6xi2oWZYKWW4bly/Ory9FuTpFPRxj/mAg=
|
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 h1:cliQ4HHsCo6xi2oWZYKWW4bly/Ory9FuTpFPRxj/mAg=
|
||||||
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078/go.mod h1:g/V2Hjas6Z1UHUp4yIx6bATpNzJ7DYtD0FG3+xARWxs=
|
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078/go.mod h1:g/V2Hjas6Z1UHUp4yIx6bATpNzJ7DYtD0FG3+xARWxs=
|
||||||
gitea.com/gitea/act v0.234.2-0.20230131074955-e46ede1b1744 h1:cqzKmGlX0wynSXO04NILpL25eBGwogDrKpkkbwmIpj4=
|
gitea.com/gitea/act v0.243.1 h1:zIVlhGOLE4SHFPW++u3+5Y/jX5mub3QIhB13oNf6rtA=
|
||||||
gitea.com/gitea/act v0.234.2-0.20230131074955-e46ede1b1744/go.mod h1:2C/WbTalu1VPNgbVaZJaZDzlOtAKqkXJhdOClxkMy14=
|
gitea.com/gitea/act v0.243.1/go.mod h1:iLHCXqOPUElA2nSyHo4wtxSmvdkym3WU7CkP3AxF39Q=
|
||||||
gitea.com/go-chi/binding v0.0.0-20221013104517-b29891619681 h1:MMSPgnVULVwV9kEBgvyEUhC9v/uviZ55hPJEMjpbNR4=
|
gitea.com/go-chi/binding v0.0.0-20221013104517-b29891619681 h1:MMSPgnVULVwV9kEBgvyEUhC9v/uviZ55hPJEMjpbNR4=
|
||||||
gitea.com/go-chi/binding v0.0.0-20221013104517-b29891619681/go.mod h1:77TZu701zMXWJFvB8gvTbQ92zQ3DQq/H7l5wAEjQRKc=
|
gitea.com/go-chi/binding v0.0.0-20221013104517-b29891619681/go.mod h1:77TZu701zMXWJFvB8gvTbQ92zQ3DQq/H7l5wAEjQRKc=
|
||||||
gitea.com/go-chi/cache v0.0.0-20210110083709-82c4c9ce2d5e/go.mod h1:k2V/gPDEtXGjjMGuBJiapffAXTv76H4snSmlJRLUhH0=
|
gitea.com/go-chi/cache v0.0.0-20210110083709-82c4c9ce2d5e/go.mod h1:k2V/gPDEtXGjjMGuBJiapffAXTv76H4snSmlJRLUhH0=
|
||||||
@ -385,8 +385,6 @@ github.com/go-git/go-git/v5 v5.5.2/go.mod h1:BE5hUJ5yaV2YMxhmaP4l6RBQ08kMxKSPD4B
|
|||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
|
|
||||||
github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
|
|
||||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||||
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||||
github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
|
github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
|
||||||
@ -741,7 +739,7 @@ github.com/jhillyerd/enmime v0.10.1 h1:3VP8gFhK7R948YJBrna5bOgnTXEuPAoICo79kKkBK
|
|||||||
github.com/jhillyerd/enmime v0.10.1/go.mod h1:Qpe8EEemJMFAF8+NZoWdpXvK2Yb9dRF0k/z6mkcDHsA=
|
github.com/jhillyerd/enmime v0.10.1/go.mod h1:Qpe8EEemJMFAF8+NZoWdpXvK2Yb9dRF0k/z6mkcDHsA=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
||||||
github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=
|
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||||
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||||
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
||||||
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
||||||
@ -1046,8 +1044,8 @@ github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqn
|
|||||||
github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
|
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
|
||||||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||||
github.com/rhysd/actionlint v1.6.22 h1:cAEf2PGNwJXhdcTVF2xS/0ORqWS+ueUHwjQYsqFsGSk=
|
github.com/rhysd/actionlint v1.6.23 h1:041VOXgZddfvSJa9Il+WT3Iwuo/j0Nmu4bhpAScrds4=
|
||||||
github.com/rhysd/actionlint v1.6.22/go.mod h1:gIKOdxtV40mBOcD0ZR8EBa8NqjEXToAZioroS3oedMg=
|
github.com/rhysd/actionlint v1.6.23/go.mod h1:o5qc1K3I9taGMBhL7mVkpRd64hx3YqI+3t8ewGfYXfE=
|
||||||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
|
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
|
||||||
@ -1504,14 +1502,14 @@ golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
|
||||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
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=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
||||||
golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
|
golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
@ -253,6 +253,28 @@ func GetReleasesByRepoID(ctx context.Context, repoID int64, opts FindReleasesOpt
|
|||||||
return rels, sess.Find(&rels)
|
return rels, sess.Find(&rels)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetTagNamesByRepoID returns a list of release tag names of repository.
|
||||||
|
func GetTagNamesByRepoID(ctx context.Context, repoID int64) ([]string, error) {
|
||||||
|
listOptions := db.ListOptions{
|
||||||
|
ListAll: true,
|
||||||
|
}
|
||||||
|
opts := FindReleasesOptions{
|
||||||
|
ListOptions: listOptions,
|
||||||
|
IncludeDrafts: true,
|
||||||
|
IncludeTags: true,
|
||||||
|
HasSha1: util.OptionalBoolTrue,
|
||||||
|
}
|
||||||
|
|
||||||
|
tags := make([]string, 0)
|
||||||
|
sess := db.GetEngine(ctx).
|
||||||
|
Table("release").
|
||||||
|
Desc("created_unix", "id").
|
||||||
|
Where(opts.toConds(repoID)).
|
||||||
|
Cols("tag_name")
|
||||||
|
|
||||||
|
return tags, sess.Find(&tags)
|
||||||
|
}
|
||||||
|
|
||||||
// CountReleasesByRepoID returns a number of releases matching FindReleaseOptions and RepoID.
|
// CountReleasesByRepoID returns a number of releases matching FindReleaseOptions and RepoID.
|
||||||
func CountReleasesByRepoID(repoID int64, opts FindReleasesOptions) (int64, error) {
|
func CountReleasesByRepoID(repoID int64, opts FindReleasesOptions) (int64, error) {
|
||||||
return db.GetEngine(db.DefaultContext).Where(opts.toConds(repoID)).Count(new(Release))
|
return db.GetEngine(db.DefaultContext).Where(opts.toConds(repoID)).Count(new(Release))
|
||||||
|
@ -660,20 +660,9 @@ func RepoAssignment(ctx *Context) (cancel context.CancelFunc) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
tags, err := ctx.Repo.GitRepo.GetTags(0, 0)
|
tags, err := repo_model.GetTagNamesByRepoID(ctx, ctx.Repo.Repository.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if strings.Contains(err.Error(), "fatal: not a git repository ") {
|
ctx.ServerError("GetTagNamesByRepoID", err)
|
||||||
log.Error("Repository %-v has a broken repository on the file system: %s Error: %v", ctx.Repo.Repository, ctx.Repo.Repository.RepoPath(), err)
|
|
||||||
ctx.Repo.Repository.Status = repo_model.RepositoryBroken
|
|
||||||
ctx.Repo.Repository.IsEmpty = true
|
|
||||||
ctx.Data["BranchName"] = ctx.Repo.Repository.DefaultBranch
|
|
||||||
// Only allow access to base of repo or settings
|
|
||||||
if !isHomeOrSettings {
|
|
||||||
ctx.Redirect(ctx.Repo.RepoLink)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ctx.ServerError("GetTags", err)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Data["Tags"] = tags
|
ctx.Data["Tags"] = tags
|
||||||
|
@ -56,6 +56,10 @@ func LogNameStatusRepo(ctx context.Context, repository, head, treepath string, p
|
|||||||
} else if treepath != "" {
|
} else if treepath != "" {
|
||||||
files = append(files, treepath)
|
files = append(files, treepath)
|
||||||
}
|
}
|
||||||
|
// Use the :(literal) pathspec magic to handle edge cases with files named like ":file.txt" or "*.jpg"
|
||||||
|
for i, file := range files {
|
||||||
|
files[i] = ":(literal)" + file
|
||||||
|
}
|
||||||
cmd.AddDashesAndList(files...)
|
cmd.AddDashesAndList(files...)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
|
@ -54,7 +54,11 @@ var (
|
|||||||
|
|
||||||
// LoadDBSetting loads the database settings
|
// LoadDBSetting loads the database settings
|
||||||
func LoadDBSetting() {
|
func LoadDBSetting() {
|
||||||
sec := CfgProvider.Section("database")
|
loadDBSetting(CfgProvider)
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadDBSetting(rootCfg ConfigProvider) {
|
||||||
|
sec := rootCfg.Section("database")
|
||||||
Database.Type = DatabaseType(sec.Key("DB_TYPE").String())
|
Database.Type = DatabaseType(sec.Key("DB_TYPE").String())
|
||||||
defaultCharset := "utf8"
|
defaultCharset := "utf8"
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@ import (
|
|||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -42,15 +41,13 @@ var (
|
|||||||
AppWorkPath string
|
AppWorkPath string
|
||||||
|
|
||||||
// Global setting objects
|
// Global setting objects
|
||||||
CfgProvider ConfigProvider
|
CfgProvider ConfigProvider
|
||||||
CustomPath string // Custom directory path
|
CustomPath string // Custom directory path
|
||||||
CustomConf string
|
CustomConf string
|
||||||
PIDFile = "/run/gitea.pid"
|
RunMode string
|
||||||
WritePIDFile bool
|
RunUser string
|
||||||
RunMode string
|
IsProd bool
|
||||||
RunUser string
|
IsWindows bool
|
||||||
IsProd bool
|
|
||||||
IsWindows bool
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func getAppPath() (string, error) {
|
func getAppPath() (string, error) {
|
||||||
@ -141,22 +138,6 @@ func IsRunUserMatchCurrentUser(runUser string) (string, bool) {
|
|||||||
return currentUser, runUser == currentUser
|
return currentUser, runUser == currentUser
|
||||||
}
|
}
|
||||||
|
|
||||||
func createPIDFile(pidPath string) {
|
|
||||||
currentPid := os.Getpid()
|
|
||||||
if err := os.MkdirAll(filepath.Dir(pidPath), os.ModePerm); err != nil {
|
|
||||||
log.Fatal("Failed to create PID folder: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
file, err := os.Create(pidPath)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Failed to create PID file: %v", err)
|
|
||||||
}
|
|
||||||
defer file.Close()
|
|
||||||
if _, err := file.WriteString(strconv.FormatInt(int64(currentPid), 10)); err != nil {
|
|
||||||
log.Fatal("Failed to write PID information: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetCustomPathAndConf will set CustomPath and CustomConf with reference to the
|
// SetCustomPathAndConf will set CustomPath and CustomConf with reference to the
|
||||||
// GITEA_CUSTOM environment variable and with provided overrides before stepping
|
// GITEA_CUSTOM environment variable and with provided overrides before stepping
|
||||||
// back to the default
|
// back to the default
|
||||||
@ -218,17 +199,17 @@ func PrepareAppDataPath() error {
|
|||||||
|
|
||||||
// InitProviderFromExistingFile initializes config provider from an existing config file (app.ini)
|
// InitProviderFromExistingFile initializes config provider from an existing config file (app.ini)
|
||||||
func InitProviderFromExistingFile() {
|
func InitProviderFromExistingFile() {
|
||||||
CfgProvider = newFileProviderFromConf(CustomConf, WritePIDFile, false, PIDFile, "")
|
CfgProvider = newFileProviderFromConf(CustomConf, false, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitProviderAllowEmpty initializes config provider from file, it's also fine that if the config file (app.ini) doesn't exist
|
// InitProviderAllowEmpty initializes config provider from file, it's also fine that if the config file (app.ini) doesn't exist
|
||||||
func InitProviderAllowEmpty() {
|
func InitProviderAllowEmpty() {
|
||||||
CfgProvider = newFileProviderFromConf(CustomConf, WritePIDFile, true, PIDFile, "")
|
CfgProvider = newFileProviderFromConf(CustomConf, true, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
// InitProviderAndLoadCommonSettingsForTest initializes config provider and load common setttings for tests
|
// InitProviderAndLoadCommonSettingsForTest initializes config provider and load common setttings for tests
|
||||||
func InitProviderAndLoadCommonSettingsForTest(extraConfigs ...string) {
|
func InitProviderAndLoadCommonSettingsForTest(extraConfigs ...string) {
|
||||||
CfgProvider = newFileProviderFromConf(CustomConf, WritePIDFile, true, PIDFile, strings.Join(extraConfigs, "\n"))
|
CfgProvider = newFileProviderFromConf(CustomConf, true, strings.Join(extraConfigs, "\n"))
|
||||||
loadCommonSettingsFrom(CfgProvider)
|
loadCommonSettingsFrom(CfgProvider)
|
||||||
if err := PrepareAppDataPath(); err != nil {
|
if err := PrepareAppDataPath(); err != nil {
|
||||||
log.Fatal("Can not prepare APP_DATA_PATH: %v", err)
|
log.Fatal("Can not prepare APP_DATA_PATH: %v", err)
|
||||||
@ -241,13 +222,9 @@ func InitProviderAndLoadCommonSettingsForTest(extraConfigs ...string) {
|
|||||||
|
|
||||||
// newFileProviderFromConf initializes configuration context.
|
// newFileProviderFromConf initializes configuration context.
|
||||||
// NOTE: do not print any log except error.
|
// NOTE: do not print any log except error.
|
||||||
func newFileProviderFromConf(customConf string, writePIDFile, allowEmpty bool, pidFile, extraConfig string) *ini.File {
|
func newFileProviderFromConf(customConf string, allowEmpty bool, extraConfig string) *ini.File {
|
||||||
cfg := ini.Empty()
|
cfg := ini.Empty()
|
||||||
|
|
||||||
if writePIDFile && len(pidFile) > 0 {
|
|
||||||
createPIDFile(pidFile)
|
|
||||||
}
|
|
||||||
|
|
||||||
isFile, err := util.IsFile(customConf)
|
isFile, err := util.IsFile(customConf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Unable to check if %s is a file. Error: %v", customConf, err)
|
log.Error("Unable to check if %s is a file. Error: %v", customConf, err)
|
||||||
@ -380,7 +357,7 @@ func CreateOrAppendToCustomConf(purpose string, callback func(cfg *ini.File)) {
|
|||||||
|
|
||||||
// LoadSettings initializes the settings for normal start up
|
// LoadSettings initializes the settings for normal start up
|
||||||
func LoadSettings() {
|
func LoadSettings() {
|
||||||
LoadDBSetting()
|
loadDBSetting(CfgProvider)
|
||||||
loadServiceFrom(CfgProvider)
|
loadServiceFrom(CfgProvider)
|
||||||
loadOAuth2ClientFrom(CfgProvider)
|
loadOAuth2ClientFrom(CfgProvider)
|
||||||
InitLogs(false)
|
InitLogs(false)
|
||||||
@ -401,7 +378,7 @@ func LoadSettings() {
|
|||||||
|
|
||||||
// LoadSettingsForInstall initializes the settings for install
|
// LoadSettingsForInstall initializes the settings for install
|
||||||
func LoadSettingsForInstall() {
|
func LoadSettingsForInstall() {
|
||||||
LoadDBSetting()
|
loadDBSetting(CfgProvider)
|
||||||
loadServiceFrom(CfgProvider)
|
loadServiceFrom(CfgProvider)
|
||||||
loadMailerFrom(CfgProvider)
|
loadMailerFrom(CfgProvider)
|
||||||
}
|
}
|
||||||
|
@ -88,6 +88,9 @@ type Repository struct {
|
|||||||
ExternalWiki *ExternalWiki `json:"external_wiki,omitempty"`
|
ExternalWiki *ExternalWiki `json:"external_wiki,omitempty"`
|
||||||
HasPullRequests bool `json:"has_pull_requests"`
|
HasPullRequests bool `json:"has_pull_requests"`
|
||||||
HasProjects bool `json:"has_projects"`
|
HasProjects bool `json:"has_projects"`
|
||||||
|
HasReleases bool `json:"has_releases"`
|
||||||
|
HasPackages bool `json:"has_packages"`
|
||||||
|
HasActions bool `json:"has_actions"`
|
||||||
IgnoreWhitespaceConflicts bool `json:"ignore_whitespace_conflicts"`
|
IgnoreWhitespaceConflicts bool `json:"ignore_whitespace_conflicts"`
|
||||||
AllowMerge bool `json:"allow_merge_commits"`
|
AllowMerge bool `json:"allow_merge_commits"`
|
||||||
AllowRebase bool `json:"allow_rebase"`
|
AllowRebase bool `json:"allow_rebase"`
|
||||||
@ -168,6 +171,12 @@ type EditRepoOption struct {
|
|||||||
HasPullRequests *bool `json:"has_pull_requests,omitempty"`
|
HasPullRequests *bool `json:"has_pull_requests,omitempty"`
|
||||||
// either `true` to enable project unit, or `false` to disable them.
|
// either `true` to enable project unit, or `false` to disable them.
|
||||||
HasProjects *bool `json:"has_projects,omitempty"`
|
HasProjects *bool `json:"has_projects,omitempty"`
|
||||||
|
// either `true` to enable releases unit, or `false` to disable them.
|
||||||
|
HasReleases *bool `json:"has_releases,omitempty"`
|
||||||
|
// either `true` to enable packages unit, or `false` to disable them.
|
||||||
|
HasPackages *bool `json:"has_packages,omitempty"`
|
||||||
|
// either `true` to enable actions unit, or `false` to disable them.
|
||||||
|
HasActions *bool `json:"has_actions,omitempty"`
|
||||||
// either `true` to ignore whitespace for conflicts, or `false` to not ignore whitespace.
|
// either `true` to ignore whitespace for conflicts, or `false` to not ignore whitespace.
|
||||||
IgnoreWhitespaceConflicts *bool `json:"ignore_whitespace_conflicts,omitempty"`
|
IgnoreWhitespaceConflicts *bool `json:"ignore_whitespace_conflicts,omitempty"`
|
||||||
// either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
|
// either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
|
||||||
|
@ -109,6 +109,9 @@ func NewFuncMap() []template.FuncMap {
|
|||||||
"CustomEmojis": func() map[string]string {
|
"CustomEmojis": func() map[string]string {
|
||||||
return setting.UI.CustomEmojisMap
|
return setting.UI.CustomEmojisMap
|
||||||
},
|
},
|
||||||
|
"IsShowFullName": func() bool {
|
||||||
|
return setting.UI.DefaultShowFullName
|
||||||
|
},
|
||||||
"Safe": Safe,
|
"Safe": Safe,
|
||||||
"SafeJS": SafeJS,
|
"SafeJS": SafeJS,
|
||||||
"JSEscape": JSEscape,
|
"JSEscape": JSEscape,
|
||||||
|
@ -233,7 +233,7 @@ func TimeSince(then time.Time, lang translation.Locale) template.HTML {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func htmlTimeSince(then, now time.Time, lang translation.Locale) template.HTML {
|
func htmlTimeSince(then, now time.Time, lang translation.Locale) template.HTML {
|
||||||
return template.HTML(fmt.Sprintf(`<span class="time-since tooltip" data-content="%s">%s</span>`,
|
return template.HTML(fmt.Sprintf(`<span class="time-since tooltip" data-content="%s" data-tooltip-interactive="true">%s</span>`,
|
||||||
then.In(setting.DefaultUILocation).Format(GetTimeFormat(lang.Language())),
|
then.In(setting.DefaultUILocation).Format(GetTimeFormat(lang.Language())),
|
||||||
timeSince(then, now, lang)))
|
timeSince(then, now, lang)))
|
||||||
}
|
}
|
||||||
@ -244,7 +244,7 @@ func TimeSinceUnix(then TimeStamp, lang translation.Locale) template.HTML {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func htmlTimeSinceUnix(then, now TimeStamp, lang translation.Locale) template.HTML {
|
func htmlTimeSinceUnix(then, now TimeStamp, lang translation.Locale) template.HTML {
|
||||||
return template.HTML(fmt.Sprintf(`<span class="time-since tooltip" data-content="%s">%s</span>`,
|
return template.HTML(fmt.Sprintf(`<span class="time-since tooltip" data-content="%s" data-tooltip-interactive="true">%s</span>`,
|
||||||
then.FormatInLocation(GetTimeFormat(lang.Language()), setting.DefaultUILocation),
|
then.FormatInLocation(GetTimeFormat(lang.Language()), setting.DefaultUILocation),
|
||||||
timeSinceUnix(int64(then), int64(now), lang)))
|
timeSinceUnix(int64(then), int64(now), lang)))
|
||||||
}
|
}
|
||||||
|
@ -1369,7 +1369,7 @@ issues.context.reference_issue = Reference in New Issue
|
|||||||
issues.context.edit = Edit
|
issues.context.edit = Edit
|
||||||
issues.context.delete = Delete
|
issues.context.delete = Delete
|
||||||
issues.no_content = There is no content yet.
|
issues.no_content = There is no content yet.
|
||||||
issues.close_issue = Close
|
issues.close = Close Issue
|
||||||
issues.pull_merged_at = `merged commit <a class="ui sha" href="%[1]s"><code>%[2]s</code></a> into <b>%[3]s</b> %[4]s`
|
issues.pull_merged_at = `merged commit <a class="ui sha" href="%[1]s"><code>%[2]s</code></a> into <b>%[3]s</b> %[4]s`
|
||||||
issues.manually_pull_merged_at = `merged commit <a class="ui sha" href="%[1]s"><code>%[2]s</code></a> into <b>%[3]s</b> manually %[4]s`
|
issues.manually_pull_merged_at = `merged commit <a class="ui sha" href="%[1]s"><code>%[2]s</code></a> into <b>%[3]s</b> manually %[4]s`
|
||||||
issues.close_comment_issue = Comment and Close
|
issues.close_comment_issue = Comment and Close
|
||||||
@ -1654,6 +1654,7 @@ pulls.update_branch_rebase = Update branch by rebase
|
|||||||
pulls.update_branch_success = Branch update was successful
|
pulls.update_branch_success = Branch update was successful
|
||||||
pulls.update_not_allowed = You are not allowed to update branch
|
pulls.update_not_allowed = You are not allowed to update branch
|
||||||
pulls.outdated_with_base_branch = This branch is out-of-date with the base branch
|
pulls.outdated_with_base_branch = This branch is out-of-date with the base branch
|
||||||
|
pulls.close = Close Pull Request
|
||||||
pulls.closed_at = `closed this pull request <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
pulls.closed_at = `closed this pull request <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||||
pulls.reopened_at = `reopened this pull request <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
pulls.reopened_at = `reopened this pull request <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||||
pulls.merge_instruction_hint = `You can also view <a class="show-instruction">command line instructions</a>.`
|
pulls.merge_instruction_hint = `You can also view <a class="show-instruction">command line instructions</a>.`
|
||||||
|
@ -821,6 +821,7 @@ remove_account_link=刪除已連結的帳戶
|
|||||||
remove_account_link_desc=刪除連結帳戶將撤銷其對 Gitea 帳戶的存取權限。是否繼續?
|
remove_account_link_desc=刪除連結帳戶將撤銷其對 Gitea 帳戶的存取權限。是否繼續?
|
||||||
remove_account_link_success=已移除連結的帳戶。
|
remove_account_link_success=已移除連結的帳戶。
|
||||||
|
|
||||||
|
hooks.desc=這個使用者的<strong>所有存儲庫</strong>都會觸發在此新增的 Webhook。
|
||||||
|
|
||||||
orgs_none=您尚未成為任一組織的成員。
|
orgs_none=您尚未成為任一組織的成員。
|
||||||
repos_none=您不擁有任何存儲庫
|
repos_none=您不擁有任何存儲庫
|
||||||
@ -2289,6 +2290,8 @@ release.edit_subheader=發布、整理專案的版本。
|
|||||||
release.tag_name=標籤名稱
|
release.tag_name=標籤名稱
|
||||||
release.target=目標分支
|
release.target=目標分支
|
||||||
release.tag_helper=新增或選擇現有的標籤。
|
release.tag_helper=新增或選擇現有的標籤。
|
||||||
|
release.tag_helper_new=新標籤,將在目標上建立此標籤。
|
||||||
|
release.tag_helper_existing=現有的標籤。
|
||||||
release.title=標題
|
release.title=標題
|
||||||
release.content=內容
|
release.content=內容
|
||||||
release.prerelease_desc=標記為 Pre-Release
|
release.prerelease_desc=標記為 Pre-Release
|
||||||
@ -2809,6 +2812,8 @@ auths.still_in_used=此認證來源正在使用中。請先轉換或刪除使用
|
|||||||
auths.deletion_success=已刪除認證來源。
|
auths.deletion_success=已刪除認證來源。
|
||||||
auths.login_source_exist=認證來源「%s」已經存在。
|
auths.login_source_exist=認證來源「%s」已經存在。
|
||||||
auths.login_source_of_type_exist=已經有相同類型的認證來源。
|
auths.login_source_of_type_exist=已經有相同類型的認證來源。
|
||||||
|
auths.unable_to_initialize_openid=無法初始化 OpenID 連接提供者: %s
|
||||||
|
auths.invalid_openIdConnectAutoDiscoveryURL=自動探索 URL 無效 (它必須是以 http:// 或 https:// 開頭的有效 URL)
|
||||||
|
|
||||||
config.server_config=伺服器組態
|
config.server_config=伺服器組態
|
||||||
config.app_name=網站標題
|
config.app_name=網站標題
|
||||||
@ -2930,6 +2935,7 @@ config.git_max_diff_lines=差異比較時顯示的最多行數 (單檔)
|
|||||||
config.git_max_diff_line_characters=差異比較時顯示的最多字元數 (單行)
|
config.git_max_diff_line_characters=差異比較時顯示的最多字元數 (單行)
|
||||||
config.git_max_diff_files=差異比較時顯示的最多檔案數
|
config.git_max_diff_files=差異比較時顯示的最多檔案數
|
||||||
config.git_enable_reflogs=啟用 Reflogs
|
config.git_enable_reflogs=啟用 Reflogs
|
||||||
|
config.git_reflog_expiry_time=到期時間
|
||||||
config.git_gc_args=GC 參數
|
config.git_gc_args=GC 參數
|
||||||
config.git_migrate_timeout=遷移逾時
|
config.git_migrate_timeout=遷移逾時
|
||||||
config.git_mirror_timeout=鏡像更新超時
|
config.git_mirror_timeout=鏡像更新超時
|
||||||
@ -3234,6 +3240,9 @@ rubygems.required.ruby=需要的 Ruby 版本
|
|||||||
rubygems.required.rubygems=需要的 RubyGem 版本
|
rubygems.required.rubygems=需要的 RubyGem 版本
|
||||||
rubygems.documentation=關於 RubyGems registry 的詳情請參閱<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/rubygems/">說明文件</a>。
|
rubygems.documentation=關於 RubyGems registry 的詳情請參閱<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/rubygems/">說明文件</a>。
|
||||||
swift.registry=透過下列命令設定此註冊中心:
|
swift.registry=透過下列命令設定此註冊中心:
|
||||||
|
swift.install=將此套件加入您的 <code>Package.swift</code> 檔:
|
||||||
|
swift.install2=並執行下列命令:
|
||||||
|
swift.documentation=關於 Swift registry 的詳情請參閱<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/swift/">說明文件</a>。
|
||||||
vagrant.install=執行下列命令以新增 Vagrant box:
|
vagrant.install=執行下列命令以新增 Vagrant box:
|
||||||
vagrant.documentation=關於 Vagrant registry 的詳情請參閱<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/vagrant/">說明文件</a>。
|
vagrant.documentation=關於 Vagrant registry 的詳情請參閱<a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/vagrant/">說明文件</a>。
|
||||||
settings.link=連結此套件到儲存庫
|
settings.link=連結此套件到儲存庫
|
||||||
@ -3351,6 +3360,8 @@ runs.open_tab=%d 開放中
|
|||||||
runs.closed_tab=%d 已關閉
|
runs.closed_tab=%d 已關閉
|
||||||
runs.commit=提交
|
runs.commit=提交
|
||||||
runs.pushed_by=推送者
|
runs.pushed_by=推送者
|
||||||
|
runs.valid_workflow_helper=工作流程設定檔有效。
|
||||||
|
runs.invalid_workflow_helper=工作流程設定檔無效。請檢查您的設定檔: %s
|
||||||
|
|
||||||
need_approval_desc=來自 Frok 儲存庫的合併請求需要核可才能執行工作流程。
|
need_approval_desc=來自 Frok 儲存庫的合併請求需要核可才能執行工作流程。
|
||||||
|
|
||||||
|
378
package-lock.json
generated
378
package-lock.json
generated
@ -30,12 +30,9 @@
|
|||||||
"katex": "0.16.4",
|
"katex": "0.16.4",
|
||||||
"license-checker-webpack-plugin": "0.2.1",
|
"license-checker-webpack-plugin": "0.2.1",
|
||||||
"mermaid": "10.0.2",
|
"mermaid": "10.0.2",
|
||||||
"mini-css-extract-plugin": "2.7.2",
|
"mini-css-extract-plugin": "2.7.4",
|
||||||
"monaco-editor": "0.34.1",
|
"monaco-editor": "0.34.1",
|
||||||
"monaco-editor-webpack-plugin": "7.0.1",
|
"monaco-editor-webpack-plugin": "7.0.1",
|
||||||
"postcss-import": "15.1.0",
|
|
||||||
"postcss-loader": "7.0.2",
|
|
||||||
"postcss-url": "10.1.3",
|
|
||||||
"pretty-ms": "8.0.0",
|
"pretty-ms": "8.0.0",
|
||||||
"sortablejs": "1.15.0",
|
"sortablejs": "1.15.0",
|
||||||
"swagger-ui-dist": "4.15.5",
|
"swagger-ui-dist": "4.15.5",
|
||||||
@ -46,7 +43,7 @@
|
|||||||
"vue-bar-graph": "2.0.0",
|
"vue-bar-graph": "2.0.0",
|
||||||
"vue-loader": "17.0.1",
|
"vue-loader": "17.0.1",
|
||||||
"vue3-calendar-heatmap": "2.0.0",
|
"vue3-calendar-heatmap": "2.0.0",
|
||||||
"webpack": "5.76.0",
|
"webpack": "5.76.2",
|
||||||
"webpack-cli": "5.0.1",
|
"webpack-cli": "5.0.1",
|
||||||
"workbox-routing": "6.5.4",
|
"workbox-routing": "6.5.4",
|
||||||
"workbox-strategies": "6.5.4",
|
"workbox-strategies": "6.5.4",
|
||||||
@ -85,6 +82,7 @@
|
|||||||
"version": "7.18.6",
|
"version": "7.18.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
|
||||||
"integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
|
"integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/highlight": "^7.18.6"
|
"@babel/highlight": "^7.18.6"
|
||||||
},
|
},
|
||||||
@ -96,6 +94,7 @@
|
|||||||
"version": "7.19.1",
|
"version": "7.19.1",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
|
||||||
"integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
|
"integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
@ -104,6 +103,7 @@
|
|||||||
"version": "7.18.6",
|
"version": "7.18.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
|
||||||
"integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
|
"integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-validator-identifier": "^7.18.6",
|
"@babel/helper-validator-identifier": "^7.18.6",
|
||||||
"chalk": "^2.0.0",
|
"chalk": "^2.0.0",
|
||||||
@ -117,6 +117,7 @@
|
|||||||
"version": "3.2.1",
|
"version": "3.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color-convert": "^1.9.0"
|
"color-convert": "^1.9.0"
|
||||||
},
|
},
|
||||||
@ -128,6 +129,7 @@
|
|||||||
"version": "2.4.2",
|
"version": "2.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ansi-styles": "^3.2.1",
|
"ansi-styles": "^3.2.1",
|
||||||
"escape-string-regexp": "^1.0.5",
|
"escape-string-regexp": "^1.0.5",
|
||||||
@ -141,6 +143,7 @@
|
|||||||
"version": "1.9.3",
|
"version": "1.9.3",
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color-name": "1.1.3"
|
"color-name": "1.1.3"
|
||||||
}
|
}
|
||||||
@ -148,12 +151,14 @@
|
|||||||
"node_modules/@babel/highlight/node_modules/color-name": {
|
"node_modules/@babel/highlight/node_modules/color-name": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
|
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@babel/highlight/node_modules/escape-string-regexp": {
|
"node_modules/@babel/highlight/node_modules/escape-string-regexp": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||||
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
|
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.8.0"
|
"node": ">=0.8.0"
|
||||||
}
|
}
|
||||||
@ -162,6 +167,7 @@
|
|||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||||
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
@ -170,6 +176,7 @@
|
|||||||
"version": "5.5.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"has-flag": "^3.0.0"
|
"has-flag": "^3.0.0"
|
||||||
},
|
},
|
||||||
@ -1563,11 +1570,6 @@
|
|||||||
"integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
|
"integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/parse-json": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
|
|
||||||
},
|
|
||||||
"node_modules/@types/tern": {
|
"node_modules/@types/tern": {
|
||||||
"version": "0.23.4",
|
"version": "0.23.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz",
|
||||||
@ -2398,6 +2400,7 @@
|
|||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
||||||
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
@ -2893,11 +2896,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
|
||||||
"integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
|
"integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
|
||||||
},
|
},
|
||||||
"node_modules/cuint": {
|
|
||||||
"version": "0.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
|
|
||||||
"integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw=="
|
|
||||||
},
|
|
||||||
"node_modules/cytoscape": {
|
"node_modules/cytoscape": {
|
||||||
"version": "3.23.0",
|
"version": "3.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.23.0.tgz",
|
||||||
@ -3829,6 +3827,7 @@
|
|||||||
"version": "1.3.2",
|
"version": "1.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
|
||||||
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
|
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-arrayish": "^0.2.1"
|
"is-arrayish": "^0.2.1"
|
||||||
}
|
}
|
||||||
@ -5267,6 +5266,7 @@
|
|||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
|
||||||
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
|
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"parent-module": "^1.0.0",
|
"parent-module": "^1.0.0",
|
||||||
"resolve-from": "^4.0.0"
|
"resolve-from": "^4.0.0"
|
||||||
@ -5399,7 +5399,8 @@
|
|||||||
"node_modules/is-arrayish": {
|
"node_modules/is-arrayish": {
|
||||||
"version": "0.2.1",
|
"version": "0.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
|
||||||
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
|
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/is-bigint": {
|
"node_modules/is-bigint": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
@ -5766,7 +5767,8 @@
|
|||||||
"node_modules/js-tokens": {
|
"node_modules/js-tokens": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/js-yaml": {
|
"node_modules/js-yaml": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
@ -5938,14 +5940,6 @@
|
|||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/klona": {
|
|
||||||
"version": "2.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz",
|
|
||||||
"integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/known-css-properties": {
|
"node_modules/known-css-properties": {
|
||||||
"version": "0.26.0",
|
"version": "0.26.0",
|
||||||
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz",
|
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz",
|
||||||
@ -6050,7 +6044,8 @@
|
|||||||
"node_modules/lines-and-columns": {
|
"node_modules/lines-and-columns": {
|
||||||
"version": "1.2.4",
|
"version": "1.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
||||||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
|
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/linkify-it": {
|
"node_modules/linkify-it": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
@ -6536,9 +6531,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/mini-css-extract-plugin": {
|
"node_modules/mini-css-extract-plugin": {
|
||||||
"version": "2.7.2",
|
"version": "2.7.4",
|
||||||
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.4.tgz",
|
||||||
"integrity": "sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==",
|
"integrity": "sha512-V5zkjajQx9gnedglDap7ZjD1mNFNISzyllzrc+9+R4iwPRUAR0St20ADflQbWkVUQ2u/QU55t8mKaxUek8Cciw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"schema-utils": "^4.0.0"
|
"schema-utils": "^4.0.0"
|
||||||
},
|
},
|
||||||
@ -7004,6 +6999,7 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
||||||
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"callsites": "^3.0.0"
|
"callsites": "^3.0.0"
|
||||||
},
|
},
|
||||||
@ -7015,6 +7011,7 @@
|
|||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
||||||
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
|
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.0.0",
|
"@babel/code-frame": "^7.0.0",
|
||||||
"error-ex": "^1.3.1",
|
"error-ex": "^1.3.1",
|
||||||
@ -7107,6 +7104,7 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
||||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
@ -7288,58 +7286,6 @@
|
|||||||
"node": "^10 || ^12 || >=14"
|
"node": "^10 || ^12 || >=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss-import": {
|
|
||||||
"version": "15.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
|
|
||||||
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
|
|
||||||
"dependencies": {
|
|
||||||
"postcss-value-parser": "^4.0.0",
|
|
||||||
"read-cache": "^1.0.0",
|
|
||||||
"resolve": "^1.1.7"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"postcss": "^8.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/postcss-loader": {
|
|
||||||
"version": "7.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz",
|
|
||||||
"integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==",
|
|
||||||
"dependencies": {
|
|
||||||
"cosmiconfig": "^7.0.0",
|
|
||||||
"klona": "^2.0.5",
|
|
||||||
"semver": "^7.3.8"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 14.15.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"type": "opencollective",
|
|
||||||
"url": "https://opencollective.com/webpack"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"postcss": "^7.0.0 || ^8.0.1",
|
|
||||||
"webpack": "^5.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/postcss-loader/node_modules/cosmiconfig": {
|
|
||||||
"version": "7.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
|
|
||||||
"integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
|
|
||||||
"dependencies": {
|
|
||||||
"@types/parse-json": "^4.0.0",
|
|
||||||
"import-fresh": "^3.2.1",
|
|
||||||
"parse-json": "^5.0.0",
|
|
||||||
"path-type": "^4.0.0",
|
|
||||||
"yaml": "^1.10.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/postcss-media-query-parser": {
|
"node_modules/postcss-media-query-parser": {
|
||||||
"version": "0.2.3",
|
"version": "0.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
|
||||||
@ -7435,67 +7381,6 @@
|
|||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss-url": {
|
|
||||||
"version": "10.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz",
|
|
||||||
"integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==",
|
|
||||||
"dependencies": {
|
|
||||||
"make-dir": "~3.1.0",
|
|
||||||
"mime": "~2.5.2",
|
|
||||||
"minimatch": "~3.0.4",
|
|
||||||
"xxhashjs": "~0.2.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"postcss": "^8.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/postcss-url/node_modules/make-dir": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
|
|
||||||
"dependencies": {
|
|
||||||
"semver": "^6.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/postcss-url/node_modules/mime": {
|
|
||||||
"version": "2.5.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
|
|
||||||
"integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
|
|
||||||
"bin": {
|
|
||||||
"mime": "cli.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/postcss-url/node_modules/minimatch": {
|
|
||||||
"version": "3.0.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
|
|
||||||
"integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
|
|
||||||
"dependencies": {
|
|
||||||
"brace-expansion": "^1.1.7"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/postcss-url/node_modules/semver": {
|
|
||||||
"version": "6.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
|
||||||
"bin": {
|
|
||||||
"semver": "bin/semver.js"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/postcss-value-parser": {
|
"node_modules/postcss-value-parser": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||||
@ -7669,22 +7554,6 @@
|
|||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/read-cache": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
|
|
||||||
"dependencies": {
|
|
||||||
"pify": "^2.3.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/read-cache/node_modules/pify": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/read-pkg": {
|
"node_modules/read-pkg": {
|
||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
||||||
@ -7958,6 +7827,7 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||||
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
|
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
@ -9534,9 +9404,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack": {
|
"node_modules/webpack": {
|
||||||
"version": "5.76.0",
|
"version": "5.76.2",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
||||||
"integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==",
|
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
"@types/estree": "^0.0.51",
|
"@types/estree": "^0.0.51",
|
||||||
@ -10065,14 +9935,6 @@
|
|||||||
"node": "*"
|
"node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/xxhashjs": {
|
|
||||||
"version": "0.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz",
|
|
||||||
"integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==",
|
|
||||||
"dependencies": {
|
|
||||||
"cuint": "^0.2.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/y18n": {
|
"node_modules/y18n": {
|
||||||
"version": "5.0.8",
|
"version": "5.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
||||||
@ -10088,14 +9950,6 @@
|
|||||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/yaml": {
|
|
||||||
"version": "1.10.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
|
||||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/yargs": {
|
"node_modules/yargs": {
|
||||||
"version": "17.3.1",
|
"version": "17.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
|
||||||
@ -10156,6 +10010,7 @@
|
|||||||
"version": "7.18.6",
|
"version": "7.18.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
|
||||||
"integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
|
"integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/highlight": "^7.18.6"
|
"@babel/highlight": "^7.18.6"
|
||||||
}
|
}
|
||||||
@ -10163,12 +10018,14 @@
|
|||||||
"@babel/helper-validator-identifier": {
|
"@babel/helper-validator-identifier": {
|
||||||
"version": "7.19.1",
|
"version": "7.19.1",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
|
||||||
"integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
|
"integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"@babel/highlight": {
|
"@babel/highlight": {
|
||||||
"version": "7.18.6",
|
"version": "7.18.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
|
||||||
"integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
|
"integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/helper-validator-identifier": "^7.18.6",
|
"@babel/helper-validator-identifier": "^7.18.6",
|
||||||
"chalk": "^2.0.0",
|
"chalk": "^2.0.0",
|
||||||
@ -10179,6 +10036,7 @@
|
|||||||
"version": "3.2.1",
|
"version": "3.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"color-convert": "^1.9.0"
|
"color-convert": "^1.9.0"
|
||||||
}
|
}
|
||||||
@ -10187,6 +10045,7 @@
|
|||||||
"version": "2.4.2",
|
"version": "2.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-styles": "^3.2.1",
|
"ansi-styles": "^3.2.1",
|
||||||
"escape-string-regexp": "^1.0.5",
|
"escape-string-regexp": "^1.0.5",
|
||||||
@ -10197,6 +10056,7 @@
|
|||||||
"version": "1.9.3",
|
"version": "1.9.3",
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"color-name": "1.1.3"
|
"color-name": "1.1.3"
|
||||||
}
|
}
|
||||||
@ -10204,22 +10064,26 @@
|
|||||||
"color-name": {
|
"color-name": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
|
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"escape-string-regexp": {
|
"escape-string-regexp": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||||
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
|
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"has-flag": {
|
"has-flag": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||||
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
|
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
"version": "5.5.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"has-flag": "^3.0.0"
|
"has-flag": "^3.0.0"
|
||||||
}
|
}
|
||||||
@ -11153,11 +11017,6 @@
|
|||||||
"integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
|
"integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/parse-json": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
|
|
||||||
},
|
|
||||||
"@types/tern": {
|
"@types/tern": {
|
||||||
"version": "0.23.4",
|
"version": "0.23.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz",
|
||||||
@ -11786,7 +11645,8 @@
|
|||||||
"callsites": {
|
"callsites": {
|
||||||
"version": "3.1.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
||||||
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
|
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"camelcase": {
|
"camelcase": {
|
||||||
"version": "5.3.1",
|
"version": "5.3.1",
|
||||||
@ -12167,11 +12027,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
|
||||||
"integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
|
"integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
|
||||||
},
|
},
|
||||||
"cuint": {
|
|
||||||
"version": "0.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
|
|
||||||
"integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw=="
|
|
||||||
},
|
|
||||||
"cytoscape": {
|
"cytoscape": {
|
||||||
"version": "3.23.0",
|
"version": "3.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.23.0.tgz",
|
||||||
@ -12860,6 +12715,7 @@
|
|||||||
"version": "1.3.2",
|
"version": "1.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
|
||||||
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
|
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"is-arrayish": "^0.2.1"
|
"is-arrayish": "^0.2.1"
|
||||||
}
|
}
|
||||||
@ -13937,6 +13793,7 @@
|
|||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
|
||||||
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
|
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"parent-module": "^1.0.0",
|
"parent-module": "^1.0.0",
|
||||||
"resolve-from": "^4.0.0"
|
"resolve-from": "^4.0.0"
|
||||||
@ -14030,7 +13887,8 @@
|
|||||||
"is-arrayish": {
|
"is-arrayish": {
|
||||||
"version": "0.2.1",
|
"version": "0.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
|
||||||
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
|
"integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"is-bigint": {
|
"is-bigint": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
@ -14284,7 +14142,8 @@
|
|||||||
"js-tokens": {
|
"js-tokens": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
@ -14411,11 +14270,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
|
||||||
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
|
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
|
||||||
},
|
},
|
||||||
"klona": {
|
|
||||||
"version": "2.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz",
|
|
||||||
"integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA=="
|
|
||||||
},
|
|
||||||
"known-css-properties": {
|
"known-css-properties": {
|
||||||
"version": "0.26.0",
|
"version": "0.26.0",
|
||||||
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz",
|
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz",
|
||||||
@ -14499,7 +14353,8 @@
|
|||||||
"lines-and-columns": {
|
"lines-and-columns": {
|
||||||
"version": "1.2.4",
|
"version": "1.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
||||||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
|
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"linkify-it": {
|
"linkify-it": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
@ -14885,9 +14740,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"mini-css-extract-plugin": {
|
"mini-css-extract-plugin": {
|
||||||
"version": "2.7.2",
|
"version": "2.7.4",
|
||||||
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.4.tgz",
|
||||||
"integrity": "sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==",
|
"integrity": "sha512-V5zkjajQx9gnedglDap7ZjD1mNFNISzyllzrc+9+R4iwPRUAR0St20ADflQbWkVUQ2u/QU55t8mKaxUek8Cciw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"schema-utils": "^4.0.0"
|
"schema-utils": "^4.0.0"
|
||||||
}
|
}
|
||||||
@ -15248,6 +15103,7 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
||||||
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"callsites": "^3.0.0"
|
"callsites": "^3.0.0"
|
||||||
}
|
}
|
||||||
@ -15256,6 +15112,7 @@
|
|||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
||||||
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
|
"integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/code-frame": "^7.0.0",
|
"@babel/code-frame": "^7.0.0",
|
||||||
"error-ex": "^1.3.1",
|
"error-ex": "^1.3.1",
|
||||||
@ -15316,7 +15173,8 @@
|
|||||||
"path-type": {
|
"path-type": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
||||||
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
|
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"pathe": {
|
"pathe": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
@ -15444,40 +15302,6 @@
|
|||||||
"source-map-js": "^1.0.2"
|
"source-map-js": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"postcss-import": {
|
|
||||||
"version": "15.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
|
|
||||||
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
|
|
||||||
"requires": {
|
|
||||||
"postcss-value-parser": "^4.0.0",
|
|
||||||
"read-cache": "^1.0.0",
|
|
||||||
"resolve": "^1.1.7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"postcss-loader": {
|
|
||||||
"version": "7.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz",
|
|
||||||
"integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==",
|
|
||||||
"requires": {
|
|
||||||
"cosmiconfig": "^7.0.0",
|
|
||||||
"klona": "^2.0.5",
|
|
||||||
"semver": "^7.3.8"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"cosmiconfig": {
|
|
||||||
"version": "7.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
|
|
||||||
"integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
|
|
||||||
"requires": {
|
|
||||||
"@types/parse-json": "^4.0.0",
|
|
||||||
"import-fresh": "^3.2.1",
|
|
||||||
"parse-json": "^5.0.0",
|
|
||||||
"path-type": "^4.0.0",
|
|
||||||
"yaml": "^1.10.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"postcss-media-query-parser": {
|
"postcss-media-query-parser": {
|
||||||
"version": "0.2.3",
|
"version": "0.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
|
||||||
@ -15538,45 +15362,6 @@
|
|||||||
"util-deprecate": "^1.0.2"
|
"util-deprecate": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"postcss-url": {
|
|
||||||
"version": "10.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz",
|
|
||||||
"integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==",
|
|
||||||
"requires": {
|
|
||||||
"make-dir": "~3.1.0",
|
|
||||||
"mime": "~2.5.2",
|
|
||||||
"minimatch": "~3.0.4",
|
|
||||||
"xxhashjs": "~0.2.2"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"make-dir": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
|
|
||||||
"requires": {
|
|
||||||
"semver": "^6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mime": {
|
|
||||||
"version": "2.5.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
|
|
||||||
"integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg=="
|
|
||||||
},
|
|
||||||
"minimatch": {
|
|
||||||
"version": "3.0.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
|
|
||||||
"integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
|
|
||||||
"requires": {
|
|
||||||
"brace-expansion": "^1.1.7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"semver": {
|
|
||||||
"version": "6.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
|
||||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"postcss-value-parser": {
|
"postcss-value-parser": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||||
@ -15710,21 +15495,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"read-cache": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
|
|
||||||
"requires": {
|
|
||||||
"pify": "^2.3.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"pify": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"read-pkg": {
|
"read-pkg": {
|
||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
||||||
@ -15927,7 +15697,8 @@
|
|||||||
"resolve-from": {
|
"resolve-from": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||||
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
|
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"reusify": {
|
"reusify": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
@ -17080,9 +16851,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"webpack": {
|
"webpack": {
|
||||||
"version": "5.76.0",
|
"version": "5.76.2",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
||||||
"integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==",
|
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
"@types/estree": "^0.0.51",
|
"@types/estree": "^0.0.51",
|
||||||
@ -17443,14 +17214,6 @@
|
|||||||
"integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==",
|
"integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"xxhashjs": {
|
|
||||||
"version": "0.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz",
|
|
||||||
"integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==",
|
|
||||||
"requires": {
|
|
||||||
"cuint": "^0.2.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"y18n": {
|
"y18n": {
|
||||||
"version": "5.0.8",
|
"version": "5.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
||||||
@ -17463,11 +17226,6 @@
|
|||||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"yaml": {
|
|
||||||
"version": "1.10.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
|
||||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
|
|
||||||
},
|
|
||||||
"yargs": {
|
"yargs": {
|
||||||
"version": "17.3.1",
|
"version": "17.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
|
||||||
|
@ -30,12 +30,9 @@
|
|||||||
"katex": "0.16.4",
|
"katex": "0.16.4",
|
||||||
"license-checker-webpack-plugin": "0.2.1",
|
"license-checker-webpack-plugin": "0.2.1",
|
||||||
"mermaid": "10.0.2",
|
"mermaid": "10.0.2",
|
||||||
"mini-css-extract-plugin": "2.7.2",
|
"mini-css-extract-plugin": "2.7.4",
|
||||||
"monaco-editor": "0.34.1",
|
"monaco-editor": "0.34.1",
|
||||||
"monaco-editor-webpack-plugin": "7.0.1",
|
"monaco-editor-webpack-plugin": "7.0.1",
|
||||||
"postcss-import": "15.1.0",
|
|
||||||
"postcss-loader": "7.0.2",
|
|
||||||
"postcss-url": "10.1.3",
|
|
||||||
"pretty-ms": "8.0.0",
|
"pretty-ms": "8.0.0",
|
||||||
"sortablejs": "1.15.0",
|
"sortablejs": "1.15.0",
|
||||||
"swagger-ui-dist": "4.15.5",
|
"swagger-ui-dist": "4.15.5",
|
||||||
@ -46,7 +43,7 @@
|
|||||||
"vue-bar-graph": "2.0.0",
|
"vue-bar-graph": "2.0.0",
|
||||||
"vue-loader": "17.0.1",
|
"vue-loader": "17.0.1",
|
||||||
"vue3-calendar-heatmap": "2.0.0",
|
"vue3-calendar-heatmap": "2.0.0",
|
||||||
"webpack": "5.76.0",
|
"webpack": "5.76.2",
|
||||||
"webpack-cli": "5.0.1",
|
"webpack-cli": "5.0.1",
|
||||||
"workbox-routing": "6.5.4",
|
"workbox-routing": "6.5.4",
|
||||||
"workbox-strategies": "6.5.4",
|
"workbox-strategies": "6.5.4",
|
||||||
|
@ -936,6 +936,39 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if opts.HasReleases != nil && !unit_model.TypeReleases.UnitGlobalDisabled() {
|
||||||
|
if *opts.HasReleases {
|
||||||
|
units = append(units, repo_model.RepoUnit{
|
||||||
|
RepoID: repo.ID,
|
||||||
|
Type: unit_model.TypeReleases,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeReleases)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if opts.HasPackages != nil && !unit_model.TypePackages.UnitGlobalDisabled() {
|
||||||
|
if *opts.HasPackages {
|
||||||
|
units = append(units, repo_model.RepoUnit{
|
||||||
|
RepoID: repo.ID,
|
||||||
|
Type: unit_model.TypePackages,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypePackages)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if opts.HasActions != nil && !unit_model.TypeActions.UnitGlobalDisabled() {
|
||||||
|
if *opts.HasActions {
|
||||||
|
units = append(units, repo_model.RepoUnit{
|
||||||
|
RepoID: repo.ID,
|
||||||
|
Type: unit_model.TypeActions,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeActions)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if err := repo_model.UpdateRepositoryUnits(repo, units, deleteUnitTypes); err != nil {
|
if err := repo_model.UpdateRepositoryUnits(repo, units, deleteUnitTypes); err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "UpdateRepositoryUnits", err)
|
ctx.Error(http.StatusInternalServerError, "UpdateRepositoryUnits", err)
|
||||||
return err
|
return err
|
||||||
|
@ -717,10 +717,9 @@ func CompareDiff(ctx *context.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
baseGitRepo := ctx.Repo.GitRepo
|
baseTags, err := repo_model.GetTagNamesByRepoID(ctx, ctx.Repo.Repository.ID)
|
||||||
baseTags, err := baseGitRepo.GetTags(0, 0)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("GetTags", err)
|
ctx.ServerError("GetTagNamesByRepoID", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Data["Tags"] = baseTags
|
ctx.Data["Tags"] = baseTags
|
||||||
@ -738,9 +737,9 @@ func CompareDiff(ctx *context.Context) {
|
|||||||
}
|
}
|
||||||
ctx.Data["HeadBranches"] = headBranches
|
ctx.Data["HeadBranches"] = headBranches
|
||||||
|
|
||||||
headTags, err := ci.HeadGitRepo.GetTags(0, 0)
|
headTags, err := repo_model.GetTagNamesByRepoID(ctx, ci.HeadRepo.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("GetTags", err)
|
ctx.ServerError("GetTagNamesByRepoID", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Data["HeadTags"] = headTags
|
ctx.Data["HeadTags"] = headTags
|
||||||
|
@ -100,6 +100,21 @@ func innerToRepo(ctx context.Context, repo *repo_model.Repository, mode perm.Acc
|
|||||||
hasProjects = true
|
hasProjects = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hasReleases := false
|
||||||
|
if _, err := repo.GetUnit(ctx, unit_model.TypeReleases); err == nil {
|
||||||
|
hasReleases = true
|
||||||
|
}
|
||||||
|
|
||||||
|
hasPackages := false
|
||||||
|
if _, err := repo.GetUnit(ctx, unit_model.TypePackages); err == nil {
|
||||||
|
hasPackages = true
|
||||||
|
}
|
||||||
|
|
||||||
|
hasActions := false
|
||||||
|
if _, err := repo.GetUnit(ctx, unit_model.TypeActions); err == nil {
|
||||||
|
hasActions = true
|
||||||
|
}
|
||||||
|
|
||||||
if err := repo.LoadOwner(ctx); err != nil {
|
if err := repo.LoadOwner(ctx); err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -174,6 +189,9 @@ func innerToRepo(ctx context.Context, repo *repo_model.Repository, mode perm.Acc
|
|||||||
InternalTracker: internalTracker,
|
InternalTracker: internalTracker,
|
||||||
HasWiki: hasWiki,
|
HasWiki: hasWiki,
|
||||||
HasProjects: hasProjects,
|
HasProjects: hasProjects,
|
||||||
|
HasReleases: hasReleases,
|
||||||
|
HasPackages: hasPackages,
|
||||||
|
HasActions: hasActions,
|
||||||
ExternalWiki: externalWiki,
|
ExternalWiki: externalWiki,
|
||||||
HasPullRequests: hasPullRequests,
|
HasPullRequests: hasPullRequests,
|
||||||
IgnoreWhitespaceConflicts: ignoreWhitespaceConflicts,
|
IgnoreWhitespaceConflicts: ignoreWhitespaceConflicts,
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
{{end}}
|
{{end}}
|
||||||
<div class="ui language bottom floating slide up dropdown link item">
|
<div class="ui language bottom floating slide up dropdown link item">
|
||||||
{{svg "octicon-globe"}}
|
{{svg "octicon-globe"}}
|
||||||
<div class="text">{{.locale.LangName}}</div>
|
<span>{{.locale.LangName}}</span>
|
||||||
<div class="menu language-menu">
|
<div class="menu language-menu">
|
||||||
{{range .AllLangs}}
|
{{range .AllLangs}}
|
||||||
<a lang="{{.Lang}}" data-url="{{AppSubUrl}}/?lang={{.Lang}}" class="item {{if eq $.locale.Lang .Lang}}active selected{{end}}">{{.Name}}</a>
|
<a lang="{{.Lang}}" data-url="{{AppSubUrl}}/?lang={{.Lang}}" class="item {{if eq $.locale.Lang .Lang}}active selected{{end}}">{{.Name}}</a>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<div class="ui container" id="navbar" role="navigation" aria-label="{{.locale.Tr "aria.navbar"}}">
|
<nav class="ui container" id="navbar" aria-label="{{.locale.Tr "aria.navbar"}}">
|
||||||
{{$notificationUnreadCount := 0}}
|
{{$notificationUnreadCount := 0}}
|
||||||
{{if .IsSigned}}
|
{{if .IsSigned}}
|
||||||
{{if .NotificationUnreadCount}}{{$notificationUnreadCount = call .NotificationUnreadCount}}{{end}}
|
{{if .NotificationUnreadCount}}{{$notificationUnreadCount = call .NotificationUnreadCount}}{{end}}
|
||||||
@ -150,7 +150,7 @@
|
|||||||
</div><!-- end content create new menu -->
|
</div><!-- end content create new menu -->
|
||||||
</div><!-- end dropdown menu create new -->
|
</div><!-- end dropdown menu create new -->
|
||||||
|
|
||||||
<div class="ui dropdown jump item tooltip gt-mx-0" tabindex="-1" data-content="{{.locale.Tr "user_profile_and_more"}}">
|
<div class="ui dropdown jump item tooltip gt-mx-0" data-content="{{.locale.Tr "user_profile_and_more"}}">
|
||||||
<span class="text">
|
<span class="text">
|
||||||
{{avatar $.Context .SignedUser 24 "tiny"}}
|
{{avatar $.Context .SignedUser 24 "tiny"}}
|
||||||
<span class="sr-only">{{.locale.Tr "user_profile_and_more"}}</span>
|
<span class="sr-only">{{.locale.Tr "user_profile_and_more"}}</span>
|
||||||
@ -190,14 +190,14 @@
|
|||||||
|
|
||||||
<a class="{{if .PageIsAdmin}}active {{end}}item" href="{{AppSubUrl}}/admin">
|
<a class="{{if .PageIsAdmin}}active {{end}}item" href="{{AppSubUrl}}/admin">
|
||||||
{{svg "octicon-server"}}
|
{{svg "octicon-server"}}
|
||||||
{{.locale.Tr "admin_panel"}}<!-- Admin Panel -->
|
{{.locale.Tr "admin_panel"}}
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
<div class="divider"></div>
|
<div class="divider"></div>
|
||||||
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout" data-redirect="{{AppSubUrl}}/">
|
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout" data-redirect="{{AppSubUrl}}/">
|
||||||
{{svg "octicon-sign-out"}}
|
{{svg "octicon-sign-out"}}
|
||||||
{{.locale.Tr "sign_out"}}<!-- Sign Out -->
|
{{.locale.Tr "sign_out"}}
|
||||||
</a>
|
</a>
|
||||||
</div><!-- end content avatar menu -->
|
</div><!-- end content avatar menu -->
|
||||||
</div><!-- end dropdown avatar menu -->
|
</div><!-- end dropdown avatar menu -->
|
||||||
@ -213,6 +213,6 @@
|
|||||||
<a class="item{{if .PageIsSignIn}} active{{end}}" rel="nofollow" href="{{AppSubUrl}}/user/login{{if not .PageIsSignIn}}?redirect_to={{.CurrentURL}}{{end}}">
|
<a class="item{{if .PageIsSignIn}} active{{end}}" rel="nofollow" href="{{AppSubUrl}}/user/login{{if not .PageIsSignIn}}?redirect_to={{.CurrentURL}}{{end}}">
|
||||||
{{svg "octicon-sign-in"}} {{.locale.Tr "sign_in"}}
|
{{svg "octicon-sign-in"}} {{.locale.Tr "sign_in"}}
|
||||||
</a>
|
</a>
|
||||||
</div><!-- end anonymous right menu -->
|
</div><!-- end anonymous user right menu -->
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</nav>
|
||||||
|
@ -161,7 +161,8 @@
|
|||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
{{if $showFileViewToggle}}
|
{{if $showFileViewToggle}}
|
||||||
<div id="diff-rendered-{{$file.NameHash}}" class="file-body file-code {{if $.IsSplitStyle}} code-diff-split{{else}} code-diff-unified{{end}}">
|
{{/* for image or CSV, it can have a horizontal scroll bar, there won't be review comment context menu (position absolute) which would be clipped by "overflow" */}}
|
||||||
|
<div id="diff-rendered-{{$file.NameHash}}" class="file-body file-code {{if $.IsSplitStyle}}code-diff-split{{else}}code-diff-unified{{end}} gt-overflow-x-scroll">
|
||||||
<table class="chroma gt-w-100">
|
<table class="chroma gt-w-100">
|
||||||
{{if $isImage}}
|
{{if $isImage}}
|
||||||
{{template "repo/diff/image_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}}
|
{{template "repo/diff/image_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}}
|
||||||
|
@ -134,7 +134,7 @@
|
|||||||
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}">{{.locale.Tr "repo.issues.filter_poster_no_select"}}</a>
|
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}">{{.locale.Tr "repo.issues.filter_poster_no_select"}}</a>
|
||||||
{{range .Posters}}
|
{{range .Posters}}
|
||||||
<a class="{{if eq $.PosterID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{.ID}}">
|
<a class="{{if eq $.PosterID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{.ID}}">
|
||||||
{{avatar $.Context .}} {{.GetDisplayName}}
|
{{avatar $.Context .}}{{template "repo/search_name" .}}
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
@ -154,7 +154,7 @@
|
|||||||
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&poster={{$.PosterID}}">{{.locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
|
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&poster={{$.PosterID}}">{{.locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
|
||||||
{{range .Assignees}}
|
{{range .Assignees}}
|
||||||
<a class="{{if eq $.AssigneeID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{.ID}}&poster={{$.PosterID}}">
|
<a class="{{if eq $.AssigneeID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{.ID}}&poster={{$.PosterID}}">
|
||||||
{{avatar $.Context .}} {{.GetDisplayName}}
|
{{avatar $.Context .}}{{template "repo/search_name" .}}
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -70,10 +70,14 @@
|
|||||||
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
||||||
</span>
|
</span>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
|
<div class="ui icon search input">
|
||||||
|
<i class="icon gt-df gt-ac gt-jc">{{svg "octicon-search" 16}}</i>
|
||||||
|
<input type="text" placeholder="{{.locale.Tr "repo.issues.filter_poster"}}">
|
||||||
|
</div>
|
||||||
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}">{{.locale.Tr "repo.issues.filter_poster_no_select"}}</a>
|
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}">{{.locale.Tr "repo.issues.filter_poster_no_select"}}</a>
|
||||||
{{range .Posters}}
|
{{range .Posters}}
|
||||||
<a class="{{if eq $.PosterID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&assignee={{$.AssigneeID}}&poster={{.ID}}">
|
<a class="{{if eq $.PosterID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&assignee={{$.AssigneeID}}&poster={{.ID}}">
|
||||||
{{avatar $.Context .}} {{.GetDisplayName}}
|
{{avatar $.Context .}}{{template "repo/search_name" .}}
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
@ -93,8 +97,7 @@
|
|||||||
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&poster={{$.PosterID}}">{{.locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
|
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&poster={{$.PosterID}}">{{.locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
|
||||||
{{range .Assignees}}
|
{{range .Assignees}}
|
||||||
<a class="{{if eq $.AssigneeID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&assignee={{.ID}}&poster={{$.PosterID}}">
|
<a class="{{if eq $.AssigneeID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&assignee={{.ID}}&poster={{$.PosterID}}">
|
||||||
{{avatar $.Context . 28 "gt-mr-2"}}
|
{{avatar $.Context . 28 "gt-mr-2"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -186,7 +186,7 @@
|
|||||||
<a class="item muted" href="#" data-id="{{.ID}}" data-id-selector="#assignee_{{.ID}}">
|
<a class="item muted" href="#" data-id="{{.ID}}" data-id-selector="#assignee_{{.ID}}">
|
||||||
<span class="octicon-check invisible">{{svg "octicon-check"}}</span>
|
<span class="octicon-check invisible">{{svg "octicon-check"}}</span>
|
||||||
<span class="text">
|
<span class="text">
|
||||||
{{avatar $.Context . 28 "gt-mr-3"}}{{.GetDisplayName}}
|
{{avatar $.Context . 28 "gt-mr-3"}}{{template "repo/search_name" .}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
@ -116,8 +116,12 @@
|
|||||||
{{.locale.Tr "repo.issues.reopen_issue"}}
|
{{.locale.Tr "repo.issues.reopen_issue"}}
|
||||||
</button>
|
</button>
|
||||||
{{else}}
|
{{else}}
|
||||||
<button id="status-button" class="ui red basic button" tabindex="6" data-status="{{.locale.Tr "repo.issues.close_issue"}}" data-status-and-comment="{{.locale.Tr "repo.issues.close_comment_issue"}}" data-status-val="close">
|
{{$closeTranslationKey := "repo.issues.close"}}
|
||||||
{{.locale.Tr "repo.issues.close_issue"}}
|
{{if .Issue.IsPull}}
|
||||||
|
{{$closeTranslationKey = "repo.pulls.close"}}
|
||||||
|
{{end}}
|
||||||
|
<button id="status-button" class="ui red basic button" tabindex="6" data-status="{{.locale.Tr $closeTranslationKey}}" data-status-and-comment="{{.locale.Tr "repo.issues.close_comment_issue"}}" data-status-val="close">
|
||||||
|
{{.locale.Tr $closeTranslationKey}}
|
||||||
</button>
|
</button>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
@ -167,9 +171,13 @@
|
|||||||
{{.locale.Tr "repo.issues.reopen_issue"}}
|
{{.locale.Tr "repo.issues.reopen_issue"}}
|
||||||
</button>
|
</button>
|
||||||
{{else}}
|
{{else}}
|
||||||
<button id="status-button" class="ui red basic button" tabindex="6" data-status="{{.locale.Tr "repo.issues.close_issue"}}" data-status-and-comment="{{.locale.Tr "repo.issues.close_comment_issue"}}" data-status-val="close">
|
{{$closeTranslationKey := "repo.issues.close"}}
|
||||||
{{.locale.Tr "repo.issues.close_issue"}}
|
{{if .Issue.IsPull}}
|
||||||
</button>
|
{{$closeTranslationKey = "repo.pulls.close"}}
|
||||||
|
{{end}}
|
||||||
|
<button id="status-button" class="ui red basic button" tabindex="6" data-status="{{.locale.Tr $closeTranslationKey}}" data-status-and-comment="{{.locale.Tr "repo.issues.close_comment_issue"}}" data-status-val="close">
|
||||||
|
{{.locale.Tr $closeTranslationKey}}
|
||||||
|
</button>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
<button class="ui green button loading-button" tabindex="5">
|
<button class="ui green button loading-button" tabindex="5">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{if .ctxData.IsSigned}}
|
{{if .ctxData.IsSigned}}
|
||||||
<div class="item action ui pointing select-reaction dropdown top right" data-action-url="{{.ActionURL}}">
|
<div class="item action ui dropdown jump pointing top right select-reaction" data-action-url="{{.ActionURL}}">
|
||||||
<a class="add-reaction">
|
<a class="add-reaction">
|
||||||
{{svg "octicon-smiley"}}
|
{{svg "octicon-smiley"}}
|
||||||
</a>
|
</a>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{if .ctxData.IsSigned}}
|
{{if .ctxData.IsSigned}}
|
||||||
<div class="item action ui pointing custom dropdown top right context-dropdown">
|
<div class="item action ui dropdown jump pointing top right context-dropdown">
|
||||||
<a class="context-menu">
|
<a class="context-menu">
|
||||||
{{svg "octicon-kebab-horizontal"}}
|
{{svg "octicon-kebab-horizontal"}}
|
||||||
</a>
|
</a>
|
||||||
|
@ -26,8 +26,7 @@
|
|||||||
<a class="{{if not .CanChange}}ui tooltip{{end}} item {{if .Checked}} checked {{end}} {{if not .CanChange}}ban-change{{end}}" href="#" data-id="{{.ItemID}}" data-id-selector="#review_request_{{.ItemID}}" {{if not .CanChange}} data-content="{{$.locale.Tr "repo.issues.remove_request_review_block"}}"{{end}}>
|
<a class="{{if not .CanChange}}ui tooltip{{end}} item {{if .Checked}} checked {{end}} {{if not .CanChange}}ban-change{{end}}" href="#" data-id="{{.ItemID}}" data-id-selector="#review_request_{{.ItemID}}" {{if not .CanChange}} data-content="{{$.locale.Tr "repo.issues.remove_request_review_block"}}"{{end}}>
|
||||||
<span class="octicon-check {{if not .Checked}}invisible{{end}}">{{svg "octicon-check"}}</span>
|
<span class="octicon-check {{if not .Checked}}invisible{{end}}">{{svg "octicon-check"}}</span>
|
||||||
<span class="text">
|
<span class="text">
|
||||||
{{avatar $.Context .User 28 "gt-mr-3"}}
|
{{avatar $.Context .User 28 "gt-mr-3"}}{{template "repo/search_name" .User}}
|
||||||
{{.User.GetDisplayName}}
|
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
@ -258,8 +257,7 @@
|
|||||||
{{end}}
|
{{end}}
|
||||||
<span class="octicon-check {{if not $checked}}invisible{{end}}">{{svg "octicon-check"}}</span>
|
<span class="octicon-check {{if not $checked}}invisible{{end}}">{{svg "octicon-check"}}</span>
|
||||||
<span class="text">
|
<span class="text">
|
||||||
{{avatar $.Context . 28 "gt-mr-3"}}
|
{{avatar $.Context . 28 "gt-mr-3"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
1
templates/repo/search_name.tmpl
Normal file
1
templates/repo/search_name.tmpl
Normal file
@ -0,0 +1 @@
|
|||||||
|
{{.Name}}{{if IsShowFullName}}<span class="search-fullname"> {{.FullName}}</span>{{end}}
|
@ -49,8 +49,7 @@
|
|||||||
<div class="menu">
|
<div class="menu">
|
||||||
{{range .Users}}
|
{{range .Users}}
|
||||||
<div class="item" data-value="{{.ID}}">
|
<div class="item" data-value="{{.ID}}">
|
||||||
{{avatar $.Context . 28 "mini"}}
|
{{avatar $.Context . 28 "mini"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
@ -101,8 +100,7 @@
|
|||||||
<div class="menu">
|
<div class="menu">
|
||||||
{{range .Users}}
|
{{range .Users}}
|
||||||
<div class="item" data-value="{{.ID}}">
|
<div class="item" data-value="{{.ID}}">
|
||||||
{{avatar $.Context . 28 "mini"}}
|
{{avatar $.Context . 28 "mini"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
@ -181,8 +179,7 @@
|
|||||||
<div class="menu">
|
<div class="menu">
|
||||||
{{range .Users}}
|
{{range .Users}}
|
||||||
<div class="item" data-value="{{.ID}}">
|
<div class="item" data-value="{{.ID}}">
|
||||||
{{avatar $.Context . 28 "mini"}}
|
{{avatar $.Context . 28 "mini"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -36,8 +36,7 @@
|
|||||||
<div class="menu">
|
<div class="menu">
|
||||||
{{range .Users}}
|
{{range .Users}}
|
||||||
<div class="item" data-value="{{.ID}}">
|
<div class="item" data-value="{{.ID}}">
|
||||||
{{avatar $.Context . 28 "mini"}}
|
{{avatar $.Context . 28 "mini"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -16861,11 +16861,21 @@
|
|||||||
"external_wiki": {
|
"external_wiki": {
|
||||||
"$ref": "#/definitions/ExternalWiki"
|
"$ref": "#/definitions/ExternalWiki"
|
||||||
},
|
},
|
||||||
|
"has_actions": {
|
||||||
|
"description": "either `true` to enable actions unit, or `false` to disable them.",
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "HasActions"
|
||||||
|
},
|
||||||
"has_issues": {
|
"has_issues": {
|
||||||
"description": "either `true` to enable issues for this repository or `false` to disable them.",
|
"description": "either `true` to enable issues for this repository or `false` to disable them.",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"x-go-name": "HasIssues"
|
"x-go-name": "HasIssues"
|
||||||
},
|
},
|
||||||
|
"has_packages": {
|
||||||
|
"description": "either `true` to enable packages unit, or `false` to disable them.",
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "HasPackages"
|
||||||
|
},
|
||||||
"has_projects": {
|
"has_projects": {
|
||||||
"description": "either `true` to enable project unit, or `false` to disable them.",
|
"description": "either `true` to enable project unit, or `false` to disable them.",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
@ -16876,6 +16886,11 @@
|
|||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"x-go-name": "HasPullRequests"
|
"x-go-name": "HasPullRequests"
|
||||||
},
|
},
|
||||||
|
"has_releases": {
|
||||||
|
"description": "either `true` to enable releases unit, or `false` to disable them.",
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "HasReleases"
|
||||||
|
},
|
||||||
"has_wiki": {
|
"has_wiki": {
|
||||||
"description": "either `true` to enable the wiki for this repository or `false` to disable it.",
|
"description": "either `true` to enable the wiki for this repository or `false` to disable it.",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
@ -19421,10 +19436,18 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"x-go-name": "FullName"
|
"x-go-name": "FullName"
|
||||||
},
|
},
|
||||||
|
"has_actions": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "HasActions"
|
||||||
|
},
|
||||||
"has_issues": {
|
"has_issues": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"x-go-name": "HasIssues"
|
"x-go-name": "HasIssues"
|
||||||
},
|
},
|
||||||
|
"has_packages": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "HasPackages"
|
||||||
|
},
|
||||||
"has_projects": {
|
"has_projects": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"x-go-name": "HasProjects"
|
"x-go-name": "HasProjects"
|
||||||
@ -19433,6 +19456,10 @@
|
|||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"x-go-name": "HasPullRequests"
|
"x-go-name": "HasPullRequests"
|
||||||
},
|
},
|
||||||
|
"has_releases": {
|
||||||
|
"type": "boolean",
|
||||||
|
"x-go-name": "HasReleases"
|
||||||
|
},
|
||||||
"has_wiki": {
|
"has_wiki": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"x-go-name": "HasWiki"
|
"x-go-name": "HasWiki"
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
/* below class names match Tailwind CSS */
|
/* below class names match Tailwind CSS */
|
||||||
.gt-pointer-events-none { pointer-events: none !important; }
|
.gt-pointer-events-none { pointer-events: none !important; }
|
||||||
.gt-relative { position: relative !important; }
|
.gt-relative { position: relative !important; }
|
||||||
|
.gt-overflow-x-scroll { overflow-x: scroll !important; }
|
||||||
|
|
||||||
.gt-mono {
|
.gt-mono {
|
||||||
font-family: var(--fonts-monospace) !important;
|
font-family: var(--fonts-monospace) !important;
|
||||||
|
@ -3337,10 +3337,6 @@ td.blob-excerpt {
|
|||||||
min-width: 100px;
|
min-width: 100px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.diff-file-body {
|
|
||||||
overflow-x: scroll;
|
|
||||||
}
|
|
||||||
|
|
||||||
.diff-stats-bar {
|
.diff-stats-bar {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
background-color: var(--color-red);
|
background-color: var(--color-red);
|
||||||
@ -3627,3 +3623,7 @@ td.blob-excerpt {
|
|||||||
.pr-status .status-details > span {
|
.pr-status .status-details > span {
|
||||||
padding-right: 0.5em; /* To match the alignment with the "required" label */
|
padding-right: 0.5em; /* To match the alignment with the "required" label */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.search-fullname {
|
||||||
|
color: var(--color-text-light-2);
|
||||||
|
}
|
||||||
|
@ -1,2 +1 @@
|
|||||||
/* This import requires postcss-import so the media query is preserved in the output */
|
|
||||||
@import "./theme-arc-green.css" (prefers-color-scheme: dark);
|
@import "./theme-arc-green.css" (prefers-color-scheme: dark);
|
||||||
|
@ -6,42 +6,16 @@ function generateAriaId() {
|
|||||||
return `_aria_auto_id_${ariaIdCounter++}`;
|
return `_aria_auto_id_${ariaIdCounter++}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// make the item has role=option, and add an id if there wasn't one yet.
|
|
||||||
function prepareMenuItem($item) {
|
|
||||||
if (!$item.attr('id')) $item.attr('id', generateAriaId());
|
|
||||||
$item.attr({'role': 'menuitem', 'tabindex': '-1'});
|
|
||||||
$item.find('a').attr('tabindex', '-1'); // as above, the elements inside the dropdown menu item should not be focusable, the focus should always be on the dropdown primary element.
|
|
||||||
}
|
|
||||||
|
|
||||||
// when the menu items are loaded from AJAX requests, the items are created dynamically
|
|
||||||
const defaultCreateDynamicMenu = $.fn.dropdown.settings.templates.menu;
|
|
||||||
$.fn.dropdown.settings.templates.menu = function(response, fields, preserveHTML, className) {
|
|
||||||
const ret = defaultCreateDynamicMenu(response, fields, preserveHTML, className);
|
|
||||||
const $wrapper = $('<div>').append(ret);
|
|
||||||
const $items = $wrapper.find('> .item');
|
|
||||||
$items.each((_, item) => {
|
|
||||||
prepareMenuItem($(item));
|
|
||||||
});
|
|
||||||
return $wrapper.html();
|
|
||||||
};
|
|
||||||
|
|
||||||
function attachOneDropdownAria($dropdown) {
|
function attachOneDropdownAria($dropdown) {
|
||||||
if ($dropdown.attr('data-aria-attached')) return;
|
if ($dropdown.attr('data-aria-attached') || $dropdown.hasClass('custom')) return;
|
||||||
$dropdown.attr('data-aria-attached', 1);
|
$dropdown.attr('data-aria-attached', 1);
|
||||||
|
|
||||||
const $textSearch = $dropdown.find('input.search').eq(0);
|
// Dropdown has 2 different focusing behaviors
|
||||||
const $focusable = $textSearch.length ? $textSearch : $dropdown; // see comment below
|
// * with search input: the input is focused, and it works with aria-activedescendant pointing another sibling element.
|
||||||
if (!$focusable.length) return;
|
|
||||||
|
|
||||||
// prepare menu list
|
|
||||||
const $menu = $dropdown.find('> .menu');
|
|
||||||
if (!$menu.attr('id')) $menu.attr('id', generateAriaId());
|
|
||||||
|
|
||||||
// dropdown has 2 different focusing behaviors
|
|
||||||
// * with search input: the input is focused, and it works perfectly with aria-activedescendant pointing another sibling element.
|
|
||||||
// * without search input (but the readonly text), the dropdown itself is focused. then the aria-activedescendant points to the element inside dropdown
|
// * without search input (but the readonly text), the dropdown itself is focused. then the aria-activedescendant points to the element inside dropdown
|
||||||
|
// Some desktop screen readers may change the focus, but dropdown requires that the focus must be on its primary element, then they don't work well.
|
||||||
|
|
||||||
// expected user interactions for dropdown with aria support:
|
// Expected user interactions for dropdown with aria support:
|
||||||
// * user can use Tab to focus in the dropdown, then the dropdown menu (list) will be shown
|
// * user can use Tab to focus in the dropdown, then the dropdown menu (list) will be shown
|
||||||
// * user presses Tab on the focused dropdown to move focus to next sibling focusable element (but not the menu item)
|
// * user presses Tab on the focused dropdown to move focus to next sibling focusable element (but not the menu item)
|
||||||
// * user can use arrow key Up/Down to navigate between menu items
|
// * user can use arrow key Up/Down to navigate between menu items
|
||||||
@ -51,31 +25,83 @@ function attachOneDropdownAria($dropdown) {
|
|||||||
|
|
||||||
// TODO: multiple selection is not supported yet.
|
// TODO: multiple selection is not supported yet.
|
||||||
|
|
||||||
|
const $textSearch = $dropdown.find('input.search').eq(0);
|
||||||
|
const $focusable = $textSearch.length ? $textSearch : $dropdown; // the primary element for focus, see comment above
|
||||||
|
if (!$focusable.length) return;
|
||||||
|
|
||||||
|
// There are 2 possible solutions about the role: combobox or menu.
|
||||||
|
// The idea is that if there is an input, then it's a combobox, otherwise it's a menu.
|
||||||
|
// Since #19861 we have prepared the "combobox" solution, but didn't get enough time to put it into practice and test before.
|
||||||
|
const isComboBox = $dropdown.find('input').length > 0;
|
||||||
|
|
||||||
|
const focusableRole = isComboBox ? 'combobox' : 'button';
|
||||||
|
const listPopupRole = isComboBox ? 'listbox' : 'menu';
|
||||||
|
const listItemRole = isComboBox ? 'option' : 'menuitem';
|
||||||
|
|
||||||
|
// make the item has role=option/menuitem, add an id if there wasn't one yet, make items as non-focusable
|
||||||
|
// the elements inside the dropdown menu item should not be focusable, the focus should always be on the dropdown primary element.
|
||||||
|
function prepareMenuItem($item) {
|
||||||
|
if (!$item.attr('id')) $item.attr('id', generateAriaId());
|
||||||
|
$item.attr({'role': listItemRole, 'tabindex': '-1'});
|
||||||
|
$item.find('a').attr('tabindex', '-1');
|
||||||
|
}
|
||||||
|
|
||||||
|
// delegate the dropdown's template function to add aria attributes.
|
||||||
|
// the "template" functions are used for dynamic creation (eg: AJAX)
|
||||||
|
const dropdownTemplates = {...$dropdown.dropdown('setting', 'templates')};
|
||||||
|
const dropdownTemplatesMenuOld = dropdownTemplates.menu;
|
||||||
|
dropdownTemplates.menu = function(response, fields, preserveHTML, className) {
|
||||||
|
// when the dropdown menu items are loaded from AJAX requests, the items are created dynamically
|
||||||
|
const menuItems = dropdownTemplatesMenuOld(response, fields, preserveHTML, className);
|
||||||
|
const $wrapper = $('<div>').append(menuItems);
|
||||||
|
const $items = $wrapper.find('> .item');
|
||||||
|
$items.each((_, item) => prepareMenuItem($(item)));
|
||||||
|
return $wrapper.html();
|
||||||
|
};
|
||||||
|
$dropdown.dropdown('setting', 'templates', dropdownTemplates);
|
||||||
|
|
||||||
|
// use tooltip's content as aria-label if there is no aria-label
|
||||||
|
if ($dropdown.hasClass('tooltip') && $dropdown.attr('data-content') && !$dropdown.attr('aria-label')) {
|
||||||
|
$dropdown.attr('aria-label', $dropdown.attr('data-content'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// prepare dropdown menu list popup
|
||||||
|
const $menu = $dropdown.find('> .menu');
|
||||||
|
if (!$menu.attr('id')) $menu.attr('id', generateAriaId());
|
||||||
|
$menu.find('> .item').each((_, item) => {
|
||||||
|
prepareMenuItem($(item));
|
||||||
|
});
|
||||||
|
// this role could only be changed after its content is ready, otherwise some browsers+readers (like Chrome+AppleVoice) crash
|
||||||
|
$menu.attr('role', listPopupRole);
|
||||||
|
|
||||||
|
// make the primary element (focusable) aria-friendly
|
||||||
$focusable.attr({
|
$focusable.attr({
|
||||||
'role': 'menu',
|
'role': $focusable.attr('role') ?? focusableRole,
|
||||||
'aria-haspopup': 'menu',
|
'aria-haspopup': listPopupRole,
|
||||||
'aria-controls': $menu.attr('id'),
|
'aria-controls': $menu.attr('id'),
|
||||||
'aria-expanded': 'false',
|
'aria-expanded': 'false',
|
||||||
});
|
});
|
||||||
|
|
||||||
if ($dropdown.attr('data-content') && !$dropdown.attr('aria-label')) {
|
// when showing, it has class: ".animating.in"
|
||||||
$dropdown.attr('aria-label', $dropdown.attr('data-content'));
|
// when hiding, it has class: ".visible.animating.out"
|
||||||
}
|
const isMenuVisible = () => ($menu.hasClass('visible') && !$menu.hasClass('out')) || $menu.hasClass('in');
|
||||||
|
|
||||||
$menu.find('> .item').each((_, item) => {
|
|
||||||
prepareMenuItem($(item));
|
|
||||||
});
|
|
||||||
|
|
||||||
// update aria attributes according to current active/selected item
|
// update aria attributes according to current active/selected item
|
||||||
const refreshAria = () => {
|
const refreshAria = () => {
|
||||||
const isMenuVisible = !$menu.is('.hidden') && !$menu.is('.animating.out');
|
const menuVisible = isMenuVisible();
|
||||||
$focusable.attr('aria-expanded', isMenuVisible ? 'true' : 'false');
|
$focusable.attr('aria-expanded', menuVisible ? 'true' : 'false');
|
||||||
|
|
||||||
let $active = $menu.find('> .item.active');
|
// if there is an active item, use it (the user is navigating between items)
|
||||||
if (!$active.length) $active = $menu.find('> .item.selected'); // it's strange that we need this fallback at the moment
|
// otherwise use the "selected" for combobox (for the last selected item)
|
||||||
|
const $active = $menu.find('> .item.active, > .item.selected');
|
||||||
// if there is an active item, use its id. if no active item, then the empty string is set
|
// if the popup is visible and has an active/selected item, use its id as aria-activedescendant
|
||||||
$focusable.attr('aria-activedescendant', $active.attr('id'));
|
if (menuVisible) {
|
||||||
|
$focusable.attr('aria-activedescendant', $active.attr('id'));
|
||||||
|
} else if (!isComboBox) {
|
||||||
|
// for menu, when the popup is hidden, no need to keep the aria-activedescendant, and clear the active/selected item
|
||||||
|
$focusable.removeAttr('aria-activedescendant');
|
||||||
|
$active.removeClass('active').removeClass('selected');
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$dropdown.on('keydown', (e) => {
|
$dropdown.on('keydown', (e) => {
|
||||||
@ -85,16 +111,51 @@ function attachOneDropdownAria($dropdown) {
|
|||||||
if (!$item) $item = $menu.find('> .item.selected'); // when dropdown filters items by input, there is no "value", so query the "selected" item
|
if (!$item) $item = $menu.find('> .item.selected'); // when dropdown filters items by input, there is no "value", so query the "selected" item
|
||||||
// if the selected item is clickable, then trigger the click event.
|
// if the selected item is clickable, then trigger the click event.
|
||||||
// we can not click any item without check, because Fomantic code might also handle the Enter event. that would result in double click.
|
// we can not click any item without check, because Fomantic code might also handle the Enter event. that would result in double click.
|
||||||
if ($item && ($item.is('a') || $item.is('.js-aria-clickable'))) $item[0].click();
|
if ($item && ($item.is('a') || $item.hasClass('js-aria-clickable'))) $item[0].click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// use setTimeout to run the refreshAria in next tick (to make sure the Fomantic UI code has finished its work)
|
// use setTimeout to run the refreshAria in next tick (to make sure the Fomantic UI code has finished its work)
|
||||||
const deferredRefreshAria = () => { setTimeout(refreshAria, 0) }; // do not return any value, jQuery has return-value related behaviors.
|
// do not return any value, jQuery has return-value related behaviors.
|
||||||
$focusable.on('focus', deferredRefreshAria);
|
// when the popup is hiding, it's better to have a small "delay", because there is a Fomantic UI animation
|
||||||
$focusable.on('mouseup', deferredRefreshAria);
|
// without the delay for hiding, the UI will be somewhat laggy and sometimes may get stuck in the animation.
|
||||||
$focusable.on('blur', deferredRefreshAria);
|
const deferredRefreshAria = (delay = 0) => { setTimeout(refreshAria, delay) };
|
||||||
$dropdown.on('keyup', (e) => { if (e.key.startsWith('Arrow')) deferredRefreshAria(); });
|
$dropdown.on('keyup', (e) => { if (e.key.startsWith('Arrow')) deferredRefreshAria(); });
|
||||||
|
|
||||||
|
// if the dropdown has been opened by focus, do not trigger the next click event again.
|
||||||
|
// otherwise the dropdown will be closed immediately, especially on Android with TalkBack
|
||||||
|
// * desktop event sequence: mousedown -> focus -> mouseup -> click
|
||||||
|
// * mobile event sequence: focus -> mousedown -> mouseup -> click
|
||||||
|
// Fomantic may stop propagation of blur event, use capture to make sure we can still get the event
|
||||||
|
let ignoreClickPreEvents = 0, ignoreClickPreVisible = 0;
|
||||||
|
$dropdown[0].addEventListener('mousedown', () => {
|
||||||
|
ignoreClickPreVisible += isMenuVisible() ? 1 : 0;
|
||||||
|
ignoreClickPreEvents++;
|
||||||
|
}, true);
|
||||||
|
$dropdown[0].addEventListener('focus', () => {
|
||||||
|
ignoreClickPreVisible += isMenuVisible() ? 1 : 0;
|
||||||
|
ignoreClickPreEvents++;
|
||||||
|
deferredRefreshAria();
|
||||||
|
}, true);
|
||||||
|
$dropdown[0].addEventListener('blur', () => {
|
||||||
|
ignoreClickPreVisible = ignoreClickPreEvents = 0;
|
||||||
|
deferredRefreshAria(100);
|
||||||
|
}, true);
|
||||||
|
$dropdown[0].addEventListener('mouseup', () => {
|
||||||
|
setTimeout(() => {
|
||||||
|
ignoreClickPreVisible = ignoreClickPreEvents = 0;
|
||||||
|
deferredRefreshAria(100);
|
||||||
|
}, 0);
|
||||||
|
}, true);
|
||||||
|
$dropdown[0].addEventListener('click', (e) => {
|
||||||
|
if (isMenuVisible() &&
|
||||||
|
ignoreClickPreVisible !== 2 && // dropdown is switch from invisible to visible
|
||||||
|
ignoreClickPreEvents === 2 // the click event is related to mousedown+focus
|
||||||
|
) {
|
||||||
|
e.stopPropagation(); // if the dropdown menu has been opened by focus, do not trigger the next click event again
|
||||||
|
}
|
||||||
|
ignoreClickPreEvents = ignoreClickPreVisible = 0;
|
||||||
|
}, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function attachDropdownAria($dropdowns) {
|
export function attachDropdownAria($dropdowns) {
|
||||||
|
@ -1,4 +1,27 @@
|
|||||||
**This document is used as aria/a11y reference for future developers**
|
# Background
|
||||||
|
|
||||||
|
This document is used as aria/accessibility(a11y) reference for future developers.
|
||||||
|
|
||||||
|
There are a lot of a11y problems in the Fomantic UI library. This `aria.js` is used
|
||||||
|
as a workaround to make the UI more accessible.
|
||||||
|
|
||||||
|
The `aria.js` is designed to avoid touching the official Fomantic UI library,
|
||||||
|
and to be as independent as possible, so it can be easily modified/removed in the future.
|
||||||
|
|
||||||
|
To test the aria/accessibility with screen readers, developers can use the following steps:
|
||||||
|
|
||||||
|
* On macOS, you can use VoiceOver.
|
||||||
|
* Press `Command + F5` to turn on VoiceOver.
|
||||||
|
* Try to operate the UI with keyboard-only.
|
||||||
|
* Use Tab/Shift+Tab to switch focus between elements.
|
||||||
|
* Arrow keys to navigate between menu/combobox items (only aria-active, not really focused).
|
||||||
|
* Press Enter to trigger the aria-active element.
|
||||||
|
* On Android, you can use TalkBack.
|
||||||
|
* Go to Settings -> Accessibility -> TalkBack, turn it on.
|
||||||
|
* Long-press or press+swipe to switch the aria-active element (not really focused).
|
||||||
|
* Double-tap means old single-tap on the aria-active element.
|
||||||
|
* Double-finger swipe means old single-finger swipe.
|
||||||
|
* TODO: on Windows, on Linux, on iOS
|
||||||
|
|
||||||
# Checkbox
|
# Checkbox
|
||||||
|
|
||||||
@ -10,7 +33,8 @@ The ideal checkboxes should be:
|
|||||||
<label><input type="checkbox"> ... </label>
|
<label><input type="checkbox"> ... </label>
|
||||||
```
|
```
|
||||||
|
|
||||||
However, related styles aren't supported (not implemented) yet, so at the moment, almost all the checkboxes are still using Fomantic UI checkbox.
|
However, related CSS styles aren't supported (not implemented) yet, so at the moment,
|
||||||
|
almost all the checkboxes are still using Fomantic UI checkbox.
|
||||||
|
|
||||||
## Fomantic UI Checkbox
|
## Fomantic UI Checkbox
|
||||||
|
|
||||||
@ -21,33 +45,52 @@ However, related styles aren't supported (not implemented) yet, so at the moment
|
|||||||
</div>
|
</div>
|
||||||
```
|
```
|
||||||
|
|
||||||
Then the JS `$.checkbox()` should be called to make it work with keyboard and label-clicking, then it works like the ideal checkboxes.
|
Then the JS `$.checkbox()` should be called to make it work with keyboard and label-clicking,
|
||||||
|
then it works like the ideal checkboxes.
|
||||||
|
|
||||||
There is still a problem: Fomantic UI checkbox is not friendly to screen readers, so we add IDs to all the Fomantic UI checkboxes automatically by JS.
|
There is still a problem: Fomantic UI checkbox is not friendly to screen readers,
|
||||||
|
so we add IDs to all the Fomantic UI checkboxes automatically by JS.
|
||||||
|
If the `label` part is empty, then the checkbox needs to get the `aria-label` attribute manually.
|
||||||
|
|
||||||
# Dropdown
|
# Dropdown
|
||||||
|
|
||||||
## ARIA Dropdown
|
## Fomantic UI Dropdown
|
||||||
|
|
||||||
|
Fomantic Dropdown is designed to be used for many purposes:
|
||||||
|
|
||||||
|
* Menu (the profile menu in navbar, the language menu in footer)
|
||||||
|
* Popup (the branch/tag panel, the review box)
|
||||||
|
* Simple `<select>` , used in many forms
|
||||||
|
* Searchable option-list with static items (used in many forms)
|
||||||
|
* Searchable option-list with dynamic items (ajax)
|
||||||
|
* Searchable multiple selection option-list with dynamic items: the repo topic setting
|
||||||
|
* More complex usages, like the Issue Label selector
|
||||||
|
|
||||||
|
Fomantic Dropdown requires that the focus must be on its primary element.
|
||||||
|
If the focus changes, it hides or panics.
|
||||||
|
|
||||||
|
At the moment, `aria.js` only tries to partially resolve the a11y problems for dropdowns with items.
|
||||||
|
|
||||||
There are different solutions:
|
There are different solutions:
|
||||||
* combobox + listbox + option
|
|
||||||
* menu + menuitem
|
|
||||||
|
|
||||||
At the moment, `menu + menuitem` seems to work better with Fomantic UI Dropdown, so we only use it now.
|
* combobox + listbox + option:
|
||||||
|
* https://www.w3.org/WAI/ARIA/apg/patterns/combobox/
|
||||||
|
* A combobox is an input widget with an associated popup that enables users to select a value for the combobox from
|
||||||
|
a collection of possible values. In some implementations, the popup presents allowed values, while in other implementations,
|
||||||
|
the popup presents suggested values, and users may either select one of the suggestions or type a value.
|
||||||
|
* menu + menuitem:
|
||||||
|
* https://www.w3.org/WAI/ARIA/apg/patterns/menubar/
|
||||||
|
* A menu is a widget that offers a list of choices to the user, such as a set of actions or functions.
|
||||||
|
|
||||||
```html
|
The current approach is: detect if the dropdown has an input,
|
||||||
<div>
|
if yes, it works like a combobox, otherwise it works like a menu.
|
||||||
<input role="combobox" aria-haspopup="listbox" aria-expanded="false" aria-controls="the-menu-listbox" aria-activedescendant="item-id-123456">
|
Multiple selection dropdown is not well-supported yet, it needs more work.
|
||||||
<ul id="the-menu-listbox" role="listbox">
|
|
||||||
<li role="option" id="item-id-123456" aria-selected="true">
|
|
||||||
<a tabindex="-1" href="....">....</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
```
|
|
||||||
|
|
||||||
|
Some important pages for dropdown testing:
|
||||||
|
|
||||||
## Fomantic UI Dropdown
|
* Home(dashboard) page, the "Create Repo" / "Profile" / "Language" menu.
|
||||||
|
* Create New Repo page, a lot of dropdowns as combobox.
|
||||||
|
* Collaborators page, the "permission" dropdown (the old behavior was not quite good, it just works).
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<!-- read-only dropdown -->
|
<!-- read-only dropdown -->
|
||||||
|
@ -89,9 +89,14 @@ export function initGlobalCommon() {
|
|||||||
|
|
||||||
// Semantic UI modules.
|
// Semantic UI modules.
|
||||||
const $uiDropdowns = $('.ui.dropdown');
|
const $uiDropdowns = $('.ui.dropdown');
|
||||||
$uiDropdowns.filter(':not(.custom)').dropdown({
|
|
||||||
fullTextSearch: 'exact'
|
// do not init "custom" dropdowns, "custom" dropdowns are managed by their own code.
|
||||||
});
|
$uiDropdowns.filter(':not(.custom)').dropdown({fullTextSearch: 'exact'});
|
||||||
|
|
||||||
|
// The "jump" means this dropdown is mainly used for "menu" purpose,
|
||||||
|
// clicking an item will jump to somewhere else or trigger an action/function.
|
||||||
|
// When a dropdown is used for non-refresh actions with tippy,
|
||||||
|
// it must have this "jump" class to hide the tippy when dropdown is closed.
|
||||||
$uiDropdowns.filter('.jump').dropdown({
|
$uiDropdowns.filter('.jump').dropdown({
|
||||||
action: 'hide',
|
action: 'hide',
|
||||||
onShow() {
|
onShow() {
|
||||||
@ -101,17 +106,23 @@ export function initGlobalCommon() {
|
|||||||
},
|
},
|
||||||
onHide() {
|
onHide() {
|
||||||
this._tippy?.enable();
|
this._tippy?.enable();
|
||||||
|
|
||||||
|
// hide all tippy elements of items after a while. eg: use Enter to click "Copy Link" in the Issue Context Menu
|
||||||
|
setTimeout(() => {
|
||||||
|
const $dropdown = $(this);
|
||||||
|
if ($dropdown.dropdown('is hidden')) {
|
||||||
|
$(this).find('.menu > .item').each((_, item) => {
|
||||||
|
item._tippy?.hide();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, 2000);
|
||||||
},
|
},
|
||||||
fullTextSearch: 'exact'
|
|
||||||
});
|
|
||||||
$uiDropdowns.filter('.slide.up').dropdown({
|
|
||||||
transition: 'slide up',
|
|
||||||
fullTextSearch: 'exact'
|
|
||||||
});
|
|
||||||
$uiDropdowns.filter('.upward').dropdown({
|
|
||||||
direction: 'upward',
|
|
||||||
fullTextSearch: 'exact'
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// special animations/popup-directions
|
||||||
|
$uiDropdowns.filter('.slide.up').dropdown({transition: 'slide up'});
|
||||||
|
$uiDropdowns.filter('.upward').dropdown({direction: 'upward'});
|
||||||
|
|
||||||
attachDropdownAria($uiDropdowns);
|
attachDropdownAria($uiDropdowns);
|
||||||
|
|
||||||
attachCheckboxAria($('.ui.checkbox'));
|
attachCheckboxAria($('.ui.checkbox'));
|
||||||
|
@ -602,9 +602,6 @@ export function initRepository() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function initRepoIssueCommentEdit() {
|
function initRepoIssueCommentEdit() {
|
||||||
// Issue/PR Context Menus
|
|
||||||
$('.comment-header-right .context-dropdown').dropdown({action: 'hide'});
|
|
||||||
|
|
||||||
// Edit issue or comment content
|
// Edit issue or comment content
|
||||||
$(document).on('click', '.edit-content', onEditContent);
|
$(document).on('click', '.edit-content', onEditContent);
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ export function initTooltip(el, props = {}) {
|
|||||||
content,
|
content,
|
||||||
delay: 100,
|
delay: 100,
|
||||||
role: 'tooltip',
|
role: 'tooltip',
|
||||||
|
...(el.getAttribute('data-tooltip-interactive') === 'true' ? {interactive: true} : {}),
|
||||||
...props,
|
...props,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -52,10 +53,11 @@ export function showTemporaryTooltip(target, content) {
|
|||||||
onHidden: (tippy) => {
|
onHidden: (tippy) => {
|
||||||
if (oldContent) {
|
if (oldContent) {
|
||||||
tippy.setContent(oldContent);
|
tippy.setContent(oldContent);
|
||||||
|
tippy.setProps({onHidden: undefined});
|
||||||
} else {
|
} else {
|
||||||
tippy.destroy();
|
tippy.destroy();
|
||||||
|
// after destroy, the `_tippy` is detached, it can't do "setProps (etc...)" anymore
|
||||||
}
|
}
|
||||||
tippy.setProps({onHidden: undefined});
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -145,23 +145,10 @@ export default {
|
|||||||
loader: 'css-loader',
|
loader: 'css-loader',
|
||||||
options: {
|
options: {
|
||||||
sourceMap: true,
|
sourceMap: true,
|
||||||
importLoaders: 1,
|
|
||||||
url: {filter: filterCssImport},
|
url: {filter: filterCssImport},
|
||||||
import: {filter: filterCssImport},
|
import: {filter: filterCssImport},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
loader: 'postcss-loader', /* for conditional import in theme-auto.css */
|
|
||||||
options: {
|
|
||||||
sourceMap: true,
|
|
||||||
postcssOptions: {
|
|
||||||
plugins: [
|
|
||||||
'postcss-import',
|
|
||||||
'postcss-url',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user