mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-11-03 17:23:56 +08:00
update 2026-10-11 21:59:08
This commit is contained in:
1 parent
219ad87c1a
commit
4f0804a849
175 files changed
+1300
-15821
No files matched your search
-104
@@ -1,104 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=honk
|
||||
PKG_VERSION:=2026.10.9_pre3
|
||||
PKG_RELEASE:=1
|
||||
|
||||
# Raw upstream release tag. It keeps the dots in qualifiers (e.g. v0.0.1.beta.49)
|
||||
# because that is what the GitHub release asset name uses.
|
||||
HONK_RELEASE_TAG:=debug.2026.10.9.native-api.3
|
||||
HONK_ASSET_TAG:=debug
|
||||
|
||||
# SHA256 of each release tarball, kept in sync by scripts/update_honk_version.sh.
|
||||
HONK_HASH_X86_64:=179dac725195f04899ae871b9fbcf47deec4b99f6b30c539296d31fdcd9a8c2e
|
||||
HONK_HASH_AARCH64:=6bcf738b8c618d9c87a412fa3dbb976e041349f6614ebd1ea2c7044ede3a4d48
|
||||
|
||||
PKG_LICENSE:=AGPL-3.0-only
|
||||
PKG_LICENSE_FILE:=LICENSE
|
||||
PKG_MAINTAINER:=luci-app-honk maintainers
|
||||
|
||||
ifeq ($(ARCH),x86_64)
|
||||
HONK_TARGET:=x86_64-unknown-linux-musl
|
||||
HONK_HASH:=$(HONK_HASH_X86_64)
|
||||
else ifeq ($(ARCH),aarch64)
|
||||
HONK_TARGET:=aarch64-unknown-linux-musl
|
||||
HONK_HASH:=$(HONK_HASH_AARCH64)
|
||||
endif
|
||||
|
||||
# Default to the stock-malloc build: lower RSS high-water on small gateways.
|
||||
# Use an empty suffix to switch back to the mimalloc build (faster QUIC).
|
||||
HONK_SUFFIX:=-stock
|
||||
HONK_ASSET:=honk-core-$(HONK_ASSET_TAG)-$(HONK_TARGET)$(HONK_SUFFIX).tar.gz
|
||||
|
||||
PKG_SOURCE:=$(HONK_ASSET)
|
||||
PKG_SOURCE_URL:=https://github.com/Glassyiris/honk/releases/download/$(HONK_RELEASE_TAG)/
|
||||
PKG_HASH:=$(HONK_HASH)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/honk
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=Web Servers/Proxies
|
||||
TITLE:=honk - eBPF transparent proxy engine (dae-compatible)
|
||||
URL:=https://github.com/Glassyiris/honk
|
||||
DEPENDS:=@(x86_64||aarch64) \
|
||||
+ca-bundle +ip-full \
|
||||
+kmod-sched-core +kmod-sched-bpf +kmod-veth +kmod-nft-queue \
|
||||
+v2ray-geoip +v2ray-geosite \
|
||||
+@KERNEL_XDP_SOCKETS \
|
||||
+HONK_USE_VMLINUX_BTF:vmlinux-btf
|
||||
endef
|
||||
|
||||
define Package/honk/config
|
||||
choice
|
||||
prompt "BTF source for CO-RE"
|
||||
default HONK_USE_KERNEL_BTF
|
||||
depends on PACKAGE_honk
|
||||
|
||||
config HONK_USE_KERNEL_BTF
|
||||
bool "Use kernel BTF (integrated)"
|
||||
depends on KERNEL_DEBUG_INFO_BTF
|
||||
|
||||
config HONK_USE_VMLINUX_BTF
|
||||
bool "Use vmlinux-btf package"
|
||||
endchoice
|
||||
endef
|
||||
|
||||
define Package/honk/conffiles
|
||||
/etc/honk/config.dae
|
||||
/etc/honk/config.d/
|
||||
/etc/honk/state/
|
||||
/etc/config/honk
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
$(TAR) -xzf $(DL_DIR)/$(PKG_SOURCE) -C $(PKG_BUILD_DIR) --strip-components=1
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
true
|
||||
endef
|
||||
|
||||
define Package/honk/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/honk-core $(1)/usr/bin/honk-core
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/honk/config.d
|
||||
$(INSTALL_CONF) $(CURDIR)/files/config.dae $(1)/etc/honk/config.dae
|
||||
$(INSTALL_CONF) $(CURDIR)/files/config.d/node.dae $(1)/etc/honk/config.d/node.dae
|
||||
$(INSTALL_CONF) $(CURDIR)/files/config.d/route.dae $(1)/etc/honk/config.d/route.dae
|
||||
$(INSTALL_CONF) $(CURDIR)/files/config.d/dns.dae $(1)/etc/honk/config.d/dns.dae
|
||||
$(INSTALL_CONF) $(CURDIR)/files/config.d/api.dae $(1)/etc/honk/config.d/api.dae
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_CONF) $(CURDIR)/files/honk.config $(1)/etc/config/honk
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) $(CURDIR)/files/honk.init $(1)/etc/init.d/honk
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,honk))
|
||||
Whitespace-only changes.
@@ -1,24 +0,0 @@
|
||||
# dns.dae
|
||||
dns {
|
||||
bind: 'tcp+udp://[::]:53530'
|
||||
client_subnet: auto
|
||||
max_cache_size: 50000
|
||||
#ipversion_prefer: 4
|
||||
upstream {
|
||||
local: 'udp://127.0.0.1:53' -> direct
|
||||
remote: 'tcp+udp://dns.google:53'
|
||||
}
|
||||
routing {
|
||||
request {
|
||||
qtype(https) -> reject
|
||||
qname(geosite: gfw) -> remote
|
||||
fallback: local
|
||||
}
|
||||
response {
|
||||
upstream(remote) -> accept
|
||||
qname(geosite: private) -> accept
|
||||
ip(geoip: cn) -> accept
|
||||
fallback: remote
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
# node.dae
|
||||
node {
|
||||
node1: 'xxx'
|
||||
node2: 'xxx'
|
||||
}
|
||||
|
||||
subscription {
|
||||
# 短形式:默认 86400s 刷新一次
|
||||
sub: 'http://sub'
|
||||
|
||||
# 短形式 + UA:仍然只能默认 86400s
|
||||
sub_ua: 'http://sub'(honk/1.0 like)
|
||||
|
||||
# 块形式:可以自定义定时刷新周期
|
||||
sub2: {
|
||||
url: 'http://sub'
|
||||
ua: 'honk/1.0'
|
||||
interval: '10000s' # 每 10000 秒刷新一次
|
||||
}
|
||||
|
||||
# 禁用定期刷新
|
||||
sub3: {
|
||||
url: 'http://sub'
|
||||
interval: 0
|
||||
}
|
||||
}
|
||||
|
||||
group {
|
||||
proxy {
|
||||
filter: subtag(sub) && !name(keyword: 'ExpireAt:')
|
||||
filter: name(node1, node2)
|
||||
policy: score
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
# route.dae
|
||||
routing {
|
||||
pname(dnsmasq, zerotier-one) -> direct(must)
|
||||
dip(224.0.0.0/3, 'ff00::/8', geoip: private) -> direct
|
||||
domain(geosite: category-bank-cn, geosite: boc@!cn, geosite: synology) -> direct
|
||||
|
||||
# block quic, if u node has poor quic support, enable this line
|
||||
# l4proto(udp) && dport(443) -> block
|
||||
|
||||
domain(geosite: spotify) -> proxy
|
||||
domain(geosite: category-doh) -> proxy
|
||||
domain(geosite: tiktok) -> proxy
|
||||
domain(geosite: category-ai-!cn, geosite: github) -> proxy
|
||||
domain(geosite: gfw) -> proxy
|
||||
|
||||
dip(geoip: telegram) -> proxy
|
||||
|
||||
dip(geoip: cn) -> direct
|
||||
# geoip:cn always using chiness asn, can use domain rule to override
|
||||
# domain(geosite: cn) -> direct
|
||||
|
||||
# using proxy for ssh, http, https, and common ports, avoid (bt, or other p2p)
|
||||
# dport(22, 80, 443, 8080, 6443, 9090) -> proxy
|
||||
|
||||
# fallback: direct
|
||||
fallback: proxy
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
# config.dae
|
||||
# Load all honk files placed in ./config.d/.
|
||||
include {
|
||||
config.d/*.dae
|
||||
}
|
||||
|
||||
global {
|
||||
log_level: warn
|
||||
check_interval: 600s
|
||||
check_tolerance: 30ms
|
||||
lan_interface: br-lan
|
||||
wan_interface: auto
|
||||
auto_config_kernel_parameter: true
|
||||
disable_waiting_network: false
|
||||
data_dir: '/etc/honk'
|
||||
log_file: '/var/log/honk/honk.log'
|
||||
store_subscribe: true
|
||||
# if u not using dns bind, set dial_mode to domain++ prefer
|
||||
dial_mode: domain
|
||||
bootstrap_resolver: '223.5.5.5:53'
|
||||
tcp_check_url: 'https://www.gstatic.com/generate_204'
|
||||
tcp_check_http_method: HEAD
|
||||
udp_check_dns: 'dns.google.com:53', '8.8.8.8', '2001:4860:4860::8888'
|
||||
}
|
||||
|
||||
assets {
|
||||
geodata {
|
||||
geosite: 'https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/release/geosite.dat'
|
||||
geoip: 'https://raw.githubusercontent.com/QiuSimons/geoip-moedove/refs/heads/main/geoip.dat'
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
|
||||
config honk 'config'
|
||||
option enabled '0'
|
||||
option advanced '0'
|
||||
option dashboard 'none'
|
||||
option config_file '/etc/honk/config.dae'
|
||||
|
||||
@@ -1,122 +0,0 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
USE_PROCD=1
|
||||
START=96
|
||||
STOP=10
|
||||
|
||||
extra_command "hot_reload" "Hot-reload service"
|
||||
|
||||
CONF="honk"
|
||||
PROG="/usr/bin/honk-core"
|
||||
# honk-core hardcodes dae-compatible datapath names (dae0/dae0peer + daens);
|
||||
# these are the real interface/netns names, not leftover dae config.
|
||||
HONK_HOST_IFACE="dae0"
|
||||
HONK_PEER_IFACE="dae0peer"
|
||||
HONK_NETNS_NAME="daens"
|
||||
HONK_NETNS_PATH="/run/netns/$HONK_NETNS_NAME"
|
||||
RESOLV_HONK="/tmp/resolv.conf.honk"
|
||||
|
||||
set_chmod_640() {
|
||||
mkdir -p /etc/honk/config.d /etc/honk/state /var/log/honk
|
||||
chmod -R u=rwX,go= /etc/honk 2>/dev/null || true
|
||||
chmod 700 /etc/honk /etc/honk/config.d /etc/honk/state 2>/dev/null || true
|
||||
}
|
||||
|
||||
cleanup_netns() {
|
||||
ip netns del "$HONK_NETNS_NAME" 2>/dev/null || true
|
||||
umount "$HONK_NETNS_PATH" 2>/dev/null || true
|
||||
rm -f "$HONK_NETNS_PATH" 2>/dev/null || true
|
||||
ip link del "$HONK_HOST_IFACE" 2>/dev/null || true
|
||||
ip link del "$HONK_PEER_IFACE" 2>/dev/null || true
|
||||
}
|
||||
|
||||
hijack_resolv_conf() {
|
||||
grep -q ' /tmp/resolv\.conf ' /proc/mounts && return 0
|
||||
|
||||
local dns_list WANS
|
||||
. /lib/functions/network.sh
|
||||
unset -v __NETWORK_CACHE
|
||||
__network_ifstatus WANS "" "[@.route[@.target='0.0.0.0' && !@.table]].interface" 2>/dev/null
|
||||
set -- $WANS
|
||||
|
||||
if [ $# -eq 1 ]; then
|
||||
dns_list=$(ubus call "network.interface.$1" status 2>/dev/null | \
|
||||
jsonfilter -e '@["dns-server"][*]' 2>/dev/null)
|
||||
if [ -z "$dns_list" ] && [ -f "/tmp/resolv.conf.d/resolv.conf.auto" ]; then
|
||||
dns_list=$(awk '/^nameserver/{print $2}' "/tmp/resolv.conf.d/resolv.conf.auto")
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -z "$dns_list" ] && dns_list="119.29.29.29 223.5.5.5"
|
||||
|
||||
[ -f /tmp/resolv.conf ] || touch /tmp/resolv.conf
|
||||
grep -E '^(search|domain) ' /tmp/resolv.conf > "$RESOLV_HONK" 2>/dev/null
|
||||
|
||||
for dns in $dns_list; do
|
||||
echo "nameserver $dns" >> "$RESOLV_HONK"
|
||||
done
|
||||
|
||||
mount --bind "$RESOLV_HONK" /tmp/resolv.conf
|
||||
mount -o remount,ro,bind /tmp/resolv.conf
|
||||
}
|
||||
|
||||
restore_resolv_conf() {
|
||||
while grep -q ' /tmp/resolv\.conf ' /proc/mounts; do
|
||||
mount -o remount,rw,bind /tmp/resolv.conf 2>/dev/null
|
||||
umount /tmp/resolv.conf 2>/dev/null || break
|
||||
done
|
||||
rm -f "$RESOLV_HONK"
|
||||
}
|
||||
|
||||
start_service() {
|
||||
local enabled config_file
|
||||
|
||||
config_load "$CONF"
|
||||
config_get_bool enabled "config" "enabled" "0"
|
||||
[ "$enabled" -eq "1" ] || return 1
|
||||
|
||||
config_get config_file "config" "config_file" "/etc/honk/config.dae"
|
||||
|
||||
if [ ! -x "$PROG" ]; then
|
||||
logger -t honk "not starting: $PROG is missing or not executable"
|
||||
return 1
|
||||
fi
|
||||
|
||||
set_chmod_640
|
||||
cleanup_netns
|
||||
hijack_resolv_conf
|
||||
|
||||
procd_open_instance "$CONF"
|
||||
procd_set_param env DAE_LOCATION_ASSET="/usr/share/v2ray"
|
||||
procd_set_param command "$PROG" --config "$config_file"
|
||||
procd_set_param netdev "$HONK_HOST_IFACE" "$HONK_PEER_IFACE"
|
||||
procd_set_param limits core="unlimited"
|
||||
procd_set_param limits nofile="1000000 1000000"
|
||||
procd_set_param term_timeout 8
|
||||
procd_set_param respawn 3600 5 5
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
service_stopped() {
|
||||
restore_resolv_conf
|
||||
cleanup_netns
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "$CONF"
|
||||
}
|
||||
|
||||
hot_reload() {
|
||||
set_chmod_640
|
||||
if /etc/init.d/honk running; then
|
||||
"$PROG" reload
|
||||
else
|
||||
start
|
||||
fi
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
name: Build
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- v*
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build ${{ matrix.arch }}
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
arch:
|
||||
- aarch64_generic
|
||||
- i386_pentium-mmx
|
||||
- loongarch64_generic
|
||||
- mips_mips32
|
||||
- mipsel_24kc
|
||||
- mipsel_mips32
|
||||
- x86_64
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Building packages
|
||||
uses: sbwml/openwrt-gh-action-sdk@go1.24
|
||||
env:
|
||||
ARCH: ${{ matrix.arch }}-openwrt-24.10
|
||||
FEEDNAME: packages_ci
|
||||
PACKAGES: luci-app-eqosplus
|
||||
NO_REFRESH_CHECK: true
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
path: bin/packages/${{ matrix.arch }}/packages_ci/*.ipk
|
||||
|
||||
- name: Upload packages
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
allowUpdates: true
|
||||
replacesArtifacts: true
|
||||
artifacts: "bin/packages/${{ matrix.arch }}/packages_ci/*.ipk"
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 sirpdboy
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# Copyright (C) 2006-2017 OpenWrt.org#
|
||||
# Copyright (C) 2022-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-eqosplus
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
THEME_NAME:=eqosplus
|
||||
PKG_NAME:=luci-app-$(THEME_NAME)
|
||||
|
||||
PKG_LICENSE:=Apache-2.0
|
||||
|
||||
LUCI_TITLE:=LuCI support for eqosplus.
|
||||
LUCI_DESCRIPTION:=LuCI support for Easy eqosplus(Support speed limit based on IP address).
|
||||
LUCI_DEPENDS:=+ip-full +tc +nftables +bc +kmod-ifb
|
||||
LUCI_PKGARCH:=all
|
||||
|
||||
PKG_VERSION:=1.3.0
|
||||
PKG_RELEASE:=20251128
|
||||
PKG_MAINTAINER:=sirpdboy <herboy2008@gmail.com>
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/postinst
|
||||
#!/bin/sh
|
||||
rm -f /tmp/luci-*
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/conffiles
|
||||
/etc/config/eqosplus
|
||||
endef
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
 [](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
|
||||
|
||||
<h1 align="center">
|
||||
<br>luci-app-eqosplus<br>
|
||||
</h1>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://openwrt.org"><img alt="OpenWrt" src="https://img.shields.io/badge/OpenWrt-%E2%89%A519.07-ff0000?logo=openwrt&logoColor=white"></a>
|
||||
<a href="https://www.google.com/chrome/"><img alt="Chrome" src="https://img.shields.io/badge/Chrome-%E2%89%A5111-4285F3?logo=googlechrome&logoColor=white"></a>
|
||||
<a href="https://www.apple.com/safari/"><img alt="Safari" src="https://img.shields.io/badge/Safari-%E2%89%A516.4-000000?logo=safari&logoColor=white"></a>
|
||||
<a href="https://www.mozilla.org/firefox/"><img alt="Firefox" src="https://img.shields.io/badge/Firefox-%E2%89%A5128-FF7138?logo=firefoxbrowser&logoColor=white"></a>
|
||||
<a target="_blank" href="https://github.com/sirpdboy/luci-app-eqosplus/releases"> <img alt="GitHub release" src="https://img.shields.io/github/v/release/sirpdboy/luci-app-eqosplus"></a>
|
||||
<a href="https://github.com/sirpdboy/luci-app-eqosplus/releases"><img alt="Downloads" src="https://img.shields.io/github/downloads/sirpdboy/luci-app-eqosplus/total"></a>
|
||||
</p>
|
||||
|
||||
[中文] | [English](README.md)
|
||||
|
||||

|
||||
|
||||
Please read this page carefully, which includes precautions and instructions on how to use it.
|
||||
|
||||
## Enhanced version of EQOS with timed speed limit and added features such as timed limit.
|
||||
|
||||
### Method for downloading source code:
|
||||
|
||||
```Brach
|
||||
# downloading
|
||||
git clone https://github.com/sirpdboy/luci-app-eqosplus package/luci-app-eqosplus
|
||||
make menuconfig
|
||||
```
|
||||
### Configuration Menu
|
||||
```Brach
|
||||
make menuconfig
|
||||
# find LuCI -> Applications, select luci-app-eqosplus, save and exit
|
||||
```
|
||||
### compile
|
||||
|
||||
```Brach
|
||||
# compile
|
||||
make package/luci-app-eqosplus/compile V=s
|
||||
```
|
||||
|
||||
|
||||
## describe
|
||||
|
||||
- luci-app-eqosplus : https://github.com/sirpdboy/luci-app-eqosplus
|
||||
|
||||

|
||||
|
||||
|
||||
## interface
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
# My other project
|
||||
|
||||
- Watch Dog : https://github.com/sirpdboy/luci-app-watchdog
|
||||
- Net Speedtest : https://github.com/sirpdboy/luci-app-netspeedtest
|
||||
- Task Plan : https://github.com/sirpdboy/luci-app-taskplan
|
||||
- Power Off Device : https://github.com/sirpdboy/luci-app-poweroffdevice
|
||||
- OpentoPD Theme : https://github.com/sirpdboy/luci-theme-opentopd
|
||||
- KuCat Theme : https://github.com/sirpdboy/luci-theme-kucat
|
||||
- KuCat Theme Config : https://github.com/sirpdboy/luci-app-kucat-config
|
||||
- NFT Time Control : https://github.com/sirpdboy/luci-app-timecontrol
|
||||
- Parent Control: https://github.com/sirpdboy/luci-theme-parentcontrol
|
||||
- Eqos Plus: https://github.com/sirpdboy/luci-app-eqosplus
|
||||
- Advanced : https://github.com/sirpdboy/luci-app-advanced
|
||||
- ddns-go : https://github.com/sirpdboy/luci-app-ddns-go
|
||||
- Advanced Plus): https://github.com/sirpdboy/luci-app-advancedplus
|
||||
- Net Wizard: https://github.com/sirpdboy/luci-app-netwizard
|
||||
- Part Exp: https://github.com/sirpdboy/luci-app-partexp
|
||||
- Lukcy: https://github.com/sirpdboy/luci-app-lukcy
|
||||
|
||||
## HELP
|
||||
|
||||
| <img src="https://img.shields.io/badge/-Alipay-F5F5F5.svg" href="#赞助支持本项目-" height="25" alt="图飞了"/> | <img src="https://img.shields.io/badge/-WeChat-F5F5F5.svg" height="25" alt="图飞了" href="#赞助支持本项目-"/> |
|
||||
| :-----------------: | :-------------: |
|
||||
| |  |
|
||||
|
||||
<a href="#readme">
|
||||
<img src="https://img.shields.io/badge/-TOP-orange.svg" alt="no" title="Return TOP" align="right"/>
|
||||
</a>
|
||||
|
||||
 [](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
|
||||
@@ -0,0 +1,109 @@
|
||||
 [](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
|
||||
|
||||
<h1 align="center">
|
||||
<br>luci-app-eqosplus<br>
|
||||
</h1>
|
||||
|
||||
<p align="center">
|
||||
|
||||
<a target="_blank" href="https://github.com/sirpdboy/luci-app-eqosplus/releases">
|
||||
<img src="https://img.shields.io/github/release/sirpdboy/luci-app-eqosplus.svg?style=flat-square&label=luci-app-eqosplus&colorB=green">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
[中文] | [English](README.md)
|
||||
|
||||

|
||||
|
||||
请 **认真阅读完毕** 本页面,本页面包含注意事项和如何使用。
|
||||
|
||||
## 功能说明:
|
||||
|
||||
### 定时限速1.2.2版
|
||||
#### 2023.7.19 定时限速1.2.2:增加更多日期:工作日和休息日,自定义日期1,2,3中间用逗号分隔;加入MAC地址限速,从此不用担心IPV6和IPV4的限速问题。
|
||||
|
||||
### 定时限速1.0版
|
||||
#### 2022.12.24 定时限速在eqos的加强版,加入定时限制等功能。
|
||||
|
||||
## 编译使用方法 [](#编译使用方法-)
|
||||
|
||||
将luci-app-eqosplus添加至 LEDE/OpenWRT 源码的方法。
|
||||
|
||||
### 下载源码方法一:
|
||||
编辑源码文件夹根目录feeds.conf.default并加入如下内容:
|
||||
|
||||
```Brach
|
||||
# feeds获取源码:
|
||||
src-git eqosplus https://github.com/sirpdboy/luci-app-eqosplus
|
||||
```
|
||||
```Brach
|
||||
# 更新feeds,并安装主题:
|
||||
scripts/feeds update eqosplus
|
||||
scripts/feeds install luci-app-eqosplus
|
||||
```
|
||||
|
||||
### 下载源码方法:
|
||||
```Brach
|
||||
# 下载源码
|
||||
git clone https://github.com/sirpdboy/luci-app-eqosplus package/luci-app-eqosplus
|
||||
make menuconfig
|
||||
```
|
||||
### 配置菜单
|
||||
```Brach
|
||||
make menuconfig
|
||||
# 找到 LuCI -> Applications, 选择 luci-app-eqosplus, 保存后退出。
|
||||
```
|
||||
### 编译
|
||||
```Brach
|
||||
# 编译固件
|
||||
make package/luci-app-eqosplus/compile V=s
|
||||
```
|
||||
|
||||
## 说明 [](#说明-)
|
||||
|
||||
源码来源:https://github.com/sirpdboy/luci-app-eqosplus
|
||||
|
||||
|
||||
- 你可以随意使用其中的源码,但请注明出处。
|
||||
|
||||

|
||||
|
||||
## 界面
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
# My other project
|
||||
|
||||
- 路由安全看门狗 :https://github.com/sirpdboy/luci-app-watchdog
|
||||
- 网络速度测试 :https://github.com/sirpdboy/luci-app-netspeedtest
|
||||
- 计划任务插件(原定时设置) : https://github.com/sirpdboy/luci-app-taskplan
|
||||
- 关机功能插件 : https://github.com/sirpdboy/luci-app-poweroffdevice
|
||||
- opentopd主题 : https://github.com/sirpdboy/luci-theme-opentopd
|
||||
- kucat酷猫主题: https://github.com/sirpdboy/luci-theme-kucat
|
||||
- kucat酷猫主题设置工具: https://github.com/sirpdboy/luci-app-kucat-config
|
||||
- NFT版上网时间控制插件: https://github.com/sirpdboy/luci-app-timecontrol
|
||||
- 家长控制: https://github.com/sirpdboy/luci-theme-parentcontrol
|
||||
- 定时限速: https://github.com/sirpdboy/luci-app-eqosplus
|
||||
- 系统高级设置 : https://github.com/sirpdboy/luci-app-advanced
|
||||
- ddns-go动态域名: https://github.com/sirpdboy/luci-app-ddns-go
|
||||
- 进阶设置(系统高级设置+主题设置kucat/agron/opentopd): https://github.com/sirpdboy/luci-app-advancedplus
|
||||
- 网络设置向导: https://github.com/sirpdboy/luci-app-netwizard
|
||||
- 一键分区扩容: https://github.com/sirpdboy/luci-app-partexp
|
||||
- lukcy大吉: https://github.com/sirpdboy/luci-app-lukcy
|
||||
|
||||
## 捐助
|
||||
|
||||

|
||||
|
||||
| <img src="https://img.shields.io/badge/-支付宝-F5F5F5.svg" href="#赞助支持本项目-" height="25" alt="图飞了"/> | <img src="https://img.shields.io/badge/-微信-F5F5F5.svg" height="25" alt="图飞了" href="#赞助支持本项目-"/> |
|
||||
| :-----------------: | :-------------: |
|
||||
| |  |
|
||||
|
||||
<a href="#readme">
|
||||
<img src="https://img.shields.io/badge/-返回顶部-orange.svg" alt="图飞了" title="返回顶部" align="right"/>
|
||||
</a>
|
||||
|
||||
 [](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 645 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 664 KiB |
@@ -0,0 +1,19 @@
|
||||
module("luci.controller.eqosplus", package.seeall)
|
||||
-- Copyright 2022-2023 sirpdboy <herboy2008@gmail.com>
|
||||
function index()
|
||||
if not nixio.fs.access("/etc/config/eqosplus") then return end
|
||||
entry({"admin", "control"}, firstchild(), "Control", 44).dependent = false
|
||||
|
||||
local e = entry({"admin", "control", "eqosplus"}, cbi("eqosplus"), _("Eqosplus"), 10)
|
||||
e.dependent=false
|
||||
e.acl_depends = { "luci-app-eqosplus" }
|
||||
entry({"admin", "control", "eqosplus", "status"}, call("act_status")).leaf = true
|
||||
end
|
||||
|
||||
function act_status()
|
||||
local sys = require "luci.sys"
|
||||
local e = {}
|
||||
e.status = sys.call(" busybox ps -w | grep eqosplus | grep -v grep >/dev/null ") == 0
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
@@ -0,0 +1,190 @@
|
||||
-- Copyright 2022-2023 sirpdboy <herboy2008@gmail.com>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
local sys = require "luci.sys"
|
||||
local ifaces = sys.net:devices()
|
||||
local WADM = require "luci.tools.webadmin"
|
||||
local ipc = require "luci.ip"
|
||||
local a, t, e
|
||||
|
||||
a = Map("eqosplus", translate("Network speed limit"))
|
||||
a.description = translate("Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second.")
|
||||
a.template = "eqosplus/index"
|
||||
|
||||
t = a:section(TypedSection, "eqosplus")
|
||||
t.anonymous = true
|
||||
|
||||
e = t:option(DummyValue, "eqosplus_status", translate("Status"))
|
||||
e.template = "eqosplus/eqosplus"
|
||||
e.value = translate("Collecting data...")
|
||||
|
||||
|
||||
ipi = t:option(ListValue, "ifname", translate("Interface"), translate("Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode"))
|
||||
ipi.default = "1"
|
||||
ipi:value(1,translate("Automatic settings"))
|
||||
ipi:value("br-lan", translate("br-lan (LAN Bridge)"))
|
||||
local function get_wan_interfaces()
|
||||
local result = {}
|
||||
local ubus = require "ubus"
|
||||
|
||||
local conn = ubus.connect()
|
||||
if not conn then
|
||||
return result
|
||||
end
|
||||
|
||||
local network_status = conn:call("network.interface", "dump", {})
|
||||
for _, iface in ipairs(network_status.interface) do
|
||||
if iface.interface:match("^wan") or iface.interface:match("^pppoe") or iface.proto == "pppoe" then
|
||||
local dev = iface.l3_device or iface.device
|
||||
if dev then
|
||||
table.insert(result, {
|
||||
name = dev,
|
||||
proto = iface.proto,
|
||||
logical_name = iface.interface
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
conn:close()
|
||||
return result
|
||||
end
|
||||
|
||||
local wan_ifaces = get_wan_interfaces()
|
||||
for _, iface in ipairs(wan_ifaces) do
|
||||
ipi:value(iface.name, translate(iface.name) .. (iface.proto == "pppoe" and " (PPPoE)" or " (WAN)"))
|
||||
end
|
||||
|
||||
t = a:section(TypedSection, "device")
|
||||
t.template = "cbi/tblsection"
|
||||
t.anonymous = true
|
||||
t.addremove = true
|
||||
|
||||
comment = t:option(Value, "comment", translate("Comment"))
|
||||
comment.size = 8
|
||||
|
||||
e = t:option(Flag, "enable", translate("Enabled"))
|
||||
e.rmempty = false
|
||||
e.size = 4
|
||||
|
||||
ip = t:option(Value, "mac", translate("IP/MAC"))
|
||||
ip.size = 8
|
||||
|
||||
local function get_devices()
|
||||
local devices = {}
|
||||
local seen_ips = {}
|
||||
local ubus = require "ubus"
|
||||
local conn = ubus.connect()
|
||||
|
||||
local function get_hostname(ip)
|
||||
local f = io.popen("nslookup "..ip.." 2>/dev/null | grep 'name =' | cut -d'=' -f2 | sed 's/\\.$//'")
|
||||
if f then
|
||||
local name = f:read("*l")
|
||||
f:close()
|
||||
if name and name ~= "" then
|
||||
return name:match("^%s*(.-)%s*$")
|
||||
end
|
||||
end
|
||||
local leases_file = io.open("/tmp/dhcp.leases", "r")
|
||||
if leases_file then
|
||||
for line in leases_file:lines() do
|
||||
local mac, ip_lease, _, hostname = line:match("^(%S+)%s+(%S+)%s+(%S+)%s+(%S+)")
|
||||
if ip_lease == ip and hostname ~= "*" then
|
||||
leases_file:close()
|
||||
return hostname
|
||||
end
|
||||
end
|
||||
leases_file:close()
|
||||
end
|
||||
return "unknown"
|
||||
end
|
||||
if conn then
|
||||
local leases = conn:call("dhcp", "ipv4leases", {}) or {}
|
||||
for _, lease in ipairs(leases) do
|
||||
if lease.ipaddr and lease.mac then
|
||||
local hostname = lease.hostname or get_hostname(lease.ipaddr)
|
||||
devices[#devices+1] = {
|
||||
ip = lease.ipaddr,
|
||||
mac = lease.mac:upper(),
|
||||
hostname = hostname,
|
||||
display = string.format("%s (%s) - %s", lease.ipaddr, lease.mac:upper(), hostname)
|
||||
}
|
||||
seen_ips[lease.ipaddr] = true
|
||||
end
|
||||
end
|
||||
conn:close()
|
||||
end
|
||||
local arp_cmd = io.popen("ip -4 neigh show dev br-lan 2>/dev/null")
|
||||
if arp_cmd then
|
||||
for line in arp_cmd:lines() do
|
||||
local ip_addr, mac = line:match("^(%S+)%s+.+%s+(%S+)%s+")
|
||||
if ip_addr and mac and mac ~= "00:00:00:00:00:00" and not seen_ips[ip_addr] then
|
||||
mac = mac:upper()
|
||||
local hostname = get_hostname(ip_addr)
|
||||
devices[#devices+1] = {
|
||||
ip = ip_addr,
|
||||
mac = mac,
|
||||
hostname = hostname,
|
||||
display = string.format("%s (%s) - %s", ip_addr, mac, hostname)
|
||||
}
|
||||
seen_ips[ip_addr] = true
|
||||
end
|
||||
end
|
||||
arp_cmd:close()
|
||||
end
|
||||
table.sort(devices, function(a, b) return a.ip < b.ip end)
|
||||
return devices
|
||||
end
|
||||
|
||||
local devices = get_devices()
|
||||
for _, dev in ipairs(devices) do
|
||||
ip:value(dev.ip, dev.display)
|
||||
end
|
||||
dl = t:option(Value, "download", translate("Downloads"))
|
||||
dl.default = '0.1'
|
||||
dl.size = 4
|
||||
|
||||
ul = t:option(Value, "upload", translate("Uploads"))
|
||||
ul.default = '0.1'
|
||||
ul.size = 4
|
||||
function validate_time(self, value, section)
|
||||
local hh, mm, ss
|
||||
hh, mm, ss = string.match (value, "^(%d?%d):(%d%d)$")
|
||||
hh = tonumber (hh)
|
||||
mm = tonumber (mm)
|
||||
if hh and mm and hh <= 23 and mm <= 59 then
|
||||
return value
|
||||
else
|
||||
return nil, "Time HH:MM or space"
|
||||
end
|
||||
end
|
||||
|
||||
e = t:option(Value, "timestart", translate("Start control time"))
|
||||
e.placeholder = '00:00'
|
||||
e.default = '00:00'
|
||||
e.validate = validate_time
|
||||
e.rmempty = true
|
||||
e.size = 4
|
||||
|
||||
e = t:option(Value, "timeend", translate("Stop control time"))
|
||||
e.placeholder = '00:00'
|
||||
e.default = '00:00'
|
||||
e.validate = validate_time
|
||||
e.rmempty = true
|
||||
e.size = 4
|
||||
|
||||
week=t:option(Value,"week",translate("Week Day(1~7)"))
|
||||
week.rmempty = true
|
||||
week:value('0',translate("Everyday"))
|
||||
week:value(1,translate("Monday"))
|
||||
week:value(2,translate("Tuesday"))
|
||||
week:value(3,translate("Wednesday"))
|
||||
week:value(4,translate("Thursday"))
|
||||
week:value(5,translate("Friday"))
|
||||
week:value(6,translate("Saturday"))
|
||||
week:value(7,translate("Sunday"))
|
||||
week:value('1,2,3,4,5',translate("Workday"))
|
||||
week:value('6,7',translate("Rest Day"))
|
||||
week.default='0'
|
||||
week.size = 6
|
||||
|
||||
return a
|
||||
@@ -0,0 +1,3 @@
|
||||
<%+cbi/valueheader%>
|
||||
<font class="eqosplus_status"><%=pcdata(self:cfgvalue(section) or self.default or "")%></font>
|
||||
<%+cbi/valuefooter%>
|
||||
@@ -0,0 +1,12 @@
|
||||
<% include("cbi/map") %>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XHR.poll(2, '<%=luci.dispatcher.build_url("admin", "control", "eqosplus", "status" )%>', null,
|
||||
function (x, result) {
|
||||
var status = document.getElementsByClassName('eqosplus_status')[0];
|
||||
status.setAttribute("style", "font-weight:bold;");
|
||||
status.setAttribute("color", result.status ? "green" : "red");
|
||||
status.innerHTML = result.status ? '<%=translate("RUNNING")%>' : '<%=translate("NOT RUNNING")%>';
|
||||
}
|
||||
)
|
||||
//]]>
|
||||
</script>
|
||||
@@ -0,0 +1,61 @@
|
||||
|
||||
msgid "Eqosplus"
|
||||
msgstr ""
|
||||
|
||||
msgid "Network speed limit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Running state"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not running"
|
||||
msgstr ""
|
||||
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
msgid "Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second."
|
||||
msgstr ""
|
||||
|
||||
msgid "MAC/IP"
|
||||
msgstr ""
|
||||
|
||||
msgid "Downloads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Uploads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Comment"
|
||||
msgstr ""
|
||||
|
||||
msgid "Upload bandwidth(Mbit/s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Download bandwidth(Mbit/s)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Start control time"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stop control time"
|
||||
msgstr ""
|
||||
|
||||
msgid "Week Day(1~7)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Suggested feedback:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Rest Day"
|
||||
msgstr ""
|
||||
|
||||
msgid "Workday"
|
||||
msgstr ""
|
||||
|
||||
msgid "Automatic settings"
|
||||
msgstr ""
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
|
||||
msgid "Eqosplus"
|
||||
msgstr "定时限速"
|
||||
|
||||
msgid "Network speed limit"
|
||||
msgstr "定时网速限制"
|
||||
|
||||
msgid "Running state"
|
||||
msgstr "运行状态"
|
||||
|
||||
msgid "Not running"
|
||||
msgstr "未运行"
|
||||
|
||||
msgid "Running"
|
||||
msgstr "已运行"
|
||||
|
||||
msgid "Users can limit the network speed for uploading/downloading through MAC, IP.The speed unit is MB/second."
|
||||
msgstr "可以通过MAC,IP限制用户上传/下载的网速。速度单位为<font color=\"red\"><b> MB/秒 </b></font>。"
|
||||
|
||||
msgid "MAC/IP"
|
||||
msgstr "MAC/IP"
|
||||
|
||||
msgid "Downloads"
|
||||
msgstr "下载速度"
|
||||
|
||||
msgid "Uploads"
|
||||
msgstr "上传速度"
|
||||
|
||||
msgid "Comment"
|
||||
msgstr "备注"
|
||||
|
||||
msgid "Upload bandwidth(Mbit/s)"
|
||||
msgstr "上传总带宽(Mbit/s)"
|
||||
|
||||
msgid "Download bandwidth(Mbit/s)"
|
||||
msgstr "下载总带宽(Mbit/s)"
|
||||
|
||||
msgid "Start control time"
|
||||
msgstr "起控时间"
|
||||
|
||||
msgid "Stop control time"
|
||||
msgstr "停控时间"
|
||||
|
||||
msgid "Week Day(1~7)"
|
||||
msgstr "星期(1~7)"
|
||||
|
||||
msgid "Suggested feedback:"
|
||||
msgstr "建议反馈:"
|
||||
|
||||
msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode"
|
||||
msgstr "设定用来限制网络速度的接口,拨号使用pppoe-wan,DHCP模式使用WAN口的硬件接口(如:eth1),通用使用br-lan接口"
|
||||
|
||||
msgid "Rest Day"
|
||||
msgstr "休息日"
|
||||
|
||||
msgid "Workday"
|
||||
msgstr "工作日"
|
||||
|
||||
msgid "Automatic settings"
|
||||
msgstr "自动设置"
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
|
||||
msgid "Eqosplus"
|
||||
msgstr "定时限速"
|
||||
|
||||
msgid "Network speed limit"
|
||||
msgstr "定时网速限制"
|
||||
|
||||
msgid "Running state"
|
||||
msgstr "运行状态"
|
||||
|
||||
msgid "Not running"
|
||||
msgstr "未运行"
|
||||
|
||||
msgid "Running"
|
||||
msgstr "已运行"
|
||||
|
||||
msgid "Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second."
|
||||
msgstr "用户可以通过MAC、IP、IP段(192.168.10.100-192.168.10.200),限制上传/下载的网络速度。速度单位为MB/秒。。"
|
||||
|
||||
msgid "MAC/IP"
|
||||
msgstr "MAC/IP"
|
||||
|
||||
msgid "Downloads"
|
||||
msgstr "下载速度"
|
||||
|
||||
msgid "Uploads"
|
||||
msgstr "上传速度"
|
||||
|
||||
msgid "Comment"
|
||||
msgstr "备注"
|
||||
|
||||
msgid "Upload bandwidth(Mbit/s)"
|
||||
msgstr "上传总带宽(Mbit/s)"
|
||||
|
||||
msgid "Download bandwidth(Mbit/s)"
|
||||
msgstr "下载总带宽(Mbit/s)"
|
||||
|
||||
msgid "Start control time"
|
||||
msgstr "起控时间"
|
||||
|
||||
msgid "Stop control time"
|
||||
msgstr "停控时间"
|
||||
|
||||
msgid "Week Day(1~7)"
|
||||
msgstr "星期(1~7)"
|
||||
|
||||
msgid "Suggested feedback:"
|
||||
msgstr "建议反馈:"
|
||||
|
||||
msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode"
|
||||
msgstr "设定用来限制网络速度的接口,拨号使用pppoe-wan,DHCP模式使用WAN口的硬件接口(如:eth1),通用使用br-lan接口"
|
||||
|
||||
msgid "Rest Day"
|
||||
msgstr "休息日"
|
||||
|
||||
msgid "Workday"
|
||||
msgstr "工作日"
|
||||
|
||||
msgid "Automatic settings"
|
||||
msgstr "自动设置"
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
config eqosplus
|
||||
option enabled '0'
|
||||
option download '1000'
|
||||
option upload '30'
|
||||
option ifname '1'
|
||||
|
||||
config device
|
||||
option timestart '00:00'
|
||||
option week '0'
|
||||
option download '1'
|
||||
option timeend '23:55'
|
||||
option upload '1'
|
||||
option mac '192.168.10.10'
|
||||
option enable '0'
|
||||
|
||||
config device
|
||||
option mac '192.168.10.10-192.168.10.200'
|
||||
option timestart '00:00'
|
||||
option timeend '00:00'
|
||||
option week '0'
|
||||
option download '0.1'
|
||||
option upload '0.1'
|
||||
option enable '0'
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
[ "$ACTION" = "ifup" ] && [ "$INTERFACE" = "wan" ] && {
|
||||
sleep 5
|
||||
/etc/init.d/eqosplus restart
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
#
|
||||
# Copyright (C) 2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-eqosplus
|
||||
#
|
||||
|
||||
START=99
|
||||
USE_PROCD=1
|
||||
|
||||
NAME=eqosplus
|
||||
LOCK="/var/lock/$NAME.lock"
|
||||
CR=/etc/crontabs/root
|
||||
|
||||
start_instance() {
|
||||
procd_open_instance
|
||||
procd_set_param command /usr/bin/eqosplusctrl
|
||||
procd_set_param respawn
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
_eqosplus_start() {
|
||||
if [ "$(grep -c 'option enable .1.' /etc/config/$NAME 2>/dev/null)" -gt "0" ]; then
|
||||
if [ x$(uci -q get turboacc.config.sw_flow) = 'x1' ] || [ x$(uci -q get turboacc.config.sfe_flow) = 'x1' ] ;then
|
||||
uci -q set turboacc.config.sw_flow='0'
|
||||
uci -q set turboacc.config.sfe_flow='0'
|
||||
uci -q set turboacc.config.hw_flow='0'
|
||||
uci commit turboacc
|
||||
/etc/init.d/turboacc restart
|
||||
fi
|
||||
touch $LOCK
|
||||
eqosplus start
|
||||
start_instance
|
||||
(crontab -l ; echo "00 1 * * * /etc/init.d/eqosplus start") | sort - | uniq - | crontab -
|
||||
fi
|
||||
}
|
||||
|
||||
start_service(){
|
||||
[ -f $LOCK ] && exit
|
||||
stop_service
|
||||
_eqosplus_start
|
||||
rm -f $LOCK
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger 'eqosplus'
|
||||
}
|
||||
|
||||
stop_service(){
|
||||
kill -9 $(busybox ps -w | grep 'eqosplusctrl' | grep -v 'grep' | awk '{print $1}') >/dev/null 2>&1
|
||||
sed -i '/eqosplus/d' $CR >/dev/null 2>&1
|
||||
rm -f $LOCK 2>/dev/null
|
||||
eqosplus stop
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
chmod +x /etc/init.d/eqosplus /usr/bin/eqosplus*
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@eqosplus[-1]
|
||||
add ucitrack eqosplus
|
||||
set ucitrack.@eqosplus[-1].init=eqosplus
|
||||
commit ucitrack
|
||||
EOF
|
||||
|
||||
[ -s /etc/config/eqosplus ] || echo "config eqosplus" > /etc/config/eqosplus
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
||||
@@ -0,0 +1,379 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
# Copyright 2022-2025 sirpdboy <herboy2008@gmail.com>
|
||||
|
||||
crrun=$1
|
||||
crid=$2
|
||||
NAME=eqosplus
|
||||
IDLIST="/var/$NAME.idlist"
|
||||
LOCK="/var/lock/$NAME.lock"
|
||||
TMPID="/var/$NAME.tmpid"
|
||||
LOG="/var/$NAME_log.log"
|
||||
# idlist=`uci show $NAME | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' `
|
||||
|
||||
|
||||
if [ x$(uci get $NAME.@$NAME[0].ifname 2>/dev/null) = 'x1' ]; then
|
||||
ifname=$(uci -q get network.lan.ifname)
|
||||
[ "x$ifname" = "x" ] && ifname="device" || ifname="ifname"
|
||||
dev=$(uci -q get network.wan.$ifname)
|
||||
[ ! "$dev" ] && dev=br-lan
|
||||
else
|
||||
dev=$(uci -q get $NAME.@$NAME[0].ifname 2>/dev/null)
|
||||
[ ! "$dev" ] && dev=br-lan
|
||||
fi
|
||||
|
||||
bin_nft=$(which nft)
|
||||
bin_tc=$(which tc)
|
||||
bin_ip=$(which ip)
|
||||
DEBUG=1
|
||||
|
||||
nft_type() {
|
||||
if command -v nft >/dev/null; then
|
||||
nftables_ver="true"
|
||||
fi
|
||||
}
|
||||
|
||||
# Debug functions
|
||||
dbg_nft() {
|
||||
[ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: nft $*"
|
||||
$bin_nft "$@"
|
||||
}
|
||||
|
||||
dbg_tc() {
|
||||
[ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: tc $*"
|
||||
$bin_tc "$@"
|
||||
}
|
||||
|
||||
dbg_ip() {
|
||||
[ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: ip $*"
|
||||
$bin_ip "$@"
|
||||
}
|
||||
|
||||
is_macaddr() {
|
||||
ret=1
|
||||
if echo "$1" | grep -qE '^([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2}$'; then
|
||||
ret=0
|
||||
fi
|
||||
return $ret
|
||||
}
|
||||
|
||||
# 数值比较函数
|
||||
is_gt_zero() {
|
||||
local value=$1
|
||||
# 使用bc进行浮点数比较
|
||||
echo "$value > 0" | bc -l 2>/dev/null | grep -q 1
|
||||
}
|
||||
|
||||
# 转换为kbit
|
||||
to_kbit() {
|
||||
local mb=$1
|
||||
# MB/s 转 kbit/s: 1 MB/s = 8192 kbit/s
|
||||
echo "scale=0; $mb * 8192 / 1" | bc 2>/dev/null || echo "0"
|
||||
}
|
||||
|
||||
# Default commands
|
||||
tc="dbg_tc"
|
||||
ip="dbg_ip"
|
||||
nft="dbg_nft"
|
||||
|
||||
nft_type
|
||||
|
||||
stop_qos() {
|
||||
for face in $(tc qdisc show 2>/dev/null | grep htb | awk '{print $5}'); do
|
||||
$tc qdisc del dev $face root 2>/dev/null
|
||||
done
|
||||
|
||||
$tc qdisc del dev ${dev} root 2>/dev/null
|
||||
$tc qdisc del dev ${dev}_ifb root 2>/dev/null
|
||||
$tc qdisc del dev ${dev} ingress 2>/dev/null
|
||||
$ip link del dev ${dev}_ifb 2>/dev/null 2>&1
|
||||
|
||||
if [ -n "$nftables_ver" ]; then
|
||||
$nft delete table inet ${NAME} 2>/dev/null
|
||||
$nft delete table bridge ${NAME} 2>/dev/null
|
||||
fi
|
||||
|
||||
echo "" > "$IDLIST" 2>/dev/null
|
||||
}
|
||||
|
||||
init_qosplus() {
|
||||
|
||||
insmod sch_htb 2>/dev/null
|
||||
insmod act_mirred 2>/dev/null
|
||||
insmod ifb 2>/dev/null
|
||||
|
||||
$ip link del dev ${dev}_ifb 2>/dev/null
|
||||
$ip link add dev ${dev}_ifb name ${dev}_ifb type ifb
|
||||
$ip link set dev ${dev}_ifb up
|
||||
|
||||
$tc qdisc del dev ${dev} root 2>/dev/null
|
||||
$tc qdisc add dev ${dev} root handle 1:0 htb default 1
|
||||
$tc class add dev ${dev} parent 1:0 classid 1:1 htb rate 1000mbit ceil 1000mbit
|
||||
|
||||
$tc qdisc del dev ${dev}_ifb root 2>/dev/null
|
||||
$tc qdisc add dev ${dev}_ifb root handle 1:0 htb default 1
|
||||
$tc class add dev ${dev}_ifb parent 1:0 classid 1:1 htb rate 1000mbit ceil 1000mbit
|
||||
lanipaddr=$(uci -q get network.lan.ipaddr 2>/dev/null | awk -F '.' '{print $1"."$2"."$3".0/24"}')
|
||||
if [ -n "$lanipaddr" ]; then
|
||||
$tc filter add dev $dev parent 1:0 protocol ip prio 1 u32 match ip src "$lanipaddr" match ip dst "$lanipaddr" flowid 1:1
|
||||
$tc filter add dev ${dev}_ifb parent 1:0 protocol ip prio 1 u32 match ip src "$lanipaddr" match ip dst "$lanipaddr" flowid 1:1
|
||||
fi
|
||||
$tc qdisc del dev ${dev} ingress 2>/dev/null
|
||||
$tc qdisc add dev ${dev} ingress
|
||||
$tc filter add dev ${dev} parent ffff: protocol all prio 2 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ${dev}_ifb
|
||||
|
||||
if [ -n "$nftables_ver" ]; then
|
||||
$nft delete table inet ${NAME} 2>/dev/null
|
||||
$nft delete table bridge ${NAME} 2>/dev/null
|
||||
|
||||
$nft add table inet ${NAME}
|
||||
|
||||
$nft add chain inet ${NAME} mark_forward { type filter hook forward priority -200\; policy accept\; }
|
||||
$nft add chain inet ${NAME} mark_output { type filter hook output priority -200\; policy accept\; }
|
||||
$nft add chain inet ${NAME} mark_postrouting { type filter hook postrouting priority -200\; policy accept\; }
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
del_id() {
|
||||
local list_id=$1
|
||||
id=$((list_id * 10 + 1000))
|
||||
[ "${DEBUG:-0}" -eq 0 ] || echo "D: del_id $@ --$id --$mac"
|
||||
$tc filter del dev ${dev} parent 1: handle 800::$(printf "%x" $id) 2>/dev/null
|
||||
$tc class del dev ${dev} parent 1:1 classid 1:$id 2>/dev/null
|
||||
$tc filter del dev ${dev}_ifb parent 1: handle 800::$(printf "%x" $id) 2>/dev/null
|
||||
$tc class del dev ${dev}_ifb parent 1:1 classid 1:$id 2>/dev/null
|
||||
mac=$(uci -q get $NAME.@device[$list_id].mac 2>/dev/null)
|
||||
if [ -n "$nftables_ver" ] && [ -n "$mac" ]; then
|
||||
if is_macaddr "$mac"; then
|
||||
$nft delete rule inet ${NAME} mark_forward ether saddr $mac counter 2>/dev/null
|
||||
$nft delete rule inet ${NAME} mark_output ether saddr $mac counter 2>/dev/null
|
||||
$nft delete rule inet ${NAME} mark_postrouting ether saddr $mac counter 2>/dev/null
|
||||
else
|
||||
Z=$(echo $mac | awk -F '[/]' '{print $2}')
|
||||
[ -n "$Z" ] && mac=$(echo $mac | awk -F '[/]' '{print $1}') || Z=32
|
||||
$nft delete rule inet ${NAME} mark_forward ip saddr $mac/$Z counter 2>/dev/null
|
||||
$nft delete rule inet ${NAME} mark_output ip saddr $mac/$Z counter 2>/dev/null
|
||||
$nft delete rule inet ${NAME} mark_postrouting ip saddr $mac/$Z counter 2>/dev/null
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
add_mac() {
|
||||
local list_id=$1
|
||||
id=$((list_id * 10 + 1000))
|
||||
M0=$(echo $mac | cut -d : -f 1)$(echo $mac | cut -d : -f 2)
|
||||
M1=$(echo $mac | cut -d : -f 3)$(echo $mac | cut -d : -f 4)
|
||||
M2=$(echo $mac | cut -d : -f 5)$(echo $mac | cut -d : -f 6)
|
||||
[ "${DEBUG:-0}" -eq 0 ] || echo "D: add_mac $@ --id:$id --mac:$mac M012--$M0-$M1-$M2"
|
||||
|
||||
if is_gt_zero "$UL"; then
|
||||
if [ -n "$nftables_ver" ]; then
|
||||
$nft add rule inet ${NAME} mark_forward ether saddr $mac counter meta mark set $id
|
||||
$nft add rule inet ${NAME} mark_output ether saddr $mac counter meta mark set $id
|
||||
$nft add rule inet ${NAME} mark_postrouting ether saddr $mac counter meta mark set $id
|
||||
fi
|
||||
$tc class add dev ${dev}_ifb parent 1:1 classid 1:$id htb rate "${UL}kbit" ceil "${UL}kbit" prio $id burst 15k cburst 15k
|
||||
$tc qdisc add dev ${dev}_ifb parent 1:$id handle ${id}: sfq perturb 10
|
||||
|
||||
$tc filter add dev ${dev}_ifb parent 1: protocol ip prio $id handle $id fw flowid 1:$id
|
||||
|
||||
$tc filter add dev ${dev}_ifb parent 1: protocol ip prio $((id + 100)) u32 \
|
||||
match u16 0x0800 0xFFFF at -2 \
|
||||
match u16 0x${M2} 0xFFFF at -4 \
|
||||
match u32 0x${M0}${M1} 0xFFFFFFFF at -8 \
|
||||
flowid 1:$id
|
||||
fi
|
||||
if is_gt_zero "$DL"; then
|
||||
$tc class add dev ${dev} parent 1:1 classid 1:$id htb rate "${DL}kbit" ceil "${DL}kbit" prio $id burst 15k cburst 15k
|
||||
$tc qdisc add dev ${dev} parent 1:$id handle ${id}: sfq perturb 10
|
||||
|
||||
$tc filter add dev ${dev} parent 1: protocol ip prio $id u32 \
|
||||
match u16 0x0800 0xFFFF at -2 \
|
||||
match u32 0x${M1}${M2} 0xFFFFFFFF at -12 \
|
||||
match u16 0x${M0} 0xFFFF at -14 \
|
||||
flowid 1:$id
|
||||
fi
|
||||
}
|
||||
|
||||
add_ip() {
|
||||
local list_id=$1
|
||||
id=$((list_id * 10 + 1000))
|
||||
[ "${DEBUG:-0}" -eq 0 ] || echo "D: add_ip $@ --$id --$mac"
|
||||
|
||||
Z=$(echo $mac | awk -F '[/]' '{print $2}')
|
||||
[ -n "$Z" ] && mac=$(echo $mac | awk -F '[/]' '{print $1}') || Z=32
|
||||
if is_gt_zero "$UL"; then
|
||||
if [ -n "$nftables_ver" ]; then
|
||||
$nft add rule inet ${NAME} mark_forward ip saddr $mac/$Z counter meta mark set $id
|
||||
$nft add rule inet ${NAME} mark_output ip saddr $mac/$Z counter meta mark set $id
|
||||
$nft add rule inet ${NAME} mark_postrouting ip saddr $mac/$Z counter meta mark set $id
|
||||
fi
|
||||
$tc class add dev ${dev}_ifb parent 1:1 classid 1:$id htb rate "${UL}kbit" ceil "${UL}kbit" prio $id burst 15k cburst 15k
|
||||
$tc qdisc add dev ${dev}_ifb parent 1:$id handle ${id}: sfq perturb 10
|
||||
$tc filter add dev ${dev}_ifb parent 1: protocol ip prio $id handle $id fw flowid 1:$id
|
||||
$tc filter add dev ${dev}_ifb parent 1:0 prio $((id + 100)) protocol ip u32 \
|
||||
match ip src "$mac"/"$Z" \
|
||||
flowid 1:$id
|
||||
fi
|
||||
if is_gt_zero "$DL"; then
|
||||
$tc class add dev ${dev} parent 1:1 classid 1:$id htb rate "${DL}kbit" ceil "${DL}kbit" prio $id burst 15k cburst 15k
|
||||
$tc qdisc add dev ${dev} parent 1:$id handle ${id}: sfq perturb 10
|
||||
$tc filter add dev ${dev} parent 1:0 prio $id protocol ip u32 \
|
||||
match ip dst "$mac"/"$Z" \
|
||||
flowid 1:$id
|
||||
fi
|
||||
}
|
||||
|
||||
check_time() {
|
||||
local start=$1
|
||||
local end=$2
|
||||
local current=$(date +%H%M)
|
||||
local start_min=$((10#${start:0:2}*60 + 10#${start:3:2}))
|
||||
local end_min=$((10#${end:0:2}*60 + 10#${end:3:2}))
|
||||
local current_min=$((10#${current:0:2}*60 + 10#${current:2:2}))
|
||||
|
||||
if [[ $start_min -lt $end_min ]]; then
|
||||
[[ $current_min -ge $start_min && $current_min -lt $end_min ]]
|
||||
else
|
||||
[[ $current_min -ge $start_min || $current_min -lt $end_min ]]
|
||||
fi
|
||||
}
|
||||
|
||||
check_list() {
|
||||
local i=$1
|
||||
local start_time=$(uci -q get $NAME.@device[$i].timestart 2>/dev/null)
|
||||
local end_time=$(uci -q get $NAME.@device[$i].timeend 2>/dev/null)
|
||||
local wweek=$(uci -q get $NAME.@device[$i].week 2>/dev/null)
|
||||
local current_weekday=$(date +%u)
|
||||
[ -z "$start_time" ] && [ -z "$end_time" ] && [ -z "$wweek" ] && return 0
|
||||
|
||||
if [ -n "$wweek" ] && [ "$wweek" != "0" ]; then
|
||||
local day_match=0
|
||||
for day in $(echo $wweek | tr ',' ' '); do
|
||||
[ "$day" -eq "$current_weekday" ] && day_match=1 && break
|
||||
done
|
||||
[ "$day_match" -eq 0 ] && return 1
|
||||
fi
|
||||
|
||||
if [ -n "$start_time" ] && [ -n "$end_time" ]; then
|
||||
check_time "$start_time" "$end_time" || return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
case "$crrun" in
|
||||
"stop")
|
||||
stop_qos
|
||||
;;
|
||||
"start")
|
||||
stop_qos > /dev/null 2>&1
|
||||
sleep 2
|
||||
init_qosplus
|
||||
idlist=$(uci show $NAME 2>/dev/null | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' | sort -nu | sed -e 's/^/!/g' -e 's/$/!/g' > $IDLIST; cat $IDLIST 2>/dev/null | sed -e 's/!//g')
|
||||
|
||||
if [ ! -s "$IDLIST" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
device_count=0
|
||||
for list in $(echo $idlist | sed -e 's/!//g'); do
|
||||
if check_list $list; then
|
||||
mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null)
|
||||
download_mb=$(uci -q get $NAME.@device[$list].download 2>/dev/null)
|
||||
upload_mb=$(uci -q get $NAME.@device[$list].upload 2>/dev/null)
|
||||
comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null)
|
||||
|
||||
# 转换为kbit
|
||||
DL=$(to_kbit "$download_mb")
|
||||
UL=$(to_kbit "$upload_mb")
|
||||
|
||||
if [ -n "$mac" ]; then
|
||||
if is_macaddr "$mac"; then
|
||||
add_mac $list >>$LOG
|
||||
echo "✅ MAC限速: $comment ($mac) - 下载:${download_mb}MB/s(${DL}kbit/s) 上传:${upload_mb}MB/s(${UL}kbit/s)" >>$LOG
|
||||
else
|
||||
add_ip $list >>$LOG
|
||||
echo "✅ IP限速: $comment ($mac) - 下载:${download_mb}MB/s(${DL}kbit/s) 上传:${upload_mb}MB/s(${UL}kbit/s)" >>$LOG
|
||||
fi
|
||||
device_count=$((device_count + 1))
|
||||
fi
|
||||
else
|
||||
[ -f "$IDLIST" ] && [ $(grep "!${list}!" "$IDLIST" 2>/dev/null | wc -l) -gt 0 ] && {
|
||||
del_id $list >>$LOG
|
||||
sed -i "/!$list!/d" "$IDLIST" >/dev/null 2>&1
|
||||
comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null)
|
||||
}
|
||||
fi
|
||||
done
|
||||
echo "EQOSPLUS限速服务启动完成,共配置 $device_count 个设备" >>$LOG
|
||||
echo ""
|
||||
echo "当前限速状态:" >>$LOG
|
||||
tc -s class show dev $dev | grep "rate" | head -5 >>$LOG
|
||||
tc -s class show dev ${dev}_ifb | grep "rate" | head -5 >>$LOG
|
||||
|
||||
;;
|
||||
"add")
|
||||
echo "➕ 添加限速规则..."
|
||||
for list in $(echo $crid | sed -e 's/!//g' | sed 's/,/ /g'); do
|
||||
mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null)
|
||||
download_mb=$(uci -q get $NAME.@device[$list].download 2>/dev/null)
|
||||
upload_mb=$(uci -q get $NAME.@device[$list].upload 2>/dev/null)
|
||||
comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null)
|
||||
DL=$(to_kbit "$download_mb")
|
||||
UL=$(to_kbit "$upload_mb")
|
||||
|
||||
if is_macaddr $mac; then
|
||||
add_mac $list
|
||||
echo "✅ 添加MAC限速: $comment ($mac)" >>$LOG
|
||||
else
|
||||
add_ip $list
|
||||
echo "✅ 添加IP限速: $comment ($mac)" >>$LOG
|
||||
fi
|
||||
done
|
||||
;;
|
||||
"del")
|
||||
for list in $(echo $crid | sed -e 's/!//g' | sed 's/,/ /g'); do
|
||||
comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null)
|
||||
mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null)
|
||||
del_id $list
|
||||
done
|
||||
;;
|
||||
"status")
|
||||
echo "EQOSPLUS限速服务状态"
|
||||
echo "### 网络接口: $dev ###"
|
||||
echo "# 下载队列统计 #"
|
||||
tc -s qdisc show dev $dev 2>/dev/null || echo "无下载队列"
|
||||
echo "# 下载类统计 #"
|
||||
tc -s class show dev $dev 2>/dev/null | grep -E "class htb|rate [0-9]" || echo "无下载类"
|
||||
echo "# 下载过滤器 #"
|
||||
tc -s filter show dev $dev parent 1: 2>/dev/null | head -10 || echo "无下载过滤器"
|
||||
|
||||
echo "### 虚拟接口: ${dev}_ifb ###"
|
||||
echo "# 上传队列统计 #"
|
||||
tc -s qdisc show dev ${dev}_ifb 2>/dev/null || echo "无上传队列"
|
||||
echo "# 上传类统计 #"
|
||||
tc -s class show dev ${dev}_ifb 2>/dev/null | grep -E "class htb|rate [0-9]" || echo "无上传类"
|
||||
echo "# 上传过滤器 #"
|
||||
tc -s filter show dev ${dev}_ifb parent 1: 2>/dev/null | head -10 || echo "无上传过滤器"
|
||||
|
||||
if [ -n "$nftables_ver" ]; then
|
||||
echo "### NFTables规则 ###"
|
||||
nft list table inet ${NAME} 2>/dev/null || echo "没有NFTables规则"
|
||||
else
|
||||
echo "NFTables不可用"
|
||||
fi
|
||||
|
||||
# 显示流量统计
|
||||
echo "### 流量统计 ###"
|
||||
echo "下载流量:"
|
||||
tc -s class show dev $dev 2>/dev/null | grep "Sent" | head -5
|
||||
echo "上传流量:"
|
||||
tc -s class show dev ${dev}_ifb 2>/dev/null | grep "Sent" | head -5
|
||||
;;
|
||||
|
||||
esac
|
||||
@@ -0,0 +1,63 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
# Copyright 2022-2025 sirpdboy <herboy2008@gmail.com>
|
||||
NAME=eqosplus
|
||||
IDLIST="/var/$NAME.idlist"
|
||||
TMPID="/var/$NAME.tmpid"
|
||||
|
||||
idlist=`uci show $NAME | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' `
|
||||
|
||||
check_list() {
|
||||
i=$1
|
||||
checki='0'
|
||||
start_time=$(uci -q get $NAME.@device[$i].timestart 2>/dev/null)
|
||||
end_time=$(uci -q get $NAME.@device[$i].timeend 2>/dev/null)
|
||||
wweek=`uci -q get $NAME.@device[$i].week `
|
||||
current_time=$(date +%H:%M)
|
||||
current_weekday=$(date +%u)
|
||||
for ww in `echo $wweek | sed 's/,/ /g' `; do
|
||||
if [ $current_weekday = $ww ] || [ 'x0' = x$ww ] ;then
|
||||
[ "$start_time" = "$end_time" ] && checki='1' || {
|
||||
if [ "$start_time" \< "$end_time" ]; then
|
||||
if [ "$current_time" \> "$start_time" ] && [ "$current_time" \< "$end_time" ] ; then
|
||||
checki='1'
|
||||
fi
|
||||
else
|
||||
if [ "$start_time" \> "$end_time" ] ; then
|
||||
if [ "$current_time" \< "$start_time" ] && [ "$current_time" \> "$end_time" ] ; then
|
||||
checki='1'
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
fi
|
||||
done
|
||||
return
|
||||
}
|
||||
|
||||
idlistusr(){
|
||||
checki='0'
|
||||
[ -s $IDLIST ] || touch $IDLIST
|
||||
for list in $idlist ;do
|
||||
check_list $list
|
||||
if [ $checki == '1' ] ; then
|
||||
[ `cat $IDLIST 2>/dev/null | grep "!${list}!" | wc -l ` -gt 0 ] || {
|
||||
eqosplus add $list
|
||||
echo "!${list}!" >> $IDLIST ; cat $IDLIST | sort | uniq > $TMPID ;cat $TMPID >$IDLIST ;rm -rf $TMPID
|
||||
}
|
||||
else
|
||||
[ `cat $IDLIST 2>/dev/null | grep "!${list}!" | wc -l ` -gt 0 ] && {
|
||||
eqosplus del $list
|
||||
sed -i "/!$list!/d" $IDLIST >/dev/null 2>&1
|
||||
}
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
while :;do
|
||||
sleep 30
|
||||
idlistusr
|
||||
sleep 30
|
||||
done
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"luci-app-eqosplus": {
|
||||
"description": "Grant UCI access for luci-app-eqosplus",
|
||||
"read": {
|
||||
"uci": [ "eqosplus" ]
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "eqosplus" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 585 KiB |
@@ -1,19 +0,0 @@
|
||||
# Copyright (C) 2016 Openwrt.org
|
||||
#
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-honk
|
||||
PKG_VERSION:=1.1.4
|
||||
PKG_RELEASE:=7
|
||||
|
||||
LUCI_TITLE:=LuCI support for honk
|
||||
LUCI_PKGARCH:=all
|
||||
LUCI_DEPENDS:=+honk +luci-base +rpcd-mod-ucode
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
||||
|
||||
@@ -1,361 +0,0 @@
|
||||
msgid "HONK"
|
||||
msgstr "HONK"
|
||||
|
||||
msgid "RUNNING"
|
||||
msgstr "运行中"
|
||||
|
||||
msgid "NOT RUNNING"
|
||||
msgstr "未运行"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "收集数据..."
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "启用"
|
||||
|
||||
msgid "Reload Service"
|
||||
msgstr "重载服务"
|
||||
|
||||
msgid "Global Settings"
|
||||
msgstr "全局设置"
|
||||
|
||||
msgid "DNS Settings"
|
||||
msgstr "DNS 设置"
|
||||
|
||||
msgid "Node Settings"
|
||||
msgstr "节点设置"
|
||||
|
||||
msgid "Routing Settings"
|
||||
msgstr "路由设置"
|
||||
|
||||
msgid "Global Configuration"
|
||||
msgstr "全局配置"
|
||||
|
||||
msgid "DNS Configuration"
|
||||
msgstr "DNS 配置"
|
||||
|
||||
msgid "Node Configuration"
|
||||
msgstr "节点配置"
|
||||
|
||||
msgid "Route Configuration"
|
||||
msgstr "路由配置"
|
||||
|
||||
msgid "Configure global settings for HONK."
|
||||
msgstr "调整 HONK 的全局设置。"
|
||||
|
||||
msgid "Configure DNS settings for HONK."
|
||||
msgstr "调整 HONK 的 DNS 设置。"
|
||||
|
||||
msgid "Configure nodes and groups for HONK."
|
||||
msgstr "调整 HONK 的节点与分组设置。"
|
||||
|
||||
msgid "Configure routing rules for HONK."
|
||||
msgstr "调整 HONK 的路由规则。"
|
||||
|
||||
msgid "Correctly configure the include field for separate-config to work, or enter complete configuration here."
|
||||
msgstr "请正确配置 include 字段以启用拆分配置,或在此处填写完整配置。"
|
||||
|
||||
msgid "Logs"
|
||||
msgstr "日志"
|
||||
|
||||
msgid "Memory Usage"
|
||||
msgstr "内存占用"
|
||||
|
||||
msgid "Format Code"
|
||||
msgstr "格式化代码"
|
||||
|
||||
msgid "Clear logs"
|
||||
msgstr "清空日志"
|
||||
|
||||
msgid "Logs cleared successfully."
|
||||
msgstr "日志已清空。"
|
||||
|
||||
msgid "Failed to clear logs:"
|
||||
msgstr "清空日志失败:"
|
||||
|
||||
msgid "Configuration applied and service reloaded."
|
||||
msgstr "配置已生效并重载服务。"
|
||||
|
||||
msgid "Status"
|
||||
msgstr "状态"
|
||||
|
||||
msgid "Running Status"
|
||||
msgstr "运行状态"
|
||||
|
||||
msgid "Formatted"
|
||||
msgstr "已格式化"
|
||||
|
||||
msgid "Failed to format code:"
|
||||
msgstr "格式化代码失败:"
|
||||
|
||||
|
||||
|
||||
msgid "Checking Dashboard and API configuration..."
|
||||
msgstr "正在检测控制面板与 API 配置..."
|
||||
|
||||
msgid "Enabling Native API and restarting HONK..."
|
||||
msgstr "正在启用 Native API 并重启 HONK..."
|
||||
|
||||
msgid "One-click Enable Default Native API"
|
||||
msgstr "一键启用默认 Native API 配置"
|
||||
|
||||
msgid "Successfully enabled! Restarting service and initializing dashboard..."
|
||||
msgstr "已成功启用!正在重启服务并初始化面板..."
|
||||
|
||||
msgid "Failed to enable:"
|
||||
msgstr "启用失败:"
|
||||
|
||||
msgid "Unknown error"
|
||||
msgstr "未知错误"
|
||||
|
||||
msgid "Dashboard / Native API Unconfigured"
|
||||
msgstr "控制面板 / Native API 未配置"
|
||||
|
||||
msgid "HONK has not enabled Native API in its configuration file. Dashboard requires native API listener and dashboard UI path."
|
||||
msgstr "HONK 尚未在配置文件中启用 Native API。控制面板需要依赖 Native API 提供的监听端口与面板静态文件路径。"
|
||||
|
||||
msgid "Please configure experimental.native_api block in API Settings, and ensure listen and ui are configured."
|
||||
msgstr "请在【API 设置】的配置文件中配置 experimental.native_api 语法块,并确保配置了 listen 和 ui。"
|
||||
|
||||
msgid "Example Configuration (/etc/honk/config.d/api.dae):"
|
||||
msgstr "参考配置示例(/etc/honk/config.d/api.dae):"
|
||||
|
||||
msgid "Configure in API Settings"
|
||||
msgstr "前往【API 设置】手动配置"
|
||||
|
||||
msgid "(Not set)"
|
||||
msgstr "(未设置)"
|
||||
|
||||
msgid "Preparing download..."
|
||||
msgstr "准备下载..."
|
||||
|
||||
msgid "Please enter a valid download URL"
|
||||
msgstr "请输入有效的下载 URL"
|
||||
|
||||
msgid "Processing..."
|
||||
msgstr "正在处理..."
|
||||
|
||||
msgid "Start Download & Install Dashboard"
|
||||
msgstr "开始下载并安装控制面板"
|
||||
|
||||
msgid "%s UI Files Not Found"
|
||||
msgstr "未检测到 %s 面板文件"
|
||||
|
||||
msgid "Listen Address & Port"
|
||||
msgstr "监听地址与端口"
|
||||
|
||||
msgid "API Secret"
|
||||
msgstr "API 认证密钥"
|
||||
|
||||
msgid "Download Source:"
|
||||
msgstr "下载源:"
|
||||
|
||||
msgid "Custom URL"
|
||||
msgstr "自定义 URL"
|
||||
|
||||
msgid "HTTPS access detected:"
|
||||
msgstr "检测到当前通过 HTTPS 访问 LuCI:"
|
||||
|
||||
msgid "Modern browsers may block HTTP iframe resources under HTTPS. If the dashboard fails to display, open it in a new tab."
|
||||
msgstr "现代浏览器可能会阻止直接加载 HTTP 协议的控制面板。如无法正常显示,请点击右侧按钮在新标签页打开。"
|
||||
|
||||
msgid "Open in New Tab"
|
||||
msgstr "在新标签页打开"
|
||||
|
||||
msgid "HONK service is currently not running:"
|
||||
msgstr "HONK 服务当前未运行:"
|
||||
|
||||
msgid "Dashboard API port ("
|
||||
msgstr "Dashboard API 端口("
|
||||
|
||||
msgid ") is not listening. Start the service to display data."
|
||||
msgstr ")尚未监听。启动服务后即可正常显示数据。"
|
||||
|
||||
msgid "Start HONK"
|
||||
msgstr "前往启动 HONK"
|
||||
|
||||
msgid "New Tab"
|
||||
msgstr "新标签页"
|
||||
|
||||
msgid "Open independently in a new tab"
|
||||
msgstr "在新标签页中独立打开"
|
||||
|
||||
msgid "Drag to scroll page"
|
||||
msgstr "拖拽以滚动页面"
|
||||
|
||||
msgid "Update Dashboard"
|
||||
msgstr "更新控制面板"
|
||||
|
||||
msgid "Update to latest"
|
||||
msgstr "更新至最新版"
|
||||
|
||||
msgid "The latest version (%s) will be downloaded and deployed to:"
|
||||
msgstr "系统将下载最新版本(%s)并重新部署至目标目录:"
|
||||
|
||||
msgid "Select download source"
|
||||
msgstr "选择下载源"
|
||||
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
msgid "Start Update"
|
||||
msgstr "开始更新"
|
||||
|
||||
msgid "Refresh"
|
||||
msgstr "刷新"
|
||||
|
||||
msgid "Refresh dashboard content"
|
||||
msgstr "刷新面板内容"
|
||||
|
||||
msgid "Fullscreen"
|
||||
msgstr "全屏"
|
||||
|
||||
msgid "Toggle fullscreen display"
|
||||
msgstr "切换全屏显示"
|
||||
|
||||
msgid "Initializing download task...\n"
|
||||
msgstr "正在初始化下载任务...\n"
|
||||
|
||||
msgid "Failed to trigger download:"
|
||||
msgstr "触发下载失败:"
|
||||
|
||||
msgid "Installation completed successfully!"
|
||||
msgstr "安装成功,最新版本已部署。"
|
||||
|
||||
msgid "Installation failed. Please check logs."
|
||||
msgstr "安装失败,请检查日志。"
|
||||
|
||||
msgid "Close"
|
||||
msgstr "关闭"
|
||||
|
||||
msgid "Download error:"
|
||||
msgstr "触发下载异常:"
|
||||
|
||||
msgid "Not configured (Empty)"
|
||||
msgstr "未设置(留空)"
|
||||
|
||||
msgid "Reloading..."
|
||||
msgstr "正在重载..."
|
||||
|
||||
msgid "HONK service reload triggered successfully."
|
||||
msgstr "已成功触发 HONK 服务重载。"
|
||||
|
||||
msgid "Failed to reload HONK:"
|
||||
msgstr "重载 HONK 失败:"
|
||||
|
||||
msgid "DNS configuration saved and service reloaded."
|
||||
msgstr "DNS 配置已保存并重载服务。"
|
||||
|
||||
msgid "Node configuration saved and service reloaded."
|
||||
msgstr "节点配置已保存并重载服务。"
|
||||
|
||||
msgid "Routing configuration saved and service reloaded."
|
||||
msgstr "路由配置已保存并重载服务。"
|
||||
|
||||
msgid "Dashboard"
|
||||
msgstr "控制面板"
|
||||
|
||||
msgid "Mirror"
|
||||
msgstr "镜像源"
|
||||
|
||||
msgid "Mirror 1"
|
||||
msgstr "镜像源 1"
|
||||
|
||||
msgid "Mirror 2"
|
||||
msgstr "镜像源 2"
|
||||
|
||||
msgid "Tip: If the dashboard still shows the old version, press Ctrl+F5 or open in a new tab to bypass PWA cache."
|
||||
msgstr "提示:若更新后仍显示旧版本,请按 Ctrl+F5 强刷或在新标签页中打开以绕过 PWA 缓存。"
|
||||
|
||||
msgid "Advanced Settings"
|
||||
msgstr "高级设置"
|
||||
|
||||
msgid "Enable to display full configuration editor and advanced routing/DNS/node tabs."
|
||||
msgstr "启用后将显示完整的全局配置编辑器以及路由、DNS、节点的高级分页。"
|
||||
|
||||
msgid "Target Dashboard"
|
||||
msgstr "目标面板"
|
||||
|
||||
msgid "Dashboard Type"
|
||||
msgstr "面板类型"
|
||||
|
||||
msgid "Select the active web dashboard."
|
||||
msgstr "选择当前生效的 Web 管理面板。"
|
||||
|
||||
msgid "Doona"
|
||||
msgstr "Doona"
|
||||
|
||||
msgid "Native API is configured, but dashboard files are missing in the UI directory. You can download and deploy it directly."
|
||||
msgstr "Native API 已配置,但 UI 目录中缺少面板文件。您可以直接下载并部署。"
|
||||
|
||||
msgid "Target Directory (ui)"
|
||||
msgstr "目标目录 (ui)"
|
||||
|
||||
msgid "Click to copy API Token"
|
||||
msgstr "点击复制 API 认证密钥"
|
||||
|
||||
msgid "Token copied to clipboard: "
|
||||
msgstr "认证密钥已复制到剪贴板: "
|
||||
|
||||
msgid "Token: "
|
||||
msgstr "认证密钥: "
|
||||
|
||||
msgid "API Settings"
|
||||
msgstr "API 设置"
|
||||
|
||||
msgid "Configure API settings for HONK."
|
||||
msgstr "调整 HONK 的 API 设置。"
|
||||
|
||||
msgid "API Configuration"
|
||||
msgstr "API 配置"
|
||||
|
||||
msgid "API configuration saved and service restarted."
|
||||
msgstr "API 配置已保存并重启服务。"
|
||||
|
||||
msgid "None"
|
||||
msgstr "无"
|
||||
|
||||
msgid "Dashboard Disabled"
|
||||
msgstr "面板未启用"
|
||||
|
||||
msgid "Dashboard type is currently set to \"None\". Web dashboard and API listener are disabled."
|
||||
msgstr "当前面板类型为“无”,Web 管理面板和 Native API 监听已禁用。"
|
||||
|
||||
msgid "Failed to switch dashboard:"
|
||||
msgstr "切换面板失败:"
|
||||
|
||||
msgid "GitHub Release "
|
||||
msgstr "GitHub Release "
|
||||
|
||||
msgid "Service did not accept the request"
|
||||
msgstr "服务未接受该请求"
|
||||
|
||||
msgid "Failed to apply configuration:"
|
||||
msgstr "应用配置失败:"
|
||||
|
||||
msgid "HONK did not come back up; check the logs"
|
||||
msgstr "HONK 未能重新启动,请检查日志"
|
||||
|
||||
msgid "Configuration saved. HONK is disabled, so the service was not started."
|
||||
msgstr "配置已保存。HONK 处于禁用状态,未启动服务。"
|
||||
|
||||
msgid "Download did not finish in time."
|
||||
msgstr "下载超时未完成。"
|
||||
|
||||
msgid "Download task stopped reporting progress."
|
||||
msgstr "下载任务已停止上报进度。"
|
||||
|
||||
msgid "Configuration saved, but the service state could not be confirmed."
|
||||
msgstr "配置已保存,但无法确认服务状态。"
|
||||
|
||||
msgid "Running"
|
||||
msgstr "运行中"
|
||||
|
||||
msgid "Not Running"
|
||||
msgstr "未运行"
|
||||
|
||||
msgid "Zashboard"
|
||||
msgstr "Zashboard"
|
||||
|
||||
msgid "Saved, but the panel files are not installed yet — download the panel first."
|
||||
msgstr "配置已保存,但面板文件尚未安装,请先下载面板。"
|
||||
@@ -1,744 +0,0 @@
|
||||
Licence text shared by 19 packages (MIT)
|
||||
========================================================================
|
||||
@codemirror/autocomplete 6.20.3 (MIT) — LICENSE
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
@codemirror/commands 6.11.1 (MIT) — LICENSE
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
@codemirror/language 6.12.4 (MIT) — LICENSE
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
@codemirror/lint 6.9.7 (MIT) — LICENSE
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
@codemirror/search 6.7.2 (MIT) — LICENSE
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
@codemirror/state 6.7.6 (MIT) — LICENSE
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
@codemirror/view 6.43.13 (MIT) — LICENSE
|
||||
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
@lezer/common 1.5.2 (MIT) — LICENSE
|
||||
Copyright (C) 2018 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
@lezer/highlight 1.2.5 (MIT) — LICENSE
|
||||
Copyright (C) 2018 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
@lezer/lr 1.4.10 (MIT) — LICENSE
|
||||
Copyright (C) 2018 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
@marijn/find-cluster-break 1.0.4 (MIT) — LICENSE
|
||||
Copyright (C) 2024 by Marijn Haverbeke <marijn@haverbeke.berlin>
|
||||
aria-hidden 1.2.6 (MIT) — LICENSE
|
||||
Copyright (c) 2017 Anton Korzunov
|
||||
clsx 2.1.1 (MIT) — license
|
||||
Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
|
||||
openapi-fetch 0.17.0 (MIT) — LICENSE
|
||||
Copyright (c) 2023 Drew Powers
|
||||
openapi-typescript-helpers 0.1.0 (MIT) — LICENSE
|
||||
Copyright (c) 2023 Drew Powers
|
||||
react 19.3.0 (MIT) — LICENSE
|
||||
Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
react-dom 19.3.0 (MIT) — LICENSE
|
||||
Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
scheduler 0.28.0 (MIT) — LICENSE
|
||||
Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
use-sync-external-store 1.7.0 (MIT) — LICENSE
|
||||
Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
|
||||
MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
Licence text shared by 2 packages (OFL-1.1)
|
||||
========================================================================
|
||||
@fontsource-variable/noto-sans-sc 5.3.0 (OFL-1.1) — LICENSES/OFL-1.1.txt
|
||||
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.
|
||||
@fontsource-variable/noto-sans-tc 5.3.0 (OFL-1.1) — LICENSES/OFL-1.1.txt
|
||||
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License,
|
||||
Version 1.1.
|
||||
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font
|
||||
creation efforts of academic and linguistic communities, and to
|
||||
provide a free and open framework in which fonts may be shared and
|
||||
improved in partnership with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply to
|
||||
any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software
|
||||
components as distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to,
|
||||
deleting, or substituting -- in part or in whole -- any of the
|
||||
components of the Original Version, by changing formats or by porting
|
||||
the Font Software to a new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed,
|
||||
modify, redistribute, and sell modified and unmodified copies of the
|
||||
Font Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components, in
|
||||
Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the
|
||||
corresponding Copyright Holder. This restriction only applies to the
|
||||
primary font name as presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created using
|
||||
the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
|
||||
Licence text shared by 8 packages (Apache-2.0)
|
||||
========================================================================
|
||||
@internationalized/date 3.12.4 (Apache-2.0) — LICENSE
|
||||
Copyright 2019 Adobe
|
||||
@internationalized/number 3.6.8 (Apache-2.0) — LICENSE
|
||||
Copyright 2019 Adobe
|
||||
@internationalized/string 3.2.10 (Apache-2.0) — LICENSE
|
||||
Copyright 2019 Adobe
|
||||
@react-types/shared 3.36.1 (Apache-2.0) — LICENSE
|
||||
Copyright 2019 Adobe
|
||||
@swc/helpers 0.5.23 (Apache-2.0) — LICENSE
|
||||
Copyright 2024 SWC contributors.
|
||||
react-aria 3.52.1 (Apache-2.0) — LICENSE
|
||||
Copyright 2019 Adobe
|
||||
react-aria-components 1.21.1 (Apache-2.0) — LICENSE
|
||||
Copyright 2019 Adobe
|
||||
react-stately 3.50.0 (Apache-2.0) — LICENSE
|
||||
Copyright 2019 Adobe
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
|
||||
@react-aria/optimize-locales-plugin 2.0.2 (Apache-2.0) — LICENSE
|
||||
========================================================================
|
||||
Only the empty.js locale helper emitted by the plugin ships.
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2019 Adobe
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
|
||||
|
||||
Licence text shared by 3 packages (MIT)
|
||||
========================================================================
|
||||
crelt 1.0.7 (MIT) — LICENSE
|
||||
Copyright (C) 2020 by Marijn Haverbeke <marijn@haverbeke.berlin>
|
||||
style-mod 4.1.3 (MIT) — LICENSE
|
||||
Copyright (C) 2018 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
w3c-keyname 2.2.8 (MIT) — LICENSE
|
||||
Copyright (C) 2016 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
Licence text shared by 2 packages (ISC)
|
||||
========================================================================
|
||||
d3-path 3.1.0 (ISC) — LICENSE
|
||||
Copyright 2015-2022 Mike Bostock
|
||||
d3-shape 3.2.0 (ISC) — LICENSE
|
||||
Copyright 2010-2022 Mike Bostock
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any purpose
|
||||
with or without fee is hereby granted, provided that the above copyright notice
|
||||
and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
||||
THIS SOFTWARE.
|
||||
|
||||
|
||||
rollup 4.63.2 (MIT) — LICENSE.md
|
||||
========================================================================
|
||||
Only the module namespace objects that Rollup writes into the build ship.
|
||||
|
||||
# Rollup core license
|
||||
Rollup is released under the MIT license:
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2017 [these people](https://github.com/rollup/rollup/graphs/contributors)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
tslib 2.8.1 (0BSD) — LICENSE.txt
|
||||
========================================================================
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
vite 6.4.3 (MIT) — LICENSE.md
|
||||
========================================================================
|
||||
Only helper code that Vite writes into the build ships: the module preload polyfill, the preload helper for dynamic imports and the CommonJS interop helper of @rollup/plugin-commonjs, which Vite bundles.
|
||||
|
||||
# Vite core license
|
||||
Vite is released under the MIT license:
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019-present, VoidZero Inc. and Vite contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
## @rollup/plugin-alias, @rollup/plugin-commonjs, @rollup/plugin-dynamic-import-vars, @rollup/pluginutils
|
||||
License: MIT
|
||||
By: Johannes Stein
|
||||
Repository: rollup/plugins
|
||||
|
||||
License: MIT
|
||||
By: Rich Harris
|
||||
Repository: rollup/plugins
|
||||
|
||||
License: MIT
|
||||
By: LarsDenBakker
|
||||
Repository: rollup/plugins
|
||||
|
||||
License: MIT
|
||||
By: Rich Harris
|
||||
Repository: rollup/plugins
|
||||
|
||||
> The MIT License (MIT)
|
||||
>
|
||||
> Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors)
|
||||
>
|
||||
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
> of this software and associated documentation files (the "Software"), to deal
|
||||
> in the Software without restriction, including without limitation the rights
|
||||
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
> copies of the Software, and to permit persons to whom the Software is
|
||||
> furnished to do so, subject to the following conditions:
|
||||
>
|
||||
> The above copyright notice and this permission notice shall be included in
|
||||
> all copies or substantial portions of the Software.
|
||||
>
|
||||
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
> THE SOFTWARE.
|
||||
|
||||
|
||||
Packages without a licence file
|
||||
========================================================================
|
||||
client-only 0.0.1 (MIT)
|
||||
@@ -1 +0,0 @@
|
||||
import{j as r}from"./vendor-react-64fcanlc.js";import{I as a}from"./index-HxEUeoab.js";function o(o){return r.jsx(a,{...o,children:r.jsx("path",{fill:"currentColor",d:"M10 1.5a8.5 8.5 0 1 0 0 17 8.5 8.5 0 0 0 0-17m0 15.5a7 7 0 1 1 0-14 7 7 0 0 1 0 14m3.75-7.75h-3v-3a.75.75 0 0 0-1.5 0v3h-3a.75.75 0 0 0 0 1.5h3v3a.75.75 0 0 0 1.5 0v-3h3a.75.75 0 0 0 0-1.5"})})}export{o as A};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,$ as s,j as l}from"./vendor-react-64fcanlc.js";import{cB as a,cA as n,cD as t,cC as c,fU as i,dZ as r,fV as o,cQ as d,cV as u,d3 as p,d2 as b,cU as h,eW as m,cm as f,fW as x,b7 as j,fX as v,fY as g,cl as C,bw as y,fZ as N,dh as k,f_ as A,di as P,co as S,u as M,b4 as D,f$ as w,bp as L,fr as q,g0 as I,fs as V,dj as $,fu as H,g1 as F,ft as E,T as O,I as z,bg as B,B as R,dV as T}from"./index-HxEUeoab.js";import{a as K,b as U}from"./ItemText-DOD_75iR.js";const W=e.createContext(null),Z=e.forwardRef(function(e,l){[e,l]=d(e,l,W);let m=e.href&&!e.isDisabled?"a":"span",{linkProps:f,isPressed:x}=function(e,s){let{elementType:l="a",onPress:d,onPressStart:u,onPressEnd:p,onPressChange:b,onClick:h,isDisabled:m,...f}=e,x={};"a"!==l&&(x={role:"link",tabIndex:m?void 0:0});let{focusableProps:j}=a(e,s),{pressProps:v,isPressed:g}=n({onPress:d,onPressStart:u,onPressEnd:p,onPressChange:b,onClick:h,isDisabled:m,ref:s}),C=t(f,{labelable:!0}),y=c(j,v),N=i(),k=r(e);return{isPressed:g,linkProps:c(C,k,{...y,...x,"aria-disabled":m||void 0,"aria-current":e["aria-current"],onClick:s=>{v.onClick?.(s),o(s,N,e.href,e.routerOptions)}})}}({...e,elementType:m},l),j=u[m],{hoverProps:v,isHovered:g}=p(e),{focusProps:C,isFocused:y,isFocusVisible:N}=b(),k=h({...e,defaultClassName:"react-aria-Link",values:{isCurrent:!!e["aria-current"],isDisabled:e.isDisabled||!1,isPressed:x,isHovered:g,isFocused:y,isFocusVisible:N}}),A=t(e,{global:!0});return delete A.onClick,s.createElement(j,{ref:l,slot:e.slot||void 0,...c(A,k,f,v,C),"data-focused":y||void 0,"data-hovered":g||void 0,"data-pressed":x||void 0,"data-focus-visible":N||void 0,"data-current":!!e["aria-current"]||void 0,"data-disabled":e.isDisabled||void 0},k.children)});function _({external:e,layout:s,appearance:a,label:n,className:t,quiet:c,secondary:i,small:r,icon:o,accent:d,negative:u,size:p,...b}){const h="button"===a?m({quiet:c,secondary:i,small:r,icon:o,accent:d,negative:u}):`rp-${a}`,v=f(p);return l.jsx(Z,{target:e?"_blank":void 0,rel:e?"noreferrer":void 0,"aria-label":n,"data-layout":s,"data-size":v,...b,className:a?x(t,e=>j(h,e)):t})}const Q=e=>e>12,X=e=>s=>{if("all"===s)return;const l=[...s][0];null!=l&&e(String(l))};function Y({item:e,children:s,onAction:a}){return l.jsxs(E,{id:e.id,className:"rp-item",textValue:e.label,onAction:a,children:[l.jsx(K,{}),l.jsx(U,{i:e,children:s})]})}function G({children:s,content:a,label:n,quiet:t,small:c,size:i,chevron:r=!0,isDisabled:o,appearance:d,placement:u="bottom end",count:p,onIntent:b}){const h=p?l.jsx("span",{className:"rp-count","aria-hidden":"true",children:p}):null,x=g(o),[j,v]=e.useState(!1),M=f(i),D=e.useRef(null),w=l.jsxs(C,{ref:D,className:d?"rp-select":m({quiet:t,small:c,icon:!r}),"data-size":M,"aria-label":n,"aria-describedby":x?.id,isDisabled:o,onHoverStart:b,onFocus:b,children:[s,h,r&&l.jsx(y,{className:"rp-chev"})]});return l.jsxs(N,{children:[r&&!x?w:l.jsxs(k,{delay:400,isOpen:j,onOpenChange:v,children:[l.jsx(A,{children:l.jsx("span",{className:"rp-tipwrap",tabIndex:o?0:-1,"data-passive":o?void 0:"",onPointerDown:e=>{o&&"touch"===e.pointerType&&v(e=>!e)},children:w})}),l.jsx(P,{triggerRef:D,children:x?.text??n})]}),l.jsx(S,{className:"rp-popover rp-list-popover",placement:u,children:a})]})}function J({label:e,labelledBy:s,sections:a,headers:n=!0,focusedByCaller:t,onAction:c,searchLabel:i,actions:r=[]}){const o="function"==typeof a?a():a,d=!!i&&Q(ee(o)),u=l.jsxs(q,{"aria-label":e,"aria-labelledby":s??"",className:d?"rp-menu-scroll":void 0,autoFocus:!t&&void 0,children:[o.map(e=>l.jsxs(V,{"aria-label":n&&!e.hideHeader?void 0:e.title,selectionMode:e.selectionMode??"single",selectedKeys:[`/choice-${e.value}`],onSelectionChange:e.onChange&&X(s=>e.onChange(s.slice(8))),children:[n&&!e.hideHeader&&l.jsx($,{className:"rp-sec-h",children:e.title}),e.items.map(e=>l.jsx(Y,{item:{...e,id:`/choice-${e.id}`},onAction:c&&(()=>c(e.id))},e.id))]},e.title)),r.length>0&&l.jsx(H,{className:"rp-hrule"}),r.map(e=>l.jsx(le,{...e},e.label))]});return d?l.jsx(F,{label:i,children:u}):u}const ee=e=>e.reduce((e,s)=>e+s.items.length,0);function se(e,s){for(const l of e){const a=l.items.find(e=>e.id===l.value);if(a)return e.length>1&&!l.plain&&a.label!==l.title?s("ui.sectionChoice",{section:l.title,item:a.label}):a.label}return""}const le=({label:e,icon:s,onAction:a})=>l.jsxs(E,{className:"rp-item rp-subitem",textValue:e,onAction:a,shouldCloseOnSelect:!0,children:[l.jsx("span",{className:"ic",children:s}),l.jsx(O,{children:e})]}),ae=({id:e,label:s,icon:a,sections:n})=>{const t=M();return l.jsxs(E,{id:e,className:"rp-item rp-subitem",textValue:s,children:[l.jsx("span",{className:"ic",children:a}),l.jsx(O,{children:s}),l.jsxs("span",{className:"desc",children:[se(n,t),l.jsx(y,{className:"rp-chev-end"})]})]})};function ne({label:s,submenus:a,actions:n=[]}){const t="function"==typeof a?a():a,c=M(),i=D(w),[r,o]="rtl"===L().direction?["ArrowLeft","ArrowRight"]:["ArrowRight","ArrowLeft"],[{open:d,left:u},p]=e.useState({open:null,left:null}),b=e.useRef(null),hLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{u as a,f as s,g2 as n,dr as o,g3 as l}from"./index-HxEUeoab.js";import{a as i,aW as r,aX as c,aY as u,aZ as h,a_ as m,a$ as p,b0 as d,b1 as x}from"./activity-yZTrGy-J.js";import{G as f,C as M}from"./AreaCurve-DQSHOSpG.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./AppearanceControls-sRy1p156.js";import"./ItemText-DOD_75iR.js";import"./logs-C4GIy4tX.js";import"./Select-D7_6MaHd.js";import"./array-C0VuvQyb.js";const g=[30,60,120,300,600,900,1800,3600,7200,21600,43200,86400].map(e=>1e3*e);function j(t,a){const[s,n]=e.useState([]),o=e.useRef("");return e.useLayoutEffect(()=>{const e=[a,...t].join("\0");if(e===o.current)return;o.current=e;const s=document.createElement("span");s.className="rp-area-tick",Object.assign(s.style,{position:"absolute",top:"-20000px",whiteSpace:"pre"}),document.body.appendChild(s),n(t.map(e=>{s.textContent=e;const{width:t,height:a}=s.getBoundingClientRect();return{width:t,height:a}})),s.remove()},[t,a]),s}function y({label:y,series:b,timestamps:v,fmt:w,locale:k,height:C=150,baseline:D="zero",window:$,fill:N,bare:S=!1,inset:A=2}){const L=a(),T=i(),B=e.useId(),[E,F]=s(Math.round,120),{tip:P,showAt:I,hide:K}=r(),[W,z]=e.useState(null),O=W&&W.index<v.length?W.index:null,R=$?$.until-$.since:v.length?v[v.length-1]-v[0]:0,_=$?.since,G=$?.until,H=e.useMemo(()=>void 0!==_&&void 0!==G?function(e,t){const a=t-e,s=g.find(e=>a/e<=6)??g[g.length-1],n=s>=864e5?6e4*new Date(t).getTimezoneOffset():0,o=[];for(let l=Math.ceil((e-n)/s)*s+n;l<=t;l+=s)l-e>=.04*a&&t-l>=.04*a&&o.push(l);return{ticks:o,step:s}}(_,G):void 0,[_,G]),X=H?H.step<6e4:R<18e4,Y=H?H.step>=864e5:R>1296e5,Z=e.useMemo(()=>Y?n(k):o(k,X),[k,X,Y]),{yDomain:q,yTicks:J}=e.useMemo(()=>{const e=b.flatMap(e=>e.values.filter(e=>null!==e));let t=0,a=(e=>{const t=Math.pow(10,Math.floor(Math.log10(e))),a=e/t;return([1,1.2,1.5,2,2.5,3,4,5,6,8,10].find(e=>a<=e)??10)*t})(1.08*Math.max(1,...e));if("auto"===D&&e.length){const s=Math.min(...e),n=Math.max(...e),o=(e=>{const t=Math.pow(10,Math.floor(Math.log10(Math.max(e,1e-9)))),a=e/t;return(a<=1?.2:a<=2?.5:a<=5?1:2)*t})(Math.max(n-s,.02*n,1));t=Math.max(0,Math.floor(s/o)*o-o),a=Math.ceil(n/o)*o+o}return{yDomain:[t,a],yTicks:"auto"===D?[t,(t+a)/2,a]:[a/2,a]}},[b,D]),Q=e.useMemo(()=>{const e=v.length-1;return H?H.ticks:[...new Set((X?[0,Math.round(e/2),e]:[0,Math.round(e/3),Math.round(2*e/3),e]).map(e=>v[e]))]},[H,X,v]),U=e.useMemo(()=>void 0!==_&&void 0!==G?[_,G]:[Math.min(...v),Math.max(...v)],[_,G,v]),V=F?.width??0,ee=F?.height??C,te=S?A:20,ae=S?2:8,se=ee-(S?2:30),ne=V-(S?A:64),oe=e.useMemo(()=>[Math.min(U[0],...v),Math.max(U[1],...v)],[U,v]),le=e.useCallback(e=>c(e,oe,[te,ne]),[oe,te,ne]),ie=e.useCallback(e=>c(e,q,[se,ae]),[q,se,ae]),re=e.useMemo(()=>v.map(le),[v,le]),ce=e.useMemo(()=>b.map(e=>v.map((t,a)=>null==e.values[a]?null:{x:re[a],y:ie(e.values[a])})),[b,v,re,ie]),ue={x:te,y:ae,width:ne-te,height:se-ae},he=(e,t)=>z({index:e,y:t}),me=()=>{z(null),K()};e.useLayoutEffect(()=>{null!==O&&b.some(e=>null!=e.values[O])?I({x:re[O],y:W?.y??(ae+se)/2,width:V,bounds:S&&E.current?u(E.current):ue,label:l(k).format(v[O]),lines:b.filter(e=>null!=e.values[O]).sort((e,t)=>e.label<t.label?-1:e.label>t.label?1:0).map(e=>L("ui.valuePair",{label:e.label,value:w(e.values[O])}))}):K()});const pe=h(v.length,he,me),de=e.useMemo(()=>Q.map(e=>Z.format(e)),[Q,Z]),xe=e.useMemo(()=>J.map(w),[J,w]),fe=j(de,k),Me=j(xe,k),ge=H?m(Q.map(le),fe.map(e=>e.width),0,V,16,!0):function(e,t,a){const s=a=>[e[a]-(t[a]??0)/2,e[a]+(t[a]??0)/2],n=e.length-1,o=[];let l=1/0;for(let i=n;i>=0;i--){const[t,r]=s(i);r+a>l||i>0&&i<n&&t<s(0)[1]+a||(o.unshift({index:i,position:e[i]}),l=t)}return o}(Q.map(le),fe.map(e=>e.width),8),je=m(J.map(ie),Me.map(e=>e.height),0,ee,5,!1),ye=[...new Set([...(S?J:je.map(e=>J[e.index])).map(ie),ae,se])];return t.jsx("div",{ref:E,style:{height:C,width:"100%",flex:N?"1 0 auto":void 0,position:"relative"},onPointerLeave:pe.onPointerLeave,children:v.length>0&&F&&t.jsxs(t.Fragment,{children:[t.jsx(p,{tip:P}),t.jsxs("svg",{className:"rp-activity-surface",width:V,height:ee,viewBox:`0 0 ${V} ${ee}`,style:{display:"block"},role:"application","aria-label":y,tabIndex:0,onFocus:pe.onFocus,onBlur:pe.onBlur,onKeyDown:pe.onKeyDown,onPointerMove:e=>{const{x:t,y:a}=d(e,e.currentTarget,{width:V,height:ee});if(t<te||t>ne||a<ae||a>se)return void me();const s=x(re,t);he(s,a)},children:[t.jsx("g",{className:"rp-area-grid",children:ye.map(e=>t.jsx("line",{x1:te,x2:ne,y1:e,y2:e,stroke:T["hl-med"],strokeDasharray:"2 4",fill:"none"},e))}),t.jsx("defs",{children:b.map((e,a)=>t.jsx(f,{id:B+a,color:e.color},e.label))}),b.map((e,a)=>t.jsx(M,{points:ce[a],baseline:ie(Math.max(0,q[0])),color:e.color,id:B+a,strokeWidth:2},e.label)),null!==O&&t.jsx("path",{d:`M${re[O]},${ae}L${re[O]},${se}`,stroke:T.subtle,strokeDasharray:"3 3",fill:"none",pointerEvents:"none"}),!S&&t.jsxs(t.Fragment,{children:[t.jsx("g",{children:ge.map(({index:e,position:a})=>t.jsx("text",{x:Line truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{j as t,r as n}from"./vendor-react-64fcanlc.js";import{w as i,c as e,a as o}from"./array-C0VuvQyb.js";function r(t){this._context=t}function u(t){return new r(t)}function l(t){return t[0]}function s(t){return t[1]}function c(t,n){var r=e(!0),c=null,f=u,h=null,a=i(_);function _(i){var e,u,l,s=(i=o(i)).length,_=!1;for(null==c&&(h=f(l=a())),e=0;e<=s;++e)!(e<s&&r(u=i[e],e,i))===_&&((_=!_)?h.lineStart():h.lineEnd()),_&&h.point(+t(u,e,i),+n(u,e,i));if(l)return h=null,l+""||null}return t="function"==typeof t?t:void 0===t?l:e(t),n="function"==typeof n?n:void 0===n?s:e(n),_.x=function(n){return arguments.length?(t="function"==typeof n?n:e(+n),_):t},_.y=function(t){return arguments.length?(n="function"==typeof t?t:e(+t),_):n},_.defined=function(t){return arguments.length?(r="function"==typeof t?t:e(!!t),_):r},_.curve=function(t){return arguments.length?(f=t,null!=c&&(h=f(c)),_):f},_.context=function(t){return arguments.length?(null==t?c=h=null:h=f(c=t),_):c},_}function f(t){return t<0?-1:1}function h(t,n,i){var e=t._x1-t._x0,o=n-t._x1,r=(t._y1-t._y0)/(e||o<0&&-0),u=(i-t._y1)/(o||e<0&&-0),l=(r*o+u*e)/(e+o);return(f(r)+f(u))*Math.min(Math.abs(r),Math.abs(u),.5*Math.abs(l))||0}function a(t,n){var i=t._x1-t._x0;return i?(3*(t._y1-t._y0)/i-n)/2:n}function _(t,n,i){var e=t._x0,o=t._y0,r=t._x1,u=t._y1,l=(r-e)/3;t._context.bezierCurveTo(e+l,o+l*n,r-l,u-l*i,r,u)}function p(t){this._context=t}function y(t){return new p(t)}function x({id:n,color:i}){return t.jsxs("linearGradient",{id:n,x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{offset:"0%",stopColor:i,stopOpacity:.35}),t.jsx("stop",{offset:"100%",stopColor:i,stopOpacity:.03})]})}r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}},p.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:_(this,this._t0,a(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var i=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,_(this,a(this,i=h(this,t,n)),i);break;default:_(this,this._t0,i=h(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=i}}},Object.create(p.prototype).point=function(t,n){p.prototype.point.call(this,n,t)};const d=n.memo(function({points:n,baseline:r,color:f,id:h,strokeWidth:a}){if(1===n.length){const i=n[0];return i?t.jsx("circle",{cx:i.x,cy:i.y,r:3,stroke:f,strokeWidth:a,fill:`url(#${h})`,fillOpacity:.6}):null}const _=t=>null!==t&&Number.isFinite(t.x)&&Number.isFinite(t.y),p=c().defined(_).x(t=>t.x).y(t=>t.y).curve(y).digits(3),x=function(t,n,r){var f=null,h=e(!0),a=null,_=u,p=null,y=i(x);function x(i){var e,u,l,s,c,x=(i=o(i)).length,d=!1,v=new Array(x),g=new Array(x);for(null==a&&(p=_(c=y())),e=0;e<=x;++e){if(!(e<x&&h(s=i[e],e,i))===d)if(d=!d)u=e,p.areaStart(),p.lineStart();else{for(p.lineEnd(),p.lineStart(),l=e-1;l>=u;--l)p.point(v[l],g[l]);p.lineEnd(),p.areaEnd()}d&&(v[e]=+t(s,e,i),g[e]=+n(s,e,i),p.point(f?+f(s,e,i):v[e],r?+r(s,e,i):g[e]))}if(c)return p=null,c+""||null}function d(){return c().defined(h).curve(_).context(a)}return t="function"==typeof t?t:void 0===t?l:e(+t),n="function"==typeof n?n:e(void 0===n?0:+n),r="function"==typeof r?r:void 0===r?s:e(+r),x.x=function(n){return arguments.length?(t="function"==typeof n?n:e(+n),f=null,x):t},x.x0=function(n){return arguments.length?(t="function"==typeof n?n:e(+n),x):t},x.x1=function(t){return arguments.length?(f=null==t?null:"function"==typeof t?t:e(+t),x):f},x.y=function(t){return arguments.length?(n="function"==typeof t?t:e(+t),r=null,x):n},x.y0=function(t){return arguments.length?(n="function"==typeof t?t:e(+t),x):n},x.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:e(+t),x):r},x.lineX0=x.lineY0=function(){return d().x(t).y(n)},x.lineY1=function(){return d().x(t).y(r)},x.lineX1=function(){return d().x(f).y(n)},x.defined=function(t){return arguments.length?(h="function"==typeof t?t:e(!!t),x):h},x.curve=function(t){return arguments.length?(_=t,null!=a&&(p=_(a)),x):_},x.context=function(t){return arguments.length?(null==t?a=p=null:p=_(a=t),x):a},x}().defined(_).x(t=>t.x).y0(r).y1(t=>t.y).curve(y).digits(3);return t.jsxs("g",{children:[t.jsx("path",{d:x(n)??void 0,stroke:"none",fill:`url(#${h})`,fillOpacity:.6}),t.jsx("path",{className:"rLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{ez as e,g4 as t,cC as i,fj as a,cP as s,g5 as l,g6 as n,em as r,en as o,ep as d,eP as c,cL as u,ey as m,eo as f,cK as v,cQ as p,cR as g,cS as b,c$ as h,d0 as R,d1 as I,d2 as M,d3 as P,cU as y,cD as S,cV as C,aD as V}from"./index-HxEUeoab.js";import{r as x,$ as D}from"./vendor-react-64fcanlc.js";function $(t,i){const a=x.useRef(!0),s=x.useRef(null);let l=e(t);x.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]),x.useEffect(()=>{let e=s.current;a.current?a.current=!1:e&&!i.some((t,i)=>!Object.is(t,e[i]))||l(),s.current=i},i)}function E(e,a,s){let{labelProps:l,inputProps:n,descriptionProps:r,errorMessageProps:o,isSelected:d,isPressed:c,isDisabled:u,isReadOnly:m,isInvalid:f,validationErrors:v,validationDetails:p}=t(e,a,s),{isIndeterminate:g}=e;return x.useEffect(()=>{s.current&&(s.current.indeterminate=!!g)}),{labelProps:i(l,x.useMemo(()=>({onMouseDown:e=>e.preventDefault()}),[])),inputProps:n,descriptionProps:r,errorMessageProps:o,isSelected:d,isPressed:c,isDisabled:u,isReadOnly:m,isInvalid:f,validationErrors:v,validationDetails:p}}const B=new WeakMap;var O;function k(e,t){let{getRowText:i=e=>t.collection.getTextValue?.(e)??t.collection.getItem(e)?.textValue}=e,a=o((s=O)&&s.__esModule?s.default:s,"@react-aria/grid");var s;let l=t.selectionManager.rawSelection,n=x.useRef(l),r=x.useCallback(()=>{if(!t.selectionManager.isFocused||l===n.current)return void(n.current=l);let e=F(l,n.current),s=F(n.current,l),r="replace"===t.selectionManager.selectionBehavior,o=[];if(1===t.selectionManager.selectedKeys.size&&r){let e=t.selectionManager.selectedKeys.keys().next().value;if(null!=e&&t.collection.getItem(e)){let t=i(e);t&&o.push(a.format("selectedItem",{item:t}))}}else if(1===e.size&&0===s.size){let t=e.keys().next().value;if(null!=t){let e=i(t);e&&o.push(a.format("selectedItem",{item:e}))}}else if(1===s.size&&0===e.size){let e=s.keys().next().value;if(null!=e&&t.collection.getItem(e)){let t=i(e);t&&o.push(a.format("deselectedItem",{item:t}))}}"multiple"===t.selectionManager.selectionMode&&(0===o.length||"all"===l||l.size>1||"all"===n.current||n.current?.size>1)&&o.push("all"===l?a.format("selectedAll"):a.format("selectedCount",{count:l.size})),o.length>0&&d(o.join(" ")),n.current=l},[l,t.selectionManager.selectedKeys,t.selectionManager.isFocused,t.selectionManager.selectionBehavior,t.selectionManager.selectionMode,t.collection,i,a]);$(()=>{if(!t.selectionManager.isFocused){let e=requestAnimationFrame(r);return()=>cancelAnimationFrame(e)}r()},[l,t.selectionManager.isFocused])}function F(e,t){let i=new Set;if("all"===e||"all"===t)return i;for(let a of e.keys())t.has(a)||i.add(a);return i}function w(e,t){let i=t?.isDisabled,[a,s]=x.useState(!1);return c(()=>{if(e?.current&&!i){let t=()=>{if(e.current){let t=u(e.current,{tabbable:!0});s(!!t.nextNode())}};t();let i=new MutationObserver(t);return i.observe(e.current,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["tabIndex","disabled"]}),()=>{i.disconnect()}}}),!i&&a}function T(e){let t=o((i=O)&&i.__esModule?i.default:i,"@react-aria/grid");var i;let a=m(),s=("pointer"===a||"virtual"===a||null==a)&&"undefined"!=typeof window&&"ontouchstart"in window,l=x.useMemo(()=>{let i,a=e.selectionManager.selectionMode,l=e.selectionManager.selectionBehavior;return s&&(i=t.format("longPressToSelect")),"replace"===l&&"none"!==a&&e.hasItemActions?i:void 0},[e.selectionManager.selectionMode,e.selectionManager.selectionBehavior,e.hasItemActions,t,s]);return f(l)}function z(e,t){let{key:i}=e,a=t.selectionManager,s=v(),l=!t.selectionManager.canSelectItem(i),n=t.selectionManager.isSelected(i);var r;return{checkboxProps:{id:s,"aria-label":o((r=O)&&r.__esModule?r.default:r,"@react-aria/grid").format("select"),isSelected:n,isDisabled:l,onChange:()=>a.toggleSelection(i)}}}O={"ar-AE":r,"bg-BG":r,"cs-CZ":r,"da-DK":r,"de-DE":r,"el-GR":r,"en-US":{deselectedItem:e=>`${e.item} not selected.`,select:"Select",selectedCount:(e,t)=>`${t.plural(e.count,{"=0":"No items selected",one:()=>`${t.number(e.count)} item selected`,other:()=>`${t.number(e.count)} items selected`})}.`,selectedAll:"All items selected.",selectedItem:e=>`${e.item} selected.`,longPressToSelect:"Long press to enter selection mode."},"es-ES":r,"et-EE":r,"fi-FI":r,"fr-FR":r,"he-IL":r,"hr-HR":r,"hu-HU":r,"it-IT":r,"ja-JP":r,"ko-KR":r,"lt-LT":r,"lv-LV":r,"nb-NO":r,"nl-NL":r,"pl-PL":r,"pt-BR":r,"pt-PT":r,"ro-RO":r,"ru-RU":r,"sk-SK":r,"sl-SI":r,"sr-SP":r,"sv-SE":r,"tr-TR":r,"uk-UA":r,"zh-CN":{deselectedItem:e=>`未选择 ${e.item}。`,longPressToSelect:"长按以进入选择模式。",select:"选择",selectedAll:"已选择所有项目。",selectedCount:(e,t)=>`${t.plural(e.count,{"=0":"未选择项目",one:()=>`已选择 ${t.number(e.count)} 个项目`,other:()=>`已选择 ${t.number(e.count)} 个项目`})}。`,selectedItem:e=>`已选择 ${e.item}。`},"zh-TW":{deselectedItem:e=>`未選取「${e.item}」。`,longPressToSelect:"長按以進入選擇模式。",select:"選取",selectedAll:"已選取所有項目。",selectedCount:(e,t)=>Line truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as r}from"./vendor-react-64fcanlc.js";import{bN as t,gr as o,bM as n,fl as a,bq as c,u as s,df as i,B as l,fr as d,ft as p}from"./index-HxEUeoab.js";import{S as m,a as u,E as f,C as g,b,l as v,c as x,h,d as y,r as k,e as w,f as C,g as j,i as R,j as A,s as E,k as L,t as M,m as N,n as F,o as O,p as S,q as $,u as q,v as B,w as D,x as I,y as T,z as H,D as K,R as V,A as z,B as G,F as U,G as W,H as P,I as J,J as _,K as Q,L as X}from"./vendor-editor-BRV-W12m.js";import{d as Y,s as Z}from"./daeTokens-BVtuNnWZ.js";import{s as ee}from"./nodes-6sIn2I0s.js";import{M as re}from"./AppearanceControls-sRy1p156.js";import{A as te,n as oe}from"./logs-C4GIy4tX.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./index-DUM-iwa2.js";import"./ItemText-DOD_75iR.js";import"./Select-D7_6MaHd.js";const ne=m.define({name:"dae",languageData:{commentTokens:{line:"#"},closeBrackets:{brackets:["(","{","'",'"']}},startState:Z,token:Y}),ae=["global","subscription","node","group","dns","routing"].map(e=>({label:e,type:"keyword"})),ce=n.map(e=>({label:e,type:"property",apply:e+": "})),se=["domain","dip","sip","dport","sport","l4proto","ipversion","pname","mac","dscp","qname","qtype","upstream"].map(e=>({label:e,type:"function",apply:e+"("})),ie=["geosite","geoip","suffix","full","keyword","regex"].map(e=>({label:e,type:"constant",apply:e+":"})),le=o.map(e=>({label:e,type:"constant"})),de=t.map(e=>({label:e,type:"keyword"})),pe=[{label:"fallback",type:"keyword",apply:"fallback: "},{label:"include",type:"keyword",apply:"include "}];function me(e){return u({override:[r=>function(e,r){const t=e.matchBefore(/[\w.-]*/);if(!t)return null;const o=e.state.doc.lineAt(e.pos),n=o.text.slice(0,e.pos-o.from),a=/->\s*[\w.-]*$/.test(n)||/^\s*fallback:\s*[\w.-]*$/.test(n);if(t.from===t.to&&!e.explicit&&!a)return null;const c=e.state.doc.sliceString(0,e.pos),{blocks:s,tokens:i}=ee(c),l=i.at(-1);if(l?.to===e.pos&&("quoted"===l.kind||"comment"===l.kind))return null;const d=s.find(r=>r.close===e.pos)?.name;let p;if(a)p=[...r().map(e=>({label:e.name,apply:e.written,type:"variable"})),...de];else if(/\b(domain|dip|sip|qname)\(\s*[\w.-]*$/.test(n))p=ie;else if(void 0===d)p=ae.map(e=>({...e,apply:(r,t,o,n)=>{const a=e.label+" {\n \n}";r.dispatch({changes:{from:o,to:n,insert:a},selection:{anchor:o+e.label.length+4}})}}));else if("routing"===d||"dns"===d)p=[...se,...pe];else if("global"===d)p=ce;else{if("group"!==d)return null;p=/\bpolicy\s*:\s*[\w.-]*$/.test(n)?le:[...le.map(e=>({...e,apply:"policy: "+e.label})),{label:"filter",type:"property",apply:"filter: "}]}return{from:t.from,options:p,validFor:/^[\w.-]*$/}}(r,e)]})}function ue(e){let r=!1;const t=r=>(r.state.readOnly&&e(),!1);return f.domEventHandlers({keydown:(e,r)=>function(e){return"Backspace"===e.key||"Delete"===e.key||"Enter"===e.key||1===[...e.key].length&&!e.ctrlKey&&!e.metaKey}(e)&&t(r),paste:(e,r)=>t(r),cut:(e,r)=>t(r),pointerdown:e=>(r="touch"===e.pointerType,!1),click:(e,o)=>r&&t(o)})}const fe=[["Completions","cm.completions"],["Find","cm.find"],["Replace","cm.replace"],["next","cm.next"],["previous","cm.previous"],["all","cm.all"],["match case","cm.matchCase"],["regexp","cm.regexp"],["by word","cm.byWord"],["replace","cm.replaceOne"],["replace all","cm.replaceAll"],["close","ui.close"],["Go to line","cm.gotoLine"],["go","cm.go"],["current match","cm.currentMatch"],["replaced $ matches","cm.replacedMatches"],["replaced match on line $","cm.replacedOnLine"],["on line","cm.onLine"],["Selection deleted","cm.selectionDeleted"],["Control character","cm.controlCharacter"]],ge=e=>b.phrases.of(Object.fromEntries(fe.map(([r,t])=>[r,e(t)]))),be=f.theme({"&":{backgroundColor:"var(--rp-base)",color:"var(--rp-text)",border:"1px solid var(--rp-hl-high)",borderRadius:"var(--rp-r-md)",fontSize:"var(--rp-text-sm)"},"&.cm-focused":{outline:"none",borderColor:"var(--rp-text)"},".cm-scroller":{fontFamily:"var(--rp-font-mono)",lineHeight:"var(--rp-line-body)",fontVariantLigatures:"none",borderRadius:"calc(var(--rp-r-md) - 1px)"},".cm-content":{padding:"var(--rp-space-2) 0",caretColor:"var(--rp-text)"},".cm-line":{padding:"0 var(--rp-space-3)"},".cm-gutters":{backgroundColor:"var(--rp-base)",color:"var(--rp-muted)",border:"none"},".cm-lineNumbers .cm-gutterElement":{padding:"0 var(--rp-space-2) 0 var(--rp-space-3)",minWidth:"40px"},".cm-activeLine, .cm-focusLine":{backgroundColor:"color-mix(in srgb, var(--rp-hl-med) 60%, transparent)"},".cm-activeLineGutter":{backgroundColor:"transparent",color:"var(--rp-text)"},".cm-selectionBackground, &.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--rp-hl-high)"},".cm-cursor":{borderLeftColor:"var(--rp-text)"},".cm-matchingBracket":{backgroundColor:"color-mix(in srgb, var(--rp-accent) 20%, transparent)",outline:"none"},".cm-selectionMatch":{backgroundColor:"color-mix(in srgb, var(--rp-notice) 25%, transparent)"},".cm-gutter-lint":{width:"12px"},".cm-gutter-lint .cm-gutterElement":{padding:"0"},".cm-lint-marker":{width:"8px",height:"8px",marginLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as s,j as e}from"./vendor-react-64fcanlc.js";import{$ as a}from"./Checkbox-CJt7u9-e.js";import{C as r}from"./ItemText-DOD_75iR.js";import{da as i,I as l,cq as n,ch as c,B as d}from"./index-HxEUeoab.js";function o({label:l,description:n,isSelected:c,onChange:d,isDisabled:o}){const t=s.useId(),h=s.useId(),x=i({isDisabled:o});return e.jsxs(a,{className:"rp-radio rp-checkbox",isSelected:c,onChange:d,isDisabled:x.isDisabled,"aria-labelledby":t,"aria-describedby":n?h:void 0,children:[e.jsx("span",{className:"rp-checkbox-mark",children:e.jsx(r,{})}),e.jsxs("span",{className:"rp-radio-text",children:[e.jsx("span",{id:t,children:l}),n&&e.jsx("span",{id:h,className:"rp-note",children:n})]})]})}function t(s){return e.jsx(l,{...s,children:e.jsx("path",{fill:"currentColor",d:"M17.78 1.757C16.51.716 14.555.858 13.33 2.08L3.079 12.334c-.32.32-.559.717-.69 1.15l-1.384 4.584c-.08.265-.007.552.188.747.142.143.334.22.53.22q.11 0 .217-.032l4.582-1.384c.434-.13.832-.368 1.151-.688L18.028 6.575c.648-.647.993-1.545.948-2.46s-.482-1.775-1.195-2.358M2.846 17.163l.98-3.246q.042-.135.113-.257l2.41 2.409q-.123.07-.259.114zM16.966 5.516l-9.525 9.526-2.475-2.476 9.425-9.425c.386-.387.896-.586 1.39-.586.38 0 .752.119 1.05.362.392.321.621.772.646 1.272.025.494-.161.977-.51 1.327"})})}function h({children:s}){return e.jsx("div",{className:"rp-toolbar",children:s})}function x({children:s,negate:a,onNegate:r,negateLabel:i,removeLabel:l,onRemove:o,isDisabled:t,removeDisabled:x}){return e.jsxs(n,{children:[s,e.jsxs(h,{children:[e.jsx(c,{isDisabled:t,isSelected:a,onChange:r,children:i}),e.jsx("span",{className:"rp-grow"}),e.jsx(d,{small:!0,isDisabled:t||x,onPress:o,children:l})]})]})}export{o as C,t as E,x as a,h as b};
|
||||
@@ -1,2 +0,0 @@
|
||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CodeEditor-DdrUcw42.js","./vendor-react-64fcanlc.js","./_commonjsHelpers-CXUWDbkB.js","./index-HxEUeoab.js","./index-CcbWXWDN.css","./vendor-editor-BRV-W12m.js","./index-DUM-iwa2.js","./daeTokens-BVtuNnWZ.js","./nodes-6sIn2I0s.js","./AppearanceControls-sRy1p156.js","./ItemText-DOD_75iR.js","./logs-C4GIy4tX.js","./Select-D7_6MaHd.js"])))=>i.map(i=>d[i]);
|
||||
import{r as e,j as n}from"./vendor-react-64fcanlc.js";import{h as i,u as s,al as a,l as r,q as t,r as o,x as l,c4 as c,w as d,c6 as u,Y as g,A as f,aK as p,c2 as m,cw as h,dk as b,dl as x,a1 as v,a0 as j,a9 as y,bO as w,z as k,cv as N,dm as S,t as D,aM as C,aV as T,B as P,aA as O,E as _,bk as R,ax as E,af as M,b5 as A,cq as L,aL as F,C as I,m as H,dn as q,bF as $,bG as K,df as V,a as W,b as U,v as B,aN as z,cs as G,p as J,aD as Q,aG as Y,d9 as X,_ as Z,av as ee,T as ne}from"./index-HxEUeoab.js";import{a as ie,u as se,w as ae,e as re,c as te,H as oe,I as le,K as ce,D as de,L as ue,J as ge,S as fe}from"./logs-C4GIy4tX.js";import{T as pe}from"./Tabs-DT6MQhIo.js";import{T as me}from"./Toolbar-BTFtduwD.js";import{aL as he,a2 as be,aa as xe,aM as ve,y as je,aN as ye,a8 as we,D as ke}from"./activity-yZTrGy-J.js";import{s as Ne,N as Se,O as De,r as Ce,ag as Te,ah as Pe,ai as Oe,aj as _e,K as Re,ak as Ee}from"./nodes-6sIn2I0s.js";import{s as Me,c as Ae,r as Le,a as Fe,b as Ie,d as He,e as qe,f as $e,g as Ke,h as Ve,v as We,i as Ue,j as Be,k as ze,l as Ge,m as Je,n as Qe,o as Ye,w as Xe}from"./nav-BMNMQSWb.js";import{u as Ze,c as en}from"./flows-dBNkBg79.js";import{d as nn}from"./files-Dt8K7QfP.js";import{D as sn}from"./Table-yWn0d3vL.js";import{T as an}from"./TimeCell-BIqfL3y_.js";import{L as rn}from"./AppearanceControls-sRy1p156.js";import{N as tn,t as on}from"./NumberField-q4-QmTAT.js";import{A as ln}from"./AddCircle-C6Jc7GCc.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Select-D7_6MaHd.js";import"./ItemText-DOD_75iR.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";function cn(e,n,s,a="main"){if(!s.daeText)return[];const{blocks:r,tokens:t}=Ne(e),o=s.globalSettings;return r.flatMap(s=>{if(s.name===o?.name){const a=r.filter(e=>e.name===o.name).indexOf(s),l=Se(e,s,t);return l.filter(e=>1===l.filter(n=>n.name===e.name).length&&o.fields.some(n=>n.key===e.name)).map(r=>({kind:s.name,from:r.from,to:r.to,label:r.name,line:e.slice(0,r.from).split("\n").length,href:i("config",{tab:"global",source:n,section:String(a),field:r.name})}))}const l=Me[s.name];return"subscription"===s.name?"main"!==a?[]:De(e).filter(e=>e.from>s.open&&e.to<=s.close).map(e=>({kind:s.name,from:e.from,to:e.to,label:e.tag,line:e.line,href:i("nodes",{editSubscriptionTag:e.tag})})):"dns"===s.name?s.children.filter(e=>"routing"===e.name).flatMap(e=>e.children.filter(e=>"request"===e.name||"response"===e.name).map(e=>({kind:s.name,from:e.from,to:e.to,label:e.name,line:e.line+1,href:l}))):l?[{kind:s.name,from:s.from,to:s.to,label:s.name,line:s.line+1,href:l}]:[]})}const dn=()=>{};const un=new Map;function gn({go:n,query:i}){const m=s(),h=a[r()],b=t(),x=b.data?.resources,v=se(o(x,"config",{whileLoading:!0})),j=function(n){const i=s(),a=ie(n),r=e.useMemo(()=>{const e=xe(a.error);return e?e.diagnostics??[]:null},[a.error]);return e.useEffect(()=>{if(a.error)if(r){const e=ve(r);f("negative",e?i("config.writeRestart",{n:e}):i("ui.writeInvalid",{n:r.filter(e=>"error"===e.level).length}))}else p(a.error,i,i("ui.writeFailed"))},[a.error,r,i]),{...a,diagnostics:r}}(v.refetch),y=e.useMemo(()=>new URLSearchParams(i),[i]),w=e.useMemo(()=>v.data?.sources??[],[v.data]),k=w.find(e=>"main"===e.kind)??null,N=w.find(e=>e.id===y.get("source"))??w[0]??null,S=N?.id??null,D=(e,s)=>n("config",d(i,{tab:"source",source:e,line:null===s?null:String(s)})),C=Number(y.get("line"))||null,T=v.data?.diagnostics??[],P=e.useMemo(()=>{const e=v.data?.diagnostics??[];return{error:e.filter(e=>"error"===e.level).length,warning:e.filter(e=>"warning"===e.level).length}},[v.data]),O=o(x,"config_validate",{whileLoading:!1})&&(x?.config_validate.modes??[]).includes("full"),_=!0===x?.config.writable,R=ae(w),E=l().data,M=e.useMemo(()=>re(E),[E]),A=Ae(!!M.globalSettings,b.data),L=N?Le(N,_,R(N),M,m):null,F=!!N&&!L,[I,H]=e.useState(un),[q,$]=e.useState(null),K=q??P.error,V=y.has("source")||void 0===k?.content?"source":"modules",W=c("validate"===y.get("tab")?d(i,{tab:"source"}):i,A.map(e=>e.id),V),U=N?{source:N,sources:w,open:D,diagnostics:T,canValidate:O&&("main"===N.kind||"include"===N.kind),canWrite:F,readOnly:L,isComplete:R,editor:j,focusLine:C,generation:v.data?.generation_id??"",focusDiagnostics:"validate"===y.get("tab"),diagnosticsChoice:I.get(N.id)??null,chooseDiagnostics:e=>H(n=>new Map(n).set(N.id,e)),reportErrors:$}:null,B=!0===x?.config.create&&!0===x.config.writable?{sources:w,refetch:v.refetch,open:e=>D(e,null)}:null;return{error:b.error??v.error,reload:()=>{b.refetch(),v.refetch()},loading:v.loading&&!v.data,ready:!!v.data,tabsReady:!!v.data||A.some(e=>"history"===e.id),metadata:v.data?Ie(v.data.revision,m):[],redacted:!!v.data?.secrets_redacted,tabs:A.map(e=>({id:e.id,label:"source"===e.id&&K?m("ui.aside",{text:m(e.titleKey),note:g(K,h)}):m(e.titleKey)})),tab:W,setTab:e=>n("config",d(u(i,e,null),{field:null})),selectedId:S??"",select:e=>n("config",d(i,{source:e,line:null})),sourceProps:U,newSourceProps:B,modulesProps:v.data?{config:v.data}:null,sourceModel:N?{...FeLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as n}from"./vendor-react-64fcanlc.js";import{O as t}from"./OutboundTag-CO8Ndxdr.js";import{aU as o,u as s,al as l,l as a,a0 as i,o as r,aB as c,C as u,E as d,Y as p,a8 as m,s as b,M as h,bW as g,ax as f,N as w,T as v,bX as y,w as x,bY as j,U as _,bZ as k,b_ as C,Z as S,a1 as A,q as L,r as N,O as T,b$ as M,a6 as R,c0 as O,ah as P,G as F,c1 as U,b4 as W,c2 as q,bS as D,c3 as E,c4 as I,c5 as V,K as H,am as Q,c6 as B,A as K,c7 as G,aV as J,b9 as Y,c8 as Z,aM as X,c9 as z,bG as $,B as ee,ca as ne,bx as te,av as oe,p as se}from"./index-HxEUeoab.js";import{R as le,u as ae,i as ie,o as re,h as ce,c as ue,S as de,L as pe,n as me,K as be}from"./logs-C4GIy4tX.js";import{C as he}from"./AppearanceControls-sRy1p156.js";import{T as ge}from"./Tabs-DT6MQhIo.js";import{T as fe}from"./Toolbar-BTFtduwD.js";import{a as we,D as ve,U as ye,F as xe,S as je,c as _e,B as ke,L as Ce,t as Se,d as Ae,f as Le,g as Ne,p as Te,o as Me,k as Re,h as Oe}from"./activity-yZTrGy-J.js";import{S as Pe}from"./SearchSelect-BcScGUbQ.js";import{D as Fe}from"./Table-yWn0d3vL.js";import{T as Ue}from"./TimeCell-BIqfL3y_.js";import{Q as We,u as qe,R as De}from"./useQuickRule-DUEi6geL.js";import{u as Ee}from"./outbounds-Bbb6kdae.js";import{c as Ie,d as Ve,e as He}from"./files-Dt8K7QfP.js";import{w as Qe}from"./labels-D8xxfRTQ.js";import{u as Be}from"./flows-dBNkBg79.js";import{r as Ke}from"./rule-Bl9YOsFn.js";import{c as Ge}from"./nav-BO8viH9G.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Tag-SxASl3TF.js";import"./Select-D7_6MaHd.js";import"./ItemText-DOD_75iR.js";import"./nodes-6sIn2I0s.js";import"./Checkbox-CJt7u9-e.js";import"./SearchList-LjCruZYP.js";import"./Virtualizer-DMIKG2CD.js";import"./DaeCode-DEjXqvav.js";import"./daeTokens-BVtuNnWZ.js";import"./AddCircle-C6Jc7GCc.js";const Je=[0,2,3,1,4,5,6,7],Ye=e.memo(function({records:t,outbounds:p,latency:m,latencyError:b,retryLatency:h,truncated:g,uncounted:f,onSelect:w}){const v=s(),y=we(),x=l[a()],j=e.useCallback(e=>i(e,x),[x]),_=e.useMemo(()=>function(e,n){const t=new Map;let s=0;for(const o of e){if(null===o.upload_bytes||null===o.download_bytes){s++;continue}const e={id:o.id,up:Number(o.upload_bytes),down:Number(o.download_bytes),name:o.domain||o.dst||o.id},n=t.get(o.outbound);n?n.push(e):t.set(o.outbound,[e])}const l=[...t].map(([e,n])=>({outbound:e,points:n})).sort((e,t)=>o(n)(e.outbound??"",t.outbound??""));let a,i=-1n;for(const o of e){if(null===o.upload_bytes||null===o.download_bytes)continue;const e=BigInt(o.upload_bytes)+BigInt(o.download_bytes);e>i&&(i=e,a={id:o.id,up:Number(o.upload_bytes),down:Number(o.download_bytes),name:o.domain||o.dst||o.id,outbound:o.outbound})}return{series:l,unknown:s,heaviest:a,placed:e.length-s}}(t,x),[t,x]),k=e.useMemo(()=>{const e=p.filter(e=>"block"!==e);return _.series.map(n=>{return{id:n.outbound??"",label:r(n.outbound,v),color:(t=n.outbound,"block"===t?y.negative:y.cat[Je[Math.max(0,e.indexOf(t))%Je.length]]),points:n.points.map(e=>({id:e.id,x:e.up,y:e.down,name:e.name,detail:v("conn.chart.point",{download:j(e.down),upload:j(e.up)})}))};var t})},[_,p,y,v,j]),C=_.heaviest?[{label:v("conn.chart.busiest"),icon:n.jsx(c,{}),tint:"c3",value:_.heaviest.name,caption:r(_.heaviest.outbound,v)},{label:v("ui.download"),value:j(_.heaviest.down),icon:n.jsx(ve,{}),tint:"c1"},{label:v("ui.upload"),value:j(_.heaviest.up),icon:n.jsx(ye,{}),tint:"c4"}]:[],S=_.unknown?v("conn.chart.sampleUnknown",{n:t.length,unknown:_.unknown}):v("conn.chart.sample",{n:t.length});return n.jsxs("div",{className:"rp-chart-page",children:[n.jsx(xe,{facts:C,lead:!0}),n.jsxs(u,{title:v("conn.chart.title"),help:f?{title:v("conn.chart.title"),text:v("ui.trafficUncounted")}:void 0,note:S,children:[g&&n.jsx("p",{className:"rp-note",children:v("conn.truncated")}),_.placed>0&&n.jsxs(n.Fragment,{children:[n.jsx(je,{label:v("conn.chart.title"),series:k,fmt:j,onSelect:w,regions:{above:v("conn.chart.moreDown"),below:v("conn.chart.moreUp")}}),n.jsx(_e,{series:k}),n.jsx("p",{className:"rp-note",children:v("conn.chart.hint")})]})]}),m?n.jsx(Ze,{latency:m}):b&&n.jsx(u,{title:v("ui.nodeLatency"),children:n.jsx(d,{error:b,onRetry:h})})]})});function Ze({latency:e}){const t=s(),o=we(),i=e=>m(e,t),r=l[a()],c=n=>!e.chains||n?o.cat[0]:o.muted;return n.jsx(u,{title:t("ui.nodeLatency"),note:t("conn.latency.sample",{n:e.samples.length,missing:e.missing}),children:e.samples.length?n.jsxs(n.Fragment,{children:[n.jsx("p",{className:"rp-note",children:t("conn.latency.percentiles",{p50:i(e.p50),p90:i(e.p90)})}),null!==e.weightedP50&&n.jsx("p",{className:"rp-note",children:e.unplaced?t("conn.latency.weightedUnplaced",{p50:i(e.weightedP50),n:e.unplaced}):t("conn.latency.weighted",{p50:i(e.weightedP50)})}),n.jsx(ke,{label:t("ui.nodeLatency"),points:e.samples.map(e=>({id:e.node,nodeName:!0,value:e.value,color:c(e.connections>0),lines:[e.name,i(e.value),...e.connections?[t("conn.chart.sample",{n:e.connections})]:[]]})),fmt:i}),e.chains&&n.jsxs("div",{className:"rp-legend",children:[n.jsx(Ce,{swatch:c(!0),labeLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as c,j as r}from"./vendor-react-64fcanlc.js";import{u as s,dn as o,A as l,I as t}from"./index-HxEUeoab.js";function a(){const r=s();return c.useCallback(async c=>{const s=await o(c);l(s?"positive":"negative",r(s?"ui.recordCopied":"ui.recordCopyFailed"))},[r])}function e(c){return r.jsxs(t,{...c,children:[r.jsx("path",{fill:"currentColor",d:"m11.75,18h-7.5c-1.24023,0-2.25-1.00977-2.25-2.25v-7.5c0-1.24023,1.00977-2.25,2.25-2.25.41406,0,.75.33594.75.75s-.33594.75-.75.75c-.41309,0-.75.33691-.75.75v7.5c0,.41309.33691.75.75.75h7.5c.41309,0,.75-.33691.75-.75,0-.41406.33594-.75.75-.75s.75.33594.75.75c0,1.24023-1.00977,2.25-2.25,2.25Z"}),r.jsx("path",{fill:"currentColor",d:"m6.75,5c-.41406,0-.75-.33594-.75-.75,0-1.24023,1.00977-2.25,2.25-2.25.41406,0,.75.33594.75.75s-.33594.75-.75.75c-.41309,0-.75.33691-.75.75,0,.41406-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m13,3.5h-2c-.41406,0-.75-.33594-.75-.75s.33594-.75.75-.75h2c.41406,0,.75.33594.75.75s-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m13,14h-2c-.41406,0-.75-.33594-.75-.75s.33594-.75.75-.75h2c.41406,0,.75.33594.75.75s-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m15.75,14c-.41406,0-.75-.33594-.75-.75s.33594-.75.75-.75c.41309,0,.75-.33691.75-.75,0-.41406.33594-.75.75-.75s.75.33594.75.75c0,1.24023-1.00977,2.25-2.25,2.25Z"}),r.jsx("path",{fill:"currentColor",d:"m17.25,5c-.41406,0-.75-.33594-.75-.75,0-.41309-.33691-.75-.75-.75-.41406,0-.75-.33594-.75-.75s.33594-.75.75-.75c1.24023,0,2.25,1.00977,2.25,2.25,0,.41406-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m17.25,9.75c-.41406,0-.75-.33594-.75-.75v-2c0-.41406.33594-.75.75-.75s.75.33594.75.75v2c0,.41406-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m6.75,9.75c-.41406,0-.75-.33594-.75-.75v-2c0-.41406.33594-.75.75-.75s.75.33594.75.75v2c0,.41406-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m8.25,14c-1.24023,0-2.25-1.00977-2.25-2.25,0-.41406.33594-.75.75-.75s.75.33594.75.75c0,.41309.33691.75.75.75.41406,0,.75.33594.75.75s-.33594.75-.75.75Z"})]})}export{e as C,a as u};
|
||||
@@ -1 +0,0 @@
|
||||
import{ah as e,ak as l,U as r,u as a,T as s,p as n}from"./index-HxEUeoab.js";import{j as o}from"./vendor-react-64fcanlc.js";const t={userspace_tcp:"flow.userspaceTcp",userspace_udp:"flow.userspaceUdp",kernel_direct:"flow.kernelDirect",kernel_block:"flow.kernelBlock",dns_intercept:"flow.dnsIntercept",kernel_bypass:"flow.kernelBypass"},p={full:"flow.full",partial:"flow.partialVisibility",none:"ui.none"};function c(a,s,n){const o=Object.entries(a.coverage).filter(([,e])=>"full"!==e),c=e(a.dropped_records),i=c?s("flow.dropped",{n:c}):null;return o.length||i?{summary:o.length?s("flow.coverageSummary",{n:o.length}):null,detail:l(n,o.map(([e,l])=>s("ui.valuePair",{label:r(t,e,s),value:r(p,l,s)}))),dropped:i}:null}function i({view:e}){const l=a();return o.jsxs("div",{className:"rp-cluster",role:"group","aria-label":l("flow.coverage"),children:[e.summary&&o.jsx(s,{text:e.detail,children:o.jsx(n,{small:!0,tone:"warn",children:e.summary})}),e.dropped&&o.jsx(n,{small:!0,tone:"warn",children:e.dropped})]})}export{i as C,c};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e}from"./vendor-react-64fcanlc.js";import{t}from"./daeTokens-BVtuNnWZ.js";function a({text:a,as:r="span",className:s=""}){return e.createElement(r,{className:`rp-code ${s}`.trim()},t(a).map((t,a)=>t.type?e.createElement("span",{key:a,className:`rp-dae-${t.type}`},t.text):t.text))}export{a as D};
|
||||
@@ -1 +0,0 @@
|
||||
import{j as c}from"./vendor-react-64fcanlc.js";import{I as r}from"./index-HxEUeoab.js";function l(l){return c.jsxs(r,{...l,children:[c.jsx("path",{fill:"currentColor",d:"M8.249 15.021c-.4 0-.733-.317-.748-.72l-.25-6.5c-.017-.414.307-.763.72-.779H8c.4 0 .733.317.748.72l.25 6.5c.017.414-.307.763-.72.778zM11.751 15.021h-.03c-.413-.016-.737-.365-.72-.779l.25-6.5c.015-.403.348-.72.748-.72h.03c.413.016.737.365.72.779l-.25 6.5c-.015.403-.348.72-.748.72"}),c.jsx("path",{fill:"currentColor",d:"M17 4h-3.5v-.75C13.5 2.01 12.49 1 11.25 1h-2.5C7.51 1 6.5 2.01 6.5 3.25V4H3c-.414 0-.75.336-.75.75s.336.75.75.75h.52l.422 10.342C3.99 17.052 4.98 18 6.19 18h7.62c1.211 0 2.2-.948 2.248-2.158L16.48 5.5H17c.414 0 .75-.336.75-.75S17.414 4 17 4m-9-.75c0-.413.337-.75.75-.75h2.5c.413 0 .75.337.75.75V4H8zm6.56 12.531c-.017.404-.346.719-.75.719H6.19c-.404 0-.733-.315-.75-.719L5.02 5.5h9.96z"})]})}export{l as D};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as s}from"./vendor-react-64fcanlc.js";import{M as a,U as t,a8 as n,a1 as r,Y as l,Q as i,ah as d,aM as c,u as o,a9 as u,q as m,c2 as h,z as p,c4 as x,r as g,w as y,h as f,c6 as b,al as j,l as v,cb as w,bS as _,cc as N,b4 as S,c8 as T,A as q,c9 as C,aV as k,cd as M,bR as R,az as L,af as A,E as F,ce as E,bh as D,cf as P,C as W,S as O,ae as U,ay as H,T as B,bu as K,bF as I,cg as Q,bG as $,ch as z,B as J,ci as V,ax as G,p as X,av as Y,bx as Z,ca as ee}from"./index-HxEUeoab.js";import{D as se}from"./Delete-CR2AtZsd.js";import{s as ae,l as te,a as ne,m as re,C as le,F as ie,B as de,L as ce,W as oe,n as ue,q as me,D as he}from"./activity-yZTrGy-J.js";import{u as pe,q as xe,k as ge,s as ye,t as fe,S as be,L as je,K as ve,A as we}from"./logs-C4GIy4tX.js";import{T as _e}from"./Tabs-DT6MQhIo.js";import{T as Ne}from"./Toolbar-BTFtduwD.js";import{D as Se}from"./Table-yWn0d3vL.js";import{T as Te}from"./TimeCell-BIqfL3y_.js";import{c as qe,d as Ce,e as ke}from"./files-Dt8K7QfP.js";import{d as Me}from"./nav-CBqYxt5v.js";import{a as Re}from"./rule-Bl9YOsFn.js";import{J as Le,u as Ae}from"./nodes-6sIn2I0s.js";import{u as Fe,R as Ee,Q as De}from"./useQuickRule-DUEi6geL.js";import{L as Pe}from"./AppearanceControls-sRy1p156.js";/* empty css */import"./_commonjsHelpers-CXUWDbkB.js";import"./ItemText-DOD_75iR.js";import"./Select-D7_6MaHd.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";import"./DaeCode-DEjXqvav.js";import"./daeTokens-BVtuNnWZ.js";import"./AddCircle-C6Jc7GCc.js";import"./SearchSelect-BcScGUbQ.js";import"./SearchList-LjCruZYP.js";import"./flows-dBNkBg79.js";function We(e,s,t,n,r){return{domain:e,dip:null,sip:(r&&a(r))??null,outbound:null,matched:null,dns:{type:s,answers:Re(t),upstream:n,query:{name:e,type:s}}}}const Oe=(e,s,a)=>({domain:null,dip:e,sip:null,outbound:null,matched:null,dns:{type:a,answers:[e],upstream:null,query:{name:s,type:a}}}),Ue={forced:"dns.route.forced","dns.routing":"dns.route.rules",default:"dns.route.default"};function He(e,s){return{fields:[[s("ui.state"),e.status],[s("ui.upstream"),e.upstream??"—"],[s("dns.routeSource"),t(Ue,e.route.source,s)],[s("dns.routeRule"),e.route.rule??"—"],[s("ui.elapsed"),n(e.elapsed_ms,s)]],answers:(e.answers??[]).map(e=>s("dns.answer",{name:e.name,type:e.type,ttl:e.ttl,data:e.data})),cacheText:s(e.cached?"dns.hit":"dns.miss"),cacheTone:e.cached?void 0:"warn"}}function Be(e,s,a){return e?a instanceof c&&503===a.status?"unavailable":s?"ready":a?"error":"loading":"unlisted"}const Ke=[{id:"full",label:"rule.kind.domain"},{id:"suffix",label:"rule.kind.domainSuffix"},{id:"keyword",label:"rule.kind.domainKeyword"},{id:"regex",label:"dns.matchRegex"}],Ie=e=>e.trim().toLowerCase().replace(/\.$/,"");function Qe(e,s){if(!s.trim())return()=>!0;if("regex"===e){const e=function(e){try{return new RegExp(e,"iu")}catch{return null}}(s);return e&&(s=>e.test(Ie(s)))}if("keyword"===e){const e=s.trim().toLowerCase();return s=>Ie(s).includes(e)}const a=Ie(s),t="suffix"===e&&a.startsWith("."),n=t?a.slice(1):a;return n?"full"===e?e=>Ie(e)===n:e=>{const s=Ie(e);return s.endsWith("."+n)||!t&&s===n}:null}function $e({go:s,query:a}){const t=o(),n=u(),r=m(),l=e.useMemo(()=>new URLSearchParams(a),[a]),[i,d]=e.useState(l.get("domain")??""),[c,j]=e.useState(l.get("type")??"A"),[v,w]=e.useState(!1);h(l.get("domain"),e=>d(e??"")),h(l.get("type"),e=>j(e??"A"));const[_,N]=e.useState(null),{busy:S,error:T,run:q}=p({rethrow:!0}),C=r.data?.resources,k=e.useMemo(()=>function(e,s,a,t,n,r){const l=s?.dns_query.record_types??[],i="all"===a?l.length>0:l.includes(a);return{types:l,choices:[...l.map(e=>({id:e,label:e})),{id:"all",label:r("dns.allTypes")}],disabled:n||!s?.dns_query.available||!i||!t.trim(),reason:!s||n?null:s.dns_query.available?i?null:r("all"===a?"dns.noTypes":"dns.typeUnsupported"):r("dns.queryUnavailable"),showCache:!!s?.dns_cache.available,cards:e?.results.map(s=>({id:s.type,title:`${e.domain} ${s.type}`,...He(s,r),seed:We(e.domain,s.type,s.answers??[],s.upstream,null),answerSeeds:(s.answers??[]).map(a=>Re([a]).length?{address:a.data,seed:Oe(a.data,e.domain,s.type)}:null)}))??[],tabs:Me(s).map(e=>({id:e.id,label:r(e.titleKey)}))}}(_,C,c,i,!!S,t),[_,C,c,i,S,t]),M=k.tabs.map(e=>e.id),R=l.has("domain")||l.has("device"),L=M.includes("log")?R?"log":"stats":M.includes("query")?"query":M[0]??"query",A=x(a,M,L),F=g(C,"config",{whileLoading:!1}),E=pe("query"===A&&F&&g(C,"dns_query",{whileLoading:!1})),D=e.useMemo(()=>F?function(e,s){const a=[...new Set((e??[]).flatMap(e=>e.content?Le(e.content).map(Ae):[]))];return a.length?[{id:"",label:s("dns.upstreamAuto")},...a.map(e=>({id:e,label:e}))]:[]}(E.data?.sources,t):[],[F,E.data,t]),[P,W]=e.useState(""),O=D.some(e=>e.id===P)?P:"";E.data&&P&&!O&&W("");const U=async(e={domain:i,type:c})=>{try{await q("query",async s=>{const a=await xe(n.dnsQuery,e.domain.trim(),"all"===e.type?k.types:[e.type],C?.dns_query.limits?.max_types_per_request??1,s,v?"bypass":"normal",O||void 0);return s.aborted||N(a),a})Line truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as n,j as t}from"./vendor-react-64fcanlc.js";import{u as e,f as r}from"./index-HxEUeoab.js";import{aW as o,b4 as a,aZ as i,a$ as l}from"./activity-yZTrGy-J.js";import{w as u,c,a as s}from"./array-C0VuvQyb.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./AppearanceControls-sRy1p156.js";import"./ItemText-DOD_75iR.js";import"./logs-C4GIy4tX.js";import"./Select-D7_6MaHd.js";const f=Math.abs,h=Math.atan2,y=Math.cos,p=Math.max,d=Math.min,x=Math.sin,g=Math.sqrt,v=1e-12,m=Math.PI,M=m/2,A=2*m;function j(n){return n>=1?M:n<=-1?-M:Math.asin(n)}function w(n){return n.innerRadius}function b(n){return n.outerRadius}function P(n){return n.startAngle}function T(n){return n.endAngle}function R(n){return n&&n.padAngle}function L(n,t,e,r,o,a,i){var l=n-e,u=t-r,c=(i?a:-a)/g(l*l+u*u),s=c*u,f=-c*l,h=n+s,y=t+f,d=e+s,x=r+f,v=(h+d)/2,m=(y+x)/2,M=d-h,A=x-y,j=M*M+A*A,w=o-a,b=h*x-d*y,P=(A<0?-1:1)*g(p(0,w*w*j-b*b)),T=(b*A-M*P)/j,R=(-b*M-A*P)/j,L=(b*A+M*P)/j,$=(-b*M+A*P)/j,I=T-v,k=R-m,B=L-v,K=$-m;return I*I+k*k>B*B+K*K&&(T=L,R=$),{cx:T,cy:R,x01:-s,y01:-f,x11:T*(o/w-1),y11:R*(o/w-1)}}function $(){var n=w,t=b,e=c(0),r=null,o=P,a=T,i=R,l=null,s=u(p);function p(){var u,c,p,w=+n.apply(this,arguments),b=+t.apply(this,arguments),P=o.apply(this,arguments)-M,T=a.apply(this,arguments)-M,R=f(T-P),$=T>P;if(l||(l=u=s()),b<w&&(c=b,b=w,w=c),b>v)if(R>A-v)l.moveTo(b*y(P),b*x(P)),l.arc(0,0,b,P,T,!$),w>v&&(l.moveTo(w*y(T),w*x(T)),l.arc(0,0,w,T,P,$));else{var I,k,B=P,K=T,N=P,S=T,D=R,E=R,F=i.apply(this,arguments)/2,q=F>v&&(r?+r.apply(this,arguments):g(w*w+b*b)),C=d(f(b-w)/2,+e.apply(this,arguments)),H=C,V=C;if(q>v){var W=j(q/w*x(F)),Z=j(q/b*x(F));(D-=2*W)>v?(N+=W*=$?1:-1,S-=W):(D=0,N=S=(P+T)/2),(E-=2*Z)>v?(B+=Z*=$?1:-1,K-=Z):(E=0,B=K=(P+T)/2)}var _=b*y(B),z=b*x(B),G=w*y(S),J=w*x(S);if(C>v){var O,Q=b*y(K),U=b*x(K),X=w*y(N),Y=w*x(N);if(R<m)if(O=function(n,t,e,r,o,a,i,l){var u=e-n,c=r-t,s=i-o,f=l-a,h=f*u-s*c;if(!(h*h<v))return[n+(h=(s*(t-a)-f*(n-o))/h)*u,t+h*c]}(_,z,X,Y,Q,U,G,J)){var nn=_-O[0],tn=z-O[1],en=Q-O[0],rn=U-O[1],on=1/x(((p=(nn*en+tn*rn)/(g(nn*nn+tn*tn)*g(en*en+rn*rn)))>1?0:p<-1?m:Math.acos(p))/2),an=g(O[0]*O[0]+O[1]*O[1]);H=d(C,(w-an)/(on-1)),V=d(C,(b-an)/(on+1))}else H=V=0}E>v?V>v?(I=L(X,Y,_,z,b,V,$),k=L(Q,U,G,J,b,V,$),l.moveTo(I.cx+I.x01,I.cy+I.y01),V<C?l.arc(I.cx,I.cy,V,h(I.y01,I.x01),h(k.y01,k.x01),!$):(l.arc(I.cx,I.cy,V,h(I.y01,I.x01),h(I.y11,I.x11),!$),l.arc(0,0,b,h(I.cy+I.y11,I.cx+I.x11),h(k.cy+k.y11,k.cx+k.x11),!$),l.arc(k.cx,k.cy,V,h(k.y11,k.x11),h(k.y01,k.x01),!$))):(l.moveTo(_,z),l.arc(0,0,b,B,K,!$)):l.moveTo(_,z),w>v&&D>v?H>v?(I=L(G,J,Q,U,w,-H,$),k=L(_,z,X,Y,w,-H,$),l.lineTo(I.cx+I.x01,I.cy+I.y01),H<C?l.arc(I.cx,I.cy,H,h(I.y01,I.x01),h(k.y01,k.x01),!$):(l.arc(I.cx,I.cy,H,h(I.y01,I.x01),h(I.y11,I.x11),!$),l.arc(0,0,w,h(I.cy+I.y11,I.cx+I.x11),h(k.cy+k.y11,k.cx+k.x11),$),l.arc(k.cx,k.cy,H,h(k.y11,k.x11),h(k.y01,k.x01),!$))):l.arc(0,0,w,S,N,$):l.lineTo(G,J)}else l.moveTo(0,0);if(l.closePath(),u)return l=null,u+""||null}return p.centroid=function(){var e=(+n.apply(this,arguments)+ +t.apply(this,arguments))/2,r=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-m/2;return[y(r)*e,x(r)*e]},p.innerRadius=function(t){return arguments.length?(n="function"==typeof t?t:c(+t),p):n},p.outerRadius=function(n){return arguments.length?(t="function"==typeof n?n:c(+n),p):t},p.cornerRadius=function(n){return arguments.length?(e="function"==typeof n?n:c(+n),p):e},p.padRadius=function(n){return arguments.length?(r=null==n?null:"function"==typeof n?n:c(+n),p):r},p.startAngle=function(n){return arguments.length?(o="function"==typeof n?n:c(+n),p):o},p.endAngle=function(n){return arguments.length?(a="function"==typeof n?n:c(+n),p):a},p.padAngle=function(n){return arguments.length?(i="function"==typeof n?n:c(+n),p):i},p.context=function(n){return arguments.length?(l=null==n?null:n,p):l},p}function I(n,t){return t<n?-1:t>n?1:t>=n?0:NaN}function k(n){return n}function B({label:u,rows:f}){const h=e(),[y,p]=r(Math.round,120),{tip:d,showAt:x,hide:g}=o(),[v,m]=n.useState(null),M=f.filter(n=>null!==n.value&&n.value>0),j=p?.width??0,w=p?.height??0,b=a(M.map(n=>n.value)),P=function(){var n=k,t=I,e=null,r=c(0),o=c(A),a=c(0);function i(i){var l,u,c,f,h,y=(i=s(i)).length,p=0,d=new Array(y),x=new Array(y),g=+r.apply(this,arguments),v=Math.min(A,Math.max(-A,o.apply(this,arguments)-g)),m=Math.min(Math.abs(v)/y,a.apply(this,arguments)),M=m*(v<0?-1:1);for(l=0;l<y;++l)(h=x[d[l]=l]=+n(i[l],l,i))>0&&(p+=h);for(null!=t?d.sort(function(n,e){return t(x[n],x[e])}):null!=e&&d.sort(function(n,t){return e(i[n],i[t])}),l=0,c=p?(v-y*M)/p:0;l<y;++l,g=f)u=d[l],f=g+((h=x[u])>0?h*c:0)+M,x[u]={data:i[u],index:l,value:h,startAngle:g,endAngle:f,padAngle:m};return x}return i.value=function(t){return arguments.length?(n="function"==typeof t?t:c(+t),i):n},i.sortValues=function(n){return arguments.length?(t=n,e=null,i):t},i.sort=function(n){return arguments.length?(e=n,t=null,i):e},i.startAngle=function(n){return arguments.length?(r="function"==typeof n?n:c(+nLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,$ as t,a as r,j as n}from"./vendor-react-64fcanlc.js";import{ey as o,gi as i,ep as a,el as s,cN as l,gj as d,gk as c,gl as p,er as u,em as g,en as f,dv as m,eo as h,gb as y,gm as D,ez as v,eP as b,gn as w,go as x,eQ as T,ew as k,dx as E,bp as P,cK as K,cC as O,b7 as S,aD as C,cl as I,eW as j,az as A,bs as R,B as M,f as B,u as L,R as F,ch as $,q as z,d2 as N,bK as V,cw as X,df as Y,b5 as H,aL as q,gp as U,P as J,gq as W,A as _}from"./index-HxEUeoab.js";import{b5 as G,b6 as Q,b7 as Z,b8 as ee,b9 as te,ba as re,bb as ne,bc as oe,bd as ie,be as ae,bf as se,bg as le,bh as de,bi as ce,bj as pe,bk as ue,bl as ge,bm as fe,bn as me,bo as he,bp as ye,bq as De,br as ve,bs as be,bt as we,bu as xe,bv as Te,bw as ke,bx as Ee,by as Pe,bz as Ke,bA as Oe,bB as Se,bC as Ce,bD as Ie,bE as je,bF as Ae}from"./activity-yZTrGy-J.js";import{$ as Re,a as Me}from"./GridList-D7qdplA5.js";import{m as Be}from"./Select-D7_6MaHd.js";import{D as Le}from"./Delete-CR2AtZsd.js";import{S as Fe,c as $e,$ as ze}from"./logs-C4GIy4tX.js";import{C as Ne}from"./AppearanceControls-sRy1p156.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./ItemText-DOD_75iR.js";import"./Checkbox-CJt7u9-e.js";var Ve=function(e){return e[e.none=0]="none",e[e.cancel=0]="cancel",e[e.move=1]="move",e[e.copy=2]="copy",e[e.link=4]="link",e[e.all=7]="all",e}({});const Xe={...Ve,copyMove:3,copyLink:6,linkMove:5,all:7,uninitialized:7},Ye=Ue(Xe);Ye[7]="all";const He={none:"cancel",link:"link",copy:"copy",move:"move"},qe=Ue(He);function Ue(e){let t={};for(let r in e)t[e[r]]=r;return t}const Je=new Set(["text/plain","text/uri-list","text/html"]),We="application/vnd.react-aria.items+json",_e="application/octet-stream",Ge=new WeakMap,Qe=Symbol();function Ze(e){let t=new Set;for(let r of e)for(let e of Object.keys(r))t.add(e);return t}function et(e){return e||(e="virtual"),"pointer"===e&&(e="virtual"),"virtual"===e&&"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia("(pointer: coarse)").matches&&(e="touch"),e}function tt(){return et(o())}function rt(){return et(i())}class nt{constructor(e){this.types=new Set;let t=!1;for(let r of e.items)r.type!==We&&("file"===r.kind&&(t=!0),r.type?this.types.add(r.type):this.types.add(_e));this.includesUnknownTypes=!t&&e.types.includes("Files")}has(e){if(Array.isArray(e))return e.some(e=>this.has(e));if(this.includesUnknownTypes||e===Qe&&this.types.has(_e)||"*/*"===e)return!0;if("string"==typeof e){if(e.endsWith("/*")){for(let t of this.types)if(t.startsWith(e.slice(0,-2)))return!0;return!1}return this.types.has(e)}return!1}}function ot(e){if(!e)throw new Error("No file provided");return{kind:"file",type:e.type||_e,name:e.name,getText:()=>{return"function"==typeof(t=e).text?t.text():new Promise((e,r)=>{let n=new FileReader;n.onload=()=>{e(n.result)},n.onerror=r,n.readAsText(t)});var t},getFile:()=>Promise.resolve(e)}}function it(e){return{kind:"directory",name:e.name,getEntries:()=>async function*(e){let t,r=e.createReader();do{t=await new Promise((e,t)=>{r.readEntries(e,t)});for(let e of t)if(e.isFile){let t=await at(e);yield ot(t)}else e.isDirectory&&(yield it(e))}while(t.length>0)}(e)}}function at(e){return new Promise((t,r)=>e.file(t,r))}let st,lt={draggingKeys:new Set};function dt(e){lt.dropCollectionRef=e}function ct(){lt={draggingKeys:new Set}}function pt(e){let{draggingCollectionRef:t,dropCollectionRef:r}=lt;return null!=t?.current&&t.current===(e?.current||r?.current)}function ut(e){st=e}let gt=Ve.none;function ft(e){gt=e}let mt=new Map,ht=new Map,yt=null,Dt=new Set;function vt(e){return mt.set(e.element,e),yt?.updateValidDropTargets(),()=>{mt.delete(e.element),yt?.updateValidDropTargets()}}function bt(){let[t,r]=e.useState(yt);return e.useEffect(()=>{let e=()=>r(yt);return Dt.add(e),()=>{Dt.delete(e)}},[]),t}function wt(){return!!yt}const xt=["pointerdown","pointermove","pointerenter","pointerleave","pointerover","pointerout","pointerup","mousedown","mousemove","mouseenter","mouseleave","mouseover","mouseout","mouseup","touchstart","touchmove","touchend","focusin","focusout"],Tt=["pointerup","mouseup","touchend"],kt={keyboard:"dragStartedKeyboard",touch:"dragStartedTouch",virtual:"dragStartedVirtual"};class Et{constructor(e,t){this.validDropTargets=[],this.currentDropTarget=null,this.currentDropItem=null,this.dropOperation=null,this.mutationObserver=null,this.restoreAriaHidden=null,this.isVirtualClick=!1,this.dragTarget=e,this.stringFormatter=t,this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onFocus=this.onFocus.bind(this),this.onBlur=this.onBlur.bind(this),this.onClick=this.onClick.bind(this),this.onPointerDown=this.onPointerDown.bind(this),this.cancelEvent=this.cancelEvent.bind(this),this.initialFocused=!1}setup(){document.addEventListener("keydown",this.onKeyDown,!0),document.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("focus",this.onFocus,!0),window.addEventListener("blur",this.onBlur,!0),document.addELine truncated
|
||||
@@ -1 +0,0 @@
|
||||
.rp-dashboard-body{display:contents}.rp-dashboard-tools{z-index:1;gap:var(--rp-space-2);border-radius:var(--rp-r-md);background:var(--rp-base);display:flex;position:absolute;inset-block-start:var(--rp-space-3);inset-inline-end:var(--rp-space-3)}.rp-dashboard-tools [slot=drag]{touch-action:none;cursor:grab}.rp-grip:before{content:"";inline-size:calc(var(--rp-space-1) / var(--rp-preview-scale,1));block-size:calc(var(--rp-space-6) / var(--rp-preview-scale,1));border-radius:var(--rp-r-pill);background:var(--rp-subtle);box-shadow:0 0 0 calc(var(--rp-space-half) / var(--rp-preview-scale,1)) var(--rp-base)}.rp-sortable-row{outline:none;min-inline-size:0;position:relative}.rp-sortable-row[data-focus-visible]{outline:none}.rp-sortable-row:is([data-focus-visible],[data-selected]):before{content:"";inset:calc(0px - var(--rp-sortable-gap,var(--rp-space-2)) - var(--rp-focus-width));border:var(--rp-focus-width) solid var(--rp-focus-color);pointer-events:none;position:absolute}.rp-sortable-grid{outline:none}.rp-sortable-row>[role=gridcell]{display:contents}.rp-sortable-grid[data-drop-target]{outline:2px dashed var(--rp-accent)}.rp-sortable-grid .rp-dashboard-tools{background:0 0;inset-block-start:calc(var(--rp-line-caption) / 2 - var(--rp-space-1));inset-inline-end:0;translate:0 -50%}.rp-sortable-grid .rp-widget-label{padding-inline-end:calc(var(--rp-control) + var(--rp-space-2))}.rp-sortable-row[data-module=divider] .rp-dashboard-tools{background:var(--rp-surface);padding-inline-start:var(--rp-space-1);inset-block-start:50%}.rp-widget-gallery-grid{gap:var(--rp-space-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));display:grid}.rp-widget-gallery-tile{gap:var(--rp-space-3);min-inline-size:0;padding:var(--rp-space-4);border:1px solid var(--rp-line);border-radius:var(--rp-r-lg);flex-direction:column;display:flex}.rp-widget-gallery-tile>.rp-cluster{margin-block-start:auto}.rp-widget-gallery-tile[data-added]{background:var(--rp-fill);--rp-subtle:var(--rp-subtle-text)}.rp-widget-gallery-frame{pointer-events:none;block-size:200px;overflow:hidden;mask-image:linear-gradient(#000 80%,#0000)}.rp-widget-gallery-presets{align-items:flex-start;gap:var(--rp-space-3) var(--rp-preset-gap);flex-wrap:wrap;display:flex}.rp-widget-gallery-preset{gap:var(--rp-space-1);flex-direction:column;min-inline-size:0;display:flex}.rp-widget-gallery-thumb{position:relative;overflow:hidden}.rp-widget-gallery-thumb-card{transform-origin:0 0;pointer-events:none;container:rp-tile/inline-size}.rp-widget-gallery-thumb-card:dir(rtl){transform-origin:100% 0}.rp-widget-gallery-thumb-add{border-radius:var(--rp-r-lg);cursor:pointer;background:0 0;border:0;position:absolute;inset:0}.rp-widget-gallery-thumb-add[data-hovered]{outline:2px solid var(--rp-line);outline-offset:2px}.rp-widget-gallery-thumb-add[data-focus-visible]{outline:2px solid var(--rp-accent);outline-offset:2px}.rp-widget-gallery-thumb-add[data-disabled]{cursor:default;outline:none}
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{U as n,a2 as s,a4 as r,a1 as a,h as i,a9 as o,u as l,al as d,l as c,q as m,c2 as u,ab as p,ac as v,dp as h,dq as j,T as f,av as x,B as b,p as g,E as w}from"./index-HxEUeoab.js";import{L as k}from"./AppearanceControls-sRy1p156.js";import{d as y,O as T,K as N,L as C}from"./logs-C4GIy4tX.js";import{T as H}from"./Toolbar-BTFtduwD.js";import{D as _}from"./Table-yWn0d3vL.js";import{d as K,e as O}from"./files-Dt8K7QfP.js";import{j as S,D as W}from"./activity-yZTrGy-J.js";import{u as L,C as M}from"./Copy-CGFSe6tr.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./ItemText-DOD_75iR.js";import"./Select-D7_6MaHd.js";import"./nodes-6sIn2I0s.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";const R={buffer_overflow:["event.gap.overflow","event.gapHelp.overflow"],evicted:["event.gap.evicted","event.gapHelp.evicted"]};function q(e,t){const n="flow.gap"===e.event&&Object.hasOwn(R,e.data.reason)?R[e.data.reason]:void 0;return n&&{title:t(n[0]),text:t(n[1])}}function D(e,t){const n=e=>e?[{id:"flow",label:t("event.viewFlow"),href:i("flows",{tab:"records",id:e})}]:[];switch(e.event){case"flow.updated":return n(e.data.resource_id);case"flow.gap":return[...n(e.data.resource_id),{id:"recording",label:t("ui.recordingSettings"),href:S}];case"generation.changed":return[{id:"config",label:t("event.viewConfig"),href:i("config")}];default:return[]}}const F=new WeakMap;function I(e,t,i,o,l,d,c,m,u=!1,p=()=>!1){const v="without-runtime"===t||m.includes(t)?t:"all",h=e.filter(e=>"all"===v||("without-runtime"===v?"runtime.updated"!==e.event:e.event===v)).slice(0,l);return{kind:v,rows:h.map(e=>function(e,t,i,o){const l=F.get(e);if(l&&l.locale===t)return l.row;const d=o?{key:"event.lostHistory"}:r(e,i),c={id:y(e),timestamp:a(e.data.observed_at,t),iso:e.data.observed_at,kind:e.event,kindText:n(s,e.event,i),summary:i(d.key,d.params),help:q(e,i),links:D(e,i),event:e};return F.set(e,{locale:t,row:c}),c}(e,d,c,p(e))),kinds:[{id:"without-runtime",label:c("event.withoutRuntime")},{id:"all",label:c("event.allKinds")},...m.map(e=>({id:e,label:n(s,e,c)}))],status:u&&!1!==o?{tone:"err",text:c("event.disconnected")}:{tone:i?"ok":null===o?"muted":"warn",text:c(!1===o?"event.unavailable":i?"event.connected":null===o?"ui.loading":"event.reconnecting")},limitText:c("event.limit",{n:l}),shown:h}}function J(){const t=o(),n=l(),s=d[c()],r=m(),a=r.data?.resources.events.kinds,[i,f]=e.useState("without-runtime"),x="all"!==i&&"runtime.updated"!==i&&a?.includes(i),b=T("without-runtime"!==i&&!x),g=e.useMemo(()=>I(b.events,i,b.connected,b.available,j,s,n,a??[],!!b.error,h),[b.events,i,b.connected,b.available,b.error,s,n,a]);return u(g.kind,f),{...g,setKind:f,cursor:b.cursor,error:b.error,retry:()=>{p().then(()=>v(t))},loading:!b.error&&!b.connected&&!1!==b.available&&!b.events.length,export:()=>{return K(O("doona-events","json"),(e=g.shown,JSON.stringify(e,null,2)+"\n"),"application/json");var e}}}function P(){const n=l(),s=J(),r=L(),a=e.useMemo(()=>[{id:"t",label:n("ui.time"),minWidth:212,grow:0,drop:1,render:e=>t.jsx(f,{className:"rp-code",text:e.iso,children:e.timestamp})},{id:"k",label:n("event.kind"),minWidth:224,drop:2,render:e=>t.jsx(f,{text:e.kind,children:e.kindText})},{id:"m",label:n("event.summary"),minWidth:176,isRowHeader:!0,render:e=>t.jsx(x,{fill:!0,help:e.help,children:t.jsx(f,{children:e.summary})})},{id:"actions",actions:!0,label:n("ui.actions"),hideLabel:!0,minWidth:64,grow:0,render:e=>t.jsx(b,{small:!0,quiet:!0,icon:!0,label:n("ui.copyRecord"),onPress:()=>{r((e=>JSON.stringify(e,null,2))(e.event))},children:t.jsx(M,{})})}],[n,r]),i=e.useCallback(e=>t.jsxs(t.Fragment,{children:[t.jsx(N,{inline:!0,items:[[n("ui.time"),e.timestamp],[n("event.kind"),e.kindText],[n("event.summary"),e.summary]]}),e.links.length>0&&t.jsx("div",{className:"rp-cluster",children:e.links.map(e=>t.jsx(k,{appearance:"button",href:e.href,children:e.label},e.id))})]}),[n]);return t.jsxs("div",{className:"rp-page",children:[t.jsxs(H,{page:!0,children:[t.jsx(C,{label:n("event.kind"),side:!0,value:s.kind,onChange:s.setKind,items:s.kinds}),t.jsx(g,{small:!0,tone:s.status.tone,children:s.status.text}),s.cursor&&t.jsx(f,{text:s.cursor,children:t.jsx("span",{className:"rp-label",children:n("event.cursor")})}),t.jsx("span",{className:"rp-label",children:s.limitText}),t.jsx("span",{className:"rp-grow"}),t.jsxs(b,{isDisabled:!s.rows.length,onPress:s.export,children:[t.jsx(W,{}),n("event.export")]})]}),s.error&&t.jsx(w,{error:s.error,onRetry:s.retry}),t.jsx(_,{label:n("nav.events"),stream:!0,flow:!0,loading:s.loading,rows:s.rows,empty:n("event.empty"),cols:a,detail:i})]})}export{P as Events};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as s}from"./vendor-react-64fcanlc.js";import{u as a,l,ct as t,al as o,dg as i,b5 as n,B as r}from"./index-HxEUeoab.js";import{S as c}from"./SearchSelect-BcScGUbQ.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Select-D7_6MaHd.js";import"./ItemText-DOD_75iR.js";import"./SearchList-LjCruZYP.js";import"./Virtualizer-DMIKG2CD.js";function m({name:n,value:r,automaticFlag:m,onChange:d}){const f=a(),g=l(),p=e.useMemo(()=>t(o[g]),[g]),j=i(n),u=p.find(e=>e.flag===m),h=u?f("flags.detected",{region:u.label}):f("flags.automatic");return s.jsx("div",{className:"rp-list",children:s.jsx(c,{label:f("flags.region"),description:f(j?"flags.embedded":"flags.help"),isDisabled:j,searchLabel:f("flags.search"),value:j?"automatic":r,onChange:d,sections:[{id:"flags",items:[{id:"automatic",label:h,flag:m},{id:"none",label:f("flags.none"),flag:null},...p]}]})})}function d({name:e,onClose:l,...t}){const o=a();return s.jsxs(n,{narrow:!0,title:o("flags.edit"),isOpen:!0,onOpenChange:e=>{e||l()},footer:()=>s.jsx(r,{onPress:l,children:o("ui.close")}),children:[s.jsx("p",{className:"rp-note",children:e}),s.jsx(m,{name:e,...t})]})}export{m as FlagField,d as FlagPicker};
|
||||
@@ -1 +0,0 @@
|
||||
.rp-topology{min-width:0;overflow:hidden}.rp-tree{gap:var(--rp-space-2);overscroll-behavior-x:contain;flex-direction:column;min-width:0;display:flex;overflow-x:auto}.rp-tree-hint{color:var(--rp-subtle);font-size:var(--rp-text-xs);line-height:16px;display:none}@media (width<=599.98px){.rp-tree-hint{display:block}}.rp-tree-captions{height:16px;position:relative}.rp-tree-captions>.rp-label{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;position:absolute;top:0}.rp-tree-canvas{position:relative}.rp-tree-links{pointer-events:none;fill:none;stroke:var(--rp-muted);stroke-linecap:round;position:absolute;inset:0;overflow:visible}.rp-tree-links path{opacity:.55;transition:opacity var(--rp-duration) var(--rp-ease)}.rp-tree-links path[data-kind=direct]{stroke:var(--rp-positive)}.rp-tree-links path[data-kind=block]{stroke:var(--rp-negative)}.rp-tree-links path[data-kind=group]{stroke:var(--rp-iris)}.rp-tree-links path[data-kind=node]{stroke:var(--rp-accent)}.rp-tree-links path[data-state=active]{opacity:1}.rp-tree-links path[data-state=dim]{opacity:.1}.rp-tree-tile{box-sizing:border-box;align-items:center;gap:var(--rp-space-2);height:36px;padding:0 var(--rp-space-2h);border-radius:var(--rp-r-md);background:var(--rp-overlay);color:var(--rp-text);font:inherit;font-size:var(--rp-text-sm);text-align:start;cursor:pointer;border:2px solid #0000;line-height:16px;display:flex;position:absolute}.rp-tree-tile.dim{opacity:.35}.rp-tree-tile[data-hovered]{background:var(--rp-hl-med)}.rp-tree-tile[data-selected]{border-color:var(--rp-accent);background:var(--rp-selected)}.rp-tree-tile[data-focus-visible]{outline:var(--rp-focus-width) solid var(--rp-focus-color);outline-offset:calc(-1 * var(--rp-focus-width));border-color:#0000}.rp-tree-tile .l{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.rp-tree-tile[data-stage=rule] .l{font-family:var(--rp-font-mono);font-size:var(--rp-text-xs);font-variant-ligatures:none}.rp-tree-tile .s{font-size:var(--rp-text-xs);color:var(--rp-subtle);margin-inline-start:var(--rp-space-2)}.rp-tree-tile .s.ok{color:var(--rp-positive-text)}.rp-tree-tile .s.warn{color:var(--rp-notice-text)}.rp-tree-tile .s.err{color:var(--rp-negative-text)}.rp-tree-tile .c{font-variant-numeric:tabular-nums;color:var(--rp-subtle);flex:none;font-weight:700}
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{O as n}from"./OutboundTag-CO8Ndxdr.js";import{l as a,p as o,c as s,h as r,R as l,S as i,L as d,K as u}from"./logs-C4GIy4tX.js";import{a6 as c,M as p,a3 as m,H as f,G as g,c4 as w,c6 as h,w as b,bZ as v,U as j,b$ as x,c0 as y,al as k,a1 as _,h as M,ak as N,o as L,a8 as S,Y as T,u as C,l as P,i as O,B as F,N as R,b7 as E,ax as H,q,r as W,b4 as $,c8 as I,c3 as D,aG as A,E as U,T as B,aE as J,bx as K,S as Q,af as G,C as V}from"./index-HxEUeoab.js";import{h as Z,f as z,i as X,o as Y,j as ee,d as te}from"./activity-yZTrGy-J.js";import{w as ne}from"./labels-D8xxfRTQ.js";import{c as ae,C as oe}from"./Coverage-8qg_JeNJ.js";import{f as se}from"./nav-CKRufMnz.js";import{L as re}from"./AppearanceControls-sRy1p156.js";import{T as le}from"./Tabs-DT6MQhIo.js";import{T as ie}from"./Toolbar-BTFtduwD.js";import{D as de}from"./Table-yWn0d3vL.js";import{T as ue}from"./TimeCell-BIqfL3y_.js";import{a as ce,u as pe,b as me}from"./flows-dBNkBg79.js";import{u as fe}from"./outbounds-Bbb6kdae.js";import{u as ge,Q as we,R as he}from"./useQuickRule-DUEi6geL.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Tag-SxASl3TF.js";import"./Select-D7_6MaHd.js";import"./ItemText-DOD_75iR.js";import"./nodes-6sIn2I0s.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";import"./DaeCode-DEjXqvav.js";import"./daeTokens-BVtuNnWZ.js";import"./AddCircle-C6Jc7GCc.js";import"./SearchSelect-BcScGUbQ.js";import"./SearchList-LjCruZYP.js";import"./rule-Bl9YOsFn.js";const be=["client","rule","outbound","node"];function ve(e,t){if(e.rule_id)return null!==e.rule_generation_id&&e.rule_generation_id===t?e.rule_id:e.rule_id+"\0"+e.rule_expression}function je(e,t,n,a){switch(t){case"client":{const t=p(e.input?.src??void 0);return{label:t??"unknown",unknown:!t}}case"rule":return e.rule_expression?{label:e.rule_expression,unknown:!1,key:ve(e,a)}:{label:"unknown",unknown:!0};case"outbound":return e.outbound?{label:e.outbound,unknown:!1}:{label:"unknown",unknown:!0};case"node":{if(c(e.outbound))return null;const t=e.chain.at(-1)??null;return t?{label:n.get(t)??t,unknown:!1,key:t}:{label:"unknown",unknown:!0}}}}const xe=(e,t)=>z(e,t.unknown?"":t.key??t.label),ye=e=>Z(e,be)?.kind,ke=new Map;function _e(e,t,n){const a=ye(t);return a?e.filter(e=>{const o=je(e,a,ke,n?.generation_id);return null!==o&&xe(a,o)===t}):[]}function Me(e,t,n,a){const o=Z(e,be);if(!o||""===o.value)return a(null);const{kind:s,value:r}=o;return"rule"===s?r.includes("\0")?r.slice(r.indexOf("\0")+1):t.find(e=>e.rule_id===r)?.expression??r:"node"===s?n.get(r)??r:"client"===s?r:a(r)}function Ne(e,t,n,a,o="rule"){const s=(e=>new Map(e.map(e=>[e.id,e.name])))(n),r=new Map(t.map(e=>[e.id,e])),l=new Map(t.map(e=>[e.name,e])),i=new Map(n.map(e=>[e.id,e])),d=new Map,u=new Map,p=new Map,w=new Map,h=(e,t)=>{const n=e+">"+t;let a=w.get(n);return a||w.set(n,a={source:e,target:t,count:0}),a},b=(e,t,n=!1)=>{const a=xe("node",{key:e,label:t,unknown:n});let o=p.get(a);if(!o){const s=n?void 0:i.get(e),r=s&&f(s);p.set(a,o={id:a,label:t,count:0,unknown:n||void 0,latency:g(r),unavailable:"unavailable"===r?.state})}return o},v=(e,t=!1)=>{const n=xe("outbound",{label:e,unknown:t});let a=u.get(n);if(a)return a;const o=t?void 0:l.get(e),d=t?{groups:[],member:null}:m(e,o?.selection.tcp_member_id?"tcp":"udp",l,r,i),p=d.groups.map(e=>({name:e.name,kind:e.policy.kind,policy:e.policy.native})),f=d.member;return a={id:n,label:e,count:0,unknown:t||void 0,kind:t?"unknown":c(e)?e:p.length?"group":"unknown",groups:p,node:f&&b(f,s.get(f)??f).id},u.set(n,a),a.node&&h(n,a.node),a},j=(e,t,n=!1)=>{let a=d.get(e);return a||d.set(e,a={id:e,label:t,count:0,unknown:n||void 0,outbound:null,must:!1}),a};if("rule"===o)for(const c of a?.rules??[]){const e=j(xe("rule",{key:c.rule_id,label:c.expression}),c.expression);e.must=c.must,c.outbound&&(e.outbound=v(c.outbound).id,h(e.id,e.outbound))}const x=[o,"outbound","node"];for(const c of e){let e;for(const t of x){const n=je(c,t,s,a?.generation_id);if(!n)break;const o="outbound"===t?v(n.label,n.unknown):"node"===t?b(n.key??n.label,n.label,n.unknown):j(xe(t,n),n.label,n.unknown);o.count++,e&&h(e.id,o.id).count++,e=o}}for(const c of t)v(c.name);const y=new Set([...d.values()].map(e=>e.outbound)),k=new Set([...u.values()].flatMap(e=>e.groups.slice(1).map(e=>e.name))),_=[...u.values()].filter(e=>e.count||y.has(e.id)||!k.has(e.label)),M=new Set(_.map(e=>e.id)),N=[...w.values()].filter(e=>M.has(e.source)||M.has(e.target)),L=new Set(N.map(e=>e.target));return{by:o,leaves:[...d.values()],outbounds:_,nodes:[...p.values()].filter(e=>L.has(e.id)),links:N}}const Le=new WeakMap;function Se(e){const t=Le.get(e);if(t)return t;const n=new Map,a=new Map,o=new Map;for(const l of e.links){for(const[e,t]of[[n,l.source],[a,l.target]]){let n=e.get(t);n||e.set(t,n=[]),n.push(l)}(!o.has(l.source)||o.get(l.source).count<l.count)&&o.set(l.source,l)}const s=new Map;for(const l of[...e.leaves,...e.outbounds]){const e=("groups"in l?l.node:l.outbound)??oLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{fG as e,cK as t,cD as r,cC as o,bp as a,fH as i,dY as l,eB as n,eC as s,eq as c,er as d,es as u,cL as p,et as g,ev as f,ew as y,cN as v,eu as b,el as h,e1 as m,fM as k,c$ as D,e6 as w,d3 as E,d2 as P,eA as M,cU as x,cV as S,cW as A,eN as K,cY as C,eb as T,eH as N,eJ as B,e2 as I,eO as F,cQ as L,e3 as R,e0 as V,ek as H,eI as U,eK as O,c_ as z,eT as $,eU as G,ea as W}from"./index-HxEUeoab.js";import{b as _,a as j,c as q,e as Y,f as J,g as Q}from"./Checkbox-CJt7u9-e.js";import{k as X,f as Z,e as ee,l as te,g as re,i as oe,h as ae}from"./Select-D7_6MaHd.js";import{r as ie,$ as le}from"./vendor-react-64fcanlc.js";const ne=new WeakMap;function se(e,t){let{id:r}=ne.get(e)??{};if(!r)throw new Error("Unknown list");return`${r}-${function(e){return"string"==typeof e?e.replace(/\s*/g,""):""+e}(t)}`}const ce={ltr:"ArrowRight",rtl:"ArrowLeft"},de={ltr:"ArrowLeft",rtl:"ArrowRight"};function ue(e,t,r){let{node:m,isVirtualized:k,focusMode:D="row",allowsArrowNavigation:w}=e,{direction:E}=a(),{onAction:P,linkBehavior:M,keyboardNavigationBehavior:x,shouldSelectOnPressUp:S}=ne.get(t),A=i(),K=ie.useRef(null),C=()=>{if(null!==r.current){if("child"===D){if(c(r.current)&&r.current!==d(u(r.current)))return;let e=p(r.current,{tabbable:!0}).firstChild();if(e)return g(e),void f(e,{containingElement:y(e)})}(null!=K.current&&m.key!==K.current||!c(r.current))&&g(r.current)}},T={},N=e.hasChildItems,B=t.selectionManager.isLink(m.key);if(null!=m&&"expandedKeys"in t){let e=t.collection.getChildren?.(m.key);N=N||[...e??[]].length>1,null==P&&!B&&"none"===t.selectionManager.selectionMode&&N&&(P=()=>t.toggleKey(m.key));let r=N?t.expandedKeys.has(m.key):void 0,o=1,a=m.index;if(m.level>=0&&null!=m?.parentKey){let e=t.collection.getItem(m.parentKey);if(e){let r=function(e,t){let r=t.getChildren?.(e.key),o=r?Array.from(r):[],a=o.length>0?o[0]:null,i=[];for(;a;)i.push(a),a=null!=a.nextKey?t.getItem(a.nextKey):null;return i}(e,t.collection);o=[...r].filter(e=>"item"===e.type).length,a>0&&"item"!==r[0].type&&(a-=1)}}else o=[...t.collection].filter(e=>0===e.level&&"item"===e.type).length;T={"aria-expanded":r,"aria-level":m.level+1,"aria-posinset":a+1,"aria-setsize":o}}let{itemProps:I,...F}=l({selectionManager:t.selectionManager,key:m.key,ref:r,isVirtualized:k,shouldSelectOnPressUp:e.shouldSelectOnPressUp||S,onAction:P||m.props?.onAction?n(m.props?.onAction,P?()=>P(m.key):void 0):void 0,focus:C,linkBehavior:M}),L=s(m.props),R=F.hasAction?L:{},V=o(I,R,{role:"row",onKeyDownCapture:"arrow"===x||w?e=>{let o=d(u(r.current));if(!h(e.currentTarget,v(e))||!r.current||!o)return;let a=p(r.current);if(a.currentNode=o,!pe(e,t,m,N,E,o,r.current,w))switch(e.key){case"ArrowLeft":if("arrow"===x){let t="rtl"===E?a.nextNode():a.previousNode();if(t)e.preventDefault(),e.stopPropagation(),g(t),f(t,{containingElement:y(r.current)});else if(e.preventDefault(),e.stopPropagation(),"rtl"===E)g(r.current),f(r.current,{containingElement:y(r.current)});else{a.currentNode=r.current;let e=ge(a);e&&(g(e),f(e,{containingElement:y(r.current)}))}}break;case"ArrowRight":if("arrow"===x){let t="rtl"===E?a.previousNode():a.nextNode();if(t)e.preventDefault(),e.stopPropagation(),g(t),f(t,{containingElement:y(r.current)});else if(e.preventDefault(),e.stopPropagation(),"ltr"===E)g(r.current),f(r.current,{containingElement:y(r.current)});else{a.currentNode=r.current;let e=ge(a);e&&(g(e),f(e,{containingElement:y(r.current)}))}}break;case"ArrowUp":case"ArrowDown":!e.altKey&&h(r.current,v(e))&&(e.stopPropagation(),e.preventDefault(),r.current.parentElement?.dispatchEvent(new KeyboardEvent(e.nativeEvent.type,e.nativeEvent)))}}:void 0,onFocus:e=>{K.current=m.key,v(e)===r.current?"child"===D&&e.relatedTarget&&h(r.current,e.relatedTarget)||requestAnimationFrame(()=>{"child"===D&&d(u(r.current))===r.current&&C()}):b()||t.selectionManager.setFocusedKey(m.key)},"aria-label":m["aria-label"]||m.textValue||void 0,"aria-selected":t.selectionManager.canSelectItem(m.key)?t.selectionManager.isSelected(m.key):void 0,"aria-disabled":t.selectionManager.isDisabled(m.key)||void 0,"aria-labelledby":A&&(m["aria-label"]||m.textValue)?`${se(t,m.key)} ${A}`:void 0,id:se(t,m.key)});"child"===D&&w&&"tab"===x&&(V.tabIndex=-1);let H=V.onKeyDown;if(V.onKeyDown=e=>{(e=>{let o=d(u(r.current));if(h(e.currentTarget,v(e))&&r.current&&o){if("tab"===x){if(v(e)!==r.current&&"Tab"!==e.key)return void e.stopPropagation();if(pe(e,t,m,N,E,o,r.current,w))return}if("Tab"===e.key&&"tab"===x){let t=p(r.current,{tabbable:!0});t.currentNode=o,(e.shiftKey?t.previousNode():t.nextNode())&&e.stopPropagation()}}})(e),e.isPropagationStopped()||H?.(e)},k){let{collection:e}=t,r=[...e];V["aria-rowindex"]=r.find(e=>"section"===e.type)?[...e.getKeys()].filter(t=>"section"!==e.getItem(t)?.type).findIndex(e=>e===m.key)+1:m.index+1}return{rowProps:{...o(V,T)},gridCellProps:{role:"gridcell","aria-colindex":1},descriptionProps:{id:A},...F}}function pe(e,t,r,o,a,i,l,n){if(!("expandedKeys"in t)||!n&&i!==l)return!1;if(e.key===ce[a]&&t.selectionManager.focusLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{j as s}from"./vendor-react-64fcanlc.js";import{I as e,d5 as a,N as l,T as c}from"./index-HxEUeoab.js";function r(a){return s.jsx(e,{...a,children:s.jsx("path",{fill:"currentColor",d:"M7.864 15.734c-.222 0-.433-.098-.576-.27l-3.747-4.497c-.266-.319-.222-.792.096-1.057.317-.265.79-.223 1.056.096l3.154 3.786 7.44-9.469c.255-.326.728-.382 1.052-.127.326.256.383.728.127 1.053L8.454 15.447c-.14.179-.352.284-.579.287z"})})}const t=()=>s.jsx(r,{className:"rp-check-mark"}),i=({i:e,cut:a,reserveFlag:r=!1})=>{const t="path"===a?e.label.lastIndexOf("/")+1:0;return s.jsxs("span",{className:"rp-il",children:[(e.flag||r&&void 0!==e.flag)&&s.jsx("span",{className:"rp-node-flag","data-flag":e.flag,"aria-hidden":"true"}),e.icon&&s.jsx("span",{className:"ic",children:e.icon}),e.nodeName?s.jsx(l,{name:e.label,cut:"start"===a?a:void 0}):t?s.jsxs(c,{className:"rp-path",text:e.label,children:[s.jsx("span",{className:"rp-truncate rp-truncate-start",children:s.jsx("bdi",{children:e.label.slice(0,t)})}),s.jsx("bdi",{children:e.label.slice(t)})]}):s.jsx(c,{cut:"start"===a?a:void 0,tooltipText:e.label,children:e.label})]})},n=({i:e,children:l})=>s.jsxs("span",{className:"rp-item-text",children:[s.jsx(a,{slot:"label",elementType:"span",children:s.jsx(i,{i:e,reserveFlag:!0})}),l??(e.desc&&s.jsx(a,{slot:"description",className:e.aside?"desc aside":"desc",children:e.desc}))]});export{r as C,i as I,t as a,n as b};
|
||||
@@ -1 +0,0 @@
|
||||
import{j as s}from"./vendor-react-64fcanlc.js";import{b7 as r}from"./index-HxEUeoab.js";function e({className:e,...o}){return s.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:10,height:10,viewBox:"0 0 12 12","aria-hidden":"true",focusable:"false",className:r("rp-icon rp-link-out",e),...o,children:s.jsx("path",{fill:"currentColor",d:"m10.08887,1h-5.51074c-.50293,0-.91113.4082-.91113.91113s.4082.91113.91113.91113h3.31055L1.35547,9.35547c-.35645.35645-.35645.93262,0,1.28906.17773.17773.41113.2666.64453.2666s.4668-.08887.64453-.2666l6.5332-6.5332v3.31055c0,.50293.4082.91113.91113.91113s.91113-.4082.91113-.91113V1.91113c0-.50293-.4082-.91113-.91113-.91113Z"})})}export{e as L};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{u as n,l as r,by as s,m as o,aM as a,bz as i,aV as l,bA as c,bB as u,bC as d,bD as p,h as m,C as g,b6 as f,E as h,bE as x,bF as k,bk as w,bG as j,B as y}from"./index-HxEUeoab.js";import{D as b,s as v,d as T,a as S,o as E}from"./auth-CSMbhh2E.js";import{L as N,a as C,P as D,S as L}from"./AppearanceControls-sRy1p156.js";import{L as _}from"./LinkOut-D-cvJjm2.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./ItemText-DOD_75iR.js";const A=/^[A-Za-z0-9_.-]{1,64}$/;async function q(e,t){try{return v(await T(e,t))}catch(n){if(!function(e){return e instanceof SyntaxError||e instanceof a&&(404===e.status||401===e.status&&(!e.code||"authentication_required"===e.code))}(n))throw n;return n instanceof a&&404===n.status?await S(e,t)?"token":"no-api":"token"}}function P(e,t,n){try{const{profiles:r,activeId:s}=u(),o=function(e,t,n,r){return e.some(e=>e.id===t&&p(e.api)===p(n))?e.map(e=>e.id===t?{...e,token:r.trim()}:e):null}(r,e,t,n);if(!o)return"login.stale";d({profiles:o,activeId:s})}catch{return"settings.saveError"}return null}async function I(e,t,n,r){let s;try{s=await E(t,n,r)}catch(o){return function(e,t){if(!(e instanceof a))return null;if("invalid_credentials"===e.code)return{key:"login.invalidCredentials"};if("setup_required"===e.code)return{key:"login.needsSetup",switchTo:"setup"};if("setup_already_completed"===e.code)return{key:"login.alreadySetUp",switchTo:"login"};if("permission_denied"===e.code&&"setup"===t)return{key:"login.setupPeer"};if("rate_limited"===e.code){const t=e.retryAfter??60;return{key:"login.rateLimited",params:{n:t},wait:t}}return null}(o,n)??{error:o}}try{c(e,t,s.token)}catch{return{key:"settings.saveError"}}return null}function R(e,t){const{kind:n,failure:r,attempt:s,ended:o,rejected:a}=e;return"no-api"===n?null:null!==r?{tone:"negative",text:"string"==typeof r?r:t(r.key,r.params),focus:!0,id:s}:o?{tone:"informative",text:t("login.sessionEnded"),focus:!1,id:0}:a&&"token"===n?{tone:"negative",text:t("login.rejected"),focus:!1,id:0}:null}const F=e=>"string"!=typeof e&&"login.rateLimited"===e.key;function H(t,a,c,u,d){const p=n(),m=r(),[g]=e.useState(()=>s(t,a)),[f,h]=e.useState(null),x=d?"no-api":f,[k,w]=e.useState({attempt:0,error:null});e.useEffect(()=>{if(d)return;const e=new AbortController;return q(a,e.signal).then(e=>h(e),t=>{e.signal.aborted||w(e=>({...e,error:t instanceof Error?t:new Error(String(t))}))}),()=>e.abort()},[a,k.attempt,d]);const[j,y]=e.useState(""),v=i(a),[T,S]=e.useState(v?b.username:""),[E,N]=e.useState(v?b.password:""),[C,D]=e.useState(""),[L,_]=e.useState(!1),[H,U]=e.useState(!1),[M,z]=e.useState({}),[B,O]=e.useState(null),[G,V]=e.useState(0),[Z,$]=e.useState(0),[J,K]=e.useState(Date.now);e.useEffect(()=>{if(Z<=J)return;const e=setTimeout(()=>K(Date.now()),(Z-J)%1e3||1e3);return()=>clearTimeout(e)},[Z,J]);const Q=function(e,t){return Math.max(0,Math.ceil((e-t)/1e3))}(Z,J),W=(e,t)=>n=>{t(n),M[e]&&z(({[e]:t,...n})=>n)},X=async e=>{const n=function(e,t,n,r){const s={};t?A.test(t)||(s.username="login.badUsername"):s.username="login.usernameRequired";const o=[...n].length;return o?"setup"===e&&o<8?s.password="login.passwordShort":o>128||(new TextEncoder).encode(n).length>512?s.password="login.passwordLong":"setup"===e&&n!==r&&(s.confirm="login.mismatch"):s.password="login.passwordRequired",s}(e,T,E,C);if(z(n),Object.keys(n).length)return;U(!0);const r=await I(t,a,e,{username:T,password:E});if(r)if(U(!1),"error"in r)O(p("login.failed",{error:l(r.error,p)}));else{if(r.wait){const e=Date.now();K(e),$(e+1e3*r.wait)}r.switchTo&&(h(r.switchTo),D("")),O(r)}else location.reload()},Y="setup"===x||"login"===x,ee=e=>M[e]?p(M[e]):void 0;return{kind:x,discoveryError:k.error,retryDiscovery:()=>w(e=>({attempt:e.attempt+1,error:null})),title:p("no-api"===x?"login.noApiTitle":"setup"===x?"login.setupTitle":"token"===x?"login.title":"login.passwordTitle"),note:"no-api"===x?p("login.noApiNote"):p("setup"===x?"login.setupNote":"login"===x?"login.connectedTo":"login.note",{backend:c}),demoNote:v&&"login"===x?p("login.demoNote",b):null,alert:R({kind:x,failure:B&&!Q&&F(B)?null:B,attempt:G,ended:g,rejected:u},p),busy:H,token:j,setToken:y,username:T,setUsername:W("username",S),usernameError:ee("username"),password:E,setPassword:W("password",N),passwordError:ee("password"),confirm:C,setConfirm:W("confirm",D),confirmError:ee("confirm"),submit:()=>{H||Q||null===x||"no-api"===x||(O(null),V(e=>e+1),Y?X(x):(()=>{if(!j.trim())return;const e=P(t,a,j);e?O({key:e}):location.reload()})())},canSubmit:null!==x&&"no-api"!==x&&!Q&&(Y||!!j.trim()),submitText:Q?p("login.retryIn",{n:Q}):p("setup"===x?"login.create":"login"===x?"login.signIn":"login.submit"),secretType:L?"text":"password",toggle:()=>_(e=>!e),toggleText:p(Y?L?"login.hidePassword":"login.showPassword":L?"settings.hideToken":"settings.showToken"),guideHref:o(m),requirementsHref:o(m,"no-native-api")}}function U({profileId:e,api:r,backend:s,rejected:o,missingApi:a,lang:i,pickLang:l,dark:c,thLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{bI as r,u as s,al as a,l,dr as o,bP as n,B as i,cf as c,ds as d,C as g,dt as m,U as u,a1 as p,q as h,x as f,cb as x,bT as v,T as j,p as b,bG as w,ch as y,E as M}from"./index-HxEUeoab.js";import{aO as T,a as N,F as k,aP as C,D as $}from"./activity-yZTrGy-J.js";import{C as S}from"./ItemText-DOD_75iR.js";import{P as A,Q as O,K as P,L as R,A as W}from"./logs-C4GIy4tX.js";import{T as L}from"./Toolbar-BTFtduwD.js";import{D}from"./Table-yWn0d3vL.js";import{d as F,e as q}from"./files-Dt8K7QfP.js";import{r as B}from"./recorder-BHyqDNp5.js";import{u as E,C as H}from"./Copy-CGFSe6tr.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./AppearanceControls-sRy1p156.js";import"./Select-D7_6MaHd.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";const I=new WeakMap;function _(e){let t=I.get(e);return void 0===t&&I.set(e,t=Date.parse(e.ts)),t}const J=[...r].reverse();function K({records:m,offered:u,minimum:p,setMinimum:h,waiting:f}){const x=s(),v=a[l()],j=N(),b=e.useMemo(()=>function(e,t,r,s=24){const a=r?J.indexOf(r):J.length-1,l=J.filter((e,r)=>t.includes(e)&&r<=a),o=e.map(_).filter(Number.isFinite);if(!o.length)return{rows:l.map(e=>({level:e,counts:[]})),buckets:[],width:0,busiest:null};const n=Math.min(...o),i=Math.max(...o),c=T(n,i,s),d=c.length>1?c[1]-c[0]:Math.max(i-n,6e4),g=new Map(l.map(e=>[e,new Array(c.length).fill(0)])),m=new Array(c.length).fill(0),u=new Array(c.length).fill(0);for(const x of e){const e=_(x),t=g.get(x.level);if(!t||!Number.isFinite(e))continue;const r=Math.min(c.length-1,Math.floor((e-c[0])/d));t[r]++,m[r]++,"error"===x.level&&u[r]++}const p=e=>e.reduce((t,r,s)=>r>e[t]?s:t,0),h=u.reduce((e,t)=>e+t,0),f=p(h?u:m);return{rows:l.map(e=>({level:e,counts:g.get(e)})),buckets:c,width:d,busiest:{start:c[f],count:h?u[f]:m[f],errors:h}}}(m,u,p),[m,u,p]),w=e.useMemo(()=>o(v),[v]),y=e.useCallback(e=>`${w.format(e)}–${w.format(e+b.width)}`,[w,b.width]),M=e.useMemo(()=>{const e=r.map(e=>{const r=x(n[e]);return[e,{text:r,label:t.jsxs(i,{quiet:!0,small:!0,className:e===p?"current":void 0,label:x(e===p?"log.chart.current":"log.chart.minimum",{level:r}),onPress:()=>h(e),children:[e===p&&t.jsx(S,{}),r]})}]});return new Map(e)},[p,h,x]),$=e.useMemo(()=>{const e={error:j.negative,warn:j.notice,info:j.info,debug:j.subtle,trace:j.muted},t=b.buckets.map(y);return{columns:b.buckets.map(e=>w.format(e)),rows:b.rows.map(r=>{const{text:s,label:a}=M.get(r.level);return{id:r.level,color:e[r.level],label:a,counts:r.counts,titles:r.counts.map((e,r)=>x("log.chart.cell",{time:t[r],level:s,n:e}))}})}},[b,y,w,M,j,x]);if(!m.length)return f?t.jsx(Q,{heads:M,levels:b.rows.map(e=>e.level),time:w.format(0)}):null;const A=b.busiest,O=A?A.errors?[{label:x("log.chart.errors"),value:x("log.chart.count",{n:A.errors}),icon:t.jsx(c,{}),tone:"negative"},{label:x("log.chart.peakErrors"),icon:t.jsx(d,{}),tint:"c1",value:y(A.start),caption:x("log.chart.count",{n:A.count})}]:[{label:x("log.chart.errors"),value:x("log.chart.count",{n:0}),icon:t.jsx(c,{}),tint:"c5"},{label:x("log.chart.peak"),icon:t.jsx(d,{}),tint:"c1",value:y(A.start),caption:x("log.chart.count",{n:A.count})}]:[];return t.jsxs("div",{className:"rp-chart-page",children:[t.jsx(k,{facts:O}),t.jsx(g,{title:x("log.chart.title"),note:x("log.chart.sample",{n:m.length}),children:t.jsx(C,{label:x("log.chart.title"),columns:$.columns,rows:$.rows})})]})}function Q({heads:e,levels:r,time:a}){const l=s(),o=[{label:l("log.chart.errors"),value:l("log.chart.count",{n:0}),icon:t.jsx(c,{}),tint:"c5"},{label:l("log.chart.peak"),icon:t.jsx(d,{}),tint:"c1",value:`${a}–${a}`,caption:l("log.chart.count",{n:0})}],n=r.map(t=>({id:t,color:"transparent",label:e.get(t).label,counts:[0],titles:[""]}));return t.jsxs("div",{className:"rp-chart-page",inert:!0,"aria-hidden":"true",children:[t.jsxs("div",{className:"rp-chart-hold",children:[t.jsx(k,{facts:o}),t.jsx(m,{})]}),t.jsxs("div",{className:"rp-chart-hold",children:[t.jsx(g,{title:l("log.chart.title"),note:l("log.chart.sample",{n:0}),children:t.jsx(C,{label:l("log.chart.title"),columns:[a],rows:n})}),t.jsx(m,{})]})]})}const U={trace:"muted",debug:"neutral",info:"info",warn:"warn",error:"err"},z=new WeakMap;function G(e,t,s,a,l,o=new Set,i){return{rows:e.flatMap(e=>{const t=function(e,t,r){const s=z.get(e);if(s&&s.locale===t)return s.row;const a={id:e.id,timestamp:p(e.ts,t),iso:e.ts,levelText:u(n,e.level,r),tone:U[e.level],target:e.target,gap:!1,record:e,message:e.message+(e.fields?" "+Object.entries(e.fields).map(([e,t])=>`${e}=${"string"==typeof t?t:JSON.stringify(t)}`).join(" "):"")};return z.set(e,{locale:t,row:a}),a}(e,a,l);return o.has(e)?[{...t,id:`gap ${e.id}`,timestamp:"",iso:"",levelText:"",target:"",gap:!0,message:l("log.gap")},t]:[t]}),levels:t.map(e=>{return{id:e,label:(t=e,i&&r.indexOf(t)<r.indexOf(i)?l("log.levelNotRecorded",{level:u(n,e,l)}):u(n,e,l))};var t}),recordedText:i?l("log.recorded",{level:u(n,i,l)}):null,exportBase:`${s||"engLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{j as e,r as n}from"./vendor-react-64fcanlc.js";import{T as a,ci as s,u as r,S as o,af as i,al as t,l,q as d,r as c,cc as u,c5 as m,E as p,a8 as g,ce as h,cf as v,C as b,ak as f,N as j,B as x,ax as y,p as k,cg as w,I as N,b4 as S,ap as P,db as A,aE as C,a as M,b as F,bG as T,dc as L,dd as G,b9 as R,A as D,aK as O,v as E,c9 as q,c2 as _,aU as I,h as B,aV as H,Y as Q,cv as U,cw as K,x as V,w as J,de as W,aa as z,c6 as $,c4 as X,cx as Y,aN as Z,ch as ee,av as ne,df as ae,b5 as se,cs as re,bF as oe,d8 as ie,aL as te}from"./index-HxEUeoab.js";import{L as le,C as de,l as ce}from"./AppearanceControls-sRy1p156.js";import{T as ue}from"./Tabs-DT6MQhIo.js";import{h as me,c as pe,g as ge,S as he,K as ve,n as be,A as fe,L as je,z as xe,v as ye,u as ke,B as we,E as Ne,e as Se,w as Pe}from"./logs-C4GIy4tX.js";import{ad as Ae,a1 as Ce,ae as Me,af as Fe,C as Te,F as Le,ag as Ge,ah as Re,ai as De,aj as Oe,q as Ee,ak as qe,al as _e,am as Ie,an as Be,ao as He,ap as Qe,aq as Ue,ar as Ke,V as Ve,as as Je,at as We,au as ze,av as $e,aw as Xe,ax as Ye,ay as Ze,az as en,aA as nn,aB as an,aC as sn,aD as rn,aE as on,aF as tn,aG as ln,Q as dn,aH as cn,aI as un,aJ as mn,aK as pn}from"./activity-yZTrGy-J.js";import{T as gn}from"./Toolbar-BTFtduwD.js";import{T as hn}from"./TimeCell-BIqfL3y_.js";import{a as vn,$ as bn}from"./GridList-D7qdplA5.js";import{P as fn}from"./ProbeOptionsDialog-BynYQcxa.js";import{D as jn,c as xn}from"./Table-yWn0d3vL.js";import{F as yn,T as kn,L as wn}from"./Tag-SxASl3TF.js";import{FlagField as Nn}from"./FlagPicker-CiyGi8d1.js";import{S as Sn}from"./SearchSelect-BcScGUbQ.js";import{u as Pn}from"./outbounds-Bbb6kdae.js";import{aa as An,z as Cn,ab as Mn,ac as Fn,A as Tn,ad as Ln,ae as Gn,m as Rn,O as Dn,r as On,v as En,l as qn,q as _n,af as In}from"./nodes-6sIn2I0s.js";import{$ as Bn}from"./SearchList-LjCruZYP.js";import{a as Hn,p as Qn}from"./probe-Bj7oT3ox.js";import{n as Un}from"./nav-Bkujhswg.js";import{N as Kn,t as Vn,n as Jn}from"./NumberField-q4-QmTAT.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./ItemText-DOD_75iR.js";import"./Checkbox-CJt7u9-e.js";import"./Select-D7_6MaHd.js";import"./Virtualizer-DMIKG2CD.js";function Wn({label:n,items:a,selected:s,onSelect:t,loading:l,empty:d,children:c}){const u=r();return e.jsx(bn,{className:"rp-cardview","aria-label":n,layout:"grid",items:a,dependencies:[c],selectionMode:"single",selectionBehavior:"replace",disallowEmptySelection:!0,selectedKeys:s?[s]:[],onSelectionChange:e=>{if("all"===e)return;const n=[...e][0];null!=n&&t(String(n))},renderEmptyState:()=>l?e.jsx(o,{shape:"cards",count:3,height:224,grid:!0}):e.jsx(i,{children:d??u("ui.empty")}),children:c})}function zn({id:n,title:r,titleFull:o,meta:i,actions:t,children:l}){return e.jsxs(vn,{id:n,textValue:r,className:s("rp-cardview-card"),children:[e.jsxs("div",{className:"rp-cardview-head",children:[e.jsx(a,{className:"rp-cardview-title",text:o,children:r}),t&&e.jsx("span",{className:"rp-cardview-actions",children:t})]}),i&&e.jsx("div",{className:"rp-cardview-meta",children:i}),l]})}function $n(a,s){return a.split("{names}").map((a,r)=>e.jsxs(n.Fragment,{children:[r>0&&s,a]},r))}function Xn(a,s,r,o){const i=f(s,["",""]),t=a.slice(0,6).map((a,s)=>e.jsxs(n.Fragment,{children:[s>0&&i,e.jsx(le,{appearance:"link",layout:"inline",href:o.get(a.id)??Oe([a.id]),children:e.jsx(j,{name:a.name})})]},a.id));if(a.length<=6)return t;const l=e.jsx(le,{appearance:"link",layout:"inline",href:Oe(a.map(e=>e.id)),children:r("nodes.latency.more",{n:a.length-6})});return r("nodes.latency.andMore",{names:"{names}",more:"{more}"}).split(/(\{names\}|\{more\})/).map((a,s)=>e.jsx(n.Fragment,{children:"{names}"===a?t:"{more}"===a?l:a},s))}const Yn=n=>[{label:n("nodes.latency.lowest"),icon:e.jsx(h,{}),tint:"c2",value:"",caption:" "},{label:n("nodes.latency.highest"),icon:e.jsx(Te,{}),tint:"c4",value:"",caption:" "},{label:n("ui.unavailable"),icon:e.jsx(v,{}),tint:"c5",value:""}];function Zn(){const a=r(),s=l(),{nodes:f,by:j,setBy:x,view:y,hrefs:k}=function(){const e=t[l()],a=d().data?.resources,s=me(c(a,"nodes",{whileLoading:!0})),r=pe(c(a,"groups",{whileLoading:!1})),o=ge(c(a,"providers",{whileLoading:!0})),[i,p]=n.useState("group"),g=u(),h=m(s.data,g),v=m(r.data,g),b=m(o.data,g),f=n.useMemo(()=>Ae(h??[],v,i,e),[h,v,i,e]),j=n.useMemo(()=>new Map((h??[]).map(e=>[e.id,Ce(e,b?.providers??[],!0)])),[h,b]);return{nodes:{...s,data:h},by:i,setBy:p,view:f,hrefs:j}}();if(f.error&&!f.data)return e.jsx(p,{error:f.error,onRetry:f.refetch});const w=!f.data;if(f.data&&!f.data.length)return e.jsx(i,{children:a("ui.empty")});const N=Me(y),{measured:S,down:P}=Fe(y),A=S[0],C=S.at(-1),M=A&&C?[{label:a("nodes.latency.lowest"),icon:e.jsx(h,{}),tint:"c2",value:A.name,nodeName:!0,valueRole:"name",caption:g(A.latest,a)},{label:a("nodes.latency.highest"),icon:e.jsx(Te,{}),tint:"c4",value:C.name,nodeName:!0,valueRole:"name",caption:g(C.latest,a)},{label:a("ui.unavailable"),value:a("nodes.latency.count",{n:P}),icon:e.jsx(v,{}),tint:"c5",tone:P?"negative":voidLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,a as t,$ as i,j as a}from"./vendor-react-64fcanlc.js";import{g7 as s,em as n,ez as r,g8 as l,cC as o,cN as u,fi as c,en as d,cJ as m,g9 as p,ep as v,dv as h,cK as f,fN as b,dA as g,cI as y,ga as N,ex as S,cD as x,g6 as P,cE as D,gb as w,eP as E,er as V,dw as M,dz as F,cO as R,cP as I,cQ as C,cR as B,cS as O,bp as T,cT as j,d1 as L,cU as k,cW as $,gc as U,gd as A,cX as q,eN as G,cY as K,cZ as W,cV as z,I as H,da as Y,u as Z,cm as _,d4 as X,fk as J,ge as Q,cl as ee,b7 as te,d5 as ie,gf as ae,cf as se,dC as ne}from"./index-HxEUeoab.js";const re=new RegExp("^.*\\(.*\\).*$"),le=["latn","arab","hanidec","deva","beng","fullwide"];class oe{constructor(e,t={}){this.locale=e,this.options=t}parse(e){return ce(this.locale,this.options,e).parse(e)}isValidPartialNumber(e,t,i){return ce(this.locale,this.options,e).isValidPartialNumber(e,t,i)}getNumberingSystem(e){return ce(this.locale,this.options,e).options.numberingSystem}}const ue=new Map;function ce(e,t,i){let a=de(e,t);if(!e.includes("-nu-")&&!a.isValidPartialNumber(i))for(let s of le)if(s!==a.options.numberingSystem){let a=de(e+(e.includes("-u-")?"-nu-":"-u-nu-")+s,t);if(a.isValidPartialNumber(i))return a}return a}function de(e,t){let i=e+(t?Object.entries(t).sort((e,t)=>e[0]<t[0]?-1:1).join():""),a=ue.get(i);return a||(a=new me(e,t),ue.set(i,a)),a}class me{constructor(e,t={}){this.locale=e,1!==t.roundingIncrement&&null!=t.roundingIncrement&&(null==t.maximumFractionDigits&&null==t.minimumFractionDigits?(t.maximumFractionDigits=0,t.minimumFractionDigits=0):null==t.maximumFractionDigits?t.maximumFractionDigits=t.minimumFractionDigits:null==t.minimumFractionDigits&&(t.minimumFractionDigits=t.maximumFractionDigits)),this.formatter=new Intl.NumberFormat(e,t),this.options=this.formatter.resolvedOptions(),this.symbols=function(e,t,i,a){let s=new Intl.NumberFormat(e,{...i,minimumSignificantDigits:1,maximumSignificantDigits:21,roundingIncrement:1,roundingPriority:"auto",roundingMode:"halfExpand",useGrouping:!0}),n=s.formatToParts(-10000.111),r=s.formatToParts(10000.111),l=ve.map(e=>s.formatToParts(e)),o=l.map((e,t)=>{let i=e.find(e=>"unit"===e.type);return i&&!e.some(e=>"integer"===e.type||"fraction"===e.type)?{unit:i.value,value:ve[t]}:null}).filter(e=>!!e),u=n.find(e=>"minusSign"===e.type)?.value??"-",c=r.find(e=>"plusSign"===e.type)?.value;c||"exceptZero"!==a?.signDisplay&&"always"!==a?.signDisplay||(c="+");let d=new Intl.NumberFormat(e,{...i,minimumFractionDigits:2,maximumFractionDigits:2}).formatToParts(.001),m=d.find(e=>"decimal"===e.type)?.value,p=n.find(e=>"group"===e.type)?.value,v=n.filter(e=>!pe.has(e.type)).map(e=>fe(e.value)),h=l.flatMap(e=>e.filter(e=>!pe.has(e.type)).map(e=>fe(e.value))),f=[...new Set([...v,...h])].sort((e,t)=>t.length-e.length),b=0===f.length?new RegExp("\\p{White_Space}|\\p{Cf}","gu"):new RegExp(`${f.join("|")}|\\p{White_Space}|\\p{Cf}`,"gu"),g=[...new Intl.NumberFormat(i.locale,{useGrouping:!1}).format(9876543210)].reverse(),y=new Map(g.map((e,t)=>[e,t])),N=new RegExp(`[${g.join("")}]`,"g");return{minusSign:u,plusSign:c,decimal:m,group:p,literals:b,numeral:N,numerals:g,index:e=>String(y.get(e)),noNumeralUnits:o}}(e,this.formatter,this.options,t),"percent"===this.options.style&&((this.options.minimumFractionDigits??0)>18||(this.options.maximumFractionDigits??0)>18)&&console.warn("NumberParser cannot handle percentages with greater than 18 decimal places, please reduce the number in your options.")}parse(e){let t=this.formatter.resolvedOptions().useGrouping,i=this.sanitize(e);if(!t&&this.symbols.group&&i.includes(this.symbols.group))return NaN;if(this.symbols.group&&(i=i.replaceAll(this.symbols.group,"")),this.symbols.decimal&&(i=i.replace(this.symbols.decimal,".")),this.symbols.minusSign&&(i=i.replace(this.symbols.minusSign,"-")),i=i.replace(this.symbols.numeral,this.symbols.index),"percent"===this.options.style){let e=i.indexOf("-");i=i.replace("-",""),i=i.replace("+","");let t=i.indexOf(".");-1===t&&(t=i.length),i=i.replace(".",""),i=t-2==0?`0.${i}`:t-2==-1?`0.0${i}`:t-2==-2?"0.00":`${i.slice(0,t-2)}.${i.slice(t-2)}`,e>-1&&(i=`-${i}`)}let a=i?+i:NaN;if(isNaN(a))return NaN;if("percent"===this.options.style){let e={...this.options,style:"decimal",minimumFractionDigits:Math.min((this.options.minimumFractionDigits??0)+2,20),maximumFractionDigits:Math.min((this.options.maximumFractionDigits??0)+2,20)};return new oe(this.locale,e).parse(new s(this.locale,e).format(a))}return"accounting"===this.options.currencySign&&re.test(e)&&(a*=-1),a}sanitize(e){let t=this.formatter.resolvedOptions().useGrouping;return this.symbols.noNumeralUnits.length>0&&this.symbols.noNumeralUnits.find(t=>t.unit===e)?this.symbols.noNumeralUnits.find(t=>t.unit===e).value.toString():(e=e.replace(this.symbols.literals,""),this.symbols.minusSign&&(e=e.replace("-",this.symbols.minusSign)),"arab"===this.options.numberingSystem&&(this.symbols.decimal&&(e=he(e,",",this.symbols.decimal),e=he(e,String.fromCharCode(1548),this.symbols.decimal)),this.symbols.group&&t&&(eLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{j as r}from"./vendor-react-64fcanlc.js";import"./index-HxEUeoab.js";import{L as e}from"./Tag-SxASl3TF.js";function o({label:o,href:s}){return s?r.jsx(e,{href:s,children:o}):o}export{o as O};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{ah as a,Q as s,aO as r,aZ as o,a_ as i,b0 as n,a1 as l,a0 as c,a5 as d,aX as p,X as u,h as v,Y as m,u as h,l as f,al as g,q as x,am as b,r as j,ao as y,an as w,x as k,bT as _,p as N,E as H,T as S,C as L,ax as R,bU as A,af as C,av as I,aD as V,S as D,P as E,B as P,bV as W}from"./index-HxEUeoab.js";import{d as B,e as F}from"./files-Dt8K7QfP.js";import{r as q,e as M,u as O,b as T,D as K,R as U}from"./activity-yZTrGy-J.js";import{e as J,K as X,A as z}from"./logs-C4GIy4tX.js";import{L as Q}from"./AppearanceControls-sRy1p156.js";import{D as Y,t as Z}from"./Table-yWn0d3vL.js";import{D as G}from"./DaeCode-DEjXqvav.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./ItemText-DOD_75iR.js";import"./Select-D7_6MaHd.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";import"./daeTokens-BVtuNnWZ.js";const $={connections:v("connections",{tab:"list"}),flows:v("flows",{tab:"records"}),routing_trace:v("rules",{tab:"trace"}),dns_query:v("dns",{tab:"query"}),dns_cache:v("dns",{tab:"cache"}),dns_log:v("dns",{tab:"log"}),events:v("events"),probes:v("nodes",{tab:"latency"}),traffic_history:v("activity"),memory_history:v("activity"),runtime_outbounds:v("activity"),logs:v("logs"),providers:v("nodes"),rules:v("rules",{tab:"list"}),config:v("config"),config_validate:v("config",{tab:"source",panel:"diagnostics"}),runtime_settings:v("settings",{card:"runtime"}),geodata:v("settings",{card:"geodata"})},ee={ebpf:"ov.v.ebpf",userspace:"ov.v.userspace",mock:"ov.v.mock",active:"ov.v.active",degraded:"ov.v.degraded",detached:"ov.v.detached",failed:"ov.v.failed",disabled:"ov.v.disabled",full:"ov.v.full",partial:"ov.v.partial",none:"ov.v.none",real:"ov.v.real",loaded:"ov.v.loaded",not_loaded:"ov.v.notLoaded",attached:"ov.v.attached",partially_attached:"ov.v.partiallyAttached",published:"ov.v.published",not_published:"ov.v.notPublished",healthy:"ov.v.healthy",ready:"ov.v.ready",error:"ov.v.error",unknown:"ov.v.unknown",ingress:"ov.v.ingress",egress:"ov.v.egress"};function te(e,t){return ee[e]?t(ee[e]):e}function ae(e,t,a,s,r=!1,o=[]){const i=e.ebpf,n=i?.maps?.conn_state,l=(e,t)=>{const s=function(e,t,a){return"degraded"===e?{title:a("ov.v.degraded"),text:a(t?"ov.degradedHelp.runtime":"ov.degradedHelp.datapath")}:"unknown"===e?{title:a("ov.v.unknown"),text:a("ov.unknownHelp")}:void 0}(t,r,a);return s?{label:a(e),value:te(t,a),help:s}:[a(e),te(t,a)]},c=i?.maps?.state??"unknown",d=i&&function(e,t,a,s){if("unknown"!==e||!t.length)return;const r=new Intl.ListFormat(s,{type:"conjunction"}).format(t);return{title:a("ov.v.notVerified"),text:a("ov.notVerifiedHelp",{hooks:r})}}(i.hooks,o,a,s);return[l("ov.f.kind",e.kind),l("ov.f.state",e.state),..."partial"===e.visibility&&i?[]:[l("ov.f.visibility",e.visibility)],...i?[l("ov.f.backend",i.backend),l("ov.f.programs",i.programs),d?{label:a("ov.f.hooks"),value:a("ov.v.notVerified"),help:d}:l("ov.f.hooks",i.hooks),l("ov.f.routing",i.routing.state),l("ov.f.health",i.health),..."partial"===c&&n&&!n.occupancy_known?[[a("ov.f.maps"),a("ov.mapCapacity",{capacity:m(n.capacity,s)})]]:[l("ov.f.maps",c),[a("ov.f.connState"),n?.occupancy_known&&null!==n.occupancy?a("ui.fraction",{part:m(n.occupancy,s),whole:m(n.capacity,s)}):n?a("ov.occupancyUnknown",{capacity:m(n.capacity,s)}):t]]]:[]]}const se={service:"ov.v.cgroupService",shared:"ov.v.cgroupShared"},re={service:"ov.cgroupHelp.service",shared:"ov.cgroupHelp.shared"};function oe(e,t,s,r=[],o=!1){const i=e.cgroup?.scope,n=e=>{const t=a(e??null);return null===t?"—":m(t,s)},l=[["ov.f.rss",c(e.process?.rss_bytes??null,s)],["ov.f.cgroupCurrent",c(e.cgroup?.current_bytes??null,s)],["ov.f.cgroupLimit",o&&null===e.cgroup?.limit_bytes?t("ov.noLimit"):c(e.cgroup?.limit_bytes??null,s)],["ov.f.cgroupScope",i&&"unknown"!==i?t(se[i]):"—"],["ov.f.oomHigh",n(e.cgroup?.events?.high)],["ov.f.oom",n(e.cgroup?.events?.oom)],["ov.f.oomKill",n(e.cgroup?.events?.oom_kill)],["ov.f.ebpfBytes",c(e.kernel?.ebpf_bytes??null,s)]],d=[...r,..."unknown"===i?["ov.f.cgroupScope"]:[],...e.kernel?[]:["ov.f.ebpfBytes"]];return l.filter(([e])=>!d.includes(e)).map(([e,a])=>"ov.f.cgroupScope"===e&&i&&"unknown"!==i?{label:t(e),value:a,help:{title:t(e),text:t("ui.valuePair",{label:a,value:t(re[i])})}}:[t(e),a])}const ie={status:"overview-status",limits:"overview-limits",datapath:"overview-datapath"};function ne(t=""){const v=h(),N=f(),H=g[N],S=x(),L=S.data?.resources,R=b(j(L,"runtime",{whileLoading:!1})),A=y(j(L,"datapath",{whileLoading:!1})),C=w(j(L,"runtime_memory",{whileLoading:!1})),I=k(),V=_(j(L,"runtime_settings",{whileLoading:!1})),D=O(R.data,S.data,R.refetch),[E,P]=e.useState(!1),W=e.useMemo(()=>({capabilities:S.data,runtime:R.data,version:I.data,memory:C.data,datapath:A.data}),[S.data,R.data,I.data,C.data,A.data]),K=e.useMemo(()=>S.data?T(S.data,I.data,v,N,V.data?.recording):[],[S.data,I.data,v,N,V.data?.recording]),U=K.length>0,X=!!A.data,z=S.loading||R.loading||I.loading||C.loading||A.loadiLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{P as n}from"./ProbeOptionsDialog-BynYQcxa.js";import{C as i,a as s,b as r,E as l}from"./ConditionRow-B8Otz3rt.js";import{A as o}from"./AddCircle-C6Jc7GCc.js";import{T as a,R as d,j as c,s as u,u as p,w as m,l as h,k as g,U as f,V as b,S as y,O as v,Q as x,r as j,P as k}from"./nodes-6sIn2I0s.js";import{bp as w,u as S,h as N,I as C,N as M,w as _,aV as I,cj as E,U as D,G as O,aW as P,bQ as L,ck as R,b1 as z,aU as T,Y as $,al as q,l as K,cl as A,b7 as F,i as H,af as V,bG as G,ch as U,cm as B,cn as J,bw as Q,co as Y,cp as W,B as X,aE as Z,bk as ee,cq as te,b5 as ne,cr as ie,cs as se,aA as re,bF as le,c1 as oe,a9 as ae,ct as de,cu as ce,q as ue,r as pe,cv as me,cw as he,aR as ge,t as fe,A as be,aN as ye,aq as ve,H as xe,az as je,c2 as ke,v as we,cx as Se,E as Ne,cg as Ce,aG as Me,cy as _e,C as Ie,p as Ee,T as De,cz as Oe,ax as Pe,av as Le,b as Re,a as ze}from"./index-HxEUeoab.js";import{T as Te,a as $e,L as qe}from"./Tag-SxASl3TF.js";import{D as Ke}from"./DaeCode-DEjXqvav.js";import{N as Ae,L as Fe,D as He,K as Ve,h as Ge,g as Ue,u as Be,c as Je,v as Qe,w as Ye,m as We,x as Xe,S as Ze,n as et}from"./logs-C4GIy4tX.js";import{T as tt}from"./Toolbar-BTFtduwD.js";import{C as nt,L as it}from"./AppearanceControls-sRy1p156.js";import{$ as st,S as rt}from"./SearchList-LjCruZYP.js";import{i as lt,v as ot,w as at,x as dt,y as ct,z as ut,A as pt,E as mt,G as ht,H as gt,I as ft,J as bt,K as yt,M as vt,N as xt,O as jt,P as kt,Q as wt,T as St,V as Nt,X as Ct,Y as Mt,Z as _t}from"./activity-yZTrGy-J.js";import{$ as It,a as Et}from"./GridList-D7qdplA5.js";import{$ as Dt,a as Ot,b as Pt,c as Lt,d as Rt}from"./Virtualizer-DMIKG2CD.js";import{$ as zt,a as Tt}from"./Select-D7_6MaHd.js";import{a as $t,b as qt}from"./ItemText-DOD_75iR.js";import{S as Kt}from"./SearchSelect-BcScGUbQ.js";import{N as At,t as Ft,n as Ht}from"./NumberField-q4-QmTAT.js";import{p as Vt}from"./probe-Bj7oT3ox.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Checkbox-CJt7u9-e.js";import"./daeTokens-BVtuNnWZ.js";const Gt={minItemSize:new Ot(200,200),maxItemSize:new Ot(1/0,1/0),preserveAspectRatio:!1,minSpace:new Ot(18,18),maxSpace:1/0,maxColumns:1/0,dropIndicatorThickness:2,loaderHeight:48};class Ut extends Dt{shouldInvalidateLayoutOptions(e,t){return e.maxColumns!==t.maxColumns||e.dropIndicatorThickness!==t.dropIndicatorThickness||e.preserveAspectRatio!==t.preserveAspectRatio||!(e.minItemSize||Gt.minItemSize).equals(t.minItemSize||Gt.minItemSize)||!(e.maxItemSize||Gt.maxItemSize).equals(t.maxItemSize||Gt.maxItemSize)||!(e.minSpace||Gt.minSpace).equals(t.minSpace||Gt.minSpace)||e.maxHorizontalSpace!==t.maxHorizontalSpace||e.loaderHeight!==t.loaderHeight||e.direction!==t.direction}update(e){let{minItemSize:t=Gt.minItemSize,maxItemSize:n=Gt.maxItemSize,preserveAspectRatio:i=Gt.preserveAspectRatio,minSpace:s=Gt.minSpace,maxHorizontalSpace:r=Gt.maxSpace,maxColumns:l=Gt.maxColumns,dropIndicatorThickness:o=Gt.dropIndicatorThickness,loaderHeight:a=Gt.loaderHeight,direction:d="ltr"}=e.layoutOptions||{};this.dropIndicatorThickness=o,this.direction=d;let c=this.virtualizer.size.width,u=Math.min(n.width,c),p=Number.isFinite(n.height)?n.height:Math.floor(t.height/t.width*u),m=Math.floor(c/(t.width+s.width)),h=Math.max(1,Math.min(l,m));this.numColumns=h;let g=c-s.width*Math.max(0,h),f=Math.floor(g/h);f=Math.max(t.width,Math.min(u,f));let b=(f-t.width)/Math.max(1,u-t.width),y=t.height+Math.floor((p-t.height)*b);y=Math.max(t.height,Math.min(p,y));let v=Math.min(Math.max(r,s.width),Math.floor((c-h*f)/(h+1)));this.gap=new Ot(v,s.height),this.margin=Math.floor((c-h*f-v*(h+1))/2);let x=this.virtualizer.collection,j=x.size,k=x.getLastKey();for(let E=0;E<2&&null!=k;E++){let e=x.getItem(k);if("skeleton"===e?.type){j++;break}k=x.getKeyBefore(k)}let w=Math.ceil(j/h),S=x[Symbol.iterator](),N=w>0?s.height:0,C=new Map,M=null,_=0;for(let E=0;E<w;E++){let t=0,n=[];for(let s=0;s<h;s++){let r=M||S.next().value;if(!r)break;if("loader"===r.type)continue;"skeleton"===r.type&&(M=r);let l=M?`${M.key}-${_++}`:r.key,o=this.layoutInfos.get(l),a=r;M&&(a=o&&o.content.key===l?o.content:{...M,key:l});let d=v+s*(f+v)+this.margin,c=y,u=!i;o&&u&&(c=o.rect.height,u=e.layoutOptionsChanged||e.sizeChanged||o.estimatedSize||o.content!==a);let p=new Lt(d,N,f,c),m=new Pt(r.type,l,p);m.estimatedSize=u,m.allowOverflow=!0,m.content=a,C.set(l,m),n.push(m),t=Math.max(t,m.rect.height)}for(let e of n)e.rect.height=t;N+=t+s.height,M&&E===w-1&&N<this.virtualizer.size.height&&w++}let I=x.getItem(x.getLastKey());if("loader"===I?.type){(_>0||!I.props.isLoading)&&(a=0);let e=new Lt(v,N,c-2*v,a),t=new Pt("loader",I.key,e);C.set(I.key,t),N=t.rect.maxY}this.layoutInfos=C,this.contentSize=new Ot(this.virtualizer.size.width,N)}getLayoutInfo(e){return this.layoutInfos.get(e)||null}getContentSize(){return this.contentSize}getVisibleLayoutInfos(e){let t=[];for(let n of this.layoutInfos.values())(n.rect.intersects(e)||this.virtualizer.isPersistedKey(n.key)||"loader"===n.tLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as s}from"./vendor-react-64fcanlc.js";import{u as o,b5 as i,cr as c,ch as a,B as r}from"./index-HxEUeoab.js";import{F as n,G as t,L as l}from"./logs-C4GIy4tX.js";function d({model:d}){const h=o(),m=e.useId(),p=n(),[u,b]=e.useState(t(d.choices,p.choice)?.id??""),[j,x]=e.useState(p.cold),[f,g]=e.useState(p.leaves),v=d.busy||!d.choices.some(e=>e.id===u);return s.jsx(i,{narrow:!0,isOpen:!0,onOpenChange:e=>!e&&d.close(),title:h("probe.title"),description:d.name,footer:()=>s.jsxs(s.Fragment,{children:[s.jsx(r,{onPress:d.close,children:h("ui.cancel")}),s.jsx(r,{accent:!0,type:"submit",form:m,isDisabled:v,children:h("probe.submit")})]}),children:s.jsxs(c,{id:m,onSubmit:e=>{e.preventDefault(),v||d.submit({...p,choice:u,cold:j,leaves:f})},children:[s.jsx(l,{label:h("probe.kind"),value:u,onChange:b,items:d.choices.map(e=>({id:e.id,label:h(e.label)}))}),s.jsx(a,{isSelected:j,onChange:x,children:h("probe.cold")}),d.group&&s.jsx(a,{isSelected:f,onChange:g,children:h("probe.leaves")})]})})}export{d as P};
|
||||
@@ -1,2 +0,0 @@
|
||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Trace-BZtIse5U.js","./vendor-react-64fcanlc.js","./_commonjsHelpers-CXUWDbkB.js","./index-HxEUeoab.js","./index-CcbWXWDN.css","./flows-dBNkBg79.js","./logs-C4GIy4tX.js","./Select-D7_6MaHd.js","./ItemText-DOD_75iR.js","./AppearanceControls-sRy1p156.js","./nodes-6sIn2I0s.js","./probe-Bj7oT3ox.js","./useQuickRule-DUEi6geL.js","./DaeCode-DEjXqvav.js","./daeTokens-BVtuNnWZ.js","./AddCircle-C6Jc7GCc.js","./SearchSelect-BcScGUbQ.js","./SearchList-LjCruZYP.js","./Virtualizer-DMIKG2CD.js","./Toolbar-BTFtduwD.js","./rule-Bl9YOsFn.js","./activity-yZTrGy-J.js","./activity-Db7VRWAG.css","./NumberField-q4-QmTAT.js","./Table-yWn0d3vL.js","./Checkbox-CJt7u9-e.js","./Tabs-DT6MQhIo.js","./ConditionRow-B8Otz3rt.js","./Coverage-8qg_JeNJ.js","./labels-D8xxfRTQ.js","./nav-DG4JD5-H.js","./recorder-BHyqDNp5.js","./geodataUpdate-D9CXpIul.js","./LinkOut-D-cvJjm2.js","./impact-B8feJDtJ.css"])))=>i.map(i=>d[i]);
|
||||
import{cA as e,cB as n,cC as s,cD as i,cE as l,cF as a,cG as r,bp as t,cH as o,cI as d,cJ as u,cK as c,cL as p,cM as m,cN as f,cO as b,cP as h,cQ as g,cR as v,cS as x,cT as y,cU as k,cV as w,cW as j,cX as S,cY as _,cZ as C,c_ as N,c$ as D,d0 as M,d1 as P,d2 as R,d3 as I,aD as H,d4 as q,d5 as O,aA as E,b7 as L,c2 as A,c4 as F,al as T,Y as V,U as W,H as B,a8 as $,ak as U,a6 as Q,o as G,h as J,r as K,d6 as X,a1 as Y,w as Z,u as z,aK as ee,cw as ne,A as se,l as ie,q as le,bT as ae,aP as re,aQ as te,m as oe,x as de,aO as ue,aM as ce,ab as pe,C as me,bk as fe,bF as be,ch as he,B as ge,aL as ve,cr as xe,cq as ye,p as ke,d7 as we,bG as je,d8 as Se,E as _e,cy as Ce,ax as Ne,b8 as De,aE as Me,cg as Pe,av as Re,T as Ie,c3 as He,c6 as qe,L as Oe,aG as Ee,d9 as Le,_ as Ae}from"./index-HxEUeoab.js";import{r as Fe,$ as Te,j as Ve}from"./vendor-react-64fcanlc.js";import{_ as We,$ as Be,a0 as $e,a1 as Ue,a2 as Qe,a3 as Ge,a4 as Je,a5 as Ke,a6 as Xe,a7 as Ye,a8 as Ze,a9 as ze,aa as en,ab as nn,ac as sn,s as ln}from"./activity-yZTrGy-J.js";import{T as an}from"./Tabs-DT6MQhIo.js";import{D as rn}from"./DaeCode-DEjXqvav.js";import{L as tn}from"./AppearanceControls-sRy1p156.js";import{a as on,c as dn,u as un,y as cn,e as pn,w as mn,h as fn,D as bn,L as hn,S as gn}from"./logs-C4GIy4tX.js";import{T as vn}from"./Toolbar-BTFtduwD.js";import{D as xn}from"./Table-yWn0d3vL.js";import{C as yn,a as kn,E as wn}from"./ConditionRow-B8Otz3rt.js";import{c as jn,C as Sn}from"./Coverage-8qg_JeNJ.js";import{d as _n,b as Cn,c as Nn,e as Dn,B as Mn}from"./rule-Bl9YOsFn.js";import{u as Pn,a as Rn,c as In}from"./flows-dBNkBg79.js";import{W as Hn,s as qn,u as On,b as En,X as Ln,Y as An,f as Fn,c as Tn,Z as Vn,j as Wn,e as Bn,_ as $n,$ as Un,a0 as Qn,a1 as Gn,a2 as Jn,a3 as Kn,r as Xn,a4 as Yn,a5 as Zn,a6 as zn,a7 as es,d as ns,D as ss,a8 as is}from"./nodes-6sIn2I0s.js";import{w as ls}from"./labels-D8xxfRTQ.js";import{r as as}from"./nav-DG4JD5-H.js";import{r as rs}from"./recorder-BHyqDNp5.js";import{g as ts,a as os,b as ds}from"./geodataUpdate-D9CXpIul.js";/* empty css */import{L as us}from"./LinkOut-D-cvJjm2.js";import{S as cs}from"./SearchSelect-BcScGUbQ.js";const ps=new WeakMap;let ms=Math.round(1e10*Math.random()),fs=0;const bs=Fe.createContext(null),hs=Fe.createContext(null),gs=Fe.createContext(null),vs=Fe.forwardRef(function(e,n){[e,n]=g(e,n,bs);let{validationBehavior:l}=v(x)||{},a=e.validationBehavior??l??"native",r=function(e){let n=Fe.useMemo(()=>e.name||`radio-group-${ms}-${++fs}`,[e.name]),[s,i]=b(e.value,e.defaultValue??null,e.onChange),[l]=Fe.useState(s),[a,r]=Fe.useState(null),t=h({...e,value:s}),o=t.displayValidation.isInvalid;return{...t,name:n,selectedValue:s,defaultSelectedValue:void 0!==e.value?l:e.defaultValue??null,setSelectedValue:n=>{e.isReadOnly||e.isDisabled||(i(n),t.commitValidation())},lastFocusedValue:a,setLastFocusedValue:r,isDisabled:e.isDisabled||!1,isReadOnly:e.isReadOnly||!1,isRequired:e.isRequired||!1,validationState:e.validationState||(o?"invalid":null),isInvalid:o}}({...e,validationBehavior:a}),[D,M]=y(!e["aria-label"]&&!e["aria-labelledby"]),{radioGroupProps:P,labelProps:R,descriptionProps:I,errorMessageProps:H,...q}=function(e,n){let{name:l,form:a,isReadOnly:r,isRequired:b,isDisabled:h,orientation:g="vertical",validationBehavior:v="aria"}=e,{direction:x}=t(),{isInvalid:y,validationErrors:k,validationDetails:w}=n.displayValidation,{labelProps:j,fieldProps:S,descriptionProps:_,errorMessageProps:C}=o({...e,labelElementType:"span",isInvalid:n.isInvalid,errorMessage:e.errorMessage||k}),N=i(e,{labelable:!0}),{focusWithinProps:D}=d({onBlurWithin(s){e.onBlur?.(s),n.selectedValue||n.setLastFocusedValue(null)},onFocusWithin:e.onFocus,onFocusWithinChange:e.onFocusChange});function M(e,s){let i,l=p(s.currentTarget,{from:f(s),accept:e=>e instanceof m(e).HTMLInputElement&&"radio"===e.type});return"next"===e?(i=l.nextNode(),i||(l.currentNode=s.currentTarget,i=l.firstChild())):(i=l.previousNode(),i||(l.currentNode=s.currentTarget,i=l.lastChild())),!!i&&(i.focus(),n.setSelectedValue(i.value),!0)}let{keyboardProps:P}=u({shortcuts:{ArrowRight:e=>M("rtl"===x&&"vertical"!==g?"prev":"next",e),ArrowLeft:e=>M("rtl"===x&&"vertical"!==g?"next":"prev",e),ArrowDown:e=>M("next",e),ArrowUp:e=>M("prev",e)},allowRepeats:!0}),R=c(l);return ps.set(n,{name:R,form:a,descriptionId:_.id,errorMessageId:C.id,validationBehavior:v}),{radioGroupProps:s(N,{role:"radiogroup",...P,"aria-invalid":n.isInvalid||void 0,"aria-errormessage":e["aria-errormessage"],"aria-readonly":r||void 0,"aria-required":b||void 0,"aria-disabled":h||void 0,"aria-orientation":g,...S,...D}),labelProps:j,descriptionProps:_,errorMessageProps:C,isInvalid:y,validationErrors:k,validationDetails:w}}({...e,label:M,validationBehavior:a},r),O=k({...e,values:{orientation:e.orientation||"vertical",isDisabled:r.isDisabled,isReadOnly:r.isReadOnly,isRequired:r.isRequired,isInvalid:r.isInvalid,state:r},defaultClassName:"react-aria-RadioGroup"}),E=i(e,{global:!0});return Te.createElemeLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{r as s,f1 as a,w as i,f2 as r,K as n,bY as o,ak as l,U as d,Y as u,al as p,f3 as c,f4 as m,f5 as f,dH as h,u as g,l as y,q as b,x as j,f6 as v,b5 as K,eY as x,bG as w,B as M,aE as $,E as k,bE as q,af as L,dj as S}from"./index-HxEUeoab.js";import{$ as _,d as C,a as N}from"./Select-D7_6MaHd.js";import{b as E}from"./ItemText-DOD_75iR.js";import{i as I,h as Y,c as R,g as T,u as G,e as O}from"./logs-C4GIy4tX.js";import{u as A,c as H}from"./flows-dBNkBg79.js";import{Y as P}from"./nodes-6sIn2I0s.js";import{c as Q,o as U,p as V,q as W}from"./nav-BMNMQSWb.js";import{d as z}from"./nav-CBqYxt5v.js";import{r as B,a as F}from"./nav-DG4JD5-H.js";import{f as D}from"./nav-CKRufMnz.js";import{f as J,r as X,g as Z,h as ee}from"./nav-D8kaolOs.js";import{aT as te,a1 as se,aU as ae}from"./activity-yZTrGy-J.js";import{c as ie}from"./nav-BO8viH9G.js";import{n as re,a as ne}from"./nav-Bkujhswg.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./AppearanceControls-sRy1p156.js";const oe=e=>s(e,"groups",{whileLoading:!1})&&!0===e?.config.writable?[{id:"policies:new",titleKey:"group.newGroup",parentKey:"nav.policies",route:"policies",params:{new:"1"},aliases:["group editor"]}]:[],le=e=>e.trim().toLowerCase().replace(/\s+/g," "),de=(e,t,s,a,i,r="",n)=>({hit:{id:t,label:s,description:a,route:i,query:r,...n&&{open:n}},keys:[...new Set(e.flatMap(e=>null==e?[]:[le(e)]))]}),ue=(e,t,s,a,i)=>{const{route:r,query:n}=h(i);return de(e,t,s,a,r,n)};function pe(e,t,s){const a=[{title:e(t),parent:s&&e(s)}];for(const i of c)m(i.id)&&a.push({title:f(i.id,t),parent:s&&f(i.id,s)});return a.flatMap(({title:e,parent:t})=>t?[e,t+" "+e]:[e])}function ce(e,t){let s=3;for(const a of e){if(a===t)return 0;a.startsWith(t)?s=1:3===s&&a.includes(t)&&(s=2)}return s}function me(t,m){const f=g(),h=y(),[K,x]=e.useState(""),w=b(),M=w.data?.resources,$=I(void 0,s(M,"connections",{whileLoading:!1})),k=Y(s(M,"nodes",{whileLoading:!1})),q=R(s(M,"groups",{whileLoading:!1})),L=T(s(M,"providers",{whileLoading:!1})),S=G(s(M,"config",{whileLoading:!1})),_=A(s(M,"rules",{whileLoading:!1})),C=H(s(M,"dns_rules",{whileLoading:!1})),N=[w,$,k,q,L,S,_,C],E=O(j().data),me=!!E.globalSettings,[fe,he]=e.useState(0);e.useEffect(()=>{let e=!0;for(const t of c)v(t.id).then(()=>e&&he(e=>e+1),()=>{});return()=>{e=!1}},[]);const ge=e.useMemo(()=>function(e,t,s){const n=t=>r(t,e),o=e?.resources,l=[...ie().map(e=>({path:"connections",params:{tab:e.id},titleKey:e.titleKey})),...re(o).map(e=>({path:"nodes",params:{tab:e.id},titleKey:e.titleKey})),...D(o).map(e=>({path:"flows",params:{tab:e.id},titleKey:e.titleKey})),...B(o).map(e=>({path:"rules",params:{tab:e.id},titleKey:e.titleKey})),...z(o).map(e=>({path:"dns",params:{tab:e.id},titleKey:e.titleKey})),...Q(s,e).map(e=>({path:"config",params:{tab:e.id},titleKey:e.titleKey,aliases:e.aliases})),...J(o).map(e=>({path:"settings",params:{card:e.id},titleKey:e.titleKey,aliases:e.aliases}))],d=e=>a.find(t=>t.path===e).nav.titleKey;return[...a.filter(e=>e.nav&&n(e.path)).map(e=>de(pe(t,e.nav.titleKey),`page:${e.path}?`,t(e.nav.titleKey),void 0,e.path)),...l.filter(e=>n(e.path)).map(e=>{const s=i("",e.params);return de([...pe(t,e.titleKey,d(e.path)),...e.aliases??[]],`page:${e.path}?${s}`,t(e.titleKey),t(d(e.path)),e.path,s)})]}(w.data,f,me),[w.data,f,me,fe]),ye=e.useMemo(()=>function(e,t){const s=e?.resources,a=new Map(J(s).map(e=>[e.id,e])),r=new Set(s?.runtime_settings.available?s.runtime_settings.fields??[]:[]),n=Object.entries(X).filter(([e])=>r.has(e)).map(([e,t])=>({id:e,labelKey:t,card:"runtime",aliases:void 0})),o=Z(s);return[...ee.filter(e=>!e.sources||o),...n].flatMap(e=>{const s=a.get(e.card);return s?[de([...pe(t,e.labelKey),...e.aliases??[]],`setting:${e.id}`,t(e.labelKey),t(s.titleKey),"settings",i("",{card:e.card,field:e.id}))]:[]})}(w.data,f),[w.data,f,fe]),be=e.useMemo(()=>function(e,t,a){return e&&s(t?.resources,"config",{whileLoading:!1})?e.fields.map(e=>de([...pe(a,e.label),e.key],`global:${e.key}`,a(e.label),a(U[e.group]),"config",i("",{tab:"global",field:e.key}))):[]}(E.globalSettings,w.data,f),[E.globalSettings,w.data,f,fe]),je=e.useMemo(()=>function(e,t){const s=e?.resources;return[...F(s),...oe(s),...ne(s),...V(e),...te].filter(t=>null===t.route||r(t.route,e)).map(e=>de([...pe(t,e.titleKey,e.parentKey),...(e.aliasKeys??[]).flatMap(e=>pe(t,e)),...e.aliases??[]],`feature:${e.id}`,t(e.titleKey),e.parentKey&&t(e.parentKey),e.route,i("",e.params??{}),e.open))}(w.data,f),[w.data,f,fe]),ve=e.useMemo(()=>function(e,t,s){return W(e,t,s).map(e=>ue([e.kind,e.summary],`module:${e.id}`,e.kind,e.range,e.href))}(S.data,E,f),[S.data,E,f]),Ke=e.useMemo(()=>function(e,t){return n(e).map(e=>de([e.domain,e.dst,e.src],`connection:${e.id}`,e.domain||e.dst||e.src||e.id,o(e,t),"connections",i("",{id:e.id})))}($.data,f),[$.data,f]),xe=e.useMemo(()=>function(e,t,s){const a=t?.providers??[];return(e??[]).map(e=>ue([e.name],`node:${e.id}`,e.name,l(s,e.group_ids)||void 0,se(e,a,!0)))}(k.data,L.dataLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as a}from"./vendor-react-64fcanlc.js";import{ek as t,eX as r,eY as s,bG as l}from"./index-HxEUeoab.js";import{d as n,e as i}from"./Virtualizer-DMIKG2CD.js";function o(a){let r=t({usage:"search",...a}),s=e.useCallback((e,a)=>0===a.length||(e=e.normalize("NFC"),a=a.normalize("NFC"),0===r.compare(e.slice(0,a.length),a)),[r]),l=e.useCallback((e,a)=>0===a.length||(e=e.normalize("NFC"),a=a.normalize("NFC"),0===r.compare(e.slice(-a.length),a)),[r]),n=e.useCallback((e,a)=>{if(0===a.length)return!0;e=e.normalize("NFC");let t=0,s=(a=a.normalize("NFC")).length;for(;t+s<=e.length;t++){let l=e.slice(t,t+s);if(0===r.compare(a,l))return!0}return!1},[r]);return e.useMemo(()=>({startsWith:s,endsWith:l,contains:n}),[s,l,n])}function c({label:e,children:t}){const{contains:c}=o({sensitivity:"base"});return a.jsx(r,{value:null,children:a.jsxs(s,{filter:c,children:[a.jsx(l,{search:!0,label:e,autoFocus:!0,className:"rp-menu-search"}),a.jsx(n,{layout:i,layoutOptions:{estimatedRowHeight:32,estimatedHeadingHeight:26},children:t})]})})}const u=Object.freeze(Object.defineProperty({__proto__:null,SearchList:c},Symbol.toStringTag,{value:"Module"}));export{o as $,c as S,u as a};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as s,j as e}from"./vendor-react-64fcanlc.js";import{cm as a,d4 as l,cl as r,bw as i,d5 as c,co as t,dj as d,b7 as n}from"./index-HxEUeoab.js";import{b as o,c as m,$ as p,d as j,a as x}from"./Select-D7_6MaHd.js";import{I as h,a as b,b as f}from"./ItemText-DOD_75iR.js";import{S as u}from"./SearchList-LjCruZYP.js";const N=s=>e.jsxs(x,{id:s.id,className:"rp-item",textValue:s.keywords?`${s.label} ${s.keywords}`:s.label,children:[e.jsx(b,{}),e.jsx(f,{i:s,children:s.desc&&e.jsx(c,{slot:"description",className:n("desc",s.tone),children:s.desc})})]},s.id);function v({label:x,searchLabel:b,sections:f,value:v,onChange:S,isDisabled:g,description:y,side:k,size:w}){const R=s.useRef(null),$=s.useRef(null),z=a(w),C=f.flatMap(s=>s.items).find(s=>s.id===v);return e.jsxs(o,{className:n("rp-picker",k?"rp-cluster":"rp-field"),selectedKey:v,onSelectionChange:s=>{null!=s&&S(String(s))},isDisabled:g,children:[e.jsxs("div",{ref:R,className:k?"rp-cluster":"rp-field",children:[e.jsx(l,{className:k?"rp-label":"lbl",children:x}),e.jsxs(r,{ref:$,className:"rp-selectbtn","data-size":z,children:[e.jsx(m,{children:()=>C?e.jsx(h,{i:C}):v}),e.jsx(i,{})]})]}),y&&e.jsx(c,{slot:"description",className:"rp-label",children:y}),e.jsx(t,{className:"rp-popover rp-search-popover",placement:"bottom start",triggerRef:k?$:R,children:e.jsx(u,{label:b,children:e.jsx(p,{className:"rp-menu-scroll rp-overlay-scroll",children:f.map(s=>s.title?e.jsxs(j,{id:s.id,children:[e.jsx(d,{className:"rp-sec-h",children:s.title}),s.items.map(N)]},s.id):s.items.map(N))})})})]})}export{v as S};
|
||||
@@ -1 +0,0 @@
|
||||
import{bp as e,cD as t,fG as l,cI as o,cK as a,du as s,cC as i,fH as r,fI as n,dY as c,eB as d,d3 as u,eu as p,dZ as g,ek as f,eI as y,fJ as v,cJ as m,fK as b,cH as h,el as D,dx as P,eA as M,cE as S,cF as K,cN as E,em as k,eD as C,eF as F,eE as B,cQ as x,e3 as I,e0 as R,eL as w,fL as A,e1 as V,fM as T,c$ as O,fN as U,cU as H,cV as L,cW as z,cY as N,e2 as q,eO as W,eH as _,e6 as j,d2 as $,eK as Z,fO as G,fP as J,c_ as Q,cT as Y,fQ as X,eT as ee,eU as te,ea as le,fR as oe,cO as ae,cP as se,e4 as ie,cR as re,en as ne,cS as ce,d1 as de,cX as ue,eN as pe,fS as ge,fT as fe,cZ as ye}from"./index-HxEUeoab.js";import{r as ve,$ as me}from"./vendor-react-64fcanlc.js";const be=new WeakMap;function he(e,l,o){let{key:a}=e,s=be.get(l),f=e.isDisabled??l.selectionManager.isDisabled(a),y=e.isSelected??l.selectionManager.isSelected(a),v=e.shouldSelectOnPressUp??s?.shouldSelectOnPressUp,m=e.shouldFocusOnHover??s?.shouldFocusOnHover,b=e.shouldUseVirtualFocus??s?.shouldUseVirtualFocus,h=e.isVirtualized??s?.isVirtualized,D=r(),P=r(),M={role:"option","aria-disabled":f||void 0,"aria-selected":"none"!==l.selectionManager.selectionMode?y:void 0,"aria-label":e["aria-label"],"aria-labelledby":D,"aria-describedby":P},S=l.collection.getItem(a);if(h){let e=Number(S?.index);M["aria-posinset"]=Number.isNaN(e)?void 0:e+1,M["aria-setsize"]=n(l.collection)}let K=s?.onAction?()=>s?.onAction?.(a):void 0,E=function(e,t){let l=be.get(e);if(!l)throw new Error("Unknown list");return`${l.id}-option-${o=t,"string"==typeof o?o.replace(/\s*/g,""):""+o}`;var o}(l,a),{itemProps:k,isPressed:C,isFocused:F,hasAction:B,allowsSelection:x}=c({selectionManager:l.selectionManager,key:a,ref:o,shouldSelectOnPressUp:v,allowsDifferentPressOrigin:v&&m,isVirtualized:h,shouldUseVirtualFocus:b,isDisabled:f,onAction:K||S?.props?.onAction?d(S?.props?.onAction,K):void 0,linkBehavior:s?.linkBehavior,UNSTABLE_itemBehavior:s?.UNSTABLE_itemBehavior,id:E}),{hoverProps:I}=u({isDisabled:f||!m,onHoverStart(){p()||(l.selectionManager.setFocused(!0),l.selectionManager.setFocusedKey(a))}}),R=t(S?.props);delete R.id;let w=g(S?.props);return{optionProps:{...M,...i(R,k,I,w),id:E},labelProps:{id:D},descriptionProps:{id:P},isFocused:F,isFocusVisible:F&&l.selectionManager.isFocused&&p(),isSelected:y,isDisabled:f,isPressed:C,allowsSelection:x,hasAction:B}}const De=new WeakMap;function Pe(e){let{state:t,triggerRef:l,label:o,name:a,form:s,isDisabled:i}=e,r=ve.useRef(null),n=ve.useRef(null),{containerProps:c,selectProps:d}=function(e,t,l){let o=De.get(t)||{},{autoComplete:a,name:s=o.name,form:i=o.form,isDisabled:r=o.isDisabled}=e,{validationBehavior:n,isRequired:c}=o,{visuallyHiddenProps:d}=M({style:{position:"fixed",top:0,left:0}});S(e.selectRef,t.defaultValue,t.setValue),K({validationBehavior:n,focus:()=>l.current?.focus()},t,e.selectRef);let u=t.setValue,p=ve.useCallback(e=>{let t=E(e);t.multiple?u(Array.from(t.selectedOptions,e=>e.value)):u(e.currentTarget.value)},[u]);return{containerProps:{...d,"aria-hidden":!0,"data-react-aria-prevent-focus":!0,"data-a11y-ignore":"aria-hidden-focus"},inputProps:{style:{display:"none"}},selectProps:{tabIndex:-1,autoComplete:a,disabled:r,multiple:"multiple"===t.selectionManager.selectionMode,required:"native"===n&&c,name:s,form:i,value:t.value??"",onChange:p,onInput:p}}}({...e,selectRef:t.collection.size<=300?r:n},t,l),u=Array.isArray(t.value)?t.value:[t.value];if(t.collection.size<=300)return me.createElement("div",{...c,"data-testid":"hidden-select-container"},me.createElement("label",null,o,me.createElement("select",{...d,ref:r},me.createElement("option",{value:"",label:" "}," "),[...t.collection.getKeys()].map(e=>{let l=t.collection.getItem(e);if(l&&"item"===l.type)return me.createElement("option",{key:l.key,value:l.key},l.textValue)}),0===t.collection.size&&a&&u.map((e,t)=>me.createElement("option",{key:t,value:e??""})))));if(a){let e=De.get(t)||{},{validationBehavior:l}=e;0===u.length&&(u=[null]);let o=u.map((e,t)=>{let o={type:"hidden",autoComplete:d.autoComplete,name:a,form:s,disabled:i,value:e??""};return"native"===l?me.createElement("input",{key:t,...o,ref:0===t?n:null,style:{display:"none"},type:"text",required:0===t&&d.required,onChange:()=>{}}):me.createElement("input",{key:t,...o,ref:0===t?n:null})});return me.createElement(me.Fragment,null,o)}return null}var Me;Me={"ar-AE":k,"bg-BG":k,"cs-CZ":k,"da-DK":k,"de-DE":k,"el-GR":k,"en-US":{selectPlaceholder:"Select an item",tableResizer:"Resizer",dropzoneLabel:"DropZone",colorSwatchPicker:"Color swatches"},"es-ES":k,"et-EE":k,"fi-FI":k,"fr-FR":k,"he-IL":k,"hr-HR":k,"hu-HU":k,"it-IT":k,"ja-JP":k,"ko-KR":k,"lt-LT":k,"lv-LV":k,"nb-NO":k,"nl-NL":k,"pl-PL":k,"pt-BR":k,"pt-PT":k,"ro-RO":k,"ru-RU":k,"sk-SK":k,"sl-SI":k,"sr-SP":k,"sv-SE":k,"tr-TR":k,"uk-UA":k,"zh-CN":{colorSwatchPicker:"颜色色板",dropzoneLabel:"放置区域",selectPlaceholder:"选择一个项目",tableResizer:"尺寸调整器"},"zh-TW":{colorSwatchPicker:"色票",dropzoneLabel:"放置區",selectPlaceholder:"選取項目",tableResizeLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
.rp-swatch{border:1px solid var(--rp-line);border-radius:var(--rp-r-md);flex:none;width:120px;height:72px;display:block;position:relative;overflow:hidden}.rp-swatch>span{clip-path:polygon(0 0,100% 0,0 100%);background:var(--sw-bg);position:absolute;inset:0}.rp-swatch>span[data-dark]{transform:rotate(180deg)}.rp-swatch>span:before,.rp-swatch>span:after,.rp-swatch i,.rp-swatch i:after{content:"";position:absolute}.rp-swatch>span:before{background:color-mix(in srgb, var(--sw-bg), var(--sw-text) 10%);inset:0 85% 0 0}.rp-swatch i{background:linear-gradient(var(--sw-text) 0 0) 14% 50% / 50% 18% no-repeat var(--sw-surface);border-radius:12%/20%;inset:11% 45% 58% 20%}.rp-swatch i:after{background:var(--sw-positive);border-radius:50%;inset:36% 10% 36% 76%}.rp-swatch>span:after{border-radius:var(--rp-r-pill);background:var(--sw-accent);inset:50% 63% 41% 20%}.rp-swatch[data-look]>span{--sw-wall:radial-gradient(circle at 20% 25%, #007aff99, transparent 60%), radial-gradient(circle at 85% 20%, #ff2d558c, transparent 55%), radial-gradient(circle at 70% 95%, #ff950099, transparent 60%), linear-gradient(160deg, #e3eaf8, #f8eee2);background:var(--sw-wall)}.rp-swatch[data-look]>span[data-dark]{--sw-wall:radial-gradient(circle at 20% 25%, #0a84ff80, transparent 60%), radial-gradient(circle at 85% 20%, #ff375f66, transparent 55%), radial-gradient(circle at 70% 95%, #ff9f0a66, transparent 60%), linear-gradient(160deg, #070a17, #05131a)}.rp-swatch[data-look]>span:before{background:var(--sw-surface)}.rp-swatch[data-look=lens] i,.rp-swatch[data-look=lens]>span:after{--sw-rim:#ffffffe6;box-shadow:inset 1px 1px 0 var(--sw-rim), inset -1px -1px 0 color-mix(in srgb, var(--sw-rim), transparent 45%)}.rp-select-boxes{gap:var(--rp-space-4);display:grid}.rp-select-grid{gap:var(--rp-space-4);grid-template-columns:repeat(auto-fill,170px);display:grid}.rp-select-grid>section{display:contents}.rp-select-box-head{margin-top:var(--rp-space-1);grid-column:1/-1;font-weight:700}.rp-select-box{align-items:center;gap:var(--rp-space-1);min-width:0;padding:var(--rp-space-6) var(--rp-space-3) var(--rp-space-3);border-radius:var(--rp-r-lg);background:var(--rp-surface);box-shadow:var(--rp-shadow);text-align:center;cursor:default;transition:box-shadow var(--rp-duration) var(--rp-ease), border-color var(--rp-duration) var(--rp-ease);border:2px solid #0000;flex-direction:column;display:flex;position:relative}.rp-select-box>.rp-swatch{margin-bottom:var(--rp-space-1)}.rp-select-box:is([data-hovered],[data-selected]){box-shadow:var(--rp-elevated)}.rp-select-box[data-selected]{border-color:var(--rp-accent)}.rp-select-box-check{width:var(--rp-space-4);height:var(--rp-space-4);color:var(--rp-accent);visibility:hidden;position:absolute;inset-block-start:var(--rp-space-1);inset-inline-end:var(--rp-space-1)}.rp-select-box[data-selected] .rp-select-box-check{visibility:visible}@media (width<=599.98px){.rp-select-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,$ as t,j as s,a}from"./vendor-react-64fcanlc.js";import{du as n,bp as i,dv as r,dw as l,dx as o,cC as d,dy as c,cJ as u,cB as g,cE as p,cN as m,dz as f,cO as h,cQ as b,dA as v,cT as x,cU as j,cD as y,cW as w,cX as k,cV as N,d3 as C,cR as S,d2 as P,aD as T,c$ as _,dB as D,dC as R,dj as I,d5 as E,B as F,cm as M,d4 as V,u as L,bk as H,ch as U,dD as O,a0 as A,ak as q,h as B,m as z,Y as K,aM as $,dE as W,dF as G,dG as Y,cw as X,de as J,bD as Q,bz as Z,A as ee,bB as te,dH as se,bK as ae,dI as ne,bC as ie,dJ as re,s as le,dK as oe,q as de,x as ce,ap as ue,dL as ge,dM as pe,dN as me,dO as fe,dP as he,c9 as be,al as ve,l as xe,bT as je,r as ye,bI as we,U as ke,bP as Ne,aK as Ce,C as Se,E as Pe,ae as Te,S as _e,a as De,b as Re,bF as Ie,p as Ee,cg as Fe,df as Me,aO as Ve,aZ as Le,dQ as He,dR as Ue,aA as Oe,T as Ae,aL as qe,bG as Be,bw as ze,dS as Ke,dT as $e,dU as We,dV as Ge,w as Ye}from"./index-HxEUeoab.js";import{L as Xe}from"./AppearanceControls-sRy1p156.js";import{$ as Je,e as Qe,L as Ze,y as et,c as tt,D as st,K as at,F as nt,T as it,U as rt,G as lt}from"./logs-C4GIy4tX.js";import{T as ot}from"./Tabs-DT6MQhIo.js";import{T as dt}from"./Toolbar-BTFtduwD.js";import{$ as ct,d as ut,a as gt}from"./Select-D7_6MaHd.js";import{C as pt}from"./ItemText-DOD_75iR.js";import{u as mt,s as ft,M as ht,w as bt,D as vt}from"./wallpaper-CEC7gitM.js";import{d as xt,c as jt}from"./auth-CSMbhh2E.js";import{g as yt,r as wt,c as kt,s as Nt,a as Ct,b as St,d as Pt,e as Tt}from"./nav-D8kaolOs.js";import{N as _t,t as Dt,n as Rt}from"./NumberField-q4-QmTAT.js";import{aQ as It,aR as Et,aS as Ft}from"./activity-yZTrGy-J.js";import{D as Mt}from"./Table-yWn0d3vL.js";import{T as Vt}from"./TimeCell-BIqfL3y_.js";import{a as Lt}from"./geodataUpdate-D9CXpIul.js";import{g as Ht,v as Ut}from"./geodata-X0pHz03D.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";const Ot=new WeakMap;function At(e,t){let s=Ot.get(e);if(!s)throw new Error("Unknown slider state");return`${s.id}-${t}`}const qt=0,Bt=100,zt=1;function Kt(t){const{isDisabled:s=!1,minValue:a=qt,maxValue:n=Bt,numberFormatter:i,step:r=zt,orientation:o="horizontal"}=t;let d=e.useMemo(()=>{let e=(n-a)/10;return e=f(e,0,e+r,r),Math.max(e,r)},[r,n,a]),c=e.useCallback(e=>e?.map((t,s)=>{let i=0===s?a:e[s-1],l=s===e.length-1?n:e[s+1];return f(t,i,l,r)}),[a,n,r]),u=e.useMemo(()=>c(Wt(t.value)),[t.value,c]),g=e.useMemo(()=>c(Wt(t.defaultValue)??[a]),[t.defaultValue,a,c]),p=Gt(t.value,t.defaultValue,t.onChange),m=Gt(t.value,t.defaultValue,t.onChangeEnd);const[b,v]=h(u,g,p);let[x]=e.useState(b);const[j,y]=e.useState(new Array(b.length).fill(!1)),w=e.useRef(new Array(b.length).fill(!0)),[k,N]=e.useState(void 0),C=e.useRef(b),S=e.useRef(j);function P(e){return(e-a)/(n-a)}function T(e){return 0===e?a:b[e-1]}function _(e){return e===b.length-1?n:b[e+1]}function D(e){return w.current[e]}function R(e,t){if(s||!D(e))return;const a=T(e),n=_(e);t=f(t,a,n,r);let i=$t(C.current,e,t);var l;l=i,C.current=l,v(l)}let I=e.useRef(null);function E(e=b){switch("number"==typeof e&&(e=[e]),e.length){case 0:return"";case 1:return i.format(e[0]);case 2:return i.formatRange(e[0],e[1]);default:{let t=e.map(e=>i.format(e)),s=I.current;return s&&s.resolvedOptions().locale===i.resolvedOptions().locale||(s=I.current=new Intl.ListFormat(i.resolvedOptions().locale,{type:"unit"})),s.format(t)}}}function F(e){return l((t=e*(n-a)+a,Math.round((t-a)/r)*r+a),a,n);var t}return{values:b,defaultValues:void 0!==t.defaultValue?g:x,getThumbValue:e=>b[e],setThumbValue:R,setThumbPercent:function(e,t){R(e,F(t))},isThumbDragging:e=>j[e],setThumbDragging:function(e,t){if(s||!D(e))return;t&&(C.current=b);const a=S.current[e];var n;S.current=$t(S.current,e,t),n=S.current,S.current=n,y(n),m&&a&&!S.current.some(Boolean)&&m(C.current)},focusedThumb:k,setFocusedThumb:N,getThumbPercent:e=>P(b[e]),getValuePercent:P,getThumbValueLabel:e=>E(b[e]),getFormattedValue:E,getThumbMinValue:T,getThumbMaxValue:_,getPercentValue:F,isThumbEditable:D,setThumbEditable:function(e,t){w.current[e]=t},incrementThumb:function(e,t=1){let s=Math.max(t,r);R(e,f(b[e]+s,a,n,r))},decrementThumb:function(e,t=1){let s=Math.max(t,r);R(e,f(b[e]-s,a,n,r))},step:r,pageSize:d,orientation:o,isDisabled:s}}function $t(e,t,s){return e[t]===s?e:[...e.slice(0,t),s,...e.slice(t+1)]}function Wt(e){if(null!=e)return Array.isArray(e)?e:[e]}function Gt(e,t,s){return a=>{s?.("number"==typeof e||"number"==typeof t?a[0]:a)}}const Yt=e.createContext(null),Xt=e.createContext(null),Jt=e.createContext(null),Qt=e.createContext(null),Zt=e.forwardRef(function(s,a){[s,a]=b(s,a,Yt);let c=e.useRef(null),u=v(s.formatOptions),g=Kt({...s,numberFormatter:u}),[p,m]=x(!s["aria-label"]&&!s["aria-labelledby"]),{groupProps:f,trackProps:h,labelProps:C,outputProps:S}=function(t,s,a){let{labelProps:c,fieldProps:u}=n(t),g="vertical"===t.orientation;Ot.set(s,{id:c.id??u.id,"aria-describedby":t["aria-describedby"],"aria-details":t["Line truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as t,j as e}from"./vendor-react-64fcanlc.js";import{f as s,g3 as i}from"./index-HxEUeoab.js";import{a,aW as r,aX as o,aY as l,a$ as n,b0 as h,b1 as d}from"./activity-yZTrGy-J.js";import{G as m,C as c}from"./AreaCurve-DQSHOSpG.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./AppearanceControls-sRy1p156.js";import"./ItemText-DOD_75iR.js";import"./logs-C4GIy4tX.js";import"./Select-D7_6MaHd.js";import"./array-C0VuvQyb.js";function u({values:u,timestamps:p,color:x,fmt:j,locale:f,height:y=32,floor:g=0,inset:v=0,lines:w}){const M=t.useId(),b=a(),[k,C]=t.useState(null),[$,A]=s(Math.round,120),{tip:W,showAt:I,hide:L}=r(),P=t.useMemo(()=>u.filter(t=>null!==t),[u]),S=P.length>1,T=t.useMemo(()=>[g>0?0:.85*Math.min(...P),Math.max(1.05*Math.max(...P)||1,g)],[P,g]),B=A?.width??0,D=(A?.height??y)-2,E=t.useMemo(()=>{const t=[Math.min(...p),Math.max(...p)];return p.map(e=>o(e,t,[v,Math.max(v,B-v)]))},[p,B,v]),F=t.useCallback(t=>o(t,T,[D,2]),[T,D]),G=t.useMemo(()=>u.map((t,e)=>null===t?null:{x:E[e],y:F(t)}),[u,E,F]);return t.useLayoutEffect(()=>{null!==k&&null!=u[k]&&j&&f&&$.current&&A?I({x:E[k],y:F(u[k]),width:A.width,bounds:l($.current),label:i(f).format(p[k]),lines:w?.(k)??[j(u[k])]}):L()}),e.jsxs("div",{ref:$,style:{height:`var(--rp-spark-fill, ${y}px)`,width:"100%",position:"relative"},"aria-hidden":!!S||void 0,onPointerLeave:()=>C(null),children:[A&&!S&&e.jsx("svg",{"aria-hidden":!0,width:A.width,height:A.height,style:{display:"block",position:"absolute",inset:0},children:e.jsx("line",{x1:v,x2:A.width-v,y1:D,y2:D,stroke:b["hl-med"],strokeDasharray:"2 4"})}),S&&A&&e.jsxs(e.Fragment,{children:[e.jsx(n,{tip:W}),e.jsxs("svg",{className:"rp-activity-surface",width:A.width,height:A.height,viewBox:`0 0 ${A.width} ${A.height}`,style:{display:"block",position:"absolute",inset:0},onPointerMove:t=>{const e=h(t,t.currentTarget,A);C(e.x<0||e.x>A.width||e.y<2||e.y>A.height-2?null:d(E,e.x))},children:[e.jsx("defs",{children:e.jsx(m,{id:M,color:x})}),e.jsx(c,{points:G,baseline:F(Math.max(0,T[0])),color:x,id:M,strokeWidth:1.5}),null!==k&&null!=u[k]&&e.jsx("circle",{cx:E[k],cy:F(u[k]),r:4,fill:x,stroke:b.base,strokeWidth:2})]})]})]})}export{u as SparkPlot};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,$ as t,b as l,j as n}from"./vendor-react-64fcanlc.js";import{ef as i,eg as o,eh as r,ei as s,ej as a,ek as d,bp as c,d_ as u,cK as h,cD as y,el as p,cN as f,cC as g,em as m,en as b,eo as w,ep as v,dY as x,cL as k,eq as C,er as K,es as I,et as S,eu as M,ev as E,ew as R,cA as z,cB as D,ex as P,cJ as N,ey as H,ez as W,eA as T,eB as A,d$ as F,eC as V,eD as L,eE as B,eF as j,cO as O,cQ as $,e0 as U,e3 as _,eG as Y,eH as q,c$ as X,d0 as G,e6 as J,eI as Q,d2 as Z,cU as ee,cW as te,eJ as le,eK as ne,c_ as ie,eL as oe,eM as re,d3 as se,e1 as ae,eb as de,cV as ce,eN as ue,e2 as he,eO as ye,eP as pe,eQ as fe,eR as ge,eS as me,e8 as be,eT as we,eU as ve,ea as xe,u as ke,i as Ce,b4 as Ke,eV as Ie,af as Se,cl as Me,aE as Ee,b9 as Re,aD as ze,bw as De,b7 as Pe,eW as Ne,T as He}from"./index-HxEUeoab.js";import{b as We,a as Te,c as Ae,d as Fe,e as Ve,f as Le,g as Be}from"./Checkbox-CJt7u9-e.js";import{f as je,g as Oe,h as $e,i as Ue,j as _e}from"./Select-D7_6MaHd.js";import{$ as Ye}from"./logs-C4GIy4tX.js";import{e as qe,a as Xe,c as Ge,b as Je,d as Qe}from"./Virtualizer-DMIKG2CD.js";class Ze{constructor(e){if(this.collection=e.collection,this.disabledKeys=e.disabledKeys,this.disabledBehavior=e.disabledBehavior||"all",this.direction=e.direction,this.collator=e.collator,!e.layout&&!e.ref)throw new Error("Either a layout or a ref must be specified.");this.layoutDelegate=e.layoutDelegate||(e.layout?new et(e.layout):new i(e.ref)),this.focusMode=e.focusMode??"row"}isCell(e){return"cell"===e.type}isRow(e){return"row"===e.type||"item"===e.type}isDisabled(e){return"all"===this.disabledBehavior&&(e.props?.isDisabled||this.disabledKeys.has(e.key))&&"selection"!==e.props?.disabledBehavior}findPreviousKey(e,t,l=!1){let n=null!=e?this.collection.getKeyBefore(e):this.collection.getLastKey();for(;null!=n;){let e=this.collection.getItem(n);if(!e)return null;if((l||!this.isDisabled(e))&&(!t||t(e)))return n;n=this.collection.getKeyBefore(n)}return null}findNextKey(e,t,l=!1){let n=null!=e?this.collection.getKeyAfter(e):this.collection.getFirstKey();for(;null!=n;){let e=this.collection.getItem(n);if(!e)return null;if((l||!this.isDisabled(e))&&(!t||t(e)))return n;if(n=this.collection.getKeyAfter(n),null==n)return null}return null}getKeyForItemInRowByIndex(e,t=0){if(t<0)return null;let l=this.collection.getItem(e);if(!l)return null;let n=0;for(let i of o(l,this.collection)){if(i.colSpan&&i.colSpan+n>t)return i.key??null;if(i.colSpan&&(n=n+i.colSpan-1),n===t)return i.key??null;n++}return null}getKeyBelow(e,t){let l=e,n=this.collection.getItem(l);if(!n)return null;if(this.isCell(n)&&(l=n.parentKey??null),null==l)return null;if(l=this.findNextKey(l,e=>"item"===e.type,t?.includeDisabled),null!=l){if(this.isCell(n)){let e=n.colIndex?n.colIndex:n.index;return this.getKeyForItemInRowByIndex(l,e)}if("row"===this.focusMode)return l}return null}getKeyAbove(e,t){let l=e,n=this.collection.getItem(l);if(!n)return null;if(this.isCell(n)&&(l=n.parentKey??null),null==l)return null;if(l=this.findPreviousKey(l,e=>"item"===e.type,t?.includeDisabled),null!=l){if(this.isCell(n)){let e=n.colIndex?n.colIndex:n.index;return this.getKeyForItemInRowByIndex(l,e)}if("row"===this.focusMode)return l}return null}getKeyRightOf(e){let t=this.collection.getItem(e);if(!t)return null;if(this.isRow(t)){let e=o(t,this.collection);return("rtl"===this.direction?r(e)?.key:s(e)?.key)??null}if(this.isCell(t)&&null!=t.parentKey){let l=this.collection.getItem(t.parentKey);if(!l)return null;let n=o(l,this.collection),i=("rtl"===this.direction?a(n,t.index-1):a(n,t.index+1))??null;return i?i.key??null:"row"===this.focusMode?t.parentKey??null:("rtl"===this.direction?this.getFirstKey(e):this.getLastKey(e))??null}return null}getKeyLeftOf(e){let t=this.collection.getItem(e);if(!t)return null;if(this.isRow(t)){let e=o(t,this.collection);return("rtl"===this.direction?s(e)?.key:r(e)?.key)??null}if(this.isCell(t)&&null!=t.parentKey){let l=this.collection.getItem(t.parentKey);if(!l)return null;let n=o(l,this.collection),i=("rtl"===this.direction?a(n,t.index+1):a(n,t.index-1))??null;return i?i.key??null:"row"===this.focusMode?t.parentKey??null:("rtl"===this.direction?this.getLastKey(e):this.getFirstKey(e))??null}return null}getFirstKey(e,t){let l,n=e??null;if(null!=n){if(l=this.collection.getItem(n),!l)return null;if(this.isCell(l)&&!t&&null!=l.parentKey){let e=this.collection.getItem(l.parentKey);return e?s(o(e,this.collection))?.key??null:null}}if(n=this.findNextKey(void 0,e=>"item"===e.type),null!=n&&(l&&this.isCell(l)&&t||"cell"===this.focusMode)){let e=this.collection.getItem(n);if(!e)return null;n=s(o(e,this.collection))?.key??null}return n}getLastKey(e,t){let l,n=e??null;if(null!=n){if(l=this.collection.getItem(n),!l)return null;if(this.isCell(l)&&!t&&null!=l.parentKey){let e=this.collection.getItem(l.parentKey);if(!e)return null;let t=o(e,this.collection);return r(t)?.key??null}}if(n=this.findPreviousKey(void 0,e=>"item"===e.type),null!=n&&(l&&this.isCell(l)&&t||"cell"===this.focLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,$ as t,j as s}from"./vendor-react-64fcanlc.js";import{dY as i,cD as l,dZ as a,cB as o,cC as n,bp as r,d_ as d,cK as c,d$ as u,cO as b,e0 as h,e1 as f,c$ as p,d2 as y,d3 as v,cU as g,cV as K,e2 as m,cQ as S,e3 as x,e4 as P,e5 as D,e6 as C,cR as E,c_ as w,e7 as F,e8 as M,cW as I,e9 as N,ea as j,eb as k,ec as R,ed as L,ee as H}from"./index-HxEUeoab.js";import{a as V}from"./Checkbox-CJt7u9-e.js";import{e as T}from"./Select-D7_6MaHd.js";import{T as A}from"./Toolbar-BTFtduwD.js";const O=new WeakMap;function $(e,t,s){if(!e)return"";return"string"==typeof t&&(t=t.replace(/\s+/g,"")),`${O.get(e)}-${s}-${t}`}class z{constructor(e,t,s,i=new Set){this.collection=e,this.flipDirection="rtl"===t,this.disabledKeys=i,this.tabDirection="horizontal"===s}getKeyLeftOf(e){return this.flipDirection?this.getNextKey(e):this.getPreviousKey(e)}getKeyRightOf(e){return this.flipDirection?this.getPreviousKey(e):this.getNextKey(e)}isDisabled(e){return this.disabledKeys.has(e)||!!this.collection.getItem(e)?.props?.isDisabled}getFirstKey(){let e=this.collection.getFirstKey();return null!=e&&this.isDisabled(e)&&(e=this.getNextKey(e)),e}getLastKey(){let e=this.collection.getLastKey();return null!=e&&this.isDisabled(e)&&(e=this.getPreviousKey(e)),e}getKeyAbove(e){return this.tabDirection?null:this.getPreviousKey(e)}getKeyBelow(e){return this.tabDirection?null:this.getNextKey(e)}getNextKey(e){let t=e;do{t=this.collection.getKeyAfter(t),null==t&&(t=this.collection.getFirstKey())}while(null!=t&&this.isDisabled(t)&&t!==e);return t}getPreviousKey(e){let t=e;do{t=this.collection.getKeyBefore(t),null==t&&(t=this.collection.getLastKey())}while(null!=t&&this.isDisabled(t)&&t!==e);return t}}function B(t){let s=function(t){let[s,i]=b(t.selectedKey,t.defaultSelectedKey??null,t.onSelectionChange),l=e.useMemo(()=>null!=s?[s]:[],[s]),{collection:a,disabledKeys:o,selectionManager:n}=T({...t,selectionMode:"single",disallowEmptySelection:!0,allowDuplicateSelectionEvents:!0,selectedKeys:l,onSelectionChange:e=>{if("all"===e)return;let l=e.values().next().value??null;l===s&&t.onSelectionChange&&t.onSelectionChange(l),i(l)}}),r=null!=s?a.getItem(s):null;return{collection:a,disabledKeys:o,selectionManager:n,selectedKey:s,setSelectedKey:i,selectedItem:r}}({...t,onSelectionChange:t.onSelectionChange?e=>{null!=e&&t.onSelectionChange?.(e)}:void 0,suppressTextValueWarning:!0,defaultSelectedKey:t.defaultSelectedKey??W(t.collection,t.disabledKeys?new Set(t.disabledKeys):new Set)??void 0}),{selectionManager:i,collection:l,selectedKey:a}=s,o=e.useRef(a);return e.useEffect(()=>{let e=a;null!=t.selectedKey||!i.isEmpty&&null!=e&&l.getItem(e)||(e=W(l,s.disabledKeys),null!=e&&i.setSelectedKeys([e])),(null!=e&&null==i.focusedKey||!i.isFocused&&e!==o.current)&&i.setFocusedKey(e),o.current=e}),{...s,isDisabled:t.isDisabled||!1}}function W(e,t){let s=null;if(e){for(s=e.getFirstKey();null!=s&&(t.has(s)||e.getItem(s)?.props?.isDisabled)&&s!==e.getLastKey();)s=e.getKeyAfter(s);null!=s&&(t.has(s)||e.getItem(s)?.props?.isDisabled)&&s===e.getLastKey()&&(s=e.getFirstKey())}return s}const U=e.createContext(null),Q=e.createContext(null),_=e.forwardRef(function(s,i){[s,i]=S(s,i,U);let{children:l,orientation:a="horizontal"}=s;return l=e.useMemo(()=>"function"==typeof l?l({orientation:a,defaultChildren:null}):l,[l,a]),t.createElement(x,{content:l},e=>t.createElement(Y,{props:s,collection:e,tabsRef:i}))});function Y({props:s,tabsRef:i,collection:a}){let{orientation:o="horizontal"}=s,r=B({...s,collection:a,children:void 0}),{focusProps:d,isFocused:c,isFocusVisible:u}=y({within:!0}),b=e.useMemo(()=>({orientation:o,isFocusWithin:c,isFocusVisible:u}),[o,c,u]),h=g({...s,defaultClassName:"react-aria-Tabs",values:b}),f=l(s,{global:!0});return t.createElement(K.div,{...n(f,h,d),ref:i,slot:s.slot||void 0,"data-focused":c||void 0,"data-orientation":o,"data-focus-visible":u||void 0,"data-disabled":r.isDisabled||void 0},t.createElement(I,{values:[[U,s],[Q,r]]},h.children))}const Z=e.forwardRef(function(s,i){return e.useContext(Q)?t.createElement(q,{props:s,forwardedRef:i}):t.createElement(h,s)});function q({props:s,forwardedRef:i}){let a=e.useContext(Q),{CollectionRoot:o}=e.useContext(C),{orientation:b="horizontal",keyboardActivation:h="automatic"}=E(U),f=p(i),{tabListProps:y}=function(t,s,i){let{orientation:l="horizontal",keyboardActivation:a="automatic"}=t,{collection:o,selectionManager:b,disabledKeys:h}=s,{direction:f}=r(),p=e.useMemo(()=>new z(o,f,l,h),[o,h,l,f]),{collectionProps:y}=d({ref:i,selectionManager:b,keyboardDelegate:p,selectOnFocus:"automatic"===a,disallowEmptySelection:!0,scrollRef:i,linkBehavior:"selection"}),v=c();O.set(s,v);let g=u({...t,id:v});return{tabListProps:{...n(y,g),role:"tablist","aria-orientation":l,tabIndex:void 0}}}({...s,orientation:b,keyboardActivation:h},a,f),v=g({...s,children:null,defaultClassName:"react-aria-TabList",values:{orientation:b,state:a}}),m=l(s,{global:!0});return delete m.id,t.createElement(K.div,{...n(m,v,y),ref:f,"data-orientation":b||void 0Line truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as n,a as t}from"./vendor-react-64fcanlc.js";import{l as r,ak as l,dh as s,cl as a,di as c,b7 as o}from"./index-HxEUeoab.js";import{L as u}from"./AppearanceControls-sRy1p156.js";function i({children:e,tone:t,action:r}){return n.jsxs("span",{className:o("rp-tag",t),children:[n.jsx("span",{className:"rp-tag-label",children:e}),r]})}function g({label:e,children:t}){return n.jsx("div",{className:"rp-tags",role:"group","aria-label":e,children:t})}function h({href:e,children:t}){return n.jsx(u,{href:e,className:"rp-tag rp-tag-link",children:n.jsx("span",{className:"rp-tag-label",children:t})})}function d(e,n,t,r){const l=e=>e<=t+.01,s=e.reduce((e,n)=>[...e,e[e.length-1]+n+r],[0]);if(l(s[e.length]-r))return e.length;let a=e.length-1;for(;a>0&&!l(s[a]+n(e.length-a));)a--;return a}function f({count:t,label:r,names:l}){const[o,u]=e.useState(!1);return n.jsxs(s,{delay:400,isOpen:o,onOpenChange:u,shouldCloseOnPress:!1,children:[n.jsx(a,{className:"rp-tag rp-tag-more","aria-label":r,onPress:e=>u(n=>"touch"!==e.pointerType||!n),children:n.jsxs("span",{className:"rp-tag-label",children:["+",t]})}),n.jsx(c,{children:l})]})}const p=e=>n=>e.more[String(n).length-1],m=new Map;let b=null;function j(e){const n=e.filter(e=>null!==e);n.length&&t.flushSync(()=>n.forEach(e=>e()))}function x({label:t,items:s,more:a}){const c=r(),o=e.useRef(null),u=e.useRef(null),i=e.useRef(new Set),g=`${c}\n${s.map(e=>e.label).join("\n")}`,[x,y]=e.useState({key:g,count:null}),w=x.key===g?x.count:null;e.useLayoutEffect(()=>{const e=o.current;if(null!==w||!e?.getClientRects().length)return;const n=[...e.children].map(e=>e.getBoundingClientRect().width),t={key:g,tags:n.slice(0,s.length),more:n.slice(s.length),gap:Number.parseFloat(getComputedStyle(e).columnGap)||0};u.current=t,y({key:g,count:d(t.tags,p(t),e.getBoundingClientRect().width,t.gap)})},[x,g,w,s.length]),e.useLayoutEffect(()=>{const e=o.current;if(!e)return;const n=()=>y({key:g,count:null});m.set(e,{remeasure:n,read:()=>{const t=u.current;if(!e.getClientRects().length)return null;const r=[...e.children].filter(e=>!e.classList.contains("rp-tag-more"));if(t?.key!==g||r.some((e,n)=>Math.abs(e.getBoundingClientRect().width-t.tags[n])>.5))return n;const l=d(t.tags,p(t),e.getBoundingClientRect().width,t.gap);return l===w?null:()=>y({key:g,count:l})}});const t=(b||(b=new ResizeObserver(e=>{j([...new Set(e.map(e=>e.target.closest(".rp-tags[data-fit]")))].map(e=>(e&&m.get(e)?.read())??null))}),document.fonts?.addEventListener("loadingdone",()=>j([...m.values()].map(e=>e.remeasure)))),b),r=new Set([e,...e.children]);for(const l of i.current)r.has(l)||t.unobserve(l);for(const l of r)i.current.has(l)||t.observe(l);i.current=r}),e.useLayoutEffect(()=>{const e=o.current,n=i;return()=>{e&&m.delete(e);for(const e of n.current)b?.unobserve(e);n.current=new Set}},[]);const C=l(c,s.map(e=>e.label)),R=null===w?0:s.length-w,S=null===w&&s.length?Array.from({length:String(s.length).length},(e,n)=>10**(n+1)-1):[];return n.jsxs("div",{ref:o,className:"rp-tags",role:"group","aria-label":t,"data-fit":"",children:[s.slice(0,w??s.length).map(e=>n.jsx(h,{href:e.href,children:e.label},e.id)),S.map(e=>n.jsx(f,{count:e,label:a(e),names:C},e)),R>0&&n.jsx(f,{count:R,label:a(R),names:C})]})}export{x as F,h as L,g as T,i as a};
|
||||
@@ -1 +0,0 @@
|
||||
import{j as a}from"./vendor-react-64fcanlc.js";import{al as s,l as r,dR as t,T as o,dQ as e,a1 as n}from"./index-HxEUeoab.js";function d({at:d}){const i=s[r()],c=t();return a.jsx(o,{text:d?n(d,i):void 0,children:e(d,i,c)})}export{d as T};
|
||||
@@ -1 +0,0 @@
|
||||
import{j as a}from"./vendor-react-64fcanlc.js";import{b7 as r}from"./index-HxEUeoab.js";function o({page:o,className:e,children:s,...t}){return a.jsx("div",{...t,className:r("rp-toolbar",e),"data-page-toolbar":o||void 0,children:s})}export{o as T};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e,j as s}from"./vendor-react-64fcanlc.js";import{bS as r,u as a,l as i,a9 as l,q as n,r as o,z as t,A as d,c9 as u,a6 as p,a3 as m,aK as c,p as j,bF as v,cg as b,bG as h,B as _,ci as f,T as x,C as y}from"./index-HxEUeoab.js";import{u as g,r as k}from"./flows-dBNkBg79.js";import{c as w,h as N,z as q,g as C,q as M,R as A,L,D as T,K as D}from"./logs-C4GIy4tX.js";import{e as R,t as S,c as V,n as E,d as F,q as P,a as I,b as O}from"./Rules-BCWmv1Ss.js";import{a as Q,p as W}from"./probe-Bj7oT3ox.js";import{u as z,R as K}from"./useQuickRule-DUEi6geL.js";import{d as $}from"./activity-yZTrGy-J.js";import{L as H}from"./AppearanceControls-sRy1p156.js";import{N as B,t as G,n as J}from"./NumberField-q4-QmTAT.js";import{T as U}from"./Toolbar-BTFtduwD.js";import{D as X}from"./Table-yWn0d3vL.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Select-D7_6MaHd.js";import"./ItemText-DOD_75iR.js";import"./nodes-6sIn2I0s.js";import"./Tabs-DT6MQhIo.js";import"./Checkbox-CJt7u9-e.js";import"./DaeCode-DEjXqvav.js";import"./daeTokens-BVtuNnWZ.js";import"./ConditionRow-B8Otz3rt.js";import"./Coverage-8qg_JeNJ.js";import"./rule-Bl9YOsFn.js";import"./labels-D8xxfRTQ.js";import"./nav-DG4JD5-H.js";import"./recorder-BHyqDNp5.js";import"./geodataUpdate-D9CXpIul.js";/* empty css */import"./LinkOut-D-cvJjm2.js";import"./SearchSelect-BcScGUbQ.js";import"./SearchList-LjCruZYP.js";import"./Virtualizer-DMIKG2CD.js";import"./AddCircle-C6Jc7GCc.js";const Y=e=>/^\d+$/.test(e)&&Number(e)>=1&&Number(e)<=65535,Z={none:"rule.resolveNone",live:"rule.resolveLive",query:"rule.resolveQuery"};function ee({form:s,setForm:j,advanced:v,setAdvanced:b,touched:h},_){const f=a(),x=i(),y=l(),A=n(),L=A.data?.resources,T=w(o(L,"groups",{whileLoading:!1})),D=N(o(L,"nodes",{whileLoading:!1})),K=g(o(L,"rules",{whileLoading:!1})),H=q(D.refetch),{choices:B}=H,G=z(_),J=e.useMemo(()=>new Map(T.data?.map(e=>[e.name,e])??[]),[T.data]),U=e.useMemo(()=>new Map(T.data?.map(e=>[e.id,e])??[]),[T.data]),X=e.useMemo(()=>new Map(D.data?.map(e=>[e.id,e])??[]),[D.data]),ee=e.useMemo(()=>new Map(K.data?.rules.map(e=>[e.rule_id,e])??[]),[K.data]),[se,re]=e.useState(null),ae=o(L,"providers",{whileLoading:!1}),ie=C(!!se&&ae),le=o(L,"groups",{whileLoading:!1}),{busy:ne,error:oe,run:te}=t(),de=oe??A.error,ue=e.useEffectEvent(e=>d("negative",f("rule.traceFailed"),u(e,f)));e.useEffect(()=>{de&&ue(de)},[de]);const pe=s.domain.trim()||s.dst_ip.trim()?s.dst_ip.trim()&&!r(s.dst_ip)?{field:"dst_ip",key:"ui.invalidIp"}:Y(s.dst_port)?s.src_ip.trim()&&!r(s.src_ip)?{field:"src_ip",key:"ui.invalidIp"}:s.src_port.trim()&&!Y(s.src_port)?{field:"src_port",key:"rule.invalidPort"}:!s.dscp.trim()||(me=s.dscp,/^\d+$/.test(me)&&Number(me)>=0&&Number(me)<=63)?"live"!==s.resolve&&"query"!==s.resolve||s.domain.trim()?"live"!==s.resolve&&"query"!==s.resolve||!s.dst_ip.trim()?null:{field:"dst_ip",key:"rule.invalidLive"}:{field:"domain",key:"rule.invalidLive"}:{field:"dscp",key:"rule.invalidDscp"}:{field:"dst_port",key:"rule.invalidPort"}:{field:"domain",key:"rule.invalidTarget"};var me;const ce=h?pe:null,je=A.data?.resources.routing_trace,ve=je?.resolve_modes??[],be=A.data?.resources.dns_query,he=be?.record_types,_e=e.useMemo(()=>(he??[]).filter(e=>"A"===e||"AAAA"===e),[he]),fe=be?.limits?.max_types_per_request??1,xe=[...ve,...!ve.includes("live")&&ve.includes("none")&&be?.available&&_e.length?["query"]:[]],ye=!1!==je?.available,ge=""!==s.domain.trim()&&!s.dst_ip.trim(),ke=s.resolve??(ge&&xe.includes("live")?"live":ge&&xe.includes("query")?"query":"none"),we=!pe&&ye&&xe.includes(ke),Ne=e.useCallback(async()=>{if(ne||!we)return;const e=function(e){const s=e=>r(e),a={network:e.network,dst_port:Number(e.dst_port),...e.domain.trim()?{domain:e.domain.trim()}:{dst_ip:s(e.dst_ip)}};return e.domain.trim()&&e.dst_ip.trim()&&(a.dst_ip=s(e.dst_ip)),e.src_ip.trim()&&(a.src_ip=s(e.src_ip)),e.src_port.trim()&&(a.src_port=Number(e.src_port)),e.pname.trim()&&(a.pname=e.pname.trim()),e.dscp.trim()&&(a.dscp=Number(e.dscp)),a}(s),a=await te("trace",s=>k({...y,dnsQuery:(e,r)=>M(y.dnsQuery,e,r,fe,s)},{input:e,resolve:ke,recordTypes:_e},s));re(a?{run:a,input:e}:null)},[y,ne,we,s,ke,_e,fe,te]),qe=K.data?.generation_id,Ce=e.useMemo(()=>se?.run.traces.flatMap(e=>e.evaluations.map(s=>({evaluation:s,traced:e.generation_id,current:qe===e.generation_id}))).map(({evaluation:e,traced:s,current:r},a)=>{const i=e.rules.find(e=>"matched"===e.result),l="determinate"!==e.decision&&!e.outbound&&r?(i&&ee.get(i.rule_id)?.outbound)??null:null,n=e.outbound??l,o=n&&!p(n)?m(n,se.input.network,J,U,X):null,t=R(e,a,se.input.domain??void 0,l,o,!!o?.node&&B(o.node).length>0,H.busy,f,x);return{...t,rows:t.rows.map(e=>({...e,href:$(e.id,r&&ee.has(e.id))})),links:V(o,le,ae?ie.data?.providers:[],f),seed:S(se.input,e,s)}})??[],[se,qe,ee,J,U,X,le,ae,ie.data,B,H.busy,f,x]),Me=e.useMemo(()=>se?{status:I(se.run.traces[0],se.run.query,f,x),query:se.run.query&&{...P(se.run.query,f,x),links:E(se.run.query.domain,L,f)},dns:se.run.traces.flatMap(e=>e.Line truncated
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
import{eg as t,bp as e,cN as i,el as n,eZ as s,e_ as o,es as r,ez as l,eP as a,eR as h,e$ as d,e6 as u,f0 as c}from"./index-HxEUeoab.js";import{r as y,$ as g,a as f}from"./vendor-react-64fcanlc.js";class p{constructor(t=0,e=0){this.x=t,this.y=e}copy(){return new p(this.x,this.y)}equals(t){return this.x===t.x&&this.y===t.y}isOrigin(){return 0===this.x&&0===this.y}}class w{constructor(t=0,e=0,i=0,n=0){this.x=t,this.y=e,this.width=i,this.height=n}get maxX(){return this.x+this.width}get maxY(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new p(this.x,this.y)}get topRight(){return new p(this.maxX,this.y)}get bottomLeft(){return new p(this.x,this.maxY)}get bottomRight(){return new p(this.maxX,this.maxY)}intersects(t){return this.area>0&&t.area>0&&this.x<=t.x+t.width&&t.x<=this.x+this.width&&this.y<=t.y+t.height&&t.y<=this.y+this.height}containsRect(t){return this.x<=t.x&&this.y<=t.y&&this.maxX>=t.maxX&&this.maxY>=t.maxY}containsPoint(t){return this.x<=t.x&&this.y<=t.y&&this.maxX>=t.x&&this.maxY>=t.y}getCornerInRect(t){for(let e of["topLeft","topRight","bottomLeft","bottomRight"])if(t.containsPoint(this[e]))return e;return null}equals(t){return t.x===this.x&&t.y===this.y&&t.width===this.width&&t.height===this.height}pointEquals(t){return this.x===t.x&&this.y===t.y}sizeEquals(t){return this.width===t.width&&this.height===t.height}union(t){let e=Math.min(this.x,t.x),i=Math.min(this.y,t.y),n=Math.max(this.maxX,t.maxX)-e,s=Math.max(this.maxY,t.maxY)-i;return new w(e,i,n,s)}intersection(t){if(!this.intersects(t))return new w(0,0,0,0);let e=Math.max(this.x,t.x),i=Math.max(this.y,t.y);return new w(e,i,Math.min(this.maxX,t.maxX)-e,Math.min(this.maxY,t.maxY)-i)}copy(){return new w(this.x,this.y,this.width,this.height)}}class z{constructor(t=0,e=0){this.width=Math.max(t,0),this.height=Math.max(e,0)}copy(){return new z(this.width,this.height)}equals(t){return this.width===t.width&&this.height===t.height}get area(){return this.width*this.height}}let v=0;class m{constructor(t,e){this.virtualizer=t,this.key=++v,this.viewType=e,this.children=new Set,this.reusableViews=new Map,this.layoutInfo=null,this.content=null,this.rendered=null}prepareForReuse(){this.content=null,this.rendered=null,this.layoutInfo=null}getReusableView(t){let e=this.reusableViews.get(t);return e&&e.length>0?e.shift():new b(this.virtualizer,this,t)}reuseChild(t){t.prepareForReuse();let e=this.reusableViews.get(t.viewType);e||(e=[],this.reusableViews.set(t.viewType,e)),e.push(t)}}class S extends m{constructor(t){super(t,"root")}}class b extends m{constructor(t,e,i){super(t,i),this.parent=e}}class x{setVisibleRect(t){let e=performance.now()-this.startTime;e<500&&(t.x!==this.visibleRect.x&&e>0&&(this.velocity.x=(t.x-this.visibleRect.x)/e),t.y!==this.visibleRect.y&&e>0&&(this.velocity.y=(t.y-this.visibleRect.y)/e)),this.startTime=performance.now(),this.visibleRect=t}getOverscannedRect(){let t=this.visibleRect.copy(),e=this.visibleRect.height/3;t.height+=e,this.velocity.y<0&&(t.y-=e);let i=this.visibleRect.width/3;return t.width+=i,this.velocity.x<0&&(t.x-=i),t}constructor(){this.startTime=0,this.velocity=new p(0,0),this.visibleRect=new w}}function I(t){return"x"===t?"width":"height"}function R(t,e,i,n,s){if("start"===i)return t[n]<=s;let o=I(n);return e[o]-(t[n]+t[o])<=s}function C(t,e,i,n,s,o,r,l,a,h){let d=t=>"x"===e?new w(t,a.y,a.width,a.height):new w(a.x,t,a.width,a.height);if(i){let t=function(t,e,i,n,s){let o=i(t.key);if(!o)return null;let r=o.rect[t.corner][e]-n[e]-t.offset;if(0===r)return null;let l=n[e]+r,a=I(e),h=Math.max(0,s[a]-n[a]),d=Math.max(0,Math.min(h,l));return d!==n[e]?d:null}(i,e,l,a,h);if(null!=t)return d(t)}if(n&&!s&&(!o||r>0)){let i=d(function(t,e,i,n){if("start"===t)return 0;let s=I(e);return Math.max(0,i[s]-n[s])}(t,e,h,a));return i.equals(a)?null:i}return null}class k{reset(){this.hasSnappedToEdge=!1,this.hadEstimatedVisibleItems=!1,this.wasNearAnchorEdge=!1}captureBeforeLayout(t,e,i){return t?function(t,e,i,n,s=()=>!0){let o=I(e),r=null;for(let[l,a]of n){if(!a||!s(a))continue;let n=a.rect.intersection(i)[o];if(a.rect.area>0&&n>=4){let n=a.rect.getCornerInRect(i)??"topLeft",s=a.rect[n][e]-i[e];(!r||("end"===t?s<r.offset:s>r.offset))&&(r={key:l,corner:n,offset:s})}}return r}(t.edge,t.axis,i,e,t.isAnchorable):null}resolveAfterLayout(t){let{anchorInfo:e,anchor:i,postLayoutInfos:n,previousVisibleRect:s,previousContentSize:o,contentSize:r,itemSizeChanged:l,isScrolling:a,getLayoutInfo:h}=t;if(!e)return null;let d=this.hadEstimatedVisibleItems,u=this.wasNearAnchorEdge,c=!1;for(let z of n.values())if(z.estimatedSize){c=!0;break}if(this.hadEstimatedVisibleItems=c,d||(this.wasNearAnchorEdge=R(s,o,e.edge,e.axis,e.threshold)),0===s.area)return null;let y="x"===e.axis?"width":"height",g=r[y]-o[y],f=!this.hasSnappedToEdge;if(this.hasSnappedToEdge=!0,!f&&0===g&&!l)return null;let p=f||d&&u||R(s,o,e.edge,e.axis,e.threshold);d||(this.wasNearAnchorEdge=p);let w=f||d&&u?null:i;return C(e.edge,e.axis,w,p,a,l,g,h,sLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}export{e as g};
|
||||
@@ -1 +0,0 @@
|
||||
.rp-dashboard{gap:var(--rp-space-6);flex-direction:column;display:flex}.rp-dashboard-cell{flex-direction:column;min-inline-size:0;display:flex}.rp-dashboard-cell>.rp-card,.rp-dashboard-body>.rp-card{flex:1}.rp-module-actions{gap:var(--rp-space-2);flex-wrap:wrap;align-self:flex-start;align-items:center;display:flex}.rp-module-actions>button{flex:none}.rp-module-option{gap:var(--rp-space-2) var(--rp-space-3);flex-flow:column wrap;align-items:start;display:flex}.rp-module-option>:last-child{flex:0 auto;max-inline-size:100%}.rp-module-inspector{gap:var(--rp-space-4);flex-direction:column;display:flex}.rp-dash-section{--rp-dash-gap:var(--rp-space-3);gap:var(--rp-dash-gap);grid-template-columns:minmax(0,1fr);align-items:stretch;display:grid}.rp-dash-section>*{container:rp-tile/inline-size}.rp-dash-section[data-profile=metrics],.rp-dash-section[data-profile=extensions]{grid-template-columns:repeat(2,minmax(0,1fr))}.rp-dash-section[data-profile=metrics]>:is([data-foot=end],[data-size=large]){grid-column:1/-1}@media (width<=599.98px){.rp-dash-section[data-profile=extensions]{grid-template-columns:minmax(0,1fr)}}@media (width>=600px) and (width<=1279.98px){.rp-dash-section[data-profile=extensions]>[data-size=large]{grid-column:1/-1}}@media (width>=640px){.rp-dash-section[data-profile=quick]{grid-template-columns:repeat(2,minmax(0,1fr))}.rp-dash-section[data-profile=quick]>[data-foot=lead]{grid-column:1/-1}}@media (width>=1024px){.rp-dash-section[data-profile=traffic]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.rp-dash-section[data-profile=details]{grid-template-columns:repeat(2,minmax(0,1fr))}.rp-dash-section[data-profile=details]>:is([data-foot=end],[data-size=large]){grid-column:1/-1}}@media (width>=1100px){.rp-dash-section[data-profile=quick]{grid-template-columns:minmax(0,1.5fr) repeat(2,minmax(0,1fr))}.rp-dash-section[data-profile=quick]>[data-foot=lead]{grid-column:auto}.rp-dash-section[data-profile=metrics]{grid-template-columns:repeat(6,minmax(0,1fr))}.rp-dash-section[data-profile=metrics]>*{grid-column:span 2}.rp-dash-section[data-profile=metrics]>:is([data-foot=tail],[data-foot=end]){grid-column:span 3}.rp-dash-section[data-profile=metrics]>[data-size=large]{grid-column:span 4}}@media (width>=1280px){.rp-dash-section[data-profile=metrics]{grid-template-columns:repeat(5,minmax(0,1fr))}.rp-dash-section[data-profile=metrics]>:is(*,[data-foot]){grid-column:span 1}.rp-dash-section[data-profile=metrics]>[data-size=large]{grid-column:span 2}.rp-dash-section:is([data-profile=traffic],[data-profile=details],[data-profile=extensions]){grid-template-columns:repeat(12,minmax(0,1fr))}.rp-dash-section:is([data-profile=traffic],[data-profile=details],[data-profile=extensions])>*,.rp-dash-section[data-profile=details]>[data-foot=end]{grid-column:span 4}.rp-dash-section[data-profile=traffic]>:nth-child(odd of .rp-dashboard-cell),.rp-dash-section:is([data-profile=details],[data-profile=extensions])>[data-size=large]{grid-column:span 8}.rp-dash-section[data-profile=extensions]>[data-size=small]{grid-column:span 2}}.rp-dash-section[data-profile]>.rp-dashboard-cell[data-size=wide]{grid-column:1/-1}.rp-dash-section{--rp-dash-snap:none}@media (width>=768px){.rp-dash-section{--rp-dash-snap:6}.rp-dash-section:is([data-grid],[data-fit]){grid-template-columns:repeat(420,minmax(0,1fr));column-gap:0;margin-inline-start:calc(0px - var(--rp-dash-gap))}.rp-dash-section:is([data-grid],[data-fit])[data-profile]>.rp-dashboard-cell{grid-column:span var(--rp-chosen,var(--rp-span));margin-inline-start:var(--rp-dash-gap)}.rp-dash-section:is([data-grid],[data-fit])[data-profile]>.rp-dashboard-cell:not([data-width],[data-size=wide]){margin-inline-start:calc(var(--rp-dash-gap) * (1 - var(--rp-shift,0)));margin-inline-end:calc(var(--rp-dash-gap) * var(--rp-trim,0))}.rp-dash-section>*{--rp-span:210}.rp-dash-section:is([data-profile=traffic],[data-profile=details])>*,.rp-dash-section[data-profile=quick]>[data-foot=lead],.rp-dash-section[data-profile=metrics]>:is([data-foot=end],[data-size=large]),.rp-dash-section[data-profile=extensions]>[data-size=large]{--rp-span:420}.rp-dash-section>:is([data-width="1/5"],[data-width="1/4"],[data-width="1/3"]){--rp-chosen:140}.rp-dash-section>[data-width="1/2"]{--rp-chosen:210}.rp-dash-section>[data-width="2/3"]{--rp-chosen:280}.rp-dash-section>[data-width=full]{--rp-chosen:420}}@media (width>=1024px){.rp-dash-section[data-profile=traffic]>*{--rp-span:140}.rp-dash-section[data-profile=traffic]>:nth-child(odd of .rp-dashboard-cell){--rp-span:280}.rp-dash-section[data-profile=details]>*{--rp-span:210}.rp-dash-section[data-profile=details]>:is([data-foot=end],[data-size=large]){--rp-span:420}}@media (width>=1024px) and (width<=1279.98px){.rp-dash-section[data-profile=traffic]>:nth-child(odd of .rp-dashboard-cell){--rp-trim:1 / 3}.rp-dash-section[data-profile=traffic]>:nth-child(2n of .rp-dashboard-cell){--rp-shift:1 / 3}}@media (width>=1100px){.rp-dash-section[data-profile=quick]>*{--rp-span:120}.rp-dash-sectiLine truncated
|
||||
@@ -1,2 +0,0 @@
|
||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./AreaChart-CMjcgmpk.js","./vendor-react-64fcanlc.js","./_commonjsHelpers-CXUWDbkB.js","./index-HxEUeoab.js","./index-CcbWXWDN.css","./AreaCurve-DQSHOSpG.js","./array-C0VuvQyb.js","./nodes-6sIn2I0s.js","./AppearanceControls-sRy1p156.js","./ItemText-DOD_75iR.js","./logs-C4GIy4tX.js","./Select-D7_6MaHd.js","./Sparkline-rgYPkbE4.js","./Donut-CLXBHnKk.js","./Editors-DQ5Z_NlY.js","./GridList-D7qdplA5.js","./Checkbox-CJt7u9-e.js","./Delete-CR2AtZsd.js","./Editors-rPgk_VZK.css","./index-B-vRbGlz.js","./geodata-X0pHz03D.js","./auth-BHtDKZwR.js","./auth-CSMbhh2E.js"])))=>i.map(i=>d[i]);
|
||||
import{r as e,a as t,j as n}from"./vendor-react-64fcanlc.js";import{d as s,h as a,n as r,o as i,w as o,s as l,R as c,S as d,a as u,b as m,I as h,L as p,u as f,_ as g,c as b,e as x,N as v,T as y,f as j,g as w,i as k,j as N,B as M,E as _,C as S,k as C,l as E,P as L,m as z,p as R,q as O,r as P,t as A,v as q,x as I,y as T,z as D,A as H,D as F,F as B,G as $,H as V,J as W,K as U,M as G,O as K,Q as J,U as X,V as Y,W as Q,X as Z,Y as ee,Z as te,$ as ne,a0 as se,a1 as ae,a2 as re,a3 as ie,a4 as oe,a5 as le,a6 as ce,a7 as de,a8 as ue,a9 as me,aa as he,ab as pe,ac as fe,ad as ge,ae as be,af as xe,ag as ve,ah as ye,ai as je,aj as we,ak as ke,al as Ne,am as Me,an as _e,ao as Se,ap as Ce,aq as Ee,ar as Le,as as ze,at as Re,au as Oe,av as Pe,aw as Ae,ax as qe,ay as Ie,az as Te,aA as De,aB as He,aC as Fe,aD as Be,aE as $e,aF as Ve,aG as We,aH as Ue,aI as Ge,aJ as Ke,aK as Je,aL as Xe,aM as Ye,aN as Qe,aO as Ze,aP as et,aQ as tt,aR as nt,aS as st,aT as at,aU as rt,aV as it,aW as ot,aX as lt,aY as ct,aZ as dt,a_ as ut,a$ as mt,b0 as ht,b1 as pt,b2 as ft,b3 as gt,b4 as bt,b5 as xt,b6 as vt,b7 as yt,b8 as jt,b9 as wt,ba as kt,bb as Nt,bc as Mt,bd as _t,be as St,bf as Ct,bg as Et,bh as Lt,bi as zt,bj as Rt,bk as Ot,bl as Pt,bm as At,bn as qt,bo as It,bp as Tt,bq as Dt,br as Ht,bs as Ft,bt as Bt,bu as $t,bv as Vt,bw as Wt,bx as Ut}from"./index-HxEUeoab.js";import{r as Gt,c as Kt,s as Jt,h as Xt,d as Yt,i as Qt,a as Zt,b as en,e as tn,f as nn,g as sn,j as an,n as rn,u as on,k as ln,l as cn,p as dn,m as un,o as mn,q as hn,t as pn,v as fn,w as gn,x as bn,y as xn,z as vn,A as yn,B as jn}from"./nodes-6sIn2I0s.js";import{L as wn,C as kn,u as Nn,a as Mn,P as _n,S as Sn,T as Cn,b as En,c as Ln}from"./AppearanceControls-sRy1p156.js";import{W as zn,S as Rn,u as On,a as Pn,b as An,c as qn,e as In,d as Tn,l as Dn,f as Hn,g as Fn,h as Bn,i as $n,V as Vn,C as Wn,r as Un,K as Gn,D as Kn,j as Jn,M as Xn,$ as Yn,k as Qn,m as Zn,n as es}from"./logs-C4GIy4tX.js";import{I as ts,C as ns}from"./ItemText-DOD_75iR.js";const ss={"missing-offline-dependency":"config.diagnostic.offlineMissing","offline-dependency-denied":"config.diagnostic.offlineDenied","invalid-offline-dependency":"config.diagnostic.offlineInvalid","unreadable-offline-dependency":"config.diagnostic.offlineUnreadable"},as=e=>Object.hasOwn(ss,e);function rs(e,t,n){return as(e.code)?{summary:t("config.diagnostic.offline",{reason:t(ss[e.code]),which:n?t("config.diagnostic.offlineGeodata",{files:n}):t("config.diagnostic.offlineUsual")})}:s(e,t)}const is=e=>[...new Set(e.flatMap(({item:e,message:t})=>e.message&&!t.includes(e.message)?[e.message]:[]))];function os(e,t){const n=e.map(e=>e.id===t?.id?t.content:e.content).flatMap(e=>void 0===e?[]:Gt(e));return[...new Map(n.map(({name:e,written:t})=>[t,{name:e,written:t}])).values()]}const ls=e=>"<redacted>"===e.path||""===e.path,cs=e=>ls(e)?"main"===e.kind?"config.dae":`${e.kind}-${e.id.slice(0,8)}.dae`:e.path.split("/").pop()||"config.dae";function ds(e,t){const n=e.find(e=>"main"===e.kind);if(!n)return null;const s=[n,...e.filter(e=>"include"===e.kind&&!ls(e))];return t&&!s.some(e=>e.id===t.id)?null:s.map(e=>({id:e.id,...ls(e)?{}:{path:e.path},content:e.id===t?.id?t.content:e.content}))}const us=e=>e.filter(e=>"error"===e.level&&"restart-required"===e.code).map(e=>({key:/\b[a-z][a-z0-9_]*(?:\.[a-z0-9_]+)+\b/.exec(e.message)?.[0]??(e.message||null),sourceId:e.source_id,line:e.line})),ms=e=>us(e).length,hs={main:"config.kind.main",include:"config.kind.include",subscription:"nodes.kind.subscription",generated:"config.kind.generated"},ps=(e,t)=>`${e}:${t}`;function fs(e,t){const n=e.indexOf(":"),s=e.slice(0,n);return n>0&&t.includes(s)?{kind:s,value:e.slice(n+1)}:null}const gs=(e,t)=>t&&e?a("rules",{tab:"list",rule:e}):void 0,bs=(e,t,n=!1)=>a("nodes",{provider:r(e,t),q:e.name,node:n?e.id??null:null});function xs(e,t){const n=e?.find(e=>e.name===t)?.id;return n?o("",{group:n}):""}function vs(e,t,n){const s=t?.find(t=>t.name===e);return s?{label:s.name,href:a("policies",{group:s.id})}:{label:i(e,n),href:null}}const ys=["network","domain","dst_ip","dst_port","src_ip","src_port","pname"],js=e=>o("",{tab:"trace",...Object.fromEntries(ys.map(t=>[t,e[t]||null]))});function ws(e){const t=new URLSearchParams(e),n=e=>t.get(e)??"";return n("domain")||n("dst_ip")?{network:"udp"===n("network")?"udp":"tcp",domain:n("domain"),dst_ip:n("dst_ip"),dst_port:n("dst_port"),src_ip:n("src_ip"),src_port:n("src_port"),pname:n("pname")}:null}const ks=a("settings",{card:"runtime"});function Ns(e,t=Kt){return e?fs(e,t):null}function Ms(e,t){const n=e.filter(e=>"main"===e.kind||"include"===e.kind);for(const s of n){const e=Jt(s.content).blocks.find(e=>e.name===t);if(e)return a("config",{tab:"source",source:s.id,line:String(e.line+1)})}return a("config",{tab:"source",source:n.find(e=>"main"===e.kind)?.id??null})}const _s=a("activity",{card:"mode"}),Ss=a("overview",{card:"limits"}),Cs=e=>a("nodes",{nodes:JSON.stringify(e)});let Es=!1;const Ls=new Set,zs={snapshot:()=>Es,set(e){Line truncated
|
||||
@@ -1 +0,0 @@
|
||||
function t(t){return function(){return t}}const i=Math.PI,s=2*i,h=1e-6,n=s-h;function e(t){this._+=t[0];for(let i=1,s=t.length;i<s;++i)this._+=arguments[i]+t[i]}class _{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?e:function(t){let i=Math.floor(t);if(!(i>=0))throw new Error(`invalid digits: ${t}`);if(i>15)return e;const s=10**i;return function(t){this._+=t[0];for(let i=1,h=t.length;i<h;++i)this._+=Math.round(arguments[i]*s)/s+t[i]}}(t)}moveTo(t,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+i}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,i){this._append`L${this._x1=+t},${this._y1=+i}`}quadraticCurveTo(t,i,s,h){this._append`Q${+t},${+i},${this._x1=+s},${this._y1=+h}`}bezierCurveTo(t,i,s,h,n,e){this._append`C${+t},${+i},${+s},${+h},${this._x1=+n},${this._y1=+e}`}arcTo(t,s,n,e,_){if(t=+t,s=+s,n=+n,e=+e,(_=+_)<0)throw new Error(`negative radius: ${_}`);let r=this._x1,a=this._y1,$=n-t,o=e-s,l=r-t,p=a-s,u=l*l+p*p;if(null===this._x1)this._append`M${this._x1=t},${this._y1=s}`;else if(u>h)if(Math.abs(p*$-o*l)>h&&_){let c=n-r,d=e-a,f=$*$+o*o,x=c*c+d*d,y=Math.sqrt(f),M=Math.sqrt(u),g=_*Math.tan((i-Math.acos((f+u-x)/(2*y*M)))/2),w=g/M,v=g/y;Math.abs(w-1)>h&&this._append`L${t+w*l},${s+w*p}`,this._append`A${_},${_},0,0,${+(p*c>l*d)},${this._x1=t+v*$},${this._y1=s+v*o}`}else this._append`L${this._x1=t},${this._y1=s}`;else;}arc(t,e,_,r,a,$){if(t=+t,e=+e,$=!!$,(_=+_)<0)throw new Error(`negative radius: ${_}`);let o=_*Math.cos(r),l=_*Math.sin(r),p=t+o,u=e+l,c=1^$,d=$?r-a:a-r;null===this._x1?this._append`M${p},${u}`:(Math.abs(this._x1-p)>h||Math.abs(this._y1-u)>h)&&this._append`L${p},${u}`,_&&(d<0&&(d=d%s+s),d>n?this._append`A${_},${_},0,1,${c},${t-o},${e-l}A${_},${_},0,1,${c},${this._x1=p},${this._y1=u}`:d>h&&this._append`A${_},${_},0,${+(d>=i)},${c},${this._x1=t+_*Math.cos(a)},${this._y1=e+_*Math.sin(a)}`)}rect(t,i,s,h){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+i}h${s=+s}v${+h}h${-s}Z`}toString(){return this._}}function r(t){let i=3;return t.digits=function(s){if(!arguments.length)return i;if(null==s)i=null;else{const t=Math.floor(s);if(!(t>=0))throw new RangeError(`invalid digits: ${s}`);i=t}return t},()=>new _(i)}function a(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}export{a,t as c,r as w};
|
||||
@@ -1 +0,0 @@
|
||||
import{D as e}from"./auth-CSMbhh2E.js";import{aM as t,bK as o}from"./index-HxEUeoab.js";import"./vendor-react-64fcanlc.js";import"./_commonjsHelpers-CXUWDbkB.js";const r="demo-session-";function n(){return{mode:"password",setup_required:!1}}const s={auth_setup:"/api/v1/auth/setup",auth_login:"/api/v1/auth/login"};function a(n,s){if("setup"===n)throw new t(409,"setup_already_completed","Setup already completed");if(s.username!==e.username||s.password!==e.password)throw new t(401,"invalid_credentials","Invalid credentials");return{token:r+o(),expires_at:new Date(Date.now()+432e5).toISOString()}}function i(e){return!!e?.startsWith(r)}function u(e){return{...e,discovery:async t=>{const o=await e.discovery(t);return"status"in o?{...o,links:{...o.links,...s,auth_logout:"/api/v1/auth/logout"},auth:{mode:"password",setup_required:!1,anonymous_loopback:!1}}:o}}}function d(e){const o=()=>Promise.reject(new t(401,"authentication_required","Authentication required")),r=async e=>(e?.throwIfAborted(),{name:"daeuniverse/native",api_major:1,links:{...s},auth:{mode:"password",setup_required:!1}});return new Proxy(e,{get:(e,t,n)=>"discovery"===t?r:"function"==typeof Reflect.get(e,t,n)?o:void 0})}export{n as mockDiscovery,a as mockOpenSession,i as mockSessionValid,d as refuseWithoutSession,u as withPasswordAuth};
|
||||
@@ -1,2 +0,0 @@
|
||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./auth-BHtDKZwR.js","./index-HxEUeoab.js","./vendor-react-64fcanlc.js","./_commonjsHelpers-CXUWDbkB.js","./index-CcbWXWDN.css"])))=>i.map(i=>d[i]);
|
||||
import{bz as a,dW as t,dX as o,t as n,_ as e}from"./index-HxEUeoab.js";const i=(a,t)=>new URL(a.replace(/\/+$/,"")+t,globalThis.location?.href),s=()=>e(()=>import("./auth-BHtDKZwR.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url),r={username:"demo",password:"demo"};async function c(e,r){if(a(e))return(await s()).mockDiscovery();const c=await t(i(e,"/api"),{headers:{Accept:"application/json"},cache:"no-store",signal:r});if(!c.ok)throw await o(c);const p=await c.json();if("dae/honk-native"===p.name)throw new n("login.engineOutdated");return p.auth}async function p(a,o){return 404!==(await t(i(a,"/api/v1/capabilities"),{headers:{Accept:"application/json"},cache:"no-store",signal:o})).status}function u(a){return"password"!==a.mode?"token":a.setup_required?"setup":"login"}async function h(n,e,r,c){if(a(n))return(await s()).mockOpenSession(e,r);const p=await t(i(n,`/api/v1/auth/${e}`),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(r),cache:"no-store",signal:c},"setup"===e);if(!p.ok)throw await o(p,"POST");return p.json()}async function d(n,e,s){if(a(n))return;const r=await t(i(n,"/api/v1/auth/logout"),{method:"POST",headers:{Accept:"application/json",Authorization:"Bearer "+e},cache:"no-store",signal:s});if(!r.ok&&401!==r.status)throw await o(r,"POST")}export{r as D,p as a,d as c,c as d,h as o,u as s};
|
||||
@@ -1 +0,0 @@
|
||||
const t=/^(global|dns|upstream|routing|request|response|subscription|node|group|include|fallback)\b(?!\s*\()/,s=()=>({afterArrow:!1});function r(s,r){return s.sol()&&(r.afterArrow=!1),s.eatSpace()?null:s.match("#")?(s.skipToEnd(),"comment"):s.match(/^'[^']*'/)||s.match(/^"[^"]*"/)?"string":s.match("->")?(r.afterArrow=!0,"operator"):r.afterArrow&&s.match(/^[\w.-]+/)?(r.afterArrow=!1,"keyword"):(s.sol()||""===s.string.slice(0,s.pos).trim())&&s.match(t)?"keyword":s.match(/^\d+(\.\d+)*(\/\d+)?[a-z]*/)?"number":s.match(/^[\w.-]+(?=\s*\()/)?"propertyName":s.match(/^[\w.-]+(?=\s*:)/)?"variableName":s.match(/^[A-Za-z_][\w.-]*/)?null:s.match(/^[{}()&|!,:]/)?"punctuation":(s.next(),null)}class e{pos=0;string;constructor(t){this.string=t}sol(){return 0===this.pos}eatSpace(){const t=/^\s+/.exec(this.string.slice(this.pos));return!!t&&(this.pos+=t[0].length,!0)}match(t){const s="string"==typeof t?this.string.slice(this.pos).startsWith(t)&&t:t.exec(this.string.slice(this.pos));return s&&(this.pos+="string"==typeof s?s.length:s[0].length),s}skipToEnd(){this.pos=this.string.length}next(){return this.pos<this.string.length?this.string[this.pos++]:void 0}}function n(t){const s=[],n=t.split("\n"),o={afterArrow:!1};return n.forEach((t,i)=>{const a=new e(t);for(;a.pos<t.length;){const e=a.pos,n=r(a,o);s.push({text:t.slice(e,a.pos),type:n})}i<n.length-1&&s.push({text:"\n",type:null})}),s}export{r as d,s,n as t};
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 37 KiB |
@@ -1 +0,0 @@
|
||||
function e(e,t){return`${e}-${(new Date).toISOString().slice(0,19).replace(/[:T]/g,"-")}.${t}`}function t(e,t,n){const r=URL.createObjectURL(new Blob([t],{type:n})),c=document.createElement("a");c.href=r,c.download=e,document.body.append(c),c.click(),c.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}function n(e){return e.map(e=>null==e?"":/[",\r\n]/.test(String(e))?'"'+String(e).replace(/"/g,'""')+'"':String(e)).join(",")}export{n as c,t as d,e};
|
||||
@@ -1 +0,0 @@
|
||||
import{a9 as e,f8 as n,q as t,f9 as s,fa as a,aq as r,fb as o,d6 as i,fc as l}from"./index-HxEUeoab.js";async function u(e,{input:n,resolve:t,recordTypes:s},a){if("query"!==t)return{traces:[await e.routingTrace({input:n,resolve:t},a)],query:null};const r=await e.dnsQuery(n.domain,s,a),o=[...new Set(["A","AAAA"].flatMap(e=>r.results.filter(n=>n.type===e).map(i).find(Boolean)??[]))],u=[];for(const i of o.length?o:[null])u.push(await e.routingTrace({input:i?{...n,dst_ip:i}:n,resolve:"none"},a));if(u.some(e=>e.instance_id!==u[0].instance_id||e.generation_id!==u[0].generation_id))throw l(409,"snapshot_unavailable","The routing generation changed during simulation; retry the query","ui.errGenerationChanged");return{traces:u,query:r}}function c({connection_id:i,network:l="all",state:u="all"}={},c=!0,f=!1){const d=e(),{data:w,error:p}=t(),y=s(w,w?.resources.flows.max_page_size);return n({key:["flows",{connection_id:i,network:l,state:u,limit:y}],every:r.lists,fetch:e=>o(n=>d.flows({network:l,state:u,connection_id:i,cursor:n,limit:y,detail:"full"},e),(e,n)=>e?(e.flows.push(...n.flows),e):{...n,flows:[...n.flows]})},{...a(w,p,c),paused:f})}function f(t){const s=e();return n({key:["flow",{id:t}],fetch:e=>t?s.flow(t,e):Promise.resolve(null),acceptEvent:e=>"flow.updated"!==e.event||e.data.resource_id===t},{enabled:null!==t})}function d(t=!0){const s=e();return n({key:["rules"],every:0,fetch:e=>s.rules(e)},{enabled:t})}function w(t=!0){const s=e();return n({key:["dnsRules"],every:0,fetch:e=>s.dnsRules(e)},{enabled:t})}export{c as a,f as b,w as c,u as r,d as u};
|
||||
@@ -1 +0,0 @@
|
||||
@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-cyrillic-wght-normal-DHeihy9e.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-vietnamese-wght-normal-B77OGAeV.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-latin-ext-wght-normal-BFabhjDY.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-latin-wght-normal-CjMECRfU.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;ascent-override:100%;descent-override:20%;line-gap-override:0%}
|
||||
@@ -1 +0,0 @@
|
||||
@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-4-wght-normal-BRbPMj-C.woff2)format("woff2");unicode-range:U+1F1E9-1F1F5,U+1F1F7-1F1FF,U+1F21A,U+1F232,U+1F234-1F237,U+1F250-1F251,U+1F300,U+1F302-1F308,U+1F30A-1F311,U+1F315,U+1F319-1F320,U+1F324,U+1F327,U+1F32A,U+1F32C-1F32D,U+1F330-1F357,U+1F359-1F37E;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-5-wght-normal-DI846rD9.woff2)format("woff2");unicode-range:U+FEE3,U+FEF3,U+FF03-FF04,U+FF07,U+FF0A,U+FF17-FF19,U+FF1C-FF1D,U+FF20-FF3A,U+FF3C,U+FF3E-FF5B,U+FF5D,U+FF61-FF65,U+FF67-FF6A,U+FF6C,U+FF6F-FF78,U+FF7A-FF7D,U+FF80-FF84,U+FF86,U+FF89-FF8E,U+FF92,U+FF97-FF9B,U+FF9D-FF9F,U+FFE0-FFE4,U+FFE6,U+FFE9,U+FFEB,U+FFED,U+FFFC,U+1F004,U+1F170-1F171,U+1F192-1F195,U+1F198-1F19A,U+1F1E6-1F1E8;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-6-wght-normal-ozUCEY9O.woff2)format("woff2");unicode-range:U+F0A7,U+F0B2,U+F0B7,U+F0C9,U+F0D8,U+F0DA,U+F0DC-F0DD,U+F0E0,U+F0E6,U+F0EB,U+F0FC,U+F101,U+F104-F105,U+F107,U+F10B,U+F11B,U+F14B,U+F18A,U+F193,U+F1D6-F1D7,U+F244,U+F27A,U+F296,U+F2AE,U+F471,U+F4B3,U+F610-F611,U+F880-F881,U+F8EC,U+F8F5,U+F8FF,U+F901,U+F90A,U+F92C-F92D,U+F934,U+F937,U+F941,U+F965,U+F967,U+F969,U+F96B,U+F96F,U+F974,U+F978-F979,U+F97E,U+F981,U+F98A,U+F98E,U+F997,U+F99C,U+F9B2,U+F9B5,U+F9BA,U+F9BE,U+F9CA,U+F9D0-F9D1,U+F9DD,U+F9E0-F9E1,U+F9E4,U+F9F7,U+FA00-FA01,U+FA08,U+FA0A,U+FA11,U+FB01-FB02,U+FDFC,U+FE0E,U+FE30-FE31,U+FE33-FE44,U+FE49-FE52,U+FE54-FE57,U+FE59-FE66,U+FE68-FE6B,U+FE8E,U+FE92-FE93,U+FEAE,U+FEB8,U+FECB-FECC,U+FEE0;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-21-wght-normal-DIu_1ZBI.woff2)format("woff2");unicode-range:U+9F83,U+9F85-9F8D,U+9F90-9F91,U+9F94-9F96,U+9F98,U+9F9B-9F9C,U+9F9E,U+9FA0,U+9FA2,U+9FF?,U+A001,U+A007,U+A025,U+A046-A047,U+A057,U+A072,U+A078-A079,U+A083,U+A085,U+A100,U+A118,U+A132,U+A134,U+A1F4,U+A242,U+A4A6,U+A4AA,U+A4B0-A4B1,U+A4B3,U+A9C1-A9C2,U+AC00-AC01,U+AC04,U+AC08,U+AC10-AC11,U+AC13-AC16,U+AC19,U+AC1C-AC1D,U+AC24,U+AC70-AC71,U+AC74,U+AC77-AC78,U+AC80-AC81,U+AC83,U+AC8C,U+AC90,U+AC9F-ACA0,U+ACA8-ACA9,U+ACAC,U+ACB0,U+ACBD,U+ACC1,U+ACC4,U+ACE0-ACE1,U+ACE4,U+ACE8,U+ACF3,U+ACF5,U+ACFC-ACFD,U+AD00,U+AD0C,U+AD11,U+AD1C,U+AD34,U+AD50,U+AD64,U+AD6C,U+AD70,U+AD74,U+AD7F,U+AD81,U+AD8C,U+ADC0,U+ADC8,U+ADDC,U+ADE0,U+ADF8-ADF9,U+ADFC,U+AE00,U+AE08-AE09,U+AE0B,U+AE30,U+AE34,U+AE38,U+AE40,U+AE4A,U+AE4C,U+AE54,U+AE68,U+AEBC,U+AED8,U+AF2C-AF2D;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-22-wght-normal-VXjdYcT-.woff2)format("woff2");unicode-range:U+9E30-9E33,U+9E35-9E3B,U+9E3E,U+9E40-9E44,U+9E46-9E4E,U+9E51,U+9E53,U+9E55-9E58,U+9E5A-9E5C,U+9E5E-9E63,U+9E66-9E6E,U+9E71,U+9E73,U+9E75,U+9E78-9E79,U+9E7C-9E7E,U+9E82,U+9E86-9E88,U+9E8B-9E8C,U+9E90-9E91,U+9E93,U+9E95,U+9E97,U+9E9D,U+9EA4-9EA5,U+9EA9-9EAA,U+9EB4-9EB5,U+9EB8-9EBA,U+9EBC-9EBF,U+9EC3,U+9EC9,U+9ECD,U+9ED0,U+9ED2-9ED3,U+9ED5-9ED6,U+9ED9,U+9EDC-9EDD,U+9EDF-9EE0,U+9EE2,U+9EE5,U+9EE7-9EEA,U+9EEF,U+9EF1,U+9EF3-9EF4,U+9EF6,U+9EF9,U+9EFB-9EFC,U+9EFE,U+9F0B,U+9F0D,U+9F10,U+9F14,U+9F17,U+9F19,U+9F22,U+9F29,U+9F2C,U+9F2F,U+9F31,U+9F37,U+9F39,U+9F3D-9F3E,U+9F41,U+9F4A-9F4B,U+9F51-9F52,U+9F61-9F63,U+9F66-9F67,U+9F80-9F81;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-23-wght-normal-4HrHKhpL.woff2)format("woff2");unicode-range:U+9C82-9C83,U+9C85-9C8C,U+9C8E-9C92,U+9C94-9C9B,U+9C9E-9CA3,U+9CA5-9CA7,U+9CA9,U+9CAB,U+9CAD-9CAE,U+9CB1-9CB7,U+9CB9-9CBD,U+9CBF-9CC0,U+9CC3,U+9CC5-9CC7,U+9CC9-9CD1,U+9CD3-9CDA,U+9CDC-9CDD,U+9CDF,U+9CE1-9CE3,U+9CE5,U+9CE9,U+9CEE-9CEF,U+9CF3-9CF4,U+9CF6,U+9CFC-9CFD,U+9D02,U+9D08-9D09,U+9D12,U+9D1B,U+9D1E,U+9D26,U+9D28,U+9D37,U+9D3B,U+9D3F,U+9D51,U+9D59,U+9D5C-9D5D,U+9D5F-9D61,U+9D6C,U+9D70,U+9D72,U+9D7A,U+9D7E,U+9D84,U+9D89,U+9D8F,U+9D92,U+9DAF,U+9DB4,U+9DB8,U+9DBC,U+9DC4,U+9DC7,U+9DC9,U+9DD7,U+9DDF,U+9DF2,U+9DF9-9DFA,U+9E0A,U+9E11,U+9E1A,U+9E1E,U+9E20,U+9E22,U+9E28-9E2C,U+9E2E-9E2F;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-24-wght-normal-B58DWgHS.woff2)format("woff2");unicode-range:U+9A80,U+9A83,U+9A85,U+9A88-9A8A,U+9A8D-9A8E,U+9A90,U+9A92-9A93,U+9A95-9A96,U+9A98-9A99,U+9A9B-9AA2,U+9AA5,U+9AA7,U+9AAF-9AB1,U+9AB5-9AB6,U+9AB9-9ABA,U+9AC0-9AC4,U+9AC8,U+9ACB-9ACC,Line truncated
|
||||
@@ -1 +0,0 @@
|
||||
@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-0-wght-normal-AlCjBspo.woff2)format("woff2");unicode-range:U+1F921-1F930,U+1F932-1F935,U+1F937-1F939,U+1F940-1F944,U+1F947-1F94A,U+1F95?,U+1F962-1F967,U+1F969-1F96A,U+1F980-1F981,U+1F984-1F98D,U+1F990-1F992,U+1F994-1F996,U+1F9C0,U+1F9D0,U+1F9D2,U+1F9D4,U+1F9D6,U+1F9D8,U+1F9DA,U+1F9DC-1F9DD,U+1F9DF-1F9E2,U+1F9E5-1F9E6,U+20024,U+20487,U+20779,U+20C41,U+20C78,U+20D71,U+20E98,U+20EF9,U+2107B,U+210C1,U+22C51,U+233B4,U+24A12,U+2512B,U+2546E,U+25683,U+267CC,U+269F2,U+27657,U+282E2,U+2898D,U+29D5A,U+F0001-F0005,U+F0019,U+F009B,U+F0101-F0104,U+F012B,U+F01BA,U+F01D6,U+F0209,U+F0217,U+F0223-F0224,U+FC355,U+FE327,U+FE517,U+FEB97,U+FFFB4;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-6-wght-normal-WPkr41zz.woff2)format("woff2");unicode-range:U+FF78-FF7E,U+FF80-FF86,U+FF89-FF94,U+FF97-FF9E,U+FFB9,U+FFE0-FFE3,U+FFE9,U+FFEB,U+FFED,U+FFFC,U+1D7C7,U+1F004,U+1F0CF,U+1F141-1F142,U+1F150,U+1F154,U+1F158,U+1F15B,U+1F15D-1F15E,U+1F162-1F163,U+1F170-1F171,U+1F174,U+1F177-1F178,U+1F17D-1F17F,U+1F192-1F195,U+1F197-1F19A,U+1F1E6-1F1F5,U+1F1F7-1F1FF,U+1F21A,U+1F22F,U+1F232-1F237,U+1F239-1F23A,U+1F250-1F251,U+1F300,U+1F302-1F319;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-7-wght-normal-foGylaCC.woff2)format("woff2");unicode-range:U+FA0A,U+FA0C,U+FA11,U+FA17,U+FA19,U+FA1B,U+FA1D,U+FA26,U+FA2C,U+FB01,U+FDFC,U+FE0E,U+FE33-FE36,U+FE38-FE44,U+FE49-FE51,U+FE54,U+FE56-FE57,U+FE59-FE5C,U+FE5F-FE6A,U+FE8E,U+FE92-FE93,U+FEAE,U+FECB-FECC,U+FEE0,U+FEEC,U+FEF3,U+FF04,U+FF07,U+FF26-FF2C,U+FF31-FF32,U+FF35-FF37,U+FF39-FF3A,U+FF3C,U+FF3E-FF5B,U+FF5D,U+FF61-FF65,U+FF67-FF68,U+FF6A,U+FF6C-FF77;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-8-wght-normal-BHOicRI8.woff2)format("woff2");unicode-range:U+F78A-F78C,U+F78E,U+F792-F796,U+F798,U+F79C,U+F7F5,U+F812,U+F815,U+F876,U+F8F5,U+F8F8,U+F8FF,U+F901-F902,U+F904,U+F906,U+F909-F90A,U+F90F,U+F914,U+F918-F919,U+F91B,U+F91D,U+F91F,U+F923,U+F925,U+F92D-F92F,U+F934,U+F937-F938,U+F93D,U+F93F,U+F941,U+F949,U+F94C,U+F94E-F94F,U+F95A,U+F95D-F95E,U+F961-F963,U+F965-F970,U+F974,U+F976-F97A,U+F97C,U+F97E-F97F,U+F981,U+F983,U+F988,U+F98A,U+F98C,U+F98E,U+F996-F997,U+F999-F99A,U+F99C,U+F99F-F9A0,U+F9A3,U+F9A8,U+F9AD,U+F9B2-F9B6,U+F9B9-F9BA,U+F9BD-F9BE,U+F9C1,U+F9C4,U+F9C7,U+F9CA,U+F9CD,U+F9D0-F9D1,U+F9D3-F9D4,U+F9D7-F9D8,U+F9DC-F9DD,U+F9DF-F9E1,U+F9E4,U+F9E8-F9EA,U+F9F4,U+F9F6-F9F7,U+F9F9-F9FA,U+F9FC-FA01,U+FA03-FA04,U+FA06,U+FA08-FA09;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-19-wght-normal-C8pGE9DU.woff2)format("woff2");unicode-range:U+9EE5,U+9EE7,U+9EEE,U+9EF3-9EF4,U+9EF6-9EF7,U+9EF9,U+9EFB-9EFD,U+9EFF,U+9F07-9F09,U+9F10,U+9F14-9F15,U+9F19,U+9F22,U+9F29,U+9F2C,U+9F2F,U+9F31,U+9F34,U+9F37,U+9F39,U+9F3D-9F3E,U+9F41,U+9F4C-9F50,U+9F54,U+9F57,U+9F59,U+9F5C,U+9F5F-9F60,U+9F62-9F63,U+9F66-9F67,U+9F6A,U+9F6C,U+9F72,U+9F76-9F77,U+9F7F,U+9F84-9F85,U+9F88,U+9F8E,U+9F91,U+9F94-9F96,U+9F98,U+9F9A-9F9B,U+9F9F-9FA0,U+9FA2,U+9FA4,U+9FF?,U+A1F4,U+A4B0-A4B1,U+A4B3,U+A9C1-A9C2,U+AA31,U+AB34,U+AC00-AC01,U+AC04,U+AC08,U+AC10-AC11,U+AC13-AC16,U+AC19,U+AC1C-AC1D,U+AC24,U+AC70-AC71,U+AC74,U+AC77-AC78,U+AC80-AC81,U+AC83,U+AC8C,U+AC90,U+ACA0,U+ACA8-ACA9,U+ACAC,U+ACB0,U+ACB8-ACB9,U+ACBC-ACBD,U+ACC1,U+ACC4,U+ACE0-ACE1,U+ACE4,U+ACE8,U+ACF0-ACF1,U+ACF3,U+ACF5,U+ACFC;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-20-wght-normal-C3zSSq0m.woff2)format("woff2");unicode-range:U+9D77,U+9D7A,U+9D7E,U+9D87,U+9D89,U+9D8F,U+9D91-9D93,U+9D96,U+9D98,U+9D9A,U+9DA1-9DA2,U+9DA5,U+9DA9,U+9DAB-9DAC,U+9DB1-9DB2,U+9DB5,U+9DB9-9DBC,U+9DBF-9DC2,U+9DC4,U+9DC7-9DC9,U+9DD3,U+9DD6,U+9DD9-9DDA,U+9DDE-9DDF,U+9DE2,U+9DE5-9DE6,U+9DE8,U+9DEF-9DF0,U+9DF2-9DF4,U+9DF8,U+9DFA,U+9DFD,U+9DFF,U+9E02,U+9E07,U+9E0A,U+9E11,U+9E15,U+9E18,U+9E1A-9E1B,U+9E1D-9E1E,U+9E20-9E23,U+9E25-9E26,U+9E2D,U+9E2F,U+9E33,U+9E35,U+9E3D-9E3F,U+9E42-9E43,U+9E45,U+9E48-9E4A,U+9E4C,U+9E4F,U+9E51,U+9E55,U+9E64,U+9E66,U+9E6B,U+9E6D-9E6E,U+9E70,U+9E73,U+9E75,U+9E78,U+9E80-9E83,U+9E87-9E88,U+9E8B-9E8C,U+9E90-9E91,U+9E93,U+9E96,U+9E9D,U+9EA1,U+9EA4,U+9EA6,U+9EA9-9EAB,U+9EAD,U+9EAF,U+9EB4,U+9EB7-9EBA,U+9EBE-9EBF,U+9ECC-9ECD,U+9ED0,U+9ED2,U+9ED4,U+9ED9-9EDA,U+9EDC-9EDD,U+9EDF-9EE0,U+9EE2;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;foLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
const e=["fastly","cdn","testingcf"];function t(t,i,o,a,s){const l=(e,t)=>`https://${e}.jsdelivr.net/gh/${i}@release/${t}`,r=Object.keys(o);return{id:t,urls:Object.fromEntries(r.map(e=>{return[e,[(t=o[e],`https://raw.githubusercontent.com/${i}/release/${t}`),l("fastly",o[e])]];var t})),mirrors:Object.fromEntries(r.map(t=>[t,e.slice(1).map(e=>l(e,o[t]))])),sizes:a,categories:s}}const i=[t("metacubex","MetaCubeX/meta-rules-dat",{geosite:"geosite.dat",geoip:"geoip.dat"},{geosite:42e5,geoip:166e5},null),t("metacubex-lite","MetaCubeX/meta-rules-dat",{geosite:"geosite-lite.dat",geoip:"geoip-lite.dat"},{geosite:176e3,geoip:207e3},{geosite:["abema","apple","applemusic","bahamut","bilibili","biliintl","cloudflare","cn","ehentai","github","google","microsoft","netflix","onedrive","openai","pixiv","private","proxy","proxymedia","spotify","telegram","tiktok","twitter","youtube"],geoip:["apple","bilibili","cloudflare","cloudfront","cn","facebook","google","jp","netflix","private","telegram","twitter"]}),t("loyalsoldier","Loyalsoldier/v2ray-rules-dat",{geosite:"geosite.dat",geoip:"geoip.dat"},{geosite:111e5,geoip:169e5},null)],o=(a="metacubex",i.find(e=>e.id===a));var a;function s(e){return/^https?:\/\/(?![^/?#]*@)[^#]*$/.test(e)&&URL.canParse(e)&&[...e].length<=4096}export{o as d,i as g,s as v};
|
||||
@@ -1 +0,0 @@
|
||||
import{A as e,aK as s}from"./index-HxEUeoab.js";import"./vendor-react-64fcanlc.js";import{s as t}from"./nodes-6sIn2I0s.js";function a(e){const{tokens:s}=t(e),a=t=>s[t]?e.slice(s[t].from,s[t].to):"",i=new Set(s.flatMap((e,s)=>"text"===e.kind&&e.parens>0&&":"===a(s+1)&&["(",","].includes(a(s-1))?[a(s)]:[]));return["geosite","geoip"].filter(e=>i.has(e))}function i(e,s,t){const a=s?.available?s.assets??[]:null,i=e=>t?.assets.some(s=>s.kind===e&&"0"===s.size_bytes)??!1,n=e&&a?e.filter(e=>!a.includes(e)||i(e)):(a??[]).filter(i),o=!!s?.can_update&&!!e?.length&&!!a&&e.every(e=>a.includes(e));return{missing:n.map(e=>`${e}.dat`),repair:o}}const n=(t,a)=>t.then(s=>(s&&e("positive",a("settings.geodataUpdated")),!!s),e=>(s(e,a,a("settings.geodataFailed")),!1));export{n as a,a as b,i as g};
|
||||
@@ -1 +0,0 @@
|
||||
:root[data-family=glass]{--rp-blur-scale:1;--rp-fill-boost:calc((1 - min(var(--rp-blur-scale), 1)) * .2);--rp-muted:#8e8e93;--rp-subtle:#48484a;--rp-text:#000;--rp-placeholder:#3c3c434d;--rp-love:#ff3b30;--rp-gold:#ff9500;--rp-rose:#ff9f0a;--rp-pine:#007aff;--rp-foam:#34c759;--rp-iris:#af52de;--rp-c1:#007aff;--rp-c2:#34c759;--rp-c3:#af52de;--rp-c4:#ff9500;--rp-c5:#5ac8fa;--rp-c6:#ff2d55;--rp-c7:#fc0;--rp-c8:#ff3b30;--rp-hl-low:#74748014;--rp-ctl:color-mix(in srgb, var(--rp-text) 5%, transparent);--rp-ctl-hover:color-mix(in srgb, var(--rp-text) 9%, transparent);--rp-ctl-pressed:color-mix(in srgb, var(--rp-text) 13%, transparent);--rp-hl-med:#78788029;--rp-hl-high:#78788033;--rp-on-accent:#fff;--rp-on-text:#fff;--rp-accent-text:var(--rp-text);--rp-info-text:var(--rp-text);--rp-positive-text:var(--rp-text);--rp-notice-text:var(--rp-text);--rp-accent-fill:#0040dd;--rp-on-accent-fill:#fff;--rp-negative-fill:#d70015;--rp-on-negative-fill:#fff;--rp-negative-text:var(--rp-negative-fill);--rp-line:#3c3c434a;--rp-track:var(--rp-ctl);--rp-knob:#fff;--rp-knob-shadow:0 1px 3px #0000001f, 0 3px 8px #00000014;--rp-switch-knob:#fff;--rp-switch-knob-shadow:0 1px 2px #00000040;--rp-underlay:#14141e3d;--rp-shadow-lg:0 2px 6px #0f14280f, 0 18px 48px #0f142829;--rp-solid-wall:#f2f2f7;--rp-solid-chrome:#f2f2f7;--rp-solid-card:#fff;--rp-solid-float:#fff;--rp-solid-edge:#c6c6c8;--rp-base:#fff6;--rp-surface:#fff6;--rp-overlay:#ffffff73;--rp-shadow:0 1px 2px #0f14280d, 0 8px 28px #0f142817;--rp-wall:radial-gradient(circle at 63% 36%, #ffcc00b3 0 120px, #fc00 121px), radial-gradient(circle at 30% 66%, #007aff00 0 190px, #007aff80 191px 199px, #007aff00 200px), linear-gradient(118deg, #fff0 0 60%, #fff9 60% 64%, #fff0 64%), linear-gradient(28deg, #ff2d5500 0 74%, #ff2d5573 74% 77%, #ff2d5500 77%), radial-gradient(34% 46% at 28% 30%, #007aff80, #007aff00 72%), radial-gradient(32% 44% at 84% 22%, #ff2d5580, #ff2d5500 72%), radial-gradient(40% 50% at 74% 84%, #ff95008c, #ff950000 72%), radial-gradient(36% 46% at 26% 88%, #34c75980, #34c75900 72%), radial-gradient(28% 36% at 52% 56%, #af52de73, #af52de00 72%), linear-gradient(160deg, #e3eaf8 0%, #f1e8f4 50%, #f8eee2 100%);--rp-chrome:rgba(255, 255, 255, calc(.3 + var(--rp-fill-boost)));--rp-chrome-filter:blur(calc(16px * var(--rp-blur-scale))) saturate(1.8);--rp-column:transparent;--rp-card-fill:rgba(255, 255, 255, calc(.4 + var(--rp-fill-boost)));--rp-card-filter:blur(calc(12px * var(--rp-blur-scale))) saturate(1.7);--rp-panel-fill:rgba(255, 255, 255, calc(.4 + var(--rp-fill-boost)));--rp-panel-filter:blur(calc(14px * var(--rp-blur-scale))) saturate(1.8) brightness(1.04);--rp-float-fill:rgba(255, 255, 255, calc(.74 + var(--rp-fill-boost)));--rp-float-filter:blur(calc(14px * var(--rp-blur-scale))) saturate(1.8) brightness(1.04);--rp-table-head:#ffffff80}:root[data-family=glass][data-scheme=dark],:root[data-flavour=frosted][data-scheme=dark],:root[data-flavour=tinted][data-scheme=dark]{--rp-muted:#8e8e93;--rp-subtle:#aeaeb2;--rp-text:#fff;--rp-placeholder:#ebebf54d;--rp-love:#ff453a;--rp-gold:#ff9f0a;--rp-rose:#ffb340;--rp-pine:#0a84ff;--rp-foam:#30d158;--rp-iris:#bf5af2;--rp-c1:#0a84ff;--rp-c2:#30d158;--rp-c3:#bf5af2;--rp-c4:#ff9f0a;--rp-c5:#64d2ff;--rp-c6:#ff375f;--rp-c7:#ffd60a;--rp-c8:#ff453a;--rp-hl-low:#7676802e;--rp-ctl:color-mix(in srgb, var(--rp-text) 10%, transparent);--rp-ctl-hover:color-mix(in srgb, var(--rp-text) 16%, transparent);--rp-ctl-pressed:color-mix(in srgb, var(--rp-text) 22%, transparent);--rp-hl-med:#78788052;--rp-hl-high:#7878805c;--rp-on-accent:#fff;--rp-on-text:#1c1c1e;--rp-positive-text:#30db5b;--rp-notice-text:#ffb340;--rp-accent-fill:#409cff;--rp-on-accent-fill:#1c1c1e;--rp-negative-fill:#ff6961;--rp-on-negative-fill:#1c1c1e;--rp-on-notice:#1c1c1e;--rp-line:#54545899;--rp-knob:#636366;--rp-knob-shadow:0 1px 3px #00000059;--rp-underlay:#0006;--rp-shadow-lg:0 2px 6px #0003, 0 20px 56px #00000073;--rp-solid-wall:#000;--rp-solid-chrome:#1c1c1e;--rp-solid-card:#1c1c1e;--rp-solid-float:#2c2c2e;--rp-solid-edge:#38383a}:root[data-family=glass][data-scheme=dark]{--rp-base:#1e1e2280;--rp-surface:#1e1e2280;--rp-overlay:#ffffff1a;--rp-shadow:0 1px 2px #0003, 0 10px 30px #0000004d;--rp-wall:radial-gradient(circle at 63% 36%, #ffd60a52 0 120px, #ffd60a00 121px), radial-gradient(circle at 30% 66%, #64d2ff00 0 190px, #64d2ff5c 191px 199px, #64d2ff00 200px), linear-gradient(118deg, #fff0 0 60%, #ffffff14 60% 64%, #fff0 64%), linear-gradient(28deg, #ff375f00 0 74%, #ff375f4d 74% 77%, #ff375f00 77%), radial-gradient(34% 46% at 28% 30%, #0a84ff6b, #0a84ff00 72%), radial-gradient(32% 44% at 84% 22%, #ff375f5c, #ff375f00 72%), radial-gradient(40% 50% at 74% 84%, #ff9f0a52, #ff9f0a00 72%), radial-gradient(36% 46% at 26% 88%, #30d15847, #30d15800 72%), radial-gradient(28% 36% at 52% 56%, #bf5af266, #bf5af200 72%), linear-gradient(160deg, #070a17 0%, #110c1e 50%, #05131a 100%);--rp-chrome:rgba(22, 22, 26, calc(.46 + var(--rp-fill-boost)));--rp-card-fill:rgba(30, 30, 34, calc(.5 + varLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
import{l as e}from"./wallpaper-CEC7gitM.js";import"./vendor-react-64fcanlc.js";import"./_commonjsHelpers-CXUWDbkB.js";const r=""+new URL("glass-B8ENqf-S.css",import.meta.url).href;let o;function t(){if(o)return o;const e=document.head.querySelector("link[data-glass]");return e?.sheet?o=Promise.resolve():(e?.remove(),o=new Promise((e,t)=>{const s=document.createElement("link");s.rel="stylesheet",s.href=r,s.dataset.glass="",s.onload=()=>e(),s.onerror=()=>{o=void 0,t(new Error(`Unable to preload CSS for ${r}`))},document.head.insertBefore(s,document.head.querySelector('link[rel="stylesheet"], style'))}),o)}e();export{t as linkStylesheet};
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
Loaded 100 of 175 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user