Procházet zdrojové kódy

[Fix 0000]各个页面名称标题修改

bobo04052021@163.com před 6 dny
rodič
revize
903fc66e05

+ 411 - 0
pnpm-lock.yaml

@@ -53,6 +53,9 @@ importers:
       '@vueuse/shared':
         specifier: ^10.4.1
         version: 10.11.1(vue@3.5.24(typescript@4.9.5))
+      '@x-viewer/core':
+        specifier: ^0.21.23
+        version: 0.21.23
       '@zxcvbn-ts/core':
         specifier: ^3.0.3
         version: 3.0.4
@@ -519,6 +522,20 @@ importers:
 
 packages:
 
+  2d-polygon-area@1.0.0:
+    resolution: {integrity: sha512-CAjFfFDX+a7qvr6qA8Cvn9HYOZM/nktEDQzSNZRzvH0rd9L/JHp+xXc1iAppVkUIqz4+bqRDArk8coVdirtNHA==}
+
+  2d-polygon-boolean@1.0.1:
+    resolution: {integrity: sha512-MCOjlgnRtBq3uOf5IO1aOW9izttFHjQXETYjEQIa3bbdwtdBjc0eiAOuxPfve6gHOr6JrcRm+s/+uyCmkYN5gQ==}
+
+  2d-polygon-self-intersections@1.3.1:
+    resolution: {integrity: sha512-5zBVP8+aN8T88FyZ4SD9WR/5lAASlLKSS6NCZYQR7aHwwHjXtBsF0Gpcq2a3S+jpMLxa+ct1iYWxGNo2kLcz+w==}
+
+  3d-tiles-renderer@0.3.32:
+    resolution: {integrity: sha512-QM8j7UDH22rS6ibyyz1g5vJl9d3FSBMPXU8oNOl8OHVkQKeQ8eFWkrtJ3dJ7mD8GBxj8IfZWPzXmXi0MmzUHew==}
+    peerDependencies:
+      three: '>=0.123.0'
+
   '@aesoper/normal-utils@0.1.5':
     resolution: {integrity: sha512-LFF/6y6h5mfwhnJaWqqxuC8zzDaHCG62kMRkd8xhDtq62TQj9dM17A9DhE87W7DhiARJsHLgcina/9P4eNCN1w==}
 
@@ -1820,6 +1837,9 @@ packages:
   '@logicflow/extension@1.2.28':
     resolution: {integrity: sha512-OHaO57SxjNwDDYVAqrJp/fq9g0NDc4elHmZnWGIqLbkbOMJhiU9IUT2WWK6DctUoYzxhGzTR4Ai5S/TFZ9JjGA==}
 
+  '@mlightcad/libredwg-web@0.7.2':
+    resolution: {integrity: sha512-MPbVtnuUokzvCS4pdibiNw7PLdnSJo9R1pZcBnzRCyzWQqMHuZOxLVwtsV9aGk1SBmJ2186Hbu3Umt2B7hFS4Q==}
+
   '@nodelib/fs.scandir@2.1.5':
     resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
     engines: {node: '>= 8'}
@@ -1849,6 +1869,33 @@ packages:
   '@popperjs/core@2.11.8':
     resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
 
+  '@protobufjs/aspromise@1.1.2':
+    resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
+
+  '@protobufjs/base64@1.1.2':
+    resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
+
+  '@protobufjs/codegen@2.0.5':
+    resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==}
+
+  '@protobufjs/eventemitter@1.1.1':
+    resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==}
+
+  '@protobufjs/fetch@1.1.1':
+    resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==}
+
+  '@protobufjs/float@1.0.2':
+    resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
+
+  '@protobufjs/path@1.1.2':
+    resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
+
+  '@protobufjs/pool@1.1.0':
+    resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
+
+  '@protobufjs/utf8@1.1.1':
+    resolution: {integrity: sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==}
+
   '@purge-icons/core@0.9.1':
     resolution: {integrity: sha512-sx8/a30MbbqQVEqhuMPE1wJpdVRRbEmwEPZpFzVkcDixzX4p+R2A0WVxqkb0xfHUBAVQwrSE2SeAyniIQLqbLw==}
 
@@ -2478,6 +2525,9 @@ packages:
       vue:
         optional: true
 
+  '@x-viewer/core@0.21.23':
+    resolution: {integrity: sha512-I6TILvUHmGzxOFi5P2HMZtUaiF1rnXgoai+2w7nw2dMI0jnzvA432ItEkWJCXJ4PUUhoFFoQ1XVRY+SR6jDynQ==}
+
   '@xmldom/xmldom@0.8.11':
     resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==}
     engines: {node: '>=10.0.0'}
@@ -2810,6 +2860,9 @@ packages:
     resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
     engines: {node: '>=8'}
 
+  binary-search-bounds@2.0.5:
+    resolution: {integrity: sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==}
+
   bl@4.1.0:
     resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
 
@@ -2911,6 +2964,11 @@ packages:
     resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
     engines: {node: '>=10'}
 
+  camera-controls@1.38.2:
+    resolution: {integrity: sha512-EfzbovxLssyWpJVG9uKcazSDDIEcd1hUsPhPF/OWWnICsKY9WbLY/2S4UPW73HHbvnVeR/Z9wsWaQKtANy/2Yg==}
+    peerDependencies:
+      three: '>=0.126.1'
+
   caniuse-lite@1.0.30001755:
     resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==}
 
@@ -3016,6 +3074,9 @@ packages:
   clipboard@2.0.11:
     resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==}
 
+  clipper-lib@6.4.2:
+    resolution: {integrity: sha512-knglhjQX5ihNj/XCIs6zCHrTemdvHY3LPZP9XB2nq2/3igyYMFueFXtfp84baJvEE+f8pO1ZS4UVeEgmLnAprQ==}
+
   cliui@6.0.0:
     resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
 
