tntd 1.3.66 → 1.4.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.
Files changed (168) hide show
  1. package/babel.config.js +1 -1
  2. package/dist/0645cf743e4e44ca9da321d689897f07.png +0 -0
  3. package/dist/09db77de0c24fa0f45f8a5cf299a3d11.png +0 -0
  4. package/dist/1.tntd.js +12 -0
  5. package/dist/1d0b52448de217857b270af807e9360d.png +0 -0
  6. package/dist/25d78d77c9c2f0d403e5d899ceb5b1ef.png +0 -0
  7. package/dist/27fa44ff0c98e1594d79b73045aabedf.png +0 -0
  8. package/dist/2c95075adb68d6131b59cae9fa554ec2.png +0 -0
  9. package/dist/377c871d922a25c773a9e7c2f42ed7c0.png +0 -0
  10. package/dist/3d901589b40bd56ff1fde2bbb700bfe1.png +0 -0
  11. package/dist/4abe481e130d7be0574e45573de8beb7.png +0 -0
  12. package/dist/95ee2260a509cd630d89c5367ed1973b.png +0 -0
  13. package/dist/b9dd5ff3622296fbee51ed68f4bca1bf.png +0 -0
  14. package/dist/bd2921989f9296089ba58efb7a76f3ef.png +0 -0
  15. package/dist/stats.json +45855 -0
  16. package/dist/tntd.css +1 -0
  17. package/dist/tntd.js +15 -0
  18. package/es/ArrayInput/README.md +129 -0
  19. package/es/ArrayInput/icon.js +24 -0
  20. package/es/ArrayInput/index.js +282 -0
  21. package/es/ArrayInput/index.less +20 -0
  22. package/es/AuthContext.js +4 -0
  23. package/es/Columns/README.md +149 -0
  24. package/es/Columns/index.js +86 -0
  25. package/es/Columns/index.less +75 -0
  26. package/es/DevelopmentLogin/LoginModal.js +126 -0
  27. package/es/DevelopmentLogin/README.md +49 -0
  28. package/es/DevelopmentLogin/index.js +40 -0
  29. package/es/Ellipsis/README.md +104 -0
  30. package/es/Ellipsis/Svg/CopySVG.js +63 -0
  31. package/es/Ellipsis/Svg/TickSVG.js +41 -0
  32. package/es/Ellipsis/index.js +143 -0
  33. package/es/Ellipsis/index.less +56 -0
  34. package/es/Handle/README.md +104 -0
  35. package/es/Handle/index.js +92 -0
  36. package/es/Handle/index.less +9 -0
  37. package/es/Icon/README.md +119 -0
  38. package/es/Icon/fonts/demo.css +539 -0
  39. package/es/Icon/fonts/demo_index.html +3345 -0
  40. package/es/Icon/fonts/iconfont.css +569 -0
  41. package/es/Icon/fonts/iconfont.eot +0 -0
  42. package/es/Icon/fonts/iconfont.js +41 -0
  43. package/es/Icon/fonts/iconfont.json +975 -0
  44. package/es/Icon/fonts/iconfont.svg +440 -0
  45. package/es/Icon/fonts/iconfont.ttf +0 -0
  46. package/es/Icon/fonts/iconfont.woff +0 -0
  47. package/es/Icon/fonts/iconfont.woff2 +0 -0
  48. package/es/Icon/iconList.js +1 -0
  49. package/es/Icon/index.js +26 -0
  50. package/es/Icon/index.less +9 -0
  51. package/es/Img/Contain.js +69 -0
  52. package/es/Img/Cover.js +126 -0
  53. package/es/Img/README.md +131 -0
  54. package/es/Img/index.js +76 -0
  55. package/es/Layout/ActionsContext.js +3 -0
  56. package/es/Layout/AppList.js +233 -0
  57. package/es/Layout/Application.js +115 -0
  58. package/es/Layout/Avatar.js +116 -0
  59. package/es/Layout/CompatibleLanguage.js +179 -0
  60. package/es/Layout/EnterpriseLayout/Avatar.js +144 -0
  61. package/es/Layout/EnterpriseLayout/Language.js +81 -0
  62. package/es/Layout/EnterpriseLayout/Theme.js +77 -0
  63. package/es/Layout/EnterpriseLayout/index.js +31 -0
  64. package/es/Layout/GlobalNavigation/NavigationPopup.js +396 -0
  65. package/es/Layout/GlobalNavigation/index.js +137 -0
  66. package/es/Layout/Header.js +95 -0
  67. package/es/Layout/HeaderActions.js +107 -0
  68. package/es/Layout/HeaderNavs.js +93 -0
  69. package/es/Layout/HeaderTabs.js +264 -0
  70. package/es/Layout/Iconfont.js +4 -0
  71. package/es/Layout/Language.js +81 -0
  72. package/es/Layout/Layout.js +234 -0
  73. package/es/Layout/Logo.js +86 -0
  74. package/es/Layout/OrgAppList.js +310 -0
  75. package/es/Layout/README.md +783 -0
  76. package/es/Layout/SideMenu.js +340 -0
  77. package/es/Layout/Theme.js +107 -0
  78. package/es/Layout/checkAuth.js +29 -0
  79. package/es/Layout/createActions.js +39 -0
  80. package/es/Layout/images/avatar/empty.png +0 -0
  81. package/es/Layout/images/avatar/female1.png +0 -0
  82. package/es/Layout/images/avatar/female2.png +0 -0
  83. package/es/Layout/images/avatar/female3.png +0 -0
  84. package/es/Layout/images/avatar/female4.png +0 -0
  85. package/es/Layout/images/avatar/female5.png +0 -0
  86. package/es/Layout/images/avatar/female6.png +0 -0
  87. package/es/Layout/images/avatar/male1.png +0 -0
  88. package/es/Layout/images/avatar/male2.png +0 -0
  89. package/es/Layout/images/avatar/male3.png +0 -0
  90. package/es/Layout/images/avatar/male4.png +0 -0
  91. package/es/Layout/images/avatar/male5.png +0 -0
  92. package/es/Layout/images/avatar/male6.png +0 -0
  93. package/es/Layout/images/index.js +35 -0
  94. package/es/Layout/images/logo/baldur.svg +14 -0
  95. package/es/Layout/images/logo/bi.svg +14 -0
  96. package/es/Layout/images/logo/bridge.svg +15 -0
  97. package/es/Layout/images/logo/convert.svg +18 -0
  98. package/es/Layout/images/logo/dataocean.svg +31 -0
  99. package/es/Layout/images/logo/default.svg +19 -0
  100. package/es/Layout/images/logo/dispatch.svg +14 -0
  101. package/es/Layout/images/logo/graph.svg +26 -0
  102. package/es/Layout/images/logo/handle.svg +10 -0
  103. package/es/Layout/images/logo/indicator.svg +41 -0
  104. package/es/Layout/images/logo/kafka.svg +12 -0
  105. package/es/Layout/images/logo/logo-custom.svg +13 -0
  106. package/es/Layout/images/logo/model.svg +17 -0
  107. package/es/Layout/images/logo/mysql.svg +15 -0
  108. package/es/Layout/images/logo/orion.svg +24 -0
  109. package/es/Layout/images/logo/salaxy.svg +11 -0
  110. package/es/Layout/images/logo/storage.svg +16 -0
  111. package/es/Layout/images/logo/tnt_cli_identify.svg +19 -0
  112. package/es/Layout/images/logo/turing.svg +35 -0
  113. package/es/Layout/images/theme/theme1.svg +35 -0
  114. package/es/Layout/images/theme/theme2.svg +33 -0
  115. package/es/Layout/index.js +122 -0
  116. package/es/Layout/paaslayout/CompactSideMenu.js +167 -0
  117. package/es/Layout/paaslayout/Header.js +77 -0
  118. package/es/Layout/paaslayout/Logo.js +22 -0
  119. package/es/Layout/paaslayout/SideMenu.js +168 -0
  120. package/es/Layout/paaslayout/index.js +235 -0
  121. package/es/Layout/storage.js +47 -0
  122. package/es/Layout/utils.js +136 -0
  123. package/es/LoadingButton/README.md +75 -0
  124. package/es/LoadingButton/index.js +45 -0
  125. package/es/Modal/README.md +59 -0
  126. package/es/Modal/index.js +96 -0
  127. package/es/Modal/index.less +86 -0
  128. package/es/Page/Box.js +74 -0
  129. package/es/Page/README.md +180 -0
  130. package/es/Page/index.js +165 -0
  131. package/es/Page/index.less +144 -0
  132. package/es/Page/utils.js +23 -0
  133. package/es/QueryForm/Field/Checkbox.js +21 -0
  134. package/es/QueryForm/Field/Select.js +80 -0
  135. package/es/QueryForm/Field/SelectInput.js +92 -0
  136. package/es/QueryForm/Field/fieldsMap.js +32 -0
  137. package/es/QueryForm/Field/index.js +157 -0
  138. package/es/QueryForm/README.md +512 -0
  139. package/es/QueryForm/createActions.js +53 -0
  140. package/es/QueryForm/index.js +384 -0
  141. package/es/QueryForm/index.less +133 -0
  142. package/es/QueryForm/useForm.js +7 -0
  143. package/es/QueryListScene/List.js +378 -0
  144. package/es/QueryListScene/QueryForm.js +166 -0
  145. package/es/QueryListScene/QueryListScene.js +76 -0
  146. package/es/QueryListScene/README.md +790 -0
  147. package/es/QueryListScene/Title.js +12 -0
  148. package/es/QueryListScene/Toolbar.js +20 -0
  149. package/es/QueryListScene/createActions.js +72 -0
  150. package/es/QueryListScene/index.js +19 -0
  151. package/es/QueryListScene/index.less +97 -0
  152. package/es/QueryListScene/useActions.js +7 -0
  153. package/es/Select/DropDownWrap.js +116 -0
  154. package/es/Select/README.md +68 -0
  155. package/es/Select/index.js +622 -0
  156. package/es/Table/README.md +109 -0
  157. package/es/Table/ResizableTable/index.js +110 -0
  158. package/es/Table/ResizableTable/index.less +36 -0
  159. package/es/Table/index.js +35 -0
  160. package/es/Title/README.md +106 -0
  161. package/es/Title/index.js +40 -0
  162. package/es/Title/index.less +170 -0
  163. package/es/index.js +19 -0
  164. package/es/locale.js +60 -0
  165. package/package.json +1 -1
  166. package/doc-scripts.config.js +0 -37
  167. package/doc-scripts.renderer.js +0 -11
  168. package/docs/README.md +0 -1643
