diff --git a/package-lock.json b/package-lock.json index 12284156..80c04cc8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@codemirror/state": "^0.19.6", "@codemirror/stream-parser": "^0.19.2", "@codemirror/view": "^0.19.28", - "@sindarius/gcodeviewer": "^2.1.17", + "@sindarius/gcodeviewer": "^3.1.0", "@types/node": "^16.11.22", "@types/overlayscrollbars": "^1.12.1", "axios": "^0.26.0", @@ -1876,43 +1876,49 @@ } }, "node_modules/@babylonjs/core": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/core/-/core-4.2.2.tgz", - "integrity": "sha512-gAgetSyoxFZ/xzMVVnGPKaP941NHA59Ho8GGKFW98OTEp8yZcnzJjNOD2zfF1eKmlvR/6WwSmcrKWTJtPF1pyA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/core/-/core-5.8.0.tgz", + "integrity": "sha512-1/p2XxuwoGStoEc0Nh0O4iBrSfWpRAYzkWXRqxjTqD/CU1bufZuHFLlBQp6GuVei33RU/yGjVI/W5d/rhSIXYA==", "dependencies": { - "tslib": ">=1.10.0" - }, - "engines": { - "node": "*" + "tslib": "^2.3.1" } }, "node_modules/@babylonjs/gui": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/gui/-/gui-4.2.2.tgz", - "integrity": "sha512-iFKnSb0m9Zz7oeD1LTZWE9Hxcp0QMytXZenLNgrbHOm8mo2V+Y6OiVEP9SpvZRqks6bTDTFrpfjMTy1DrZyTGQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/gui/-/gui-5.8.0.tgz", + "integrity": "sha512-uqrJiu2oqyYmY4IgGMfWx0vabUKjkb3PK/ZTO+75rYne6yFFOp5Wivyi03O3Ew+m69W7Igt/gwtVCMaAit+g6w==", "dependencies": { - "@babylonjs/core": "4.2.2", - "tslib": ">=1.10.0" + "@babylonjs/core": "^5.8.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@babylonjs/gui-editor": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/gui-editor/-/gui-editor-5.8.0.tgz", + "integrity": "sha512-Fa/m+l8tOIeK81diylQ05t0+8JFYoW5Dm+mX7ekZKPNjViZIBDatsUHYiWBbwA0L2YLwYgADIO+NmhQZe1ns0g==", + "dependencies": { + "@babylonjs/core": "^5.8.0", + "@babylonjs/gui": "^5.8.0" }, - "engines": { - "node": "*" + "peerDependencies": { + "@types/react": ">=16.7.3", + "@types/react-dom": ">=16.0.9" } }, "node_modules/@babylonjs/inspector": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/inspector/-/inspector-4.2.2.tgz", - "integrity": "sha512-aTK9u+wKv9pvL+/ftRMQxIiwyvxUs4AF0RaN/WQgDRqLKdYf+NGCjc2NX5P4Krcs5hU6CD7CjyOIhhtJXGRk7g==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/inspector/-/inspector-5.8.0.tgz", + "integrity": "sha512-HJ/4iDdf5G5Jh67FLDlW+tNdKIMSB0NVrExXgY+Vgbj9AtIFqSR/WU2Zo2P3qNnCvq2w9AmDXxfJPkqVq+/hJw==", "dependencies": { - "@babylonjs/core": "4.2.2", - "@babylonjs/gui": "4.2.2", - "@babylonjs/loaders": "4.2.2", - "@babylonjs/materials": "4.2.2", - "@babylonjs/serializers": "4.2.2", - "babylonjs-gltf2interface": "4.2.2", - "tslib": ">=1.10.0" - }, - "engines": { - "node": "*" + "@babylonjs/core": "^5.8.0", + "@babylonjs/gui": "^5.8.0", + "@babylonjs/gui-editor": "^5.8.0", + "@babylonjs/loaders": "^5.8.0", + "@babylonjs/materials": "^5.8.0", + "@babylonjs/serializers": "^5.8.0", + "@fortawesome/fontawesome-svg-core": "^6.1.0", + "@fortawesome/free-regular-svg-icons": "^6.0.0", + "@fortawesome/free-solid-svg-icons": "^6.0.0" }, "peerDependencies": { "@types/react": ">=16.7.3", @@ -1920,41 +1926,32 @@ } }, "node_modules/@babylonjs/loaders": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/loaders/-/loaders-4.2.2.tgz", - "integrity": "sha512-Qk8r4xp4eOznbX3AsNYv8HgwS+tzGu6TwSpDX4il3g0B+k1N5k6KE5ghrnwDytoxUDVjGZ/VKk2cQqiHsg/NLg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/loaders/-/loaders-5.8.0.tgz", + "integrity": "sha512-8hA6xGlJcNvktJ7kzLZyNcWUaoy/LgINNjGKc1l6kvzf2sTLZ2xC0w8ZkHPlOB9Y7o4U4VNRvoxgtewYnTI+8g==", "dependencies": { - "@babylonjs/core": "4.2.2", - "babylonjs-gltf2interface": "4.2.2", - "tslib": ">=1.10.0" - }, - "engines": { - "node": "*" + "@babylonjs/core": "^5.8.0", + "babylonjs-gltf2interface": "^5.8.0", + "tslib": "^2.3.1" } }, "node_modules/@babylonjs/materials": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/materials/-/materials-4.2.2.tgz", - "integrity": "sha512-Y7umjVEYV5ZsLYVxgrkb5+4lPsz35acgOEqiZErFBdGXJw3AHJLJmalcmL5WXqUBR2SzyShFLCJOdbFQbkmaxg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/materials/-/materials-5.8.0.tgz", + "integrity": "sha512-jXP6xFzhctt3zi7JSpLN0FM38P/BO6xfWFN+odnCcA+RZm66Pm9QhcCU3m6vbn/8fZuj3/u2HUve0LusdBr9XQ==", "dependencies": { - "@babylonjs/core": "4.2.2", - "tslib": ">=1.10.0" - }, - "engines": { - "node": "*" + "@babylonjs/core": "^5.8.0", + "tslib": "^2.3.1" } }, "node_modules/@babylonjs/serializers": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/serializers/-/serializers-4.2.2.tgz", - "integrity": "sha512-PEW09qqScaWV5c9UA44uY2YuF9aQJ6gYTMvjopul9YsiPoJolL4QrHO9OxikaYWQb7rgll3XukoRejhZ+HanTQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/serializers/-/serializers-5.8.0.tgz", + "integrity": "sha512-KZNK5p9dlSaEjeS/jH50pAD9liJjkQCdWg9SXc1l537wiJHSqBdkYQ1akgTrVIbYhrjr5sYh/4+Eh8qx378eBg==", "dependencies": { - "@babylonjs/core": "4.2.2", - "babylonjs-gltf2interface": "4.2.2", - "tslib": ">=1.10.0" - }, - "engines": { - "node": "*" + "@babylonjs/core": "^5.8.0", + "babylonjs-gltf2interface": "^5.8.0", + "tslib": "^2.3.1" } }, "node_modules/@codemirror/autocomplete": { @@ -2295,6 +2292,51 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.1.tgz", + "integrity": "sha512-wVn5WJPirFTnzN6tR95abCx+ocH+3IFLXAgyavnf9hUmN0CfWoDjPT/BAWsUVwSlYYVBeCLJxaqi7ZGe4uSjBA==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.1.tgz", + "integrity": "sha512-NCg0w2YIp81f4V6cMGD9iomfsIj7GWrqmsa0ZsPh59G7PKiGN1KymZNxmF00ssuAlo/VZmpK6xazsGOwzKYUMg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.1.1.tgz", + "integrity": "sha512-xXiW7hcpgwmWtndKPOzG+43fPH7ZjxOaoeyooptSztGmJxCAflHZxXNK0GcT0uEsR4jTGQAfGklDZE5NHoBhKg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.1.tgz", + "integrity": "sha512-0/5exxavOhI/D4Ovm2r3vxNojGZioPwmFrKg0ZUH69Q68uFhFPs6+dhAToh6VEQBntxPRYPuT5Cg1tpNa9JUPg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", @@ -2683,14 +2725,15 @@ } }, "node_modules/@sindarius/gcodeviewer": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/@sindarius/gcodeviewer/-/gcodeviewer-2.1.18.tgz", - "integrity": "sha512-uGD5uozEfUjbQaJw2D4pr1+ai1+X6cNf6W1olpaO/R7Ijr9E4NXllsXMeTKYjeMynNdhElDuefTRC843+egAOA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sindarius/gcodeviewer/-/gcodeviewer-3.1.0.tgz", + "integrity": "sha512-SS9+tw16aPYi3UGwxUJL5uuBeYN42flYhfy2+4gBS2HPJnbrRXytlPywYRIFir9b1PI5sf9c4M+OEZPRdqYOXA==", "dependencies": { - "@babylonjs/core": "^4.2.0", - "@babylonjs/inspector": "^4.2.0", - "@babylonjs/materials": "^4.2.0", - "d3": "^7.0.0" + "@babylonjs/core": "^5.8.0", + "@babylonjs/inspector": "^5.8.0", + "@babylonjs/loaders": "^5.8.0", + "@babylonjs/materials": "^5.8.0", + "d3": "^7.4.4" } }, "node_modules/@surma/rollup-plugin-off-main-thread": { @@ -2752,15 +2795,15 @@ "integrity": "sha512-V25YHbSoKQN35UasHf0EKD9U2vcmexRSp78qa8UglxFH8H3D+adEa9zGZwrqpH4TdvqeMrgMqVqsLB4woAryrQ==" }, "node_modules/@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", "peer": true }, "node_modules/@types/react": { - "version": "17.0.40", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.40.tgz", - "integrity": "sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", "peer": true, "dependencies": { "@types/prop-types": "*", @@ -2769,9 +2812,9 @@ } }, "node_modules/@types/react-dom": { - "version": "17.0.13", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.13.tgz", - "integrity": "sha512-wEP+B8hzvy6ORDv1QBhcQia4j6ea4SFIBttHYpXKPFZRviBvknq0FRh3VrIxeXUmsPkwuXVZrVGG7KUVONmXCQ==", + "version": "18.0.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.5.tgz", + "integrity": "sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==", "peer": true, "dependencies": { "@types/react": "*" @@ -3554,12 +3597,9 @@ } }, "node_modules/babylonjs-gltf2interface": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/babylonjs-gltf2interface/-/babylonjs-gltf2interface-4.2.2.tgz", - "integrity": "sha512-LCQgW1lM+EpKK4yWMiPEgi6ONwJ7W4JrSu3t9JixNRgvnic72OnN2f0bt91rE30EJr1ZaokvkXD/aEiBp/Juyg==", - "engines": { - "node": "*" - } + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/babylonjs-gltf2interface/-/babylonjs-gltf2interface-5.8.0.tgz", + "integrity": "sha512-60vqZ100RtwexfYnTD2CuKxOpKi8D0KCdU05GCU87BgV6ZavdmmDi04EsGYaH0AH8ygq3AusFyWFiuhTC0gCKQ==" }, "node_modules/balanced-match": { "version": "1.0.2", @@ -4094,9 +4134,9 @@ } }, "node_modules/csstype": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", "peer": true }, "node_modules/cypress": { @@ -4163,9 +4203,9 @@ "dev": true }, "node_modules/d3": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.3.0.tgz", - "integrity": "sha512-MDRLJCMK232OJQRqGljQ/gCxtB8k3/sLKFjftMjzPB3nKVUODpdW9Rb3vcq7U8Ka5YKoZkAmp++Ur6I+6iNWIw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.4.4.tgz", + "integrity": "sha512-97FE+MYdAlV3R9P74+R3Uar7wUKkIFu89UWMjEaDhiJ9VxKvqaMxauImy8PC2DdBkdM2BxJOIoLxPrcZUyrKoQ==", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -4203,9 +4243,9 @@ } }, "node_modules/d3-array": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", - "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.6.tgz", + "integrity": "sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA==", "dependencies": { "internmap": "1 - 2" }, @@ -4248,9 +4288,9 @@ } }, "node_modules/d3-color": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", - "integrity": "sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "engines": { "node": ">=12" } @@ -4381,9 +4421,9 @@ } }, "node_modules/d3-hierarchy": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz", - "integrity": "sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", "engines": { "node": ">=12" } @@ -10699,63 +10739,74 @@ } }, "@babylonjs/core": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/core/-/core-4.2.2.tgz", - "integrity": "sha512-gAgetSyoxFZ/xzMVVnGPKaP941NHA59Ho8GGKFW98OTEp8yZcnzJjNOD2zfF1eKmlvR/6WwSmcrKWTJtPF1pyA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/core/-/core-5.8.0.tgz", + "integrity": "sha512-1/p2XxuwoGStoEc0Nh0O4iBrSfWpRAYzkWXRqxjTqD/CU1bufZuHFLlBQp6GuVei33RU/yGjVI/W5d/rhSIXYA==", "requires": { - "tslib": ">=1.10.0" + "tslib": "^2.3.1" } }, "@babylonjs/gui": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/gui/-/gui-4.2.2.tgz", - "integrity": "sha512-iFKnSb0m9Zz7oeD1LTZWE9Hxcp0QMytXZenLNgrbHOm8mo2V+Y6OiVEP9SpvZRqks6bTDTFrpfjMTy1DrZyTGQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/gui/-/gui-5.8.0.tgz", + "integrity": "sha512-uqrJiu2oqyYmY4IgGMfWx0vabUKjkb3PK/ZTO+75rYne6yFFOp5Wivyi03O3Ew+m69W7Igt/gwtVCMaAit+g6w==", "requires": { - "@babylonjs/core": "4.2.2", - "tslib": ">=1.10.0" + "@babylonjs/core": "^5.8.0", + "tslib": "^2.3.1" + } + }, + "@babylonjs/gui-editor": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/gui-editor/-/gui-editor-5.8.0.tgz", + "integrity": "sha512-Fa/m+l8tOIeK81diylQ05t0+8JFYoW5Dm+mX7ekZKPNjViZIBDatsUHYiWBbwA0L2YLwYgADIO+NmhQZe1ns0g==", + "requires": { + "@babylonjs/core": "^5.8.0", + "@babylonjs/gui": "^5.8.0" } }, "@babylonjs/inspector": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/inspector/-/inspector-4.2.2.tgz", - "integrity": "sha512-aTK9u+wKv9pvL+/ftRMQxIiwyvxUs4AF0RaN/WQgDRqLKdYf+NGCjc2NX5P4Krcs5hU6CD7CjyOIhhtJXGRk7g==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/inspector/-/inspector-5.8.0.tgz", + "integrity": "sha512-HJ/4iDdf5G5Jh67FLDlW+tNdKIMSB0NVrExXgY+Vgbj9AtIFqSR/WU2Zo2P3qNnCvq2w9AmDXxfJPkqVq+/hJw==", "requires": { - "@babylonjs/core": "4.2.2", - "@babylonjs/gui": "4.2.2", - "@babylonjs/loaders": "4.2.2", - "@babylonjs/materials": "4.2.2", - "@babylonjs/serializers": "4.2.2", - "babylonjs-gltf2interface": "4.2.2", - "tslib": ">=1.10.0" + "@babylonjs/core": "^5.8.0", + "@babylonjs/gui": "^5.8.0", + "@babylonjs/gui-editor": "^5.8.0", + "@babylonjs/loaders": "^5.8.0", + "@babylonjs/materials": "^5.8.0", + "@babylonjs/serializers": "^5.8.0", + "@fortawesome/fontawesome-svg-core": "^6.1.0", + "@fortawesome/free-regular-svg-icons": "^6.0.0", + "@fortawesome/free-solid-svg-icons": "^6.0.0" } }, "@babylonjs/loaders": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/loaders/-/loaders-4.2.2.tgz", - "integrity": "sha512-Qk8r4xp4eOznbX3AsNYv8HgwS+tzGu6TwSpDX4il3g0B+k1N5k6KE5ghrnwDytoxUDVjGZ/VKk2cQqiHsg/NLg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/loaders/-/loaders-5.8.0.tgz", + "integrity": "sha512-8hA6xGlJcNvktJ7kzLZyNcWUaoy/LgINNjGKc1l6kvzf2sTLZ2xC0w8ZkHPlOB9Y7o4U4VNRvoxgtewYnTI+8g==", "requires": { - "@babylonjs/core": "4.2.2", - "babylonjs-gltf2interface": "4.2.2", - "tslib": ">=1.10.0" + "@babylonjs/core": "^5.8.0", + "babylonjs-gltf2interface": "^5.8.0", + "tslib": "^2.3.1" } }, "@babylonjs/materials": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/materials/-/materials-4.2.2.tgz", - "integrity": "sha512-Y7umjVEYV5ZsLYVxgrkb5+4lPsz35acgOEqiZErFBdGXJw3AHJLJmalcmL5WXqUBR2SzyShFLCJOdbFQbkmaxg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/materials/-/materials-5.8.0.tgz", + "integrity": "sha512-jXP6xFzhctt3zi7JSpLN0FM38P/BO6xfWFN+odnCcA+RZm66Pm9QhcCU3m6vbn/8fZuj3/u2HUve0LusdBr9XQ==", "requires": { - "@babylonjs/core": "4.2.2", - "tslib": ">=1.10.0" + "@babylonjs/core": "^5.8.0", + "tslib": "^2.3.1" } }, "@babylonjs/serializers": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@babylonjs/serializers/-/serializers-4.2.2.tgz", - "integrity": "sha512-PEW09qqScaWV5c9UA44uY2YuF9aQJ6gYTMvjopul9YsiPoJolL4QrHO9OxikaYWQb7rgll3XukoRejhZ+HanTQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@babylonjs/serializers/-/serializers-5.8.0.tgz", + "integrity": "sha512-KZNK5p9dlSaEjeS/jH50pAD9liJjkQCdWg9SXc1l537wiJHSqBdkYQ1akgTrVIbYhrjr5sYh/4+Eh8qx378eBg==", "requires": { - "@babylonjs/core": "4.2.2", - "babylonjs-gltf2interface": "4.2.2", - "tslib": ">=1.10.0" + "@babylonjs/core": "^5.8.0", + "babylonjs-gltf2interface": "^5.8.0", + "tslib": "^2.3.1" } }, "@codemirror/autocomplete": { @@ -11092,6 +11143,35 @@ "strip-json-comments": "^3.1.1" } }, + "@fortawesome/fontawesome-common-types": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.1.tgz", + "integrity": "sha512-wVn5WJPirFTnzN6tR95abCx+ocH+3IFLXAgyavnf9hUmN0CfWoDjPT/BAWsUVwSlYYVBeCLJxaqi7ZGe4uSjBA==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.1.tgz", + "integrity": "sha512-NCg0w2YIp81f4V6cMGD9iomfsIj7GWrqmsa0ZsPh59G7PKiGN1KymZNxmF00ssuAlo/VZmpK6xazsGOwzKYUMg==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.1.1" + } + }, + "@fortawesome/free-regular-svg-icons": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.1.1.tgz", + "integrity": "sha512-xXiW7hcpgwmWtndKPOzG+43fPH7ZjxOaoeyooptSztGmJxCAflHZxXNK0GcT0uEsR4jTGQAfGklDZE5NHoBhKg==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.1.1" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.1.tgz", + "integrity": "sha512-0/5exxavOhI/D4Ovm2r3vxNojGZioPwmFrKg0ZUH69Q68uFhFPs6+dhAToh6VEQBntxPRYPuT5Cg1tpNa9JUPg==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.1.1" + } + }, "@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", @@ -11398,14 +11478,15 @@ } }, "@sindarius/gcodeviewer": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/@sindarius/gcodeviewer/-/gcodeviewer-2.1.18.tgz", - "integrity": "sha512-uGD5uozEfUjbQaJw2D4pr1+ai1+X6cNf6W1olpaO/R7Ijr9E4NXllsXMeTKYjeMynNdhElDuefTRC843+egAOA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sindarius/gcodeviewer/-/gcodeviewer-3.1.0.tgz", + "integrity": "sha512-SS9+tw16aPYi3UGwxUJL5uuBeYN42flYhfy2+4gBS2HPJnbrRXytlPywYRIFir9b1PI5sf9c4M+OEZPRdqYOXA==", "requires": { - "@babylonjs/core": "^4.2.0", - "@babylonjs/inspector": "^4.2.0", - "@babylonjs/materials": "^4.2.0", - "d3": "^7.0.0" + "@babylonjs/core": "^5.8.0", + "@babylonjs/inspector": "^5.8.0", + "@babylonjs/loaders": "^5.8.0", + "@babylonjs/materials": "^5.8.0", + "d3": "^7.4.4" } }, "@surma/rollup-plugin-off-main-thread": { @@ -11467,15 +11548,15 @@ "integrity": "sha512-V25YHbSoKQN35UasHf0EKD9U2vcmexRSp78qa8UglxFH8H3D+adEa9zGZwrqpH4TdvqeMrgMqVqsLB4woAryrQ==" }, "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", "peer": true }, "@types/react": { - "version": "17.0.40", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.40.tgz", - "integrity": "sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", "peer": true, "requires": { "@types/prop-types": "*", @@ -11484,9 +11565,9 @@ } }, "@types/react-dom": { - "version": "17.0.13", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.13.tgz", - "integrity": "sha512-wEP+B8hzvy6ORDv1QBhcQia4j6ea4SFIBttHYpXKPFZRviBvknq0FRh3VrIxeXUmsPkwuXVZrVGG7KUVONmXCQ==", + "version": "18.0.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.5.tgz", + "integrity": "sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==", "peer": true, "requires": { "@types/react": "*" @@ -12045,9 +12126,9 @@ } }, "babylonjs-gltf2interface": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/babylonjs-gltf2interface/-/babylonjs-gltf2interface-4.2.2.tgz", - "integrity": "sha512-LCQgW1lM+EpKK4yWMiPEgi6ONwJ7W4JrSu3t9JixNRgvnic72OnN2f0bt91rE30EJr1ZaokvkXD/aEiBp/Juyg==" + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/babylonjs-gltf2interface/-/babylonjs-gltf2interface-5.8.0.tgz", + "integrity": "sha512-60vqZ100RtwexfYnTD2CuKxOpKi8D0KCdU05GCU87BgV6ZavdmmDi04EsGYaH0AH8ygq3AusFyWFiuhTC0gCKQ==" }, "balanced-match": { "version": "1.0.2", @@ -12433,9 +12514,9 @@ "dev": true }, "csstype": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", - "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==", "peer": true }, "cypress": { @@ -12497,9 +12578,9 @@ } }, "d3": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.3.0.tgz", - "integrity": "sha512-MDRLJCMK232OJQRqGljQ/gCxtB8k3/sLKFjftMjzPB3nKVUODpdW9Rb3vcq7U8Ka5YKoZkAmp++Ur6I+6iNWIw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.4.4.tgz", + "integrity": "sha512-97FE+MYdAlV3R9P74+R3Uar7wUKkIFu89UWMjEaDhiJ9VxKvqaMxauImy8PC2DdBkdM2BxJOIoLxPrcZUyrKoQ==", "requires": { "d3-array": "3", "d3-axis": "3", @@ -12534,9 +12615,9 @@ } }, "d3-array": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", - "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.6.tgz", + "integrity": "sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA==", "requires": { "internmap": "1 - 2" } @@ -12567,9 +12648,9 @@ } }, "d3-color": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.0.1.tgz", - "integrity": "sha512-6/SlHkDOBLyQSJ1j1Ghs82OIUXpKWlR0hCsw0XrLSQhuUPuCSmLQ1QPH98vpnQxMUQM2/gfAkUEWsupVpd9JGw==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" }, "d3-contour": { "version": "3.0.1", @@ -12655,9 +12736,9 @@ } }, "d3-hierarchy": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz", - "integrity": "sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" }, "d3-interpolate": { "version": "3.0.1", diff --git a/package.json b/package.json index e1820878..43f9807d 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@codemirror/state": "^0.19.6", "@codemirror/stream-parser": "^0.19.2", "@codemirror/view": "^0.19.28", - "@sindarius/gcodeviewer": "^2.1.17", + "@sindarius/gcodeviewer": "^3.1.0", "@types/node": "^16.11.22", "@types/overlayscrollbars": "^1.12.1", "axios": "^0.26.0", diff --git a/src/components/gcodeviewer/Viewer.vue b/src/components/gcodeviewer/Viewer.vue index 607af687..a9b7f099 100644 --- a/src/components/gcodeviewer/Viewer.vue +++ b/src/components/gcodeviewer/Viewer.vue @@ -2,66 +2,52 @@ @@ -129,7 +135,7 @@ hide-details outlined> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | undefined = undefined + private scrubFileSize = 0 + private downloadSnackbar: downloadSnackbar = { status: false, filename: '', @@ -362,8 +379,9 @@ export default class Viewer extends Mixins(BaseMixin) { async mounted() { this.loadedFile = this.$store.state.gcodeviewer?.loadedFileBackup ?? null viewer = this.$store.state.gcodeviewer?.viewerBackup ?? null - await this.init() + + if (this.loadedFile !== null) this.scrubFileSize = viewer.fileSize } beforeDestroy() { @@ -372,6 +390,12 @@ export default class Viewer extends Mixins(BaseMixin) { this.$store.dispatch('gcodeviewer/setLoadedFileBackup', this.loadedFile) this.$store.dispatch('gcodeviewer/setViewerBackup', viewer) } + + this.scrubPlaying = false + if (this.scrubInterval) { + clearInterval(this.scrubInterval) + this.scrubInterval = undefined + } } @Debounce(200) @@ -424,22 +448,20 @@ export default class Viewer extends Mixins(BaseMixin) { } } - if (viewer === null) { - await this.viewerInit(canvasElement) - } + if (viewer === null) await this.viewerInit(canvasElement) this.registerProgressCallback() if (this.$route.query?.filename && this.loadedFile !== this.$route.query?.filename?.toString()) { //TODO: test without sleep - await this.sleep(1000) //Give the store a chance to initializ before loading the file. + await this.sleep(1000) //Give the store a chance to initialize before loading the file. await this.loadFile(this.$route.query.filename.toString()) } } - viewerInit(element: HTMLCanvasElement) { + async viewerInit(element: HTMLCanvasElement) { viewer = new GCodeViewer(element) - viewer.init() + await viewer.init() viewer.setBackgroundColor(this.backgroundColor) viewer.bed.setBedColor(this.gridColor) viewer.setCursorVisiblity(this.showCursor) @@ -495,6 +517,8 @@ export default class Viewer extends Mixins(BaseMixin) { clearLoadedFile() { if (viewer) { + this.scrubPlaying = false + this.scrubFileSize = 0 viewer.clearScene(true) this.loadedFile = null this.tracking = false @@ -508,8 +532,6 @@ export default class Viewer extends Mixins(BaseMixin) { } finishLoad() { - this.maxZSlider = viewer.getMaxHeight() + 1 - this.zSlider = this.maxZSlider this.loading = false viewer.setCursorVisiblity(this.showCursor) @@ -531,6 +553,7 @@ export default class Viewer extends Mixins(BaseMixin) { viewer.buildObjects.loadObjectBoundaries(objects) viewer.buildObjects.showObjectSelection(this.showObjectSelection) } + this.scrubFileSize = viewer.fileSize viewer.gcodeProcessor.updateFilePosition(viewer.fileSize) } @@ -593,6 +616,7 @@ export default class Viewer extends Mixins(BaseMixin) { await viewer.processFile(text) this.loadingPercent = 100 this.finishLoad() + this.scrubFileSize = viewer.fileSize } cancelDownload() { @@ -672,8 +696,7 @@ export default class Viewer extends Mixins(BaseMixin) { async trackingChanged(newVal: boolean) { if (!viewer) return if (newVal) { - //Set zSlider to max value - this.zSlider = this.maxZSlider + this.scrubPlaying = false //Force renderers reload. viewer.gcodeProcessor.updateFilePosition(0) viewer?.forceRender() @@ -989,12 +1012,6 @@ export default class Viewer extends Mixins(BaseMixin) { } } - @Watch('zSlider') - zSliderChanged(newVal: number) { - viewer?.setZClipPlane(newVal, -1) - viewer?.forceRender() - } - get progressColor() { return this.$store.state.gui.gcodeViewer?.progressColor ?? '#FFFFFF' } @@ -1004,8 +1021,46 @@ export default class Viewer extends Mixins(BaseMixin) { viewer?.setProgressColor(newVal) } - updateZSlider(newVal: any) { - this.zSlider = newVal + @Watch('scrubPlaying') + scrubPlayingChanged(to: boolean): void { + if (to) { + if (this.scrubInterval) { + clearInterval(this.scrubInterval) + this.scrubInterval = undefined + } + this.scrubPlaying = true + if (this.scrubPosition >= this.scrubFileSize) { + this.scrubPosition = 0 + } + + viewer.gcodeProcessor.updateFilePosition(this.scrubPosition - 30000) + this.scrubInterval = setInterval(() => { + this.scrubPosition += 100 * this.scrubSpeed + viewer.gcodeProcessor.updateFilePosition(this.scrubPosition) + if (this.tracking || this.scrubPosition >= this.scrubFileSize) { + this.scrubPlaying = false + } + }, 200) + } else { + if (this.scrubInterval) clearInterval(this.scrubInterval) + this.scrubPlaying = false + this.scrubInterval = undefined + } + } + + get showScrubber() { + return !this.tracking && this.scrubFileSize > 0 + } + + @Debounce(200) + @Watch('scrubPosition') + updateScrubPosition(to: number): void { + if (!this.tracking) viewer.gcodeProcessor.updateFilePosition(to) + } + + fastForward(): void { + this.scrubPosition = this.scrubFileSize + viewer.gcodeProcessor.updateFilePosition(this.scrubPosition) } } diff --git a/src/components/panels/GcodefilesPanel.vue b/src/components/panels/GcodefilesPanel.vue index de3a8623..2bba85cf 100644 --- a/src/components/panels/GcodefilesPanel.vue +++ b/src/components/panels/GcodefilesPanel.vue @@ -1321,7 +1321,7 @@ export default class GcodefilesPanel extends Mixins(BaseMixin) { } view3D(item: FileStateFile) { - this.$router.push({ path: '/viewer', query: { filename: this.currentPath + '/' + item.filename } }) + this.$router.push({ path: '/viewer', query: { filename: 'gcodes' + this.currentPath + '/' + item.filename } }) } deleteSelectedFiles() { diff --git a/src/components/settings/SettingsGCodeViewerTab.vue b/src/components/settings/SettingsGCodeViewerTab.vue index 1bc40c39..9703f08b 100644 --- a/src/components/settings/SettingsGCodeViewerTab.vue +++ b/src/components/settings/SettingsGCodeViewerTab.vue @@ -37,6 +37,24 @@ + + + + + + + diff --git a/src/locales/de.json b/src/locales/de.json index 4dd2586d..03e84e03 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -724,6 +724,7 @@ "GridColor": "Gitterfarbe", "MaxFeed": "Max Vorschub", "MinFeed": "Min Vorschub", + "ProgressColor": "Fortschrittsfarbe", "ShowAxes": "Zeige Achsen an" }, "GeneralTab": { diff --git a/src/locales/en.json b/src/locales/en.json index 1c2864c6..7df98d13 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -772,6 +772,7 @@ "GridColor": "Grid Color", "MaxFeed": "Max Feed Rate", "MinFeed": "Min Feed Rate", + "ProgressColor": "Progress Color", "ShowAxes": "Show Axes" }, "GeneralTab": { diff --git a/src/store/gui/index.ts b/src/store/gui/index.ts index a27b0ee0..a971b445 100644 --- a/src/store/gui/index.ts +++ b/src/store/gui/index.ts @@ -118,7 +118,7 @@ export const getDefaultState = (): GuiState => { maxFeed: 100, minFeedColor: '#2196f3', maxFeedColor: '#D41216', - progressColor: '#FFFFFFB2', + progressColor: '#ECECEC', showCursor: true, showTravelMoves: false, showObjectSelection: false,