@@ -3127,6 +3188,9 @@ packages:
     engines: {node: '>=0.10.0'}
     deprecated: 'WARNING: This package has been renamed to typed-array-concat.'
 
+  concaveman@1.2.1:
+    resolution: {integrity: sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==}
+
   confbox@0.1.8:
     resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
 
@@ -3802,6 +3866,9 @@ packages:
   duplexer@0.1.2:
     resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
 
+  earcut@2.2.4:
+    resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==}
+
   eastasianwidth@0.2.0:
     resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
 
@@ -3843,6 +3910,9 @@ packages:
   element-resize-detector@1.2.4:
     resolution: {integrity: sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==}
 
+  emitter-component@1.1.2:
+    resolution: {integrity: sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==}
+
   emittery@0.13.1:
     resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
     engines: {node: '>=12'}
@@ -4211,6 +4281,9 @@ packages:
   eventemitter3@5.0.1:
     resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
 
+  exact-segment-intersect@2.0.0:
+    resolution: {integrity: sha512-Qq3Rt+PJkWnqo26QcNk5VKmdqYEgvGRhsfs/o0D4jGWJkrRjFDhC7CCRg7omXwOPcrHDOv0vKV0BrCVOdyz5Wg==}
+
   execa@4.1.0:
     resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==}
     engines: {node: '>=10'}
@@ -4427,6 +4500,9 @@ packages:
     resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
     engines: {node: '>= 0.4'}
 
+  functional-red-black-tree@1.0.1:
+    resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
+
   functions-have-names@1.2.3:
     resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
 
@@ -4739,6 +4815,9 @@ packages:
     engines: {node: '>=14'}
     hasBin: true
 
+  i18next@21.10.0:
+    resolution: {integrity: sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==}
+
   iconv-lite@0.4.24:
     resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
     engines: {node: '>=0.10.0'}
@@ -4824,6 +4903,9 @@ packages:
     resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
     engines: {node: '>=12'}
 
+  intl-pluralrules@1.3.1:
+    resolution: {integrity: sha512-sNYPls1Q4fyN0EGLFVJ7TIuaMWln01LupLozfIBt69rHK0DHehghMSz6ejfnSklgRddnyQSEaQPIU6d9TCKH3w==}
+
   intro.js@7.2.0:
     resolution: {integrity: sha512-qbMfaB70rOXVBceIWNYnYTpVTiZsvQh/MIkfdQbpA9di9VBfj1GigUPfcCv3aOfsbrtPcri8vTLTA4FcEDcHSQ==}
 
@@ -5371,6 +5453,9 @@ packages:
   js-base64@2.6.4:
     resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==}
 
+  js-base64@3.7.8:
+    resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==}
+
   js-beautify@1.15.4:
     resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==}
     engines: {node: '>=14'}
@@ -5394,6 +5479,9 @@ packages:
     resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
     hasBin: true
 
+  jsbi@4.3.2:
+    resolution: {integrity: sha512-9fqMSQbhJykSeii05nxKl4m6Eqn2P6rOlYiS+C5Dr/HPIU/7yZxu5qzbs40tgaFORiw2Amd0mirjxatXYMkIew==}
+
   jsdom@16.7.0:
     resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==}
     engines: {node: '>=10'}
@@ -5605,6 +5693,13 @@ packages:
     resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==}
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
 
+  loglevel@1.9.2:
+    resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==}
+    engines: {node: '>= 0.6.0'}
+
+  long@5.3.2:
+    resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
+
   longest@2.0.1:
     resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==}
     engines: {node: '>=0.10.0'}
@@ -6011,6 +6106,11 @@ packages:
     resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
     hasBin: true
 
+  opentype.js@1.3.4:
+    resolution: {integrity: sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==}
+    engines: {node: '>= 8.0.0'}
+    hasBin: true
+
   optionator@0.9.4:
     resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
     engines: {node: '>= 0.8.0'}
@@ -6065,6 +6165,9 @@ packages:
   package-manager-detector@1.5.0:
     resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==}
 
+  pako@2.1.0:
+    resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==}
+
   param-case@3.0.4:
     resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
 
@@ -6239,6 +6342,21 @@ packages:
     resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
     engines: {node: '>=10.13.0'}
 
+  point-in-big-polygon@1.0.0:
+    resolution: {integrity: sha512-4ndmlqCakU2K3hskeJpgMp10RJubHfDbdhJpk09cwTLs5eHVDurq8etTSI5x5ITVKLIpHRLkAhaMHXsV7nluqw==}
+
+  point-in-polygon@1.1.0:
+    resolution: {integrity: sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==}
+
+  poly-extrude@0.2.0:
+    resolution: {integrity: sha512-Lt3wIDk4adSooYNZQMvyzjw52S1M2Dhs0XAfzpdWBu0aWGkoy558EQX9iTRq39aX0tAK2kI/gDm1yhGfdntYag==}
+
+  polybooljs@1.2.2:
+    resolution: {integrity: sha512-ziHW/02J0XuNuUtmidBc6GXE8YohYydp3DWPWXYsd7O721TjcmN+k6ezjdwkDqep+gnWnFY+yqZHvzElra2oCg==}
+
+  polygon-clipping@0.15.7:
+    resolution: {integrity: sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==}
+
   portfinder@1.0.38:
     resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==}
     engines: {node: '>= 10.12'}
@@ -6365,6 +6483,10 @@ packages:
   proto-list@1.2.4:
     resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
 
+  protobufjs@7.6.4:
+    resolution: {integrity: sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==}
+    engines: {node: '>=12.0.0'}
+
   proxy-from-env@1.1.0:
     resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
 
@@ -6420,12 +6542,18 @@ packages:
     resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
     engines: {node: '>=10'}
 
+  quickselect@2.0.0:
+    resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==}
+
   raf@3.4.1:
     resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==}
 
   rangetouch@2.0.1:
     resolution: {integrity: sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA==}
 
+  rbush@3.0.1:
+    resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==}
+
   react-is@17.0.2:
     resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
 
