CzRger 7 mesi fa
parent
commit
42508abe9e

+ 3 - 2
package.json

@@ -10,9 +10,11 @@
     "serve": "vite --host 0.0.0.0"
   },
   "dependencies": {
+    "@antv/g6": "^5.0.19",
     "@types/node": "^20.14.12",
     "axios": "^1.7.2",
     "default-passive-events": "^2.0.0",
+    "element-plus": "^2.3.7",
     "fast-glob": "^3.3.2",
     "pinia": "^2.1.7",
     "rollup-plugin-visualizer": "^5.12.0",
@@ -23,8 +25,7 @@
     "vite-plugin-svg-icons": "^2.0.1",
     "vite-plugin-top-level-await": "^1.4.2",
     "vue": "^3.4.31",
-    "vue-router": "^4.4.0",
-    "element-plus": "^2.3.7"
+    "vue-router": "^4.4.0"
   },
   "devDependencies": {
     "@vitejs/plugin-vue": "^5.0.5",

+ 11 - 0
src/api/modules/manage/index.ts

@@ -52,3 +52,14 @@ export const sysIndexFieldDeleteById = (id: any) => handle({
   url: `/${suffix}/sys-index-field/deleteById/${id}`,
   method: 'get',
 })
+// 删除
+export const sysIndexDeleteIndexById = (id: any) => handle({
+  url: `/${suffix}/sys-index/deleteIndexById/${id}`,
+  method: 'get',
+})
+// 导出
+export const sysIndexExport = (params: any) => handle({
+  url: `/${suffix}/sys-index/export`,
+  method: 'get',
+  params
+})

+ 1 - 2
src/components/cus/CusTable.vue

@@ -189,7 +189,6 @@ const handleFilter = (val: any) => {
 const onPage = (pageNum, pageSize) => {
   emit('handlePage', pageNum, pageSize)
 }
-console.log(123)
 </script>
 
 <style lang="scss" scoped>
@@ -208,7 +207,7 @@ console.log(123)
           border-bottom: 2px solid var(--cus-main-color);
           tr {
             >th {
-              background-color: var(--cus-table-head-bg-color);
+              background-color: var(--cus-main-color-hex-2);
               height: 44px;
               padding: 0;
               .cell {

+ 2 - 2
src/router/modules/web.ts

@@ -15,9 +15,9 @@ export default {
       component: () => import('@/views/web/list/index.vue'),
     },
     {
-      path: 'people',
+      path: 'archive',
       name: '2a9583dc-94ed-430e-baa7-b61af9723a0c',
-      component: () => import('@/views/web/archive/people/index.vue'),
+      component: () => import('@/views/web/archive/index.vue'),
     }
   ]
 }

+ 1 - 1
src/style/cus.scss

@@ -8,7 +8,7 @@
   // 主题自定义
   --cus-main-color: #2E81FF;
   --cus-main-color-rgb: 46, 129, 255;
-  --cus-table-head-bg-color: #273A58;
+  --cus-main-color-hex-2: #273A58;
 }
 
 .__hover {

+ 1 - 1
src/style/initRootVar.ts

@@ -4,5 +4,5 @@ export default (config) => {
   const mainDefault = '#2E81FF'
   document.documentElement.style.setProperty('--cus-main-color', config.mainColor || mainDefault) // 主题色
   document.documentElement.style.setProperty('--cus-main-color-rgb', extractRgbFromRgba(hexToRgb(config.mainColor || mainDefault)).join(',')) // 主题色rgb
-  document.documentElement.style.setProperty('--cus-table-head-bg-color', (hexToOpaqueHex(config.mainColor || mainDefault, 0.2))) // 表头颜色
+  document.documentElement.style.setProperty('--cus-main-color-hex-2', (hexToOpaqueHex(config.mainColor || mainDefault, 0.2))) // 表头颜色
 }

+ 27 - 0
src/utils/downloadUtil.ts

@@ -0,0 +1,27 @@
+import {ElMessage} from "element-plus";
+
+export default {
+	// 对下载的流进行处理,直接从浏览器下载下来
+	resultDownload(res: any) {
+		if (res.data.type === 'application/json') {
+			// 错误以及无权限
+			const reader: any = new FileReader(res.data)
+			reader.readAsText(res.data)
+			reader.onload = () => {
+				const result = JSON.parse(reader.result)
+				ElMessage.error(result.msg)
+			}
+		} else {
+			const blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' })
+			const contentDisposition = res.headers['content-disposition']
+			const patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
+			const $link = document.createElement('a')
+			$link.href = URL.createObjectURL(blob)
+			$link.download = decodeURIComponent(patt.exec(contentDisposition)[1])
+			$link.click()
+			document.body.appendChild($link)
+			document.body.removeChild($link) // 下载完成移除元素
+			window.URL.revokeObjectURL($link.href) // 释放掉blob对象
+		}
+	}
+}

+ 35 - 3
src/views/manage/index/index.vue

@@ -10,7 +10,7 @@
         />
         <CusButton type="main" title="搜索" @click="onSearch"/>
         <CusButton type="main" title="重置" @click="onReset"/>
-        <CusButton title="导出" style="margin-left: auto"/>
+        <CusButton title="导出" style="margin-left: auto" @click="onExport"/>
         <CusButton type="main" title="新增" @click="onAdd"/>
       </CusForm>
     </div>
@@ -48,8 +48,13 @@
 
 <script setup lang="ts">
 import {getCurrentInstance, onMounted, reactive} from "vue";
-import {ElMessage} from "element-plus";
-import {sysIndexFindIndexByPage} from "@/api/modules/manage";
+import {ElMessage, ElMessageBox} from "element-plus";
+import {
+  sysIndexDeleteIndexById,
+  sysIndexExport,
+  sysIndexFieldDeleteById,
+  sysIndexFindIndexByPage
+} from "@/api/modules/manage";
 import DetailCom from "./detail.vue";
 import RelationCom from "./relation.vue";
 import TextCom from "./text.vue";
@@ -165,6 +170,33 @@ const onEdit = (row) => {
   state.detail.show = true
 }
 const onDel = (row) => {
+  ElMessageBox.confirm(`请确认是否删除${row.indexName}?`, "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  } as any).then(() => {
+    state.query.loading = true
+    sysIndexDeleteIndexById(row.id).then(res => {
+      if (res.code === 200) {
+        ElMessage.success('删除成功!')
+        state.query.loading = false
+        onSearch()
+      } else {
+        ElMessage.error(res.msg)
+      }
+    })
+  }).catch(() => {})
+}
+const onExport = () => {
+  state.query.loading = true
+  const params = {
+  }
+  if (proxy.$util.isValue(state.query.formReal.keyword)) {
+    params.keyword = state.query.formReal.keyword
+  }
+  sysIndexExport(proxy.$util.formatGetParam(params)).then(res => {
+
+  })
 }
 const initDictionary = () => {
   DictionaryStore.initDict('gx_method')

+ 52 - 17
src/views/web/archive/people/index.vue

@@ -19,7 +19,7 @@
           <el-image>
             <template #error>
               <div class="image-slot">
-                <img src="@/assets/images/web/archive-people_avatar.png" alt="暂无图片"/>
+                <img src="../../../assets/images/web/archive-people_avatar.png" alt="暂无图片"/>
               </div>
             </template>
           </el-image>
@@ -49,22 +49,50 @@
           <el-tab-pane label="人员证件信息" name="list"/>
           <el-tab-pane label="Task" name="fourth"/>
         </el-tabs>
-        <div class="people-list-block">
-          <div class="people-list-block-title">
-            <SvgIcon class="flag" name="flag_1" color="var(--cus-main-color)"/>人员证件信息
+        <template v-if="state.activeTab === 'index'">
+          <div class="people-list-block">
+            <div class="people-list-block-title">
+              <SvgIcon class="flag" name="flag_1" color="var(--cus-main-color)"/>关系图谱
+            </div>
+            <div class="people-list-block-page">
+              <RelationChart/>
+            </div>
           </div>
-          <div class="people-list-block-page">
-            <CusTable
-              :page-num="state.query.page.pageNum"
-              :page-size="state.query.page.pageSize"
-              :total="state.query.result.total"
-              :data="state.query.result.data"
-              :table-head="state.query.tableHead"
-              @handlePage="onPage"
-            >
-            </CusTable>
+          <div class="people-list-block">
+            <div class="people-list-block-title">
+              <SvgIcon class="flag" name="flag_1" color="var(--cus-main-color)"/>人员证件信息
+            </div>
+            <div class="people-list-block-page">
+              <CusTable
+                :page-num="state.query.page.pageNum"
+                :page-size="state.query.page.pageSize"
+                :total="state.query.result.total"
+                :data="state.query.result.data"
+                :table-head="state.query.tableHead"
+                @handlePage="onPage"
+              >
+              </CusTable>
+            </div>
           </div>
-        </div>
+        </template>
+        <template v-else>
+          <div class="people-list-block">
+            <div class="people-list-block-title">
+              <SvgIcon class="flag" name="flag_1" color="var(--cus-main-color)"/>人员证件信息
+            </div>
+            <div class="people-list-block-page">
+              <CusTable
+                :page-num="state.query.page.pageNum"
+                :page-size="state.query.page.pageSize"
+                :total="state.query.result.total"
+                :data="state.query.result.data"
+                :table-head="state.query.tableHead"
+                @handlePage="onPage"
+              >
+              </CusTable>
+            </div>
+          </div>
+        </template>
       </div>
     </div>
   </div>
@@ -72,10 +100,11 @@
 
 <script setup lang="ts">
 import {getCurrentInstance, reactive} from "vue";
+import RelationChart from "./relation-chart.vue";
 
 const {proxy} = getCurrentInstance()
 const state: any = reactive({
-  activeTab: 'list',
+  activeTab: 'index',
   query: {
     loading: false,
     page: {
@@ -234,11 +263,17 @@ const onPage = (pageNum, pageSize) => {}
       .people-list-block {
         flex: 1;
         background-color: #FFFFFF;
-        border-radius: 0px 8px 8px 8px;
         padding: 16px;
         display: flex;
         flex-direction: column;
         gap: 15px;
+        &:first-child {
+          border-top-right-radius: 8px;
+        }
+        &:last-child {
+          border-bottom-left-radius: 8px;
+          border-bottom-right-radius: 8px;
+        }
         .people-list-block-title {
           display: flex;
           align-items: center;

+ 152 - 0
src/views/web/archive/relation-chart.vue

@@ -0,0 +1,152 @@
+<template>
+  <div class="relation-chart">
+    <div class="chart" id="container"/>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {getCurrentInstance, onMounted, reactive} from "vue";
+import {Graph} from "@antv/g6";
+import {randomNum} from "@/utils/util";
+
+const {proxy} = getCurrentInstance()
+const state: any = reactive({})
+const setNodes = (data) => {
+  data.nodes.forEach(v => {
+    v.style = {
+      badge: true,
+      badges:[{text: String(v.num), placement: 'top-right', offsetX: -10, offsetY: 10}],
+      // icon: false,
+      iconSrc: 'https://gw.alipayobjects.com/zos/basement_prod/012bcf4f-423b-4922-8c24-32a89f8c41ce.svg',
+    }
+  })
+}
+const setEdges = (data) => {
+  data.edges.forEach(v => {
+    v.style = {
+      labelText: '关系描述'
+    }
+  })
+}
+const initChart = () => {
+  const data = {
+    nodes: [
+      {id: '1', num: 100, ss: 'asdasd'},
+      {id: '2', num: 90, ss: 'asdasd'},
+      {id: '3', num: 80, ss: 'asdasd'},
+      {id: '4', num: 90, ss: 'asdasd'},
+      {id: '5', num: 80, ss: 'asdasd'},
+    ],
+    edges: [
+      {source: '1', target: '3'},
+      {source: '2', target: '4'},
+      {source: '1', target: '5'},
+      {source: '2', target: '3'},
+      {source: '1', target: '4'},
+    ]
+  }
+  setNodes(data)
+  setEdges(data)
+  const mainColor = getComputedStyle(document.documentElement).getPropertyValue('--cus-main-color')
+  const mainColorHex2 = getComputedStyle(document.documentElement).getPropertyValue('--cus-main-color-hex-2')
+  const graph = new Graph({
+    container: 'container',
+    data,
+    // autoResize: true,
+    autoFit: 'view',
+    behaviors: ['drag-canvas', 'drag-element', 'zoom-canvas', {
+      type: 'click-select',
+      degree: 1,
+      enable: (event) => event.targetType === "node",
+    }],
+    layout: {
+      type: 'radial',
+      focusNode: '3',
+      linkDistance: 200,
+      preventOverlap: true,
+      unitRadius: 200,
+      maxPreventOverlapIteration: 100,
+      strictRadial: false
+    },
+    node: {
+      style: {
+        // circle
+        size: (v) => v.num,
+        fill: 'transparent',
+        lineWidth: 2,
+        stroke: mainColor,
+        // label
+        label: true,
+        labelPlacement: 'bottom',
+        labelText: (v) => '节点_' + v.id,
+        labelFill: '#ffffff',
+        labelPadding: [4, 10],
+        labelBackground: true,
+        labelBackgroundFill: mainColor,
+        labelBackgroundRadius: 2,
+        labelFontSize: 14,
+        labelOffsetY: 6,
+        // badge
+        badgeFontSize: 12,
+        badgePadding: [2, 4, 0, 4],
+        badgeBackgroundFill: mainColor,
+        halo: false,
+        haloLineDash: 0,
+        haloLineWidth: 12,
+        haloStrokeOpacity: 0.25,
+      },
+      state: {
+        selected: {
+          lineWidth: 4,
+          stroke: mainColor,
+          labelFontSize: 14,
+          labelFontWeight: 'normal',
+        }
+      }
+    },
+    edge: {
+      style: {
+        endArrow: true,
+        endArrowType: 'triangle',
+        endArrowSize: 8,
+        stroke: mainColor,
+        labelAutoRotate: false,
+        labelFill: '#ffffff',
+        labelPadding: [2, 4, 0, 4],
+        labelBackground: true,
+        labelBackgroundFill: mainColor,
+        labelBackgroundRadius: 20,
+        labelFontSize: 12,
+        halo: true,
+        haloLineDash: 4,
+        haloLineWidth: 2,
+      },
+      state: {
+        selected: {
+          labelFontSize: 12,
+          labelFontWeight: 'normal'
+        }
+      }
+    },
+  } as any);
+  graph.render();
+  graph.on('node:click', (e) => {
+    console.log(e)
+  })
+}
+onMounted(() => {
+  initChart()
+})
+</script>
+
+<style lang="scss" scoped>
+.relation-chart {
+  width: 100%;
+  height: 100%;
+  background-color: rgba(var(--cus-main-color-rgb), 0.1);
+  .chart {
+    width: 100%;
+    height: 100%;
+  }
+}
+</style>

+ 411 - 2
yarn.lock

@@ -2,6 +2,232 @@
 # yarn lockfile v1
 
 
+"@antv/component@^2.0.3":
+  version "2.0.4"
+  resolved "https://registry.npmmirror.com/@antv/component/-/component-2.0.4.tgz#3e8267158882378020d892afca554afc45383d91"
+  integrity sha512-1bqDP98gCZhgAK34SGjQk2LI0BoY+VPA3iO74hM+bjSug33V99baoB29ahO+E/upf/o0aiOhkYN/lM3zWKeCxg==
+  dependencies:
+    "@antv/g" "^6.0.5"
+    "@antv/scale" "^0.4.3"
+    "@antv/util" "^3.3.5"
+    svg-path-parser "^1.1.0"
+
+"@antv/event-emitter@^0.1.3":
+  version "0.1.3"
+  resolved "https://registry.npmmirror.com/@antv/event-emitter/-/event-emitter-0.1.3.tgz#3e06323b9dcd55a3241ddc7c5458cfabd2095164"
+  integrity sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==
+
+"@antv/g-camera-api@2.0.12":
+  version "2.0.12"
+  resolved "https://registry.npmmirror.com/@antv/g-camera-api/-/g-camera-api-2.0.12.tgz#7226f35e27bca69cb842a0dc3ec6936640d27526"
+  integrity sha512-zPw4BSMWLTmZk9o/vKGllsilb6G/IaY1b5emc1g4xkYlw1xnI+0seiFh8R5JklM05ONbzMd6W/Mprd0OBgQcYw==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+    "@antv/util" "^3.3.5"
+    gl-matrix "^3.4.3"
+    tslib "^2.5.3"
+
+"@antv/g-canvas@^2.0.10":
+  version "2.0.12"
+  resolved "https://registry.npmmirror.com/@antv/g-canvas/-/g-canvas-2.0.12.tgz#ba061b9275850a93dde713917af5ee1135a914fd"
+  integrity sha512-VgdINi7KUqQePS7+iVqoKtvBg3+zbD+8Vmw2s+e6HdhM3fWBlbrIXIyZ+En+mVHYhLw6buPpW8wAsfNCija0bA==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+    "@antv/g-plugin-canvas-path-generator" "2.0.9"
+    "@antv/g-plugin-canvas-picker" "2.0.10"
+    "@antv/g-plugin-canvas-renderer" "2.0.10"
+    "@antv/g-plugin-dom-interaction" "2.0.9"
+    "@antv/g-plugin-html-renderer" "2.0.11"
+    "@antv/g-plugin-image-loader" "2.0.9"
+    "@antv/util" "^3.3.5"
+    tslib "^2.5.3"
+
+"@antv/g-dom-mutation-observer-api@2.0.9":
+  version "2.0.9"
+  resolved "https://registry.npmmirror.com/@antv/g-dom-mutation-observer-api/-/g-dom-mutation-observer-api-2.0.9.tgz#395ff93c94a7d676d135c5127dd74c03e6f839c8"
+  integrity sha512-rHJ8J02NEP68Tl0yZD5BiaCSOorsHzT5MCLP8Lb72aC42pgPM7iJcyibmYam1LtLaskd+a8i1Bmks7jkJWavlA==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+
+"@antv/g-lite@2.0.9":
+  version "2.0.9"
+  resolved "https://registry.npmmirror.com/@antv/g-lite/-/g-lite-2.0.9.tgz#c785e0884a26da12c5dbceda2e315bd577f8f355"
+  integrity sha512-o97QIVw15Y/yq2/j9E5/qf81p4JW+Oe00zzvcQSLtNIc7D+NaRn2EN8/OUZAn07Ui++j88qsYA0TKip3b3z47w==
+  dependencies:
+    "@antv/g-math" "3.0.0"
+    "@antv/util" "^3.3.5"
+    d3-color "^3.1.0"
+    eventemitter3 "^5.0.1"
+    gl-matrix "^3.4.3"
+    rbush "^3.0.1"
+    tslib "^2.5.3"
+
+"@antv/g-math@3.0.0":
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/@antv/g-math/-/g-math-3.0.0.tgz#834d993391546e39ae5a30452572fdc49a7c57ec"
+  integrity sha512-AkmiNIEL1vgqTPeGY2wtsMdBBqKFwF7SKSgs+D1iOS/rqYMsXdhp/HvtuQ5tx/HdawE/ZzTiicIYopc520ADZw==
+  dependencies:
+    "@antv/util" "^3.3.5"
+    gl-matrix "^3.4.3"
+    tslib "^2.5.3"
+
+"@antv/g-plugin-canvas-path-generator@2.0.9":
+  version "2.0.9"
+  resolved "https://registry.npmmirror.com/@antv/g-plugin-canvas-path-generator/-/g-plugin-canvas-path-generator-2.0.9.tgz#b3a8dce74d814800502853ed1234bc30620310f3"
+  integrity sha512-9T6WT9ruO9Ll/alb9FNC3CS+NjEkw/z+/B34RdGadriqIL6kKc2dDJI/PVzbPZxOkpk90FWPe2u0tyIT/w9moQ==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+    "@antv/g-math" "3.0.0"
+    "@antv/util" "^3.3.5"
+    tslib "^2.5.3"
+
+"@antv/g-plugin-canvas-picker@2.0.10":
+  version "2.0.10"
+  resolved "https://registry.npmmirror.com/@antv/g-plugin-canvas-picker/-/g-plugin-canvas-picker-2.0.10.tgz#f6ef5c9ec30d36ebe52869857636fb552df26f35"
+  integrity sha512-w4fudKXRyfMgdPqcb8NMjJnuxCBCBd/wsE3t09+oqpuX7Sflx7ukgmqFJ4BFcR9Kyde1UOXkJ6Fp4hUFWPHtvw==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+    "@antv/g-math" "3.0.0"
+    "@antv/g-plugin-canvas-path-generator" "2.0.9"
+    "@antv/g-plugin-canvas-renderer" "2.0.10"
+    "@antv/util" "^3.3.5"
+    gl-matrix "^3.4.3"
+    tslib "^2.5.3"
+
+"@antv/g-plugin-canvas-renderer@2.0.10":
+  version "2.0.10"
+  resolved "https://registry.npmmirror.com/@antv/g-plugin-canvas-renderer/-/g-plugin-canvas-renderer-2.0.10.tgz#ee2798264f79427f29670b50509a973a0474d3f3"
+  integrity sha512-emeX1A76RTSe6D215+Uz9WHf2HRoXwBNvFFUf8gPvOxx9Avxc3thrEKMXrrCqnrKc4zuTDWpprmkFQfxMFmuYg==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+    "@antv/g-math" "3.0.0"
+    "@antv/g-plugin-canvas-path-generator" "2.0.9"
+    "@antv/g-plugin-image-loader" "2.0.9"
+    "@antv/util" "^3.3.5"
+    gl-matrix "^3.4.3"
+    tslib "^2.5.3"
+
+"@antv/g-plugin-dom-interaction@2.0.9":
+  version "2.0.9"
+  resolved "https://registry.npmmirror.com/@antv/g-plugin-dom-interaction/-/g-plugin-dom-interaction-2.0.9.tgz#c38a430a44d52199e526497d0048b6af9af26cec"
+  integrity sha512-lcPBFGoLbPUPqXvrVo17rq3OwwvI7kw1dNf5ThnG/juehBEAXKJsEGuusixJggPJLf/y1UV3mq6IW2HiKvAvAg==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+    tslib "^2.5.3"
+
+"@antv/g-plugin-dragndrop@^2.0.8":
+  version "2.0.9"
+  resolved "https://registry.npmmirror.com/@antv/g-plugin-dragndrop/-/g-plugin-dragndrop-2.0.9.tgz#b9f99b6d112644101d2759a93ed3817190804ba5"
+  integrity sha512-Hhmk0PAqIOsNzAUv015/129o/R34S/7s41xEkx8/d9ZdziJSLL01c3wHhwG9sGnTRnW8CHHChAh0tT+ygpmS6g==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+    "@antv/util" "^3.3.5"
+    tslib "^2.5.3"
+
+"@antv/g-plugin-html-renderer@2.0.11":
+  version "2.0.11"
+  resolved "https://registry.npmmirror.com/@antv/g-plugin-html-renderer/-/g-plugin-html-renderer-2.0.11.tgz#94f23f6115c1e70c732d6e04edaca28f75878e17"
+  integrity sha512-rxKJZJUMve/qIyRfJb6RUaYw1pyXpDMTpHlqbEKL7YDX89IkOPts6vp6d35R4s8Hsb3U1ZB3IHX1g03ZNazwEw==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+    "@antv/util" "^3.3.5"
+    gl-matrix "^3.4.3"
+    tslib "^2.5.3"
+
+"@antv/g-plugin-image-loader@2.0.9":
+  version "2.0.9"
+  resolved "https://registry.npmmirror.com/@antv/g-plugin-image-loader/-/g-plugin-image-loader-2.0.9.tgz#0a0f21342028043c5d3e626966f92359552f2006"
+  integrity sha512-QYPlgK+/9eZQ36T5w3t0Rx6oYQeLOTSsEubmlVmRViwtBDziRxKQxHTmS57hNO7/qqr0M/OwWXh0ZUQm4itf2g==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+    "@antv/util" "^3.3.5"
+    gl-matrix "^3.4.3"
+    tslib "^2.5.3"
+
+"@antv/g-web-animations-api@2.0.10":
+  version "2.0.10"
+  resolved "https://registry.npmmirror.com/@antv/g-web-animations-api/-/g-web-animations-api-2.0.10.tgz#79f36ef1aed0ef73d23a477f2d73662eba2dfaf9"
+  integrity sha512-/jRNE6SFAyCCd71HDEbByJsOlNPURvEulc6RpShcko/Wo97zwHDP8FgjvW5i44IXsi9upmiYmjKCVAg8LipeFw==
+  dependencies:
+    "@antv/g-lite" "2.0.9"
+    "@antv/util" "^3.3.5"
+    tslib "^2.5.3"
+
+"@antv/g6@^5.0.19":
+  version "5.0.19"
+  resolved "https://registry.npmmirror.com/@antv/g6/-/g6-5.0.19.tgz#50e588b14b305eb51c8ed01015729d98dbdc2f0e"
+  integrity sha512-5MPVXPEMjLLzCgnaWzjpFtePwlK4kAicnnUh2KbvOz+plGLv+GQLR2fgxbVrNCCruw+YAgyBl77WDp/pzSeYRA==
+  dependencies:
+    "@antv/component" "^2.0.3"
+    "@antv/event-emitter" "^0.1.3"
+    "@antv/g" "^6.0.12"
+    "@antv/g-canvas" "^2.0.10"
+    "@antv/g-plugin-dragndrop" "^2.0.8"
+    "@antv/graphlib" "^2.0.3"
+    "@antv/hierarchy" "^0.6.12"
+    "@antv/layout" "^1.2.14-beta.6"
+    "@antv/util" "^3.3.7"
+    bubblesets-js "^2.3.3"
+    hull.js "^1.0.6"
+
+"@antv/g@^6.0.12", "@antv/g@^6.0.5":
+  version "6.0.13"
+  resolved "https://registry.npmmirror.com/@antv/g/-/g-6.0.13.tgz#5776b54ec1b0cd488a2d4a4f4b4a7bbc4deada53"
+  integrity sha512-wW5mZOs5sqsXJ0RHfwrLkskrLdJu+nfQE7p8RfwTHy48KVyO33Lm6hyu1r8Wx/9yeSxlZQE6gHmjjM9U/1V8lA==
+  dependencies:
+    "@antv/g-camera-api" "2.0.12"
+    "@antv/g-dom-mutation-observer-api" "2.0.9"
+    "@antv/g-lite" "2.0.9"
+    "@antv/g-web-animations-api" "2.0.10"
+
+"@antv/graphlib@^2.0.0", "@antv/graphlib@^2.0.3":
+  version "2.0.3"
+  resolved "https://registry.npmmirror.com/@antv/graphlib/-/graphlib-2.0.3.tgz#493e05872851c897e2133b0968cf5c6f4f6c022e"
+  integrity sha512-EtQR+DIfsYy28tumTnH560v7yIzXZq0nSgFBZh76mMiV1oHEN1L4p6JKu7IMtILH14mDqzmYYYFetYoAODoQUw==
+  dependencies:
+    "@antv/event-emitter" "^0.1.3"
+
+"@antv/hierarchy@^0.6.12":
+  version "0.6.13"
+  resolved "https://registry.npmmirror.com/@antv/hierarchy/-/hierarchy-0.6.13.tgz#7565f5f0061cb1563d21162fb74aaa25c48cbbcc"
+  integrity sha512-gBC0bYXyBVrprWyR0hqINNYfeovxdIcKBAR7x6DfNyN1Gc3hGaSo0wif6Lrv/aWVHz17FeQlVsf8rgEx343FHg==
+
+"@antv/layout@^1.2.14-beta.6":
+  version "1.2.14-beta.6"
+  resolved "https://registry.npmmirror.com/@antv/layout/-/layout-1.2.14-beta.6.tgz#95f2b0a7a864eb339d541d1fc746e8471fbfd7a3"
+  integrity sha512-evrDECF20yebz46Vqcd9tEXCrELN/61cSCe/xD3XFBrRaOUVVDatKgr9JNHkMVHJcL1sXTa9xfGaWh4WUj6/yg==
+  dependencies:
+    "@antv/event-emitter" "^0.1.3"
+    "@antv/graphlib" "^2.0.0"
+    "@antv/util" "^3.3.2"
+    "@naoak/workerize-transferable" "^0.1.0"
+    comlink "^4.4.1"
+    d3-force "^3.0.0"
+    d3-force-3d "^3.0.5"
+    d3-octree "^1.0.2"
+    d3-quadtree "^3.0.1"
+    dagre "^0.8.5"
+    ml-matrix "^6.10.4"
+    tslib "^2.5.0"
+
+"@antv/scale@^0.4.3":
+  version "0.4.16"
+  resolved "https://registry.npmmirror.com/@antv/scale/-/scale-0.4.16.tgz#60557470668ccfe5217e482a01f05c0cbb706b62"
+  integrity sha512-5wg/zB5kXHxpTV5OYwJD3ja6R8yTiqIOkjOhmpEJiowkzRlbEC/BOyMvNUq5fqFIHnMCE9woO7+c3zxEQCKPjw==
+  dependencies:
+    "@antv/util" "^3.3.7"
+    color-string "^1.5.5"
+    fecha "^4.2.1"
+
+"@antv/util@^3.3.2", "@antv/util@^3.3.5", "@antv/util@^3.3.7":
+  version "3.3.8"
+  resolved "https://registry.npmmirror.com/@antv/util/-/util-3.3.8.tgz#f16bd3cfb033f960ed3f1c12ab2ea6b1f8c695d0"
+  integrity sha512-RO2vmp84adfZn5HVXuNtHr35PRWthw4oCUv0hn9DmEWwOJSeU6NtDCEg9KvU8sH2bJaS3fe/cppNSVy2L8tOaw==
+  dependencies:
+    fast-deep-equal "^3.1.3"
+    gl-matrix "^3.3.0"
+    tslib "^2.3.1"
+
 "@babel/helper-string-parser@^7.24.8":
   version "7.24.8"
   resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d"
@@ -178,6 +404,11 @@
   resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
   integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
 
+"@naoak/workerize-transferable@^0.1.0":
+  version "0.1.0"
+  resolved "https://registry.npmmirror.com/@naoak/workerize-transferable/-/workerize-transferable-0.1.0.tgz#864cc8241b977bffd8661c0be1441da9b4bfb633"
+  integrity sha512-fDLfuP71IPNP5+zSfxFb52OHgtjZvauRJWbVnpzQ7G7BjcbLjTny0OW1d3ZO806XKpLWNKmeeW3MhE0sy8iwYQ==
+
 "@nodelib/fs.scandir@2.1.5":
   version "2.1.5"
   resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -749,6 +980,11 @@ braces@^3.0.3, braces@~3.0.2:
   dependencies:
     fill-range "^7.1.1"
 
+bubblesets-js@^2.3.3:
+  version "2.3.3"
+  resolved "https://registry.npmmirror.com/bubblesets-js/-/bubblesets-js-2.3.3.tgz#e94e05cdc10bf9508084876d71b9339d29c57ffb"
+  integrity sha512-7++8/mcahpmJyIGY+YSPG5o2FnTIeNgVx17eoFyEjzcTblpcMd8SSUtt67MlKYlj8mIh9/aYpY+1GvPoy6pViQ==
+
 cache-base@^1.0.1:
   version "1.0.1"
   resolved "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@@ -848,11 +1084,19 @@ color-convert@^2.0.1:
   dependencies:
     color-name "~1.1.4"
 
-color-name@~1.1.4:
+color-name@^1.0.0, color-name@~1.1.4:
   version "1.1.4"
   resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
   integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
 
+color-string@^1.5.5:
+  version "1.9.1"
+  resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
+  integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
+  dependencies:
+    color-name "^1.0.0"
+    simple-swizzle "^0.2.2"
+
 combined-stream@^1.0.8:
   version "1.0.8"
   resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -860,6 +1104,11 @@ combined-stream@^1.0.8:
   dependencies:
     delayed-stream "~1.0.0"
 
+comlink@^4.4.1:
+  version "4.4.1"
+  resolved "https://registry.npmmirror.com/comlink/-/comlink-4.4.1.tgz#e568b8e86410b809e8600eb2cf40c189371ef981"
+  integrity sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==
+
 commander@^7.2.0:
   version "7.2.0"
   resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
@@ -924,6 +1173,64 @@ csstype@^3.1.3:
   resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
   integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
 
+d3-binarytree@1:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/d3-binarytree/-/d3-binarytree-1.0.2.tgz#ed43ebc13c70fbabfdd62df17480bc5a425753cc"
+  integrity sha512-cElUNH+sHu95L04m92pG73t2MEJXKu+GeKUN1TJkFsu93E5W8E9Sc3kHEGJKgenGvj19m6upSn2EunvMgMD2Yw==
+
+d3-color@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2"
+  integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==
+
+"d3-dispatch@1 - 3":
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e"
+  integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==
+
+d3-force-3d@^3.0.5:
+  version "3.0.5"
+  resolved "https://registry.npmmirror.com/d3-force-3d/-/d3-force-3d-3.0.5.tgz#9c8931b49acc3554f9110e128bc580cd3ab830f2"
+  integrity sha512-tdwhAhoTYZY/a6eo9nR7HP3xSW/C6XvJTbeRpR92nlPzH6OiE+4MliN9feuSFd0tPtEUo+191qOhCTWx3NYifg==
+  dependencies:
+    d3-binarytree "1"
+    d3-dispatch "1 - 3"
+    d3-octree "1"
+    d3-quadtree "1 - 3"
+    d3-timer "1 - 3"
+
+d3-force@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmmirror.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4"
+  integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==
+  dependencies:
+    d3-dispatch "1 - 3"
+    d3-quadtree "1 - 3"
+    d3-timer "1 - 3"
+
+d3-octree@1, d3-octree@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmmirror.com/d3-octree/-/d3-octree-1.0.2.tgz#b39026b82701e45c7163e34ee056dc492035a017"
+  integrity sha512-Qxg4oirJrNXauiuC94uKMbgxwnhdda9xRLl9ihq45srlJ4Ga3CSgqGcAL8iW7N5CIv4Oz8x3E734ulxyvHPvwA==
+
+"d3-quadtree@1 - 3", d3-quadtree@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f"
+  integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==
+
+"d3-timer@1 - 3":
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0"
+  integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==
+
+dagre@^0.8.5:
+  version "0.8.5"
+  resolved "https://registry.npmmirror.com/dagre/-/dagre-0.8.5.tgz#ba30b0055dac12b6c1fcc247817442777d06afee"
+  integrity sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==
+  dependencies:
+    graphlib "^2.1.8"
+    lodash "^4.17.15"
+
 data-view-buffer@^1.0.1:
   version "1.0.1"
   resolved "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2"
@@ -1282,6 +1589,11 @@ etag@^1.8.1:
   resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
   integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
 
+eventemitter3@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
+  integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
+
 expand-brackets@^2.1.4:
   version "2.1.4"
   resolved "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
@@ -1324,6 +1636,11 @@ extglob@^2.0.2:
     snapdragon "^0.8.1"
     to-regex "^3.0.1"
 
+fast-deep-equal@^3.1.3:
+  version "3.1.3"
+  resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+  integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
 fast-glob@^3.3.2:
   version "3.3.2"
   resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
@@ -1342,6 +1659,11 @@ fastq@^1.6.0:
   dependencies:
     reusify "^1.0.4"
 
+fecha@^4.2.1:
+  version "4.2.3"
+  resolved "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd"
+  integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
+
 fill-range@^4.0.0:
   version "4.0.0"
   resolved "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
@@ -1456,6 +1778,11 @@ get-value@^2.0.3, get-value@^2.0.6:
   resolved "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
   integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
 
+gl-matrix@^3.3.0, gl-matrix@^3.4.3:
+  version "3.4.3"
+  resolved "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9"
+  integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==
+
 glob-parent@^5.1.2, glob-parent@~5.1.2:
   version "5.1.2"
   resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
@@ -1483,6 +1810,13 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
   resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
   integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
 
+graphlib@^2.1.8:
+  version "2.1.8"
+  resolved "https://registry.npmmirror.com/graphlib/-/graphlib-2.1.8.tgz#5761d414737870084c92ec7b5dbcb0592c9d35da"
+  integrity sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==
+  dependencies:
+    lodash "^4.17.15"
+
 has-ansi@^2.0.0:
   version "2.0.0"
   resolved "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@@ -1584,6 +1918,11 @@ htmlparser2@^3.8.3:
     inherits "^2.0.1"
     readable-stream "^3.1.1"
 
+hull.js@^1.0.6:
+  version "1.0.6"
+  resolved "https://registry.npmmirror.com/hull.js/-/hull.js-1.0.6.tgz#75f013e8171eb9a871b4a94887e89eb555461d0e"
+  integrity sha512-TC7e9sHYOaCVms0sn2hN7buxnaGfcl9h5EPVoVX9DTPoMpqQiS9bf3tmGDgiNaMVHBD91RAvWjCxrJ5Jx8BI5A==
+
 image-size@^0.5.1:
   version "0.5.5"
   resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
@@ -1615,6 +1954,11 @@ is-accessor-descriptor@^1.0.1:
   dependencies:
     hasown "^2.0.0"
 
+is-any-array@^2.0.0, is-any-array@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmmirror.com/is-any-array/-/is-any-array-2.0.1.tgz#9233242a9c098220290aa2ec28f82ca7fa79899e"
+  integrity sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==
+
 is-array-buffer@^3.0.4:
   version "3.0.4"
   resolved "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
@@ -1623,6 +1967,11 @@ is-array-buffer@^3.0.4:
     call-bind "^1.0.2"
     get-intrinsic "^1.2.1"
 
+is-arrayish@^0.3.1:
+  version "0.3.2"
+  resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+  integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
 is-bigint@^1.0.1:
   version "1.0.4"
   resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
@@ -1903,7 +2252,7 @@ lodash-unified@^1.0.2:
   resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894"
   integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==
 
-lodash@^4.17.21:
+lodash@^4.17.15, lodash@^4.17.21:
   version "4.17.21"
   resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
   integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -2008,6 +2357,37 @@ mixin-deep@^1.2.0:
     for-in "^1.0.2"
     is-extendable "^1.0.1"
 
+ml-array-max@^1.2.4:
+  version "1.2.4"
+  resolved "https://registry.npmmirror.com/ml-array-max/-/ml-array-max-1.2.4.tgz#2373e2b7e51c8807e456cc0ef364c5863713623b"
+  integrity sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==
+  dependencies:
+    is-any-array "^2.0.0"
+
+ml-array-min@^1.2.3:
+  version "1.2.3"
+  resolved "https://registry.npmmirror.com/ml-array-min/-/ml-array-min-1.2.3.tgz#662f027c400105816b849cc3cd786915d0801495"
+  integrity sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==
+  dependencies:
+    is-any-array "^2.0.0"
+
+ml-array-rescale@^1.3.7:
+  version "1.3.7"
+  resolved "https://registry.npmmirror.com/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz#c4d129320d113a732e62dd963dc1695bba9a5340"
+  integrity sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==
+  dependencies:
+    is-any-array "^2.0.0"
+    ml-array-max "^1.2.4"
+    ml-array-min "^1.2.3"
+
+ml-matrix@^6.10.4:
+  version "6.11.1"
+  resolved "https://registry.npmmirror.com/ml-matrix/-/ml-matrix-6.11.1.tgz#fff3e1e7c3ad93dc996fec5d53d9dbc8e0e43473"
+  integrity sha512-Fvp1xF1O07tt6Ux9NcnEQTei5UlqbRpvvaFZGs7l3Ij+nOaEDcmbSVtxwNa8V4IfdyFI1NLNUteroMJ1S6vcEg==
+  dependencies:
+    is-any-array "^2.0.1"
+    ml-array-rescale "^1.3.7"
+
 ms@2.0.0:
   version "2.0.0"
   resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -2250,6 +2630,18 @@ queue-microtask@^1.2.2:
   resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
   integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
 
+quickselect@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
+  integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==
+
+rbush@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf"
+  integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==
+  dependencies:
+    quickselect "^2.0.0"
+
 readable-stream@^3.1.1:
   version "3.6.2"
   resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
@@ -2443,6 +2835,13 @@ side-channel@^1.0.4:
     get-intrinsic "^1.2.4"
     object-inspect "^1.13.1"
 
+simple-swizzle@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+  integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
+  dependencies:
+    is-arrayish "^0.3.1"
+
 snapdragon-node@^2.0.1:
   version "2.1.1"
   resolved "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@@ -2630,6 +3029,11 @@ svg-baker@1.7.0:
     query-string "^4.3.2"
     traverse "^0.6.6"
 
+svg-path-parser@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmmirror.com/svg-path-parser/-/svg-path-parser-1.1.0.tgz#e16b4b39df0d2b0d39e8347db79fdda1453a6046"
+  integrity sha512-jGCUqcQyXpfe38R7RFfhrMyfXcBmpMNJI/B+4CE9/Unkh98UporAc461GTthv+TVDuZXsBx7/WiwJb1Oh4tt4A==
+
 svgo@^2.8.0:
   version "2.8.0"
   resolved "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
@@ -2689,6 +3093,11 @@ traverse@^0.6.6:
     typedarray.prototype.slice "^1.0.3"
     which-typed-array "^1.1.15"
 
+tslib@^2.3.1, tslib@^2.5.0, tslib@^2.5.3:
+  version "2.7.0"
+  resolved "https://registry.npmmirror.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
+  integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
+
 typed-array-buffer@^1.0.2:
   version "1.0.2"
   resolved "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3"