2023-09-02 14:25:22 +08:00
|
|
|
import { Show, createMemo } from 'solid-js'
|
2023-09-03 03:26:29 +08:00
|
|
|
import { ProxyPreviewBar, ProxyPreviewDots } from '~/components'
|
|
|
|
import { PROXIES_PREVIEW_TYPE } from '~/constants'
|
|
|
|
import { proxiesPreviewType } from '~/signals'
|
2023-09-02 11:52:51 +08:00
|
|
|
|
2023-09-03 03:26:29 +08:00
|
|
|
export const ProxyNodePreview = (props: {
|
|
|
|
proxyNameList: string[]
|
|
|
|
now?: string
|
|
|
|
}) => {
|
2023-09-03 02:41:13 +08:00
|
|
|
const off = () => proxiesPreviewType() === PROXIES_PREVIEW_TYPE.OFF
|
|
|
|
|
2023-09-02 14:25:22 +08:00
|
|
|
const isSmallGroup = createMemo(() => props.proxyNameList.length <= 30)
|
2023-09-03 02:41:13 +08:00
|
|
|
|
2023-09-02 14:25:22 +08:00
|
|
|
const isShowBar = createMemo(() => {
|
|
|
|
const type = proxiesPreviewType()
|
|
|
|
|
|
|
|
return (
|
|
|
|
type === PROXIES_PREVIEW_TYPE.BAR ||
|
|
|
|
(type === PROXIES_PREVIEW_TYPE.Auto && !isSmallGroup())
|
|
|
|
)
|
|
|
|
})
|
|
|
|
|
|
|
|
const isShowDots = createMemo(() => {
|
|
|
|
const type = proxiesPreviewType()
|
|
|
|
|
|
|
|
return (
|
2023-09-02 14:28:01 +08:00
|
|
|
type === PROXIES_PREVIEW_TYPE.DOTS ||
|
2023-09-02 14:25:22 +08:00
|
|
|
(type === PROXIES_PREVIEW_TYPE.Auto && isSmallGroup())
|
|
|
|
)
|
|
|
|
})
|
|
|
|
|
2023-09-02 11:52:51 +08:00
|
|
|
return (
|
2023-09-03 02:41:13 +08:00
|
|
|
<Show when={!off()}>
|
2023-09-02 14:25:22 +08:00
|
|
|
<Show when={isShowBar()}>
|
2023-09-02 12:05:31 +08:00
|
|
|
<ProxyPreviewBar proxyNameList={props.proxyNameList} now={props.now} />
|
2023-09-02 11:52:51 +08:00
|
|
|
</Show>
|
2023-09-02 14:25:22 +08:00
|
|
|
<Show when={isShowDots()}>
|
2023-09-02 12:05:31 +08:00
|
|
|
<ProxyPreviewDots proxyNameList={props.proxyNameList} now={props.now} />
|
2023-09-02 11:52:51 +08:00
|
|
|
</Show>
|
2023-09-03 02:41:13 +08:00
|
|
|
</Show>
|
2023-09-02 11:52:51 +08:00
|
|
|
)
|
|
|
|
}
|