@@ -6612,9 +6740,33 @@ packages:
     resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
     hasBin: true
 
+  robust-compress@1.0.0:
+    resolution: {integrity: sha512-E8btSpQ6zZr7LvRLrLvb+N5rwQ0etUbsXFKv5NQj6TVK6RYT00Qg9iVFvIWR+GxXUvpes7FDN0WfXa3l7wtGOw==}
+
+  robust-estimate-float@1.0.0:
+    resolution: {integrity: sha512-TsNo0eQen8Lt1bqo1Jh1rlz88iejZV57zKAmFzbOem9eQxQnOj3yWdX0e2bLHGu9TJRieyzLG2mN94WQwOsZ1w==}
+
+  robust-orientation@1.2.1:
+    resolution: {integrity: sha512-FuTptgKwY6iNuU15nrIJDLjXzCChWB+T4AvksRtwPS/WZ3HuP1CElCm1t+OBfgQKfWbtZIawip+61k7+buRKAg==}
+
+  robust-predicates@2.0.4:
+    resolution: {integrity: sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==}
+
   robust-predicates@3.0.2:
     resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
 
+  robust-scale@1.0.2:
+    resolution: {integrity: sha512-jBR91a/vomMAzazwpsPTPeuTPPmWBacwA+WYGNKcRGSh6xweuQ2ZbjRZ4v792/bZOhRKXRiQH0F48AvuajY0tQ==}
+
+  robust-segment-intersect@1.0.1:
+    resolution: {integrity: sha512-QWngxcL7rCRLK7nTMcTNBPi/q+fecrOo6aOtTPnXjT/Dve5AK20DzUSq2fznUS+rCAxyir6OdPgDCzcUxFtJoQ==}
+
+  robust-subtract@1.0.0:
+    resolution: {integrity: sha512-xhKUno+Rl+trmxAIVwjQMiVdpF5llxytozXJOdoT4eTIqmqsndQqFb1A0oiW3sZGlhMRhOi6pAD4MF1YYW6o/A==}
+
+  robust-sum@1.0.0:
+    resolution: {integrity: sha512-AvLExwpaqUqD1uwLU6MwzzfRdaI6VEZsyvQ3IAQ0ZJ08v1H+DTyqskrf2ZJyh0BDduFVLN7H04Zmc+qTiahhAw==}
+
   rollup-plugin-purge-icons@0.9.1:
     resolution: {integrity: sha512-hRDKBsPUz47UMdBufki2feTmBF2ClEJlYqL7N6vpVAHSLd7V2BJUaNKOF7YYbLMofVVF+9hm44YSkYO6k9hUgg==}
     engines: {node: '>= 12'}
@@ -6685,12 +6837,19 @@ packages:
     resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==}
     engines: {node: '>=10'}
 
+  screenfull@6.0.2:
+    resolution: {integrity: sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw==}
+    engines: {node: ^14.13.1 || >=16.0.0}
+
   scroll-into-view-if-needed@2.2.31:
     resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==}
 
   secure-compare@3.0.1:
     resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==}
 
+  segseg@0.2.2:
+    resolution: {integrity: sha512-eEJ61YUpiq60wmp+o2SlmS3swgSc66QLzAlLBBUoMeEld/eekmSM4k+2f5Q2vb4QeDYkO0QFp9XSKycUGjRBYQ==}
+
   select@1.1.2:
     resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==}
 
@@ -6784,6 +6943,9 @@ packages:
     resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
     engines: {node: '>=14'}
 
+  signum@1.0.0:
+    resolution: {integrity: sha512-yodFGwcyt59XRh7w5W3jPcIQb3Bwi21suEfT7MAWnBX3iCdklJpgDgvGT9o04UonglZN5SNMfJFkHIR/jO8GHw==}
+
   single-spa@5.9.5:
     resolution: {integrity: sha512-9SQdmsyz4HSP+3gs6PJzhkaMEg+6zTlu9oxIghnwUX3eq+ajq4ft5egl0iyR55LAmO/UwvU8NgIWs/ZyQMa6dw==}
 
@@ -6794,6 +6956,9 @@ packages:
   sisteransi@1.0.5:
     resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
 
+  slab-decomposition@1.0.3:
+    resolution: {integrity: sha512-1EfR304JHvX9vYQkUi4AKqN62mLsjk6W45xTk/TxwN8zd3HGwS7PVj9zj0I6fgCZqfGlimDEY+RzzASHn97ZmQ==}
+
   slash@3.0.0:
     resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
     engines: {node: '>=8'}
@@ -6873,6 +7038,10 @@ packages:
   spdx-license-ids@3.0.22:
     resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==}
 
+  splaytree@3.2.3:
+    resolution: {integrity: sha512-7OXrNWzy6CK+r7Ch9OLPBDTKfB6XlWHjX4P0RU5B3IgFuWPeYN0XtRtlexGRjgbQxpfaUve6jTAwBGWuGntz/w==}
+    engines: {node: '>=18.20 || >=20'}
+
   split-string@3.1.0:
     resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
     engines: {node: '>=0.10.0'}
@@ -6914,6 +7083,9 @@ packages:
     resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
     engines: {node: '>= 0.4'}
 
+  stream@0.0.2:
+    resolution: {integrity: sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==}
+
   strict-uri-encode@1.1.0:
     resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==}
     engines: {node: '>=0.10.0'}
@@ -6934,6 +7106,9 @@ packages:
     resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
     engines: {node: '>=12'}
 
+  string.prototype.codepointat@0.2.1:
+    resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==}
+
   string.prototype.padend@3.1.6:
     resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==}
     engines: {node: '>= 0.4'}
@@ -7134,6 +7309,11 @@ packages:
   text-table@0.2.0:
     resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
 
