@midscene/visualizer 0.0.1
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/.eslintrc.js +9 -0
- package/README.md +24 -0
- package/dist/es/assets/logo-plain.16842bbc.svg +70 -0
- package/dist/es/assets/logo-plain2.16842bbc.svg +70 -0
- package/dist/es/component/blackboard.css +25 -0
- package/dist/es/component/blackboard.js +256 -0
- package/dist/es/component/color.js +34 -0
- package/dist/es/component/common.css +0 -0
- package/dist/es/component/detail-panel.css +34 -0
- package/dist/es/component/detail-panel.js +106 -0
- package/dist/es/component/detail-side.css +99 -0
- package/dist/es/component/detail-side.js +285 -0
- package/dist/es/component/global-hover-preview.css +19 -0
- package/dist/es/component/global-hover-preview.js +44 -0
- package/dist/es/component/misc.js +24 -0
- package/dist/es/component/panel-title.css +8 -0
- package/dist/es/component/panel-title.js +9 -0
- package/dist/es/component/side-item.js +0 -0
- package/dist/es/component/sidebar.css +87 -0
- package/dist/es/component/sidebar.js +175 -0
- package/dist/es/component/store.js +128 -0
- package/dist/es/component/timeline.css +18 -0
- package/dist/es/component/timeline.js +438 -0
- package/dist/es/index.css +89 -0
- package/dist/es/index.js +174 -0
- package/dist/es/utils.js +76 -0
- package/dist/lib/assets/logo-plain.16842bbc.svg +70 -0
- package/dist/lib/assets/logo-plain2.16842bbc.svg +70 -0
- package/dist/lib/component/blackboard.css +25 -0
- package/dist/lib/component/blackboard.js +286 -0
- package/dist/lib/component/color.js +59 -0
- package/dist/lib/component/common.css +0 -0
- package/dist/lib/component/detail-panel.css +34 -0
- package/dist/lib/component/detail-panel.js +136 -0
- package/dist/lib/component/detail-side.css +99 -0
- package/dist/lib/component/detail-side.js +313 -0
- package/dist/lib/component/global-hover-preview.css +19 -0
- package/dist/lib/component/global-hover-preview.js +64 -0
- package/dist/lib/component/misc.js +48 -0
- package/dist/lib/component/panel-title.css +8 -0
- package/dist/lib/component/panel-title.js +29 -0
- package/dist/lib/component/side-item.js +1 -0
- package/dist/lib/component/sidebar.css +87 -0
- package/dist/lib/component/sidebar.js +198 -0
- package/dist/lib/component/store.js +153 -0
- package/dist/lib/component/timeline.css +18 -0
- package/dist/lib/component/timeline.js +466 -0
- package/dist/lib/index.css +89 -0
- package/dist/lib/index.js +202 -0
- package/dist/lib/utils.js +111 -0
- package/dist/types/component/blackboard.d.ts +4 -0
- package/dist/types/component/color.d.ts +2 -0
- package/dist/types/component/detail-panel.d.ts +4 -0
- package/dist/types/component/detail-side.d.ts +4 -0
- package/dist/types/component/global-hover-preview.d.ts +4 -0
- package/dist/types/component/misc.d.ts +2 -0
- package/dist/types/component/panel-title.d.ts +6 -0
- package/dist/types/component/side-item.d.ts +0 -0
- package/dist/types/component/sidebar.d.ts +4 -0
- package/dist/types/component/store.d.ts +35 -0
- package/dist/types/component/timeline.d.ts +4 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/utils.d.ts +5 -0
- package/docs/index.tsx +6 -0
- package/modern.config.ts +15 -0
- package/package.json +46 -0
- package/src/component/assets/logo-plain.svg +70 -0
- package/src/component/assets/logo-plain2.svg +70 -0
- package/src/component/blackboard.less +37 -0
- package/src/component/blackboard.tsx +293 -0
- package/src/component/color.tsx +34 -0
- package/src/component/common.less +21 -0
- package/src/component/detail-panel.less +47 -0
- package/src/component/detail-panel.tsx +124 -0
- package/src/component/detail-side.less +131 -0
- package/src/component/detail-side.tsx +361 -0
- package/src/component/global-hover-preview.less +23 -0
- package/src/component/global-hover-preview.tsx +50 -0
- package/src/component/misc.tsx +20 -0
- package/src/component/panel-title.less +11 -0
- package/src/component/panel-title.tsx +11 -0
- package/src/component/side-item.tsx +0 -0
- package/src/component/sidebar.less +122 -0
- package/src/component/sidebar.tsx +205 -0
- package/src/component/store.tsx +151 -0
- package/src/component/timeline.less +25 -0
- package/src/component/timeline.tsx +486 -0
- package/src/global.d.ts +11 -0
- package/src/index.less +113 -0
- package/src/index.tsx +210 -0
- package/src/utils.ts +58 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b || (b = {}))
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
24
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
+
var __export = (target, all) => {
|
|
26
|
+
for (var name in all)
|
|
27
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
28
|
+
};
|
|
29
|
+
var __copyProps = (to, from, except, desc) => {
|
|
30
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
31
|
+
for (let key of __getOwnPropNames(from))
|
|
32
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
33
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
34
|
+
}
|
|
35
|
+
return to;
|
|
36
|
+
};
|
|
37
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
38
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
39
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
40
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
41
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
42
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
43
|
+
mod
|
|
44
|
+
));
|
|
45
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
46
|
+
var src_exports = {};
|
|
47
|
+
__export(src_exports, {
|
|
48
|
+
default: () => src_default
|
|
49
|
+
});
|
|
50
|
+
module.exports = __toCommonJS(src_exports);
|
|
51
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
52
|
+
var import_index = require("./index.css");
|
|
53
|
+
var import_antd = require("antd");
|
|
54
|
+
var import_react = require("react");
|
|
55
|
+
var import_head = require("@modern-js/runtime/head");
|
|
56
|
+
var import_react_resizable_panels = require("react-resizable-panels");
|
|
57
|
+
var import_timeline = __toESM(require("./component/timeline"));
|
|
58
|
+
var import_detail_panel = __toESM(require("./component/detail-panel"));
|
|
59
|
+
var import_logo_plain_16842bbc = __toESM(require("./assets/logo-plain.16842bbc.svg"));
|
|
60
|
+
var import_global_hover_preview = __toESM(require("./component/global-hover-preview"));
|
|
61
|
+
var import_store = require("./component/store");
|
|
62
|
+
var import_detail_side = __toESM(require("./component/detail-side"));
|
|
63
|
+
var import_sidebar = __toESM(require("./component/sidebar"));
|
|
64
|
+
const { Dragger } = import_antd.Upload;
|
|
65
|
+
const Index = () => {
|
|
66
|
+
const executionDump = (0, import_store.useExecutionDump)((store) => store.dump);
|
|
67
|
+
const setGroupedDump = (0, import_store.useExecutionDump)((store) => store.setGroupedDump);
|
|
68
|
+
const reset = (0, import_store.useExecutionDump)((store) => store.reset);
|
|
69
|
+
const [mainLayoutChangeFlag, setMainLayoutChangeFlag] = (0, import_react.useState)(0);
|
|
70
|
+
const mainLayoutChangedRef = (0, import_react.useRef)(false);
|
|
71
|
+
(0, import_react.useEffect)(() => {
|
|
72
|
+
return () => {
|
|
73
|
+
reset();
|
|
74
|
+
};
|
|
75
|
+
}, []);
|
|
76
|
+
(0, import_react.useEffect)(() => {
|
|
77
|
+
const onResize = () => {
|
|
78
|
+
setMainLayoutChangeFlag((prev) => prev + 1);
|
|
79
|
+
};
|
|
80
|
+
window.addEventListener("resize", onResize);
|
|
81
|
+
return () => {
|
|
82
|
+
window.removeEventListener("resize", onResize);
|
|
83
|
+
};
|
|
84
|
+
}, []);
|
|
85
|
+
const uploadProps = {
|
|
86
|
+
name: "file",
|
|
87
|
+
multiple: false,
|
|
88
|
+
capture: false,
|
|
89
|
+
customRequest: () => {
|
|
90
|
+
},
|
|
91
|
+
beforeUpload(file) {
|
|
92
|
+
const ifValidFile = file.name.endsWith("web-dump.json");
|
|
93
|
+
if (!ifValidFile) {
|
|
94
|
+
import_antd.message.error("invalid file extension");
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
const reader = new FileReader();
|
|
98
|
+
reader.readAsText(file);
|
|
99
|
+
reader.onload = (e) => {
|
|
100
|
+
var _a;
|
|
101
|
+
const result = (_a = e.target) == null ? void 0 : _a.result;
|
|
102
|
+
if (typeof result === "string") {
|
|
103
|
+
try {
|
|
104
|
+
const data = JSON.parse(result);
|
|
105
|
+
setGroupedDump(data);
|
|
106
|
+
} catch (e2) {
|
|
107
|
+
console.error(e2);
|
|
108
|
+
import_antd.message.error("failed to parse dump data", e2.message);
|
|
109
|
+
}
|
|
110
|
+
} else {
|
|
111
|
+
import_antd.message.error("Invalid dump file");
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const loadTasksDemo = () => {
|
|
118
|
+
};
|
|
119
|
+
const loadInsightDemo = () => {
|
|
120
|
+
};
|
|
121
|
+
let mainContent;
|
|
122
|
+
if (!executionDump) {
|
|
123
|
+
mainContent = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "main-right uploader-wrapper", children: [
|
|
124
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Dragger, __spreadProps(__spreadValues({ className: "uploader" }, uploadProps), { children: [
|
|
125
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "ant-upload-drag-icon", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", { src: import_logo_plain_16842bbc.default, alt: "Logo", style: { width: 100, height: 100, margin: "auto" } }) }),
|
|
126
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: "ant-upload-text", children: [
|
|
127
|
+
"Click or drag the",
|
|
128
|
+
" ",
|
|
129
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("b", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("i", { children: ".web-dump.json" }) }),
|
|
130
|
+
" ",
|
|
131
|
+
"file into this area."
|
|
132
|
+
] }),
|
|
133
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: "ant-upload-text", children: [
|
|
134
|
+
"The latest dump file is usually placed in",
|
|
135
|
+
" ",
|
|
136
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("b", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("i", { children: "./midscene_run/" }) })
|
|
137
|
+
] }),
|
|
138
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "ant-upload-text", children: "All data will be processed locally by the browser. No data will be sent to the server." })
|
|
139
|
+
] })),
|
|
140
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "demo-loader", children: [
|
|
141
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Button, { type: "link", onClick: loadTasksDemo, children: "Load Tasks Demo" }),
|
|
142
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_antd.Button, { type: "link", onClick: loadInsightDemo, children: "Load Insight Demo" })
|
|
143
|
+
] })
|
|
144
|
+
] });
|
|
145
|
+
} else {
|
|
146
|
+
mainContent = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
147
|
+
import_react_resizable_panels.PanelGroup,
|
|
148
|
+
{
|
|
149
|
+
autoSaveId: "main-page-layout",
|
|
150
|
+
direction: "horizontal",
|
|
151
|
+
onLayout: () => {
|
|
152
|
+
if (!mainLayoutChangedRef.current) {
|
|
153
|
+
setMainLayoutChangeFlag((prev) => prev + 1);
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
children: [
|
|
157
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_resizable_panels.Panel, { maxSize: 95, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_sidebar.default, {}) }),
|
|
158
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
159
|
+
import_react_resizable_panels.PanelResizeHandle,
|
|
160
|
+
{
|
|
161
|
+
onDragging: (isChanging) => {
|
|
162
|
+
if (mainLayoutChangedRef.current && !isChanging) {
|
|
163
|
+
setMainLayoutChangeFlag((prev) => prev + 1);
|
|
164
|
+
}
|
|
165
|
+
mainLayoutChangedRef.current = isChanging;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
),
|
|
169
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_resizable_panels.Panel, { defaultSize: 80, maxSize: 95, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "main-right", children: [
|
|
170
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_timeline.default, {}, mainLayoutChangeFlag),
|
|
171
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "main-content", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react_resizable_panels.PanelGroup, { autoSaveId: "page-detail-layout", direction: "horizontal", children: [
|
|
172
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_resizable_panels.Panel, { maxSize: 95, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "main-side", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_detail_side.default, {}) }) }),
|
|
173
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_resizable_panels.PanelResizeHandle, {}),
|
|
174
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_resizable_panels.Panel, { defaultSize: 75, maxSize: 95, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "main-canvas-container", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_detail_panel.default, {}) }) })
|
|
175
|
+
] }) })
|
|
176
|
+
] }) })
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
182
|
+
import_antd.ConfigProvider,
|
|
183
|
+
{
|
|
184
|
+
theme: {
|
|
185
|
+
components: {
|
|
186
|
+
Layout: {
|
|
187
|
+
headerHeight: 60,
|
|
188
|
+
headerPadding: "0 30px",
|
|
189
|
+
headerBg: "#FFF",
|
|
190
|
+
bodyBg: "#FFF"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
children: [
|
|
195
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_head.Helmet, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: "MidScene.js - Visualization Tool" }) }),
|
|
196
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "page-container", children: mainContent }),
|
|
197
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_global_hover_preview.default, {})
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
);
|
|
201
|
+
};
|
|
202
|
+
var src_default = Index;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b || (b = {}))
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
24
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
+
var __export = (target, all) => {
|
|
26
|
+
for (var name in all)
|
|
27
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
28
|
+
};
|
|
29
|
+
var __copyProps = (to, from, except, desc) => {
|
|
30
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
31
|
+
for (let key of __getOwnPropNames(from))
|
|
32
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
33
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
34
|
+
}
|
|
35
|
+
return to;
|
|
36
|
+
};
|
|
37
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
38
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
39
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
40
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
41
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
42
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
43
|
+
mod
|
|
44
|
+
));
|
|
45
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
46
|
+
var utils_exports = {};
|
|
47
|
+
__export(utils_exports, {
|
|
48
|
+
filterBase64Value: () => filterBase64Value,
|
|
49
|
+
insightDumpToExecutionDump: () => insightDumpToExecutionDump,
|
|
50
|
+
timeStr: () => timeStr,
|
|
51
|
+
typeStr: () => typeStr
|
|
52
|
+
});
|
|
53
|
+
module.exports = __toCommonJS(utils_exports);
|
|
54
|
+
var import_dayjs = __toESM(require("dayjs"));
|
|
55
|
+
function insightDumpToExecutionDump(insightDump) {
|
|
56
|
+
const insightToTask = (insightDump2) => {
|
|
57
|
+
var _a, _b;
|
|
58
|
+
const task = {
|
|
59
|
+
type: "Insight",
|
|
60
|
+
subType: insightDump2.type === "locate" ? "Locate" : "Query",
|
|
61
|
+
status: insightDump2.error ? "fail" : "success",
|
|
62
|
+
param: __spreadProps(__spreadValues(__spreadValues({}, insightDump2.userQuery.element ? { query: insightDump2.userQuery } : {}), insightDump2.userQuery.dataDemand ? { dataDemand: insightDump2.userQuery.dataDemand } : {}), {
|
|
63
|
+
insight: {}
|
|
64
|
+
}),
|
|
65
|
+
log: {
|
|
66
|
+
dump: insightDump2
|
|
67
|
+
},
|
|
68
|
+
timing: {
|
|
69
|
+
end: insightDump2.logTime,
|
|
70
|
+
cost: (_a = insightDump2.taskInfo) == null ? void 0 : _a.durationMs,
|
|
71
|
+
start: insightDump2.logTime - ((_b = insightDump2.taskInfo) == null ? void 0 : _b.durationMs)
|
|
72
|
+
},
|
|
73
|
+
executor: () => {
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
return task;
|
|
77
|
+
};
|
|
78
|
+
if (!Array.isArray(insightDump)) {
|
|
79
|
+
const result = {
|
|
80
|
+
sdkVersion: insightDump.sdkVersion,
|
|
81
|
+
logTime: insightDump.logTime,
|
|
82
|
+
name: "Insight",
|
|
83
|
+
tasks: [insightToTask(insightDump)]
|
|
84
|
+
};
|
|
85
|
+
return result;
|
|
86
|
+
} else {
|
|
87
|
+
const result = {
|
|
88
|
+
sdkVersion: insightDump[0].sdkVersion,
|
|
89
|
+
logTime: insightDump[0].logTime,
|
|
90
|
+
name: "Insight",
|
|
91
|
+
tasks: insightDump.map(insightToTask)
|
|
92
|
+
};
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function timeStr(timestamp) {
|
|
97
|
+
return timestamp ? (0, import_dayjs.default)(timestamp).format("YYYY-MM-DD HH:mm:ss") : "-";
|
|
98
|
+
}
|
|
99
|
+
function typeStr(task) {
|
|
100
|
+
return task.subType ? `${task.type} / ${task.subType || ""}` : task.type;
|
|
101
|
+
}
|
|
102
|
+
function filterBase64Value(input) {
|
|
103
|
+
return input.replace(/data:image\/[^"]+"/g, 'data:image..."');
|
|
104
|
+
}
|
|
105
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
106
|
+
0 && (module.exports = {
|
|
107
|
+
filterBase64Value,
|
|
108
|
+
insightDumpToExecutionDump,
|
|
109
|
+
timeStr,
|
|
110
|
+
typeStr
|
|
111
|
+
});
|
|
File without changes
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { InsightDump, BaseElement, ExecutionTask, GroupedActionDump } from '../../../midscene/dist/types';
|
|
2
|
+
export declare const useBlackboardPreference: import("zustand").UseBoundStore<import("zustand").StoreApi<{
|
|
3
|
+
bgVisible: boolean;
|
|
4
|
+
textsVisible: boolean;
|
|
5
|
+
setBgVisible: (visible: boolean) => void;
|
|
6
|
+
setTextsVisible: (visible: boolean) => void;
|
|
7
|
+
}>>;
|
|
8
|
+
export declare const useExecutionDump: import("zustand").UseBoundStore<import("zustand").StoreApi<{
|
|
9
|
+
dump: GroupedActionDump[] | null;
|
|
10
|
+
setGroupedDump: (dump: GroupedActionDump[]) => void;
|
|
11
|
+
activeTask: ExecutionTask | null;
|
|
12
|
+
setActiveTask: (task: ExecutionTask) => void;
|
|
13
|
+
hoverTask: ExecutionTask | null;
|
|
14
|
+
setHoverTask: (task: ExecutionTask | null) => void;
|
|
15
|
+
hoverPreviewConfig: {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
} | null;
|
|
19
|
+
setHoverPreviewConfig: (config: {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
} | null) => void;
|
|
23
|
+
reset: () => void;
|
|
24
|
+
}>>;
|
|
25
|
+
export declare const useAllCurrentTasks: () => ExecutionTask[];
|
|
26
|
+
export declare const useInsightDump: import("zustand").UseBoundStore<import("zustand").StoreApi<{
|
|
27
|
+
_loadId: number;
|
|
28
|
+
data: InsightDump | null;
|
|
29
|
+
highlightSectionNames: string[];
|
|
30
|
+
setHighlightSectionNames: (sections: string[]) => void;
|
|
31
|
+
highlightElements: BaseElement[];
|
|
32
|
+
setHighlightElements: (elements: BaseElement[]) => void;
|
|
33
|
+
loadData: (data: InsightDump) => void;
|
|
34
|
+
reset: () => void;
|
|
35
|
+
}>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ExecutionDump, InsightDump, ExecutionTask } from '@midscene/core';
|
|
2
|
+
export declare function insightDumpToExecutionDump(insightDump: InsightDump | InsightDump[]): ExecutionDump;
|
|
3
|
+
export declare function timeStr(timestamp?: number): string;
|
|
4
|
+
export declare function typeStr(task: ExecutionTask): any;
|
|
5
|
+
export declare function filterBase64Value(input: string): string;
|
package/docs/index.tsx
ADDED
package/modern.config.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { moduleTools, defineConfig } from '@modern-js/module-tools';
|
|
2
|
+
import { modulePluginDoc } from '@modern-js/plugin-module-doc';
|
|
3
|
+
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
plugins: [
|
|
6
|
+
moduleTools(),
|
|
7
|
+
modulePluginDoc({
|
|
8
|
+
doc: {
|
|
9
|
+
sidebar: false,
|
|
10
|
+
hideNavbar: true,
|
|
11
|
+
},
|
|
12
|
+
}),
|
|
13
|
+
],
|
|
14
|
+
buildPreset: 'npm-component',
|
|
15
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@midscene/visualizer",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"types": "./dist/types/index.d.ts",
|
|
5
|
+
"jsnext:source": "./src/index.ts",
|
|
6
|
+
"main": "./dist/lib/index.js",
|
|
7
|
+
"module": "./dist/es/index.js",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"@ant-design/icons": "5.3.7",
|
|
10
|
+
"@modern-js/runtime": "^2.54.2",
|
|
11
|
+
"antd": "5.17.3",
|
|
12
|
+
"dayjs": "1.11.11",
|
|
13
|
+
"pixi.js": "8.1.1",
|
|
14
|
+
"react": "~18.2.0",
|
|
15
|
+
"react-dom": "~18.2.0",
|
|
16
|
+
"react-resizable-panels": "2.0.22",
|
|
17
|
+
"zustand": "4.5.2",
|
|
18
|
+
"@midscene/core": "0.0.1"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@modern-js/module-tools": "^2.54.2",
|
|
22
|
+
"@modern-js/plugin-module-doc": "^2.33.1",
|
|
23
|
+
"@types/react": "~18.2.22",
|
|
24
|
+
"@types/react-dom": "~18.2.7",
|
|
25
|
+
"react": "~18.2.0",
|
|
26
|
+
"react-dom": "~18.2.0",
|
|
27
|
+
"rimraf": "~3.0.2",
|
|
28
|
+
"typescript": "~5.0.4"
|
|
29
|
+
},
|
|
30
|
+
"sideEffects": [
|
|
31
|
+
"**/*.css",
|
|
32
|
+
"**/*.less",
|
|
33
|
+
"**/*.sass",
|
|
34
|
+
"**/*.scss"
|
|
35
|
+
],
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"dev": "modern dev",
|
|
41
|
+
"build": "modern build",
|
|
42
|
+
"build:watch": "modern build -w",
|
|
43
|
+
"new": "modern new",
|
|
44
|
+
"upgrade": "modern upgrade"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
+
<!-- Creator: CorelDRAW 2019 (64-Bit) -->
|
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="141.563mm" height="53.8692mm" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
|
|
5
|
+
viewBox="0 0 16897.65 6430.11"
|
|
6
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
7
|
+
xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
|
|
8
|
+
<defs>
|
|
9
|
+
<style type="text/css">
|
|
10
|
+
<![CDATA[
|
|
11
|
+
.str0 {stroke:#E62129;stroke-width:23.87;stroke-miterlimit:22.9256}
|
|
12
|
+
.str1 {stroke:#06B1AB;stroke-width:9.1;stroke-miterlimit:22.9256}
|
|
13
|
+
.fil0 {fill:none}
|
|
14
|
+
.fil8 {fill:#FEFEFE}
|
|
15
|
+
.fil1 {fill:#332C2B}
|
|
16
|
+
.fil12 {fill:#F7B873}
|
|
17
|
+
.fil5 {fill:#F3A04E}
|
|
18
|
+
.fil9 {fill:#52C2F1}
|
|
19
|
+
.fil13 {fill:#06B1AB}
|
|
20
|
+
.fil2 {fill:#F63D55}
|
|
21
|
+
.fil11 {fill:#F9483E}
|
|
22
|
+
.fil6 {fill:url(#id0)}
|
|
23
|
+
.fil4 {fill:url(#id1)}
|
|
24
|
+
.fil10 {fill:url(#id2)}
|
|
25
|
+
.fil3 {fill:url(#id3)}
|
|
26
|
+
.fil7 {fill:url(#id4)}
|
|
27
|
+
]]>
|
|
28
|
+
</style>
|
|
29
|
+
<linearGradient id="id0" gradientUnits="userSpaceOnUse" x1="11103.21" y1="5027.34" x2="10930.41" y2="1211.98">
|
|
30
|
+
<stop offset="0" style="stop-opacity:1; stop-color:#0A77D4"/>
|
|
31
|
+
<stop offset="1" style="stop-opacity:1; stop-color:#00B1E0"/>
|
|
32
|
+
</linearGradient>
|
|
33
|
+
<linearGradient id="id1" gradientUnits="userSpaceOnUse" xlink:href="#id0" x1="11407.32" y1="5023.83" x2="11286.4" y2="1215.5">
|
|
34
|
+
</linearGradient>
|
|
35
|
+
<linearGradient id="id2" gradientUnits="userSpaceOnUse" x1="6311.87" y1="4699.25" x2="3547.5" y2="1677.39">
|
|
36
|
+
<stop offset="0" style="stop-opacity:1; stop-color:#F65926"/>
|
|
37
|
+
<stop offset="1" style="stop-opacity:1; stop-color:#F0AB1F"/>
|
|
38
|
+
</linearGradient>
|
|
39
|
+
<linearGradient id="id3" gradientUnits="userSpaceOnUse" x1="3105.35" y1="5075.61" x2="2612.67" y2="1311.04">
|
|
40
|
+
<stop offset="0" style="stop-opacity:1; stop-color:#E52652"/>
|
|
41
|
+
<stop offset="1" style="stop-opacity:1; stop-color:#FF4956"/>
|
|
42
|
+
</linearGradient>
|
|
43
|
+
<linearGradient id="id4" gradientUnits="userSpaceOnUse" x1="14599.77" y1="4808.34" x2="12000" y2="1573.25">
|
|
44
|
+
<stop offset="0" style="stop-opacity:1; stop-color:#02C0A7"/>
|
|
45
|
+
<stop offset="1" style="stop-opacity:1; stop-color:#02E097"/>
|
|
46
|
+
</linearGradient>
|
|
47
|
+
</defs>
|
|
48
|
+
<g id="图层_x0020_1">
|
|
49
|
+
<metadata id="CorelCorpID_0Corel-Layer"/>
|
|
50
|
+
<g id="_1978240863120">
|
|
51
|
+
<path class="fil0 str0" d="M2921.92 814.37l2943.46 0c660.05,0 1200.11,540.04 1200.11,1200.11l0 669.56c-180.23,1562.84 -842.69,2686.31 -2539.2,2867.65l-656.9 0c-1403.42,-112.59 -2125.37,-923.3 -2147.58,-2450.77l0 -1086.44c0,-660.07 540.04,-1200.11 1200.11,-1200.11z"/>
|
|
52
|
+
<path class="fil1" d="M908.05 649.1c172.38,0 312.1,139.73 312.1,312.1 0,172.38 -139.73,312.1 -312.1,312.1 -172.38,0 -312.1,-139.73 -312.1,-312.1 0,-172.38 139.73,-312.1 312.1,-312.1zm15081.56 0c-172.38,0 -312.1,139.73 -312.1,312.1 0,172.38 139.73,312.1 312.1,312.1 172.38,0 312.1,-139.73 312.1,-312.1 0,-172.38 -139.73,-312.1 -312.1,-312.1zm315.15 -649.07l-4739.56 0c-332.34,-0.73 -635.61,30.83 -892.17,114.33 -1164.61,314.95 -1684.86,539.69 -2204.5,542.55 -529.24,2.92 -1057.71,-221.77 -2243.89,-542.55 -256.56,-83.5 -559.83,-115.06 -892.17,-114.33l-4739.56 0c-326.11,0 -592.9,266.79 -592.9,592.9l0 727.65c0,326.11 262.25,574.15 588.16,562.9 244.44,-8.44 379.43,161.6 368.56,407.41l0 1401.3c844.04,3884.05 6459.63,3705.54 6872.25,-983.68 37.55,-479.97 225.37,-745.7 619.85,-795.03 394.48,49.33 582.3,315.06 619.85,795.03 221.1,2512.67 1570.99,3564.6 3624.76,3705.62 1575.25,-121.99 2822.57,-766.6 3247.49,-2721.94l0 -1401.3c-10.86,-245.81 124.13,-415.84 368.56,-407.41 325.91,11.24 588.16,-236.8 588.16,-562.9l0 -727.65c0,-326.11 -266.79,-592.9 -592.9,-592.9z"/>
|
|
53
|
+
<path class="fil2" d="M4404.53 5551.69l138.96 0c1696.5,-181.34 2358.97,-1304.82 2539.2,-2867.65l0 -669.56c0,-660.07 -540.06,-1200.11 -1200.11,-1200.11l-2261.28 0 -682.18 0c-660.07,0 -1200.11,540.04 -1200.11,1200.11l0 1086.44c22.21,1527.47 744.16,2338.19 2147.58,2450.77l517.94 0z"/>
|
|
54
|
+
<path class="fil3" d="M2884.03 3833.6c-562.03,-552.91 337.59,-1229.84 756.52,-784.77l-668.1 -718.53c-248.45,-631.92 -96.85,-1153.5 631.64,-1515.94l-682.18 0c-660.07,0 -1200.11,540.04 -1200.11,1200.11l0 1086.44c22.21,1527.47 744.16,2338.19 2147.58,2450.77l517.94 0c447.09,-261.52 828.85,-610.16 1124.32,-1073.8 -192.91,108.48 -371.35,123.1 -530.58,12.63 -269.77,225.61 -533.22,868.1 -809.3,676.82l-1287.75 -1333.74z"/>
|
|
55
|
+
<path class="fil4" d="M12967.79 5585.01c1654.02,-184.97 2231.4,-1330.91 2306.7,-2925.01l-43.57 -682.94c-42.95,-673.27 -608.37,-1224.11 -1256.49,-1224.11l-2220.38 0 -669.84 0c-648.13,0 -1143.27,550.85 -1100.32,1224.11l70.69 1108.16c121.19,1558.01 882.83,2384.94 2268.19,2499.78l645.03 0z"/>
|
|
56
|
+
<circle class="fil5" cx="3266.42" cy="4767.17" r="119.53"/>
|
|
57
|
+
<path class="fil6 str1" d="M11243.45 3832.57c-587.85,-563.96 251.45,-1254.43 691.78,-800.45l-702.77 -732.9c-285.07,-644.56 -170.14,-1176.57 521.59,-1546.26l-669.84 0c-648.13,0 -1143.27,550.85 -1100.32,1224.11l70.69 1108.16c121.19,1558.01 882.83,2384.94 2268.19,2499.78l508.57 0c422,-266.75 774.17,-622.36 1034.13,-1095.27 -182.37,110.65 -356.62,125.56 -520.16,12.88 -250.21,230.12 -467.1,885.46 -750.63,690.36l-1351.23 -1360.42z"/>
|
|
58
|
+
<path class="fil7" d="M11754.05 752.96c-691.73,369.69 -806.66,901.7 -521.59,1546.26l702.77 732.9c-440.33,-453.98 -1279.63,236.49 -691.78,800.45 1571.66,1582.35 780.78,887.85 1587.88,1752.45l136.46 0c1654.02,-184.97 2231.4,-1330.91 2306.7,-2925.01l-43.57 -682.94c-42.95,-673.27 -608.37,-1224.11 -1256.49,-1224.11l-2220.38 0z"/>
|
|
59
|
+
<circle class="fil8" cx="13725.89" cy="2247.09" r="867.65"/>
|
|
60
|
+
<circle class="fil9" cx="11745.99" cy="4944.33" r="119.53"/>
|
|
61
|
+
<path class="fil10" d="M3604.1 814.37c-728.5,362.44 -880.09,884.02 -631.64,1515.94l668.1 718.53c-418.94,-445.08 -1318.56,231.85 -756.52,784.77l1503.3 1718.08 138.96 0c1696.5,-181.34 2358.97,-1304.82 2539.2,-2867.65l0 -669.56c0,-660.07 -540.06,-1200.11 -1200.11,-1200.11l-2261.28 0z"/>
|
|
62
|
+
<path class="fil11" d="M3602.42 3012.57l-2.01 -1.79 -1.22 -1c-433.3,-363.07 -1259.33,288.49 -715.16,823.82l1503.3 1718.08 138.96 0c366.16,-39.14 684.05,-122.25 959.42,-244.11l-1883.3 -2295z"/>
|
|
63
|
+
<circle class="fil8" cx="5652.09" cy="2247.09" r="867.65"/>
|
|
64
|
+
<circle class="fil12" cx="5669.32" cy="4261.82" r="86.65"/>
|
|
65
|
+
<circle class="fil8" cx="3775.08" cy="4120.55" r="174.77"/>
|
|
66
|
+
<path class="fil13" d="M11770.33 2919.17l123.64 74.69c7.2,5.99 14.32,12.27 21.35,18.8l1988.29 2318.88c-264.55,126.79 -574.49,213.07 -935.82,253.47l-136.46 0c-807.1,-864.6 -16.22,-170.1 -1587.88,-1752.45 -520.29,-499.15 77.34,-1097.23 526.88,-913.39z"/>
|
|
67
|
+
<circle class="fil8" cx="12254.65" cy="4297.71" r="174.77"/>
|
|
68
|
+
</g>
|
|
69
|
+
</g>
|
|
70
|
+
</svg>
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
+
<!-- Creator: CorelDRAW 2019 (64-Bit) -->
|
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="141.563mm" height="53.8692mm" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
|
|
5
|
+
viewBox="0 0 16897.65 6430.11"
|
|
6
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
7
|
+
xmlns:xodm="http://www.corel.com/coreldraw/odm/2003">
|
|
8
|
+
<defs>
|
|
9
|
+
<style type="text/css">
|
|
10
|
+
<![CDATA[
|
|
11
|
+
.str0 {stroke:#E62129;stroke-width:23.87;stroke-miterlimit:22.9256}
|
|
12
|
+
.str1 {stroke:#06B1AB;stroke-width:9.1;stroke-miterlimit:22.9256}
|
|
13
|
+
.fil0 {fill:none}
|
|
14
|
+
.fil8 {fill:#FEFEFE}
|
|
15
|
+
.fil1 {fill:#332C2B}
|
|
16
|
+
.fil12 {fill:#F7B873}
|
|
17
|
+
.fil5 {fill:#F3A04E}
|
|
18
|
+
.fil9 {fill:#52C2F1}
|
|
19
|
+
.fil13 {fill:#06B1AB}
|
|
20
|
+
.fil2 {fill:#F63D55}
|
|
21
|
+
.fil11 {fill:#F9483E}
|
|
22
|
+
.fil6 {fill:url(#id0)}
|
|
23
|
+
.fil4 {fill:url(#id1)}
|
|
24
|
+
.fil10 {fill:url(#id2)}
|
|
25
|
+
.fil3 {fill:url(#id3)}
|
|
26
|
+
.fil7 {fill:url(#id4)}
|
|
27
|
+
]]>
|
|
28
|
+
</style>
|
|
29
|
+
<linearGradient id="id0" gradientUnits="userSpaceOnUse" x1="11103.21" y1="5027.34" x2="10930.41" y2="1211.98">
|
|
30
|
+
<stop offset="0" style="stop-opacity:1; stop-color:#0A77D4"/>
|
|
31
|
+
<stop offset="1" style="stop-opacity:1; stop-color:#00B1E0"/>
|
|
32
|
+
</linearGradient>
|
|
33
|
+
<linearGradient id="id1" gradientUnits="userSpaceOnUse" xlink:href="#id0" x1="11407.32" y1="5023.83" x2="11286.4" y2="1215.5">
|
|
34
|
+
</linearGradient>
|
|
35
|
+
<linearGradient id="id2" gradientUnits="userSpaceOnUse" x1="6311.87" y1="4699.25" x2="3547.5" y2="1677.39">
|
|
36
|
+
<stop offset="0" style="stop-opacity:1; stop-color:#F65926"/>
|
|
37
|
+
<stop offset="1" style="stop-opacity:1; stop-color:#F0AB1F"/>
|
|
38
|
+
</linearGradient>
|
|
39
|
+
<linearGradient id="id3" gradientUnits="userSpaceOnUse" x1="3105.35" y1="5075.61" x2="2612.67" y2="1311.04">
|
|
40
|
+
<stop offset="0" style="stop-opacity:1; stop-color:#E52652"/>
|
|
41
|
+
<stop offset="1" style="stop-opacity:1; stop-color:#FF4956"/>
|
|
42
|
+
</linearGradient>
|
|
43
|
+
<linearGradient id="id4" gradientUnits="userSpaceOnUse" x1="14599.77" y1="4808.34" x2="12000" y2="1573.25">
|
|
44
|
+
<stop offset="0" style="stop-opacity:1; stop-color:#02C0A7"/>
|
|
45
|
+
<stop offset="1" style="stop-opacity:1; stop-color:#02E097"/>
|
|
46
|
+
</linearGradient>
|
|
47
|
+
</defs>
|
|
48
|
+
<g id="图层_x0020_1">
|
|
49
|
+
<metadata id="CorelCorpID_0Corel-Layer"/>
|
|
50
|
+
<g id="_1978240863120">
|
|
51
|
+
<path class="fil0 str0" d="M2921.92 814.37l2943.46 0c660.05,0 1200.11,540.04 1200.11,1200.11l0 669.56c-180.23,1562.84 -842.69,2686.31 -2539.2,2867.65l-656.9 0c-1403.42,-112.59 -2125.37,-923.3 -2147.58,-2450.77l0 -1086.44c0,-660.07 540.04,-1200.11 1200.11,-1200.11z"/>
|
|
52
|
+
<path class="fil1" d="M908.05 649.1c172.38,0 312.1,139.73 312.1,312.1 0,172.38 -139.73,312.1 -312.1,312.1 -172.38,0 -312.1,-139.73 -312.1,-312.1 0,-172.38 139.73,-312.1 312.1,-312.1zm15081.56 0c-172.38,0 -312.1,139.73 -312.1,312.1 0,172.38 139.73,312.1 312.1,312.1 172.38,0 312.1,-139.73 312.1,-312.1 0,-172.38 -139.73,-312.1 -312.1,-312.1zm315.15 -649.07l-4739.56 0c-332.34,-0.73 -635.61,30.83 -892.17,114.33 -1164.61,314.95 -1684.86,539.69 -2204.5,542.55 -529.24,2.92 -1057.71,-221.77 -2243.89,-542.55 -256.56,-83.5 -559.83,-115.06 -892.17,-114.33l-4739.56 0c-326.11,0 -592.9,266.79 -592.9,592.9l0 727.65c0,326.11 262.25,574.15 588.16,562.9 244.44,-8.44 379.43,161.6 368.56,407.41l0 1401.3c844.04,3884.05 6459.63,3705.54 6872.25,-983.68 37.55,-479.97 225.37,-745.7 619.85,-795.03 394.48,49.33 582.3,315.06 619.85,795.03 221.1,2512.67 1570.99,3564.6 3624.76,3705.62 1575.25,-121.99 2822.57,-766.6 3247.49,-2721.94l0 -1401.3c-10.86,-245.81 124.13,-415.84 368.56,-407.41 325.91,11.24 588.16,-236.8 588.16,-562.9l0 -727.65c0,-326.11 -266.79,-592.9 -592.9,-592.9z"/>
|
|
53
|
+
<path class="fil2" d="M4404.53 5551.69l138.96 0c1696.5,-181.34 2358.97,-1304.82 2539.2,-2867.65l0 -669.56c0,-660.07 -540.06,-1200.11 -1200.11,-1200.11l-2261.28 0 -682.18 0c-660.07,0 -1200.11,540.04 -1200.11,1200.11l0 1086.44c22.21,1527.47 744.16,2338.19 2147.58,2450.77l517.94 0z"/>
|
|
54
|
+
<path class="fil3" d="M2884.03 3833.6c-562.03,-552.91 337.59,-1229.84 756.52,-784.77l-668.1 -718.53c-248.45,-631.92 -96.85,-1153.5 631.64,-1515.94l-682.18 0c-660.07,0 -1200.11,540.04 -1200.11,1200.11l0 1086.44c22.21,1527.47 744.16,2338.19 2147.58,2450.77l517.94 0c447.09,-261.52 828.85,-610.16 1124.32,-1073.8 -192.91,108.48 -371.35,123.1 -530.58,12.63 -269.77,225.61 -533.22,868.1 -809.3,676.82l-1287.75 -1333.74z"/>
|
|
55
|
+
<path class="fil4" d="M12967.79 5585.01c1654.02,-184.97 2231.4,-1330.91 2306.7,-2925.01l-43.57 -682.94c-42.95,-673.27 -608.37,-1224.11 -1256.49,-1224.11l-2220.38 0 -669.84 0c-648.13,0 -1143.27,550.85 -1100.32,1224.11l70.69 1108.16c121.19,1558.01 882.83,2384.94 2268.19,2499.78l645.03 0z"/>
|
|
56
|
+
<circle class="fil5" cx="3266.42" cy="4767.17" r="119.53"/>
|
|
57
|
+
<path class="fil6 str1" d="M11243.45 3832.57c-587.85,-563.96 251.45,-1254.43 691.78,-800.45l-702.77 -732.9c-285.07,-644.56 -170.14,-1176.57 521.59,-1546.26l-669.84 0c-648.13,0 -1143.27,550.85 -1100.32,1224.11l70.69 1108.16c121.19,1558.01 882.83,2384.94 2268.19,2499.78l508.57 0c422,-266.75 774.17,-622.36 1034.13,-1095.27 -182.37,110.65 -356.62,125.56 -520.16,12.88 -250.21,230.12 -467.1,885.46 -750.63,690.36l-1351.23 -1360.42z"/>
|
|
58
|
+
<path class="fil7" d="M11754.05 752.96c-691.73,369.69 -806.66,901.7 -521.59,1546.26l702.77 732.9c-440.33,-453.98 -1279.63,236.49 -691.78,800.45 1571.66,1582.35 780.78,887.85 1587.88,1752.45l136.46 0c1654.02,-184.97 2231.4,-1330.91 2306.7,-2925.01l-43.57 -682.94c-42.95,-673.27 -608.37,-1224.11 -1256.49,-1224.11l-2220.38 0z"/>
|
|
59
|
+
<circle class="fil8" cx="13725.89" cy="2247.09" r="867.65"/>
|
|
60
|
+
<circle class="fil9" cx="11745.99" cy="4944.33" r="119.53"/>
|
|
61
|
+
<path class="fil10" d="M3604.1 814.37c-728.5,362.44 -880.09,884.02 -631.64,1515.94l668.1 718.53c-418.94,-445.08 -1318.56,231.85 -756.52,784.77l1503.3 1718.08 138.96 0c1696.5,-181.34 2358.97,-1304.82 2539.2,-2867.65l0 -669.56c0,-660.07 -540.06,-1200.11 -1200.11,-1200.11l-2261.28 0z"/>
|
|
62
|
+
<path class="fil11" d="M3602.42 3012.57l-2.01 -1.79 -1.22 -1c-433.3,-363.07 -1259.33,288.49 -715.16,823.82l1503.3 1718.08 138.96 0c366.16,-39.14 684.05,-122.25 959.42,-244.11l-1883.3 -2295z"/>
|
|
63
|
+
<circle class="fil8" cx="5652.09" cy="2247.09" r="867.65"/>
|
|
64
|
+
<circle class="fil12" cx="5669.32" cy="4261.82" r="86.65"/>
|
|
65
|
+
<circle class="fil8" cx="3775.08" cy="4120.55" r="174.77"/>
|
|
66
|
+
<path class="fil13" d="M11770.33 2919.17l123.64 74.69c7.2,5.99 14.32,12.27 21.35,18.8l1988.29 2318.88c-264.55,126.79 -574.49,213.07 -935.82,253.47l-136.46 0c-807.1,-864.6 -16.22,-170.1 -1587.88,-1752.45 -520.29,-499.15 77.34,-1097.23 526.88,-913.39z"/>
|
|
67
|
+
<circle class="fil8" cx="12254.65" cy="4297.71" r="174.77"/>
|
|
68
|
+
</g>
|
|
69
|
+
</g>
|
|
70
|
+
</svg>
|