From 64bdb798cc2a3707edd9889fa6afeb1f8a9d9df0 Mon Sep 17 00:00:00 2001 From: CodeDoctorDE Date: Fri, 13 Dec 2024 19:25:30 +0100 Subject: [PATCH] Add render resolution --- app/lib/cubits/current_index.dart | 15 ++- app/lib/cubits/settings.dart | 31 ++++++ app/lib/cubits/settings.freezed.dart | 135 ++++++++++++++++----------- app/lib/cubits/transform.dart | 6 ++ app/lib/handlers/import.dart | 5 +- app/lib/l10n/app_en.arb | 8 +- app/lib/models/viewport.dart | 4 + app/lib/settings/behaviors.dart | 49 +++++++++- app/lib/view_painter.dart | 3 + app/pubspec.lock | 8 +- docs/pnpm-lock.yaml | 28 +++--- 11 files changed, 211 insertions(+), 81 deletions(-) diff --git a/app/lib/cubits/current_index.dart b/app/lib/cubits/current_index.dart index fe978bc93f46..b3afdac56572 100644 --- a/app/lib/cubits/current_index.dart +++ b/app/lib/cubits/current_index.dart @@ -486,7 +486,8 @@ class CurrentIndexCubit extends Cubit { double? pixelRatio, bool reset = false, bool resetAllLayers = false}) async { - final cameraViewport = state.cameraViewport; + var cameraViewport = state.cameraViewport; + final resolution = state.settingsCubit.state.renderResolution; var size = viewportSize ?? cameraViewport.toSize(); final ratio = pixelRatio ?? cameraViewport.pixelRatio; if (size.height <= 0 || size.width <= 0) { @@ -516,6 +517,8 @@ class CurrentIndexCubit extends Cubit { size = Size(bottomRight.dx - topLeft.dx, bottomRight.dy - topLeft.dy) * transform.size; } + rect = resolution.getRect(rect); + final renderTransform = transform.improve(resolution, size); final document = blocState.data; final page = blocState.page; final info = blocState.info; @@ -539,6 +542,7 @@ class CurrentIndexCubit extends Cubit { ..addAll(renderers); } canvas.scale(ratio); + size *= resolution.multiplier; // Wait one frame await Future.delayed(const Duration(milliseconds: 1)); @@ -547,7 +551,7 @@ class CurrentIndexCubit extends Cubit { document, page, info, - transform: transform, + transform: renderTransform, states: state.allRendererStates, cameraViewport: reset ? cameraViewport.unbake( @@ -557,6 +561,7 @@ class CurrentIndexCubit extends Cubit { visibleElements: visibleElements, ) : cameraViewport, + resolution: resolution, renderBackground: false, renderBaked: !reset, renderBakedLayers: false, @@ -610,6 +615,7 @@ class CurrentIndexCubit extends Cubit { info, transform: transform, states: state.allRendererStates, + resolution: resolution, cameraViewport: cameraViewport.unbake( unbakedElements: visibleElements .where((e) => belowLayers.contains(e.layer)) @@ -623,6 +629,7 @@ class CurrentIndexCubit extends Cubit { info, transform: transform, states: state.allRendererStates, + resolution: resolution, cameraViewport: cameraViewport.unbake( unbakedElements: visibleElements .where((e) => aboveLayers.contains(e.layer)) @@ -645,8 +652,8 @@ class CurrentIndexCubit extends Cubit { width: size.width.ceil(), pixelRatio: ratio, scale: transform.size, - x: transform.position.dx, - y: transform.position.dy, + x: rect.left, + y: rect.top, image: newImage, bakedElements: renderers, unbakedElements: currentRenderers, diff --git a/app/lib/cubits/settings.dart b/app/lib/cubits/settings.dart index 8fbbb9d241ad..1d809d56b0b8 100644 --- a/app/lib/cubits/settings.dart +++ b/app/lib/cubits/settings.dart @@ -57,6 +57,26 @@ enum ToolbarSize { }; } +enum RenderResolution { + performance(1), + normal(1.5), + high(2); + + final double multiplier; + + const RenderResolution(this.multiplier); + + Rect getRect(Rect rect) { + final width = rect.width * multiplier; + final height = rect.height * multiplier; + return Rect.fromCenter( + center: rect.center, + width: width, + height: height, + ); + } +} + enum PlatformTheme { system, mobile, @@ -220,6 +240,7 @@ class ButterflySettings with _$ButterflySettings, LeapSettings { @Default(true) bool colorToolbarEnabled, @Default(OptionsPanelPosition.top) OptionsPanelPosition optionsPanelPosition, + @Default(RenderResolution.normal) RenderResolution renderResolution, }) = _ButterflySettings; factory ButterflySettings.fromPrefs(SharedPreferences prefs) { @@ -319,6 +340,7 @@ class ButterflySettings with _$ButterflySettings, LeapSettings { ? OptionsPanelPosition.values .byName(prefs.getString('options_panel_position')!) : OptionsPanelPosition.top, + renderResolution: prefs.containsKey('render_resolution') ? RenderResolution.values.byName(prefs.getString('render_resolution')!) : RenderResolution.normal, ); } @@ -389,6 +411,7 @@ class ButterflySettings with _$ButterflySettings, LeapSettings { await prefs.setBool('color_toolbar_enabled', colorToolbarEnabled); await prefs.setBool('show_save_button', showSaveButton); await prefs.setString('options_panel_position', optionsPanelPosition.name); + await prefs.setString('render_resolution', renderResolution.name); } ExternalStorage? getRemote(String? identifier) { @@ -920,4 +943,12 @@ class SettingsCubit extends Cubit } Future resetColorToolbarEnabled() => changeColorToolbarEnabled(true); + + Future changeRenderResolution(RenderResolution value) { + emit(state.copyWith(renderResolution: value)); + return save(); + } + + Future resetRenderResolution() => + changeRenderResolution(RenderResolution.normal); } diff --git a/app/lib/cubits/settings.freezed.dart b/app/lib/cubits/settings.freezed.dart index 9827f812673b..3646342c5e9f 100644 --- a/app/lib/cubits/settings.freezed.dart +++ b/app/lib/cubits/settings.freezed.dart @@ -367,6 +367,7 @@ mixin _$ButterflySettings { bool get colorToolbarEnabled => throw _privateConstructorUsedError; OptionsPanelPosition get optionsPanelPosition => throw _privateConstructorUsedError; + RenderResolution get renderResolution => throw _privateConstructorUsedError; /// Create a copy of ButterflySettings /// with the given fields replaced by the non-null parameter values. @@ -429,7 +430,8 @@ abstract class $ButterflySettingsCopyWith<$Res> { UtilitiesState utilities, StartupBehavior onStartup, bool colorToolbarEnabled, - OptionsPanelPosition optionsPanelPosition}); + OptionsPanelPosition optionsPanelPosition, + RenderResolution renderResolution}); $InputConfigurationCopyWith<$Res> get inputConfiguration; $UtilitiesStateCopyWith<$Res> get utilities; @@ -498,6 +500,7 @@ class _$ButterflySettingsCopyWithImpl<$Res, $Val extends ButterflySettings> Object? onStartup = null, Object? colorToolbarEnabled = null, Object? optionsPanelPosition = null, + Object? renderResolution = null, }) { return _then(_value.copyWith( theme: null == theme @@ -692,6 +695,10 @@ class _$ButterflySettingsCopyWithImpl<$Res, $Val extends ButterflySettings> ? _value.optionsPanelPosition : optionsPanelPosition // ignore: cast_nullable_to_non_nullable as OptionsPanelPosition, + renderResolution: null == renderResolution + ? _value.renderResolution + : renderResolution // ignore: cast_nullable_to_non_nullable + as RenderResolution, ) as $Val); } @@ -773,7 +780,8 @@ abstract class _$$ButterflySettingsImplCopyWith<$Res> UtilitiesState utilities, StartupBehavior onStartup, bool colorToolbarEnabled, - OptionsPanelPosition optionsPanelPosition}); + OptionsPanelPosition optionsPanelPosition, + RenderResolution renderResolution}); @override $InputConfigurationCopyWith<$Res> get inputConfiguration; @@ -842,6 +850,7 @@ class __$$ButterflySettingsImplCopyWithImpl<$Res> Object? onStartup = null, Object? colorToolbarEnabled = null, Object? optionsPanelPosition = null, + Object? renderResolution = null, }) { return _then(_$ButterflySettingsImpl( theme: null == theme @@ -1036,6 +1045,10 @@ class __$$ButterflySettingsImplCopyWithImpl<$Res> ? _value.optionsPanelPosition : optionsPanelPosition // ignore: cast_nullable_to_non_nullable as OptionsPanelPosition, + renderResolution: null == renderResolution + ? _value.renderResolution + : renderResolution // ignore: cast_nullable_to_non_nullable + as RenderResolution, )); } } @@ -1092,7 +1105,8 @@ class _$ButterflySettingsImpl extends _ButterflySettings this.utilities = const UtilitiesState(), this.onStartup = StartupBehavior.openHomeScreen, this.colorToolbarEnabled = true, - this.optionsPanelPosition = OptionsPanelPosition.top}) + this.optionsPanelPosition = OptionsPanelPosition.top, + this.renderResolution = RenderResolution.normal}) : _history = history, _connections = connections, _starred = starred, @@ -1273,10 +1287,13 @@ class _$ButterflySettingsImpl extends _ButterflySettings @override @JsonKey() final OptionsPanelPosition optionsPanelPosition; + @override + @JsonKey() + final RenderResolution renderResolution; @override String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) { - return 'ButterflySettings(theme: $theme, density: $density, localeTag: $localeTag, documentPath: $documentPath, gestureSensitivity: $gestureSensitivity, touchSensitivity: $touchSensitivity, selectSensitivity: $selectSensitivity, scrollSensitivity: $scrollSensitivity, penOnlyInput: $penOnlyInput, inputGestures: $inputGestures, design: $design, bannerVisibility: $bannerVisibility, history: $history, navigatorEnabled: $navigatorEnabled, zoomEnabled: $zoomEnabled, lastVersion: $lastVersion, connections: $connections, defaultRemote: $defaultRemote, nativeTitleBar: $nativeTitleBar, startInFullScreen: $startInFullScreen, navigationRail: $navigationRail, syncMode: $syncMode, inputConfiguration: $inputConfiguration, fallbackPack: $fallbackPack, starred: $starred, defaultTemplate: $defaultTemplate, navigatorPage: $navigatorPage, navigatorPosition: $navigatorPosition, toolbarPosition: $toolbarPosition, toolbarSize: $toolbarSize, sortBy: $sortBy, sortOrder: $sortOrder, imageScale: $imageScale, pdfQuality: $pdfQuality, platformTheme: $platformTheme, recentColors: $recentColors, flags: $flags, spreadPages: $spreadPages, highContrast: $highContrast, gridView: $gridView, autosave: $autosave, showSaveButton: $showSaveButton, toolbarRows: $toolbarRows, hideCursorWhileDrawing: $hideCursorWhileDrawing, utilities: $utilities, onStartup: $onStartup, colorToolbarEnabled: $colorToolbarEnabled, optionsPanelPosition: $optionsPanelPosition)'; + return 'ButterflySettings(theme: $theme, density: $density, localeTag: $localeTag, documentPath: $documentPath, gestureSensitivity: $gestureSensitivity, touchSensitivity: $touchSensitivity, selectSensitivity: $selectSensitivity, scrollSensitivity: $scrollSensitivity, penOnlyInput: $penOnlyInput, inputGestures: $inputGestures, design: $design, bannerVisibility: $bannerVisibility, history: $history, navigatorEnabled: $navigatorEnabled, zoomEnabled: $zoomEnabled, lastVersion: $lastVersion, connections: $connections, defaultRemote: $defaultRemote, nativeTitleBar: $nativeTitleBar, startInFullScreen: $startInFullScreen, navigationRail: $navigationRail, syncMode: $syncMode, inputConfiguration: $inputConfiguration, fallbackPack: $fallbackPack, starred: $starred, defaultTemplate: $defaultTemplate, navigatorPage: $navigatorPage, navigatorPosition: $navigatorPosition, toolbarPosition: $toolbarPosition, toolbarSize: $toolbarSize, sortBy: $sortBy, sortOrder: $sortOrder, imageScale: $imageScale, pdfQuality: $pdfQuality, platformTheme: $platformTheme, recentColors: $recentColors, flags: $flags, spreadPages: $spreadPages, highContrast: $highContrast, gridView: $gridView, autosave: $autosave, showSaveButton: $showSaveButton, toolbarRows: $toolbarRows, hideCursorWhileDrawing: $hideCursorWhileDrawing, utilities: $utilities, onStartup: $onStartup, colorToolbarEnabled: $colorToolbarEnabled, optionsPanelPosition: $optionsPanelPosition, renderResolution: $renderResolution)'; } @override @@ -1332,7 +1349,8 @@ class _$ButterflySettingsImpl extends _ButterflySettings ..add(DiagnosticsProperty('utilities', utilities)) ..add(DiagnosticsProperty('onStartup', onStartup)) ..add(DiagnosticsProperty('colorToolbarEnabled', colorToolbarEnabled)) - ..add(DiagnosticsProperty('optionsPanelPosition', optionsPanelPosition)); + ..add(DiagnosticsProperty('optionsPanelPosition', optionsPanelPosition)) + ..add(DiagnosticsProperty('renderResolution', renderResolution)); } @override @@ -1428,7 +1446,9 @@ class _$ButterflySettingsImpl extends _ButterflySettings (identical(other.colorToolbarEnabled, colorToolbarEnabled) || other.colorToolbarEnabled == colorToolbarEnabled) && (identical(other.optionsPanelPosition, optionsPanelPosition) || - other.optionsPanelPosition == optionsPanelPosition)); + other.optionsPanelPosition == optionsPanelPosition) && + (identical(other.renderResolution, renderResolution) || + other.renderResolution == renderResolution)); } @override @@ -1481,7 +1501,8 @@ class _$ButterflySettingsImpl extends _ButterflySettings utilities, onStartup, colorToolbarEnabled, - optionsPanelPosition + optionsPanelPosition, + renderResolution ]); /// Create a copy of ButterflySettings @@ -1496,55 +1517,55 @@ class _$ButterflySettingsImpl extends _ButterflySettings abstract class _ButterflySettings extends ButterflySettings { const factory _ButterflySettings( - {final ThemeMode theme, - final ThemeDensity density, - final String localeTag, - final String documentPath, - final double gestureSensitivity, - final double touchSensitivity, - final double selectSensitivity, - final double scrollSensitivity, - final bool penOnlyInput, - final bool inputGestures, - final String design, - final BannerVisibility bannerVisibility, - final List history, - final bool navigatorEnabled, - final bool zoomEnabled, - final String? lastVersion, - final List connections, - final String defaultRemote, - final bool nativeTitleBar, - final bool startInFullScreen, - final bool navigationRail, - final SyncMode syncMode, - final InputConfiguration inputConfiguration, - final String fallbackPack, - final List starred, - final String defaultTemplate, - final NavigatorPage navigatorPage, - final NavigatorPosition navigatorPosition, - final ToolbarPosition toolbarPosition, - final ToolbarSize toolbarSize, - final SortBy sortBy, - final SortOrder sortOrder, - final double imageScale, - final double pdfQuality, - final PlatformTheme platformTheme, - final List recentColors, - final List flags, - final bool spreadPages, - final bool highContrast, - final bool gridView, - final bool autosave, - final bool showSaveButton, - final int toolbarRows, - final bool hideCursorWhileDrawing, - final UtilitiesState utilities, - final StartupBehavior onStartup, - final bool colorToolbarEnabled, - final OptionsPanelPosition optionsPanelPosition}) = - _$ButterflySettingsImpl; + {final ThemeMode theme, + final ThemeDensity density, + final String localeTag, + final String documentPath, + final double gestureSensitivity, + final double touchSensitivity, + final double selectSensitivity, + final double scrollSensitivity, + final bool penOnlyInput, + final bool inputGestures, + final String design, + final BannerVisibility bannerVisibility, + final List history, + final bool navigatorEnabled, + final bool zoomEnabled, + final String? lastVersion, + final List connections, + final String defaultRemote, + final bool nativeTitleBar, + final bool startInFullScreen, + final bool navigationRail, + final SyncMode syncMode, + final InputConfiguration inputConfiguration, + final String fallbackPack, + final List starred, + final String defaultTemplate, + final NavigatorPage navigatorPage, + final NavigatorPosition navigatorPosition, + final ToolbarPosition toolbarPosition, + final ToolbarSize toolbarSize, + final SortBy sortBy, + final SortOrder sortOrder, + final double imageScale, + final double pdfQuality, + final PlatformTheme platformTheme, + final List recentColors, + final List flags, + final bool spreadPages, + final bool highContrast, + final bool gridView, + final bool autosave, + final bool showSaveButton, + final int toolbarRows, + final bool hideCursorWhileDrawing, + final UtilitiesState utilities, + final StartupBehavior onStartup, + final bool colorToolbarEnabled, + final OptionsPanelPosition optionsPanelPosition, + final RenderResolution renderResolution}) = _$ButterflySettingsImpl; const _ButterflySettings._() : super._(); @override @@ -1643,6 +1664,8 @@ abstract class _ButterflySettings extends ButterflySettings { bool get colorToolbarEnabled; @override OptionsPanelPosition get optionsPanelPosition; + @override + RenderResolution get renderResolution; /// Create a copy of ButterflySettings /// with the given fields replaced by the non-null parameter values. diff --git a/app/lib/cubits/transform.dart b/app/lib/cubits/transform.dart index a90cb02a7227..3d5c61500a40 100644 --- a/app/lib/cubits/transform.dart +++ b/app/lib/cubits/transform.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:butterfly/cubits/settings.dart'; import 'package:butterfly/helpers/point.dart'; import 'package:butterfly_api/butterfly_api.dart'; import 'package:equatable/equatable.dart'; @@ -106,6 +107,11 @@ class CameraTransform extends Equatable { CameraTransform withFrictionless(Offset position, double size) { return CameraTransform(this.position - position, this.size - size, null); } + + CameraTransform improve(RenderResolution resolution, Size size) { + final rect = resolution.getRect(position & size); + return CameraTransform(rect.topLeft, this.size, friction); + } } class TransformCubit extends Cubit { diff --git a/app/lib/handlers/import.dart b/app/lib/handlers/import.dart index a925e12c535f..d36a36aa1d03 100644 --- a/app/lib/handlers/import.dart +++ b/app/lib/handlers/import.dart @@ -55,7 +55,10 @@ class ImportHandler extends Handler { state.assetService, state.page, )) - .map((e) => e.transform(position: _offset, relative: true)?.element.copyWith(id: createUniqueId())) + .map((e) => e + .transform(position: _offset, relative: true) + ?.element + .copyWith(id: createUniqueId())) .nonNulls .toList())); context.refresh(); diff --git a/app/lib/l10n/app_en.arb b/app/lib/l10n/app_en.arb index 70c7e9049fd5..9bc987b1990b 100644 --- a/app/lib/l10n/app_en.arb +++ b/app/lib/l10n/app_en.arb @@ -638,5 +638,11 @@ "yesButShowButtons": "Yes, but show buttons", "optionsPanelPosition": "Options panel position", "hideDuration": "Hide duration", - "animation": "Animation" + "animation": "Animation", + "performance": "Performance", + "performanceDescription": "Optimized for speed and memory usage. Only the visible portion of the note is baked into the image.", + "normalDescription": "Balances quality and performance. Bakes an image covering 1.5 times the visible area, providing smoother transitions when scrolling.", + "high": "High", + "highDescription": "Description: Maximizes quality at the cost of performance. Bakes an image covering 2 times the visible area, ensuring seamless rendering even during rapid scrolling or zooming.", + "renderResolution": "Render resolution" } diff --git a/app/lib/models/viewport.dart b/app/lib/models/viewport.dart index 06ab26f6bccd..a66d896029bd 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'; @@ -62,6 +63,9 @@ class CameraViewport extends Equatable { ui.Rect toRect() => toOffset() & toSize(true); + ui.Rect toViewportRect(RenderResolution resolution) => + resolution.getRect(toOffset() & toSize(true)); + Area toArea() => Area( name: '', position: toPoint(), diff --git a/app/lib/settings/behaviors.dart b/app/lib/settings/behaviors.dart index c57fc23b70d5..1fd8eb78d331 100644 --- a/app/lib/settings/behaviors.dart +++ b/app/lib/settings/behaviors.dart @@ -18,6 +18,22 @@ class BehaviorsSettingsPage extends StatelessWidget { StartupBehavior.openNewNote => AppLocalizations.of(context).newNote, }; + String _getRenderResolutionName(BuildContext context, RenderResolution value) => + switch (value) { + RenderResolution.performance => AppLocalizations.of(context).performance, + RenderResolution.normal => AppLocalizations.of(context).normal, + RenderResolution.high => AppLocalizations.of(context).high, + }; + + String _getRenderResolutionDescription( + BuildContext context, RenderResolution value) => + switch (value) { + RenderResolution.performance => + AppLocalizations.of(context).performanceDescription, + RenderResolution.normal => AppLocalizations.of(context).normalDescription, + RenderResolution.high => AppLocalizations.of(context).highDescription, + }; + @override Widget build(BuildContext context) { return Scaffold( @@ -66,7 +82,14 @@ class BehaviorsSettingsPage extends StatelessWidget { _getStartupBehaviorName(context, state.onStartup)), onTap: () => _openStartupModal(context), leading: const Icon(PhosphorIconsLight.arrowFatLineUp), - ) + ), + ListTile( + title: Text(AppLocalizations.of(context).renderResolution), + subtitle: Text( + _getRenderResolutionName(context, state.renderResolution)), + onTap: () => _openRenderResolutionModal(context), + leading: const Icon(PhosphorIconsLight.sparkle), + ), ]), ), ), @@ -152,6 +175,30 @@ class BehaviorsSettingsPage extends StatelessWidget { }); } + void _openRenderResolutionModal(BuildContext context) { + final cubit = context.read(); + final currentResolution = cubit.state.renderResolution; + + showLeapBottomSheet( + context: context, + titleBuilder: (context) => Text(AppLocalizations.of(context).renderResolution), + childrenBuilder: (context) { + void changeResolution(RenderResolution resolution) { + cubit.changeRenderResolution(resolution); + Navigator.of(context).pop(); + } + + return RenderResolution.values + .map((e) => ListTile( + title: Text(_getRenderResolutionName(context, e)), + subtitle: Text(_getRenderResolutionDescription(context, e)), + selected: currentResolution == e, + onTap: () => changeResolution(e), + )) + .toList(); + }); + } + void _openAutosaveModal(BuildContext context) { final cubit = context.read(); final autosave = cubit.state.autosave; diff --git a/app/lib/view_painter.dart b/app/lib/view_painter.dart index 119962f41875..8d0ee496986f 100644 --- a/app/lib/view_painter.dart +++ b/app/lib/view_painter.dart @@ -1,6 +1,7 @@ import 'dart:math'; import 'package:butterfly/cubits/current_index.dart'; +import 'package:butterfly/cubits/settings.dart'; import 'package:butterfly/helpers/rect.dart'; import 'package:butterfly/models/viewport.dart'; import 'package:butterfly/renderers/renderer.dart'; @@ -98,12 +99,14 @@ class ViewPainter extends CustomPainter { final ColorScheme? colorScheme; final Set invisibleLayers; final Map states; + final RenderResolution? resolution; const ViewPainter( this.document, this.page, this.info, { this.currentArea, + this.resolution, this.invisibleLayers = const {}, this.states = const {}, this.renderBackground = true, diff --git a/app/pubspec.lock b/app/pubspec.lock index 57187cf51bcd..2bd56ef62c98 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -1233,18 +1233,18 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: "7f172d1b06de5da47b6264c2692ee2ead20bbbc246690427cdb4fc301cd0c549" + sha256: "02a7d8a9ef346c9af715811b01fbd8e27845ad2c41148eefd31321471b41863d" url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.4.0" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d" + sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" url: "https://pub.dev" source: hosted - version: "2.5.3" + version: "2.5.4" shared_preferences_linux: dependency: transitive description: diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index 9107dc2c9272..3fdd1a310f6a 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -968,8 +968,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.24.2: - resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + browserslist@4.24.3: + resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1316,8 +1316,8 @@ packages: hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} - hast-util-to-html@9.0.3: - resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + hast-util-to-html@9.0.4: + resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} hast-util-to-jsx-runtime@2.3.2: resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} @@ -2471,7 +2471,7 @@ snapshots: es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 gray-matter: 4.0.3 - hast-util-to-html: 9.0.3 + hast-util-to-html: 9.0.4 kleur: 4.1.5 rehype-raw: 7.0.0 remark-gfm: 4.0.0 @@ -2602,7 +2602,7 @@ snapshots: dependencies: '@babel/compat-data': 7.26.3 '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.2 + browserslist: 4.24.3 lru-cache: 5.1.1 semver: 6.3.1 @@ -2795,7 +2795,7 @@ snapshots: dependencies: '@ctrl/tinycolor': 4.1.0 hast-util-select: 6.0.3 - hast-util-to-html: 9.0.3 + hast-util-to-html: 9.0.4 hast-util-to-text: 4.0.2 hastscript: 9.0.0 postcss: 8.4.49 @@ -3113,7 +3113,7 @@ snapshots: '@shikijs/types': 1.24.2 '@shikijs/vscode-textmate': 9.3.1 '@types/hast': 3.0.4 - hast-util-to-html: 9.0.3 + hast-util-to-html: 9.0.4 '@shikijs/engine-javascript@1.24.2': dependencies: @@ -3428,12 +3428,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.24.2: + browserslist@4.24.3: dependencies: caniuse-lite: 1.0.30001688 electron-to-chromium: 1.5.73 node-releases: 2.0.19 - update-browserslist-db: 1.1.1(browserslist@4.24.2) + update-browserslist-db: 1.1.1(browserslist@4.24.3) buffer-from@1.1.2: optional: true @@ -3841,7 +3841,7 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-html@9.0.3: + hast-util-to-html@9.0.4: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 @@ -4744,7 +4744,7 @@ snapshots: rehype-stringify@10.0.1: dependencies: '@types/hast': 3.0.4 - hast-util-to-html: 9.0.3 + hast-util-to-html: 9.0.4 unified: 11.0.5 rehype@13.0.2: @@ -5125,9 +5125,9 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - update-browserslist-db@1.1.1(browserslist@4.24.2): + update-browserslist-db@1.1.1(browserslist@4.24.3): dependencies: - browserslist: 4.24.2 + browserslist: 4.24.3 escalade: 3.2.0 picocolors: 1.1.1