@icos-desktop/react-components 4.0.0 → 4.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.
@@ -1,39 +1,96 @@
1
1
  import { Tabs } from 'antd';
2
- import React__default, { useEffect } from 'react';
2
+ import React__default, { useMemo, useEffect } from 'react';
3
3
  import Base from './components/Base/index.js';
4
4
  import Relation from './components/Relation/index.js';
5
5
  import styles from './SenseDetail.module.less.js';
6
6
 
7
7
  var SenseDetail = function (props) {
8
- var senseGlobalCode = props.senseGlobalCode, topMenuConfig = props.topMenuConfig, enableTag = props.enableTag, extraTopMenu = props.extraTopMenu, hideBook = props.hideBook, onClickSense = props.onClickSense, onGetSenseDetail = props.onGetSenseDetail, tabsBgColor = props.tabsBgColor, contentCardNameColor = props.contentCardNameColor, contentCardContentColor = props.contentCardContentColor, contentCardBorderColor = props.contentCardBorderColor, contentCardBgColor = props.contentCardBgColor, senseInfoTextColor = props.senseInfoTextColor, senseInfoBorderColor = props.senseInfoBorderColor, senseInfoBorderWidth = props.senseInfoBorderWidth, senseInfoBorderStyle = props.senseInfoBorderStyle, hideFields = props.hideFields, isFieldHidden = props.isFieldHidden, renderValue = props.renderValue, customVideoPlayer = props.customVideoPlayer, extraCollapseItems = props.extraCollapseItems;
9
- var tabItems = (function () {
8
+ var _a, _b;
9
+ var senseGlobalCode = props.senseGlobalCode, topMenuConfig = props.topMenuConfig, topMenuLabels = props.topMenuLabels, enableTag = props.enableTag, extraTopMenu = props.extraTopMenu, hideBook = props.hideBook, hideVideoMonitoring = props.hideVideoMonitoring, onClickSense = props.onClickSense, onGetSenseDetail = props.onGetSenseDetail, tabsBgColor = props.tabsBgColor, contentCardNameColor = props.contentCardNameColor, contentCardContentColor = props.contentCardContentColor, contentCardBorderColor = props.contentCardBorderColor, contentCardBgColor = props.contentCardBgColor, senseInfoTextColor = props.senseInfoTextColor, senseInfoBorderColor = props.senseInfoBorderColor, senseInfoBorderWidth = props.senseInfoBorderWidth, senseInfoBorderStyle = props.senseInfoBorderStyle, hideFields = props.hideFields, isFieldHidden = props.isFieldHidden, renderValue = props.renderValue, customVideoPlayer = props.customVideoPlayer, extraCollapseItems = props.extraCollapseItems;
10
+ var tabItems = useMemo(function () {
10
11
  var list = [];
11
12
  if (!(topMenuConfig === null || topMenuConfig === void 0 ? void 0 : topMenuConfig.length)) {
12
13
  return list;
13
14
  }
14
- if (topMenuConfig.includes('base')) {
15
+ var extraMap = new Map((extraTopMenu !== null && extraTopMenu !== void 0 ? extraTopMenu : []).map(function (e) { return [e.key, e]; }));
16
+ var placedExtraKeys = new Set();
17
+ var baseAdded = false;
18
+ var relationAdded = false;
19
+ var pushBase = function () {
20
+ var _a;
15
21
  list.push({
16
22
  key: 'base',
17
- label: '基础信息',
18
- children: (React__default.createElement(Base, { senseInfoTextColor: senseInfoTextColor, senseInfoBorderColor: senseInfoBorderColor, senseInfoBorderWidth: senseInfoBorderWidth, senseInfoBorderStyle: senseInfoBorderStyle, senseGlobalCode: senseGlobalCode, enableTag: enableTag, onGetSenseDetail: onGetSenseDetail, hideFields: hideFields, isFieldHidden: isFieldHidden, renderValue: renderValue, customVideoPlayer: customVideoPlayer, extraCollapseItems: extraCollapseItems })),
23
+ label: (_a = topMenuLabels === null || topMenuLabels === void 0 ? void 0 : topMenuLabels.base) !== null && _a !== void 0 ? _a : '基础信息',
24
+ children: (React__default.createElement(Base, { senseInfoTextColor: senseInfoTextColor, senseInfoBorderColor: senseInfoBorderColor, senseInfoBorderWidth: senseInfoBorderWidth, senseInfoBorderStyle: senseInfoBorderStyle, senseGlobalCode: senseGlobalCode, enableTag: enableTag, onGetSenseDetail: onGetSenseDetail, hideFields: hideFields, isFieldHidden: isFieldHidden, renderValue: renderValue, customVideoPlayer: customVideoPlayer, extraCollapseItems: extraCollapseItems, hideVideoMonitoring: hideVideoMonitoring })),
19
25
  });
20
- }
21
- if (topMenuConfig.includes('relation')) {
26
+ };
27
+ var pushRelation = function () {
28
+ var _a;
22
29
  list.push({
23
30
  key: 'relation',
24
- label: '关联信息',
31
+ label: (_a = topMenuLabels === null || topMenuLabels === void 0 ? void 0 : topMenuLabels.relation) !== null && _a !== void 0 ? _a : '关联信息',
25
32
  children: (React__default.createElement(Relation, { senseGlobalCode: senseGlobalCode, hideBook: hideBook, onClickSense: onClickSense })),
26
33
  });
34
+ };
35
+ for (var _i = 0, topMenuConfig_1 = topMenuConfig; _i < topMenuConfig_1.length; _i++) {
36
+ var menuKey = topMenuConfig_1[_i];
37
+ if (menuKey === 'base') {
38
+ if (!baseAdded) {
39
+ baseAdded = true;
40
+ pushBase();
41
+ }
42
+ continue;
43
+ }
44
+ if (menuKey === 'relation') {
45
+ if (!relationAdded) {
46
+ relationAdded = true;
47
+ pushRelation();
48
+ }
49
+ continue;
50
+ }
51
+ var item = extraMap.get(menuKey);
52
+ if (item && !placedExtraKeys.has(item.key)) {
53
+ placedExtraKeys.add(item.key);
54
+ list.push({
55
+ key: item.key,
56
+ label: item.label,
57
+ children: React__default.cloneElement(item.children, { senseGlobalCode: senseGlobalCode }),
58
+ });
59
+ }
27
60
  }
28
- if (extraTopMenu) {
29
- list.push.apply(list, extraTopMenu.map(function (item) { return ({
30
- key: item.key,
31
- label: item.label,
32
- children: React__default.cloneElement(item.children, { senseGlobalCode: senseGlobalCode }),
33
- }); }));
61
+ for (var _a = 0, _b = extraTopMenu !== null && extraTopMenu !== void 0 ? extraTopMenu : []; _a < _b.length; _a++) {
62
+ var item = _b[_a];
63
+ if (!placedExtraKeys.has(item.key)) {
64
+ placedExtraKeys.add(item.key);
65
+ list.push({
66
+ key: item.key,
67
+ label: item.label,
68
+ children: React__default.cloneElement(item.children, { senseGlobalCode: senseGlobalCode }),
69
+ });
70
+ }
34
71
  }
35
72
  return list;
36
- })();
73
+ }, [
74
+ topMenuConfig,
75
+ topMenuLabels,
76
+ extraTopMenu,
77
+ senseGlobalCode,
78
+ enableTag,
79
+ hideBook,
80
+ hideVideoMonitoring,
81
+ onClickSense,
82
+ onGetSenseDetail,
83
+ senseInfoTextColor,
84
+ senseInfoBorderColor,
85
+ senseInfoBorderWidth,
86
+ senseInfoBorderStyle,
87
+ hideFields,
88
+ isFieldHidden,
89
+ renderValue,
90
+ customVideoPlayer,
91
+ extraCollapseItems,
92
+ ]);
93
+ var defaultActiveKey = (_b = (_a = tabItems === null || tabItems === void 0 ? void 0 : tabItems[0]) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : 'base';
37
94
  useEffect(function () {
38
95
  document.documentElement.style.setProperty('--tabs-bg-color', tabsBgColor ? tabsBgColor : '#3498db');
39
96
  document.documentElement.style.setProperty('--sense-detail-card-name-color', contentCardNameColor ? contentCardNameColor : 'rgba(255, 255, 255, 0.85)');
@@ -42,7 +99,7 @@ var SenseDetail = function (props) {
42
99
  document.documentElement.style.setProperty('--sense-detail-card-bg-color', contentCardBgColor ? contentCardBgColor : 'rgba(60, 240, 225, 0.08)');
43
100
  }, []);
44
101
  return (React__default.createElement("div", { className: styles.container },
45
- React__default.createElement("div", { className: styles.tabs }, (topMenuConfig === null || topMenuConfig === void 0 ? void 0 : topMenuConfig.length) ? (React__default.createElement(Tabs, { items: tabItems, defaultActiveKey: "base", className: "senseDetailTab" })) : (React__default.createElement(Base, { senseGlobalCode: senseGlobalCode, enableTag: enableTag, senseInfoTextColor: senseInfoTextColor, senseInfoBorderColor: senseInfoBorderColor, senseInfoBorderWidth: senseInfoBorderWidth, senseInfoBorderStyle: senseInfoBorderStyle, onGetSenseDetail: onGetSenseDetail, hideFields: hideFields, isFieldHidden: isFieldHidden, renderValue: renderValue, customVideoPlayer: customVideoPlayer, extraCollapseItems: extraCollapseItems })))));
102
+ React__default.createElement("div", { className: styles.tabs }, (topMenuConfig === null || topMenuConfig === void 0 ? void 0 : topMenuConfig.length) ? (React__default.createElement(Tabs, { items: tabItems, defaultActiveKey: defaultActiveKey, className: "senseDetailTab" })) : (React__default.createElement(Base, { senseGlobalCode: senseGlobalCode, enableTag: enableTag, senseInfoTextColor: senseInfoTextColor, senseInfoBorderColor: senseInfoBorderColor, senseInfoBorderWidth: senseInfoBorderWidth, senseInfoBorderStyle: senseInfoBorderStyle, onGetSenseDetail: onGetSenseDetail, hideFields: hideFields, isFieldHidden: isFieldHidden, renderValue: renderValue, customVideoPlayer: customVideoPlayer, extraCollapseItems: extraCollapseItems, hideVideoMonitoring: hideVideoMonitoring })))));
46
103
  };
47
104
 
48
105
  export { SenseDetail as default };
@@ -8,9 +8,19 @@ export interface SenseDetailProps {
8
8
  */
9
9
  senseGlobalCode: string;
10
10
  /**
11
- * 顶部菜单栏控制,基础信息 - `base`,关联信息 - `relation`
11
+ * 顶部标签顺序:按数组顺序渲染。
12
+ * - 内置:`base`(基础信息)、`relation`(关联信息)
13
+ * - 扩展:`extraTopMenu` 中某项的 `key`,可插在任意位置
14
+ * 未出现在本数组中的 `extraTopMenu` 项仍会按其在 `extraTopMenu` 中的顺序追加在末尾(兼容旧用法)。
12
15
  */
13
- topMenuConfig?: ('base' | 'relation')[];
16
+ topMenuConfig?: string[];
17
+ /**
18
+ * 内置顶部 Tab 文案;未传字段则沿用默认「基础信息」「关联信息」。
19
+ */
20
+ topMenuLabels?: {
21
+ base?: string;
22
+ relation?: string;
23
+ };
14
24
  /**
15
25
  * 启用标签
16
26
  */
@@ -29,6 +39,10 @@ export interface SenseDetailProps {
29
39
  * 隐藏台账
30
40
  */
31
41
  hideBook?: boolean;
42
+ /**
43
+ * 为 `true` 时不展示基础信息中的「实时内容」(视频监控)折叠面板;不影响 `getEntityContentConfig` 请求,仅前端不渲染该面板
44
+ */
45
+ hideVideoMonitoring?: boolean;
32
46
  /**
33
47
  * 点击实体记录
34
48
  */
@@ -17,6 +17,7 @@ interface BaseProps {
17
17
  videoDataConfig: any;
18
18
  }) => React.ReactNode);
19
19
  extraCollapseItems?: CollapseProps['items'];
20
+ hideVideoMonitoring?: boolean;
20
21
  }
21
22
  declare const Base: React.FC<BaseProps>;
22
23
  export default Base;
@@ -12,7 +12,7 @@ var useToken = theme.useToken;
12
12
  var Base = function (props) {
13
13
  var _a;
14
14
  var token = useToken().token;
15
- var senseGlobalCode = props.senseGlobalCode, onGetSenseDetail = props.onGetSenseDetail, enableTag = props.enableTag, senseInfoTextColor = props.senseInfoTextColor, senseInfoBorderColor = props.senseInfoBorderColor, senseInfoBorderWidth = props.senseInfoBorderWidth, senseInfoBorderStyle = props.senseInfoBorderStyle, renderValue = props.renderValue, hideFields = props.hideFields, isFieldHidden = props.isFieldHidden, customVideoPlayer = props.customVideoPlayer, extraCollapseItems = props.extraCollapseItems;
15
+ var senseGlobalCode = props.senseGlobalCode, onGetSenseDetail = props.onGetSenseDetail, enableTag = props.enableTag, senseInfoTextColor = props.senseInfoTextColor, senseInfoBorderColor = props.senseInfoBorderColor, senseInfoBorderWidth = props.senseInfoBorderWidth, senseInfoBorderStyle = props.senseInfoBorderStyle, renderValue = props.renderValue, hideFields = props.hideFields, isFieldHidden = props.isFieldHidden, customVideoPlayer = props.customVideoPlayer, extraCollapseItems = props.extraCollapseItems, hideVideoMonitoring = props.hideVideoMonitoring;
16
16
  var data = useRequest(function () { return __awaiter(void 0, void 0, void 0, function () {
17
17
  return __generator(this, function (_a) {
18
18
  switch (_a.label) {
@@ -41,7 +41,7 @@ var Base = function (props) {
41
41
  });
42
42
  }
43
43
  // 实时内容
44
- if (data && !isEmpty(data.videoDataConfig)) {
44
+ if (!hideVideoMonitoring && data && !isEmpty(data.videoDataConfig)) {
45
45
  arr.push({
46
46
  key: 'VideoPlayer',
47
47
  label: '实时内容',
@@ -53,11 +53,15 @@ var Base = function (props) {
53
53
  }
54
54
  return arr;
55
55
  };
56
+ var collapseItems = getItems();
57
+ var defaultActiveKey = collapseItems
58
+ .map(function (item) { return item === null || item === void 0 ? void 0 : item.key; })
59
+ .filter(function (key) { return key === 'SenseInfo' || key === 'Content' || key === 'VideoPlayer'; });
56
60
  useEffect(function () {
57
61
  document.documentElement.style.setProperty('--collapse-header-color', token.colorTextHeading);
58
62
  }, [token.colorTextHeading]);
59
63
  return (React__default.createElement("div", null,
60
- React__default.createElement(Collapse, { items: getItems(), defaultActiveKey: ['SenseInfo', 'VideoPlayer', 'Content'], bordered: false, style: {
64
+ React__default.createElement(Collapse, { items: collapseItems, defaultActiveKey: defaultActiveKey, bordered: false, style: {
61
65
  backgroundColor: (_a = token.Collapse) === null || _a === void 0 ? void 0 : _a.headerBg,
62
66
  color: "".concat(token.colorTextHeading, " !important"),
63
67
  } })));
@@ -41,6 +41,12 @@ var settings = {
41
41
  group: 'basic',
42
42
  setter: 'boolSetter',
43
43
  },
44
+ {
45
+ name: 'hideVideoMonitoring',
46
+ title: '隐藏视频监控',
47
+ group: 'basic',
48
+ setter: 'boolSetter',
49
+ },
44
50
  {
45
51
  name: 'tabsBgColor',
46
52
  title: 'tabs背景颜色',
package/dist/es/index.js CHANGED
@@ -49,9 +49,9 @@ export { default as CcosVideoPlayer } from './components/VideoPlayer/ccos.js';
49
49
  export { setCconfig as config } from './utils/config.js';
50
50
 
51
51
  try {
52
- window._ICOS_DESKTOP_VERSION_ = JSON.parse('{"version":"4.0.0","branch":"release_v3.0.0","buildDate":"2026-04-07 20:40:19"}');
52
+ window._ICOS_DESKTOP_VERSION_ = JSON.parse('{"version":"4.0.2","branch":"release_v4.0.0","buildDate":"2026-05-08 14:56:25"}');
53
53
  }
54
54
  catch (err) {
55
55
  console.warn(err);
56
- window._ICOS_DESKTOP_VERSION_ = '{"version":"4.0.0","branch":"release_v3.0.0","buildDate":"2026-04-07 20:40:19"}';
56
+ window._ICOS_DESKTOP_VERSION_ = '{"version":"4.0.2","branch":"release_v4.0.0","buildDate":"2026-05-08 14:56:25"}';
57
57
  }
@@ -8441,7 +8441,7 @@ var useToken$4 = theme.useToken;
8441
8441
  var Base = function (props) {
8442
8442
  var _a;
8443
8443
  var token = useToken$4().token;
8444
- var senseGlobalCode = props.senseGlobalCode, onGetSenseDetail = props.onGetSenseDetail, enableTag = props.enableTag, senseInfoTextColor = props.senseInfoTextColor, senseInfoBorderColor = props.senseInfoBorderColor, senseInfoBorderWidth = props.senseInfoBorderWidth, senseInfoBorderStyle = props.senseInfoBorderStyle, renderValue = props.renderValue, hideFields = props.hideFields, isFieldHidden = props.isFieldHidden, customVideoPlayer = props.customVideoPlayer, extraCollapseItems = props.extraCollapseItems;
8444
+ var senseGlobalCode = props.senseGlobalCode, onGetSenseDetail = props.onGetSenseDetail, enableTag = props.enableTag, senseInfoTextColor = props.senseInfoTextColor, senseInfoBorderColor = props.senseInfoBorderColor, senseInfoBorderWidth = props.senseInfoBorderWidth, senseInfoBorderStyle = props.senseInfoBorderStyle, renderValue = props.renderValue, hideFields = props.hideFields, isFieldHidden = props.isFieldHidden, customVideoPlayer = props.customVideoPlayer, extraCollapseItems = props.extraCollapseItems, hideVideoMonitoring = props.hideVideoMonitoring;
8445
8445
  var data = useRequest(function () { return __awaiter(void 0, void 0, void 0, function () {
8446
8446
  return __generator(this, function (_a) {
8447
8447
  switch (_a.label) {
@@ -8470,7 +8470,7 @@ var Base = function (props) {
8470
8470
  });
8471
8471
  }
8472
8472
  // 实时内容
8473
- if (data && !isEmpty(data.videoDataConfig)) {
8473
+ if (!hideVideoMonitoring && data && !isEmpty(data.videoDataConfig)) {
8474
8474
  arr.push({
8475
8475
  key: 'VideoPlayer',
8476
8476
  label: '实时内容',
@@ -8482,11 +8482,15 @@ var Base = function (props) {
8482
8482
  }
8483
8483
  return arr;
8484
8484
  };
8485
+ var collapseItems = getItems();
8486
+ var defaultActiveKey = collapseItems
8487
+ .map(function (item) { return item === null || item === void 0 ? void 0 : item.key; })
8488
+ .filter(function (key) { return key === 'SenseInfo' || key === 'Content' || key === 'VideoPlayer'; });
8485
8489
  useEffect(function () {
8486
8490
  document.documentElement.style.setProperty('--collapse-header-color', token.colorTextHeading);
8487
8491
  }, [token.colorTextHeading]);
8488
8492
  return (React__default.createElement("div", null,
8489
- React__default.createElement(Collapse, { items: getItems(), defaultActiveKey: ['SenseInfo', 'VideoPlayer', 'Content'], bordered: false, style: {
8493
+ React__default.createElement(Collapse, { items: collapseItems, defaultActiveKey: defaultActiveKey, bordered: false, style: {
8490
8494
  backgroundColor: (_a = token.Collapse) === null || _a === void 0 ? void 0 : _a.headerBg,
8491
8495
  color: "".concat(token.colorTextHeading, " !important"),
8492
8496
  } })));
@@ -8556,35 +8560,92 @@ var styles$f = {"container":"SenseDetail-module_container__lF2vB","tabs":"SenseD
8556
8560
  styleInject(css_248z$f);
8557
8561
 
8558
8562
  var SenseDetail = function (props) {
8559
- var senseGlobalCode = props.senseGlobalCode, topMenuConfig = props.topMenuConfig, enableTag = props.enableTag, extraTopMenu = props.extraTopMenu, hideBook = props.hideBook, onClickSense = props.onClickSense, onGetSenseDetail = props.onGetSenseDetail, tabsBgColor = props.tabsBgColor, contentCardNameColor = props.contentCardNameColor, contentCardContentColor = props.contentCardContentColor, contentCardBorderColor = props.contentCardBorderColor, contentCardBgColor = props.contentCardBgColor, senseInfoTextColor = props.senseInfoTextColor, senseInfoBorderColor = props.senseInfoBorderColor, senseInfoBorderWidth = props.senseInfoBorderWidth, senseInfoBorderStyle = props.senseInfoBorderStyle, hideFields = props.hideFields, isFieldHidden = props.isFieldHidden, renderValue = props.renderValue, customVideoPlayer = props.customVideoPlayer, extraCollapseItems = props.extraCollapseItems;
8560
- var tabItems = (function () {
8563
+ var _a, _b;
8564
+ var senseGlobalCode = props.senseGlobalCode, topMenuConfig = props.topMenuConfig, topMenuLabels = props.topMenuLabels, enableTag = props.enableTag, extraTopMenu = props.extraTopMenu, hideBook = props.hideBook, hideVideoMonitoring = props.hideVideoMonitoring, onClickSense = props.onClickSense, onGetSenseDetail = props.onGetSenseDetail, tabsBgColor = props.tabsBgColor, contentCardNameColor = props.contentCardNameColor, contentCardContentColor = props.contentCardContentColor, contentCardBorderColor = props.contentCardBorderColor, contentCardBgColor = props.contentCardBgColor, senseInfoTextColor = props.senseInfoTextColor, senseInfoBorderColor = props.senseInfoBorderColor, senseInfoBorderWidth = props.senseInfoBorderWidth, senseInfoBorderStyle = props.senseInfoBorderStyle, hideFields = props.hideFields, isFieldHidden = props.isFieldHidden, renderValue = props.renderValue, customVideoPlayer = props.customVideoPlayer, extraCollapseItems = props.extraCollapseItems;
8565
+ var tabItems = useMemo$1(function () {
8561
8566
  var list = [];
8562
8567
  if (!(topMenuConfig === null || topMenuConfig === void 0 ? void 0 : topMenuConfig.length)) {
8563
8568
  return list;
8564
8569
  }
8565
- if (topMenuConfig.includes('base')) {
8570
+ var extraMap = new Map((extraTopMenu !== null && extraTopMenu !== void 0 ? extraTopMenu : []).map(function (e) { return [e.key, e]; }));
8571
+ var placedExtraKeys = new Set();
8572
+ var baseAdded = false;
8573
+ var relationAdded = false;
8574
+ var pushBase = function () {
8575
+ var _a;
8566
8576
  list.push({
8567
8577
  key: 'base',
8568
- label: '基础信息',
8569
- children: (React__default.createElement(Base, { senseInfoTextColor: senseInfoTextColor, senseInfoBorderColor: senseInfoBorderColor, senseInfoBorderWidth: senseInfoBorderWidth, senseInfoBorderStyle: senseInfoBorderStyle, senseGlobalCode: senseGlobalCode, enableTag: enableTag, onGetSenseDetail: onGetSenseDetail, hideFields: hideFields, isFieldHidden: isFieldHidden, renderValue: renderValue, customVideoPlayer: customVideoPlayer, extraCollapseItems: extraCollapseItems })),
8578
+ label: (_a = topMenuLabels === null || topMenuLabels === void 0 ? void 0 : topMenuLabels.base) !== null && _a !== void 0 ? _a : '基础信息',
8579
+ children: (React__default.createElement(Base, { senseInfoTextColor: senseInfoTextColor, senseInfoBorderColor: senseInfoBorderColor, senseInfoBorderWidth: senseInfoBorderWidth, senseInfoBorderStyle: senseInfoBorderStyle, senseGlobalCode: senseGlobalCode, enableTag: enableTag, onGetSenseDetail: onGetSenseDetail, hideFields: hideFields, isFieldHidden: isFieldHidden, renderValue: renderValue, customVideoPlayer: customVideoPlayer, extraCollapseItems: extraCollapseItems, hideVideoMonitoring: hideVideoMonitoring })),
8570
8580
  });
8571
- }
8572
- if (topMenuConfig.includes('relation')) {
8581
+ };
8582
+ var pushRelation = function () {
8583
+ var _a;
8573
8584
  list.push({
8574
8585
  key: 'relation',
8575
- label: '关联信息',
8586
+ label: (_a = topMenuLabels === null || topMenuLabels === void 0 ? void 0 : topMenuLabels.relation) !== null && _a !== void 0 ? _a : '关联信息',
8576
8587
  children: (React__default.createElement(Relation, { senseGlobalCode: senseGlobalCode, hideBook: hideBook, onClickSense: onClickSense })),
8577
8588
  });
8589
+ };
8590
+ for (var _i = 0, topMenuConfig_1 = topMenuConfig; _i < topMenuConfig_1.length; _i++) {
8591
+ var menuKey = topMenuConfig_1[_i];
8592
+ if (menuKey === 'base') {
8593
+ if (!baseAdded) {
8594
+ baseAdded = true;
8595
+ pushBase();
8596
+ }
8597
+ continue;
8598
+ }
8599
+ if (menuKey === 'relation') {
8600
+ if (!relationAdded) {
8601
+ relationAdded = true;
8602
+ pushRelation();
8603
+ }
8604
+ continue;
8605
+ }
8606
+ var item = extraMap.get(menuKey);
8607
+ if (item && !placedExtraKeys.has(item.key)) {
8608
+ placedExtraKeys.add(item.key);
8609
+ list.push({
8610
+ key: item.key,
8611
+ label: item.label,
8612
+ children: React__default.cloneElement(item.children, { senseGlobalCode: senseGlobalCode }),
8613
+ });
8614
+ }
8578
8615
  }
8579
- if (extraTopMenu) {
8580
- list.push.apply(list, extraTopMenu.map(function (item) { return ({
8581
- key: item.key,
8582
- label: item.label,
8583
- children: React__default.cloneElement(item.children, { senseGlobalCode: senseGlobalCode }),
8584
- }); }));
8616
+ for (var _a = 0, _b = extraTopMenu !== null && extraTopMenu !== void 0 ? extraTopMenu : []; _a < _b.length; _a++) {
8617
+ var item = _b[_a];
8618
+ if (!placedExtraKeys.has(item.key)) {
8619
+ placedExtraKeys.add(item.key);
8620
+ list.push({
8621
+ key: item.key,
8622
+ label: item.label,
8623
+ children: React__default.cloneElement(item.children, { senseGlobalCode: senseGlobalCode }),
8624
+ });
8625
+ }
8585
8626
  }
8586
8627
  return list;
8587
- })();
8628
+ }, [
8629
+ topMenuConfig,
8630
+ topMenuLabels,
8631
+ extraTopMenu,
8632
+ senseGlobalCode,
8633
+ enableTag,
8634
+ hideBook,
8635
+ hideVideoMonitoring,
8636
+ onClickSense,
8637
+ onGetSenseDetail,
8638
+ senseInfoTextColor,
8639
+ senseInfoBorderColor,
8640
+ senseInfoBorderWidth,
8641
+ senseInfoBorderStyle,
8642
+ hideFields,
8643
+ isFieldHidden,
8644
+ renderValue,
8645
+ customVideoPlayer,
8646
+ extraCollapseItems,
8647
+ ]);
8648
+ var defaultActiveKey = (_b = (_a = tabItems === null || tabItems === void 0 ? void 0 : tabItems[0]) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : 'base';
8588
8649
  useEffect(function () {
8589
8650
  document.documentElement.style.setProperty('--tabs-bg-color', tabsBgColor ? tabsBgColor : '#3498db');
8590
8651
  document.documentElement.style.setProperty('--sense-detail-card-name-color', contentCardNameColor ? contentCardNameColor : 'rgba(255, 255, 255, 0.85)');
@@ -8593,7 +8654,7 @@ var SenseDetail = function (props) {
8593
8654
  document.documentElement.style.setProperty('--sense-detail-card-bg-color', contentCardBgColor ? contentCardBgColor : 'rgba(60, 240, 225, 0.08)');
8594
8655
  }, []);
8595
8656
  return (React__default.createElement("div", { className: styles$f.container },
8596
- React__default.createElement("div", { className: styles$f.tabs }, (topMenuConfig === null || topMenuConfig === void 0 ? void 0 : topMenuConfig.length) ? (React__default.createElement(Tabs$1, { items: tabItems, defaultActiveKey: "base", className: "senseDetailTab" })) : (React__default.createElement(Base, { senseGlobalCode: senseGlobalCode, enableTag: enableTag, senseInfoTextColor: senseInfoTextColor, senseInfoBorderColor: senseInfoBorderColor, senseInfoBorderWidth: senseInfoBorderWidth, senseInfoBorderStyle: senseInfoBorderStyle, onGetSenseDetail: onGetSenseDetail, hideFields: hideFields, isFieldHidden: isFieldHidden, renderValue: renderValue, customVideoPlayer: customVideoPlayer, extraCollapseItems: extraCollapseItems })))));
8657
+ React__default.createElement("div", { className: styles$f.tabs }, (topMenuConfig === null || topMenuConfig === void 0 ? void 0 : topMenuConfig.length) ? (React__default.createElement(Tabs$1, { items: tabItems, defaultActiveKey: defaultActiveKey, className: "senseDetailTab" })) : (React__default.createElement(Base, { senseGlobalCode: senseGlobalCode, enableTag: enableTag, senseInfoTextColor: senseInfoTextColor, senseInfoBorderColor: senseInfoBorderColor, senseInfoBorderWidth: senseInfoBorderWidth, senseInfoBorderStyle: senseInfoBorderStyle, onGetSenseDetail: onGetSenseDetail, hideFields: hideFields, isFieldHidden: isFieldHidden, renderValue: renderValue, customVideoPlayer: customVideoPlayer, extraCollapseItems: extraCollapseItems, hideVideoMonitoring: hideVideoMonitoring })))));
8597
8658
  };
8598
8659
 
8599
8660
  var settings$i = {
@@ -8637,6 +8698,12 @@ var settings$i = {
8637
8698
  group: 'basic',
8638
8699
  setter: 'boolSetter',
8639
8700
  },
8701
+ {
8702
+ name: 'hideVideoMonitoring',
8703
+ title: '隐藏视频监控',
8704
+ group: 'basic',
8705
+ setter: 'boolSetter',
8706
+ },
8640
8707
  {
8641
8708
  name: 'tabsBgColor',
8642
8709
  title: 'tabs背景颜色',
@@ -13408,11 +13475,11 @@ var CcosVideoPlayer = function (props) {
13408
13475
  CcosVideoPlayer.settings = settings$1;
13409
13476
 
13410
13477
  try {
13411
- window._ICOS_DESKTOP_VERSION_ = JSON.parse('{"version":"4.0.0","branch":"release_v3.0.0","buildDate":"2026-04-07 20:40:19"}');
13478
+ window._ICOS_DESKTOP_VERSION_ = JSON.parse('{"version":"4.0.2","branch":"release_v4.0.0","buildDate":"2026-05-08 14:56:25"}');
13412
13479
  }
13413
13480
  catch (err) {
13414
13481
  console.warn(err);
13415
- window._ICOS_DESKTOP_VERSION_ = '{"version":"4.0.0","branch":"release_v3.0.0","buildDate":"2026-04-07 20:40:19"}';
13482
+ window._ICOS_DESKTOP_VERSION_ = '{"version":"4.0.2","branch":"release_v4.0.0","buildDate":"2026-05-08 14:56:25"}';
13416
13483
  }
13417
13484
 
13418
13485
  export { AntdPxToRemProvider, BookDetail, BookGroupImport, BookGroupTable, BookImport, BookInfo, BookSelect, BookTable, CcosBookDetail, CcosImportTable, CcosSenseContentTable, CcosSenseCreate, CcosSenseDetail, CcosSenseEdit, CcosSenseFullTable, CcosSenseManager, CcosSenseSearch, CcosSenseTree, CcosSenseView, CcosTagConfig, CcosVideoControl, CcosVideoPlayer, EntityClassFilter, EntityClassTreeSelect, ImportTable, Modal, OrgTreeSelect, PersonSelector, ProTable$1 as ProTable, RegionCascader, RegionTreeSelect, RelationGraph, SenseContentTable, SenseCreate, SenseDetail, SenseEdit, SenseForm, SenseFullTable, SenseInfo, SenseManager, SenseSearch, SenseTable, SenseTree, SenseView, TagConfig, TagTreeSelect, VideoControl, VideoPlayer, setCconfig as config };