@@ -0,0 +1,340 @@
1
+ import "antd/lib/menu/style";
2
+ import _Menu from "antd/lib/menu";
3
+
4
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
5
+
6
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
7
+
8
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
9
+
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
11
+
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
+
14
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+
16
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
17
+
18
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
19
+
20
+ function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
21
+
22
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
23
+
24
+ function _templateObject2() {
25
+ var data = _taggedTemplateLiteral(["\n font-size: 14px;\n .large-size & {\n font-size: 15px;\n }\n color: rgba(255,255,255,.85);\n .compatible & {\n color: #A1D7FF;\n }\n .tnt-themeS1 & {\n color: ", ";\n }\n .tnt-icon {\n margin-right: 12px;\n font-size: 16px;\n position: relative;\n top: 1px;\n\n .large-size & {\n font-size: 18px;\n top: auto;\n }\n .tnt-themeS1 & {\n /* color: #7e8081; */\n color: ", ";\n }\n }\n"]);
26
+
27
+ _templateObject2 = function _templateObject2() {
28
+ return data;
29
+ };
30
+
31
+ return data;
32
+ }
33
+
34
+ function _templateObject() {
35
+ var data = _taggedTemplateLiteral(["\n background: none !important;\n &.ant-menu.ant-menu-root {\n position: relative;\n transition: none !important;\n padding-top: 10px;\n border-right: none;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n height: calc(100vh - ", ");\n overflow-y: auto;\n overflow-x: hidden;\n .collapseIconPlacementBottom & {\n padding-bottom: 36px;\n }\n .tnt-themeS1 & {\n overflow-x: unset;\n box-shadow: 10px 0 10px -5px rgba(0,0,0,0.10);\n z-index: 2;\n }\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n &::-moz-scrollbar {\n display: none;\n }\n\n /** \u4E00\u7EA7\u7ED3\u70B9\u662F\u83DC\u5355\u6837\u5F0F\u5F00\u59CB */\n & > .ant-menu-item {\n & > .tnt-icon:first-child {\n font-size: 16px\n }\n }\n\n .ant-layout-sider-collapsed & {\n & > .ant-menu-item {\n & > .tnt-icon:first-child {\n padding-left: 8px;\n }\n a {\n visibility: hidden;\n }\n }\n }\n /** \u4E00\u7EA7\u7ED3\u70B9\u662F\u83DC\u5355\u6837\u5F0F\u7ED3\u675F */\n\n .ant-menu-item:active,\n .ant-menu-submenu-title:active {\n background: none;\n }\n\n .ant-menu-submenu .ant-menu-sub {\n background: #212635;\n border-radius: 0 0 2px 2px;\n .compatible & {\n background: #07408d !important;\n }\n .tnt-themeS1 & {\n background: #fff !important;\n }\n\n // \u84DD\u8272\u7CFB\u5217 \u83DC\u5355\u5C55\u5F00\u533A\u57DF\u989C\u8272\n .tnt-themeS3 & {\n background: #07408D !important;\n }\n }\n .ant-menu-submenu.ant-menu-submenu-active,\n .ant-menu-submenu.ant-menu-submenu-selected {\n background: rgba(47,129,247,.25) !important;\n .tnt-themeS1 & {\n background: ", " !important;\n }\n\n // \u84DD\u8272\u7CFB \u4E00\u7EA7\u83DC\u5355\u7684\u9009\u4E2D\u6548\u679C\n .tnt-themeS3 & {\n background: #204085 !important;\n }\n }\n & > .ant-menu-submenu .ant-menu-submenu.ant-menu-submenu-active,\n & > .ant-menu-submenu .ant-menu-submenu.ant-menu-submenu-selected {\n background: none !important;\n .tnt-themeS1 & {\n background: ", " !important;\n }\n // \u84DD\u8272\u7CFB \u5B50\u7EA7\u83DC\u5355\u7EA7\u7684\u9009\u4E2D\u6548\u679C\n .tnt-themeS3 & {\n background: #204085 !important;\n }\n }\n .ant-menu-item {\n margin: 0;\n font-size: 14px;\n padding-left: 54px !important;\n height: ", ";\n line-height: ", ";\n }\n\n & > .ant-menu-item {\n padding-left: 24px !important;\n width: 100%;\n\n & > .tnt-icon {\n margin-right: 12px;\n }\n & > a {\n display: inline-block;\n }\n }\n\n .ant-menu-submenu-title {\n position: relative;\n color: ", ";\n .tnt-themeS1 & {\n color: ", ";\n }\n height: ", ";\n line-height: ", ";\n .tnt-icon {\n .tnt-themeS1 & {\n color: ", ";\n }\n }\n & > .tnt-icon {\n position: absolute;\n right: 20px;\n top: 1px;\n font-size: 10px;\n }\n\n // \u84DD\u8272\u7CFB\u4E3B\u9898\n .tnt-themeS3 & {\n color: #FFF;\n }\n .tnt-icon {\n .tnt-themeS3 & {\n color: #FFF;\n }\n }\n }\n\n & > .ant-menu-submenu .ant-menu-submenu .ant-menu-submenu-title {\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 54px !important;\n }\n }\n\n &.ant-menu .menu-arrow-right {\n color: ", ";\n }\n\n .ant-menu-item, .ant-menu-item > a {\n color: ", ";\n .tnt-themeS1 & {\n color: ", ";\n }\n &:hover {\n color: #fff;\n .tnt-themeS1 & {\n color: ", ";\n }\n }\n\n // \u84DD\u8272\u7CFB\u5217\n .tnt-themeS3 & {\n color: #fff;\n }\n &:hover {\n .tnt-themeS3 & {\n color: #fff;\n }\n }\n }\n & > .ant-menu-item.ant-menu-item-selected,\n &.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {\n color: rgba(255,255,255,.85);\n background-color: ", ";\n .compatible & {\n background-color: #013479;\n }\n & > a {\n .tnt-themeS1 & {\n color: #fff;\n }\n }\n .tnt-themeS1 & {\n color: #fff;\n background-color: ", ";\n }\n\n // \u84DD\u8272\u7CFB \u5B50\u9879\u9009\u4E2D\u989C\u8272\n .tnt-themeS3 & {\n color: #fff;\n background: #013479;\n &::after{\n content:\"\";\n display:none;\n }\n }\n }\n .ant-menu-submenu.ant-menu-submenu-selected {\n .tnt-themeS2 & {\n background: #141825;\n }\n .tnt-themeS2.compatible & {\n background: rgba(47,129,247,.25) !important;\n }\n }\n"]);
36
+
37
+ _templateObject = function _templateObject() {
38
+ return data;
39
+ };
40
+
41
+ return data;
42
+ }
43
+
44
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
45
+
46
+ import { useState, useEffect, useContext } from 'react';
47
+ import styled, { withTheme } from 'styled-components';
48
+ import { get } from 'lodash';
49
+ import ActionsContext from './ActionsContext';
50
+ import { getSelectedMenuInfo, isGroupMenu, isNewTabMenu, openInNewTab, traverseTree } from './utils';
51
+ import { setSideMenuStore } from './storage';
52
+ import Iconfont from './Iconfont';
53
+ var color = 'rgba(255,255,255,.85)';
54
+ var compatibleColor = '#a1d7ff';
55
+ var SubMenu = _Menu.SubMenu,
56
+ MenuItem = _Menu.Item;
57
+ var TNTMenu = styled(_Menu)(_templateObject(), function (props) {
58
+ return "".concat(props.theme.headerHeight, "px");
59
+ }, function (props) {
60
+ return props.theme.dividerColor;
61
+ }, function (props) {
62
+ return props.theme.dividerColor;
63
+ }, function (_ref) {
64
+ var size = _ref.size;
65
+ return size === 'large' ? '40px' : '36px';
66
+ }, function (_ref2) {
67
+ var size = _ref2.size;
68
+ return size === 'large' ? '40px' : '36px';
69
+ }, function (props) {
70
+ return props.theme.compatible ? compatibleColor : color;
71
+ }, function (props) {
72
+ return props.theme.primaryTextColor;
73
+ }, function (_ref3) {
74
+ var size = _ref3.size;
75
+ return size === 'large' ? '40px' : '36px';
76
+ }, function (_ref4) {
77
+ var size = _ref4.size;
78
+ return size === 'large' ? '40px' : '36px';
79
+ }, function (props) {
80
+ return props.theme.lightIconColor;
81
+ }, function (props) {
82
+ return props.theme.compatible ? compatibleColor : color;
83
+ }, function (props) {
84
+ return props.theme.compatible ? compatibleColor : color;
85
+ }, function (props) {
86
+ return props.theme.primaryTextColor;
87
+ }, function (props) {
88
+ return props.theme.primaryColor;
89
+ }, function (props) {
90
+ return props.theme.primaryColor;
91
+ }, function (props) {
92
+ return props.theme.primaryColor;
93
+ });
94
+ var MenuTitle = styled.span(_templateObject2(), function (props) {
95
+ return props.theme.primaryTextColor;
96
+ }, function (props) {
97
+ return "".concat(props.theme.iconColor);
98
+ });
99
+ export default withTheme(function (props) {
100
+ var actions = useContext(ActionsContext);
101
+ var language = props.language,
102
+ _props$menus = props.menus,
103
+ menus = _props$menus === void 0 ? [] : _props$menus,
104
+ formatMenuPath = props.formatMenuPath,
105
+ changeRouter = props.changeRouter,
106
+ selectedKey = props.selectedKey,
107
+ openKeys = props.openKeys,
108
+ onSelect = props.onSelect,
109
+ onBeforeChange = props.onBeforeChange,
110
+ onChange = props.onChange,
111
+ onOpenChange = props.onOpenChange,
112
+ collapsed = props.collapsed;
113
+
114
+ var _getSelectedMenuInfo = getSelectedMenuInfo(selectedKey, menus),
115
+ subMenu = _getSelectedMenuInfo.subMenu,
116
+ parentMenus = _getSelectedMenuInfo.parentMenus;
117
+
118
+ var _useState = useState([get(subMenu, 'code')]),
119
+ _useState2 = _slicedToArray(_useState, 2),
120
+ selectedKeys = _useState2[0],
121
+ setSelectedKeys = _useState2[1];
122
+
123
+ var onSelectMenu = function onSelectMenu(param) {
124
+ var _ref5 = getSelectedMenuInfo(param.key, menus) || {},
125
+ subMenu = _ref5.subMenu,
126
+ parentMenus = _ref5.parentMenus;
127
+
128
+ var params = _objectSpread({}, param, {
129
+ data: subMenu
130
+ });
131
+
132
+ var defaultBeforeChange = function defaultBeforeChange(_ref6) {
133
+ var data = _ref6.data;
134
+ return !isNewTabMenu(data);
135
+ };
136
+
137
+ var defaultSelect = function defaultSelect(_ref7) {
138
+ var _window$location$path;
139
+
140
+ var data = _ref7.data;
141
+
142
+ var _ref8 = data || {},
143
+ path = _ref8.path;
144
+
145
+ var formatPath = formatMenuPath || function (path) {
146
+ return path;
147
+ };
148
+
149
+ if (isNewTabMenu(data)) {
150
+ openInNewTab(formatPath(data == null ? void 0 : data.path, data));
151
+ return;
152
+ }
153
+
154
+ var routerPrefix = (_window$location$path = window.location.pathname.match(/(^\/[^\/]+)/i)) == null ? void 0 : _window$location$path[1];
155
+
156
+ if (path == null ? void 0 : path.startsWith(routerPrefix)) {
157
+ var forwardPath = formatPath(path, data);
158
+ changeRouter ? changeRouter(forwardPath, data) : window.history.pushState(data, data == null ? void 0 : data.name, forwardPath);
159
+ } else {
160
+ window.location.href = formatPath(path, data);
161
+ }
162
+ };
163
+
164
+ var finalSelect = onSelect || defaultSelect;
165
+
166
+ if (param.key !== get(selectedKeys, '0')) {
167
+ var finalBeforeChange = onBeforeChange || defaultBeforeChange;
168
+
169
+ if (finalBeforeChange(params, get(selectedKeys, '0'))) {
170
+ // SideMenu菜单收起状态
171
+ if (collapsed) {
172
+ var newOpenKeys = parentMenus == null ? void 0 : parentMenus.map(function (_ref9) {
173
+ var code = _ref9.code;
174
+ return code;
175
+ }).reverse();
176
+ onOpenChange(newOpenKeys);
177
+ setSideMenuStore({
178
+ openKeys: newOpenKeys,
179
+ beforeOpenKeys: newOpenKeys
180
+ });
181
+ }
182
+
183
+ setSelectedKeys([param.key]);
184
+ onChange && onChange(params);
185
+ }
186
+ }
187
+
188
+ actions.setSelectedMenuKey(param.key);
189
+ setSelectedKeys([param.key]);
190
+ finalSelect(params);
191
+ };
192
+
193
+ var getExpandIcon = function getExpandIcon(code) {
194
+ if (props.theme.compatible) {
195
+ return openKeys.includes(code) ? 'minus' : 'plus';
196
+ }
197
+
198
+ return openKeys.includes(code) ? 'up' : 'down';
199
+ };
200
+
201
+ var onOpenKeysChange = function onOpenKeysChange(keys) {
202
+ var openKey = keys.find(function (key) {
203
+ return !openKeys.includes(key);
204
+ }); // const closeKey = openKeys.find(key => !keys.includes(key));
205
+
206
+ var newOpenKeys = keys;
207
+
208
+ var findParentGroupKey = function findParentGroupKey(key, openKeys) {
209
+ var parentGroupKey;
210
+ traverseTree(menus, function (node, pnode) {
211
+ if (node.code === key) {
212
+ if (pnode && openKeys.includes(pnode == null ? void 0 : pnode.code)) {
213
+ parentGroupKey = pnode == null ? void 0 : pnode.code;
214
+ }
215
+
216
+ return false;
217
+ }
218
+ });
219
+ return parentGroupKey;
220
+ }; // 展开openKey
221
+
222
+
223
+ if (openKey) {
224
+ // 父子关系展开
225
+ var parentGroupKey = findParentGroupKey(openKey, openKeys);
226
+
227
+ if (parentGroupKey) {
228
+ newOpenKeys = keys.length > 2 ? [parentGroupKey, openKey] : keys;
229
+ } else {
230
+ newOpenKeys = [openKey];
231
+ }
232
+ } else {
233
+ // 收起closeKey
234
+ newOpenKeys = keys;
235
+ }
236
+
237
+ onOpenChange(newOpenKeys);
238
+ };
239
+
240
+ useEffect(function () {
241
+ setSelectedKeys([selectedKey]);
242
+
243
+ if (selectedKey && !collapsed && (parentMenus == null ? void 0 : parentMenus.length)) {
244
+ onOpenChange(parentMenus == null ? void 0 : parentMenus.map(function (_ref10) {
245
+ var code = _ref10.code;
246
+ return code;
247
+ }).reverse());
248
+ }
249
+
250
+ actions.setSelectedMenuKey(selectedKey);
251
+ }, [selectedKey]);
252
+ actions.off('menuSelect', onSelectMenu);
253
+ actions.on('menuSelect', onSelectMenu);
254
+ return React.createElement(TNTMenu, {
255
+ mode: "inline",
256
+ defaultSelectedKeys: [],
257
+ openKeys: openKeys,
258
+ selectedKeys: selectedKeys,
259
+ onOpenChange: onOpenKeysChange
260
+ }, menus == null ? void 0 : menus.map(function (menu) {
261
+ var MenuLink = function MenuLink(_ref11) {
262
+ var menuName = _ref11.menuName,
263
+ enName = _ref11.enName,
264
+ path = _ref11.path;
265
+ return React.createElement("a", {
266
+ href: path,
267
+ onClick: function onClick(evt) {
268
+ return evt.preventDefault();
269
+ }
270
+ }, {
271
+ cn: menuName,
272
+ en: enName
273
+ }[language]);
274
+ };
275
+
276
+ if (isGroupMenu(menu)) {
277
+ var _menu$children;
278
+
279
+ var getSubMenuProps = function getSubMenuProps(_ref12) {
280
+ var code = _ref12.code,
281
+ groupIcon = _ref12.groupIcon,
282
+ groupName = _ref12.groupName,
283
+ enName = _ref12.enName;
284
+ var isSubGroup = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
285
+ return {
286
+ key: code,
287
+ title: React.createElement(MenuTitle, {
288
+ style: collapsed && isSubGroup ? {
289
+ color: props.theme.primaryTextColor
290
+ } : {}
291
+ }, !isSubGroup && React.createElement(Iconfont, {
292
+ type: groupIcon
293
+ }), collapsed && !isSubGroup ? '' : {
294
+ cn: groupName,
295
+ en: enName
296
+ }[language]),
297
+ expandIcon: collapsed ? null : React.createElement(Iconfont
298
+ /* */
299
+ , {
300
+ type: getExpandIcon(code)
301
+ })
302
+ };
303
+ };
304
+
305
+ return React.createElement(SubMenu, _extends({}, getSubMenuProps(menu), {
306
+ onClick: onSelectMenu
307
+ }), menu == null ? void 0 : (_menu$children = menu.children) == null ? void 0 : _menu$children.map(function (menu) {
308
+ if (isGroupMenu(menu)) {
309
+ var _menu$children2;
310
+
311
+ return React.createElement(SubMenu, _extends({}, getSubMenuProps(menu, true), {
312
+ onClick: onSelectMenu
313
+ }), menu == null ? void 0 : (_menu$children2 = menu.children) == null ? void 0 : _menu$children2.map(function (_ref13) {
314
+ var code = _ref13.code,
315
+ menu = _objectWithoutProperties(_ref13, ["code"]);
316
+
317
+ return React.createElement(MenuItem, {
318
+ key: code
319
+ }, React.createElement(MenuLink, _extends({}, menu, {
320
+ style: {
321
+ paddingLeft: '24px'
322
+ }
323
+ })));
324
+ }));
325
+ }
326
+
327
+ return React.createElement(MenuItem, {
328
+ key: menu == null ? void 0 : menu.code
329
+ }, React.createElement(MenuLink, menu));
330
+ }));
331
+ }
332
+
333
+ return React.createElement(MenuItem, {
334
+ key: menu.code,
335
+ onClick: onSelectMenu
336
+ }, React.createElement(Iconfont, {
337
+ type: menu.icon
338
+ }), React.createElement(MenuLink, menu));
339
+ }));
340
+ });
@@ -0,0 +1,107 @@
1
+ import "antd/lib/popover/style";
2
+ import _Popover from "antd/lib/popover";
3
+
4
+ var _this = this;
5
+
6
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
7
+
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
9
+
10
+ function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
11
+
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
+
14
+ function _templateObject3() {
15
+ var data = _taggedTemplateLiteral(["\n z-index: 1;\n background-color: #fff;\n border-radius: 4px;\n width: 156px;\n"]);
16
+
17
+ _templateObject3 = function _templateObject3() {
18
+ return data;
19
+ };
20
+
21
+ return data;
22
+ }
23
+
24
+ function _templateObject2() {
25
+ var data = _taggedTemplateLiteral(["\n & > div {\n position: relative;\n display: inline-block;\n cursor: pointer;\n &:first-child {\n margin-right: 10px;\n }\n &:last-child {\n margin-left: 10px;\n }\n & > i, & > .tnt-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n }\n"]);
26
+
27
+ _templateObject2 = function _templateObject2() {
28
+ return data;
29
+ };
30
+
31
+ return data;
32
+ }
33
+
34
+ function _templateObject() {
35
+ var data = _taggedTemplateLiteral(["\n margin-left: 20px;\n font-size: 20px;\n .tnt-themeS1 & {\n /* color: rgba(255,255,255,.85); */\n }\n .isInIframe & {\n display: none;\n }\n"]);
36
+
37
+ _templateObject = function _templateObject() {
38
+ return data;
39
+ };
40
+
41
+ return data;
42
+ }
43
+
44
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
45
+
46
+ import { useState } from 'react';
47
+ import styled from 'styled-components';
48
+ import Iconfont from './Iconfont';
49
+ import images from './images';
50
+ import { setThemeStore, getThemeStore } from './storage';
51
+ var Theme = styled.li(_templateObject());
52
+ var ThemeSwitch = styled.div(_templateObject2());
53
+ var ThemeContentWrapper = styled.div(_templateObject3());
54
+ var themes = [{
55
+ value: 'themeS1',
56
+ img: images.themeSymbol1
57
+ }, {
58
+ value: 'themeS2',
59
+ img: images.themeSymbol2
60
+ }];
61
+
62
+ var ThemeContent = function ThemeContent(props) {
63
+ var onChange = props.onChange;
64
+
65
+ var getTheme = function getTheme() {
66
+ var theme = getThemeStore() || props.theme || 'themeS2';
67
+ return themes.some(function (_ref) {
68
+ var value = _ref.value;
69
+ return value === theme;
70
+ }) ? theme : 'themeS2';
71
+ };
72
+
73
+ var _useState = useState(getTheme()),
74
+ _useState2 = _slicedToArray(_useState, 2),
75
+ theme = _useState2[0],
76
+ setTheme = _useState2[1];
77
+
78
+ var changeTheme = function changeTheme(theme) {
79
+ setTheme(theme);
80
+ setThemeStore(theme);
81
+ onChange(theme);
82
+ };
83
+
84
+ return React.createElement(ThemeContentWrapper, null, React.createElement(ThemeSwitch, null, themes.map(function (_ref2) {
85
+ var value = _ref2.value,
86
+ img = _ref2.img;
87
+ return React.createElement("div", {
88
+ key: value,
89
+ onClick: changeTheme.bind(_this, value)
90
+ }, React.createElement("img", {
91
+ src: img
92
+ }), theme === value && React.createElement(Iconfont, {
93
+ type: "check1"
94
+ }));
95
+ })));
96
+ };
97
+
98
+ export default (function (props) {
99
+ return React.createElement(Theme, null, React.createElement(_Popover, {
100
+ placement: "bottomRight",
101
+ title: null,
102
+ content: React.createElement(ThemeContent, props),
103
+ trigger: "click"
104
+ }, React.createElement(Iconfont, {
105
+ type: "change-theme"
106
+ })));
107
+ });
@@ -0,0 +1,29 @@
1
+ import { get } from 'lodash';
2
+ export default (function (menus) {
3
+ var getAuthMap = function getAuthMap() {
4
+ var menus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
5
+ var authMap = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
6
+ return menus.reduce(function (acc, _ref) {
7
+ var code = _ref.code,
8
+ groupName = _ref.groupName,
9
+ functionList = _ref.functionList,
10
+ children = _ref.children;
11
+
12
+ if (groupName) {
13
+ return getAuthMap(children, acc);
14
+ } else {
15
+ acc[code] = acc[code] || {};
16
+ acc[code] = (functionList || []).reduce(function (acc, curFunc) {
17
+ acc[curFunc.code] = curFunc.hasPermission;
18
+ return acc;
19
+ }, acc[code]);
20
+ return acc;
21
+ }
22
+ }, authMap);
23
+ };
24
+
25
+ var authMap = getAuthMap(menus);
26
+ return function (menuCode, funCode) {
27
+ return !!get(authMap, "".concat(menuCode).concat(funCode ? ".".concat(funCode) : ''));
28
+ };
29
+ });
@@ -0,0 +1,39 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import { getText as _getText } from '../locale';
3
+ export default (function (params) {
4
+ var eventEmitter = new EventEmitter();
5
+ var data = {
6
+ language: (params == null ? void 0 : params.language) || 'cn',
7
+ selectedMenuKey: null
8
+ };
9
+ return {
10
+ setData: function setData(key, val) {
11
+ set(data, key, val);
12
+ },
13
+ setSelectedMenuKey: function setSelectedMenuKey(menuKey) {
14
+ data.selectedMenuKey = menuKey;
15
+ },
16
+ getSelectedMenuKey: function getSelectedMenuKey() {
17
+ return data.selectedMenuKey;
18
+ },
19
+ getLanguage: function getLanguage() {
20
+ return data.language;
21
+ },
22
+ setLanguage: function setLanguage(language) {
23
+ return data.language = language;
24
+ },
25
+ getText: function getText(key) {
26
+ var language = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : data.language;
27
+ return _getText(key, language);
28
+ },
29
+ on: function on(eventName, callback) {
30
+ eventEmitter.on(eventName, callback);
31
+ },
32
+ emit: function emit() {
33
+ eventEmitter.emit.apply(eventEmitter, arguments);
34
+ },
35
+ off: function off() {
36
+ eventEmitter.removeListener.apply(eventEmitter, arguments);
37
+ }
38
+ };
39
+ });
@@ -0,0 +1,35 @@
1
+ export default {
2
+ // theme
3
+ themeSymbol1: require('./theme/theme1.svg'),
4
+ themeSymbol2: require('./theme/theme2.svg'),
5
+ // Avatar
6
+ empty: require('./avatar/empty.png'),
7
+ female1: require('./avatar/female1.png'),
8
+ female2: require('./avatar/female2.png'),
9
+ female3: require('./avatar/female3.png'),
10
+ female4: require('./avatar/female4.png'),
11
+ female5: require('./avatar/female5.png'),
12
+ female6: require('./avatar/female6.png'),
13
+ male1: require('./avatar/male1.png'),
14
+ male2: require('./avatar/male2.png'),
15
+ male3: require('./avatar/male3.png'),
16
+ male4: require('./avatar/male4.png'),
17
+ male5: require('./avatar/male5.png'),
18
+ male6: require('./avatar/male6.png')
19
+ };
20
+ export var defaultLogo = require('./logo/default.svg');
21
+ export var logoImgMap = {
22
+ "default": defaultLogo,
23
+ bridge: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IuWbvuWxgl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMDI0IDEwMjQ7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMTJEMDkzO3N0cm9rZS13aWR0aDoyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9Cgkuc3Qxe2ZpbGw6I0ZGQTMwMDt9Cgkuc3Qye2ZpbGw6IzNDODFGRjt9Cgkuc3Qze2ZpbGw6IzBBQ0M4Njt9Cgkuc3Q0e2ZpbGw6IzNEREFGRjt9Cjwvc3R5bGU+CjxnPgoJPGc+CgkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTUxMiw1MTIiLz4KCTwvZz4KPC9nPgo8Zz4KCTxnPgoJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik01MTIsNTEyIi8+Cgk8L2c+CjwvZz4KPGc+Cgk8Zz4KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTEzLjQsNTQ0Yy0yOSwwLTU4LTExLjEtODAuMi0zMy4yYy00NC4zLTQ0LjMtNDQuMy0xMTYuMSwwLTE2MC40TDM1MC40LDMzLjJjNDQuMy00NC4zLDExNi4xLTQ0LjMsMTYwLjQsMAoJCQlzNDQuMywxMTYuMSwwLDE2MC40TDE5My42LDUxMC44QzE3MS40LDUzMywxNDIuNCw1NDQsMTEzLjQsNTQ0eiIvPgoJPC9nPgoJPGc+CgkJPHBhdGggY2xhc3M9InN0MiIgZD0iTTIwMS40LDkzNi41Yy0yOSwwLTU4LTExLjEtODAuMi0zMy4yYy00NC4zLTQ0LjMtNDQuMy0xMTYuMSwwLTE2MC40bDYyMS43LTYyMS43CgkJCWM0NC4zLTQ0LjMsMTE2LjEtNDQuMywxNjAuNCwwYzQ0LjMsNDQuMyw0NC4zLDExNi4xLDAsMTYwLjRMMjgxLjYsOTAzLjNDMjU5LjQsOTI1LjQsMjMwLjQsOTM2LjUsMjAxLjQsOTM2LjV6Ii8+Cgk8L2c+Cgk8Zz4KCQk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNNTkzLjQsMTAyNGMtMjksMC01OC0xMS4xLTgwLjItMzMuMmMtNDQuMy00NC4zLTQ0LjMtMTE2LjEsMC0xNjAuNGwzMTcuMi0zMTcuMgoJCQljNDQuMy00NC4zLDExNi4xLTQ0LjMsMTYwLjQsMGM0NC4zLDQ0LjMsNDQuMywxMTYuMSwwLDE2MC40TDY3My42LDk5MC44QzY1MS40LDEwMTIuOSw2MjIuNCwxMDI0LDU5My40LDEwMjR6Ii8+Cgk8L2c+Cgk8Zz4KCQk8cGF0aCBjbGFzcz0ic3Q0IiBkPSJNODI2LjQsMzEzLjRDNzYzLjgsMzEzLjQsNzEzLDI2Mi42LDcxMywyMDBWMTk4YzAtNjIuNiw1MC44LTExMy40LDExMy40LTExMy40UzkzOS44LDEzNS40LDkzOS44LDE5OHYxLjkKCQkJQzkzOS44LDI2Mi42LDg4OS4xLDMxMy40LDgyNi40LDMxMy40eiIvPgoJPC9nPgo8L2c+Cjwvc3ZnPgo=',
24
+ orion: require('./logo/orion.svg'),
25
+ turing: require('./logo/turing.svg'),
26
+ dataocean: require('./logo/dataocean.svg'),
27
+ convert: require('./logo/convert.svg'),
28
+ baldur: require('./logo/baldur.svg'),
29
+ indicator: require('./logo/indicator.svg'),
30
+ dispatch: require('./logo/dispatch.svg'),
31
+ feature: require('./logo/model.svg'),
32
+ model: require('./logo/model.svg'),
33
+ storage: require('./logo/storage.svg'),
34
+ bi: require('./logo/bi.svg')
35
+ };
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="500px" height="500px" viewBox="0 0 500 500" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 57.1 (83088) - https://sketch.com -->
4
+ <title>统一服务</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <g id="统一服务" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
7
+ <g transform="translate(0.000000, -0.000000)" fill-rule="nonzero" id="路径">
8
+ <path d="M55.7504873,265.594542 C41.6179337,265.594542 27.4853801,260.185185 16.6666667,249.415205 C-4.92202729,227.826511 -4.92202729,192.836257 16.6666667,171.247563 L171.247563,16.6666667 C192.836257,-4.92202729 227.826511,-4.92202729 249.415205,16.6666667 C271.003899,38.2553606 271.003899,73.245614 249.415205,94.834308 L94.834308,249.415205 C84.0155945,260.233918 69.8830409,265.594542 55.7504873,265.594542 Z" fill="#FFA300"></path>
9
+ <path d="M98.6354776,456.871345 C84.502924,456.871345 70.3703704,451.461988 59.5516569,440.692008 C37.962963,419.103314 37.962963,384.11306 59.5516569,362.524366 L362.524366,59.5516569 C384.11306,37.962963 419.103314,37.962963 440.692008,59.5516569 C462.280702,81.1403509 462.280702,116.130604 440.692008,137.719298 L137.719298,440.692008 C126.900585,451.461988 112.768031,456.871345 98.6354776,456.871345 Z" fill="#3C81FF"></path>
10
+ <path d="M289.668616,499.512671 C275.536062,499.512671 261.403509,494.103314 250.584795,483.333333 C228.996101,461.744639 228.996101,426.754386 250.584795,405.165692 L405.165692,250.584795 C426.754386,228.996101 461.744639,228.996101 483.333333,250.584795 C504.922027,272.173489 504.922027,307.163743 483.333333,328.752437 L328.752437,483.333333 C317.933723,494.103314 303.80117,499.512671 289.668616,499.512671 Z" fill="#0ACC86"></path>
11
+ <path d="M403.216374,153.216374 C372.709552,153.216374 347.953216,128.460039 347.953216,97.9532164 L347.953216,96.9785575 C347.953216,66.4717349 372.709552,41.7153996 403.216374,41.7153996 C433.723197,41.7153996 458.479532,66.4717349 458.479532,96.9785575 L458.479532,97.9044834 C458.479532,128.460039 433.77193,153.216374 403.216374,153.216374 Z" fill="#3DDAFF"></path>
12
+ </g>
13
+ </g>
14
+ </svg>
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="486px" height="442px" viewBox="0 0 486 442" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch -->
4
+ <title>Group</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
7
+ <g id="Group">
8
+ <circle id="Oval" fill="#2984FD" cx="134.5" cy="134.5" r="134.5"></circle>
9
+ <circle id="Oval" fill="#FE2A25" cx="353.5" cy="199.5" r="67.5"></circle>
10
+ <circle id="Oval" fill="#FFBC00" cx="353" cy="365" r="77"></circle>
11
+ <circle id="Oval" fill="#00AC48" cx="452.5" cy="122.5" r="33.5"></circle>
12
+ </g>
13
+ </g>
14
+ </svg>
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="500px" height="500px" viewBox="0 0 500 500" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 57.1 (83088) - https://sketch.com -->
4
+ <title>统一权限管理</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <g id="统一权限管理" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
7
+ <g id="权限管理(1)" transform="translate(64.000000, 0.000000)" fill-rule="nonzero">
8
+ <path d="M185.784314,500 C83.3823529,500 0.0490196078,416.372549 0.0490196078,313.578431 L0.0490196078,207.401961 L77.745098,207.401961 L77.745098,313.578431 C77.745098,373.382353 126.22549,422.009804 185.784314,422.009804 C245.343137,422.009804 293.823529,373.382353 293.823529,313.578431 L293.823529,207.401961 L371.519608,207.401961 L371.519608,313.578431 C371.519608,416.372549 288.186275,500 185.784314,500 Z" id="路径" fill="#3C81FF"></path>
9
+ <path d="M142.401961,180.980392 L64.7058824,180.980392 L64.7058824,121.568627 C64.7058824,54.5098039 119.019608,0 185.784314,0 C252.54902,0 306.862745,54.5098039 306.862745,121.568627 L229.166667,121.568627 C229.166667,97.5490196 209.705882,78.0392157 185.784314,78.0392157 C161.862745,78.0392157 142.401961,97.5490196 142.401961,121.568627 L142.401961,180.980392 Z" id="路径" fill="#00E1AD"></path>
10
+ <ellipse id="椭圆形" fill="#FF8839" cx="187.107843" cy="322.745098" rx="48.2843137" ry="48.4313725"></ellipse>
11
+ <path d="M306.862745,121.568627 L229.166667,121.568627 C229.166667,97.5490196 209.705882,78.0392157 185.784314,78.0392157 L185.784314,0 C252.54902,0 306.862745,54.5098039 306.862745,121.568627 Z" id="路径" fill="#3DDAFF"></path>
12
+ <rect id="矩形" fill="#3C81FF" x="0.0490196078" y="168.77451" width="371.519608" height="77.9901961"></rect>
13
+ </g>
14
+ </g>
15
+ </svg>