@someray-ui/components 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -1
- package/dist/components/SrAppHeader.vue.d.ts +0 -10
- package/dist/components/SrContent.vue.d.ts +11 -0
- package/dist/components/SrContentArea.vue.d.ts +39 -0
- package/dist/components/SrMonitorLayout.vue.d.ts +41 -0
- package/dist/components/SrSidePanel.vue.d.ts +74 -0
- package/dist/components/SrToolbar.vue.d.ts +40 -0
- package/dist/components/SrWorkspace.vue.d.ts +75 -0
- package/dist/index.d.ts +7 -1
- package/dist/sr-ui.css +1 -1
- package/dist/sr-ui.js +498 -256
- package/package.json +11 -8
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# @someray-ui/components
|
|
2
2
|
|
|
3
3
|
Someray 内部 Vue3 通用组件库。当前导出:`SrAppHeader`、`SrResourceTree`、`SrVideoWall`,
|
|
4
|
+
布局组件 `SrContent`、`SrWorkspace`、`SrMonitorLayout`、`SrContentArea`、`SrSidePanel`、`SrToolbar`,
|
|
4
5
|
以及顶栏类型与默认配置(`NavItem` / `MenuItem` / `Weather` / `DEFAULT_MENUS` / `DEFAULT_USER_MENUS`)。
|
|
5
6
|
|
|
6
7
|
## 依赖(peer,由你的工程提供)
|
|
@@ -52,16 +53,69 @@ app.use(SrUI) // 注册 SrAppHeader / SrResourceTree / SrVideoWall
|
|
|
52
53
|
|
|
53
54
|
### SrAppHeader 主要 props / slots / events
|
|
54
55
|
|
|
55
|
-
- props:`logo` `title` `subtitle` `menus` `activeKey` `showWeather` `weather` `showDivider` `
|
|
56
|
+
- props:`logo` `title` `subtitle` `menus` `activeKey` `showWeather` `weather` `showDivider` `bellCount` `userName` `userMenus`
|
|
56
57
|
- slots:`#bell`(铃铛弹窗内容)、`#brand`(整体替换左侧品牌)
|
|
57
58
|
- events:`@menu-select(key)`、`@bell-click`、`@nav-select(item)`
|
|
58
59
|
|
|
60
|
+
> 时钟、铃铛、用户菜单按钮为**固定常驻**元素,不受配置控制(无 `showClock`/`showBell` 开关);`showWeather`/`showDivider` 仍可配置。
|
|
61
|
+
|
|
59
62
|
> 菜单/用户菜单的 `icon` 可传 Arco 图标名(`'icon-home'`)或原始 SVG 字符串(`'<svg…>'`)。
|
|
60
63
|
> 本库已去除对 `/assets` 的硬依赖:logo 经 `logo` prop 或 `#brand` 插槽提供,"更多"按钮为内联图标。
|
|
61
64
|
|
|
65
|
+
## 布局组件
|
|
66
|
+
|
|
67
|
+
分两层:
|
|
68
|
+
|
|
69
|
+
- **应用骨架层**:`SrContent`(顶栏下方的内容区,高 = `100% - var(--header-h)`,不内置底色)
|
|
70
|
+
- **页面骨架层**:`SrWorkspace`(高阶页面壳)/ `SrMonitorLayout`(三列骨架)/ `SrContentArea`(中间卡片)/ `SrSidePanel`(可拖拽改宽面板)/ `SrToolbar`(底部工具栏)
|
|
71
|
+
|
|
72
|
+
### 最常用:SrWorkspace(一行搞定左中右 + 工具栏)
|
|
73
|
+
|
|
74
|
+
```vue
|
|
75
|
+
<sr-app-header ... />
|
|
76
|
+
<sr-content>
|
|
77
|
+
<sr-workspace left-title="资源树" right-title="详情">
|
|
78
|
+
<template #left>左面板</template>
|
|
79
|
+
<main>中间内容</main>
|
|
80
|
+
<template #toolbar>底部工具栏</template>
|
|
81
|
+
<template #right>右面板</template>
|
|
82
|
+
</sr-workspace>
|
|
83
|
+
</sr-content>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
未传的列/工具栏插槽不渲染。还有 `#left-footer` / `#right-footer`(左/右面板底栏)、`#toolbar-left` / `#toolbar-right`(工具栏左右段)等可选插槽。
|
|
87
|
+
|
|
88
|
+
### SrWorkspace props
|
|
89
|
+
|
|
90
|
+
| prop | 类型 | 默认 | 说明 |
|
|
91
|
+
|---|---|---|---|
|
|
92
|
+
| leftTitle / rightTitle | string | `''` | 左/右面板标题 |
|
|
93
|
+
| leftWidth / rightWidth | string \| number | `''` | 左/右面板宽度(空则用 `--sider-w` / `--rpanel-w`) |
|
|
94
|
+
| leftResizable / rightResizable | boolean | `true` | 是否可拖拽改宽 |
|
|
95
|
+
| flush | boolean | `false` | 贴边模式:去掉外层 padding/gap 与面板边框/圆角/阴影,布局贴满父容器(flush 面板左右各保留一条分隔线) |
|
|
96
|
+
|
|
97
|
+
### 单独使用子组件
|
|
98
|
+
|
|
99
|
+
- `<sr-monitor-layout :flush>`:仅三列骨架,中间不自动包卡片。
|
|
100
|
+
- `<sr-content-area :flush>`:带边框圆角阴影的中间卡片(`flush` 去掉边框/圆角/阴影),含 `#toolbar` 插槽。
|
|
101
|
+
- `<sr-side-panel side="left|right" :width :min-width :max-width :resizable :flush title @resize>`:可拖拽改宽面板(`flush` 去掉边框/圆角/阴影,左右各保留分隔线),含 `#header` / `#footer` 插槽。
|
|
102
|
+
- `<sr-toolbar :height>`:底部工具栏,含 `#left` / `#right` 插槽(默认插槽为中间)。
|
|
103
|
+
|
|
104
|
+
> `flush` 会从 `SrWorkspace` 自动透传到内部的 `SrMonitorLayout` / `SrSidePanel` / `SrContentArea`,也可在各子组件单独使用时传入。
|
|
105
|
+
|
|
106
|
+
> `SrContent` 不内置底色,消费方可自行加 `background: var(--app)` 或自定义。
|
|
107
|
+
|
|
62
108
|
## 构建
|
|
63
109
|
|
|
64
110
|
```bash
|
|
65
111
|
npm install
|
|
66
112
|
npm run build # 产出 dist/sr-ui.js、dist/sr-ui.css、dist/*.d.ts
|
|
67
113
|
```
|
|
114
|
+
|
|
115
|
+
## 本地预览(playground)
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npm run dev # 启动库内 playground,浏览器预览全部布局组件
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
`dev/` 目录不发布(`package.json` 的 `files` 仅含 `dist`)。
|
|
@@ -13,8 +13,6 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
13
13
|
showWeather?: boolean;
|
|
14
14
|
weather?: Weather;
|
|
15
15
|
showDivider?: boolean;
|
|
16
|
-
showClock?: boolean;
|
|
17
|
-
showBell?: boolean;
|
|
18
16
|
bellCount?: number;
|
|
19
17
|
userName?: string;
|
|
20
18
|
userMenus?: MenuItem[];
|
|
@@ -32,8 +30,6 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
32
30
|
windLevel: string;
|
|
33
31
|
};
|
|
34
32
|
showDivider: boolean;
|
|
35
|
-
showClock: boolean;
|
|
36
|
-
showBell: boolean;
|
|
37
33
|
bellCount: number;
|
|
38
34
|
userName: string;
|
|
39
35
|
userMenus: () => MenuItem[];
|
|
@@ -50,8 +46,6 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
50
46
|
showWeather?: boolean;
|
|
51
47
|
weather?: Weather;
|
|
52
48
|
showDivider?: boolean;
|
|
53
|
-
showClock?: boolean;
|
|
54
|
-
showBell?: boolean;
|
|
55
49
|
bellCount?: number;
|
|
56
50
|
userName?: string;
|
|
57
51
|
userMenus?: MenuItem[];
|
|
@@ -69,8 +63,6 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
69
63
|
windLevel: string;
|
|
70
64
|
};
|
|
71
65
|
showDivider: boolean;
|
|
72
|
-
showClock: boolean;
|
|
73
|
-
showBell: boolean;
|
|
74
66
|
bellCount: number;
|
|
75
67
|
userName: string;
|
|
76
68
|
userMenus: () => MenuItem[];
|
|
@@ -87,8 +79,6 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
|
|
|
87
79
|
showWeather: boolean;
|
|
88
80
|
weather: Weather;
|
|
89
81
|
showDivider: boolean;
|
|
90
|
-
showClock: boolean;
|
|
91
|
-
showBell: boolean;
|
|
92
82
|
bellCount: number;
|
|
93
83
|
userName: string;
|
|
94
84
|
userMenus: MenuItem[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
default?(_: {}): any;
|
|
3
|
+
};
|
|
4
|
+
declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
5
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
|
|
6
|
+
export default _default;
|
|
7
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
8
|
+
new (): {
|
|
9
|
+
$slots: S;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
default?(_: {}): any;
|
|
3
|
+
toolbar?(_: {}): any;
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
6
|
+
flush?: boolean;
|
|
7
|
+
}>, {
|
|
8
|
+
flush: boolean;
|
|
9
|
+
}>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
10
|
+
flush?: boolean;
|
|
11
|
+
}>, {
|
|
12
|
+
flush: boolean;
|
|
13
|
+
}>>> & Readonly<{}>, {
|
|
14
|
+
flush: boolean;
|
|
15
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
16
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
|
|
17
|
+
export default _default;
|
|
18
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
19
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
20
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
21
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
22
|
+
} : {
|
|
23
|
+
type: import('vue').PropType<T[K]>;
|
|
24
|
+
required: true;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
type __VLS_WithDefaults<P, D> = {
|
|
28
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
29
|
+
default: D[K];
|
|
30
|
+
}> : P[K];
|
|
31
|
+
};
|
|
32
|
+
type __VLS_Prettify<T> = {
|
|
33
|
+
[K in keyof T]: T[K];
|
|
34
|
+
} & {};
|
|
35
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
36
|
+
new (): {
|
|
37
|
+
$slots: S;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
left?(_: {}): any;
|
|
3
|
+
default?(_: {}): any;
|
|
4
|
+
toolbar?(_: {}): any;
|
|
5
|
+
right?(_: {}): any;
|
|
6
|
+
};
|
|
7
|
+
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
8
|
+
flush?: boolean;
|
|
9
|
+
}>, {
|
|
10
|
+
flush: boolean;
|
|
11
|
+
}>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
12
|
+
flush?: boolean;
|
|
13
|
+
}>, {
|
|
14
|
+
flush: boolean;
|
|
15
|
+
}>>> & Readonly<{}>, {
|
|
16
|
+
flush: boolean;
|
|
17
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
18
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
|
|
19
|
+
export default _default;
|
|
20
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
21
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
22
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
23
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
24
|
+
} : {
|
|
25
|
+
type: import('vue').PropType<T[K]>;
|
|
26
|
+
required: true;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
type __VLS_WithDefaults<P, D> = {
|
|
30
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
31
|
+
default: D[K];
|
|
32
|
+
}> : P[K];
|
|
33
|
+
};
|
|
34
|
+
type __VLS_Prettify<T> = {
|
|
35
|
+
[K in keyof T]: T[K];
|
|
36
|
+
} & {};
|
|
37
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
38
|
+
new (): {
|
|
39
|
+
$slots: S;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
header?(_: {}): any;
|
|
3
|
+
default?(_: {}): any;
|
|
4
|
+
footer?(_: {}): any;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
7
|
+
side?: "left" | "right";
|
|
8
|
+
width?: string | number;
|
|
9
|
+
title?: string;
|
|
10
|
+
resizable?: boolean;
|
|
11
|
+
minWidth?: number;
|
|
12
|
+
maxWidth?: number;
|
|
13
|
+
flush?: boolean;
|
|
14
|
+
}>, {
|
|
15
|
+
side: string;
|
|
16
|
+
width: string;
|
|
17
|
+
title: string;
|
|
18
|
+
resizable: boolean;
|
|
19
|
+
minWidth: number;
|
|
20
|
+
maxWidth: number;
|
|
21
|
+
flush: boolean;
|
|
22
|
+
}>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
23
|
+
resize: (width: number) => void;
|
|
24
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
25
|
+
side?: "left" | "right";
|
|
26
|
+
width?: string | number;
|
|
27
|
+
title?: string;
|
|
28
|
+
resizable?: boolean;
|
|
29
|
+
minWidth?: number;
|
|
30
|
+
maxWidth?: number;
|
|
31
|
+
flush?: boolean;
|
|
32
|
+
}>, {
|
|
33
|
+
side: string;
|
|
34
|
+
width: string;
|
|
35
|
+
title: string;
|
|
36
|
+
resizable: boolean;
|
|
37
|
+
minWidth: number;
|
|
38
|
+
maxWidth: number;
|
|
39
|
+
flush: boolean;
|
|
40
|
+
}>>> & Readonly<{
|
|
41
|
+
onResize?: ((width: number) => any) | undefined;
|
|
42
|
+
}>, {
|
|
43
|
+
title: string;
|
|
44
|
+
width: string | number;
|
|
45
|
+
flush: boolean;
|
|
46
|
+
side: "left" | "right";
|
|
47
|
+
resizable: boolean;
|
|
48
|
+
minWidth: number;
|
|
49
|
+
maxWidth: number;
|
|
50
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
51
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
|
|
52
|
+
export default _default;
|
|
53
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
54
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
55
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
56
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
57
|
+
} : {
|
|
58
|
+
type: import('vue').PropType<T[K]>;
|
|
59
|
+
required: true;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
type __VLS_WithDefaults<P, D> = {
|
|
63
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
64
|
+
default: D[K];
|
|
65
|
+
}> : P[K];
|
|
66
|
+
};
|
|
67
|
+
type __VLS_Prettify<T> = {
|
|
68
|
+
[K in keyof T]: T[K];
|
|
69
|
+
} & {};
|
|
70
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
71
|
+
new (): {
|
|
72
|
+
$slots: S;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
left?(_: {}): any;
|
|
3
|
+
default?(_: {}): any;
|
|
4
|
+
right?(_: {}): any;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
7
|
+
height?: string | number;
|
|
8
|
+
}>, {
|
|
9
|
+
height: number;
|
|
10
|
+
}>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
11
|
+
height?: string | number;
|
|
12
|
+
}>, {
|
|
13
|
+
height: number;
|
|
14
|
+
}>>> & Readonly<{}>, {
|
|
15
|
+
height: string | number;
|
|
16
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
17
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
|
|
18
|
+
export default _default;
|
|
19
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
20
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
21
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
22
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
23
|
+
} : {
|
|
24
|
+
type: import('vue').PropType<T[K]>;
|
|
25
|
+
required: true;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
type __VLS_WithDefaults<P, D> = {
|
|
29
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
30
|
+
default: D[K];
|
|
31
|
+
}> : P[K];
|
|
32
|
+
};
|
|
33
|
+
type __VLS_Prettify<T> = {
|
|
34
|
+
[K in keyof T]: T[K];
|
|
35
|
+
} & {};
|
|
36
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
37
|
+
new (): {
|
|
38
|
+
$slots: S;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
left?(_: {}): any;
|
|
3
|
+
"left-footer"?(_: {}): any;
|
|
4
|
+
default?(_: {}): any;
|
|
5
|
+
"toolbar-left"?(_: {}): any;
|
|
6
|
+
toolbar?(_: {}): any;
|
|
7
|
+
"toolbar-right"?(_: {}): any;
|
|
8
|
+
right?(_: {}): any;
|
|
9
|
+
"right-footer"?(_: {}): any;
|
|
10
|
+
};
|
|
11
|
+
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
12
|
+
leftTitle?: string;
|
|
13
|
+
rightTitle?: string;
|
|
14
|
+
leftWidth?: string | number;
|
|
15
|
+
rightWidth?: string | number;
|
|
16
|
+
leftResizable?: boolean;
|
|
17
|
+
rightResizable?: boolean;
|
|
18
|
+
flush?: boolean;
|
|
19
|
+
}>, {
|
|
20
|
+
leftTitle: string;
|
|
21
|
+
rightTitle: string;
|
|
22
|
+
leftWidth: string;
|
|
23
|
+
rightWidth: string;
|
|
24
|
+
leftResizable: boolean;
|
|
25
|
+
rightResizable: boolean;
|
|
26
|
+
flush: boolean;
|
|
27
|
+
}>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
|
|
28
|
+
leftTitle?: string;
|
|
29
|
+
rightTitle?: string;
|
|
30
|
+
leftWidth?: string | number;
|
|
31
|
+
rightWidth?: string | number;
|
|
32
|
+
leftResizable?: boolean;
|
|
33
|
+
rightResizable?: boolean;
|
|
34
|
+
flush?: boolean;
|
|
35
|
+
}>, {
|
|
36
|
+
leftTitle: string;
|
|
37
|
+
rightTitle: string;
|
|
38
|
+
leftWidth: string;
|
|
39
|
+
rightWidth: string;
|
|
40
|
+
leftResizable: boolean;
|
|
41
|
+
rightResizable: boolean;
|
|
42
|
+
flush: boolean;
|
|
43
|
+
}>>> & Readonly<{}>, {
|
|
44
|
+
flush: boolean;
|
|
45
|
+
leftTitle: string;
|
|
46
|
+
rightTitle: string;
|
|
47
|
+
leftWidth: string | number;
|
|
48
|
+
rightWidth: string | number;
|
|
49
|
+
leftResizable: boolean;
|
|
50
|
+
rightResizable: boolean;
|
|
51
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
52
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
|
|
53
|
+
export default _default;
|
|
54
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
55
|
+
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
56
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
57
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
58
|
+
} : {
|
|
59
|
+
type: import('vue').PropType<T[K]>;
|
|
60
|
+
required: true;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
type __VLS_WithDefaults<P, D> = {
|
|
64
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
65
|
+
default: D[K];
|
|
66
|
+
}> : P[K];
|
|
67
|
+
};
|
|
68
|
+
type __VLS_Prettify<T> = {
|
|
69
|
+
[K in keyof T]: T[K];
|
|
70
|
+
} & {};
|
|
71
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
72
|
+
new (): {
|
|
73
|
+
$slots: S;
|
|
74
|
+
};
|
|
75
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,14 @@ import { App } from 'vue';
|
|
|
2
2
|
import { default as SrAppHeader } from './components/SrAppHeader.vue';
|
|
3
3
|
import { default as SrResourceTree } from './components/SrResourceTree.vue';
|
|
4
4
|
import { default as SrVideoWall } from './components/SrVideoWall.vue';
|
|
5
|
+
import { default as SrContent } from './components/SrContent.vue';
|
|
6
|
+
import { default as SrMonitorLayout } from './components/SrMonitorLayout.vue';
|
|
7
|
+
import { default as SrContentArea } from './components/SrContentArea.vue';
|
|
8
|
+
import { default as SrSidePanel } from './components/SrSidePanel.vue';
|
|
9
|
+
import { default as SrToolbar } from './components/SrToolbar.vue';
|
|
10
|
+
import { default as SrWorkspace } from './components/SrWorkspace.vue';
|
|
5
11
|
|
|
6
|
-
export { SrAppHeader, SrResourceTree, SrVideoWall };
|
|
12
|
+
export { SrAppHeader, SrResourceTree, SrVideoWall, SrContent, SrMonitorLayout, SrContentArea, SrSidePanel, SrToolbar, SrWorkspace };
|
|
7
13
|
export * from './components/headerConfig';
|
|
8
14
|
/** Vue 插件:app.use(SrUI) 一次性注册全部 Sr* 组件 */
|
|
9
15
|
declare const _default: {
|
package/dist/sr-ui.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
body{--app: var(--color-fill-1);--panel: var(--color-bg-1);--panel2: var(--color-fill-2);--panel3: var(--color-fill-1);--line: var(--color-border-2);--line2: var(--color-border-1);--txt: var(--color-text-1);--txt2: var(--color-text-2);--sub: var(--color-text-3);--mute: var(--color-text-4);--accent: rgb(var(--primary-6));--accent-soft: rgb(var(--primary-1));--accent-deep: rgb(var(--primary-7));--success: rgb(var(--green-6));--warning: rgb(var(--orange-6));--danger: rgb(var(--red-6));--topbar: rgb(var(--primary-6));--video: var(--color-fill-2);--video-line: var(--color-border-1);--scroll: var(--color-border-3);--header-h: 76px;--header-pad: 28px;--sider-w: 256px;--rpanel-w: 272px;--ops-side-w: 200px;--nav-min-w: 240px}.cv6h[data-v-9d23d618]{flex:none;width:100%;height:var(--header-h);z-index:5;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 var(--header-pad);background:var(--topbar)}.cv6h__left[data-v-9d23d618]{flex:0 0 auto;display:flex;align-items:center;gap:12px}.cv6h__logo[data-v-9d23d618]{display:inline-flex;align-items:center;line-height:0}.cv6h__logo img[data-v-9d23d618]{display:block;height:32px;width:auto}.cv6h__brand[data-v-9d23d618]{display:flex;flex-direction:column;justify-content:center}.cv6h__title[data-v-9d23d618]{margin:0;font-size:26px;font-weight:700;letter-spacing:.04em;color:#fff;line-height:1.1;white-space:nowrap}.cv6h__sub[data-v-9d23d618]{margin:4px 0 0;font-size:8px;font-weight:400;letter-spacing:.2em;color:#ffffffbf;text-transform:uppercase;white-space:nowrap}.cv6h__nav[data-v-9d23d618]{flex:1 1 auto;display:flex;justify-content:center;align-items:center;min-width:var(--nav-min-w);overflow:hidden}.cv6h__navframe[data-v-9d23d618]{display:flex;align-items:center;gap:6px;flex:none}.cv6h__item[data-v-9d23d618]{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:7px 15px;border-radius:8px;background:transparent;color:#fff;font-size:14px;font-weight:500;line-height:1.6;letter-spacing:.02em;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background .15s,color .15s}.cv6h__item[data-v-9d23d618]:hover{background:#ffffff1a;color:#fff}.cv6h__item.router-link-active[data-v-9d23d618],.cv6h__item.is-active[data-v-9d23d618]{background:var(--accent-deep);color:#fff}.cv6h__ico[data-v-9d23d618]{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.cv6h__ico[data-v-9d23d618] svg{display:block;width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.cv6h__ico[data-v-9d23d618] .pl{fill:currentColor;stroke:none}.cv6h__right[data-v-9d23d618]{flex:0 0 auto;display:flex;align-items:center;gap:14px}.cv6h__weather[data-v-9d23d618]{display:flex;align-items:center;gap:8px;color:#fff}.cv6h__wico svg[data-v-9d23d618]{width:25px;height:25px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.cv6h__wtext[data-v-9d23d618]{display:flex;flex-direction:column;gap:2px;line-height:1.15}.cv6h__temp[data-v-9d23d618]{font-size:18px;color:#fff;white-space:nowrap}.cv6h__cond[data-v-9d23d618]{font-size:14px;color:#ffffffeb;white-space:nowrap}.cv6h__wind[data-v-9d23d618]{display:flex;flex-direction:column;gap:2px;line-height:1.15;color:#fff}.cv6h__wdir[data-v-9d23d618]{font-size:14px;color:#fff;white-space:nowrap}.cv6h__wlvl[data-v-9d23d618]{font-size:14px;color:#ffffffeb;white-space:nowrap}.cv6h__div[data-v-9d23d618]{width:1px;height:36px;background:#ffffff59;flex-shrink:0}.cv6h__clock[data-v-9d23d618]{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15;color:#fff}.cv6h__time[data-v-9d23d618]{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:#fff;letter-spacing:.03em}.cv6h__date[data-v-9d23d618]{margin-top:2px;font-size:9px;color:#ffffffd9;letter-spacing:.03em}.cv6h__bellwrap[data-v-9d23d618]{position:relative;display:inline-flex;align-items:center}.cv6h__bell[data-v-9d23d618]{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.cv6h__bell svg[data-v-9d23d618]{width:30px;height:30px;stroke:#fff;fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.cv6h__bellwrap[data-v-9d23d618] .arco-badge-number,.cv6h__bellwrap[data-v-9d23d618] .arco-badge-text{min-width:20px;height:14px;padding:0 6px;color:var(--color-white);font-weight:500;font-size:10px;line-height:14px;background-color:rgb(var(--danger-6));box-shadow:0 0 0 2px var(--color-bg-2)}.cv6h__bellpop[data-v-9d23d618]{position:absolute;top:calc(100% + 12px);right:-8px;min-width:320px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 40px #0f2e592e;overflow:hidden;z-index:40}.cv6h__bell-empty[data-v-9d23d618]{padding:40px 16px;text-align:center;color:var(--mute);font-size:13px}.cv6h__tools[data-v-9d23d618]{position:relative;display:flex;align-items:center}.cv6h__menubtn[data-v-9d23d618]{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;background:transparent;cursor:pointer;border-radius:6px;transition:background .15s}.cv6h__menubtn[data-v-9d23d618]:hover{background:#ffffff1f}.cv6h__menubtn img[data-v-9d23d618]{display:block;width:24px;height:24px;object-fit:contain}.cv6h__menubtn svg[data-v-9d23d618]{width:30px;height:30px;fill:#fff}.cv6h__menu[data-v-9d23d618]{position:absolute;top:calc(100% + 10px);right:0;min-width:176px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #0f2e5926;padding:6px;z-index:40}.cv6h__mhead[data-v-9d23d618]{padding:8px 12px 6px;font-size:12px;color:var(--sub)}.cv6h__msep[data-v-9d23d618]{height:1px;background:var(--line2);margin:5px 8px}.cv6h__mitem[data-v-9d23d618]{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:7px;font-size:13.5px;color:var(--txt2);cursor:pointer;white-space:nowrap}.cv6h__mitem[data-v-9d23d618]:hover{background:var(--accent-soft);color:var(--accent)}.cv6h__mitem.danger[data-v-9d23d618]{color:var(--danger)}.cv6h__mitem.danger[data-v-9d23d618]:hover{background:rgb(var(--red-1));color:var(--danger)}.cv6h__mico[data-v-9d23d618]{display:inline-flex}.cv6h__mico[data-v-9d23d618] svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.res[data-v-05bca26c]{flex:none;width:256px;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.res-tabs[data-v-05bca26c]{flex:none;display:flex;border-bottom:1px solid var(--line)}.res-tabs a[data-v-05bca26c]{flex:1;text-align:center;padding:13px 0;font-size:13.5px;color:var(--sub);cursor:pointer;position:relative}.res-tabs a.active[data-v-05bca26c]{color:var(--accent);font-weight:600}.res-tabs a.active[data-v-05bca26c]:after{content:"";position:absolute;left:50%;bottom:-1px;transform:translate(-50%);width:26px;height:2px;border-radius:2px;background:var(--accent)}.res-pad[data-v-05bca26c]{padding:12px 12px 4px;display:flex;flex-direction:column;gap:10px}.res-listhead[data-v-05bca26c]{display:flex;align-items:center;padding:6px 12px 8px;font-size:13px;color:var(--sub)}.res-listhead b[data-v-05bca26c]{font-weight:600}.res-acts[data-v-05bca26c]{margin-left:auto;display:flex;gap:12px;color:var(--mute);font-size:15px}.res-acts[data-v-05bca26c] svg{cursor:pointer}.res-acts[data-v-05bca26c] svg:hover{color:var(--accent)}.res-tree[data-v-05bca26c]{flex:1;overflow-y:auto;padding:0 6px 8px}.res-cnt[data-v-05bca26c]{color:var(--mute);font-size:12px}.ptz[data-v-05bca26c]{flex:none;border-top:1px solid var(--line);padding:12px 14px 16px}.ptz-head[data-v-05bca26c]{display:flex;align-items:center;font-size:13px;color:var(--sub);margin-bottom:12px}.ptz-chev[data-v-05bca26c]{margin-left:auto}.joy[data-v-05bca26c]{width:120px;height:120px;margin:0 auto;border-radius:50%;background:var(--panel2);border:1px solid var(--line);position:relative;display:flex;align-items:center;justify-content:center}.joy[data-v-05bca26c]:before{content:"";position:absolute;top:14px;right:14px;bottom:14px;left:14px;border-radius:50%;border:1px dashed var(--line)}.joy .knob[data-v-05bca26c]{width:46px;height:46px;border-radius:50%;background:var(--panel);border:1px solid var(--line);box-shadow:0 2px 8px #1432641f}.joy .ar[data-v-05bca26c]{position:absolute;color:var(--mute);display:flex;cursor:pointer}.joy .ar[data-v-05bca26c]:hover{color:var(--accent)}.joy .up[data-v-05bca26c]{top:7px;left:50%;transform:translate(-50%)}.joy .dn[data-v-05bca26c]{bottom:7px;left:50%;transform:translate(-50%)}.joy .lf[data-v-05bca26c]{left:8px;top:50%;transform:translateY(-50%)}.joy .rt[data-v-05bca26c]{right:8px;top:50%;transform:translateY(-50%)}.speed[data-v-05bca26c]{margin-top:14px;font-size:12px;color:var(--sub);display:flex;align-items:center;gap:10px}.speed b[data-v-05bca26c]{color:var(--accent);font-weight:600}.zoom[data-v-05bca26c]{margin-top:12px;display:flex;gap:10px}.wall[data-v-6ebd5cbf]{width:100%;height:100%;display:grid;gap:0;background:var(--app)}.cell[data-v-6ebd5cbf]{background:var(--video);border:1px solid var(--video-line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--sub);position:relative;overflow:hidden;cursor:pointer}.cell.active[data-v-6ebd5cbf]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.nosrc[data-v-6ebd5cbf]{width:55%;max-width:170px;aspect-ratio:24 / 15;background:center / contain no-repeat url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMTUwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KICA8cGF0aCBkPSJNIDMwIDgwIEwgMzIgODUgTCAzNyA4NyBMIDMyIDg5IEwgMzAgOTQgTCAyOCA4OSBMIDIzIDg3IEwgMjggODUgWiIgZmlsbD0iIzliYzFmZiIgb3BhY2l0eT0iMC42Ii8+CiAgPHBhdGggZD0iTSAxNzAgNTAgTCAxNzEuNSA1NCBMIDE3NS41IDU1LjUgTCAxNzEuNSA1NyBMIDE3MCA2MSBMIDE2OC41IDU3IEwgMTY0LjUgNTUuNSBMIDE2OC41IDU0IFoiIGZpbGw9IiM5YmMxZmYiIG9wYWNpdHk9IjAuNiIvPgoKICA8ZWxsaXBzZSBjeD0iOTAiIGN5PSIxMjUiIHJ4PSI0NSIgcnk9IjUiIGZpbGw9IiNkMmRhZjAiIG9wYWNpdHk9IjAuNCIgLz4KCiAgPGcgaWQ9ImNhbWVyYSI+CiAgICA8cGF0aCBkPSJNIDYwIDEyMCBDIDYwIDExNSwgMTIwIDExNSwgMTIwIDEyMCBaIiBmaWxsPSIjYTliYWQ2IiAvPgogICAgPHJlY3QgeD0iNjUiIHk9IjEyMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjQiIHJ4PSIyIiBmaWxsPSIjOGNhMmM0IiAvPgogICAgPHJlY3QgeD0iODUiIHk9IjEwMCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjE2IiBmaWxsPSIjOGNhMmM0IiAvPgogICAgPGNpcmNsZSBjeD0iOTAiIGN5PSI2NSIgcj0iNDAiIGZpbGw9IiNjYmQ3ZWIiIC8+CiAgICA8Y2lyY2xlIGN4PSI5MCIgY3k9IjY1IiByPSIzMiIgZmlsbD0iIzRhNjE4NSIgLz4KICAgIDxjaXJjbGUgY3g9IjkwIiBjeT0iNjUiIHI9IjIwIiBmaWxsPSIjOWJjMWZmIiAvPgogICAgPGNpcmNsZSBjeD0iOTAiIGN5PSI2NSIgcj0iMTAiIGZpbGw9IiMxYzRjZGUiIC8+CiAgICA8Y2lyY2xlIGN4PSI4NyIgY3k9IjYyIiByPSI0IiBmaWxsPSIjZmZmZmZmIiBvcGFjaXR5PSIwLjgiIC8+CiAgPC9nPgoKICA8ZyBpZD0iY2FibGUtYW5kLXBsdWciPgogICAgPHBhdGggZD0iTSAxMTUgMTIwIFEgMTQwIDEyMCwgMTUwIDk1IFQgMTk1IDk1IiBmaWxsPSJub25lIiBzdHJva2U9IiNhOWJhZDYiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPgogICAgPHJlY3QgeD0iMTk1IiB5PSI5MiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0iIzhjYTJjNCIgLz4KICAgIDxyZWN0IHg9IjIwMSIgeT0iODciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgcng9IjIiIGZpbGw9IiNjYmQ3ZWIiIC8+CiAgICA8cmVjdCB4PSIyMTciIHk9IjkwIiB3aWR0aD0iNiIgaGVpZ2h0PSIzIiBmaWxsPSIjNjA3OTlmIiAvPgogICAgPHJlY3QgeD0iMjE3IiB5PSIxMDAiIHdpZHRoPSI2IiBoZWlnaHQ9IjMiIGZpbGw9IiM2MDc5OWYiIC8+CiAgPC9nPgoKICA8ZyBpZD0iZXJyb3Itc3RhdHVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOTUsIDEwMCkiPgogICAgPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjEyIiBmaWxsPSIjZmZmZmZmIiBvcGFjaXR5PSIwLjMiLz4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMSIgZmlsbD0iIzFjNGNkZSIgc3Ryb2tlPSIjZmZmZmZmIiBzdHJva2Utd2lkdGg9IjIiIC8+CiAgICA8Y2lyY2xlIGN4PSIwIiBjeT0iMCIgcj0iOCIgZmlsbD0iIzJmN2RmZiIgLz4KICAgIDxwYXRoIGQ9Ik0gLTQgLTQgTCA0IDQgTSA0IC00IEwgLTQgNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgLz4KICA8L2c+Cjwvc3ZnPgo=)}.cap[data-v-6ebd5cbf]{font-size:13px;color:var(--sub)}
|
|
1
|
+
body{--app: var(--color-fill-1);--panel: var(--color-bg-1);--panel2: var(--color-fill-2);--panel3: var(--color-fill-1);--line: var(--color-border-2);--line2: var(--color-border-1);--txt: var(--color-text-1);--txt2: var(--color-text-2);--sub: var(--color-text-3);--mute: var(--color-text-4);--accent: rgb(var(--primary-6));--accent-soft: rgb(var(--primary-1));--accent-deep: rgb(var(--primary-7));--success: rgb(var(--green-6));--warning: rgb(var(--orange-6));--danger: rgb(var(--red-6));--topbar: rgb(var(--primary-6));--video: var(--color-fill-2);--video-line: var(--color-border-1);--scroll: var(--color-border-3);--header-h: 76px;--header-pad: 28px;--sider-w: 256px;--rpanel-w: 272px;--ops-side-w: 200px;--nav-min-w: 240px}.sr-h[data-v-39ec7a9e]{flex:none;width:100%;height:var(--header-h);z-index:5;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 var(--header-pad);background:var(--topbar)}.sr-h__left[data-v-39ec7a9e]{flex:0 0 auto;display:flex;align-items:center;gap:12px}.sr-h__logo[data-v-39ec7a9e]{display:inline-flex;align-items:center;line-height:0}.sr-h__logo img[data-v-39ec7a9e]{display:block;height:32px;width:auto}.sr-h__brand[data-v-39ec7a9e]{display:flex;flex-direction:column;justify-content:center}.sr-h__title[data-v-39ec7a9e]{margin:0;font-size:26px;font-weight:700;letter-spacing:.04em;color:#fff;line-height:1.1;white-space:nowrap}.sr-h__sub[data-v-39ec7a9e]{margin:4px 0 0;font-size:8px;font-weight:400;letter-spacing:.2em;color:#ffffffbf;text-transform:uppercase;white-space:nowrap}.sr-h__nav[data-v-39ec7a9e]{flex:1 1 auto;display:flex;justify-content:center;align-items:center;min-width:var(--nav-min-w);overflow:hidden}.sr-h__navframe[data-v-39ec7a9e]{display:flex;align-items:center;gap:6px;flex:none}.sr-h__item[data-v-39ec7a9e]{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:7px 15px;border-radius:8px;background:transparent;color:#fff;font-size:14px;font-weight:500;line-height:1.6;letter-spacing:.02em;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background .15s,color .15s}.sr-h__item[data-v-39ec7a9e]:hover{background:#ffffff1a;color:#fff}.sr-h__item.router-link-active[data-v-39ec7a9e],.sr-h__item.is-active[data-v-39ec7a9e]{background:var(--accent-deep);color:#fff}.sr-h__ico[data-v-39ec7a9e]{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.sr-h__ico[data-v-39ec7a9e] svg{display:block;width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.sr-h__ico[data-v-39ec7a9e] .pl{fill:currentColor;stroke:none}.sr-h__right[data-v-39ec7a9e]{flex:0 0 auto;display:flex;align-items:center;gap:14px}.sr-h__weather[data-v-39ec7a9e]{display:flex;align-items:center;gap:8px;color:#fff}.sr-h__wico svg[data-v-39ec7a9e]{width:25px;height:25px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.sr-h__wtext[data-v-39ec7a9e]{display:flex;flex-direction:column;gap:2px;line-height:1.15}.sr-h__temp[data-v-39ec7a9e]{font-size:18px;color:#fff;white-space:nowrap}.sr-h__cond[data-v-39ec7a9e]{font-size:14px;color:#ffffffeb;white-space:nowrap}.sr-h__wind[data-v-39ec7a9e]{display:flex;flex-direction:column;gap:2px;line-height:1.15;color:#fff}.sr-h__wdir[data-v-39ec7a9e]{font-size:14px;color:#fff;white-space:nowrap}.sr-h__wlvl[data-v-39ec7a9e]{font-size:14px;color:#ffffffeb;white-space:nowrap}.sr-h__div[data-v-39ec7a9e]{width:1px;height:36px;background:#ffffff59;flex-shrink:0}.sr-h__clock[data-v-39ec7a9e]{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15;color:#fff}.sr-h__time[data-v-39ec7a9e]{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:#fff;letter-spacing:.03em}.sr-h__date[data-v-39ec7a9e]{margin-top:2px;font-size:9px;color:#ffffffd9;letter-spacing:.03em}.sr-h__bellwrap[data-v-39ec7a9e]{position:relative;display:inline-flex;align-items:center}.sr-h__bell[data-v-39ec7a9e]{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.sr-h__bell svg[data-v-39ec7a9e]{width:30px;height:30px;stroke:#fff;fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.sr-h__bellwrap[data-v-39ec7a9e] .arco-badge-number,.sr-h__bellwrap[data-v-39ec7a9e] .arco-badge-text{min-width:20px;height:14px;padding:0 6px;color:var(--color-white);font-weight:500;font-size:10px;line-height:14px;background-color:rgb(var(--danger-6));box-shadow:0 0 0 2px var(--color-bg-2)}.sr-h__bellpop[data-v-39ec7a9e]{position:absolute;top:calc(100% + 12px);right:-8px;min-width:320px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 40px #0f2e592e;overflow:hidden;z-index:40}.sr-h__bell-empty[data-v-39ec7a9e]{padding:40px 16px;text-align:center;color:var(--mute);font-size:13px}.sr-h__tools[data-v-39ec7a9e]{position:relative;display:flex;align-items:center}.sr-h__menubtn[data-v-39ec7a9e]{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;background:transparent;cursor:pointer;border-radius:6px;transition:background .15s}.sr-h__menubtn[data-v-39ec7a9e]:hover{background:#ffffff1f}.sr-h__menubtn img[data-v-39ec7a9e]{display:block;width:24px;height:24px;object-fit:contain}.sr-h__menubtn svg[data-v-39ec7a9e]{width:30px;height:30px;fill:#fff}.sr-h__menu[data-v-39ec7a9e]{position:absolute;top:calc(100% + 10px);right:0;min-width:176px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #0f2e5926;padding:6px;z-index:40}.sr-h__mhead[data-v-39ec7a9e]{padding:8px 12px 6px;font-size:12px;color:var(--sub)}.sr-h__msep[data-v-39ec7a9e]{height:1px;background:var(--line2);margin:5px 8px}.sr-h__mitem[data-v-39ec7a9e]{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:7px;font-size:13.5px;color:var(--txt2);cursor:pointer;white-space:nowrap}.sr-h__mitem[data-v-39ec7a9e]:hover{background:var(--accent-soft);color:var(--accent)}.sr-h__mitem.danger[data-v-39ec7a9e]{color:var(--danger)}.sr-h__mitem.danger[data-v-39ec7a9e]:hover{background:rgb(var(--red-1));color:var(--danger)}.sr-h__mico[data-v-39ec7a9e]{display:inline-flex}.sr-h__mico[data-v-39ec7a9e] svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.res[data-v-05bca26c]{flex:none;width:256px;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.res-tabs[data-v-05bca26c]{flex:none;display:flex;border-bottom:1px solid var(--line)}.res-tabs a[data-v-05bca26c]{flex:1;text-align:center;padding:13px 0;font-size:13.5px;color:var(--sub);cursor:pointer;position:relative}.res-tabs a.active[data-v-05bca26c]{color:var(--accent);font-weight:600}.res-tabs a.active[data-v-05bca26c]:after{content:"";position:absolute;left:50%;bottom:-1px;transform:translate(-50%);width:26px;height:2px;border-radius:2px;background:var(--accent)}.res-pad[data-v-05bca26c]{padding:12px 12px 4px;display:flex;flex-direction:column;gap:10px}.res-listhead[data-v-05bca26c]{display:flex;align-items:center;padding:6px 12px 8px;font-size:13px;color:var(--sub)}.res-listhead b[data-v-05bca26c]{font-weight:600}.res-acts[data-v-05bca26c]{margin-left:auto;display:flex;gap:12px;color:var(--mute);font-size:15px}.res-acts[data-v-05bca26c] svg{cursor:pointer}.res-acts[data-v-05bca26c] svg:hover{color:var(--accent)}.res-tree[data-v-05bca26c]{flex:1;overflow-y:auto;padding:0 6px 8px}.res-cnt[data-v-05bca26c]{color:var(--mute);font-size:12px}.ptz[data-v-05bca26c]{flex:none;border-top:1px solid var(--line);padding:12px 14px 16px}.ptz-head[data-v-05bca26c]{display:flex;align-items:center;font-size:13px;color:var(--sub);margin-bottom:12px}.ptz-chev[data-v-05bca26c]{margin-left:auto}.joy[data-v-05bca26c]{width:120px;height:120px;margin:0 auto;border-radius:50%;background:var(--panel2);border:1px solid var(--line);position:relative;display:flex;align-items:center;justify-content:center}.joy[data-v-05bca26c]:before{content:"";position:absolute;top:14px;right:14px;bottom:14px;left:14px;border-radius:50%;border:1px dashed var(--line)}.joy .knob[data-v-05bca26c]{width:46px;height:46px;border-radius:50%;background:var(--panel);border:1px solid var(--line);box-shadow:0 2px 8px #1432641f}.joy .ar[data-v-05bca26c]{position:absolute;color:var(--mute);display:flex;cursor:pointer}.joy .ar[data-v-05bca26c]:hover{color:var(--accent)}.joy .up[data-v-05bca26c]{top:7px;left:50%;transform:translate(-50%)}.joy .dn[data-v-05bca26c]{bottom:7px;left:50%;transform:translate(-50%)}.joy .lf[data-v-05bca26c]{left:8px;top:50%;transform:translateY(-50%)}.joy .rt[data-v-05bca26c]{right:8px;top:50%;transform:translateY(-50%)}.speed[data-v-05bca26c]{margin-top:14px;font-size:12px;color:var(--sub);display:flex;align-items:center;gap:10px}.speed b[data-v-05bca26c]{color:var(--accent);font-weight:600}.zoom[data-v-05bca26c]{margin-top:12px;display:flex;gap:10px}.wall[data-v-6ebd5cbf]{width:100%;height:100%;display:grid;gap:0;background:var(--app)}.cell[data-v-6ebd5cbf]{background:var(--video);border:1px solid var(--video-line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--sub);position:relative;overflow:hidden;cursor:pointer}.cell.active[data-v-6ebd5cbf]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.nosrc[data-v-6ebd5cbf]{width:55%;max-width:170px;aspect-ratio:24 / 15;background:center / contain no-repeat url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMTUwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KICA8cGF0aCBkPSJNIDMwIDgwIEwgMzIgODUgTCAzNyA4NyBMIDMyIDg5IEwgMzAgOTQgTCAyOCA4OSBMIDIzIDg3IEwgMjggODUgWiIgZmlsbD0iIzliYzFmZiIgb3BhY2l0eT0iMC42Ii8+CiAgPHBhdGggZD0iTSAxNzAgNTAgTCAxNzEuNSA1NCBMIDE3NS41IDU1LjUgTCAxNzEuNSA1NyBMIDE3MCA2MSBMIDE2OC41IDU3IEwgMTY0LjUgNTUuNSBMIDE2OC41IDU0IFoiIGZpbGw9IiM5YmMxZmYiIG9wYWNpdHk9IjAuNiIvPgoKICA8ZWxsaXBzZSBjeD0iOTAiIGN5PSIxMjUiIHJ4PSI0NSIgcnk9IjUiIGZpbGw9IiNkMmRhZjAiIG9wYWNpdHk9IjAuNCIgLz4KCiAgPGcgaWQ9ImNhbWVyYSI+CiAgICA8cGF0aCBkPSJNIDYwIDEyMCBDIDYwIDExNSwgMTIwIDExNSwgMTIwIDEyMCBaIiBmaWxsPSIjYTliYWQ2IiAvPgogICAgPHJlY3QgeD0iNjUiIHk9IjEyMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjQiIHJ4PSIyIiBmaWxsPSIjOGNhMmM0IiAvPgogICAgPHJlY3QgeD0iODUiIHk9IjEwMCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjE2IiBmaWxsPSIjOGNhMmM0IiAvPgogICAgPGNpcmNsZSBjeD0iOTAiIGN5PSI2NSIgcj0iNDAiIGZpbGw9IiNjYmQ3ZWIiIC8+CiAgICA8Y2lyY2xlIGN4PSI5MCIgY3k9IjY1IiByPSIzMiIgZmlsbD0iIzRhNjE4NSIgLz4KICAgIDxjaXJjbGUgY3g9IjkwIiBjeT0iNjUiIHI9IjIwIiBmaWxsPSIjOWJjMWZmIiAvPgogICAgPGNpcmNsZSBjeD0iOTAiIGN5PSI2NSIgcj0iMTAiIGZpbGw9IiMxYzRjZGUiIC8+CiAgICA8Y2lyY2xlIGN4PSI4NyIgY3k9IjYyIiByPSI0IiBmaWxsPSIjZmZmZmZmIiBvcGFjaXR5PSIwLjgiIC8+CiAgPC9nPgoKICA8ZyBpZD0iY2FibGUtYW5kLXBsdWciPgogICAgPHBhdGggZD0iTSAxMTUgMTIwIFEgMTQwIDEyMCwgMTUwIDk1IFQgMTk1IDk1IiBmaWxsPSJub25lIiBzdHJva2U9IiNhOWJhZDYiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPgogICAgPHJlY3QgeD0iMTk1IiB5PSI5MiIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0iIzhjYTJjNCIgLz4KICAgIDxyZWN0IHg9IjIwMSIgeT0iODciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgcng9IjIiIGZpbGw9IiNjYmQ3ZWIiIC8+CiAgICA8cmVjdCB4PSIyMTciIHk9IjkwIiB3aWR0aD0iNiIgaGVpZ2h0PSIzIiBmaWxsPSIjNjA3OTlmIiAvPgogICAgPHJlY3QgeD0iMjE3IiB5PSIxMDAiIHdpZHRoPSI2IiBoZWlnaHQ9IjMiIGZpbGw9IiM2MDc5OWYiIC8+CiAgPC9nPgoKICA8ZyBpZD0iZXJyb3Itc3RhdHVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOTUsIDEwMCkiPgogICAgPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjEyIiBmaWxsPSIjZmZmZmZmIiBvcGFjaXR5PSIwLjMiLz4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMSIgZmlsbD0iIzFjNGNkZSIgc3Ryb2tlPSIjZmZmZmZmIiBzdHJva2Utd2lkdGg9IjIiIC8+CiAgICA8Y2lyY2xlIGN4PSIwIiBjeT0iMCIgcj0iOCIgZmlsbD0iIzJmN2RmZiIgLz4KICAgIDxwYXRoIGQ9Ik0gLTQgLTQgTCA0IDQgTSA0IC00IEwgLTQgNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmZmZmIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgLz4KICA8L2c+Cjwvc3ZnPgo=)}.cap[data-v-6ebd5cbf]{font-size:13px;color:var(--sub)}.sr-content[data-v-a8cca886]{width:100%;height:calc(100% - var(--header-h));display:flex;min-height:0;overflow:hidden}.sr-content[data-v-a8cca886]>*{flex:1;min-width:0;min-height:0}.sr-content-area[data-v-e7160bcf]{flex:1;min-width:0;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:0 2px 12px #0f2e590f}.sr-content-area.flush[data-v-e7160bcf]{border:none;border-radius:0;box-shadow:none}.sr-content-area__body[data-v-e7160bcf]{flex:1;min-height:0}.sr-monitor[data-v-1419f1f1]{flex:1;display:flex;min-height:0;min-width:0;padding:8px;gap:8px}.sr-monitor.flush[data-v-1419f1f1]{padding:0;gap:0}.sr-side[data-v-b64f19e9]{position:relative;flex:none;display:flex;flex-direction:column;min-height:0;background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:0 2px 12px #0f2e590f}.sr-side.flush[data-v-b64f19e9]{border:none;border-radius:0;box-shadow:none}.sr-side.flush.left[data-v-b64f19e9]{border-right:1px solid var(--line)}.sr-side.flush.right[data-v-b64f19e9]{border-left:1px solid var(--line)}.sr-side__head[data-v-b64f19e9]{flex:none;height:48px;display:flex;align-items:center;padding:0 16px;font-size:14px;font-weight:600;color:var(--txt);border-bottom:1px solid var(--line)}.sr-side__body[data-v-b64f19e9]{flex:1;min-height:0;display:flex;flex-direction:column}.sr-side__foot[data-v-b64f19e9]{flex:none;height:46px;display:flex;align-items:center;border-top:1px solid var(--line)}.sr-side__resizer[data-v-b64f19e9]{position:absolute;top:0;bottom:0;width:6px;cursor:col-resize;z-index:5}.sr-side__resizer.left[data-v-b64f19e9]{right:0}.sr-side__resizer.right[data-v-b64f19e9]{left:0}.sr-side__resizer[data-v-b64f19e9]:after{content:"";position:absolute;top:0;bottom:0;width:2px;background:transparent;transition:background .15s}.sr-side__resizer.left[data-v-b64f19e9]:after{right:0}.sr-side__resizer.right[data-v-b64f19e9]:after{left:0}.sr-side__resizer[data-v-b64f19e9]:hover:after{background:rgb(var(--primary-5))}.sr-toolbar[data-v-21d717eb]{flex:none;display:flex;align-items:center;gap:6px;padding:0 12px;background:var(--panel);border-top:1px solid var(--line)}.sr-toolbar__seg[data-v-21d717eb]{display:flex;align-items:center;gap:6px}.sr-toolbar__left[data-v-21d717eb]{flex:1;justify-content:flex-start;min-width:0}.sr-toolbar__center[data-v-21d717eb]{flex:0 0 auto;justify-content:center}.sr-toolbar__right[data-v-21d717eb]{flex:1;justify-content:flex-end;min-width:0}
|