From 72fd20da92ce93e62e5ddd4a1fc24b0daa42ea2c Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Sun, 10 Sep 2023 19:10:30 +0100 Subject: [PATCH 01/41] chore: updates CHANGELOG.md Signed-off-by: Pedro Lamas --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c50dba62a7..15e39dd9f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.25.3](https://github.com/fluidd-core/fluidd/compare/v1.25.2...v1.25.3) (2023-09-10) + + +### Features + +* **i18n-PL:** update Polish translations ([#1154](https://github.com/fluidd-core/fluidd/issues/1154)) ([8841557](https://github.com/fluidd-core/fluidd/commit/8841557a2abcae2f667655b3e6e9852d7361beed)) +* **i18n-PL:** update Polish translations ([#1163](https://github.com/fluidd-core/fluidd/issues/1163)) ([0fedb66](https://github.com/fluidd-core/fluidd/commit/0fedb660358d780e49f819db8f4aeeb32ebba5dd)) + + +### Bug Fixes + +* adds more chart colors for sensors ([#1168](https://github.com/fluidd-core/fluidd/issues/1168)) ([273092d](https://github.com/fluidd-core/fluidd/commit/273092d450c2b0ea6f5ed4dbf8d41810f8c0a83d)) +* always show Edit in File file browser ([0c1b576](https://github.com/fluidd-core/fluidd/commit/0c1b576c624decd9c510466b41c0db75800f1ed5)) +* **i18n-DE:** Fix typo in german translation ([#1162](https://github.com/fluidd-core/fluidd/issues/1162)) ([4d96dee](https://github.com/fluidd-core/fluidd/commit/4d96dee037118eb05e2032f4ee76e757ef6a42d8)) +* reset camera on change ([#1159](https://github.com/fluidd-core/fluidd/issues/1159)) ([4fe7c88](https://github.com/fluidd-core/fluidd/commit/4fe7c88ca64a644e95d8270c59650eed6db6b5eb)) +* use full Klipper key for thermal data storage ([#1167](https://github.com/fluidd-core/fluidd/issues/1167)) ([849b7ca](https://github.com/fluidd-core/fluidd/commit/849b7cac41972d4a0e31f077aee2e175fa57fa45)) + ## [1.25.2](https://github.com/fluidd-core/fluidd/compare/v1.25.1...v1.25.2) (2023-08-16) From a5e9c06689aabfc67a7bbfc761d5b735e49a172b Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Wed, 13 Sep 2023 16:03:25 +0100 Subject: [PATCH 02/41] chore: dependency updates Signed-off-by: Pedro Lamas --- package-lock.json | 429 ++++++++++++++++++++++------------------------ package.json | 14 +- 2 files changed, 209 insertions(+), 234 deletions(-) diff --git a/package-lock.json b/package-lock.json index 492d1c0aaf..eb630f81c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "fluidd", - "version": "1.25.0", + "version": "1.25.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "fluidd", - "version": "1.25.0", + "version": "1.25.3", "license": "MIT", "dependencies": { "@ctrl/tinycolor": "^4.0.2", @@ -23,7 +23,7 @@ "jwt-decode": "^3.1.2", "lodash-es": "^4.17.21", "md5": "^2.3.0", - "monaco-editor": "^0.41.0", + "monaco-editor": "^0.43.0", "monaco-editor-textmate": "^4.0.0", "monaco-textmate": "^3.0.1", "onigasm": "^2.2.5", @@ -33,7 +33,7 @@ "semver": "^7.5.4", "shlex": "^2.1.2", "sortablejs": "^1.15.0", - "uuid": "^9.0.0", + "uuid": "^9.0.1", "vue": "^2.7.14", "vue-class-component": "^7.2.6", "vue-echarts": "^6.6.1", @@ -59,11 +59,11 @@ "@types/semver": "^7.5.1", "@types/sortablejs": "^1.15.2", "@types/uuid": "^9.0.3", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", "@vitejs/plugin-vue2": "^2.2.0", "@vue/eslint-config-standard": "^8.0.1", - "@vue/eslint-config-typescript": "^11.0.3", + "@vue/eslint-config-typescript": "^12.0.0", "@vue/test-utils": "^1.3.6", "@vue/tsconfig": "^0.1.3", "eslint": "^8.49.0", @@ -86,7 +86,7 @@ "vue-debounce-decorator": "^1.0.1", "vue-i18n-extract": "^2.0.7", "vue-template-compiler": "^2.7.14", - "vue-tsc": "^1.8.10" + "vue-tsc": "^1.8.11" }, "engines": { "node": "^16 || ^18" @@ -3031,32 +3031,33 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", + "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/type-utils": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3065,25 +3066,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", + "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3092,16 +3094,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", + "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -3109,25 +3111,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz", + "integrity": "sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/utils": "6.7.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3136,12 +3138,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", + "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -3149,21 +3151,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", + "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -3176,42 +3178,41 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", + "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", + "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.7.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -3404,14 +3405,14 @@ } }, "node_modules/@vue/eslint-config-typescript": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", - "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz", + "integrity": "sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.59.1", - "@typescript-eslint/parser": "^5.59.1", - "vue-eslint-parser": "^9.1.1" + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "vue-eslint-parser": "^9.3.1" }, "engines": { "node": "^14.17.0 || >=16.0.0" @@ -3428,9 +3429,9 @@ } }, "node_modules/@vue/language-core": { - "version": "1.8.10", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.10.tgz", - "integrity": "sha512-db8PtM4ZZr7SYNH30XpKxUYnUBYaTvcuJ4c2whKK04fuAjbtjAIZ2al5GzGEfUlesmvkpgdbiSviRXUxgD9Omw==", + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.11.tgz", + "integrity": "sha512-+MZOBGqGwfld6hpo0DB47x8eNM0dNqk15ZdfOhj19CpvuYuOWCeVdOEGZunKDyo3QLkTn3kLOSysJzg7FDOQBA==", "dev": true, "dependencies": { "@volar/language-core": "~1.10.0", @@ -3520,13 +3521,13 @@ } }, "node_modules/@vue/typescript": { - "version": "1.8.10", - "resolved": "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.10.tgz", - "integrity": "sha512-vPSpTXMk4chYwvyTGjM891cKgnx2r6vtbdANOp2mRU31f4HYGyLrZBlGgiua7SaO2cLjUg8y91OipJe0t8OFhA==", + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.11.tgz", + "integrity": "sha512-skUmMDiPUUtu1flPmf2YybF+PX8IzBtMioQOaNn6Ck/RhdrPJGj1AX/7s3Buf9G6ln+/KHR1XQuti/FFxw5XVA==", "dev": true, "dependencies": { "@volar/typescript": "~1.10.0", - "@vue/language-core": "1.8.10" + "@vue/language-core": "1.8.11" } }, "node_modules/abab": { @@ -6655,19 +6656,6 @@ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/eslint-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", @@ -6804,15 +6792,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -9755,9 +9734,9 @@ } }, "node_modules/monaco-editor": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.41.0.tgz", - "integrity": "sha512-1o4olnZJsiLmv5pwLEAmzHTE/5geLKQ07BrGxlF4Ri/AXAc2yyDGZwHjiTqD8D/ROKUZmwMA28A+yEowLNOEcA==" + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.43.0.tgz", + "integrity": "sha512-cnoqwQi/9fml2Szamv1XbSJieGJ1Dc8tENVMD26Kcfl7xGQWp7OBKMjlwKVGYFJ3/AXJjSOGvcqK7Ry/j9BM1Q==" }, "node_modules/monaco-editor-textmate": { "version": "4.0.0", @@ -9842,12 +9821,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -12180,6 +12153,18 @@ "node": ">=8" } }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -12680,9 +12665,13 @@ "dev": true }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -13270,13 +13259,13 @@ } }, "node_modules/vue-tsc": { - "version": "1.8.10", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.10.tgz", - "integrity": "sha512-ptpTFFDoHQgkWJF7i5iERxooiQzOGtG1uKTfmAUuS3qPuSQGq+Ky/S8BFHhnFGwoOxq/PjmGN2QSZEfg1rtzQA==", + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.11.tgz", + "integrity": "sha512-BzfiMdPqDHBlysx4g26NkfVHSQwGD/lTRausmxN9sFyjXz34OWfsbkh0YsVkX84Hu65In1fFlxHiG39Tr4Vojg==", "dev": true, "dependencies": { - "@vue/language-core": "1.8.10", - "@vue/typescript": "1.8.10", + "@vue/language-core": "1.8.11", + "@vue/typescript": "1.8.11", "semver": "^7.3.8" }, "bin": { @@ -16091,102 +16080,103 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", + "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", "dev": true, "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/type-utils": "6.7.0", + "@typescript-eslint/utils": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", + "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", + "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0" } }, "@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz", + "integrity": "sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/utils": "6.7.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", + "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", + "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": "6.7.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", + "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", "dev": true, "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.0", + "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.0", + "semver": "^7.5.4" } }, "@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", + "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "6.7.0", + "eslint-visitor-keys": "^3.4.1" } }, "@vitejs/plugin-vue2": { @@ -16340,20 +16330,20 @@ } }, "@vue/eslint-config-typescript": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", - "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz", + "integrity": "sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==", "dev": true, "requires": { - "@typescript-eslint/eslint-plugin": "^5.59.1", - "@typescript-eslint/parser": "^5.59.1", - "vue-eslint-parser": "^9.1.1" + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "vue-eslint-parser": "^9.3.1" } }, "@vue/language-core": { - "version": "1.8.10", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.10.tgz", - "integrity": "sha512-db8PtM4ZZr7SYNH30XpKxUYnUBYaTvcuJ4c2whKK04fuAjbtjAIZ2al5GzGEfUlesmvkpgdbiSviRXUxgD9Omw==", + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.11.tgz", + "integrity": "sha512-+MZOBGqGwfld6hpo0DB47x8eNM0dNqk15ZdfOhj19CpvuYuOWCeVdOEGZunKDyo3QLkTn3kLOSysJzg7FDOQBA==", "dev": true, "requires": { "@volar/language-core": "~1.10.0", @@ -16420,13 +16410,13 @@ "requires": {} }, "@vue/typescript": { - "version": "1.8.10", - "resolved": "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.10.tgz", - "integrity": "sha512-vPSpTXMk4chYwvyTGjM891cKgnx2r6vtbdANOp2mRU31f4HYGyLrZBlGgiua7SaO2cLjUg8y91OipJe0t8OFhA==", + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/@vue/typescript/-/typescript-1.8.11.tgz", + "integrity": "sha512-skUmMDiPUUtu1flPmf2YybF+PX8IzBtMioQOaNn6Ck/RhdrPJGj1AX/7s3Buf9G6ln+/KHR1XQuti/FFxw5XVA==", "dev": true, "requires": { "@volar/typescript": "~1.10.0", - "@vue/language-core": "1.8.10" + "@vue/language-core": "1.8.11" } }, "abab": { @@ -18780,16 +18770,6 @@ "xml-name-validator": "^4.0.0" } }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, "eslint-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", @@ -18864,12 +18844,6 @@ } } }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, "estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -21115,9 +21089,9 @@ } }, "monaco-editor": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.41.0.tgz", - "integrity": "sha512-1o4olnZJsiLmv5pwLEAmzHTE/5geLKQ07BrGxlF4Ri/AXAc2yyDGZwHjiTqD8D/ROKUZmwMA28A+yEowLNOEcA==" + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.43.0.tgz", + "integrity": "sha512-cnoqwQi/9fml2Szamv1XbSJieGJ1Dc8tENVMD26Kcfl7xGQWp7OBKMjlwKVGYFJ3/AXJjSOGvcqK7Ry/j9BM1Q==" }, "monaco-editor-textmate": { "version": "4.0.0", @@ -21175,12 +21149,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -22962,6 +22930,13 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, + "ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "requires": {} + }, "tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -23335,9 +23310,9 @@ "dev": true }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" }, "validate-npm-package-license": { "version": "3.0.4", @@ -23700,13 +23675,13 @@ } }, "vue-tsc": { - "version": "1.8.10", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.10.tgz", - "integrity": "sha512-ptpTFFDoHQgkWJF7i5iERxooiQzOGtG1uKTfmAUuS3qPuSQGq+Ky/S8BFHhnFGwoOxq/PjmGN2QSZEfg1rtzQA==", + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.11.tgz", + "integrity": "sha512-BzfiMdPqDHBlysx4g26NkfVHSQwGD/lTRausmxN9sFyjXz34OWfsbkh0YsVkX84Hu65In1fFlxHiG39Tr4Vojg==", "dev": true, "requires": { - "@vue/language-core": "1.8.10", - "@vue/typescript": "1.8.10", + "@vue/language-core": "1.8.11", + "@vue/typescript": "1.8.11", "semver": "^7.3.8" } }, diff --git a/package.json b/package.json index c56ef7e165..d9b25414f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fluidd", - "version": "1.25.0", + "version": "1.25.3", "private": true, "description": "fluidd, a klipper web client.", "author": { @@ -47,7 +47,7 @@ "jwt-decode": "^3.1.2", "lodash-es": "^4.17.21", "md5": "^2.3.0", - "monaco-editor": "^0.41.0", + "monaco-editor": "^0.43.0", "monaco-editor-textmate": "^4.0.0", "monaco-textmate": "^3.0.1", "onigasm": "^2.2.5", @@ -57,7 +57,7 @@ "semver": "^7.5.4", "shlex": "^2.1.2", "sortablejs": "^1.15.0", - "uuid": "^9.0.0", + "uuid": "^9.0.1", "vue": "^2.7.14", "vue-class-component": "^7.2.6", "vue-echarts": "^6.6.1", @@ -83,11 +83,11 @@ "@types/semver": "^7.5.1", "@types/sortablejs": "^1.15.2", "@types/uuid": "^9.0.3", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", "@vitejs/plugin-vue2": "^2.2.0", "@vue/eslint-config-standard": "^8.0.1", - "@vue/eslint-config-typescript": "^11.0.3", + "@vue/eslint-config-typescript": "^12.0.0", "@vue/test-utils": "^1.3.6", "@vue/tsconfig": "^0.1.3", "eslint": "^8.49.0", @@ -110,7 +110,7 @@ "vue-debounce-decorator": "^1.0.1", "vue-i18n-extract": "^2.0.7", "vue-template-compiler": "^2.7.14", - "vue-tsc": "^1.8.10" + "vue-tsc": "^1.8.11" }, "_id": "fluidd@0.0.3", "bugs": { From 5c329e5b8e4f6c139330205cbb969076c45a41e1 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Thu, 14 Sep 2023 09:40:34 +0100 Subject: [PATCH 03/41] feat: hides Moonraker devices starting with "_" Signed-off-by: Pedro Lamas --- src/components/common/SystemCommands.vue | 29 ++++++++++++--------- src/components/layout/AppBar.vue | 4 +-- src/components/settings/GeneralSettings.vue | 2 +- src/store/power/getters.ts | 12 ++++++++- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/components/common/SystemCommands.vue b/src/components/common/SystemCommands.vue index 2c673e1aff..5cebb66999 100644 --- a/src/components/common/SystemCommands.vue +++ b/src/components/common/SystemCommands.vue @@ -131,35 +131,38 @@ import { Device } from '@/store/power/types' import StateMixin from '@/mixins/state' import ServicesMixin from '@/mixins/services' import { SocketActions } from '@/api/socketActions' -import { ServiceInfo, SystemInfo } from '@/store/server/types' +import { ServerInfo, ServiceInfo, SystemInfo } from '@/store/server/types' @Component({}) export default class SystemCommands extends Mixins(StateMixin, ServicesMixin) { - get serverInfo () { - return this.$store.getters['server/getInfo'] + get serverInfo (): ServerInfo { + return this.$store.getters['server/getInfo'] as ServerInfo } - get hosted () { - return this.$store.state.config.hostConfig.hosted + get hosted (): boolean { + return this.$store.state.config.hostConfig.hosted as boolean } - get powerDevices () { - return this.$store.state.power.devices + get powerDevices (): Device[] { + return this.$store.getters['power/getDevices'] as Device[] } - get devicePowerComponentEnabled () { - return this.$store.getters['server/componentSupport']('power') + get devicePowerComponentEnabled (): boolean { + return this.$store.getters['server/componentSupport']('power') as boolean } - get services () { - return this.$store.getters['server/getServices'].filter((service: ServiceInfo) => service.name !== 'klipper_mcu') + get services (): ServiceInfo[] { + const services = this.$store.getters['server/getServices'] as ServiceInfo[] + + return services + .filter(service => service.name !== 'klipper_mcu') } get systemInfo (): SystemInfo | null { - return this.$store.getters['server/getSystemInfo'] + return this.$store.getters['server/getSystemInfo'] as SystemInfo | null } - get canControlHost () { + get canControlHost (): boolean { return this.systemInfo?.virtualization?.virt_type !== 'container' } diff --git a/src/components/layout/AppBar.vue b/src/components/layout/AppBar.vue index 9d36982b02..f9db53dbe8 100644 --- a/src/components/layout/AppBar.vue +++ b/src/components/layout/AppBar.vue @@ -295,8 +295,8 @@ export default class AppBar extends Mixins(StateMixin, ServicesMixin, FilesMixin } default: { - const devices = this.$store.state.power.devices as Device[] - const device = devices.find(device => device.device === topNavPowerToggle) + const device = this.$store.getters['power/getDeviceByName'](topNavPowerToggle) as Device + return { type: 'moonraker' as const, name: topNavPowerToggle, diff --git a/src/components/settings/GeneralSettings.vue b/src/components/settings/GeneralSettings.vue index 4ebf34b795..40424fcb2a 100644 --- a/src/components/settings/GeneralSettings.vue +++ b/src/components/settings/GeneralSettings.vue @@ -332,7 +332,7 @@ export default class GeneralSettings extends Mixins(StateMixin) { } get powerDevicesList () { - const devices = this.$store.state.power.devices as Device[] + const devices = this.$store.getters['power/getDevices'] as Device[] const deviceEntries = devices.length ? [ { header: 'Moonraker' }, diff --git a/src/store/power/getters.ts b/src/store/power/getters.ts index 14b8f5c82a..3065e927d6 100644 --- a/src/store/power/getters.ts +++ b/src/store/power/getters.ts @@ -1,6 +1,16 @@ import { GetterTree } from 'vuex' -import { DevicePowerState } from './types' +import { Device, DevicePowerState } from './types' import { RootState } from '../types' export const getters: GetterTree = { + getDevices: (state) => { + return state.devices + .filter(device => !device.device.startsWith('_')) + }, + + getDeviceByName: (state, getters) => (name: string) => { + const devices = getters.getDevices as Device[] + + return devices.find(device => device.device === name) + } } From e1f1a9966941419a0ae5c1918d6021588e047041 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Thu, 14 Sep 2023 10:19:32 +0100 Subject: [PATCH 04/41] fix: hide Power section if there are no devices Signed-off-by: Pedro Lamas --- src/components/common/SystemCommands.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/common/SystemCommands.vue b/src/components/common/SystemCommands.vue index 5cebb66999..1df0e27593 100644 --- a/src/components/common/SystemCommands.vue +++ b/src/components/common/SystemCommands.vue @@ -37,7 +37,7 @@ From ec0f56d3729e56e662298cef834fc592647ef224 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Fri, 15 Sep 2023 15:53:27 +0100 Subject: [PATCH 05/41] fix: delta printers can only home all (#1175) Signed-off-by: Pedro Lamas --- src/components/widgets/toolhead/ToolheadMoves.vue | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/widgets/toolhead/ToolheadMoves.vue b/src/components/widgets/toolhead/ToolheadMoves.vue index d8cbc84a32..dbb1542075 100644 --- a/src/components/widgets/toolhead/ToolheadMoves.vue +++ b/src/components/widgets/toolhead/ToolheadMoves.vue @@ -28,7 +28,6 @@ /> - + From 83fc65227326e992227f5d1ef99c2328ad0d59c1 Mon Sep 17 00:00:00 2001 From: Dr_Perry_Coke <76223634+DrPerryCoke@users.noreply.github.com> Date: Thu, 21 Sep 2023 10:57:18 +0300 Subject: [PATCH 06/41] feat(i18n-RU): Update Russian translations (#1179) Signed-off-by: Igor Taranov --- src/locales/ru.yaml | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/locales/ru.yaml b/src/locales/ru.yaml index 9fafa88f33..5082fbe2a4 100644 --- a/src/locales/ru.yaml +++ b/src/locales/ru.yaml @@ -693,3 +693,41 @@ app: variable_fps: Переменный FPS variable_fps_min: Минимальная Частота Кадров variable_fps_max: Максимальная Частота Кадров + spoolman: + btn: + manage_spools: Менеджер катушек + scan_code: Сканировать код + select: Выбор + title: + spoolman: Spoolman + spool_selection: Выбор катушки + scan_spool: Сканировать катушку + label: + change_spool: Изменить катушку + comment: Комментарий + device_camera: Устройство + filament_name: Филамент + first_used: Первое использование + id: ID + last_used: Последнее использование + location: Расположение + lot_nr: № партии + material: Тип + remaining_weight: Оставшийся вес + vendor: Производитель + msg: + no_spool: >- + Вы не выбрали катушку. + Вы уверены, что хотите печатать без отслеживания филамента? + no_filament: >- + На выбранной вами катушке может не хватить филамента для успешного завершения задания печати. + Вы уверены что хотите продолжить? + no_required_length: >- + Количество филамента, необходимой для печати выбранного файла, неизвестно. + Вы хотите продолжить? + mismatched_filament: >- + Материал выбранного филамента не соответствует материалу, выбранному в слайсере. + Вы уверены что хотите продолжить? + tracking_inactive: >- + Отслеживание филамента неактивно. + Для начала выберите катушку. From 9465a50d98b6cf0e4f9cfc53a074ca708d40703c Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Thu, 21 Sep 2023 11:22:31 +0100 Subject: [PATCH 07/41] feat: Adds toolhead bars style controls (#1177) Signed-off-by: Pedro Lamas --- components.d.ts | 1 + src/components/settings/ToolheadSettings.vue | 310 +++++++++++++----- src/components/ui/AppUpDownBtnGroup.vue | 60 ++++ src/components/widgets/toolhead/Toolhead.vue | 18 +- .../widgets/toolhead/ToolheadControlBars.vue | 77 +++++ .../toolhead/ToolheadControlBarsAxis.vue | 88 +++++ .../toolhead/ToolheadControlBarsStepper.vue | 53 +++ ...headMoves.vue => ToolheadControlCross.vue} | 2 +- src/locales/en.yaml | 5 + src/store/config/state.ts | 3 + src/store/config/types.ts | 5 + src/store/printer/getters.ts | 8 + 12 files changed, 533 insertions(+), 97 deletions(-) create mode 100644 src/components/ui/AppUpDownBtnGroup.vue create mode 100644 src/components/widgets/toolhead/ToolheadControlBars.vue create mode 100644 src/components/widgets/toolhead/ToolheadControlBarsAxis.vue create mode 100644 src/components/widgets/toolhead/ToolheadControlBarsStepper.vue rename src/components/widgets/toolhead/{ToolheadMoves.vue => ToolheadControlCross.vue} (98%) diff --git a/components.d.ts b/components.d.ts index 92f00ba75b..0005c39471 100644 --- a/components.d.ts +++ b/components.d.ts @@ -41,6 +41,7 @@ declare module 'vue' { AppTextField: typeof import('./src/components/ui/AppTextField.vue')['default'] AppThumbnailSize: typeof import('./src/components/ui/AppThumbnailSize.vue')['default'] AppToolsDrawer: typeof import('./src/components/layout/AppToolsDrawer.vue')['default'] + AppUpDownBtnGroup: typeof import('./src/components/ui/AppUpDownBtnGroup.vue')['default'] AppUploadAndPrintBtn: typeof import('./src/components/layout/AppUploadAndPrintBtn.vue')['default'] AppUserMenu: typeof import('./src/components/layout/AppUserMenu.vue')['default'] AppWarnings: typeof import('./src/components/common/AppWarnings.vue')['default'] diff --git a/src/components/settings/ToolheadSettings.vue b/src/components/settings/ToolheadSettings.vue index e9acdc3a9d..dec217b4e6 100644 --- a/src/components/settings/ToolheadSettings.vue +++ b/src/components/settings/ToolheadSettings.vue @@ -8,36 +8,6 @@ dense class="mb-4" > - - - - - - - - - - - - - - - - - - - - + - - - + + + - + @@ -169,23 +217,39 @@ - - + + + + + + + @@ -248,6 +312,7 @@ import { Component, Ref, Mixins } from 'vue-property-decorator' import { defaultState } from '@/store/config/state' import { VInput } from '@/types' import ToolheadMixin from '@/mixins/toolhead' +import { ToolheadControlStyle } from '@/store/config/types' @Component({ components: {} @@ -256,6 +321,12 @@ export default class ToolHeadSettings extends Mixins(ToolheadMixin) { @Ref('toolheadMoveDistances') readonly toolheadMoveDistancesElement!: VInput + @Ref('toolheadXYMoveDistances') + readonly toolheadXYMoveDistancesElement!: VInput + + @Ref('toolheadZMoveDistances') + readonly toolheadZMoveDistancesElement!: VInput + @Ref('zAdjustValues') readonly zAdjustValuesElement!: VInput @@ -335,6 +406,31 @@ export default class ToolHeadSettings extends Mixins(ToolheadMixin) { }) } + get toolheadControlStyle () { + return this.$store.state.config.uiSettings.general.toolheadControlStyle + } + + set toolheadControlStyle (value: ToolheadControlStyle) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.toolheadControlStyle', + value, + server: true + }) + } + + get availableToolheadControlStyles () { + return [ + { + value: 'cross', + text: this.$t('app.general.label.cross') + }, + { + value: 'bars', + text: this.$t('app.general.label.bars') + } + ] + } + get toolheadMoveDistances () { return this.$store.state.config.uiSettings.general.toolheadMoveDistances } @@ -351,6 +447,38 @@ export default class ToolHeadSettings extends Mixins(ToolheadMixin) { }) } + get toolheadXYMoveDistances () { + return this.$store.state.config.uiSettings.general.toolheadXYMoveDistances + } + + set toolheadXYMoveDistances (value: (number | string)[]) { + if (!this.toolheadXYMoveDistancesElement.validate(true)) { + return + } + + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.toolheadXYMoveDistances', + value: [...new Set(value.map(Number))].sort((a, b) => a - b), + server: true + }) + } + + get toolheadZMoveDistances () { + return this.$store.state.config.uiSettings.general.toolheadZMoveDistances + } + + set toolheadZMoveDistances (value: (number | string)[]) { + if (!this.toolheadZMoveDistancesElement.validate(true)) { + return + } + + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.toolheadZMoveDistances', + value: [...new Set(value.map(Number))].sort((a, b) => a - b), + server: true + }) + } + get useGcodeCoords () { return this.$store.state.config.uiSettings.general.useGcodeCoords } diff --git a/src/components/ui/AppUpDownBtnGroup.vue b/src/components/ui/AppUpDownBtnGroup.vue new file mode 100644 index 0000000000..f125cc5f44 --- /dev/null +++ b/src/components/ui/AppUpDownBtnGroup.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/components/widgets/toolhead/Toolhead.vue b/src/components/widgets/toolhead/Toolhead.vue index 5f53c95fec..6425e325e0 100644 --- a/src/components/widgets/toolhead/Toolhead.vue +++ b/src/components/widgets/toolhead/Toolhead.vue @@ -9,7 +9,8 @@ > - + + @@ -41,7 +42,8 @@ diff --git a/src/components/widgets/toolhead/ToolheadControlBars.vue b/src/components/widgets/toolhead/ToolheadControlBars.vue new file mode 100644 index 0000000000..85447619c1 --- /dev/null +++ b/src/components/widgets/toolhead/ToolheadControlBars.vue @@ -0,0 +1,77 @@ + + + diff --git a/src/components/widgets/toolhead/ToolheadControlBarsAxis.vue b/src/components/widgets/toolhead/ToolheadControlBarsAxis.vue new file mode 100644 index 0000000000..7c67b8f80a --- /dev/null +++ b/src/components/widgets/toolhead/ToolheadControlBarsAxis.vue @@ -0,0 +1,88 @@ + + + diff --git a/src/components/widgets/toolhead/ToolheadControlBarsStepper.vue b/src/components/widgets/toolhead/ToolheadControlBarsStepper.vue new file mode 100644 index 0000000000..711df98bf7 --- /dev/null +++ b/src/components/widgets/toolhead/ToolheadControlBarsStepper.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/components/widgets/toolhead/ToolheadMoves.vue b/src/components/widgets/toolhead/ToolheadControlCross.vue similarity index 98% rename from src/components/widgets/toolhead/ToolheadMoves.vue rename to src/components/widgets/toolhead/ToolheadControlCross.vue index dbb1542075..e4f130147d 100644 --- a/src/components/widgets/toolhead/ToolheadMoves.vue +++ b/src/components/widgets/toolhead/ToolheadControlCross.vue @@ -193,7 +193,7 @@ import StateMixin from '@/mixins/state' import ToolheadMixin from '@/mixins/toolhead' @Component({}) -export default class ToolheadMoves extends Mixins(StateMixin, ToolheadMixin) { +export default class ToolheadControlCross extends Mixins(StateMixin, ToolheadMixin) { moveLength = '' fab = false diff --git a/src/locales/en.yaml b/src/locales/en.yaml index ae87b77428..1d3ff42a3e 100644 --- a/src/locales/en.yaml +++ b/src/locales/en.yaml @@ -235,12 +235,14 @@ app: api_key: Api Key api_url: API URL auth_source: Authentication Source + bars: Bars category: Category change_password: Change password clear_all: Clear all color: Color command: Command confirm: Confirm + cross: Cross current_password: Current password current_user: Current user default: Default @@ -575,7 +577,10 @@ app: title: Title to_browser_local_storage: To browser local storage to_browser_session_storage: To browser session storage + toolhead_control_style: Toolhead control style toolhead_move_distances: Toolhead distance values + toolhead_xy_move_distances: Toolhead XY distance values + toolhead_z_move_distances: Toolhead Z distance values type: Type unit: Unit z_adjust_values: Z Adjust values diff --git a/src/store/config/state.ts b/src/store/config/state.ts index 94f8e8c20b..38b8e4ee99 100644 --- a/src/store/config/state.ts +++ b/src/store/config/state.ts @@ -30,7 +30,10 @@ export const defaultState = (): ConfigState => { defaultToolheadMoveLength: 1.0, defaultToolheadXYSpeed: 130, defaultToolheadZSpeed: 10, + toolheadControlStyle: 'cross', toolheadMoveDistances: [0.1, 1, 10, 25, 50, 100], + toolheadXYMoveDistances: [1, 10, 50], + toolheadZMoveDistances: [0.1, 1, 10], useGcodeCoords: false, zAdjustDistances: [0.005, 0.01, 0.025, 0.050], enableVersionNotifications: true, diff --git a/src/store/config/types.ts b/src/store/config/types.ts index 5f19fa83af..7435b3433a 100644 --- a/src/store/config/types.ts +++ b/src/store/config/types.ts @@ -61,7 +61,10 @@ export interface GeneralConfig { defaultToolheadMoveLength: number; defaultToolheadXYSpeed: number; defaultToolheadZSpeed: number; + toolheadControlStyle: ToolheadControlStyle; toolheadMoveDistances: number[]; + toolheadXYMoveDistances: number[]; + toolheadZMoveDistances: number[]; useGcodeCoords: boolean; zAdjustDistances: number[]; enableVersionNotifications: boolean; @@ -88,6 +91,8 @@ export interface GeneralConfig { thumbnailSize: number; } +export type ToolheadControlStyle = 'cross' | 'bars' + export type TextSortOrder = 'default' | 'numeric-prefix' | 'version' export type CameraFullscreenAction = 'embed' | 'rawstream'; diff --git a/src/store/printer/getters.ts b/src/store/printer/getters.ts index 4c238cfe37..c07fabce12 100644 --- a/src/store/printer/getters.ts +++ b/src/store/printer/getters.ts @@ -312,6 +312,14 @@ export const getters: GetterTree = { return extruderSteppers.sort((a, b) => a.name.localeCompare(b.name)) }, + getSteppers: (state, getters): string[] => { + const printerConfig = getters.getPrinterConfig() + + return Object.keys(printerConfig) + .filter(key => key.startsWith('stepper_')) + .sort() + }, + /** * Given axes, returns a boolean indicating if the axes are homed. */ From 899c95c73d7257289315b191f48233a2bc37c206 Mon Sep 17 00:00:00 2001 From: Nate Date: Sat, 23 Sep 2023 18:39:47 +0200 Subject: [PATCH 08/41] feat: Added "calibrate" button to BedMeshCard (#1182) Signed-off-by: Nathan Meulenberg --- src/components/widgets/bedmesh/BedMeshCard.vue | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/components/widgets/bedmesh/BedMeshCard.vue b/src/components/widgets/bedmesh/BedMeshCard.vue index 03323cbe4f..3842246263 100644 --- a/src/components/widgets/bedmesh/BedMeshCard.vue +++ b/src/components/widgets/bedmesh/BedMeshCard.vue @@ -11,6 +11,16 @@ v-if="!fullScreen" #menu > + + {{ $t('app.general.btn.calibrate') }} + + Date: Sat, 23 Sep 2023 18:49:06 +0200 Subject: [PATCH 09/41] feat(spoolman): allow toggling individual sanity check warnings (#1186) Signed-off-by: Mathis Mensing --- src/components/settings/SpoolmanSettings.vue | 46 ++++++++++ .../widgets/spoolman/SpoolSelectionDialog.vue | 89 ++++++++++++------- src/locales/de.yaml | 4 + src/locales/en.yaml | 4 + src/store/config/state.ts | 4 +- src/store/config/types.ts | 2 + 6 files changed, 115 insertions(+), 34 deletions(-) diff --git a/src/components/settings/SpoolmanSettings.vue b/src/components/settings/SpoolmanSettings.vue index 8a244ac842..5881e076c2 100644 --- a/src/components/settings/SpoolmanSettings.vue +++ b/src/components/settings/SpoolmanSettings.vue @@ -54,6 +54,28 @@ /> + + + + + + + + + + (this.cameraScanSource = 'device')) } else { - const autoOpenCameraId = this.$store.state.config.uiSettings.spoolman.autoOpenQRDetectionCamera + const autoOpenCameraId = this.autoOpenQRDetectionCamera if (this.$store.getters['cameras/getCameraById'](autoOpenCameraId)) { this.$nextTick(() => (this.cameraScanSource = autoOpenCameraId)) } @@ -344,7 +344,7 @@ export default class SpoolSelectionDialog extends Mixins(StateMixin, BrowserMixi this.search = '' } - if (this.$store.state.config.uiSettings.spoolman.autoSelectSpoolOnMatch) { + if (this.autoSelectSpoolOnMatch) { this.handleSelectSpool() } } @@ -364,30 +364,25 @@ export default class SpoolSelectionDialog extends Mixins(StateMixin, BrowserMixi } const spool = this.availableSpools.find(spool => spool.id === this.selectedSpool) - if (spool && this.filename) { - // check for enough filament + if (spool && this.filename && (this.warnOnFilamentTypeMismatch || this.warnOnNotEnoughFilament)) { + let requiredLength = 0 // l[mm] - let remainingLength = spool.remaining_length - if (!remainingLength && spool.remaining_weight) { - // l[mm] = m[g]/D[g/cm³]/A[mm²]*(1000mm³/cm³) - remainingLength = spool.remaining_weight / spool.filament.density / (Math.PI * (spool.filament.diameter / 2) ** 2) * 1000 - } - - // l[mm] - let requiredLength = 0 if (this.currentFile) { - const fileMaterial = this.currentFile.filament_type?.toLowerCase() - const spoolMaterial = spool.filament.material?.toLowerCase() - if (spoolMaterial && fileMaterial && fileMaterial !== spoolMaterial) { - // filament materials don't match - - const confirmation = await this.$confirm( - this.$tc('app.spoolman.msg.mismatched_filament'), - { title: this.$tc('app.general.label.confirm'), color: 'card-heading', icon: '$warning' } - ) - - if (!confirmation) { - return + if (this.warnOnFilamentTypeMismatch) { + const fileMaterials = this.currentFile.filament_type?.toLowerCase() + .split(';').map((x: string) => x.replace(/"/g, '')) + const spoolMaterial = spool.filament.material?.toLowerCase() + if (spoolMaterial && fileMaterials && !fileMaterials.includes(spoolMaterial)) { + // filament materials don't match + + const confirmation = await this.$confirm( + this.$tc('app.spoolman.msg.mismatched_filament'), + { title: this.$tc('app.general.label.confirm'), color: 'card-heading', icon: '$warning' } + ) + + if (!confirmation) { + return + } } } @@ -412,16 +407,24 @@ export default class SpoolSelectionDialog extends Mixins(StateMixin, BrowserMixi } } - if (typeof remainingLength === 'number' && requiredLength >= remainingLength) { - // not enough filament + if (this.warnOnNotEnoughFilament) { + let remainingLength = spool.remaining_length + if (!remainingLength && spool.remaining_weight) { + // l[mm] = m[g]/D[g/cm³]/A[mm²]*(1000mm³/cm³) + remainingLength = spool.remaining_weight / spool.filament.density / (Math.PI * (spool.filament.diameter / 2) ** 2) * 1000 + } - const confirmation = await this.$confirm( - this.$tc('app.spoolman.msg.no_filament'), - { title: this.$tc('app.general.label.confirm'), color: 'card-heading', icon: '$warning' } - ) + if (typeof remainingLength === 'number' && requiredLength >= remainingLength) { + // not enough filament - if (!confirmation) { - return + const confirmation = await this.$confirm( + this.$tc('app.spoolman.msg.no_filament'), + { title: this.$tc('app.general.label.confirm'), color: 'card-heading', icon: '$warning' } + ) + + if (!confirmation) { + return + } } } } @@ -446,6 +449,26 @@ export default class SpoolSelectionDialog extends Mixins(StateMixin, BrowserMixi get spoolmanURL () { return this.$store.state.server.config.spoolman?.server } + + get preferDeviceCamera () { + return this.$store.state.config.uiSettings.spoolman.preferDeviceCamera + } + + get autoOpenQRDetectionCamera () { + return this.$store.state.config.uiSettings.spoolman.autoOpenQRDetectionCamera + } + + get autoSelectSpoolOnMatch () { + return this.$store.state.config.uiSettings.spoolman.autoSelectSpoolOnMatch + } + + get warnOnNotEnoughFilament () { + return this.$store.state.config.uiSettings.spoolman.warnOnNotEnoughFilament + } + + get warnOnFilamentTypeMismatch (): boolean { + return this.$store.state.config.uiSettings.spoolman.warnOnFilamentTypeMismatch + } } diff --git a/src/locales/de.yaml b/src/locales/de.yaml index 731aa3fb4c..556e854be6 100644 --- a/src/locales/de.yaml +++ b/src/locales/de.yaml @@ -754,3 +754,7 @@ app: auto_select_spool_on_match: Spulenauswahl bei QR-Code- Übereinstimmung automatisch übernehmen prefer_device_camera: Gerätekamera wenn verfügbar zur QR-Code- Erkennung verwenden show_spool_selection_dialog_on_print_start: Spulenauswahl-Dialog automatisch bei Druckstart anzeigen + warn_on_not_enough_filament: >- + Warnung anzeigen, wenn die Spule nicht genug Filament verbleibend hat, um den Druck abzuschließen + warn_on_filament_type_mismatch: >- + Warnung anzeigen, wenn der Filamenttyp der Spule nicht mit dem im Slicer ausgewählten übereinstimmt diff --git a/src/locales/en.yaml b/src/locales/en.yaml index 1d3ff42a3e..1f42ab3d89 100644 --- a/src/locales/en.yaml +++ b/src/locales/en.yaml @@ -821,3 +821,7 @@ app: auto_select_spool_on_match: Automatically commit spool selection on QR code match prefer_device_camera: Use device camera for QR code detection if available show_spool_selection_dialog_on_print_start: Show spool selection dialog on print start + warn_on_not_enough_filament: >- + Show a warning when the selected spool doesn't have enough filament left on it to finish the print + warn_on_filament_type_mismatch: >- + Show a warning when the spool's filament type and the one selected in the slicer don't match diff --git a/src/store/config/state.ts b/src/store/config/state.ts index 38b8e4ee99..2771061ceb 100644 --- a/src/store/config/state.ts +++ b/src/store/config/state.ts @@ -148,7 +148,9 @@ export const defaultState = (): ConfigState => { autoSpoolSelectionDialog: true, autoOpenQRDetectionCamera: null, autoSelectSpoolOnMatch: false, - preferDeviceCamera: false + preferDeviceCamera: false, + warnOnNotEnoughFilament: true, + warnOnFilamentTypeMismatch: true } } } diff --git a/src/store/config/types.ts b/src/store/config/types.ts index 7435b3433a..3e3461c7d3 100644 --- a/src/store/config/types.ts +++ b/src/store/config/types.ts @@ -36,6 +36,8 @@ export interface SpoolmanConfig { autoOpenQRDetectionCamera: string | null; autoSelectSpoolOnMatch: boolean; preferDeviceCamera: boolean; + warnOnNotEnoughFilament: boolean; + warnOnFilamentTypeMismatch: boolean; } export interface HostConfig { From f5fbf366c18bc73dfa7cc043cc2c53856ce78623 Mon Sep 17 00:00:00 2001 From: Kenneth Jiang Date: Sat, 23 Sep 2023 10:05:37 -0700 Subject: [PATCH 10/41] docs(obico): remote access page refresh (#1187) Signed-off-by: Kenneth Jiang --- docs/configuration/obico_for_remote_access.md | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/docs/configuration/obico_for_remote_access.md b/docs/configuration/obico_for_remote_access.md index a06edaf9c1..aac1042f43 100644 --- a/docs/configuration/obico_for_remote_access.md +++ b/docs/configuration/obico_for_remote_access.md @@ -6,21 +6,37 @@ nav_order: 6 permalink: /configuration/obico_for_remote_access --- -# Obico for Remote Access +# Obico for Klipper - Remote Access, AI Failure Detection, and Mobile App {: .no_toc } --- -[Obico for Klipper](https://obico.io/docs/user-guides/klipper-setup/) is an -open-source solution to let you monitor and access your printer while you -are not on the same local network. +[Obico for Klipper](https://www.obico.io/klipper.html) is a 100% open-source, free software +that lets you monitor and access your printer remotely from anywhere, while you are +not on the same local network. Access the full Fluidd interface remotely from anywhere +on a web browser or use the Obico mobile app to monitor your printer on the go. -* Obico sends status messages as well as webcam snapshots to mobile - push notification, Email, Telegram, Discord, and more. +Formerly known as The Spaghetti Detective, [Obico](https://www.obico.io) is the first +and best AI print failure detection. Let AI watch your prints and alert you through +your preferred channel or pause the print if something looks fishy. -* You can get the real-time webcam feed and printer control using - Obico’s mobile app or in the browser. +**Additional Obico features:** -* Obico also uses AI to detect print failures. +* Print status messages and webcam snapshots sent to mobile push notifications, +Email, Telegram, Discord, and more. + +* Real-time webcam live feed and printer control using Obico’s mobile app +[iOS](https://apps.apple.com/ae/app/obico-for-octoprint-klipper/id1540646623) +or [Android](https://play.google.com/store/apps/details?id=com.thespaghettidetective.android&hl=en_US&gl=US) +or in the browser. + +* Print Statistics and detailed print history keep you up to date with everything +you need to know about your printing activity. + +* G-Code file management gives you access to your files stored in Obico or in +Klipper remotely from anywhere. + +* Obico is 100% open-source from the client to the server, including the AI failure detection. +[Self-host Obico server vs. Use Obico cloud](https://www.obico.io/obico-cloud-vs-self-hosted.html). Follow [this guide](https://obico.io/docs/user-guides/klipper-setup/) to set up Obico for Klipper. From ee16ea8c2c6be5ece464932b32541116b57bff08 Mon Sep 17 00:00:00 2001 From: Dr_Perry_Coke <76223634+DrPerryCoke@users.noreply.github.com> Date: Sat, 23 Sep 2023 20:09:59 +0300 Subject: [PATCH 11/41] feat(i18n-RU): update Russian translations (#1183) Signed-off-by: Igor Taranov --- src/locales/ru.yaml | 49 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/src/locales/ru.yaml b/src/locales/ru.yaml index 5082fbe2a4..1f7dfca641 100644 --- a/src/locales/ru.yaml +++ b/src/locales/ru.yaml @@ -72,7 +72,9 @@ app: label: print_start_time: Фильтровать напечатанное print_start_time_desc: Фильтровывать уже напечатанные элементы. - klipper_backup_files: Фильтровать резервные копии klipperа + hidden_files_folders: Фильтровать скрытые файлы и папки + klipper_backup_files: Фильтровать резервные копии Klipper + rolled_log_files: Фильтровать файлы перезаписанных логов label: dir_name: Имя папки disk_usage: Использование дискового пространства @@ -94,11 +96,15 @@ app: add_file: Добавить файл command_palette: Команды download_file: Получение файла + duplicate_dir: Копировать папку + duplicate_file: Копировать файл + go_to_file: Перейти к файлу rename_dir: Переименовать папку rename_file: Переименовать файл - upload_file: Загрузка файла(ов) + upload_file: Загрузка файла | Загрузка файлов tooltip: low_on_space: Мало места на диске + move_item: Переместить элемент | Переместить {count} root_disabled: Root недоступен. Проверьте файлы логов. url: klipper_config: 'https://www.klipper3d.org/Config_Reference.html#%{hash}' @@ -133,6 +139,7 @@ app: add_dir: Добавить папку add_file: Добавить файл add_printer: Добавить принтер + add_to_queue: Добавить в очередь adjust_layout: Настроить компановку интерфейса панели управления adjusted: Настроено all: Все @@ -142,8 +149,10 @@ app: clear_profile: Очистить профиль close: Закрыть config_reference: Примеры конфигураций + create_zip_archive: Создать ZIP архив delete: Удалить download: Скачать + duplicate: Копировать edit: Редактировать exit_layout: Выйти из режима редактирования extrude: Экструдировать @@ -180,6 +189,7 @@ app: save_as: Сохранить как save_restart: Сохранить и перезагрузить save_config_and_restart: Сохранить настройки и перезагрузить + select_columns: Выбрать столбцы send: Отправить set_color: Установить цвет set_default_layout: Установить по умолчанию @@ -187,6 +197,7 @@ app: snooze: Вздремнуть socket_reconnect: Повторное подключение socket_refresh: Принудительно обновление + thumbnail_size: Размер эскиза upload: Загрузить upload_print: Загрузить и напечатать view: Вид @@ -303,6 +314,11 @@ app: Нажмите Скорректировать, если требуется корректировка текущего винта; в противном случае нажмите Принять, чтобы продолжить welcome_back: >- С возвращением.
Войдите в систему, чтобы подключится к принтеру. + offline_ready: Fluidd теперь готов к работе в автономном режиме. + needs_refresh: Доступен новый контент. Пожалуйста, нажмите кнопку Обновить, чтобы обновить. + pending_configuration_sections_deleted: Следующие разделы помечены для удаления. + rolledover_logs: >- + Логи следующих приложений были перезаписаны: %{applications} simple_form: error: arrayofnums: Только цифры @@ -381,6 +397,7 @@ app: other_files: Другие файлы pending_configuration_changes: Ожидающие изменения конфигурации retract: Настройки ретракта + rollover_logs: Перезаписать логи runout_sensors: Датчик контроля филамента settings: Настройки stats: Статистика принтера @@ -398,7 +415,7 @@ app: reload_klipper: Перезагружает конфигурацию Klipper. reload_restart_klipper: Перезагружает конфигурацию Klipper и перезапускает MCU. restart_klipper: Перезагружает сервис Klipper. - run_collector: Run collector + run_collector: Запустить сбор данных history: msg: confirm_jobs: Вы уверены? Это очистит все выполненые работы. @@ -451,18 +468,20 @@ app: rawstream: Чистый поток camera_rotate_by: Повернуть на camera_stream_type: Тип потока - camera_url: URL камеры + camera_url_snapshot: URL камеры + camera_url_stream: URL снимка камеры card: Card collector: Collector confirm_on_estop: Требовать подтверждение при аварийной остановке confirm_on_power_device_change: Требуется подтверждение при изменении мощности устройства confirm_on_save_config_and_restart: Просмотрите отложенные изменения в конфигурации перед сохранением и перезапуском - confirm_dirty_editor_close: Требовать подтверждения при закрытии редактора с несохраненными изменениями + confirm_dirty_editor_close: Требовать подтверждение при закрытии редактора с несохраненными изменениями contains: Содержит dark_mode: Тёмная тема dashed: Dashed default_extrude_length: Длина экструдирования по умолчанию default_extrude_speed: Скорость экструдера по умолчанию + default_min_layer_height: Минимальная высота слоя по умолчанию default_toolhead_move_length: Длина перемещения головки по умолчанию default_toolhead_xy_speed: Скорость головки для осей XY по умолчанию default_toolhead_z_speed: Скорость головки для оси Z по умолчанию @@ -484,6 +503,7 @@ app: gcode_coords: Испрользовать координаты GCode group_lower_layers: Показывать напечатанные слои (большая нагрузка на CPU) icon: Иконка + ignore_default_bed_mesh_pending_configuration_changes: Игнорировать запланированные изменения сетки стола invert_x_control: Инвертировать управление по оси X invert_y_control: Инвертировать управление по оси Y invert_z_control: Инвертировать управление по оси Z @@ -497,6 +517,7 @@ app: metrics: Metrics move_line_width: Ширина линии движения name: Name + never: Никогда none: None optional: Optional power_toggle_in_top_nav: Переключатель питания в верхней панели навигации @@ -505,6 +526,7 @@ app: reset: Сбросить настройки retraction_icon_size: Размер иконки ретракта right_y: Right Y-Axis + save_and_restore_view_state: Сохранение и восстановление состояния просмотра show_animations: Показывать анимацию show_barometric_pressure: Показать атмосферное давление show_code_lens: Показывать CodeLens (подсказки в тексте) @@ -512,19 +534,23 @@ app: show_rate_of_change: Показать скорость изменения температуры show_relative_humidity: Показать относительную влажность show_save_config_and_restart: Кнопка «Сохранить конфигурацию и перезапустить» в верхней части панели навигации + show_upload_and_print: Показывать кнопку «Загрузить и распечатать» в верхней части навигации solid: Solid starts_with: Начинается с theme_preset: Цветовая схема thermal_preset_gcode: GCode thermal_preset_name: Имя профиля title: Заголовок + to_browser_local_storage: В локальное хранилище браузера + to_browser_session_storage: В хранилище сеансов браузера toolhead_move_distances: Значения расстояния перемещения головки type: Тип unit: Unit z_adjust_values: Значения подстройки оси Z date_format: Формат даты time_format: Формат времени - force_move_toggle_warning: Требовать поддтверждения при активации "Форсированного перемещения" + text_sort_order: Сортировка текста + force_move_toggle_warning: Требовать подтверждение при активации "Форсированного перемещения" show_manual_probe_dialog_automatically: Автоматически показывать диалоговое окно "Ручная настройка стола" show_bed_screws_adjust_dialog_automatically: Автоматически показывать диалоговое окно "Регулировка винтов стола" timer_options: @@ -546,8 +572,8 @@ app: tooltip: diagnostics_performance: '[BETA] Логирование диагностики может замедлить работу системы' gcode_coords: Использовать GCode положение вместо положение инструментальной головки на панели управления - show_manual_probe_dialog_automatically: Automatically shows helper dialog if running a Manual Probe tool - show_bed_screws_adjust_dialog_automatically: Automatically shows helper dialog if running BED_SCREWS_ADJUST tool + show_manual_probe_dialog_automatically: Автоматически отображает вспомогательное диалоговое окно при запуске инструмента ручного зондирования. + show_bed_screws_adjust_dialog_automatically: Автоматически отображает вспомогательное диалоговое окно при запуске инструмента BED_SCREWS_ADJUST. socket: msg: connecting: Подключение к moonraker... @@ -579,7 +605,9 @@ app: system_memory: Оперативная память system_utilization: Загрузка ОС total_memory: Всего памяти + operating_system: Операционная система version: Версия + virtualization: Виртуализация tool: btn: home_x: X @@ -731,3 +759,8 @@ app: tracking_inactive: >- Отслеживание филамента неактивно. Для начала выберите катушку. + setting: + auto_open_qr_camera: Автоматически открывать камеру для обнаружения QR-кода + auto_select_spool_on_match: Автоматически фиксировать выбор катушки при совпадении QR-кода + prefer_device_camera: Использовать камеру устройства для обнаружения QR-кода, если она доступна + show_spool_selection_dialog_on_print_start: Показывать диалоговое окно выбора катушки при запуске печати From 7590c6913c9cfceeab6833f3a2719c0d84fcd751 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Tue, 26 Sep 2023 11:23:35 +0100 Subject: [PATCH 12/41] chore: dependency updates Signed-off-by: Pedro Lamas --- package-lock.json | 422 +++++++++++++++++++++++----------------------- package.json | 18 +- 2 files changed, 220 insertions(+), 220 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb630f81c3..8b54c97294 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,21 +52,21 @@ "@mdi/js": "^7.2.96", "@originjs/vite-plugin-content": "^1.0.3", "@types/dompurify": "^3.0.2", - "@types/jsdom": "^21.1.2", + "@types/jsdom": "^21.1.3", "@types/lodash-es": "^4.17.9", "@types/md5": "^2.3.2", - "@types/node": "^18.17.15", - "@types/semver": "^7.5.1", - "@types/sortablejs": "^1.15.2", - "@types/uuid": "^9.0.3", - "@typescript-eslint/eslint-plugin": "^6.7.0", - "@typescript-eslint/parser": "^6.7.0", + "@types/node": "^18.18.0", + "@types/semver": "^7.5.3", + "@types/sortablejs": "^1.15.3", + "@types/uuid": "^9.0.4", + "@typescript-eslint/eslint-plugin": "^6.7.3", + "@typescript-eslint/parser": "^6.7.3", "@vitejs/plugin-vue2": "^2.2.0", "@vue/eslint-config-standard": "^8.0.1", "@vue/eslint-config-typescript": "^12.0.0", "@vue/test-utils": "^1.3.6", "@vue/tsconfig": "^0.1.3", - "eslint": "^8.49.0", + "eslint": "^8.50.0", "eslint-plugin-vue": "^9.17.0", "husky": "^8.0.3", "jsdom": "^22.1.0", @@ -82,7 +82,7 @@ "vite-plugin-checker": "^0.6.2", "vite-plugin-monaco-editor": "^1.1.0", "vite-plugin-pwa": "^0.16.5", - "vitest": "^0.34.4", + "vitest": "^0.34.5", "vue-debounce-decorator": "^1.0.1", "vue-i18n-extract": "^2.0.7", "vue-template-compiler": "^2.7.14", @@ -2377,9 +2377,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2925,9 +2925,9 @@ "dev": true }, "node_modules/@types/jsdom": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.2.tgz", - "integrity": "sha512-bGj+7TaCkOwkJfx7HtS9p22Ij0A2aKMuz8a1+owpkxa1wU/HUBy/WAXhdv90uDdVI9rSjGvUrXmLSeA9VP3JeA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.3.tgz", + "integrity": "sha512-1zzqSP+iHJYV4lB3lZhNBa012pubABkj9yG/GuXuf6LZH1cSPIJBqFDrm5JX65HHt6VOnNYdTui/0ySerRbMgA==", "dev": true, "dependencies": { "@types/node": "*", @@ -2936,9 +2936,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", "dev": true }, "node_modules/@types/json5": { @@ -2975,9 +2975,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.17.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.15.tgz", - "integrity": "sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==", + "version": "18.18.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.0.tgz", + "integrity": "sha512-3xA4X31gHT1F1l38ATDIL9GpRLdwVhnEFC8Uikv5ZLlXATwrCYyPq7ZWHxzxc3J/30SUiwiYT+bQe0/XvKlWbw==", "dev": true }, "node_modules/@types/normalize-package-data": { @@ -3001,15 +3001,15 @@ } }, "node_modules/@types/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", "dev": true }, "node_modules/@types/sortablejs": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.2.tgz", - "integrity": "sha512-mOIv/EnPMzAZAVbuh9uGjOZ1BBdimP9Y6IPGntsvQJtko5yapSDKB7GwB3AOlF5N3bkpk4sBwQRpS3aEkiUbaA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.3.tgz", + "integrity": "sha512-v+zh6TZP/cLeMUK0MDx1onp8e7Jk2/4iTQ7sb/n80rTAvBm14yJkpOEfJdrTCkHiF7IZbPjxGX2NRJfogRoYIg==", "dev": true }, "node_modules/@types/tough-cookie": { @@ -3025,22 +3025,22 @@ "dev": true }, "node_modules/@types/uuid": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.3.tgz", - "integrity": "sha512-taHQQH/3ZyI3zP8M/puluDEIEvtQHVYcC6y3N8ijFtAd28+Ey/G4sg1u2gB01S8MwybLOKAp9/yCMu/uR5l3Ug==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.4.tgz", + "integrity": "sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", - "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz", + "integrity": "sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.0", - "@typescript-eslint/type-utils": "6.7.0", - "@typescript-eslint/utils": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/type-utils": "6.7.3", + "@typescript-eslint/utils": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -3066,15 +3066,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", - "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.3.tgz", + "integrity": "sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.7.0", - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/typescript-estree": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", "debug": "^4.3.4" }, "engines": { @@ -3094,13 +3094,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", - "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz", + "integrity": "sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0" + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3111,13 +3111,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz", - "integrity": "sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz", + "integrity": "sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.7.0", - "@typescript-eslint/utils": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/utils": "6.7.3", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -3138,9 +3138,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", - "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz", + "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3151,13 +3151,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", - "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz", + "integrity": "sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3178,17 +3178,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", - "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.3.tgz", + "integrity": "sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.0", - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/typescript-estree": "6.7.3", "semver": "^7.5.4" }, "engines": { @@ -3203,12 +3203,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", - "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz", + "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/types": "6.7.3", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -3233,13 +3233,13 @@ } }, "node_modules/@vitest/expect": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.4.tgz", - "integrity": "sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.5.tgz", + "integrity": "sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==", "dev": true, "dependencies": { - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", + "@vitest/spy": "0.34.5", + "@vitest/utils": "0.34.5", "chai": "^4.3.7" }, "funding": { @@ -3247,12 +3247,12 @@ } }, "node_modules/@vitest/runner": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.4.tgz", - "integrity": "sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.5.tgz", + "integrity": "sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==", "dev": true, "dependencies": { - "@vitest/utils": "0.34.4", + "@vitest/utils": "0.34.5", "p-limit": "^4.0.0", "pathe": "^1.1.1" }, @@ -3288,9 +3288,9 @@ } }, "node_modules/@vitest/snapshot": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.4.tgz", - "integrity": "sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.5.tgz", + "integrity": "sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==", "dev": true, "dependencies": { "magic-string": "^0.30.1", @@ -3302,9 +3302,9 @@ } }, "node_modules/@vitest/spy": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.4.tgz", - "integrity": "sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.5.tgz", + "integrity": "sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==", "dev": true, "dependencies": { "tinyspy": "^2.1.1" @@ -3314,9 +3314,9 @@ } }, "node_modules/@vitest/utils": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.4.tgz", - "integrity": "sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.5.tgz", + "integrity": "sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==", "dev": true, "dependencies": { "diff-sequences": "^29.4.3", @@ -6352,15 +6352,15 @@ } }, "node_modules/eslint": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", - "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.49.0", + "@eslint/js": "8.50.0", "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -10465,9 +10465,9 @@ } }, "node_modules/pretty-format": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", - "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", @@ -12742,9 +12742,9 @@ } }, "node_modules/vite-node": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.4.tgz", - "integrity": "sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.5.tgz", + "integrity": "sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==", "dev": true, "dependencies": { "cac": "^6.7.14", @@ -12752,7 +12752,7 @@ "mlly": "^1.4.0", "pathe": "^1.1.1", "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" @@ -12914,19 +12914,19 @@ } }, "node_modules/vitest": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.4.tgz", - "integrity": "sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.5.tgz", + "integrity": "sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==", "dev": true, "dependencies": { "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", "@types/node": "*", - "@vitest/expect": "0.34.4", - "@vitest/runner": "0.34.4", - "@vitest/snapshot": "0.34.4", - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", + "@vitest/expect": "0.34.5", + "@vitest/runner": "0.34.5", + "@vitest/snapshot": "0.34.5", + "@vitest/spy": "0.34.5", + "@vitest/utils": "0.34.5", "acorn": "^8.9.0", "acorn-walk": "^8.2.0", "cac": "^6.7.14", @@ -12941,7 +12941,7 @@ "tinybench": "^2.5.0", "tinypool": "^0.7.0", "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", - "vite-node": "0.34.4", + "vite-node": "0.34.5", "why-is-node-running": "^2.2.2" }, "bin": { @@ -15524,9 +15524,9 @@ } }, "@eslint/js": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", "dev": true }, "@fontsource/raleway": { @@ -15974,9 +15974,9 @@ "dev": true }, "@types/jsdom": { - "version": "21.1.2", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.2.tgz", - "integrity": "sha512-bGj+7TaCkOwkJfx7HtS9p22Ij0A2aKMuz8a1+owpkxa1wU/HUBy/WAXhdv90uDdVI9rSjGvUrXmLSeA9VP3JeA==", + "version": "21.1.3", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.3.tgz", + "integrity": "sha512-1zzqSP+iHJYV4lB3lZhNBa012pubABkj9yG/GuXuf6LZH1cSPIJBqFDrm5JX65HHt6VOnNYdTui/0ySerRbMgA==", "dev": true, "requires": { "@types/node": "*", @@ -15985,9 +15985,9 @@ } }, "@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", + "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", "dev": true }, "@types/json5": { @@ -16024,9 +16024,9 @@ "dev": true }, "@types/node": { - "version": "18.17.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.15.tgz", - "integrity": "sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==", + "version": "18.18.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.0.tgz", + "integrity": "sha512-3xA4X31gHT1F1l38ATDIL9GpRLdwVhnEFC8Uikv5ZLlXATwrCYyPq7ZWHxzxc3J/30SUiwiYT+bQe0/XvKlWbw==", "dev": true }, "@types/normalize-package-data": { @@ -16050,15 +16050,15 @@ } }, "@types/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", "dev": true }, "@types/sortablejs": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.2.tgz", - "integrity": "sha512-mOIv/EnPMzAZAVbuh9uGjOZ1BBdimP9Y6IPGntsvQJtko5yapSDKB7GwB3AOlF5N3bkpk4sBwQRpS3aEkiUbaA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.3.tgz", + "integrity": "sha512-v+zh6TZP/cLeMUK0MDx1onp8e7Jk2/4iTQ7sb/n80rTAvBm14yJkpOEfJdrTCkHiF7IZbPjxGX2NRJfogRoYIg==", "dev": true }, "@types/tough-cookie": { @@ -16074,22 +16074,22 @@ "dev": true }, "@types/uuid": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.3.tgz", - "integrity": "sha512-taHQQH/3ZyI3zP8M/puluDEIEvtQHVYcC6y3N8ijFtAd28+Ey/G4sg1u2gB01S8MwybLOKAp9/yCMu/uR5l3Ug==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.4.tgz", + "integrity": "sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.0.tgz", - "integrity": "sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz", + "integrity": "sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.0", - "@typescript-eslint/type-utils": "6.7.0", - "@typescript-eslint/utils": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/type-utils": "6.7.3", + "@typescript-eslint/utils": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -16099,54 +16099,54 @@ } }, "@typescript-eslint/parser": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", - "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.3.tgz", + "integrity": "sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "6.7.0", - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/typescript-estree": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", - "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz", + "integrity": "sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==", "dev": true, "requires": { - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0" + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3" } }, "@typescript-eslint/type-utils": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.0.tgz", - "integrity": "sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz", + "integrity": "sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "6.7.0", - "@typescript-eslint/utils": "6.7.0", + "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/utils": "6.7.3", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" } }, "@typescript-eslint/types": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", - "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz", + "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", - "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz", + "integrity": "sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==", "dev": true, "requires": { - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -16155,27 +16155,27 @@ } }, "@typescript-eslint/utils": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.0.tgz", - "integrity": "sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.3.tgz", + "integrity": "sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.0", - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/typescript-estree": "6.7.0", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/typescript-estree": "6.7.3", "semver": "^7.5.4" } }, "@typescript-eslint/visitor-keys": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", - "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz", + "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==", "dev": true, "requires": { - "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/types": "6.7.3", "eslint-visitor-keys": "^3.4.1" } }, @@ -16187,23 +16187,23 @@ "requires": {} }, "@vitest/expect": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.4.tgz", - "integrity": "sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.5.tgz", + "integrity": "sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==", "dev": true, "requires": { - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", + "@vitest/spy": "0.34.5", + "@vitest/utils": "0.34.5", "chai": "^4.3.7" } }, "@vitest/runner": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.4.tgz", - "integrity": "sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.5.tgz", + "integrity": "sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==", "dev": true, "requires": { - "@vitest/utils": "0.34.4", + "@vitest/utils": "0.34.5", "p-limit": "^4.0.0", "pathe": "^1.1.1" }, @@ -16226,9 +16226,9 @@ } }, "@vitest/snapshot": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.4.tgz", - "integrity": "sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.5.tgz", + "integrity": "sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==", "dev": true, "requires": { "magic-string": "^0.30.1", @@ -16237,18 +16237,18 @@ } }, "@vitest/spy": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.4.tgz", - "integrity": "sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.5.tgz", + "integrity": "sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==", "dev": true, "requires": { "tinyspy": "^2.1.1" } }, "@vitest/utils": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.4.tgz", - "integrity": "sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.5.tgz", + "integrity": "sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==", "dev": true, "requires": { "diff-sequences": "^29.4.3", @@ -18527,15 +18527,15 @@ } }, "eslint": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", - "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.49.0", + "@eslint/js": "8.50.0", "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -21626,9 +21626,9 @@ "dev": true }, "pretty-format": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", - "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "requires": { "@jest/schemas": "^29.6.3", @@ -23348,9 +23348,9 @@ } }, "vite-node": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.4.tgz", - "integrity": "sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.5.tgz", + "integrity": "sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==", "dev": true, "requires": { "cac": "^6.7.14", @@ -23358,7 +23358,7 @@ "mlly": "^1.4.0", "pathe": "^1.1.1", "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" } }, "vite-plugin-checker": { @@ -23436,19 +23436,19 @@ } }, "vitest": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.4.tgz", - "integrity": "sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.5.tgz", + "integrity": "sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==", "dev": true, "requires": { "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", "@types/node": "*", - "@vitest/expect": "0.34.4", - "@vitest/runner": "0.34.4", - "@vitest/snapshot": "0.34.4", - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", + "@vitest/expect": "0.34.5", + "@vitest/runner": "0.34.5", + "@vitest/snapshot": "0.34.5", + "@vitest/spy": "0.34.5", + "@vitest/utils": "0.34.5", "acorn": "^8.9.0", "acorn-walk": "^8.2.0", "cac": "^6.7.14", @@ -23463,7 +23463,7 @@ "tinybench": "^2.5.0", "tinypool": "^0.7.0", "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", - "vite-node": "0.34.4", + "vite-node": "0.34.5", "why-is-node-running": "^2.2.2" } }, diff --git a/package.json b/package.json index d9b25414f8..e601eef64e 100644 --- a/package.json +++ b/package.json @@ -76,21 +76,21 @@ "@mdi/js": "^7.2.96", "@originjs/vite-plugin-content": "^1.0.3", "@types/dompurify": "^3.0.2", - "@types/jsdom": "^21.1.2", + "@types/jsdom": "^21.1.3", "@types/lodash-es": "^4.17.9", "@types/md5": "^2.3.2", - "@types/node": "^18.17.15", - "@types/semver": "^7.5.1", - "@types/sortablejs": "^1.15.2", - "@types/uuid": "^9.0.3", - "@typescript-eslint/eslint-plugin": "^6.7.0", - "@typescript-eslint/parser": "^6.7.0", + "@types/node": "^18.18.0", + "@types/semver": "^7.5.3", + "@types/sortablejs": "^1.15.3", + "@types/uuid": "^9.0.4", + "@typescript-eslint/eslint-plugin": "^6.7.3", + "@typescript-eslint/parser": "^6.7.3", "@vitejs/plugin-vue2": "^2.2.0", "@vue/eslint-config-standard": "^8.0.1", "@vue/eslint-config-typescript": "^12.0.0", "@vue/test-utils": "^1.3.6", "@vue/tsconfig": "^0.1.3", - "eslint": "^8.49.0", + "eslint": "^8.50.0", "eslint-plugin-vue": "^9.17.0", "husky": "^8.0.3", "jsdom": "^22.1.0", @@ -106,7 +106,7 @@ "vite-plugin-checker": "^0.6.2", "vite-plugin-monaco-editor": "^1.1.0", "vite-plugin-pwa": "^0.16.5", - "vitest": "^0.34.4", + "vitest": "^0.34.5", "vue-debounce-decorator": "^1.0.1", "vue-i18n-extract": "^2.0.7", "vue-template-compiler": "^2.7.14", From ded93ce2c8afda54f7422d24bee8c7213380e45a Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Thu, 21 Sep 2023 12:36:52 +0100 Subject: [PATCH 13/41] refactor: adds Stepper typings Signed-off-by: Pedro Lamas --- .../widgets/toolhead/ToolheadControlBars.vue | 10 ++-- .../toolhead/ToolheadControlBarsStepper.vue | 11 ++-- src/store/printer/getters.ts | 53 ++++++++++--------- src/store/printer/types.ts | 17 +++--- 4 files changed, 52 insertions(+), 39 deletions(-) diff --git a/src/components/widgets/toolhead/ToolheadControlBars.vue b/src/components/widgets/toolhead/ToolheadControlBars.vue index 85447619c1..a9a91db7b8 100644 --- a/src/components/widgets/toolhead/ToolheadControlBars.vue +++ b/src/components/widgets/toolhead/ToolheadControlBars.vue @@ -46,7 +46,7 @@
@@ -58,6 +58,7 @@ import ToolheadControlBarsAxis from './ToolheadControlBarsAxis.vue' import ToolheadControlBarsStepper from './ToolheadControlBarsStepper.vue' import StateMixin from '@/mixins/state' import ToolheadMixin from '@/mixins/toolhead' +import { Stepper } from '@/store/printer/types' @Component({ components: { @@ -66,8 +67,11 @@ import ToolheadMixin from '@/mixins/toolhead' } }) export default class ToolheadControlBars extends Mixins(StateMixin, ToolheadMixin) { - get steppers (): string[] { - return this.$store.getters['printer/getSteppers'] as string[] + get steppers (): Stepper[] { + const steppers = this.$store.getters['printer/getSteppers'] as Stepper[] + + return steppers + .filter(stepper => stepper.key.startsWith('stepper_')) } get forceMove (): boolean { diff --git a/src/components/widgets/toolhead/ToolheadControlBarsStepper.vue b/src/components/widgets/toolhead/ToolheadControlBarsStepper.vue index 711df98bf7..b4c9cd34fb 100644 --- a/src/components/widgets/toolhead/ToolheadControlBarsStepper.vue +++ b/src/components/widgets/toolhead/ToolheadControlBarsStepper.vue @@ -10,7 +10,7 @@ @click="sendForceMoveGcode($event)" >
- {{ stepper }} + {{ stepper.prettyName }}
@@ -20,11 +20,12 @@ diff --git a/src/store/printer/getters.ts b/src/store/printer/getters.ts index c07fabce12..910d94bb00 100644 --- a/src/store/printer/getters.ts +++ b/src/store/printer/getters.ts @@ -1,7 +1,7 @@ import Vue from 'vue' import { GetterTree } from 'vuex' import { RootState } from '../types' -import { PrinterState, Heater, Fan, Led, OutputPin, Sensor, RunoutSensor, KnownExtruder, MCU, Endstop, Probe, ExtruderStepper, Extruder, ExtruderConfig, ProbeName } from './types' +import { PrinterState, Heater, Fan, Led, OutputPin, Sensor, RunoutSensor, KnownExtruder, MCU, Endstop, Probe, ExtruderStepper, Extruder, ExtruderConfig, ProbeName, Stepper } from './types' import { get } from 'lodash-es' import getKlipperType from '@/util/get-klipper-type' @@ -290,34 +290,37 @@ export const getters: GetterTree = { return extruder }, - getExtruderSteppers: (state, getters) => { - const extruderSteppers: ExtruderStepper[] = [] - for (const item in state.printer) { - const [type, name] = item.split(' ', 2) - - if (type === 'extruder_stepper') { - const e = state.printer[item] - const c = getters.getPrinterSettings(item) + getExtruderSteppers: (state, getters): ExtruderStepper[] => { + const steppers = getters.getSteppers as Stepper[] - extruderSteppers.push({ - name, - prettyName: Vue.$filters.startCase(name), - key: item, - enabled: state.printer.stepper_enable?.steppers[item], - ...e, - config: { ...c } - }) - } - } - return extruderSteppers.sort((a, b) => a.name.localeCompare(b.name)) + return steppers + .filter((stepper): stepper is ExtruderStepper => stepper.key.startsWith('extruder_stepper ')) }, - getSteppers: (state, getters): string[] => { - const printerConfig = getters.getPrinterConfig() + getSteppers: (state, getters): Stepper[] => { + const steppers: Stepper[] = [] - return Object.keys(printerConfig) - .filter(key => key.startsWith('stepper_')) - .sort() + const stepperKeys: string[] = state.printer.motion_report.steppers ?? [] + + for (const item of stepperKeys) { + const name = item.startsWith('stepper_') + ? item.substring(8) + : item.split(' ', 2).pop() || '' + + const e = state.printer[item] + const c = getters.getPrinterSettings(item) + + steppers.push({ + name, + prettyName: Vue.$filters.startCase(name), + key: item, + enabled: state.printer.stepper_enable?.steppers[item], + ...e, + config: { ...c } + }) + } + + return steppers }, /** diff --git a/src/store/printer/types.ts b/src/store/printer/types.ts index 2c04f9a329..ae185af33b 100644 --- a/src/store/printer/types.ts +++ b/src/store/printer/types.ts @@ -32,12 +32,7 @@ export interface ExtruderConfig { pressure_advance_smooth_time?: number; } -export interface ExtruderStepper { - config: ExtruderStepperConfig; - name: string; - prettyName: string; - key: string; - enabled?: boolean; +export interface ExtruderStepper extends StepperType { motion_queue?: string | null; pressure_advance?: number; smooth_time?: number; @@ -49,6 +44,16 @@ export interface ExtruderStepperConfig { pressure_advance_smooth_time?: number; } +export interface Stepper extends StepperType {} + +export type StepperType> = { + config: T; + name: string; + prettyName: string; + key: string; + enabled?: boolean; +} + export interface MCU { name: string; last_stats: MCUData; From 2efd03e03a6b851fdf2af59288caf2cb57416e36 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Thu, 28 Sep 2023 12:31:33 +0100 Subject: [PATCH 14/41] feat: adds gcode code folding support Signed-off-by: Pedro Lamas --- .../widgets/filesystem/setupMonaco.ts | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/components/widgets/filesystem/setupMonaco.ts b/src/components/widgets/filesystem/setupMonaco.ts index cffaadc621..94bcf29d99 100644 --- a/src/components/widgets/filesystem/setupMonaco.ts +++ b/src/components/widgets/filesystem/setupMonaco.ts @@ -206,6 +206,77 @@ async function setupMonaco () { } }) + monaco.languages.registerFoldingRangeProvider('gcode', { + provideFoldingRanges: (model) => { + const linesContent = model.getLinesContent() + + const layerBlocks = linesContent.reduce((layerBlocks, lineContent, index) => { + const isLayer = /^\s*SET_PRINT_STATS_INFO .*CURRENT_LAYER=/i.test(lineContent) + + if (isLayer) { + return layerBlocks.concat({ + start: index + 1, + end: index + 1 + }) + } + + const isNotComment = /^\s*[^;]/.test(lineContent) + + if (isNotComment && layerBlocks.length > 0) { + layerBlocks[layerBlocks.length - 1].end = index + 1 + } + + return layerBlocks + }, [] as Array<{ start: number, end: number }>) + + const objectBlocks = linesContent.reduce((objectBlocks, lineContent, index) => { + lineContent = lineContent.trim() + + if (lineContent.length > 0) { + const isObject = /^\s*EXCLUDE_OBJECT_(START|END) /i.exec(lineContent) + + const lastObjectBlock = objectBlocks.length > 0 ? objectBlocks[objectBlocks.length - 1] : undefined + + if (isObject) { + switch (isObject[1].toUpperCase()) { + case 'START': + return objectBlocks.concat({ + start: index + 1, + end: index + 1, + complete: false + }) + + case 'END': + if (lastObjectBlock) { + lastObjectBlock.complete = true + } + break + } + } else { + if (lastObjectBlock && !lastObjectBlock.complete) { + lastObjectBlock.end = index + 1 + } + } + } + + return objectBlocks + }, [] as Array<{start: number, end: number, complete: boolean}>) + + return [ + ...layerBlocks.map(section => ({ + start: section.start, + end: section.end, + kind: monaco.languages.FoldingRangeKind.Region + })), + ...objectBlocks.map(section => ({ + start: section.start, + end: section.end, + kind: monaco.languages.FoldingRangeKind.Region + })) + ] + } + }) + // Defined the themes. monaco.editor.defineTheme('dark-converted', themeDark as any) monaco.editor.defineTheme('light-converted', themeLight as any) From 5090bf73ba48308355258e31f7761990b5bb5418 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Thu, 28 Sep 2023 14:37:44 +0100 Subject: [PATCH 15/41] refactor: improvements to gcode code folding Signed-off-by: Pedro Lamas --- .../widgets/filesystem/setupMonaco.ts | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/src/components/widgets/filesystem/setupMonaco.ts b/src/components/widgets/filesystem/setupMonaco.ts index 94bcf29d99..ffca2ed3a9 100644 --- a/src/components/widgets/filesystem/setupMonaco.ts +++ b/src/components/widgets/filesystem/setupMonaco.ts @@ -262,18 +262,41 @@ async function setupMonaco () { return objectBlocks }, [] as Array<{start: number, end: number, complete: boolean}>) + const thumbnailBlocks = linesContent.reduce((thumbnailBlocks, lineContent, index) => { + if (lineContent.startsWith('; thumbnail')) { + const type = lineContent.substring(11).split(' ')[1] + + switch (type) { + case 'begin': + return thumbnailBlocks.concat({ + start: index + 1, + end: index + 1 + }) + + case 'end': + if (thumbnailBlocks.length > 0) { + const lastThumbnailBlock = thumbnailBlocks[thumbnailBlocks.length - 1] + + if (lastThumbnailBlock.start === lastThumbnailBlock.end) { + lastThumbnailBlock.end = index + } + } + break + } + } + + return thumbnailBlocks + }, [] as Array<{start: number, end: number}>) + return [ - ...layerBlocks.map(section => ({ - start: section.start, - end: section.end, - kind: monaco.languages.FoldingRangeKind.Region - })), - ...objectBlocks.map(section => ({ - start: section.start, - end: section.end, - kind: monaco.languages.FoldingRangeKind.Region - })) - ] + ...thumbnailBlocks, + ...layerBlocks, + ...objectBlocks + ].map(section => ({ + start: section.start, + end: section.end, + kind: monaco.languages.FoldingRangeKind.Region + })) } }) From c5ddc6d7fb685860bbffccb5b22b978cadddfefa Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Fri, 29 Sep 2023 09:34:18 +0100 Subject: [PATCH 16/41] chore: updates to the latest axios dependency (#1191) Signed-off-by: Pedro Lamas --- package-lock.json | 34 +++++--- package.json | 2 +- src/api/httpClientActions.ts | 17 +++- src/components/common/AddInstanceDialog.vue | 47 ++++------ .../widgets/filesystem/FileSystem.vue | 10 +-- .../filesystem/FileSystemDownloadDialog.vue | 10 +-- .../filesystem/FileSystemUploadDialog.vue | 2 +- src/mixins/files.ts | 85 +++++-------------- src/plugins/filters.ts | 15 ++++ src/plugins/httpClient.ts | 26 ++---- src/store/files/actions.ts | 16 ---- src/store/files/mutations.ts | 4 - src/store/files/state.ts | 1 - src/store/files/types.ts | 4 +- tests/unit/setup.ts | 3 - 15 files changed, 107 insertions(+), 169 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8b54c97294..009b27ca97 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@fontsource/raleway": "^5.0.8", "@fontsource/roboto": "^5.0.8", "@jaames/iro": "^5.5.2", - "axios": "^0.27.2", + "axios": "^1.5.1", "consola": "^3.2.3", "deepmerge": "^4.3.1", "dompurify": "^3.0.5", @@ -3806,12 +3806,13 @@ } }, "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { @@ -10541,6 +10542,11 @@ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -16622,12 +16628,13 @@ "dev": true }, "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "babel-plugin-polyfill-corejs2": { @@ -21680,6 +21687,11 @@ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", diff --git a/package.json b/package.json index e601eef64e..ea47951185 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@fontsource/raleway": "^5.0.8", "@fontsource/roboto": "^5.0.8", "@jaames/iro": "^5.5.2", - "axios": "^0.27.2", + "axios": "^1.5.1", "consola": "^3.2.3", "deepmerge": "^4.3.1", "dompurify": "^3.0.5", diff --git a/src/api/httpClientActions.ts b/src/api/httpClientActions.ts index 62641467b2..a218d810a9 100644 --- a/src/api/httpClientActions.ts +++ b/src/api/httpClientActions.ts @@ -6,10 +6,14 @@ export const httpClientActions = { return Vue.$httpClient.get(url, options) }, - post, D = any> (url: string, data: any, options?: AxiosRequestConfig) { + post, D = any> (url: string, data: D, options?: AxiosRequestConfig) { return Vue.$httpClient.post(url, data, options) }, + postForm, D = any> (url: string, data: D, options?: AxiosRequestConfig) { + return Vue.$httpClient.postForm(url, data, options) + }, + delete, D = any> (url: string, options?: AxiosRequestConfig) { return Vue.$httpClient.delete(url, options) }, @@ -166,8 +170,8 @@ export const httpClientActions = { }, options) }, - serverFilesUploadPost (data: FormData, options?: AxiosRequestConfig) { - return this.post<{ + serverFilesUploadPost (file: File, path: string, root: string, print?: boolean, options?: AxiosRequestConfig) { + return this.postForm<{ result: { item: { path: string, @@ -176,7 +180,12 @@ export const httpClientActions = { print_started?: boolean, action: string } - }>('/server/files/upload', data, options) + }>('/server/files/upload', { + file, + path, + root, + print + }, options) }, serverFilesGet (filepath: string, options?: AxiosRequestConfig) { diff --git a/src/components/common/AddInstanceDialog.vue b/src/components/common/AddInstanceDialog.vue index 3d82cd59b7..089f8f3281 100644 --- a/src/components/common/AddInstanceDialog.vue +++ b/src/components/common/AddInstanceDialog.vue @@ -76,7 +76,7 @@ diff --git a/src/components/widgets/toolhead/ToolChangeMacros.vue b/src/components/widgets/toolhead/ToolChangeMacros.vue deleted file mode 100644 index 5d6c5b4f3b..0000000000 --- a/src/components/widgets/toolhead/ToolChangeMacros.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - diff --git a/src/components/widgets/toolhead/Toolhead.vue b/src/components/widgets/toolhead/Toolhead.vue index 6425e325e0..2076387ff5 100644 --- a/src/components/widgets/toolhead/Toolhead.vue +++ b/src/components/widgets/toolhead/Toolhead.vue @@ -1,7 +1,7 @@ @@ -188,10 +203,12 @@ import { Component, Mixins, Watch } from 'vue-property-decorator' import StatusLabel from './StatusLabel.vue' import StateMixin from '@/mixins/state' import FilesMixin from '@/mixins/files' +import FilePreviewDialog from '../filesystem/FilePreviewDialog.vue' @Component({ components: { - StatusLabel + StatusLabel, + FilePreviewDialog } }) export default class StatusTab extends Mixins(StateMixin, FilesMixin) { @@ -203,6 +220,12 @@ export default class StatusTab extends Mixins(StateMixin, FilesMixin) { max: 0 } + filePreviewState: any = { + open: false, + filename: '', + src: '' + } + get visible () { // Content is visible if; // We are printing or, @@ -288,7 +311,7 @@ export default class StatusTab extends Mixins(StateMixin, FilesMixin) { this.current_file && this.current_file.thumbnails ) { - const url = this.getThumbUrl(this.current_file.thumbnails, 'gcodes', this.current_file.path, true, this.current_file.modified) + const url = this.getThumbUrl(this.current_file, 'gcodes', this.current_file.path, true, this.current_file.modified) return url } } @@ -381,6 +404,20 @@ export default class StatusTab extends Mixins(StateMixin, FilesMixin) { this.flow.timestamp = Date.now() } } + + async handleViewThumbnail () { + const file = this.current_file + const thumb = this.getThumb(file, 'gcodes', file.path, true, file.modified) + + if (thumb) { + this.filePreviewState = { + open: true, + filename: file.filename, + src: thumb.url, + width: thumb.width + } + } + } } diff --git a/src/mixins/files.ts b/src/mixins/files.ts index 85c48b3ce6..56629d55ff 100644 --- a/src/mixins/files.ts +++ b/src/mixins/files.ts @@ -1,4 +1,4 @@ -import { AppFile, FilesUpload, Thumbnail } from '@/store/files/types' +import { AppFile, FilesUpload, AppFileThumbnail, KlipperFileMeta } from '@/store/files/types' import Vue from 'vue' import { Component } from 'vue-property-decorator' import { AxiosRequestConfig, AxiosProgressEvent } from 'axios' @@ -17,44 +17,22 @@ export default class FilesMixin extends Vue { return forceLogins === false || this.$store.getters['auth/getCurrentUser']?.username === '_TRUSTED_USER_' } - getThumbUrl (thumbnails: Thumbnail[], root: string, path: string, large: boolean, date?: number) { - if (thumbnails.length) { - const thumb = this.getThumb(thumbnails, root, path, large, date) + getThumbUrl (meta: KlipperFileMeta, root: string, path: string, large: boolean, date?: number) { + const thumb = this.getThumb(meta, root, path, large, date) - if (thumb) { - return thumb.absolute_path || thumb.data || '' - } - } - return '' + return thumb?.url ?? '' } - getThumb (thumbnails: Thumbnail[], root: string, path: string, large = true, date?: number) { - if (thumbnails.length) { - let thumb: Thumbnail | undefined - if (thumbnails) { - if (large) { - thumb = thumbnails.reduce((a, c) => (a.size && c.size && (a.size > c.size)) ? a : c) - } else { - thumb = thumbnails.reduce((a, c) => (a.size && c.size && (a.size < c.size)) ? a : c) - } - if (thumb) { - if (thumb.relative_path && thumb.relative_path.length > 0) { - const filepath = path ? `${root}/${path}` : root - - return { - ...thumb, - absolute_path: this.createFileUrl(thumb.relative_path, filepath, date) - } - } - if (thumb.data) { - return { - ...thumb, - data: 'data:image/gif;base64,' + thumb.data - } - } - if (thumb.absolute_path) { - return thumb - } + getThumb (meta: KlipperFileMeta, root: string, path: string, large = true, date?: number): AppFileThumbnail | undefined { + if (meta.thumbnails?.length) { + const thumb = meta.thumbnails.reduce((a, b) => (a.size > b.size) === large ? a : b) + + if (thumb.relative_path) { + const filepath = path ? `${root}/${path}` : root + + return { + ...thumb, + url: this.createFileUrl(thumb.relative_path, filepath, date) } } } diff --git a/src/store/files/getters.ts b/src/store/files/getters.ts index 5032810d05..29579bb155 100644 --- a/src/store/files/getters.ts +++ b/src/store/files/getters.ts @@ -68,7 +68,6 @@ export const getters: GetterTree = { item.thumbnails = [ { // we have no data regarding the thumbnail other than it's URL, but setting it is mandatory... - data: '', height: 0, width: 0, size: 0, @@ -160,7 +159,7 @@ export const getters: GetterTree = { accepts: [], canView: [], canConfigure: false, - filterTypes: [] + filterTypes: ['hidden_files'] } } }, diff --git a/src/store/files/types.metadata.ts b/src/store/files/types.metadata.ts index 89e0b2a5aa..45c0aba41e 100644 --- a/src/store/files/types.metadata.ts +++ b/src/store/files/types.metadata.ts @@ -16,13 +16,11 @@ export interface KlipperFileMeta { object_height?: number; slicer?: string; slicer_version?: string; - thumbnails?: Thumbnail[]; + thumbnails?: KlipperFileMetaThumbnail[]; } -export interface Thumbnail { - data: string; +export interface KlipperFileMetaThumbnail { relative_path: string; - absolute_path?: string; height: number; width: number; size: number; diff --git a/src/store/files/types.ts b/src/store/files/types.ts index 4b611e9462..61ef9f8a38 100644 --- a/src/store/files/types.ts +++ b/src/store/files/types.ts @@ -1,7 +1,7 @@ -import { KlipperFileMeta, Thumbnail } from './types.metadata' +import { KlipperFileMeta, KlipperFileMetaThumbnail } from './types.metadata' import { HistoryItem } from '@/store/history/types' -export type { KlipperFileMeta, Thumbnail } +export type { KlipperFileMeta, KlipperFileMetaThumbnail } export interface FilesState { uploads: FilesUpload[]; @@ -54,6 +54,10 @@ export interface AppFileWithMeta extends AppFile, KlipperFileMeta { history: HistoryItem; } +export interface AppFileThumbnail extends KlipperFileMetaThumbnail { + url: string; +} + export interface AppDirectory extends KlipperDir { type: 'directory'; name: string; From 57343238ca425103f59e6cbe1fb8c1109d971be8 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Wed, 4 Oct 2023 12:41:01 +0100 Subject: [PATCH 27/41] fix: file system filters reactivity Signed-off-by: Pedro Lamas --- src/components/widgets/filesystem/FileSystem.vue | 6 +----- src/store/config/actions.ts | 6 ++++++ src/store/config/mutations.ts | 9 +++++++++ src/store/config/state.ts | 6 +----- src/store/config/types.ts | 2 +- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/components/widgets/filesystem/FileSystem.vue b/src/components/widgets/filesystem/FileSystem.vue index 3d166cfea7..9f8dfe7a02 100644 --- a/src/components/widgets/filesystem/FileSystem.vue +++ b/src/components/widgets/filesystem/FileSystem.vue @@ -222,11 +222,7 @@ export default class FileSystem extends Mixins(StateMixin, FilesMixin, ServicesM } set filters (value: FileFilterType[]) { - this.$store.dispatch('config/saveByPath', { - path: `uiSettings.fileSystem.activeFilters.${this.currentRoot}`, - value, - server: true - }) + this.$store.dispatch('config/updateFileSystemActiveFilters', { root: this.currentRoot, value }) } // Maintains content menu state. diff --git a/src/store/config/actions.ts b/src/store/config/actions.ts index fe177a1fa8..baa64ce6ff 100644 --- a/src/store/config/actions.ts +++ b/src/store/config/actions.ts @@ -6,6 +6,7 @@ import { SocketActions } from '@/api/socketActions' import { loadLocaleMessagesAsync, getStartingLocale } from '@/plugins/i18n' import { Waits } from '@/globals' import { AppTableHeader } from '@/types' +import { FileFilterType } from '../files/types' export const actions: ActionTree = { /** @@ -142,6 +143,11 @@ export const actions: ActionTree = { SocketActions.serverWrite('uiSettings.dashboard.tempPresets', state.uiSettings.dashboard.tempPresets) }, + async updateFileSystemActiveFilters ({ commit, state }, payload: { root: string, value: FileFilterType[] }) { + commit('setFileSystemActiveFilters', payload) + SocketActions.serverWrite(`uiSettings.fileSystem.activeFilters.${payload.root}`, state.uiSettings.fileSystem.activeFilters[payload.root]) + }, + /** * Toggle a tables header state based on its name and key. */ diff --git a/src/store/config/mutations.ts b/src/store/config/mutations.ts index 8c7b025e66..f029c48cbe 100644 --- a/src/store/config/mutations.ts +++ b/src/store/config/mutations.ts @@ -7,6 +7,7 @@ import { merge, set } from 'lodash-es' import { v4 as uuidv4 } from 'uuid' import { AppTableHeader } from '@/types' import { AppTablePartialHeader } from '@/types/tableheaders' +import { FileFilterType } from '../files/types' export const mutations: MutationTree = { /** @@ -37,6 +38,10 @@ export const mutations: MutationTree = { Vue.set(processed.editor, 'autoEditExtensions', payload.editor.autoEditExtensions) } + if (payload.fileSystem && payload.fileSystem.activeFilters) { + Vue.set(processed.fileSystem, 'activeFilters', payload.fileSystem.activeFilters) + } + Vue.set(state, 'uiSettings', processed) } }, @@ -154,6 +159,10 @@ export const mutations: MutationTree = { state.uiSettings.dashboard.tempPresets.splice(i, 1) }, + setFileSystemActiveFilters (state, payload: { root: string, value: FileFilterType[] }) { + Vue.set(state.uiSettings.fileSystem.activeFilters, payload.root, payload.value) + }, + /** * Puts us into layout mode */ diff --git a/src/store/config/state.ts b/src/store/config/state.ts index 2771061ceb..ce5bb7d0a7 100644 --- a/src/store/config/state.ts +++ b/src/store/config/state.ts @@ -133,11 +133,7 @@ export const defaultState = (): ConfigState => { } }, fileSystem: { - activeFilters: { - gcodes: [], - config: [], - logs: [] - } + activeFilters: {} }, toolhead: { forceMove: false, diff --git a/src/store/config/types.ts b/src/store/config/types.ts index 3e3461c7d3..45409b44ed 100644 --- a/src/store/config/types.ts +++ b/src/store/config/types.ts @@ -205,5 +205,5 @@ export interface GcodePreviewConfig { } export interface FileSystemConfig { - activeFilters: Partial> + activeFilters: Record } From 35667236da00a40fe36c60845ca8db40923e24d0 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Wed, 4 Oct 2023 16:14:00 +0100 Subject: [PATCH 28/41] style: minor SpoolmanCard color fix Signed-off-by: Pedro Lamas --- src/components/widgets/spoolman/SpoolmanCard.vue | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/widgets/spoolman/SpoolmanCard.vue b/src/components/widgets/spoolman/SpoolmanCard.vue index 2ac7763b32..74c16a41d5 100644 --- a/src/components/widgets/spoolman/SpoolmanCard.vue +++ b/src/components/widgets/spoolman/SpoolmanCard.vue @@ -98,10 +98,17 @@ class="pa-0" > - {{ activeSpool ? '$filament' : '$progressQuestion' }} + $filament + + + $progressQuestion
From b860ca09da5602c80fd353cfa70b5102994adff2 Mon Sep 17 00:00:00 2001 From: Pedro Lamas Date: Mon, 9 Oct 2023 10:57:02 +0100 Subject: [PATCH 29/41] feat: improve drag & drop support (#1204) Signed-off-by: Pedro Lamas --- .../widgets/filesystem/FileSystem.vue | 23 ++- .../widgets/filesystem/FileSystemBrowser.vue | 155 +++++++++--------- .../gcode-preview/GcodePreviewCard.vue | 54 +++++- src/components/widgets/job-queue/JobQueue.vue | 20 ++- src/locales/en.yaml | 2 + 5 files changed, 164 insertions(+), 90 deletions(-) diff --git a/src/components/widgets/filesystem/FileSystem.vue b/src/components/widgets/filesystem/FileSystem.vue index 9f8dfe7a02..b1fdf48226 100644 --- a/src/components/widgets/filesystem/FileSystem.vue +++ b/src/components/widgets/filesystem/FileSystem.vue @@ -5,10 +5,10 @@ :max-height="maxHeight" :class="{ 'no-pointer-events': dragState.overlay }" flat - @dragenter.capture.prevent="handleDragEnter" - @dragover.prevent + @dragover="handleDragOver" + @dragenter.self.prevent @dragleave.self.prevent="handleDragLeave" - @drop.prevent.stop="handleDropFile" + @drop.self.prevent="handleDropFile" > file.name) } - dataTransfer.setData('jobs', JSON.stringify(data)) + dataTransfer.setData('x-fluidd-jobs', JSON.stringify(data)) } } } @@ -945,9 +945,18 @@ export default class FileSystem extends Mixins(StateMixin, FilesMixin, ServicesM * Drag handling. * =========================================================================== */ - handleDragEnter (e: DragEvent) { - if (!this.rootProperties.readonly && !this.dragState.browserState && e.dataTransfer && hasFilesInDataTransfer(e.dataTransfer)) { + handleDragOver (e: DragEvent) { + if ( + !this.rootProperties.readonly && + !this.dragState.browserState && + e.dataTransfer && + hasFilesInDataTransfer(e.dataTransfer) + ) { + e.preventDefault() + this.dragState.overlay = true + + e.dataTransfer.dropEffect = 'copy' } } diff --git a/src/components/widgets/filesystem/FileSystemBrowser.vue b/src/components/widgets/filesystem/FileSystemBrowser.vue index 5713a193cf..625e2720ff 100644 --- a/src/components/widgets/filesystem/FileSystemBrowser.vue +++ b/src/components/widgets/filesystem/FileSystemBrowser.vue @@ -6,7 +6,7 @@ -->