+  three-mesh-bvh@0.9.10:
+    resolution: {integrity: sha512-UOlTgPIeqUURcwaG8knxvBaruwZlC4X3/WSHEFO7rYvMVv/YNUrkfFEszvfj36pXV88dCHoHNnIp0PifkirnTQ==}
+    peerDependencies:
+      three: '>= 0.159.0'
+
   three.path@1.0.1:
     resolution: {integrity: sha512-YZGPv75s65V0JMCPqG+DBq72YEb7bzQES3lFWggjoJZ9zbTd/f5ukN+yolIqIkQTm9FWelQ367VhbMihQUq59Q==}
 
@@ -7143,6 +7323,9 @@ packages:
   three@0.162.0:
     resolution: {integrity: sha512-xfCYj4RnlozReCmUd+XQzj6/5OjDNHBy5nT6rVwrOKGENAvpXe2z1jL+DZYaMu4/9pNsjH/4Os/VvS9IrH7IOQ==}
 
+  three@0.184.0:
+    resolution: {integrity: sha512-wtTRjG92pM5eUg/KuUnHsqSAlPM296brTOcLgMRqEeylYTh/CdtvKUvCyyCQTzFuStieWxvZb8mVTMvdPyUpxg==}
+
   throat@6.0.2:
     resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==}
 
@@ -7162,6 +7345,9 @@ packages:
   tiny-emitter@2.1.0:
     resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==}
 
+  tiny-inflate@1.0.3:
+    resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
+
   tinycolor2@1.6.0:
     resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
 
@@ -7172,6 +7358,9 @@ packages:
   tinymce@5.10.9:
     resolution: {integrity: sha512-5bkrors87X9LhYX2xq8GgPHrIgJYHl87YNs+kBcjQ5I3CiUgzo/vFcGvT3MZQ9QHsEeYMhYO6a5CLGGffR8hMg==}
 
+  tinyqueue@2.0.3:
+    resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==}
+
   tmp@0.0.33:
     resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
     engines: {node: '>=0.6.0'}
@@ -7288,6 +7477,12 @@ packages:
     resolution: {integrity: sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==}
     hasBin: true
 
+  two-product@1.0.2:
+    resolution: {integrity: sha512-vOyrqmeYvzjToVM08iU52OFocWT6eB/I5LUWYnxeAPGXAhAxXYU/Yr/R2uY5/5n4bvJQL9AQulIuxpIsMoT8XQ==}
+
+  two-sum@1.0.0:
+    resolution: {integrity: sha512-phP48e8AawgsNUjEY2WvoIWqdie8PoiDZGxTDv70LDr01uX5wLEQbOgSP7Z/B6+SW5oLtbe8qaYX2fKJs3CGTw==}
+
   type-check@0.4.0:
     resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
     engines: {node: '>= 0.8.0'}
@@ -7992,6 +8187,24 @@ packages:
 
 snapshots:
 
+  2d-polygon-area@1.0.0: {}
+
+  2d-polygon-boolean@1.0.1:
+    dependencies:
+      2d-polygon-area: 1.0.0
+      point-in-big-polygon: 1.0.0
+      segseg: 0.2.2
+      signum: 1.0.0
+
+  2d-polygon-self-intersections@1.3.1:
+    dependencies:
+      exact-segment-intersect: 2.0.0
+      robust-estimate-float: 1.0.0
+
+  3d-tiles-renderer@0.3.32(three@0.184.0):
+    dependencies:
+      three: 0.184.0
+
   '@aesoper/normal-utils@0.1.5': {}
 
   '@ampproject/remapping@2.3.0':
@@ -9756,6 +9969,8 @@ snapshots:
       - ts-node
       - utf-8-validate
 
+  '@mlightcad/libredwg-web@0.7.2': {}
+
   '@nodelib/fs.scandir@2.1.5':
     dependencies:
       '@nodelib/fs.stat': 2.0.5
@@ -9779,6 +9994,26 @@ snapshots:
 
   '@popperjs/core@2.11.8': {}
 
+  '@protobufjs/aspromise@1.1.2': {}
+
+  '@protobufjs/base64@1.1.2': {}
+
+  '@protobufjs/codegen@2.0.5': {}
+
+  '@protobufjs/eventemitter@1.1.1': {}
+
+  '@protobufjs/fetch@1.1.1':
+    dependencies:
+      '@protobufjs/aspromise': 1.1.2
+
+  '@protobufjs/float@1.0.2': {}
+
+  '@protobufjs/path@1.1.2': {}
+
+  '@protobufjs/pool@1.1.0': {}
+
+  '@protobufjs/utf8@1.1.1': {}
+
   '@purge-icons/core@0.9.1':
     dependencies:
       '@iconify/iconify': 2.1.2
@@ -10590,6 +10825,34 @@ snapshots:
     optionalDependencies:
       vue: 3.5.24(typescript@4.9.5)
 
+  '@x-viewer/core@0.21.23':
+    dependencies:
+      2d-polygon-boolean: 1.0.1
+      2d-polygon-self-intersections: 1.3.1
+      3d-tiles-renderer: 0.3.32(three@0.184.0)
+      '@mlightcad/libredwg-web': 0.7.2
+      camera-controls: 1.38.2(three@0.184.0)
+      clipper-lib: 6.4.2
+      concaveman: 1.2.1
+      core-js: 3.46.0
+      i18next: 21.10.0
+      intl-pluralrules: 1.3.1
+      js-base64: 3.7.8
+      jsbi: 4.3.2
+      loglevel: 1.9.2
+      mitt: 3.0.1
+      opentype.js: 1.3.4
+      pako: 2.1.0
+      poly-extrude: 0.2.0
+      polybooljs: 1.2.2
+      polygon-clipping: 0.15.7
+      protobufjs: 7.6.4
+      regenerator-runtime: 0.13.11
+      screenfull: 6.0.2
+      stream: 0.0.2
+      three: 0.184.0
+      three-mesh-bvh: 0.9.10(three@0.184.0)
+
   '@xmldom/xmldom@0.8.11': {}
 
   '@zxcvbn-ts/core@3.0.4':
