diff --git a/apps/app-frontend/package.json b/apps/app-frontend/package.json index 94ef6d549..992ef8636 100644 --- a/apps/app-frontend/package.json +++ b/apps/app-frontend/package.json @@ -25,7 +25,7 @@ "vue": "^3.4.21", "vue-multiselect": "3.0.0", "vue-router": "4.3.0", - "vue-typed-virtual-list": "^1.0.10" + "vue-virtual-scroller": "v2.0.0-beta.8" }, "devDependencies": { "@tauri-apps/cli": "^1.6.0", diff --git a/apps/app-frontend/src/pages/instance/Logs.vue b/apps/app-frontend/src/pages/instance/Logs.vue index 5c060b657..f36ce81f1 100644 --- a/apps/app-frontend/src/pages/instance/Logs.vue +++ b/apps/app-frontend/src/pages/instance/Logs.vue @@ -59,21 +59,22 @@
- - - +
+ {{ + item.prefix + }} + {{ item.text }} +
+
{ if (logs.value.length > 0) { logs.value[0] = await getLiveStdLog() - const logContainerElement = logContainer.value.$el - const scroll = - logContainerElement.scrollHeight - - logContainerElement.scrollTop - - logContainerElement.clientHeight - // const scroll = logContainer.value.$el.scrollHeight - logContainer.value.$el.scrollTop - logContainer.value.$el.clientHeight + const scroll = logContainer.value.getScroll() // Allow resetting of userScrolled if the user scrolls to the bottom if (selectedLogIndex.value === 0) { - if (scroll <= 10) userScrolled.value = false + if (scroll.end >= logContainer.value.$el.scrollHeight - 10) userScrolled.value = false if (!userScrolled.value) { await nextTick() isAutoScrolling.value = true - logContainer.value.scrollTo(displayProcessedLogs.value.length - 1) + logContainer.value.scrollToItem(displayProcessedLogs.value.length - 1) setTimeout(() => (isAutoScrolling.value = false), 50) } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3305cbe9..09c405afd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,9 +83,9 @@ importers: vue-router: specifier: 4.3.0 version: 4.3.0(vue@3.4.31(typescript@5.5.3)) - vue-typed-virtual-list: - specifier: ^1.0.10 - version: 1.0.10(vue@3.4.31(typescript@5.5.3)) + vue-virtual-scroller: + specifier: v2.0.0-beta.8 + version: 2.0.0-beta.8(vue@3.4.31(typescript@5.5.3)) devDependencies: '@tauri-apps/cli': specifier: ^1.6.0 @@ -2019,9 +2019,6 @@ packages: '@types/shimmer@1.0.5': resolution: {integrity: sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==} - '@types/web-bluetooth@0.0.16': - resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} - '@typescript-eslint/eslint-plugin@6.21.0': resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -2331,15 +2328,6 @@ packages: '@vue/tsconfig@0.5.1': resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==} - '@vueuse/core@9.13.0': - resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} - - '@vueuse/metadata@9.13.0': - resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} - - '@vueuse/shared@9.13.0': - resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} - '@webassemblyjs/ast@1.12.1': resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} @@ -2923,9 +2911,6 @@ packages: de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -4232,6 +4217,9 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + mitt@2.1.0: + resolution: {integrity: sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==} + mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -5808,6 +5796,11 @@ packages: resolution: {integrity: sha512-uupKdINgz7j83lQToCL7KkgQQxvG43el++hsR39YT9pCe1DwzUGmKzPxjVP6rqskXed5P6DtUASYAlCliW740Q==} engines: {node: '>= 14.18.1', npm: '>= 6.14.15'} + vue-observe-visibility@2.0.0-alpha.1: + resolution: {integrity: sha512-flFbp/gs9pZniXR6fans8smv1kDScJ8RS7rEpMjhVabiKeq7Qz3D9+eGsypncjfIyyU84saU88XZ0zjbD6Gq/g==} + peerDependencies: + vue: ^3.0.0 + vue-resize@2.0.0-alpha.1: resolution: {integrity: sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==} peerDependencies: @@ -5837,10 +5830,10 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue-typed-virtual-list@1.0.10: - resolution: {integrity: sha512-StYs56ypKBY4Lu7Cz3Rnyywajxi3NgCxCcWuMJB2wfJ5qvicPw6YPV3sFUy1d1Cjm+AFCB0cZI7ymvgx8IvPIg==} + vue-virtual-scroller@2.0.0-beta.8: + resolution: {integrity: sha512-b8/f5NQ5nIEBRTNi6GcPItE4s7kxNHw2AIHLtDp+2QvqdTjVN0FgONwX9cr53jWRgnu+HRLPaWDOR2JPI5MTfQ==} peerDependencies: - vue: ^3.2.45 + vue: ^3.2.0 vue3-apexcharts@1.5.3: resolution: {integrity: sha512-yaHTPoj0iVKAtEVg8wEwIwwvf0VG+lPYNufCf3txRzYQOqdKPoZaZ9P3Dj3X+2A1XY9O1kcTk9HVqvLo+rppvQ==} @@ -7698,8 +7691,6 @@ snapshots: '@types/shimmer@1.0.5': {} - '@types/web-bluetooth@0.0.16': {} - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@eslint-community/regexpp': 4.11.0 @@ -8211,25 +8202,6 @@ snapshots: '@vue/tsconfig@0.5.1': {} - '@vueuse/core@9.13.0(vue@3.4.31(typescript@5.5.3))': - dependencies: - '@types/web-bluetooth': 0.0.16 - '@vueuse/metadata': 9.13.0 - '@vueuse/shared': 9.13.0(vue@3.4.31(typescript@5.5.3)) - vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/metadata@9.13.0': {} - - '@vueuse/shared@9.13.0(vue@3.4.31(typescript@5.5.3))': - dependencies: - vue-demi: 0.14.8(vue@3.4.31(typescript@5.5.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - '@webassemblyjs/ast@1.12.1': dependencies: '@webassemblyjs/helper-numbers': 1.11.6 @@ -8877,8 +8849,6 @@ snapshots: de-indent@1.0.2: {} - debounce@1.2.1: {} - debug@2.6.9: dependencies: ms: 2.0.0 @@ -10397,6 +10367,8 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + mitt@2.1.0: {} + mitt@3.0.1: {} mixpanel-browser@2.53.0: @@ -12192,6 +12164,10 @@ snapshots: vue-multiselect@3.0.0: {} + vue-observe-visibility@2.0.0-alpha.1(vue@3.4.31(typescript@5.5.3)): + dependencies: + vue: 3.4.31(typescript@5.5.3) + vue-resize@2.0.0-alpha.1(vue@3.4.31(typescript@5.5.3)): dependencies: vue: 3.4.31(typescript@5.5.3) @@ -12222,13 +12198,12 @@ snapshots: semver: 7.6.2 typescript: 5.5.3 - vue-typed-virtual-list@1.0.10(vue@3.4.31(typescript@5.5.3)): + vue-virtual-scroller@2.0.0-beta.8(vue@3.4.31(typescript@5.5.3)): dependencies: - '@vueuse/core': 9.13.0(vue@3.4.31(typescript@5.5.3)) - debounce: 1.2.1 + mitt: 2.1.0 vue: 3.4.31(typescript@5.5.3) - transitivePeerDependencies: - - '@vue/composition-api' + vue-observe-visibility: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.3)) + vue-resize: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.3)) vue3-apexcharts@1.5.3(apexcharts@3.49.2)(vue@3.4.31(typescript@5.5.3)): dependencies: