diff --git a/app/lib/cubits/current_index.dart b/app/lib/cubits/current_index.dart index a5b198f13c29..d842fb7567a1 100644 --- a/app/lib/cubits/current_index.dart +++ b/app/lib/cubits/current_index.dart @@ -649,6 +649,7 @@ class CurrentIndexCubit extends Cubit { height: size.height.ceil(), width: size.width.ceil(), pixelRatio: ratio, + resolution: resolution, scale: transform.size, x: renderTransform.position.dx, y: renderTransform.position.dy, diff --git a/app/lib/models/viewport.dart b/app/lib/models/viewport.dart index 06ab26f6bccd..4d111075b134 100644 --- a/app/lib/models/viewport.dart +++ b/app/lib/models/viewport.dart @@ -1,6 +1,7 @@ import 'dart:math'; import 'dart:ui' as ui; +import 'package:butterfly/cubits/settings.dart'; import 'package:butterfly/renderers/renderer.dart'; import 'package:butterfly_api/butterfly_api.dart'; import 'package:equatable/equatable.dart'; @@ -18,6 +19,7 @@ class CameraViewport extends Equatable { final double pixelRatio; final double scale; final double x, y; + final RenderResolution resolution; const CameraViewport.unbaked(this.utilities, [this.backgrounds = const [], @@ -33,7 +35,8 @@ class CameraViewport extends Equatable { pixelRatio = 1, x = 0, y = 0, - visibleElements = visibleElements ?? unbakedElements; + visibleElements = visibleElements ?? unbakedElements, + resolution = RenderResolution.performance; const CameraViewport.baked(this.utilities, {this.backgrounds = const [], @@ -48,6 +51,7 @@ class CameraViewport extends Equatable { required this.visibleElements, this.scale = 1, this.x = 0, + required this.resolution, this.y = 0}); get center => null; @@ -62,6 +66,8 @@ class CameraViewport extends Equatable { ui.Rect toRect() => toOffset() & toSize(true); + ui.Size toRealSize() => toSize() / resolution.multiplier; + Area toArea() => Area( name: '', position: toPoint(), @@ -95,6 +101,7 @@ class CameraViewport extends Equatable { y: y, aboveLayerImage: aboveLayerImage, belowLayerImage: belowLayerImage, + resolution: resolution, ); CameraViewport unbake({ @@ -127,6 +134,7 @@ class CameraViewport extends Equatable { double scale = 1, double x = 0, double y = 0, + required RenderResolution resolution, }) => CameraViewport.baked( utilities, @@ -143,6 +151,7 @@ class CameraViewport extends Equatable { visibleElements: visibleElements, aboveLayerImage: aboveLayerImage, belowLayerImage: belowLayerImage, + resolution: resolution, ); CameraViewport withoutLayers() => CameraViewport.baked( @@ -160,6 +169,7 @@ class CameraViewport extends Equatable { visibleElements: visibleElements, aboveLayerImage: null, belowLayerImage: null, + resolution: resolution, ); CameraViewport withBackgrounds(List> backgrounds) => @@ -196,6 +206,7 @@ class CameraViewport extends Equatable { visibleElements: visibleElements, aboveLayerImage: aboveLayerImage, belowLayerImage: belowLayerImage, + resolution: resolution, ); @override @@ -214,5 +225,6 @@ class CameraViewport extends Equatable { utilities, aboveLayerImage, belowLayerImage, + resolution, ]; } diff --git a/app/lib/selections/utilities.dart b/app/lib/selections/utilities.dart index 68d3bc4b86d6..23b87cf71985 100644 --- a/app/lib/selections/utilities.dart +++ b/app/lib/selections/utilities.dart @@ -144,25 +144,23 @@ class _UtilitiesViewState extends State<_UtilitiesView> onPressed: () async { final viewport = state.currentIndexCubit.state.cameraViewport; - final width = viewport.width?.toDouble() ?? - kThumbnailWidth.toDouble(); - final realHeight = viewport.height?.toDouble() ?? - kThumbnailHeight.toDouble(); + final size = viewport.toRealSize(); final height = - width * kThumbnailHeight / kThumbnailWidth; - final heightOffset = (height - realHeight) / 2; - final quality = kThumbnailWidth / width; + size.width * kThumbnailHeight / kThumbnailWidth; + final heightOffset = (size.height - height) / 2; + final quality = kThumbnailWidth / size.width; final thumbnail = await state.currentIndexCubit.render( state.data, state.page, state.info, ImageExportOptions( - width: width, + width: size.width, height: height, quality: quality, scale: viewport.scale, - x: viewport.x, - y: viewport.y + heightOffset, + x: viewport.x + size.width / viewport.scale, + y: viewport.y + + (heightOffset + size.height) / viewport.scale, ), ); if (thumbnail == null) return; diff --git a/app/lib/views/zoom.dart b/app/lib/views/zoom.dart index 24b9b9da11c9..b633c3c0b1f0 100644 --- a/app/lib/views/zoom.dart +++ b/app/lib/views/zoom.dart @@ -86,10 +86,10 @@ class _ZoomViewState extends State with TickerProviderStateMixin { if (state is! DocumentLoaded) { return; } - final viewport = currentIndex.cameraViewport; + final size = currentIndex.cameraViewport.toRealSize(); final center = Offset( - (viewport.width ?? 0) / 2, - (viewport.height ?? 0) / 2, + size.width / 2, + size.height / 2, ); currentIndex.transformCubit.size(value, center); if (bake) { diff --git a/app/pubspec.lock b/app/pubspec.lock index b20bbd249bc0..1bc7bd5fa724 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -1225,10 +1225,10 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: "3c7e73920c694a436afaf65ab60ce3453d91f84208d761fbd83fc21182134d93" + sha256: a752ce92ea7540fc35a0d19722816e04d0e72828a4200e83a98cf1a1eb524c9a url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.5" shared_preferences_android: dependency: transitive description: diff --git a/docs/package.json b/docs/package.json index bf9d8582306a..eac0406acb4c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -16,7 +16,7 @@ "@phosphor-icons/react": "^2.1.7", "@types/react": "^19.0.2", "@types/react-dom": "^19.0.2", - "astro": "^5.1.1", + "astro": "^5.1.2", "react": "^19.0.0", "react-dom": "^19.0.0", "remark-gemoji": "^8.0.0", diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 6bd9750c648e..22cecae8a7ae 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 4.1.2(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(jiti@2.4.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0)(terser@5.37.0)(yaml@2.6.1) '@astrojs/starlight': specifier: ^0.30.3 - version: 0.30.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1)) + version: 0.30.3(astro@5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1)) '@phosphor-icons/react': specifier: ^2.1.7 version: 2.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -27,8 +27,8 @@ importers: specifier: ^19.0.2 version: 19.0.2(@types/react@19.0.2) astro: - specifier: ^5.1.1 - version: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1) + specifier: ^5.1.2 + version: 5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1) react: specifier: ^19.0.0 version: 19.0.0 @@ -895,17 +895,23 @@ packages: cpu: [x64] os: [win32] - '@shikijs/core@1.24.4': - resolution: {integrity: sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==} + '@shikijs/core@1.25.1': + resolution: {integrity: sha512-0j5k3ZkLTQViOuNzPVyWGoW1zgH3kiFdUT/JOCkTm7TU74mz+dF+NID+YoiCBzHQxgsDpcGYPjKDJRcuVLSt4A==} - '@shikijs/engine-javascript@1.24.4': - resolution: {integrity: sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==} + '@shikijs/engine-javascript@1.25.1': + resolution: {integrity: sha512-zQ7UWKnRCfD/Q1M+XOSyjsbhpE0qv8LUnmn82HYCeOsgAHgUZGEDIQ63bbuK3kU5sQg+2CtI+dPfOqD/mjSY9w==} - '@shikijs/engine-oniguruma@1.24.4': - resolution: {integrity: sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==} + '@shikijs/engine-oniguruma@1.25.1': + resolution: {integrity: sha512-iKPMh3H+0USHtWfZ1irfMTH6tGmIUFSnqt3E2K8BgI1VEsqiPh0RYkG2WTwzNiM1/WHN4FzYx/nrKR7PDHiRyw==} - '@shikijs/types@1.24.4': - resolution: {integrity: sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==} + '@shikijs/langs@1.25.1': + resolution: {integrity: sha512-hdYjq9aRJplAzGe2qF51PR9IDgEoyGb4IkXvr3Ts6lEdg4Z8M/kdknKRo2EIuv3IR/aKkJXTlBQRM+wr3t20Ew==} + + '@shikijs/themes@1.25.1': + resolution: {integrity: sha512-JO0lDn4LgGqg5QKvgich5ScUmC2okK+LxM9a3iLUH7YMeI2c8UGXThuJv6sZduS7pdJbYQHPrvWq9t/V4GhpbQ==} + + '@shikijs/types@1.25.1': + resolution: {integrity: sha512-dceqFUoO95eY4tpOj3OGq8wE8EgJ4ey6Me1HQEu5UbwIYszFndEll/bjlB8Kp9wl4fx3uM7n4+y9XCYuDBmcXA==} '@shikijs/vscode-textmate@9.3.1': resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} @@ -1071,8 +1077,8 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@5.1.1: - resolution: {integrity: sha512-prpWC2PRs4P3FKQg6gZaU+VNMqbZi5pDvORGB2nrjfRjkrvF6/l4BqhvkJ6YQ0Ohm5rIMVz8ljgaRI77mLHbwg==} + astro@5.1.2: + resolution: {integrity: sha512-+U5lXPEJZ6cQx0botGbPhzN6XGWRgDtXgy/RUkpTmUj18LW6pbzYo0O0k3hFWOazlI039bZ+4P2e/oSNlKzm0Q==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -1935,8 +1941,8 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - oniguruma-to-es@0.8.1: - resolution: {integrity: sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==} + oniguruma-to-es@0.10.0: + resolution: {integrity: sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==} p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} @@ -2091,14 +2097,14 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-recursion@5.0.0: - resolution: {integrity: sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==} + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@5.0.2: - resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==} + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} rehype-expressive-code@0.38.3: resolution: {integrity: sha512-RYSSDkMBikoTbycZPkcWp6ELneANT4eTpND1DSRJ6nI2eVFUwTBDCvE2vO6jOOTaavwnPiydi4i/87NRyjpdOA==} @@ -2220,8 +2226,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.24.4: - resolution: {integrity: sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==} + shiki@1.25.1: + resolution: {integrity: sha512-/1boRvNYwRW3GLG9Y6dXdnZ/Ha+J5T/5y3hV7TGQUcDSBM185D3FCbXlz2eTGNKG2iWCbWqo+P0yhGKZ4/CUrw==} signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -2526,8 +2532,8 @@ packages: yaml: optional: true - vitefu@1.0.4: - resolution: {integrity: sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==} + vitefu@1.0.5: + resolution: {integrity: sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 peerDependenciesMeta: @@ -2788,7 +2794,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.1 remark-smartypants: 3.0.2 - shiki: 1.24.4 + shiki: 1.25.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -2797,12 +2803,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.0.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1))': + '@astrojs/mdx@4.0.3(astro@5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1))': dependencies: '@astrojs/markdown-remark': 6.0.1 '@mdx-js/mdx': 3.1.0(acorn@8.14.0) acorn: 8.14.0 - astro: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1) + astro: 5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.4 @@ -2849,16 +2855,16 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.24.1 - '@astrojs/starlight@0.30.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1))': + '@astrojs/starlight@0.30.3(astro@5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1))': dependencies: - '@astrojs/mdx': 4.0.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1)) + '@astrojs/mdx': 4.0.3(astro@5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1)) '@astrojs/sitemap': 3.2.1 '@pagefind/default-ui': 1.3.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1) - astro-expressive-code: 0.38.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1)) + astro: 5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1) + astro-expressive-code: 0.38.3(astro@5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.3 @@ -3199,7 +3205,7 @@ snapshots: '@expressive-code/plugin-shiki@0.38.3': dependencies: '@expressive-code/core': 0.38.3 - shiki: 1.24.4 + shiki: 1.25.1 '@expressive-code/plugin-text-markers@0.38.3': dependencies: @@ -3499,27 +3505,35 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.29.1': optional: true - '@shikijs/core@1.24.4': + '@shikijs/core@1.25.1': dependencies: - '@shikijs/engine-javascript': 1.24.4 - '@shikijs/engine-oniguruma': 1.24.4 - '@shikijs/types': 1.24.4 + '@shikijs/engine-javascript': 1.25.1 + '@shikijs/engine-oniguruma': 1.25.1 + '@shikijs/types': 1.25.1 '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.24.4': + '@shikijs/engine-javascript@1.25.1': dependencies: - '@shikijs/types': 1.24.4 + '@shikijs/types': 1.25.1 '@shikijs/vscode-textmate': 9.3.1 - oniguruma-to-es: 0.8.1 + oniguruma-to-es: 0.10.0 - '@shikijs/engine-oniguruma@1.24.4': + '@shikijs/engine-oniguruma@1.25.1': dependencies: - '@shikijs/types': 1.24.4 + '@shikijs/types': 1.25.1 '@shikijs/vscode-textmate': 9.3.1 - '@shikijs/types@1.24.4': + '@shikijs/langs@1.25.1': + dependencies: + '@shikijs/types': 1.25.1 + + '@shikijs/themes@1.25.1': + dependencies: + '@shikijs/types': 1.25.1 + + '@shikijs/types@1.25.1': dependencies: '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 @@ -3708,12 +3722,12 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.38.3(astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1)): + astro-expressive-code@0.38.3(astro@5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1)): dependencies: - astro: 5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1) + astro: 5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1) rehype-expressive-code: 0.38.3 - astro@5.1.1(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1): + astro@5.1.2(jiti@2.4.2)(rollup@4.29.1)(sass@1.83.0)(terser@5.37.0)(typescript@5.7.2)(yaml@2.6.1): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.2 @@ -3758,7 +3772,7 @@ snapshots: prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.24.4 + shiki: 1.25.1 tinyexec: 0.3.1 tsconfck: 3.1.4(typescript@5.7.2) ultrahtml: 1.5.3 @@ -3766,7 +3780,7 @@ snapshots: unstorage: 1.14.1 vfile: 6.0.3 vite: 6.0.5(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(yaml@2.6.1) - vitefu: 1.0.4(vite@6.0.5(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(yaml@2.6.1)) + vitefu: 1.0.5(vite@6.0.5(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(yaml@2.6.1)) which-pm: 3.0.0 xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 @@ -5081,11 +5095,11 @@ snapshots: dependencies: mimic-fn: 4.0.0 - oniguruma-to-es@0.8.1: + oniguruma-to-es@0.10.0: dependencies: emoji-regex-xs: 1.0.0 - regex: 5.0.2 - regex-recursion: 5.0.0 + regex: 5.1.1 + regex-recursion: 5.1.1 p-limit@2.3.0: dependencies: @@ -5252,13 +5266,14 @@ snapshots: regenerator-runtime@0.14.1: {} - regex-recursion@5.0.0: + regex-recursion@5.1.1: dependencies: + regex: 5.1.1 regex-utilities: 2.3.0 regex-utilities@2.3.0: {} - regex@5.0.2: + regex@5.1.1: dependencies: regex-utilities: 2.3.0 @@ -5484,12 +5499,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.24.4: + shiki@1.25.1: dependencies: - '@shikijs/core': 1.24.4 - '@shikijs/engine-javascript': 1.24.4 - '@shikijs/engine-oniguruma': 1.24.4 - '@shikijs/types': 1.24.4 + '@shikijs/core': 1.25.1 + '@shikijs/engine-javascript': 1.25.1 + '@shikijs/engine-oniguruma': 1.25.1 + '@shikijs/langs': 1.25.1 + '@shikijs/themes': 1.25.1 + '@shikijs/types': 1.25.1 '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 @@ -5739,7 +5756,7 @@ snapshots: terser: 5.37.0 yaml: 2.6.1 - vitefu@1.0.4(vite@6.0.5(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(yaml@2.6.1)): + vitefu@1.0.5(vite@6.0.5(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(yaml@2.6.1)): optionalDependencies: vite: 6.0.5(jiti@2.4.2)(sass@1.83.0)(terser@5.37.0)(yaml@2.6.1)