@@ -10951,6 +11214,8 @@ snapshots:
 
   binary-extensions@2.3.0: {}
 
+  binary-search-bounds@2.0.5: {}
+
   bl@4.1.0:
     dependencies:
       buffer: 5.7.1
@@ -11081,6 +11346,10 @@ snapshots:
 
   camelcase@6.3.0: {}
 
+  camera-controls@1.38.2(three@0.184.0):
+    dependencies:
+      three: 0.184.0
+
   caniuse-lite@1.0.30001755: {}
 
   caniuse-lite@1.0.30001780: {}
@@ -11211,6 +11480,8 @@ snapshots:
       select: 1.1.2
       tiny-emitter: 2.1.0
 
+  clipper-lib@6.4.2: {}
+
   cliui@6.0.0:
     dependencies:
       string-width: 4.2.3
@@ -11315,6 +11586,13 @@ snapshots:
 
   concat-typed-array@1.0.2: {}
 
+  concaveman@1.2.1:
+    dependencies:
+      point-in-polygon: 1.1.0
+      rbush: 3.0.1
+      robust-predicates: 2.0.4
+      tinyqueue: 2.0.3
+
   confbox@0.1.8: {}
 
   confbox@0.2.2: {}
@@ -11999,6 +12277,8 @@ snapshots:
 
   duplexer@0.1.2: {}
 
+  earcut@2.2.4: {}
+
   eastasianwidth@0.2.0: {}
 
   echarts-gl@2.0.9(echarts@5.6.0):
@@ -12042,6 +12322,8 @@ snapshots:
     dependencies:
       batch-processor: 1.0.0
 
+  emitter-component@1.1.2: {}
+
   emittery@0.13.1: {}
 
   emittery@0.8.1: {}
@@ -12454,6 +12736,14 @@ snapshots:
 
   eventemitter3@5.0.1: {}
 
+  exact-segment-intersect@2.0.0:
+    dependencies:
+      robust-compress: 1.0.0
+      robust-scale: 1.0.2
+      robust-segment-intersect: 1.0.1
+      robust-sum: 1.0.0
+      two-product: 1.0.2
+
   execa@4.1.0:
     dependencies:
       cross-spawn: 7.0.6
@@ -12740,6 +13030,8 @@ snapshots:
       hasown: 2.0.2
       is-callable: 1.2.7
 
+  functional-red-black-tree@1.0.1: {}
+
   functions-have-names@1.2.3: {}
 
   generator-function@2.0.1: {}
@@ -13099,6 +13391,10 @@ snapshots:
 
   husky@8.0.3: {}
 
+  i18next@21.10.0:
+    dependencies:
+      '@babel/runtime': 7.28.4
+
   iconv-lite@0.4.24:
     dependencies:
       safer-buffer: 2.1.2
@@ -13197,6 +13493,8 @@ snapshots:
 
   internmap@2.0.3: {}
 
+  intl-pluralrules@1.3.1: {}
+
   intro.js@7.2.0: {}
 
   is-accessor-descriptor@1.0.1:
@@ -14137,6 +14435,8 @@ snapshots:
 
   js-base64@2.6.4: {}
 
+  js-base64@3.7.8: {}
+
   js-beautify@1.15.4:
     dependencies:
       config-chain: 1.1.13
@@ -14160,6 +14460,8 @@ snapshots:
     dependencies:
       argparse: 2.0.1
 
+  jsbi@4.3.2: {}
+
   jsdom@16.7.0:
     dependencies:
       abab: 2.0.6
@@ -14395,6 +14697,10 @@ snapshots:
       strip-ansi: 7.1.2
       wrap-ansi: 8.1.0
 
+  loglevel@1.9.2: {}
+
+  long@5.3.2: {}
+
   longest@2.0.1: {}
 
   loose-envify@1.4.0:
@@ -14817,6 +15123,11 @@ snapshots:
 
   opener@1.5.2: {}
 
+  opentype.js@1.3.4:
+    dependencies:
+      string.prototype.codepointat: 0.2.1
+      tiny-inflate: 1.0.3
+
   optionator@0.9.4:
     dependencies:
       deep-is: 0.1.4
@@ -14878,6 +15189,8 @@ snapshots:
 
   package-manager-detector@1.5.0: {}
 
+  pako@2.1.0: {}
+
   param-case@3.0.4:
     dependencies:
       dot-case: 3.0.4
@@ -15018,6 +15331,24 @@ snapshots:
 
   pngjs@5.0.0: {}
 
+  point-in-big-polygon@1.0.0:
+    dependencies:
+      robust-orientation: 1.2.1
+      slab-decomposition: 1.0.3
+
+  point-in-polygon@1.1.0: {}
+
+  poly-extrude@0.2.0:
+    dependencies:
+      earcut: 2.2.4
+
+  polybooljs@1.2.2: {}
+
+  polygon-clipping@0.15.7:
+    dependencies:
+      robust-predicates: 3.0.2
+      splaytree: 3.2.3
+
   portfinder@1.0.38:
     dependencies:
       async: 3.2.6
@@ -15145,6 +15476,20 @@ snapshots:
 
   proto-list@1.2.4: {}
 
+  protobufjs@7.6.4:
+    dependencies:
+      '@protobufjs/aspromise': 1.1.2
+      '@protobufjs/base64': 1.1.2
+      '@protobufjs/codegen': 2.0.5
+      '@protobufjs/eventemitter': 1.1.1
+      '@protobufjs/fetch': 1.1.1
+      '@protobufjs/float': 1.0.2
+      '@protobufjs/path': 1.1.2
+      '@protobufjs/pool': 1.1.0
+      '@protobufjs/utf8': 1.1.1
+      '@types/node': 20.19.25
+      long: 5.3.2
+
   proxy-from-env@1.1.0: {}
 
   prr@1.0.1:
@@ -15197,6 +15542,8 @@ snapshots:
 
   quick-lru@5.1.1: {}
 
+  quickselect@2.0.0: {}
+
   raf@3.4.1:
     dependencies:
       performance-now: 2.1.0
@@ -15204,6 +15551,10 @@ snapshots:
 
   rangetouch@2.0.1: {}
 
+  rbush@3.0.1:
+    dependencies:
+      quickselect: 2.0.0
+
   react-is@17.0.2: {}
 
   react-is@18.3.1: {}
@@ -15399,8 +15750,34 @@ snapshots:
     dependencies:
       glob: 10.4.5
 
+  robust-compress@1.0.0: {}
+
+  robust-estimate-float@1.0.0: {}
+
+  robust-orientation@1.2.1:
+    dependencies:
+      robust-scale: 1.0.2
+      robust-subtract: 1.0.0
+      robust-sum: 1.0.0
+      two-product: 1.0.2
+
+  robust-predicates@2.0.4: {}
+
   robust-predicates@3.0.2: {}
 
+  robust-scale@1.0.2:
+    dependencies:
+      two-product: 1.0.2
+      two-sum: 1.0.0
+
+  robust-segment-intersect@1.0.1:
+    dependencies:
+      robust-orientation: 1.2.1
+
+  robust-subtract@1.0.0: {}
+
+  robust-sum@1.0.0: {}
+
   rollup-plugin-purge-icons@0.9.1:
     dependencies:
       '@purge-icons/core': 0.9.1
@@ -15472,12 +15849,16 @@ snapshots:
     dependencies:
       xmlchars: 2.2.0
 
+  screenfull@6.0.2: {}
+
   scroll-into-view-if-needed@2.2.31:
     dependencies:
       compute-scroll-into-view: 1.0.20
 
   secure-compare@3.0.1: {}
 
+  segseg@0.2.2: {}
+
   select@1.1.2: {}
 
   semver@5.7.2: {}
@@ -15579,6 +15960,8 @@ snapshots:
 
   signal-exit@4.1.0: {}
 
+  signum@1.0.0: {}
+
   single-spa@5.9.5: {}
 
   sirv@2.0.4:
@@ -15589,6 +15972,12 @@ snapshots:
 
   sisteransi@1.0.5: {}
 
+  slab-decomposition@1.0.3:
+    dependencies:
+      binary-search-bounds: 2.0.5
+      functional-red-black-tree: 1.0.1
+      robust-orientation: 1.2.1
+
   slash@3.0.0: {}
 
   slice-ansi@4.0.0:
@@ -15678,6 +16067,8 @@ snapshots:
 
   spdx-license-ids@3.0.22: {}
 
+  splaytree@3.2.3: {}
+
   split-string@3.1.0:
     dependencies:
       extend-shallow: 3.0.2
@@ -15717,6 +16108,10 @@ snapshots:
       es-errors: 1.3.0
       internal-slot: 1.1.0
 
+  stream@0.0.2:
+    dependencies:
+      emitter-component: 1.1.2
+
   strict-uri-encode@1.1.0: {}
 
   string-argv@0.3.2: {}
@@ -15738,6 +16133,8 @@ snapshots:
       emoji-regex: 9.2.2
       strip-ansi: 7.1.2
 
+  string.prototype.codepointat@0.2.1: {}
+
   string.prototype.padend@3.1.6:
     dependencies:
       call-bind: 1.0.8
@@ -15996,6 +16393,10 @@ snapshots:
 
   text-table@0.2.0: {}
 
+  three-mesh-bvh@0.9.10(three@0.184.0):
+    dependencies:
+      three: 0.184.0
+
   three.path@1.0.1:
     dependencies:
       three: 0.132.2
@@ -16004,6 +16405,8 @@ snapshots:
 
   three@0.162.0: {}
 
+  three@0.184.0: {}
+
   throat@6.0.2: {}
 
   throttle-debounce@5.0.0: {}
@@ -16021,12 +16424,16 @@ snapshots:
 
   tiny-emitter@2.1.0: {}
 
+  tiny-inflate@1.0.3: {}
+
   tinycolor2@1.6.0: {}
 
   tinyexec@1.0.2: {}
 
   tinymce@5.10.9: {}
 
+  tinyqueue@2.0.3: {}
+
   tmp@0.0.33:
     dependencies:
       os-tmpdir: 1.0.2
@@ -16163,6 +16570,10 @@ snapshots:
     optionalDependencies:
       fsevents: 2.3.3
 
+  two-product@1.0.2: {}
+
+  two-sum@1.0.0: {}
+
   type-check@0.4.0:
     dependencies:
       prelude-ls: 1.2.1

+ 24 - 23
src/views/vent/home/configurable/deviceManger.vue

@@ -1,8 +1,15 @@
 <template>
   <div class="device-manger">
-    <ModuleCommonHsq v-for="cfg in configs" :key="cfg.deviceType" :show-style="cfg.showStyle"
-      :module-data="cfg.moduleData" :module-name="cfg.moduleName" :device-type="cfg.deviceType" :data="data"
-      :visible="true" />
+    <ModuleCommonHsq
+      v-for="cfg in configs"
+      :key="cfg.deviceType"
+      :show-style="cfg.showStyle"
+      :module-data="cfg.moduleData"
+      :module-name="cfg.moduleName"
+      :device-type="cfg.deviceType"
+      :data="data"
+      :visible="true"
+    />
   </div>
 </template>
 <script lang="ts" setup>
@@ -13,23 +20,19 @@ import { getSystemApi } from './configurable.api';
 import { testConfigDevice } from './configurable.data';
 
 const { configs, fetchConfigs } = useInitConfigs();
-const { data, updateData } = useInitPage('红泉露天煤矿系统');
+const { data, updateData } = useInitPage('红泉露天煤矿系统');
 let interval: number | undefined;
 
 // https获取监测数据
 let timer: null | NodeJS.Timeout = null;
 function getMonitor() {
-  timer = setTimeout(
-    async () => {
-      getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-      if (timer) {
-        timer = null;
-      }
-      getMonitor();
-    },
-    10000
-  );
-
+  timer = setTimeout(async () => {
+    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
+    if (timer) {
+      timer = null;
+    }
+    getMonitor();
+  }, 10000);
 }
 
 onMounted(() => {
@@ -37,14 +40,12 @@ onMounted(() => {
     configs.value = testConfigDevice;
     getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
   });
-  getMonitor()
+  getMonitor();
 });
 
 watch(
   () => data.value,
-  (newData, oldData) => {
-
-  }
+  (newData, oldData) => {}
 );
 
 onUnmounted(() => {
@@ -56,11 +57,12 @@ onUnmounted(() => {
 @import '/@/design/theme.less';
 
 @{theme-deepblue} {
-  .device-manger {}
+  .device-manger {
+  }
 }
 
 .device-manger {
-    --image-box1-bg: url('@/assets/images/home-container/configurable/hsq/2-4.png');
+  --image-box1-bg: url('@/assets/images/home-container/configurable/hsq/2-4.png');
   --image-box1-bg1: url('@/assets/images/home-container/configurable/hsq/2-10.png');
   width: 100%;
   height: 100%;
@@ -68,14 +70,13 @@ onUnmounted(() => {
   position: relative;
   padding: 0px 10px;
   box-sizing: border-box;
-   background-color: #09172c;
+  background-color: #09172c;
 }
 
 .vent-box1-bg {
   &:nth-child(1) {
     background: var(--image-box1-bg) no-repeat;
     background-size: 100% 100%;
-    
   }
 
   &:nth-child(2) {

+ 22 - 19
src/views/vent/home/configurable/fireMonitor.vue

@@ -1,7 +1,15 @@
 <template>
   <div class="fire-monitor">
-    <ModuleCommon v-for="cfg in configs" :key="cfg.deviceType" :show-style="cfg.showStyle" :module-data="cfg.moduleData"
-      :module-name="cfg.moduleName" :device-type="cfg.deviceType" :data="data" :visible="true" />
+    <ModuleCommon
+      v-for="cfg in configs"
+      :key="cfg.deviceType"
+      :show-style="cfg.showStyle"
+      :module-data="cfg.moduleData"
+      :module-name="cfg.moduleName"
+      :device-type="cfg.deviceType"
+      :data="data"
+      :visible="true"
+    />
   </div>
 </template>
 <script lang="ts" setup>
@@ -12,23 +20,19 @@ import { getSystemApi } from './configurable.api';
 import { testConfigFire } from './configurable.data';
 
 const { configs, fetchConfigs } = useInitConfigs();
-const { data, updateData } = useInitPage('红泉露天煤矿系统');
+const { data, updateData } = useInitPage('红泉露天煤矿系统');
 let interval: number | undefined;
 
 // https获取监测数据
 let timer: null | NodeJS.Timeout = null;
 function getMonitor() {
-  timer = setTimeout(
-    async () => {
-      getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-      if (timer) {
-        timer = null;
-      }
-      getMonitor();
-    },
-    10000
-  );
-
+  timer = setTimeout(async () => {
+    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
+    if (timer) {
+      timer = null;
+    }
+    getMonitor();
+  }, 10000);
 }
 
 onMounted(() => {
@@ -36,14 +40,12 @@ onMounted(() => {
     configs.value = testConfigFire;
     getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
   });
-  getMonitor()
+  getMonitor();
 });
 
 watch(
   () => data.value,
-  (newData, oldData) => {
-
-  }
+  (newData, oldData) => {}
 );
 
 onUnmounted(() => {
@@ -55,7 +57,8 @@ onUnmounted(() => {
 @import '/@/design/theme.less';
 
 @{theme-deepblue} {
-  .fire-monitor {}
+  .fire-monitor {
+  }
 }
 
 .fire-monitor {

+ 1 - 1
src/views/vent/home/configurable/gasInjection.vue

@@ -21,7 +21,7 @@ import deviceManger from './deviceManger.vue';
 import warnMonitor from './warnMonitor.vue';
 import systemManger from './systemManger.vue';
 import linkConfiguration from './linkConfiguration.vue';
-const { mainTitle, data, updateData } = useInitPage('红泉露天煤矿系统');
+const { mainTitle, data, updateData } = useInitPage('红泉露天煤矿系统');
 //当前激活界面
 const activeComponente = ref<any>(fireMonitor);
 

+ 1 - 1
src/views/vent/home/configurable/linkConfiguration.vue

@@ -20,7 +20,7 @@ import { getSystemApi } from './configurable.api';
 import { testConfigLink } from './configurable.data';
 
 const { configs, fetchConfigs } = useInitConfigs();
-const { data, updateData } = useInitPage('红泉露天煤矿系统');
+const { data, updateData } = useInitPage('红泉露天煤矿系统');
 let interval: number | undefined;
 
 // https获取监测数据

+ 32 - 25
src/views/vent/home/configurable/systemManger.vue

@@ -1,12 +1,24 @@
 <template>
   <div class="system-manger">
     <div class="nav-menu">
-      <div :class="activeIndex == index ? 'nav-item-active' : 'nav-item'" v-for="(item, index) in navList" :key="index"
-        @click="handleChange(item, index)">{{ item.label }}</div>
+      <div
+        :class="activeIndex == index ? 'nav-item-active' : 'nav-item'"
+        v-for="(item, index) in navList"
+        :key="index"
+        @click="handleChange(item, index)"
+        >{{ item.label }}</div
+      >
     </div>
-    <ModuleCommonHsq v-for="cfg in configs" :key="cfg.deviceType" :show-style="cfg.showStyle"
-      :module-data="cfg.moduleData" :module-name="cfg.moduleName" :device-type="cfg.deviceType" :data="data"
-      :visible="true" />
+    <ModuleCommonHsq
+      v-for="cfg in configs"
+      :key="cfg.deviceType"
+      :show-style="cfg.showStyle"
+      :module-data="cfg.moduleData"
+      :module-name="cfg.moduleName"
+      :device-type="cfg.deviceType"
+      :data="data"
+      :visible="true"
+    />
   </div>
 </template>
 <script lang="ts" setup>
@@ -17,8 +29,8 @@ import { getSystemApi } from './configurable.api';
 import { testConfigSystem } from './configurable.data';
 
 const { configs, fetchConfigs } = useInitConfigs();
-const { data, updateData } = useInitPage('红泉露天煤矿系统');
-let activeIndex = ref(0)
+const { data, updateData } = useInitPage('红泉露天煤矿系统');
+let activeIndex = ref(0);
 let interval: number | undefined;
 let navList = ref<any[]>([
   { label: '角色权限', value: '1' },
@@ -26,26 +38,23 @@ let navList = ref<any[]>([
   { label: '日志审计', value: '3' },
   { label: '系统配置', value: '4' },
   { label: '数据备份', value: '5' },
-])
+]);
 
 // https获取监测数据
 let timer: null | NodeJS.Timeout = null;
 function getMonitor() {
-  timer = setTimeout(
-    async () => {
-      getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-      if (timer) {
-        timer = null;
-      }
-      getMonitor();
-    },
-    10000
-  );
+  timer = setTimeout(async () => {
+    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
+    if (timer) {
+      timer = null;
+    }
+    getMonitor();
+  }, 10000);
 }
 
 //nav选项切换
 function handleChange(item, index) {
-  activeIndex.value = index
+  activeIndex.value = index;
 }
 
 onMounted(() => {
@@ -53,14 +62,12 @@ onMounted(() => {
     configs.value = testConfigSystem;
     getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
   });
-  getMonitor()
+  getMonitor();
 });
 
 watch(
   () => data.value,
-  (newData, oldData) => {
-
-  }
+  (newData, oldData) => {}
 );
 
 onUnmounted(() => {
@@ -72,7 +79,8 @@ onUnmounted(() => {
 @import '/@/design/theme.less';
 
 @{theme-deepblue} {
-  .system-manger {}
+  .system-manger {
+  }
 }
 
 .system-manger {
@@ -95,7 +103,6 @@ onUnmounted(() => {
   &:nth-child(2) {
     background: var(--image-box1-bg) no-repeat;
     background-size: 100% 100%;
-
   }
 
   &:nth-child(3) {

+ 26 - 25
src/views/vent/home/configurable/warnMonitor.vue

@@ -1,8 +1,15 @@
 <template>
   <div class="warn-monitor">
-    <ModuleCommonHsq v-for="cfg in configs" :key="cfg.deviceType" :show-style="cfg.showStyle"
-      :module-data="cfg.moduleData" :module-name="cfg.moduleName" :device-type="cfg.deviceType" :data="data"
-      :visible="true" />
+    <ModuleCommonHsq
+      v-for="cfg in configs"
+      :key="cfg.deviceType"
+      :show-style="cfg.showStyle"
+      :module-data="cfg.moduleData"
+      :module-name="cfg.moduleName"
+      :device-type="cfg.deviceType"
+      :data="data"
+      :visible="true"
+    />
   </div>
 </template>
 <script lang="ts" setup>
@@ -13,23 +20,19 @@ import { getSystemApi } from './configurable.api';
 import { testConfigWarn } from './configurable.data';
 
 const { configs, fetchConfigs } = useInitConfigs();
-const { data, updateData } = useInitPage('红泉露天煤矿系统');
+const { data, updateData } = useInitPage('红泉露天煤矿系统');
 let interval: number | undefined;
 
 // https获取监测数据
 let timer: null | NodeJS.Timeout = null;
 function getMonitor() {
-  timer = setTimeout(
-    async () => {
-      getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
-      if (timer) {
-        timer = null;
-      }
-      getMonitor();
-    },
-    10000
-  );
-
+  timer = setTimeout(async () => {
+    getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
+    if (timer) {
+      timer = null;
+    }
+    getMonitor();
+  }, 10000);
 }
 
 onMounted(() => {
@@ -37,14 +40,12 @@ onMounted(() => {
     configs.value = testConfigWarn;
     getSystemApi({ devicetype: 'sys', systemID: '2036323791827165185' }).then(updateData);
   });
-  getMonitor()
+  getMonitor();
 });
 
 watch(
   () => data.value,
-  (newData, oldData) => {
-
-  }
+  (newData, oldData) => {}
 );
 
 onUnmounted(() => {
@@ -56,27 +57,27 @@ onUnmounted(() => {
 @import '/@/design/theme.less';
 
 @{theme-deepblue} {
-  .warn-monitor {}
+  .warn-monitor {
+  }
 }
 
 .warn-monitor {
-    --image-box1-bg: url('@/assets/images/home-container/configurable/hsq/2-4.png');
+  --image-box1-bg: url('@/assets/images/home-container/configurable/hsq/2-4.png');
   --image-box1-bg1: url('@/assets/images/home-container/configurable/hsq/2-10.png');
-    --image-box1-bg2: url('@/assets/images/home-container/configurable/hsq/3-3.png');
+  --image-box1-bg2: url('@/assets/images/home-container/configurable/hsq/3-3.png');
   width: 100%;
   height: 100%;
   color: @white;
   position: relative;
   padding: 0px 10px;
   box-sizing: border-box;
-   background-color: #09172c;
+  background-color: #09172c;
 }
 
 .vent-box1-bg {
   &:nth-child(1) {
     background: var(--image-box1-bg) no-repeat;
     background-size: 100% 100%;
-    
   }
 
   &:nth-child(2) {
@@ -88,7 +89,7 @@ onUnmounted(() => {
     background: var(--image-box1-bg) no-repeat;
     background-size: 100% 100%;
   }
-    &:nth-child(4) {
+  &:nth-child(4) {
     background: var(--image-box1-bg2) no-repeat;
     background-size: 100% 100%;
   }