@rsdoctor/components 0.0.2-beta.0 → 0.0.2-beta.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 (113) hide show
  1. package/dist/components/Alert/change.js +2 -3
  2. package/dist/components/Alert/file-relation.js +1 -1
  3. package/dist/components/Alert/index.css +3 -0
  4. package/dist/components/Alert/link.js +1 -1
  5. package/dist/components/Alert/package-relation.js +8 -27
  6. package/dist/components/Alert/view.js +3 -4
  7. package/dist/components/Alerts/bundle.js +23 -9
  8. package/dist/components/Alerts/common.js +3 -20
  9. package/dist/components/Badge/index.js +11 -29
  10. package/dist/components/Card/diff.d.ts +2 -2
  11. package/dist/components/Card/diff.js +4 -33
  12. package/dist/components/Card/index.d.ts +1 -0
  13. package/dist/components/Card/index.js +6 -37
  14. package/dist/components/Card/size.d.ts +5 -0
  15. package/dist/components/Card/size.js +17 -9
  16. package/dist/components/Card/statistic.css +2 -1
  17. package/dist/components/Card/statistic.d.ts +3 -0
  18. package/dist/components/Card/statistic.js +6 -21
  19. package/dist/components/Charts/TimelineCharts/index.js +120 -127
  20. package/dist/components/Charts/common.js +1 -1
  21. package/dist/components/Charts/loader.js +9 -18
  22. package/dist/components/CodeViewer/diff.js +8 -26
  23. package/dist/components/CodeViewer/hightlight.js +3 -3
  24. package/dist/components/CodeViewer/viewer.js +4 -20
  25. package/dist/components/Configuration/{webpack.d.ts → builder.d.ts} +1 -1
  26. package/dist/components/Configuration/{webpack.js → builder.js} +6 -6
  27. package/dist/components/Configuration/index.d.ts +1 -1
  28. package/dist/components/Configuration/index.js +1 -1
  29. package/dist/components/FileTree/index.js +13 -24
  30. package/dist/components/Form/keyword.js +1 -17
  31. package/dist/components/Keyword/index.js +4 -36
  32. package/dist/components/Layout/builder-select.js +1 -1
  33. package/dist/components/Layout/header.js +2 -3
  34. package/dist/components/Layout/index.js +2 -2
  35. package/dist/components/Layout/menus.d.ts +1 -1
  36. package/dist/components/Layout/menus.js +11 -35
  37. package/dist/components/Loader/Analysis/files.js +8 -2
  38. package/dist/components/Loader/Analysis/index.d.ts +1 -1
  39. package/dist/components/Loader/executions.d.ts +1 -1
  40. package/dist/components/Loader/executions.js +62 -84
  41. package/dist/components/Manifest/api.d.ts +1 -1
  42. package/dist/components/Manifest/api.js +5 -35
  43. package/dist/components/Manifest/data.d.ts +1 -1
  44. package/dist/components/Manifest/data.js +1 -17
  45. package/dist/components/Opener/vscode.js +4 -19
  46. package/dist/components/Overall/bundle.js +2 -2
  47. package/dist/components/Overall/compile.js +1 -2
  48. package/dist/components/Resolver/analysis.js +1 -17
  49. package/dist/components/TextDrawer/duplicate.js +18 -56
  50. package/dist/components/TextDrawer/index.js +9 -28
  51. package/dist/components/worker/ecmaversion/client.js +1 -2
  52. package/dist/components/worker/ecmaversion/worker.js +3 -3
  53. package/dist/components/worker/jsequal/client.js +1 -2
  54. package/dist/components/worker/jsequal/worker.js +21 -50
  55. package/dist/config.d.ts +2 -2
  56. package/dist/config.js +3 -17
  57. package/dist/constants.d.ts +4 -2
  58. package/dist/constants.js +5 -1
  59. package/dist/pages/BundleSize/components/asset.js +74 -101
  60. package/dist/pages/BundleSize/components/cards.js +16 -27
  61. package/dist/pages/BundleSize/components/index.d.ts +1 -1
  62. package/dist/pages/BundleSize/components/index.js +57 -5
  63. package/dist/pages/BundleSize/constants.d.ts +1 -1
  64. package/dist/pages/BundleSize/constants.js +1 -1
  65. package/dist/pages/ModuleAnalyze/chunks.js +1 -1
  66. package/dist/pages/ModuleAnalyze/components/fileTreeCom.css +16 -7
  67. package/dist/pages/ModuleAnalyze/components/fileTreeCom.js +6 -24
  68. package/dist/pages/ModuleAnalyze/constants.d.ts +1 -1
  69. package/dist/pages/ModuleAnalyze/constants.js +1 -1
  70. package/dist/pages/ModuleAnalyze/utils/hooks.js +5 -8
  71. package/dist/pages/ModuleAnalyze/utils/index.js +2 -4
  72. package/dist/pages/ModuleResolve/constants.d.ts +1 -1
  73. package/dist/pages/ModuleResolve/constants.js +1 -1
  74. package/dist/pages/Overall/constants.d.ts +1 -1
  75. package/dist/pages/Overall/constants.js +1 -1
  76. package/dist/pages/Resources/RuleIndex/constants.d.ts +3 -0
  77. package/dist/pages/Resources/RuleIndex/constants.js +7 -0
  78. package/dist/pages/Resources/RuleIndex/index.d.ts +3 -0
  79. package/dist/pages/Resources/RuleIndex/index.js +53 -0
  80. package/dist/pages/WebpackLoaders/Analysis/constants.d.ts +1 -1
  81. package/dist/pages/WebpackLoaders/Analysis/constants.js +1 -1
  82. package/dist/pages/WebpackLoaders/Overall/constants.d.ts +2 -2
  83. package/dist/pages/WebpackLoaders/Overall/constants.js +2 -2
  84. package/dist/pages/WebpackLoaders/Overall/index.js +1 -1
  85. package/dist/pages/WebpackPlugins/constants.d.ts +2 -2
  86. package/dist/pages/WebpackPlugins/constants.js +2 -2
  87. package/dist/pages/index.d.ts +2 -1
  88. package/dist/pages/index.js +3 -1
  89. package/dist/utils/data/base.d.ts +7 -7
  90. package/dist/utils/data/base.js +2 -24
  91. package/dist/utils/data/index.d.ts +1 -1
  92. package/dist/utils/data/index.js +14 -36
  93. package/dist/utils/data/local.d.ts +1 -1
  94. package/dist/utils/data/local.js +32 -56
  95. package/dist/utils/data/remote.d.ts +1 -1
  96. package/dist/utils/data/remote.js +22 -46
  97. package/dist/utils/file.js +4 -4
  98. package/dist/utils/hooks.d.ts +16 -15
  99. package/dist/utils/hooks.js +33 -73
  100. package/dist/utils/i18n/cn.js +1 -1
  101. package/dist/utils/i18n/en.d.ts +1 -1
  102. package/dist/utils/i18n/en.js +1 -1
  103. package/dist/utils/manifest.d.ts +2 -2
  104. package/dist/utils/monaco.d.ts +4 -1
  105. package/dist/utils/monaco.js +26 -3
  106. package/dist/utils/request.d.ts +10 -10
  107. package/dist/utils/request.js +52 -101
  108. package/dist/utils/routes.d.ts +2 -2
  109. package/dist/utils/routes.js +2 -2
  110. package/dist/utils/storage.js +3 -3
  111. package/dist/utils/url.js +10 -28
  112. package/package.json +7 -4
  113. package/dist/assets/icon.7509d763.svg +0 -21
@@ -1,42 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __async = (__this, __arguments, generator) => {
21
- return new Promise((resolve, reject) => {
22
- var fulfilled = (value) => {
23
- try {
24
- step(generator.next(value));
25
- } catch (e) {
26
- reject(e);
27
- }
28
- };
29
- var rejected = (value) => {
30
- try {
31
- step(generator.throw(value));
32
- } catch (e) {
33
- reject(e);
34
- }
35
- };
36
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
- step((generator = generator.apply(__this, __arguments)).next());
38
- });
39
- };
40
1
  import axios from "axios";
41
2
  import { Manifest, SDK } from "@rsdoctor/types";
42
3
  import { Manifest as ManifestMethod, Url } from "@rsdoctor/utils/common";
@@ -46,56 +7,49 @@ import { getAPILoaderModeFromStorage } from "./storage";
46
7
  function random() {
47
8
  return `${Date.now()}${Math.floor(Math.random() * 1e4)}`;
48
9
  }
49
- function fetchShardingFile(url) {
50
- return __async(this, null, function* () {
51
- if (Url.isUrl(url)) {
52
- return axios.get(url, { timeout: 999999, responseType: "text" }).then((e) => e.data);
53
- }
54
- return url;
55
- });
10
+ async function fetchShardingFile(url) {
11
+ if (Url.isUrl(url)) {
12
+ return axios.get(url, { timeout: 999999, responseType: "text" }).then((e) => e.data);
13
+ }
14
+ return url;
56
15
  }
57
- function loadManifestByUrl(url) {
58
- return __async(this, null, function* () {
59
- const json = yield fetchJSONByUrl(url);
60
- const res = yield parseManifest(json);
61
- return res;
62
- });
16
+ async function loadManifestByUrl(url) {
17
+ const json = await fetchJSONByUrl(url);
18
+ const res = await parseManifest(json);
19
+ return res;
63
20
  }
64
- function fetchJSONByUrl(url) {
65
- return __async(this, null, function* () {
66
- let json = yield axios.get(url, { timeout: 3e4 }).then((e) => e.data);
67
- if (typeof json === "string") {
68
- json = JSON.parse(json);
69
- }
70
- console.log("[json] ", url, json);
71
- return json;
72
- });
21
+ async function fetchJSONByUrl(url) {
22
+ let json = await axios.get(url, { timeout: 3e4 }).then((e) => e.data);
23
+ if (typeof json === "string") {
24
+ json = JSON.parse(json);
25
+ }
26
+ console.log("[json] ", url, json);
27
+ return json;
73
28
  }
74
29
  function fetchJSONByUrls(urls) {
75
30
  return Promise.all(urls.map((url) => fetchJSONByUrl(url)));
76
31
  }
77
- function parseManifest(json) {
78
- return __async(this, null, function* () {
79
- let transformedData;
80
- if (json.data) {
81
- try {
82
- transformedData = yield ManifestMethod.fetchShardingFiles(json.data, fetchShardingFile);
83
- } catch (error) {
84
- console.log("cloudData load error: ", error);
85
- }
86
- } else {
87
- throw new Error("fallback to load json.data");
32
+ async function parseManifest(json) {
33
+ let transformedData;
34
+ if (json.data) {
35
+ try {
36
+ transformedData = await ManifestMethod.fetchShardingFiles(json.data, fetchShardingFile);
37
+ } catch (error) {
38
+ console.log("cloudData load error: ", error);
88
39
  }
89
- return __spreadProps(__spreadValues({}, json), {
90
- data: transformedData
91
- });
92
- });
40
+ } else {
41
+ throw new Error("fallback to load json.data");
42
+ }
43
+ return {
44
+ ...json,
45
+ data: transformedData
46
+ };
93
47
  }
94
48
  const manifestUrlForDev = "/manifest.json";
95
49
  function getManifestUrl() {
96
50
  let file;
97
- if (window[Manifest.DoctorManifestClientConstant.WindowPropertyForManifestUrl]) {
98
- file = window[Manifest.DoctorManifestClientConstant.WindowPropertyForManifestUrl];
51
+ if (window[Manifest.RsdoctorManifestClientConstant.WindowPropertyForManifestUrl]) {
52
+ file = window[Manifest.RsdoctorManifestClientConstant.WindowPropertyForManifestUrl];
99
53
  } else {
100
54
  file = getManifestUrlFromUrlQuery();
101
55
  }
@@ -109,20 +63,18 @@ function getManifestUrl() {
109
63
  return file;
110
64
  }
111
65
  const pool = /* @__PURE__ */ new Map();
112
- function fetchManifest() {
113
- return __async(this, arguments, function* (url = getManifestUrl()) {
114
- if (!pool.has(url)) {
115
- pool.set(
116
- url,
117
- fetchJSONByUrl(url).catch((err) => {
118
- pool.delete(url);
119
- throw err;
120
- })
121
- );
122
- }
123
- const res = yield pool.get(url);
124
- return res;
125
- });
66
+ async function fetchManifest(url = getManifestUrl()) {
67
+ if (!pool.has(url)) {
68
+ pool.set(
69
+ url,
70
+ fetchJSONByUrl(url).catch((err) => {
71
+ pool.delete(url);
72
+ throw err;
73
+ })
74
+ );
75
+ }
76
+ const res = await pool.get(url);
77
+ return res;
126
78
  }
127
79
  if (process.env.NODE_ENV === "development") {
128
80
  if (getAPILoaderModeFromStorage() === APILoaderMode4Dev.Local) {
@@ -134,21 +86,20 @@ if (process.env.NODE_ENV === "development") {
134
86
  }
135
87
  const url = new URL(location.href);
136
88
  url.port = String(process.env.LOCAL_CLI_PORT);
137
- return __spreadProps(__spreadValues({}, c), {
89
+ return {
90
+ ...c,
138
91
  url: `${url.origin}${c.url}`
139
- });
92
+ };
140
93
  }
141
94
  return c;
142
95
  });
143
96
  }
144
97
  }
145
- function postServerAPI(...args) {
146
- return __async(this, null, function* () {
147
- const [api, body] = args;
148
- const timeout = process.env.NODE_ENV === "development" ? 1e4 : 6e4;
149
- const { data } = yield axios.post(`${api}?_t=${random()}`, body, { timeout });
150
- return data;
151
- });
98
+ async function postServerAPI(...args) {
99
+ const [api, body] = args;
100
+ const timeout = process.env.NODE_ENV === "development" ? 1e4 : 6e4;
101
+ const { data } = await axios.post(`${api}?_t=${random()}`, body, { timeout });
102
+ return data;
152
103
  }
153
104
  export {
154
105
  fetchJSONByUrl,
@@ -1,3 +1,3 @@
1
1
  import { Manifest } from '@rsdoctor/types';
2
- export declare function hasCompile(routes: Manifest.DoctorManifestClientRoutes[]): boolean;
3
- export declare function hasBundle(routes: Manifest.DoctorManifestClientRoutes[]): boolean;
2
+ export declare function hasCompile(routes: Manifest.RsdoctorManifestClientRoutes[]): boolean;
3
+ export declare function hasBundle(routes: Manifest.RsdoctorManifestClientRoutes[]): boolean;
@@ -1,11 +1,11 @@
1
1
  import { includes } from "lodash-es";
2
2
  import { Manifest } from "@rsdoctor/types";
3
3
  function hasCompile(routes) {
4
- const hasCompile2 = includes(routes, Manifest.DoctorManifestClientRoutes.WebpackLoaders) || includes(routes, Manifest.DoctorManifestClientRoutes.ModuleResolve) || includes(routes, Manifest.DoctorManifestClientRoutes.WebpackPlugins);
4
+ const hasCompile2 = includes(routes, Manifest.RsdoctorManifestClientRoutes.WebpackLoaders) || includes(routes, Manifest.RsdoctorManifestClientRoutes.ModuleResolve) || includes(routes, Manifest.RsdoctorManifestClientRoutes.WebpackPlugins);
5
5
  return hasCompile2;
6
6
  }
7
7
  function hasBundle(routes) {
8
- const hasBundle2 = includes(routes, Manifest.DoctorManifestClientRoutes.BundleSize) || includes(routes, Manifest.DoctorManifestClientRoutes.ModuleGraph) || includes(routes, Manifest.DoctorManifestClientRoutes.TreeShaking);
8
+ const hasBundle2 = includes(routes, Manifest.RsdoctorManifestClientRoutes.BundleSize) || includes(routes, Manifest.RsdoctorManifestClientRoutes.ModuleGraph) || includes(routes, Manifest.RsdoctorManifestClientRoutes.TreeShaking);
9
9
  return hasBundle2;
10
10
  }
11
11
  export {
@@ -1,6 +1,6 @@
1
1
  import { APILoaderMode4Dev, Language, Theme, ViewMode } from "../constants";
2
2
  var Keys = /* @__PURE__ */ ((Keys2) => {
3
- Keys2["Namespace"] = "__WEBDOCTOR__STORAGE__";
3
+ Keys2["Namespace"] = "__RSDOCTOR__STORAGE__";
4
4
  Keys2["Theme"] = "THEME";
5
5
  Keys2["Locale"] = "LOCALE";
6
6
  Keys2["ViewMode"] = "VIEWMODE";
@@ -8,11 +8,11 @@ var Keys = /* @__PURE__ */ ((Keys2) => {
8
8
  return Keys2;
9
9
  })(Keys || {});
10
10
  function getStorage(key) {
11
- return window.localStorage.getItem(`${"__WEBDOCTOR__STORAGE__" /* Namespace */}${key}`);
11
+ return window.localStorage.getItem(`${"__RSDOCTOR__STORAGE__" /* Namespace */}${key}`);
12
12
  }
13
13
  function setStorage(key, value) {
14
14
  try {
15
- window.localStorage.setItem(`${"__WEBDOCTOR__STORAGE__" /* Namespace */}${key}`, value);
15
+ window.localStorage.setItem(`${"__RSDOCTOR__STORAGE__" /* Namespace */}${key}`, value);
16
16
  return true;
17
17
  } catch (error) {
18
18
  console.error(error);
package/dist/utils/url.js CHANGED
@@ -1,22 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
1
  import parse from "url-parse";
21
2
  import { Constants, Client } from "@rsdoctor/types";
22
3
  import { endsWith } from "lodash-es";
@@ -30,8 +11,8 @@ function setDefaultUrl(url) {
30
11
  }
31
12
  }
32
13
  function setUploaderHash(url) {
33
- if (endsWith(url.hash, Client.DoctorClientRoutes.Uploader)) {
34
- url.set("hash", Client.DoctorClientRoutes.Overall);
14
+ if (endsWith(url.hash, Client.RsdoctorClientRoutes.Uploader)) {
15
+ url.set("hash", Client.RsdoctorClientRoutes.Overall);
35
16
  }
36
17
  }
37
18
  function isJsDataUrl(path) {
@@ -39,7 +20,7 @@ function isJsDataUrl(path) {
39
20
  }
40
21
  function getManifestUrlFromUrlQuery() {
41
22
  const { query } = parse(location.href, true);
42
- const url = query[Client.DoctorClientUrlQuery.ManifestFile];
23
+ const url = query[Client.RsdoctorClientUrlQuery.ManifestFile];
43
24
  if (url) {
44
25
  return decodeURIComponent(url);
45
26
  }
@@ -58,9 +39,10 @@ function getSharingUrl(manifestCloudUrl) {
58
39
  const url = parse(location.href, true);
59
40
  setDefaultUrl(url);
60
41
  setUploaderHash(url);
61
- url.set("query", __spreadProps(__spreadValues({}, url.query), {
62
- [Client.DoctorClientUrlQuery.ManifestFile]: manifestCloudUrl
63
- }));
42
+ url.set("query", {
43
+ ...url.query,
44
+ [Client.RsdoctorClientUrlQuery.ManifestFile]: manifestCloudUrl
45
+ });
64
46
  return url.toString();
65
47
  }
66
48
  function getDemoUrl() {
@@ -70,12 +52,12 @@ function getDemoUrl() {
70
52
  return null;
71
53
  }
72
54
  const getShortPath = (path) => {
73
- if ((path == null ? void 0 : path.indexOf("node_modules")) >= 0) {
55
+ if (path?.indexOf("node_modules") >= 0) {
74
56
  const pathArr = path.split("node_modules");
75
57
  return `node_modules${pathArr[pathArr.length - 1]}`;
76
58
  }
77
- if (path == null ? void 0 : path.length) {
78
- return `${path == null ? void 0 : path.split("/").slice(-4).join("/")}`;
59
+ if (path?.length) {
60
+ return `${path?.split("/").slice(-4).join("/")}`;
79
61
  }
80
62
  return path;
81
63
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdoctor/components",
3
- "version": "0.0.2-beta.0",
3
+ "version": "0.0.2-beta.2",
4
4
  "main": "./dist/index.js",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",
@@ -48,6 +48,7 @@
48
48
  "@monaco-editor/react": "4.4.6",
49
49
  "@types/lodash-es": "4.17.6",
50
50
  "@types/node": "^16",
51
+ "@types/randomcolor": "^0.5.9",
51
52
  "@types/react": "^18",
52
53
  "@types/url-parse": "1.4.8",
53
54
  "ansi-to-react": "6.1.6",
@@ -59,20 +60,22 @@
59
60
  "i18next": "22.0.4",
60
61
  "lodash-es": "4.17.21",
61
62
  "monaco-editor": "0.34.1",
63
+ "randomcolor": "^0.6.2",
62
64
  "rc-dialog": "9.1.0",
63
65
  "rc-tree": "5.7.2",
64
66
  "react": "^18",
65
67
  "react-hyper-tree": "0.3.12",
66
68
  "react-i18next": "12.0.0",
67
69
  "react-json-view": "1.21.3",
70
+ "react-markdown": "^9.0.1",
68
71
  "react-router-dom": "6.4.3",
69
72
  "socket.io-client": "4.6.1",
70
73
  "terser": "^5.26.0",
71
74
  "typescript": "^5.2.2",
72
75
  "url-parse": "1.5.10",
73
- "@rsdoctor/graph": "0.0.2-beta.0",
74
- "@rsdoctor/types": "0.0.2-beta.0",
75
- "@rsdoctor/utils": "0.0.2-beta.0"
76
+ "@rsdoctor/utils": "0.0.2-beta.2",
77
+ "@rsdoctor/types": "0.0.2-beta.2",
78
+ "@rsdoctor/graph": "0.0.2-beta.2"
76
79
  },
77
80
  "publishConfig": {
78
81
  "access": "public",
@@ -1,21 +0,0 @@
1
- <svg width="106.000000" height="113.000000" viewBox="0 0 106 113" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
- <rect id="画板 934" width="106.000000" height="113.000000" fill="#FFFFFF" fill-opacity="0.035"/>
3
- <g clip-path="url(#clip111_45)">
4
- <rect id="矩形 2176" x="22.500000" y="10.500000" rx="3.000000" width="6.000000" height="11.000000" fill="#0F0D0D"/>
5
- <rect id="矩形 2176" x="22.500000" y="10.500000" rx="3.000000" width="6.000000" height="11.000000" fill="#736C6C"/>
6
- <rect id="矩形 2176" x="22.500000" y="10.500000" rx="3.000000" width="6.000000" height="11.000000" stroke="#000000" stroke-linejoin="bevel"/>
7
- <rect id="矩形 2176" x="49.500000" y="10.500000" rx="3.000000" width="6.000000" height="11.000000" fill="#0F0D0D"/>
8
- <rect id="矩形 2176" x="49.500000" y="10.500000" rx="3.000000" width="6.000000" height="11.000000" fill="#736C6C"/>
9
- <rect id="矩形 2176" x="49.500000" y="10.500000" rx="3.000000" width="6.000000" height="11.000000" stroke="#000000" stroke-linejoin="bevel"/>
10
- <path id="矢量 943" d="M24.0938 15.8218C24.0938 15.8218 14 11.3477 14 23.2773C14 35.207 26.1123 70 26.1123 70L41 70" stroke="#000000" stroke-width="5.000000"/>
11
- <path id="矢量 943" d="M53.9062 15.8218C53.9062 15.8218 64 11.3477 64 23.2773C64 35.207 51.8877 70 51.8877 70L37 70" stroke="#000000" stroke-width="5.000000"/>
12
- <path id="矢量 945" d="M40 83.0723C40 94.0781 48.9219 103 59.9277 103L70 103C81.0459 103 90 94.0459 90 83L90 48" stroke="#000000" stroke-width="5.000000"/>
13
- <ellipse id="椭圆 54" cx="90.000000" cy="41.500000" rx="11.000000" ry="8.500000" fill="#5092FF"/>
14
- <path id="矢量 946" d="M27 72C31.9609 80.7266 34.5361 81.2817 39.4443 80.9219C44.7744 81.2124 47.4326 79.7798 51 72" stroke="#000000" stroke-width="5.000000"/>
15
- </g>
16
- <defs>
17
- <clipPath id="clip111_45">
18
- <rect id="画板 934" width="106.000000" height="113.000000" fill="white"/>
19
- </clipPath>
20
- </defs>
21
- </svg>