From 68440386167eb712db1a7dbcb976ee03491c882a Mon Sep 17 00:00:00 2001 From: Xanazf Date: Sat, 28 Sep 2024 02:35:19 +0300 Subject: [PATCH] initial commit --- .gitignore | 24 + .vscode/extensions.json | 4 + .vscode/launch.json | 11 + .yarn/install-state.gz | Bin 0 -> 743705 bytes README.md | 7 + astro.config.mjs | 41 + biome.json | 87 + .../Quickshell.DBusMenu/DBusMenuHandle.json | 31 + modules/Quickshell.DBusMenu/DBusMenuItem.json | 49 + modules/Quickshell.DBusMenu/index.json | 5 + .../Quickshell.Hyprland/GlobalShortcut.json | 71 + modules/Quickshell.Hyprland/Hyprland.json | 163 + .../Quickshell.Hyprland/HyprlandEvent.json | 68 + .../HyprlandFocusGrab.json | 44 + .../Quickshell.Hyprland/HyprlandMonitor.json | 130 + .../HyprlandWorkspace.json | 64 + modules/Quickshell.Hyprland/index.json | 5 + modules/Quickshell.Io/DataStream.json | 28 + modules/Quickshell.Io/DataStreamParser.json | 34 + modules/Quickshell.Io/FileView.json | 111 + modules/Quickshell.Io/Process.json | 174 + modules/Quickshell.Io/Socket.json | 80 + modules/Quickshell.Io/SocketServer.json | 41 + modules/Quickshell.Io/SplitParser.json | 25 + modules/Quickshell.Io/index.json | 5 + .../Quickshell.Services.Greetd/Greetd.json | 291 + .../GreetdState.json | 56 + modules/Quickshell.Services.Greetd/index.json | 5 + modules/Quickshell.Services.Mpris/Mpris.json | 36 + .../MprisLoopState.json | 50 + .../MprisPlaybackState.json | 50 + .../MprisPlayer.json | 539 ++ modules/Quickshell.Services.Mpris/index.json | 5 + .../Notification.json | 236 + .../NotificationAction.json | 54 + .../NotificationCloseReason.json | 50 + .../NotificationServer.json | 133 + .../NotificationUrgency.json | 50 + .../index.json | 5 + .../Quickshell.Services.Pam/PamContext.json | 170 + modules/Quickshell.Services.Pam/PamError.json | 50 + .../Quickshell.Services.Pam/PamResult.json | 53 + modules/Quickshell.Services.Pam/index.json | 5 + .../Pipewire.json | 90 + .../PwAudioChannel.json | 164 + .../Quickshell.Services.Pipewire/PwLink.json | 64 + .../PwLinkGroup.json | 53 + .../PwLinkState.json | 62 + .../Quickshell.Services.Pipewire/PwNode.json | 108 + .../PwNodeAudio.json | 65 + .../PwNodeLinkTracker.json | 41 + .../PwObjectTracker.json | 30 + .../Quickshell.Services.Pipewire/index.json | 5 + .../SystemTray.json | 36 + .../SystemTrayCategory.json | 18 + .../SystemTrayItem.json | 217 + .../SystemTrayMenuWatcher.json | 36 + .../SystemTrayStatus.json | 18 + .../Quickshell.Services.SystemTray/index.json | 5 + .../Quickshell.Services.UPower/UPower.json | 58 + .../UPowerDevice.json | 185 + .../UPowerDeviceState.json | 62 + .../UPowerDeviceType.json | 128 + modules/Quickshell.Services.UPower/index.json | 5 + modules/Quickshell.Wayland/Toplevel.json | 165 + .../Quickshell.Wayland/ToplevelManager.json | 47 + modules/Quickshell.Wayland/WlSessionLock.json | 47 + .../WlSessionLockSurface.json | 97 + .../Quickshell.Wayland/WlrKeyboardFocus.json | 18 + modules/Quickshell.Wayland/WlrLayer.json | 21 + modules/Quickshell.Wayland/WlrLayershell.json | 41 + modules/Quickshell.Wayland/index.json | 5 + modules/Quickshell/BoundComponent.json | 74 + modules/Quickshell/DesktopAction.json | 76 + modules/Quickshell/DesktopEntries.json | 57 + modules/Quickshell/DesktopEntry.json | 179 + modules/Quickshell/EasingCurve.json | 154 + modules/Quickshell/Edges.json | 24 + modules/Quickshell/ElapsedTimer.json | 83 + modules/Quickshell/ExclusionMode.json | 18 + modules/Quickshell/FloatingWindow.json | 16 + modules/Quickshell/Intersection.json | 21 + modules/Quickshell/LazyLoader.json | 71 + modules/Quickshell/ObjectModel.json | 146 + modules/Quickshell/ObjectRepeater.json | 35 + modules/Quickshell/PanelWindow.json | 103 + modules/Quickshell/PersistentProperties.json | 27 + modules/Quickshell/PopupAdjustment.json | 42 + modules/Quickshell/PopupAnchor.json | 89 + modules/Quickshell/PopupWindow.json | 71 + modules/Quickshell/QsMenuAnchor.json | 81 + modules/Quickshell/QsMenuButtonType.json | 50 + modules/Quickshell/QsMenuEntry.json | 140 + modules/Quickshell/QsMenuHandle.json | 19 + modules/Quickshell/QsMenuOpener.json | 41 + modules/Quickshell/QsWindow.json | 124 + modules/Quickshell/Quickshell.json | 149 + modules/Quickshell/QuickshellSettings.json | 42 + modules/Quickshell/Region.json | 101 + modules/Quickshell/RegionShape.json | 15 + modules/Quickshell/Reloadable.json | 28 + modules/Quickshell/Retainable.json | 76 + modules/Quickshell/RetainableLock.json | 55 + modules/Quickshell/Scope.json | 34 + modules/Quickshell/ShellRoot.json | 28 + modules/Quickshell/ShellScreen.json | 142 + modules/Quickshell/Singleton.json | 16 + modules/Quickshell/SystemClock.json | 79 + modules/Quickshell/TransformWatcher.json | 52 + modules/Quickshell/Variants.json | 57 + modules/Quickshell/index.json | 5 + .../Quickshell.DBusMenu/DBusMenuHandle.json | 31 + .../Quickshell.DBusMenu/DBusMenuItem.json | 49 + modules_old/Quickshell.DBusMenu/index.json | 5 + .../Quickshell.Hyprland/GlobalShortcut.json | 71 + modules_old/Quickshell.Hyprland/Hyprland.json | 163 + .../Quickshell.Hyprland/HyprlandEvent.json | 68 + .../HyprlandFocusGrab.json | 44 + .../Quickshell.Hyprland/HyprlandMonitor.json | 130 + .../HyprlandWorkspace.json | 64 + modules_old/Quickshell.Hyprland/index.json | 5 + modules_old/Quickshell.Io/DataStream.json | 28 + .../Quickshell.Io/DataStreamParser.json | 34 + modules_old/Quickshell.Io/Process.json | 172 + modules_old/Quickshell.Io/Socket.json | 80 + modules_old/Quickshell.Io/SocketServer.json | 41 + modules_old/Quickshell.Io/SplitParser.json | 25 + modules_old/Quickshell.Io/index.json | 5 + .../SystemTray.json | 33 + .../SystemTrayCategory.json | 16 + .../SystemTrayItem.json | 156 + .../SystemTrayMenuWatcher.json | 33 + .../SystemTrayStatus.json | 16 + .../Quickshell.Service.SystemTray/index.json | 4 + .../Quickshell.Services.Greetd/Greetd.json | 291 + .../GreetdState.json | 56 + .../Quickshell.Services.Greetd/index.json | 5 + .../Quickshell.Services.Mpris/Mpris.json | 36 + .../MprisLoopState.json | 50 + .../MprisPlaybackState.json | 50 + .../MprisPlayer.json | 534 ++ .../Quickshell.Services.Mpris/index.json | 5 + .../Notification.json | 236 + .../NotificationAction.json | 54 + .../NotificationCloseReason.json | 50 + .../NotificationServer.json | 133 + .../NotificationUrgency.json | 50 + .../index.json | 5 + .../Quickshell.Services.Pam/PamContext.json | 162 + .../Quickshell.Services.Pam/PamError.json | 50 + .../Quickshell.Services.Pam/PamResult.json | 53 + .../Quickshell.Services.Pam/index.json | 5 + .../Pipewire.json | 88 + .../PwAudioChannel.json | 162 + .../Quickshell.Services.PipeWire/PwLink.json | 62 + .../PwLinkGroup.json | 51 + .../PwLinkState.json | 60 + .../Quickshell.Services.PipeWire/PwNode.json | 106 + .../PwNodeAudio.json | 63 + .../PwNodeLinkTracker.json | 39 + .../PwObjectTracker.json | 28 + .../Quickshell.Services.PipeWire/index.json | 4 + .../Pipewire.json | 90 + .../PwAudioChannel.json | 164 + .../Quickshell.Services.Pipewire/PwLink.json | 64 + .../PwLinkGroup.json | 53 + .../PwLinkState.json | 62 + .../Quickshell.Services.Pipewire/PwNode.json | 108 + .../PwNodeAudio.json | 65 + .../PwNodeLinkTracker.json | 41 + .../PwObjectTracker.json | 30 + .../Quickshell.Services.Pipewire/index.json | 5 + .../SystemTray.json | 36 + .../SystemTrayCategory.json | 18 + .../SystemTrayItem.json | 206 + .../SystemTrayMenuWatcher.json | 36 + .../SystemTrayStatus.json | 18 + .../Quickshell.Services.SystemTray/index.json | 5 + .../Quickshell.Services.UPower/UPower.json | 58 + .../UPowerDevice.json | 185 + .../UPowerDeviceState.json | 62 + .../UPowerDeviceType.json | 128 + .../Quickshell.Services.UPower/index.json | 5 + modules_old/Quickshell.Wayland/Toplevel.json | 165 + .../Quickshell.Wayland/ToplevelManager.json | 36 + .../Quickshell.Wayland/WlSessionLock.json | 47 + .../WlSessionLockSurface.json | 97 + .../Quickshell.Wayland/WlrKeyboardFocus.json | 18 + modules_old/Quickshell.Wayland/WlrLayer.json | 21 + .../Quickshell.Wayland/WlrLayershell.json | 41 + modules_old/Quickshell.Wayland/index.json | 5 + modules_old/Quickshell/BoundComponent.json | 74 + modules_old/Quickshell/DesktopAction.json | 76 + modules_old/Quickshell/DesktopEntries.json | 57 + modules_old/Quickshell/DesktopEntry.json | 179 + modules_old/Quickshell/EasingCurve.json | 154 + modules_old/Quickshell/ElapsedTimer.json | 83 + modules_old/Quickshell/ExclusionMode.json | 18 + modules_old/Quickshell/FloatingWindow.json | 16 + modules_old/Quickshell/Intersection.json | 21 + modules_old/Quickshell/LazyLoader.json | 71 + modules_old/Quickshell/ObjectModel.json | 146 + modules_old/Quickshell/ObjectRepeater.json | 39 + modules_old/Quickshell/PanelWindow.json | 103 + .../Quickshell/PersistentProperties.json | 27 + modules_old/Quickshell/PopupAdjustment.json | 42 + modules_old/Quickshell/PopupWindow.json | 71 + modules_old/Quickshell/QsMenuButtonType.json | 50 + modules_old/Quickshell/QsMenuEntry.json | 140 + modules_old/Quickshell/QsMenuOpener.json | 41 + modules_old/Quickshell/QsWindow.json | 113 + modules_old/Quickshell/Quickshell.json | 149 + .../Quickshell/QuickshellSettings.json | 42 + modules_old/Quickshell/Region.json | 101 + modules_old/Quickshell/RegionShape.json | 15 + modules_old/Quickshell/Reloadable.json | 28 + modules_old/Quickshell/Retainable.json | 76 + modules_old/Quickshell/RetainableLock.json | 55 + modules_old/Quickshell/Scope.json | 34 + modules_old/Quickshell/ShellRoot.json | 28 + modules_old/Quickshell/ShellScreen.json | 142 + modules_old/Quickshell/Singleton.json | 16 + modules_old/Quickshell/TransformWatcher.json | 52 + modules_old/Quickshell/Variants.json | 57 + modules_old/Quickshell/index.json | 5 + package-lock.json | 7728 +++++++++++++++ package.json | 37 + public/favicon.svg | 1 + public/quickshell.png | Bin 0 -> 12985 bytes src/components/Collapsible.tsx | 18 + src/components/Header.astro | 66 + src/components/MD_Title.tsx | 30 + src/components/hooks/CreateCopyButtons.astro | 52 + .../hooks/CreateQMLCodeButtons.astro | 107 + .../hooks/TOCIntersectionObserver.astro | 29 + src/components/hooks/ThemeSwitch.tsx | 101 + src/components/hooks/TransformLinks.astro | 66 + .../hooks/TransformMDCodeblocks.astro | 21 + src/components/icons.tsx | 477 + src/components/navigation/Search.astro | 7 + .../navigation/search/SearchModal.tsx | 53 + src/components/navigation/search/index.tsx | 59 + src/components/navigation/search/types.d.ts | 15 + src/components/navigation/sidebars/Nav.astro | 31 + src/components/navigation/sidebars/TOC.astro | 21 + .../navigation/sidebars/nav/Tree.tsx | 124 + .../navigation/sidebars/nav/index.tsx | 52 + .../navigation/sidebars/toc/Heading.tsx | 33 + .../navigation/sidebars/toc/Table.tsx | 111 + .../navigation/sidebars/toc/i.tsx.bak | 52 + .../navigation/sidebars/toc/index.tsx | 41 + src/components/navigation/sidebars/types.d.ts | 63 + src/components/type/Functions.astro | 67 + src/components/type/Properties.astro | 83 + src/components/type/Signals.astro | 54 + src/components/type/Variants.astro | 45 + src/config/Head.astro | 28 + src/config/PreTheme.astro | 23 + src/config/io/fuseConfig.ts | 5 + src/config/io/generateSearchLists.ts | 0 src/config/io/generateTypeData.ts | 53 + src/config/io/helpers.ts | 238 + src/config/io/types.d.ts | 121 + src/env.d.ts | 2 + src/layouts/BaseLayout.astro | 29 + src/layouts/ConfigLayout.astro | 39 + src/layouts/DocsLayout.astro | 103 + src/pages/docs/configuration/index.mdx | 17 + src/pages/docs/configuration/intro.mdx | 844 ++ src/pages/docs/configuration/positioning.mdx | 117 + src/pages/docs/configuration/qml-overview.mdx | 888 ++ src/pages/docs/index.astro | 10 + src/pages/docs/types/[type]/[name].astro | 127 + src/pages/docs/types/[type]/index.astro | 27 + src/pages/docs/types/index.astro | 8 + src/pages/index.astro | 13 + src/styles/css-config/animations.css | 107 + src/styles/css-config/base.css | 79 + src/styles/css-config/code.css | 42 + src/styles/css-config/colors.css | 31 + src/styles/css-config/modal.css | 41 + src/styles/css-config/search.css | 1 + src/styles/docs/collapsible.css | 66 + src/styles/docs/docs-config.css | 13 + src/styles/docs/docs-types.css | 407 + src/styles/docs/docs.css | 124 + src/styles/docs/nav/nav-tree.css | 171 + src/styles/docs/nav/nav.css | 127 + src/styles/docs/toc/intro-toc.css | 29 + src/styles/docs/toc/toc.css | 125 + src/styles/docs/toc/types-toc.css | 63 + src/styles/global.css | 142 + tsconfig.json | 37 + yarn.lock | 8245 +++++++++++++++++ 294 files changed, 37788 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/launch.json create mode 100644 .yarn/install-state.gz create mode 100644 README.md create mode 100644 astro.config.mjs create mode 100644 biome.json create mode 100644 modules/Quickshell.DBusMenu/DBusMenuHandle.json create mode 100644 modules/Quickshell.DBusMenu/DBusMenuItem.json create mode 100644 modules/Quickshell.DBusMenu/index.json create mode 100644 modules/Quickshell.Hyprland/GlobalShortcut.json create mode 100644 modules/Quickshell.Hyprland/Hyprland.json create mode 100644 modules/Quickshell.Hyprland/HyprlandEvent.json create mode 100644 modules/Quickshell.Hyprland/HyprlandFocusGrab.json create mode 100644 modules/Quickshell.Hyprland/HyprlandMonitor.json create mode 100644 modules/Quickshell.Hyprland/HyprlandWorkspace.json create mode 100644 modules/Quickshell.Hyprland/index.json create mode 100644 modules/Quickshell.Io/DataStream.json create mode 100644 modules/Quickshell.Io/DataStreamParser.json create mode 100644 modules/Quickshell.Io/FileView.json create mode 100644 modules/Quickshell.Io/Process.json create mode 100644 modules/Quickshell.Io/Socket.json create mode 100644 modules/Quickshell.Io/SocketServer.json create mode 100644 modules/Quickshell.Io/SplitParser.json create mode 100644 modules/Quickshell.Io/index.json create mode 100644 modules/Quickshell.Services.Greetd/Greetd.json create mode 100644 modules/Quickshell.Services.Greetd/GreetdState.json create mode 100644 modules/Quickshell.Services.Greetd/index.json create mode 100644 modules/Quickshell.Services.Mpris/Mpris.json create mode 100644 modules/Quickshell.Services.Mpris/MprisLoopState.json create mode 100644 modules/Quickshell.Services.Mpris/MprisPlaybackState.json create mode 100644 modules/Quickshell.Services.Mpris/MprisPlayer.json create mode 100644 modules/Quickshell.Services.Mpris/index.json create mode 100644 modules/Quickshell.Services.Notifications/Notification.json create mode 100644 modules/Quickshell.Services.Notifications/NotificationAction.json create mode 100644 modules/Quickshell.Services.Notifications/NotificationCloseReason.json create mode 100644 modules/Quickshell.Services.Notifications/NotificationServer.json create mode 100644 modules/Quickshell.Services.Notifications/NotificationUrgency.json create mode 100644 modules/Quickshell.Services.Notifications/index.json create mode 100644 modules/Quickshell.Services.Pam/PamContext.json create mode 100644 modules/Quickshell.Services.Pam/PamError.json create mode 100644 modules/Quickshell.Services.Pam/PamResult.json create mode 100644 modules/Quickshell.Services.Pam/index.json create mode 100644 modules/Quickshell.Services.Pipewire/Pipewire.json create mode 100644 modules/Quickshell.Services.Pipewire/PwAudioChannel.json create mode 100644 modules/Quickshell.Services.Pipewire/PwLink.json create mode 100644 modules/Quickshell.Services.Pipewire/PwLinkGroup.json create mode 100644 modules/Quickshell.Services.Pipewire/PwLinkState.json create mode 100644 modules/Quickshell.Services.Pipewire/PwNode.json create mode 100644 modules/Quickshell.Services.Pipewire/PwNodeAudio.json create mode 100644 modules/Quickshell.Services.Pipewire/PwNodeLinkTracker.json create mode 100644 modules/Quickshell.Services.Pipewire/PwObjectTracker.json create mode 100644 modules/Quickshell.Services.Pipewire/index.json create mode 100644 modules/Quickshell.Services.SystemTray/SystemTray.json create mode 100644 modules/Quickshell.Services.SystemTray/SystemTrayCategory.json create mode 100644 modules/Quickshell.Services.SystemTray/SystemTrayItem.json create mode 100644 modules/Quickshell.Services.SystemTray/SystemTrayMenuWatcher.json create mode 100644 modules/Quickshell.Services.SystemTray/SystemTrayStatus.json create mode 100644 modules/Quickshell.Services.SystemTray/index.json create mode 100644 modules/Quickshell.Services.UPower/UPower.json create mode 100644 modules/Quickshell.Services.UPower/UPowerDevice.json create mode 100644 modules/Quickshell.Services.UPower/UPowerDeviceState.json create mode 100644 modules/Quickshell.Services.UPower/UPowerDeviceType.json create mode 100644 modules/Quickshell.Services.UPower/index.json create mode 100644 modules/Quickshell.Wayland/Toplevel.json create mode 100644 modules/Quickshell.Wayland/ToplevelManager.json create mode 100644 modules/Quickshell.Wayland/WlSessionLock.json create mode 100644 modules/Quickshell.Wayland/WlSessionLockSurface.json create mode 100644 modules/Quickshell.Wayland/WlrKeyboardFocus.json create mode 100644 modules/Quickshell.Wayland/WlrLayer.json create mode 100644 modules/Quickshell.Wayland/WlrLayershell.json create mode 100644 modules/Quickshell.Wayland/index.json create mode 100644 modules/Quickshell/BoundComponent.json create mode 100644 modules/Quickshell/DesktopAction.json create mode 100644 modules/Quickshell/DesktopEntries.json create mode 100644 modules/Quickshell/DesktopEntry.json create mode 100644 modules/Quickshell/EasingCurve.json create mode 100644 modules/Quickshell/Edges.json create mode 100644 modules/Quickshell/ElapsedTimer.json create mode 100644 modules/Quickshell/ExclusionMode.json create mode 100644 modules/Quickshell/FloatingWindow.json create mode 100644 modules/Quickshell/Intersection.json create mode 100644 modules/Quickshell/LazyLoader.json create mode 100644 modules/Quickshell/ObjectModel.json create mode 100644 modules/Quickshell/ObjectRepeater.json create mode 100644 modules/Quickshell/PanelWindow.json create mode 100644 modules/Quickshell/PersistentProperties.json create mode 100644 modules/Quickshell/PopupAdjustment.json create mode 100644 modules/Quickshell/PopupAnchor.json create mode 100644 modules/Quickshell/PopupWindow.json create mode 100644 modules/Quickshell/QsMenuAnchor.json create mode 100644 modules/Quickshell/QsMenuButtonType.json create mode 100644 modules/Quickshell/QsMenuEntry.json create mode 100644 modules/Quickshell/QsMenuHandle.json create mode 100644 modules/Quickshell/QsMenuOpener.json create mode 100644 modules/Quickshell/QsWindow.json create mode 100644 modules/Quickshell/Quickshell.json create mode 100644 modules/Quickshell/QuickshellSettings.json create mode 100644 modules/Quickshell/Region.json create mode 100644 modules/Quickshell/RegionShape.json create mode 100644 modules/Quickshell/Reloadable.json create mode 100644 modules/Quickshell/Retainable.json create mode 100644 modules/Quickshell/RetainableLock.json create mode 100644 modules/Quickshell/Scope.json create mode 100644 modules/Quickshell/ShellRoot.json create mode 100644 modules/Quickshell/ShellScreen.json create mode 100644 modules/Quickshell/Singleton.json create mode 100644 modules/Quickshell/SystemClock.json create mode 100644 modules/Quickshell/TransformWatcher.json create mode 100644 modules/Quickshell/Variants.json create mode 100644 modules/Quickshell/index.json create mode 100644 modules_old/Quickshell.DBusMenu/DBusMenuHandle.json create mode 100644 modules_old/Quickshell.DBusMenu/DBusMenuItem.json create mode 100644 modules_old/Quickshell.DBusMenu/index.json create mode 100644 modules_old/Quickshell.Hyprland/GlobalShortcut.json create mode 100644 modules_old/Quickshell.Hyprland/Hyprland.json create mode 100644 modules_old/Quickshell.Hyprland/HyprlandEvent.json create mode 100644 modules_old/Quickshell.Hyprland/HyprlandFocusGrab.json create mode 100644 modules_old/Quickshell.Hyprland/HyprlandMonitor.json create mode 100644 modules_old/Quickshell.Hyprland/HyprlandWorkspace.json create mode 100644 modules_old/Quickshell.Hyprland/index.json create mode 100644 modules_old/Quickshell.Io/DataStream.json create mode 100644 modules_old/Quickshell.Io/DataStreamParser.json create mode 100644 modules_old/Quickshell.Io/Process.json create mode 100644 modules_old/Quickshell.Io/Socket.json create mode 100644 modules_old/Quickshell.Io/SocketServer.json create mode 100644 modules_old/Quickshell.Io/SplitParser.json create mode 100644 modules_old/Quickshell.Io/index.json create mode 100644 modules_old/Quickshell.Service.SystemTray/SystemTray.json create mode 100644 modules_old/Quickshell.Service.SystemTray/SystemTrayCategory.json create mode 100644 modules_old/Quickshell.Service.SystemTray/SystemTrayItem.json create mode 100644 modules_old/Quickshell.Service.SystemTray/SystemTrayMenuWatcher.json create mode 100644 modules_old/Quickshell.Service.SystemTray/SystemTrayStatus.json create mode 100644 modules_old/Quickshell.Service.SystemTray/index.json create mode 100644 modules_old/Quickshell.Services.Greetd/Greetd.json create mode 100644 modules_old/Quickshell.Services.Greetd/GreetdState.json create mode 100644 modules_old/Quickshell.Services.Greetd/index.json create mode 100644 modules_old/Quickshell.Services.Mpris/Mpris.json create mode 100644 modules_old/Quickshell.Services.Mpris/MprisLoopState.json create mode 100644 modules_old/Quickshell.Services.Mpris/MprisPlaybackState.json create mode 100644 modules_old/Quickshell.Services.Mpris/MprisPlayer.json create mode 100644 modules_old/Quickshell.Services.Mpris/index.json create mode 100644 modules_old/Quickshell.Services.Notifications/Notification.json create mode 100644 modules_old/Quickshell.Services.Notifications/NotificationAction.json create mode 100644 modules_old/Quickshell.Services.Notifications/NotificationCloseReason.json create mode 100644 modules_old/Quickshell.Services.Notifications/NotificationServer.json create mode 100644 modules_old/Quickshell.Services.Notifications/NotificationUrgency.json create mode 100644 modules_old/Quickshell.Services.Notifications/index.json create mode 100644 modules_old/Quickshell.Services.Pam/PamContext.json create mode 100644 modules_old/Quickshell.Services.Pam/PamError.json create mode 100644 modules_old/Quickshell.Services.Pam/PamResult.json create mode 100644 modules_old/Quickshell.Services.Pam/index.json create mode 100644 modules_old/Quickshell.Services.PipeWire/Pipewire.json create mode 100644 modules_old/Quickshell.Services.PipeWire/PwAudioChannel.json create mode 100644 modules_old/Quickshell.Services.PipeWire/PwLink.json create mode 100644 modules_old/Quickshell.Services.PipeWire/PwLinkGroup.json create mode 100644 modules_old/Quickshell.Services.PipeWire/PwLinkState.json create mode 100644 modules_old/Quickshell.Services.PipeWire/PwNode.json create mode 100644 modules_old/Quickshell.Services.PipeWire/PwNodeAudio.json create mode 100644 modules_old/Quickshell.Services.PipeWire/PwNodeLinkTracker.json create mode 100644 modules_old/Quickshell.Services.PipeWire/PwObjectTracker.json create mode 100644 modules_old/Quickshell.Services.PipeWire/index.json create mode 100644 modules_old/Quickshell.Services.Pipewire/Pipewire.json create mode 100644 modules_old/Quickshell.Services.Pipewire/PwAudioChannel.json create mode 100644 modules_old/Quickshell.Services.Pipewire/PwLink.json create mode 100644 modules_old/Quickshell.Services.Pipewire/PwLinkGroup.json create mode 100644 modules_old/Quickshell.Services.Pipewire/PwLinkState.json create mode 100644 modules_old/Quickshell.Services.Pipewire/PwNode.json create mode 100644 modules_old/Quickshell.Services.Pipewire/PwNodeAudio.json create mode 100644 modules_old/Quickshell.Services.Pipewire/PwNodeLinkTracker.json create mode 100644 modules_old/Quickshell.Services.Pipewire/PwObjectTracker.json create mode 100644 modules_old/Quickshell.Services.Pipewire/index.json create mode 100644 modules_old/Quickshell.Services.SystemTray/SystemTray.json create mode 100644 modules_old/Quickshell.Services.SystemTray/SystemTrayCategory.json create mode 100644 modules_old/Quickshell.Services.SystemTray/SystemTrayItem.json create mode 100644 modules_old/Quickshell.Services.SystemTray/SystemTrayMenuWatcher.json create mode 100644 modules_old/Quickshell.Services.SystemTray/SystemTrayStatus.json create mode 100644 modules_old/Quickshell.Services.SystemTray/index.json create mode 100644 modules_old/Quickshell.Services.UPower/UPower.json create mode 100644 modules_old/Quickshell.Services.UPower/UPowerDevice.json create mode 100644 modules_old/Quickshell.Services.UPower/UPowerDeviceState.json create mode 100644 modules_old/Quickshell.Services.UPower/UPowerDeviceType.json create mode 100644 modules_old/Quickshell.Services.UPower/index.json create mode 100644 modules_old/Quickshell.Wayland/Toplevel.json create mode 100644 modules_old/Quickshell.Wayland/ToplevelManager.json create mode 100644 modules_old/Quickshell.Wayland/WlSessionLock.json create mode 100644 modules_old/Quickshell.Wayland/WlSessionLockSurface.json create mode 100644 modules_old/Quickshell.Wayland/WlrKeyboardFocus.json create mode 100644 modules_old/Quickshell.Wayland/WlrLayer.json create mode 100644 modules_old/Quickshell.Wayland/WlrLayershell.json create mode 100644 modules_old/Quickshell.Wayland/index.json create mode 100644 modules_old/Quickshell/BoundComponent.json create mode 100644 modules_old/Quickshell/DesktopAction.json create mode 100644 modules_old/Quickshell/DesktopEntries.json create mode 100644 modules_old/Quickshell/DesktopEntry.json create mode 100644 modules_old/Quickshell/EasingCurve.json create mode 100644 modules_old/Quickshell/ElapsedTimer.json create mode 100644 modules_old/Quickshell/ExclusionMode.json create mode 100644 modules_old/Quickshell/FloatingWindow.json create mode 100644 modules_old/Quickshell/Intersection.json create mode 100644 modules_old/Quickshell/LazyLoader.json create mode 100644 modules_old/Quickshell/ObjectModel.json create mode 100644 modules_old/Quickshell/ObjectRepeater.json create mode 100644 modules_old/Quickshell/PanelWindow.json create mode 100644 modules_old/Quickshell/PersistentProperties.json create mode 100644 modules_old/Quickshell/PopupAdjustment.json create mode 100644 modules_old/Quickshell/PopupWindow.json create mode 100644 modules_old/Quickshell/QsMenuButtonType.json create mode 100644 modules_old/Quickshell/QsMenuEntry.json create mode 100644 modules_old/Quickshell/QsMenuOpener.json create mode 100644 modules_old/Quickshell/QsWindow.json create mode 100644 modules_old/Quickshell/Quickshell.json create mode 100644 modules_old/Quickshell/QuickshellSettings.json create mode 100644 modules_old/Quickshell/Region.json create mode 100644 modules_old/Quickshell/RegionShape.json create mode 100644 modules_old/Quickshell/Reloadable.json create mode 100644 modules_old/Quickshell/Retainable.json create mode 100644 modules_old/Quickshell/RetainableLock.json create mode 100644 modules_old/Quickshell/Scope.json create mode 100644 modules_old/Quickshell/ShellRoot.json create mode 100644 modules_old/Quickshell/ShellScreen.json create mode 100644 modules_old/Quickshell/Singleton.json create mode 100644 modules_old/Quickshell/TransformWatcher.json create mode 100644 modules_old/Quickshell/Variants.json create mode 100644 modules_old/Quickshell/index.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.svg create mode 100644 public/quickshell.png create mode 100644 src/components/Collapsible.tsx create mode 100644 src/components/Header.astro create mode 100644 src/components/MD_Title.tsx create mode 100644 src/components/hooks/CreateCopyButtons.astro create mode 100644 src/components/hooks/CreateQMLCodeButtons.astro create mode 100644 src/components/hooks/TOCIntersectionObserver.astro create mode 100644 src/components/hooks/ThemeSwitch.tsx create mode 100644 src/components/hooks/TransformLinks.astro create mode 100644 src/components/hooks/TransformMDCodeblocks.astro create mode 100644 src/components/icons.tsx create mode 100644 src/components/navigation/Search.astro create mode 100644 src/components/navigation/search/SearchModal.tsx create mode 100644 src/components/navigation/search/index.tsx create mode 100644 src/components/navigation/search/types.d.ts create mode 100644 src/components/navigation/sidebars/Nav.astro create mode 100644 src/components/navigation/sidebars/TOC.astro create mode 100644 src/components/navigation/sidebars/nav/Tree.tsx create mode 100644 src/components/navigation/sidebars/nav/index.tsx create mode 100644 src/components/navigation/sidebars/toc/Heading.tsx create mode 100644 src/components/navigation/sidebars/toc/Table.tsx create mode 100644 src/components/navigation/sidebars/toc/i.tsx.bak create mode 100644 src/components/navigation/sidebars/toc/index.tsx create mode 100644 src/components/navigation/sidebars/types.d.ts create mode 100644 src/components/type/Functions.astro create mode 100644 src/components/type/Properties.astro create mode 100644 src/components/type/Signals.astro create mode 100644 src/components/type/Variants.astro create mode 100644 src/config/Head.astro create mode 100644 src/config/PreTheme.astro create mode 100644 src/config/io/fuseConfig.ts create mode 100644 src/config/io/generateSearchLists.ts create mode 100644 src/config/io/generateTypeData.ts create mode 100644 src/config/io/helpers.ts create mode 100644 src/config/io/types.d.ts create mode 100644 src/env.d.ts create mode 100644 src/layouts/BaseLayout.astro create mode 100644 src/layouts/ConfigLayout.astro create mode 100644 src/layouts/DocsLayout.astro create mode 100644 src/pages/docs/configuration/index.mdx create mode 100644 src/pages/docs/configuration/intro.mdx create mode 100644 src/pages/docs/configuration/positioning.mdx create mode 100644 src/pages/docs/configuration/qml-overview.mdx create mode 100644 src/pages/docs/index.astro create mode 100644 src/pages/docs/types/[type]/[name].astro create mode 100644 src/pages/docs/types/[type]/index.astro create mode 100644 src/pages/docs/types/index.astro create mode 100644 src/pages/index.astro create mode 100644 src/styles/css-config/animations.css create mode 100644 src/styles/css-config/base.css create mode 100644 src/styles/css-config/code.css create mode 100644 src/styles/css-config/colors.css create mode 100644 src/styles/css-config/modal.css create mode 100644 src/styles/css-config/search.css create mode 100644 src/styles/docs/collapsible.css create mode 100644 src/styles/docs/docs-config.css create mode 100644 src/styles/docs/docs-types.css create mode 100644 src/styles/docs/docs.css create mode 100644 src/styles/docs/nav/nav-tree.css create mode 100644 src/styles/docs/nav/nav.css create mode 100644 src/styles/docs/toc/intro-toc.css create mode 100644 src/styles/docs/toc/toc.css create mode 100644 src/styles/docs/toc/types-toc.css create mode 100644 src/styles/global.css create mode 100644 tsconfig.json create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..16d54bb --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# build output +dist/ +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store + +# jetbrains setting folder +.idea/ diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..22a1505 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,4 @@ +{ + "recommendations": ["astro-build.astro-vscode"], + "unwantedRecommendations": [] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..d642209 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "command": "./node_modules/.bin/astro dev", + "name": "Development server", + "request": "launch", + "type": "node-terminal" + } + ] +} diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz new file mode 100644 index 0000000000000000000000000000000000000000..15fb3a6f7f188c7644e431829c55c557e513c3de GIT binary patch literal 743705 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

>BEs-&dd?KE=j3!}Q}x|0Ku(gQQ-m~FL#vgI*G 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 z

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, , global, :\n```\nSee [the wiki] for details.\n\n> [!WARNING] The shortcuts protocol does not allow duplicate appid + name pairs.\n> Within a single instance of quickshell this is handled internally, and both\n> users will be notified, but multiple instances of quickshell or XDPH may collide.\n>\n> If that happens, whichever client that tries to register the shortcuts last will crash.\n\n> [!NOTE] This type does *not* use the xdg-desktop-portal global shortcuts protocol,\n> as it is not fully functional without flatpak and would cause a considerably worse\n> user experience from other limitations. It will only work with Hyprland.\n> Note that, as this type bypasses xdg-desktop-portal, XDPH is not required.\n\n[hyprland_global_shortcuts_v1]: https://github.com/hyprwm/hyprland-protocols/blob/main/protocols/hyprland-global-shortcuts-v1.xml\n[the wiki]: https://wiki.hyprland.org/Configuring/Binds/#dbus-global-shortcuts\n", + "properties": { + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The name of the shortcut.\nYou cannot change this at runtime.\n" + }, + "pressed": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the keybind is currently pressed.\n", + "flags": [ + "readonly" + ] + }, + "triggerDescription": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Have not seen this used ever, but included for completeness. Safe to ignore.\n" + }, + "description": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The description of the shortcut that appears in `hyprctl globalshortcuts`.\nYou cannot change this at runtime.\n" + }, + "appid": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The appid of the shortcut. Defaults to `quickshell`.\nYou cannot change this at runtime.\n\nIf you have more than one shortcut we recommend subclassing\nGlobalShortcut to set this.\n" + } + }, + "functions": [], + "signals": { + "pressed": { + "name": "pressed", + "details": "Fired when the keybind is pressed.\n", + "params": [] + }, + "released": { + "name": "released", + "details": "Fired when the keybind is released.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Hyprland/Hyprland.json b/modules/Quickshell.Hyprland/Hyprland.json new file mode 100644 index 0000000..cbe1289 --- /dev/null +++ b/modules/Quickshell.Hyprland/Hyprland.json @@ -0,0 +1,163 @@ +{ + "name": "Hyprland", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "singleton" + ], + "properties": { + "focusedMonitor": { + "type": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandMonitor" + }, + "details": "The currently focused hyprland monitor. May be null.\n", + "flags": [ + "readonly" + ] + }, + "requestSocketPath": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Path to the request socket (.socket.sock)\n", + "flags": [ + "readonly" + ] + }, + "monitors": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandMonitor" + } + }, + "details": "All hyprland monitors.\n", + "flags": [ + "readonly" + ] + }, + "eventSocketPath": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Path to the event socket (.socket2.sock)\n", + "flags": [ + "readonly" + ] + }, + "workspaces": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandWorkspace" + } + }, + "details": "All hyprland workspaces.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "dispatch", + "id": "dispatch", + "details": "Execute a hyprland [dispatcher](https://wiki.hyprland.org/Configuring/Dispatchers).\n", + "params": [ + { + "name": "request", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandMonitor" + }, + "name": "monitorFor", + "id": "monitorFor", + "details": "Get the HyprlandMonitor object that corrosponds to a quickshell screen.\n", + "params": [ + { + "name": "screen", + "type": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "refreshMonitors", + "id": "refreshMonitors", + "details": "Refresh monitor information.\n\nMany actions that will invalidate monitor state don't send events,\nso this function is available if required.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "refreshWorkspaces", + "id": "refreshWorkspaces", + "details": "Refresh workspace information.\n\nMany actions that will invalidate workspace state don't send events,\nso this function is available if required.\n", + "params": [] + } + ], + "signals": { + "rawEvent": { + "name": "rawEvent", + "details": "Emitted for every event that comes in through the hyprland event socket (socket2).\n\nSee [Hyprland Wiki: IPC](https://wiki.hyprland.org/IPC/) for a list of events.\n", + "params": [ + { + "name": "event", + "type": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandEvent" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Hyprland/HyprlandEvent.json b/modules/Quickshell.Hyprland/HyprlandEvent.json new file mode 100644 index 0000000..a881451 --- /dev/null +++ b/modules/Quickshell.Hyprland/HyprlandEvent.json @@ -0,0 +1,68 @@ +{ + "name": "HyprlandEvent", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Live Hyprland IPC event.", + "details": "Live Hyprland IPC event. Holding this object after the\nsignal handler exits is undefined as the event instance\nis reused.\n\nEmitted by TYPE99MQS_Quickshell_Hyprland99NHyprland99VrawEvent99Tsignal99TYPE.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The name of the event.\n\nSee [Hyprland Wiki: IPC](https://wiki.hyprland.org/IPC/) for a list of events.\n", + "flags": [ + "readonly" + ] + }, + "data": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The unparsed data of the event.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "name": "parse", + "id": "parse", + "details": "Parse this event with a known number of arguments.\n\nArgument count is required as some events can contain commas\nin the last argument, which can be ignored as long as the count is known.\n", + "params": [ + { + "name": "argumentCount", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Hyprland/HyprlandFocusGrab.json b/modules/Quickshell.Hyprland/HyprlandFocusGrab.json new file mode 100644 index 0000000..412e482 --- /dev/null +++ b/modules/Quickshell.Hyprland/HyprlandFocusGrab.json @@ -0,0 +1,44 @@ +{ + "name": "HyprlandFocusGrab", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Input focus grabber", + "details": "Object for managing input focus grabs via the [hyprland_focus_grab_v1]\nwayland protocol.\n\nWhen enabled, all of the windows listed in the `windows` property will\nreceive input normally, and will retain keyboard focus even if the mouse\nis moved off of them. When areas of the screen that are not part of a listed\nwindow are clicked or touched, the grab will become inactive and emit the\ncleared signal.\n\nThis is useful for implementing dismissal of popup type windows.\n```qml\nimport Quickshell\nimport Quickshell.Hyprland\nimport QtQuick.Controls\n\nShellRoot {\n FloatingWindow {\n id: window\n\n Button {\n anchors.centerIn: parent\n text: grab.active ? \"Remove exclusive focus\" : \"Take exclusive focus\"\n onClicked: grab.active = !grab.active\n }\n\n HyprlandFocusGrab {\n id: grab\n windows: [ window ]\n }\n }\n}\n```\n\n[hyprland_focus_grab_v1]: https://github.com/hyprwm/hyprland-protocols/blob/main/protocols/hyprland-global-shortcuts-v1.xml\n", + "properties": { + "active": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the focus grab is active. Defaults to false.\n\nWhen set to true, an input grab will be created for the listed windows.\n\nThis property will change to false once the grab is dismissed.\nIt will not change to true until the grab begins, which requires\nat least one visible window.\n" + }, + "windows": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": "The list of windows to whitelist for input.\n" + } + }, + "functions": [], + "signals": { + "cleared": { + "name": "cleared", + "details": "Sent whenever the compositor clears the focus grab.\n\nThis may be in response to all windows being removed\nfrom the list or simultaneously hidden, in addition to\na normal clear.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Hyprland/HyprlandMonitor.json b/modules/Quickshell.Hyprland/HyprlandMonitor.json new file mode 100644 index 0000000..e2925e6 --- /dev/null +++ b/modules/Quickshell.Hyprland/HyprlandMonitor.json @@ -0,0 +1,130 @@ +{ + "name": "HyprlandMonitor", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "uncreatable" + ], + "properties": { + "x": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "y": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "scale": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "height": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "lastIpcObject": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "Last json returned for this monitor, as a javascript object.\n\n> [!WARNING] This is *not* updated unless the monitor object is fetched again from\n> Hyprland. If you need a value that is subject to change and does not have a dedicated\n> property, run TYPE99MQS_Quickshell_Hyprland99NHyprland99VrefreshMonitors99Tfunc99TYPE and wait for this property to update.\n", + "flags": [ + "readonly" + ] + }, + "description": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "activeWorkspace": { + "type": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandWorkspace" + }, + "details": "The currently active workspace on this monitor. May be null.\n", + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "width": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Hyprland/HyprlandWorkspace.json b/modules/Quickshell.Hyprland/HyprlandWorkspace.json new file mode 100644 index 0000000..dbde313 --- /dev/null +++ b/modules/Quickshell.Hyprland/HyprlandWorkspace.json @@ -0,0 +1,64 @@ +{ + "name": "HyprlandWorkspace", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "uncreatable" + ], + "properties": { + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "monitor": { + "type": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandMonitor" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "lastIpcObject": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "Last json returned for this workspace, as a javascript object.\n\n> [!WARNING] This is *not* updated unless the workspace object is fetched again from\n> Hyprland. If you need a value that is subject to change and does not have a dedicated\n> property, run TYPE99MQS_Quickshell_Hyprland99NHyprland99VrefreshWorkspaces99Tfunc99TYPE and wait for this property to update.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Hyprland/index.json b/modules/Quickshell.Hyprland/index.json new file mode 100644 index 0000000..810dde5 --- /dev/null +++ b/modules/Quickshell.Hyprland/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Hyprland", + "description": "Hyprland specific Quickshell types", + "details": "" +} \ No newline at end of file diff --git a/modules/Quickshell.Io/DataStream.json b/modules/Quickshell.Io/DataStream.json new file mode 100644 index 0000000..0297f82 --- /dev/null +++ b/modules/Quickshell.Io/DataStream.json @@ -0,0 +1,28 @@ +{ + "name": "DataStream", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Data source that can be streamed into a parser.", + "details": "See also: TYPE99MQS_Quickshell_Io99NDataStreamParser99TYPE\n", + "flags": [ + "uncreatable" + ], + "properties": { + "parser": { + "type": { + "type": "local", + "module": "Quickshell.Io", + "name": "DataStreamParser" + }, + "details": "The parser to stream data from this source into.\nIf the parser is null no data will be read.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Io/DataStreamParser.json b/modules/Quickshell.Io/DataStreamParser.json new file mode 100644 index 0000000..c5d9c0a --- /dev/null +++ b/modules/Quickshell.Io/DataStreamParser.json @@ -0,0 +1,34 @@ +{ + "name": "DataStreamParser", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Parser for streamed input data.", + "details": "See also: TYPE99MQS_Quickshell_Io99NDataStream99TYPE, TYPE99MQS_Quickshell_Io99NSplitParser99TYPE.\n", + "flags": [ + "uncreatable" + ], + "properties": {}, + "functions": [], + "signals": { + "read": { + "name": "read", + "details": "Emitted when data is read from the stream.\n", + "params": [ + { + "name": "data", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Io/FileView.json b/modules/Quickshell.Io/FileView.json new file mode 100644 index 0000000..2217e0d --- /dev/null +++ b/modules/Quickshell.Io/FileView.json @@ -0,0 +1,111 @@ +{ + "name": "FileView", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Simplified reader for small files.", + "details": "A reader for small to medium files that don't need seeking/cursor access,\nsuitable for most text files.\n\n#### Example: Reading a JSON\n```qml\nFileView {\n id: jsonFile\n path: Qt.resolvedUrl(\"./your.json\")\n // Forces the file to be loaded by the time we call JSON.parse().\n // see blockLoading's property documentation for details.\n blockLoading: true\n}\n\nreadonly property var jsonData: JSON.parse(jsonFile.text())\n```\n", + "properties": { + "blockAllReads": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If TYPE99Vtext99Tfunc99TYPE and TYPE99Vdata99Tfunc99TYPE should block all operations while a file loads. Defaults to false.\n\nThis is nearly identical to TYPE99VblockLoading99Tprop99TYPE, but will additionally block when\na file is loaded and TYPE99Vpath99Tprop99TYPE changes.\n\n> [!WARNING] We cannot think of a valid use case for this.\n> You almost definitely want TYPE99VblockLoading99Tprop99TYPE.\n" + }, + "blockLoading": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If TYPE99Vtext99Tfunc99TYPE and TYPE99Vdata99Tfunc99TYPE should block all operations until the file is loaded. Defaults to false.\n\nIf the file is already loaded, no blocking will occur.\nIf a file was loaded, and TYPE99Vpath99Tprop99TYPE was changed to a new file, no blocking will occur.\n\n> [!WARNING] Blocking operations should be used carefully to avoid stutters and other performance\n> degradations. Blocking means that your interface **WILL NOT FUNCTION** during the call.\n>\n> **We recommend you use a blocking load ONLY for files loaded before the windows of your shell\n> are loaded, which happens after `Component.onCompleted` runs for the root component of your shell.**\n>\n> The most reasonable use case would be to load things like configuration files that the program\n> must have available.\n" + }, + "preload": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the file should be loaded in the background immediately when set. Defaults to true.\n\nThis may either increase or decrease the amount of time it takes to load the file\ndepending on how large the file is, how fast its storage is, and how you access its data.\n" + }, + "loaded": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If a file is currently loaded, which may or may not be the one currently specified by TYPE99Vpath99Tprop99TYPE.\n\n> [!NOTE] If a file is loaded, TYPE99Vpath99Tprop99TYPE is changed, and a new file is loaded,\n> this property will stay true the whole time.\n> If TYPE99Vpath99Tprop99TYPE is set to an empty string to unload the file it will become false.\n", + "flags": [ + "readonly" + ] + }, + "path": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The path to the file that should be read, or an empty string to unload the file.\n" + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "name": "blockUntilLoaded", + "id": "blockUntilLoaded", + "details": "Block all operations until the currently running load completes.\n\n> [!WARNING] See TYPE99VblockLoading99Tprop99TYPE for an explanation and warning about blocking.\n", + "params": [] + }, + { + "ret": { + "type": "unknown", + "module": "", + "name": "" + }, + "name": "data", + "id": "data", + "details": "Returns the data of the file specified by TYPE99Vpath99Tprop99TYPE as an [ArrayBuffer].\n\nIf TYPE99VblockAllReads99Tprop99TYPE is true, all changes to TYPE99Vpath99Tprop99TYPE will cause the program to block\nwhen this function is called.\n\nIf TYPE99VblockLoading99Tprop99TYPE is true, reading this property before the file has been loaded\nwill block, but changing TYPE99Vpath99Tprop99TYPE or calling TYPE99Vreload99Tfunc99TYPE will return the old data\nuntil the load completes.\n\nIf neither is true, an empty buffer will be returned if no file is loaded,\notherwise it will behave as in the case above.\n\n> [!NOTE] Due to technical limitations, TYPE99Vdata99Tfunc99TYPE could not be a property,\n> however you can treat it like a property, it will trigger property updates\n> as a property would, and the signal `dataChanged()` is present.\n\n[ArrayBuffer]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "reload", + "id": "reload", + "details": "Unload the loaded file and reload it, usually in response to changes.\n\nThis will not block if TYPE99VblockLoading99Tprop99TYPE is set, only if TYPE99VblockAllReads99Tprop99TYPE is true.\nIt acts the same as changing TYPE99Vpath99Tprop99TYPE to a new file, except loading the same file.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "text", + "id": "text", + "details": "Returns the data of the file specified by TYPE99Vpath99Tprop99TYPE as text.\n\nIf TYPE99VblockAllReads99Tprop99TYPE is true, all changes to TYPE99Vpath99Tprop99TYPE will cause the program to block\nwhen this function is called.\n\nIf TYPE99VblockLoading99Tprop99TYPE is true, reading this property before the file has been loaded\nwill block, but changing TYPE99Vpath99Tprop99TYPE or calling TYPE99Vreload99Tfunc99TYPE will return the old data\nuntil the load completes.\n\nIf neither is true, an empty string will be returned if no file is loaded,\notherwise it will behave as in the case above.\n\n> [!NOTE] Due to technical limitations, TYPE99Vtext99Tfunc99TYPE could not be a property,\n> however you can treat it like a property, it will trigger property updates\n> as a property would, and the signal `textChanged()` is present.\n", + "params": [] + } + ], + "signals": { + "loadFailed": { + "name": "loadFailed", + "details": "! Fires if the file failed to load. A warning will be printed in the log.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Io/Process.json b/modules/Quickshell.Io/Process.json new file mode 100644 index 0000000..b40446e --- /dev/null +++ b/modules/Quickshell.Io/Process.json @@ -0,0 +1,174 @@ +{ + "name": "Process", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Child process.", + "details": "#### Example\n```qml\nProcess {\n running: true\n command: [ \"some-command\", \"arg\" ]\n stdout: SplitParser {\n onRead: data => console.log(`line read: ${data}`)\n }\n}\n```\n", + "properties": { + "workingDirectory": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The working directory of the process. Defaults to [quickshell's working directory].\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n\n[quickshell's working directory]: ../../quickshell/quickshell#prop.workingDirectory\n" + }, + "command": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": "The command to execute. Each argument is its own string, which means you don't have\nto deal with quoting anything.\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n\n> [!NOTE] You can use `[\"sh\", \"-c\", ]` to execute your command with\n> the system shell.\n" + }, + "manageLifetime": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the process should be killed when the Process object is destroyed or quickshell exits.\nDefaults to true.\n\nThis property may be changed while the process is running and will affect it.\n\n> [!WARNING] If set to false the process will still be killed if the quickshell config reloads.\n> It will not be killed if quickshell exits normally or crashes.\n" + }, + "environment": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "Environment of the executed process.\n\nThis is a javascript object (json). Environment variables can be added by setting\nthem to a string and removed by setting them to null (except when TYPE99VclearEnvironment99Tprop99TYPE is true,\nin which case this behavior is inverted, see TYPE99VclearEnvironment99Tprop99TYPE for details).\n\n\n```qml\nenvironment: ({\n ADDED: \"value\",\n REMOVED: null,\n \"i'm different\": \"value\",\n})\n```\n\n> [!NOTE] You need to wrap the returned object in () otherwise it won't parse due to javascript ambiguity.\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n" + }, + "stdinEnabled": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If stdin is enabled. Defaults to false. If this property is false the process's stdin channel\nwill be closed and TYPE99Vwrite99Tfunc99TYPE will do nothing, even if set back to true.\n" + }, + "processId": { + "type": { + "type": "qt", + "module": "qml", + "name": "variant" + }, + "details": "The process ID of the running process or `null` if TYPE99Vrunning99Tprop99TYPE is false.\n", + "flags": [ + "readonly" + ] + }, + "clearEnvironment": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the process's environment should be cleared prior to applying TYPE99Venvironment99Tprop99TYPE.\nDefaults to false.\n\nIf true, all environment variables will be removed before the TYPE99Venvironment99Tprop99TYPE\nobject is applied, meaning the variables listed will be the only ones visible to the process.\nThis changes the behavior of `null` to pass in the system value of the variable if present instead\nof removing it.\n\n```qml\nclearEnvironment: true\nenvironment: ({\n ADDED: \"value\",\n PASSED_FROM_SYSTEM: null,\n})\n```\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n" + }, + "stdout": { + "type": { + "type": "local", + "module": "Quickshell.Io", + "name": "DataStreamParser" + }, + "details": "The parser for stdout. If the parser is null the process's stdout channel will be closed\nand no further data will be read, even if a new parser is attached.\n" + }, + "stderr": { + "type": { + "type": "local", + "module": "Quickshell.Io", + "name": "DataStreamParser" + }, + "details": "The parser for stderr. If the parser is null the process's stdout channel will be closed\nand no further data will be read, even if a new parser is attached.\n" + }, + "running": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the process is currently running. Defaults to false.\n\nSetting this property to true will start the process if command has at least\none element.\nSetting it to false will send SIGTERM. To immediately kill the process,\nuse TYPE99Vsignal99Tfunc99TYPE with SIGKILL. The process will be killed when\nquickshell dies.\n\nIf you want to run the process in a loop, use the onRunningChanged signal handler\nto restart the process.\n```qml\nProcess {\n running: true\n onRunningChanged: if (!running) running = true\n}\n```\n" + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "signal", + "id": "signal", + "details": "Sends a signal to the process if TYPE99Vrunning99Tprop99TYPE is true, otherwise does nothing.\n", + "params": [ + { + "name": "signal", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "write", + "id": "write", + "details": "Writes to the process's stdin. Does nothing if TYPE99Vrunning99Tprop99TYPE is false.\n", + "params": [ + { + "name": "data", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + ], + "signals": { + "exited": { + "name": "exited", + "details": null, + "params": [ + { + "name": "exitCode", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + }, + { + "name": "exitStatus", + "type": { + "type": "unknown", + "module": "", + "name": "" + } + } + ] + }, + "started": { + "name": "started", + "details": null, + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Io/Socket.json b/modules/Quickshell.Io/Socket.json new file mode 100644 index 0000000..c8c9f96 --- /dev/null +++ b/modules/Quickshell.Io/Socket.json @@ -0,0 +1,80 @@ +{ + "name": "Socket", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell.Io", + "name": "DataStream" + }, + "description": "Unix socket listener.", + "details": "", + "properties": { + "path": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The path to connect this socket to when TYPE99Vconnected99Tprop99TYPE is set to true.\n\nChanging this property will have no effect while the connection is active.\n" + }, + "connected": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "Returns if the socket is currently connected.\n\nWriting to this property will set the target connection state and will not\nupdate the property immediately. Setting the property to false will begin disconnecting\nthe socket, and setting it to true will begin connecting the socket if path is not empty.\n" + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "flush", + "id": "flush", + "details": "Flush any queued writes to the socket.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "write", + "id": "write", + "details": "Write data to the socket. Does nothing if not connected.\n\nRemember to call flush after your last write.\n", + "params": [ + { + "name": "data", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + ], + "signals": { + "error": { + "name": "error", + "details": "This signal is sent whenever a socket error is encountered.\n", + "params": [ + { + "name": "error", + "type": { + "type": "unknown", + "module": "", + "name": "" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Io/SocketServer.json b/modules/Quickshell.Io/SocketServer.json new file mode 100644 index 0000000..3c3d2af --- /dev/null +++ b/modules/Quickshell.Io/SocketServer.json @@ -0,0 +1,41 @@ +{ + "name": "SocketServer", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Unix socket server.", + "details": "#### Example\n```qml\nSocketServer {\n active: true\n path: \"/path/too/socket.sock\"\n handler: Socket {\n onConnectedChanged: {\n console.log(connected ? \"new connection!\" : \"connection dropped!\")\n }\n parser: SplitParser {\n onRead: message => console.log(`read message from socket: ${message}`)\n }\n }\n}\n```\n", + "properties": { + "active": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the socket server is currently active. Defaults to false.\n\nSetting this to false will destory all active connections and delete\nthe socket file on disk.\n\nIf path is empty setting this property will have no effect.\n" + }, + "handler": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "Connection handler component. Must creeate a TYPE99MQS_Quickshell_Io99NSocket99TYPE.\n\nThe created socket should not set TYPE99Vconnected99Tprop99TYPE or TYPE99Vpath99Tprop99TYPE or the incoming\nsocket connection will be dropped (they will be set by the socket server.)\nSetting `connected` to false on the created socket after connection will\nclose and delete it.\n" + }, + "path": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The path to create the socket server at.\n\nSetting this property while the server is active will have no effect.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Io/SplitParser.json b/modules/Quickshell.Io/SplitParser.json new file mode 100644 index 0000000..f0ae57e --- /dev/null +++ b/modules/Quickshell.Io/SplitParser.json @@ -0,0 +1,25 @@ +{ + "name": "SplitParser", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell.Io", + "name": "DataStreamParser" + }, + "description": "Parser for delimited data streams.", + "details": "Parser for delimited data streams. TYPE99Vread99Tfunc99TYPE is emitted once per delimited chunk of the stream.\n", + "properties": { + "splitMarker": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The delimiter for parsed data. May be multiple characters. Defaults to `\\n`.\n\nIf the delimiter is empty read lengths may be arbitrary (whatever is returned by the\nunderlying read call.)\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Io/index.json b/modules/Quickshell.Io/index.json new file mode 100644 index 0000000..42bbdc6 --- /dev/null +++ b/modules/Quickshell.Io/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Io", + "description": "Io types", + "details": "" +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Greetd/Greetd.json b/modules/Quickshell.Services.Greetd/Greetd.json new file mode 100644 index 0000000..b45b2a3 --- /dev/null +++ b/modules/Quickshell.Services.Greetd/Greetd.json @@ -0,0 +1,291 @@ +{ + "name": "Greetd", + "module": "Quickshell.Services.Greetd", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": "This object provides access to a running greetd instance if present.\nWith it you can authenticate a user and launch a session.\n\nSee [the greetd wiki] for instructions on how to set up a graphical greeter.\n\n[the greetd wiki]: https://man.sr.ht/~kennylevinsen/greetd/#setting-up-greetd-with-gtkgreet\n", + "flags": [ + "singleton" + ], + "properties": { + "state": { + "type": { + "type": "local", + "module": "Quickshell.Services.Greetd", + "name": "GreetdState" + }, + "details": "The current state of the greetd connection.\n", + "flags": [ + "readonly" + ] + }, + "available": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the greetd socket is available.\n", + "flags": [ + "readonly" + ] + }, + "user": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The currently authenticating user.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "cancelSession", + "id": "cancelSession", + "details": "Cancel the active greetd session.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "createSession", + "id": "createSession", + "details": "Create a greetd session for the given user.\n", + "params": [ + { + "name": "user", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "launch", + "id": "launch", + "details": "Launch the session, exiting quickshell.\nTYPE99Vstate99Tprop99TYPE must be `GreetdState.ReadyToLaunch` to call this function.\n", + "params": [ + { + "name": "command", + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "launch", + "id": "launch", + "details": "Launch the session, exiting quickshell.\nTYPE99Vstate99Tprop99TYPE must be `GreetdState.ReadyToLaunch` to call this function.\n", + "params": [ + { + "name": "command", + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + }, + { + "name": "environment", + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "launch", + "id": "launch", + "details": "Launch the session, exiting quickshell if TYPE99Vquit99Tprop99TYPE is true.\nTYPE99Vstate99Tprop99TYPE must be `GreetdState.ReadyToLaunch` to call this function.\n\nThe TYPE99Vlaunched99Tprop99TYPE signal can be used to perform an action after greetd has acknowledged\nthe desired session.\n\n> [!WARNING] Note that greetd expects the greeter to terminate as soon as possible\n> after setting a target session, and waiting too long may lead to unexpected behavior\n> such as the greeter restarting.\n>\n> Performing animations and such should be done *before* calling TYPE99Vlaunch99Tprop99TYPE.\n", + "params": [ + { + "name": "command", + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + }, + { + "name": "environment", + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + }, + { + "name": "quit", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "respond", + "id": "respond", + "details": "Respond to an authentication message.\n\nMay only be called in response to an TYPE99VauthMessage99Tsignal99TYPE with `responseRequired` set to true.\n", + "params": [ + { + "name": "response", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + ], + "signals": { + "launched": { + "name": "launched", + "details": "Greetd has acknowledged the launch request and the greeter should quit as soon as possible.\n\nThis signal is sent right before quickshell exits automatically if the launch was not specifically\nrequested not to exit. You usually don't need to use this signal.\n", + "params": [] + }, + "error": { + "name": "error", + "details": "Greetd has encountered an error.\n", + "params": [ + { + "name": "error", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + "authFailure": { + "name": "authFailure", + "details": "Authentication has failed an the session has terminated.\n\nUsually this is something like a timeout or a failed password entry.\n", + "params": [ + { + "name": "message", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + "readyToLaunch": { + "name": "readyToLaunch", + "details": "Authentication has finished successfully and greetd can now launch a session.\n", + "params": [] + }, + "authMessage": { + "name": "authMessage", + "details": "An authentication message has been sent by greetd.\n- `message` - the text of the message\n- `error` - if the message should be displayed as an error\n- `responseRequired` - if a response via `respond()` is required for this message\n- `echoResponse` - if the response should be displayed in clear text to the user\n\nNote that `error` and `responseRequired` are mutually exclusive.\n\nErrors are sent through `authMessage` when they are recoverable, such as a fingerprint scanner\nnot being able to read a finger correctly, while definite failures such as a bad password are\nsent through `authFailure`.\n", + "params": [ + { + "name": "message", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + { + "name": "error", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + }, + { + "name": "responseRequired", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + }, + { + "name": "echoResponse", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Greetd/GreetdState.json b/modules/Quickshell.Services.Greetd/GreetdState.json new file mode 100644 index 0000000..e26e02a --- /dev/null +++ b/modules/Quickshell.Services.Greetd/GreetdState.json @@ -0,0 +1,56 @@ +{ + "name": "GreetdState", + "module": "Quickshell.Services.Greetd", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "State of the Greetd connection.", + "details": "See TYPE99MQS_Quickshell_Services_Greetd99NGreetd99Vstate99Tprop99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Greetd", + "name": "GreetdState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Authenticating": { + "details": null + }, + "Launched": { + "details": null + }, + "Launching": { + "details": null + }, + "Inactive": { + "details": null + }, + "ReadyToLaunch": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Greetd/index.json b/modules/Quickshell.Services.Greetd/index.json new file mode 100644 index 0000000..6b90007 --- /dev/null +++ b/modules/Quickshell.Services.Greetd/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.Greetd", + "description": "Greetd integration", + "details": "" +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Mpris/Mpris.json b/modules/Quickshell.Services.Mpris/Mpris.json new file mode 100644 index 0000000..86b392e --- /dev/null +++ b/modules/Quickshell.Services.Mpris/Mpris.json @@ -0,0 +1,36 @@ +{ + "name": "Mpris", + "module": "Quickshell.Services.Mpris", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "singleton" + ], + "properties": { + "players": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.Mpris", + "name": "MprisPlayer" + } + }, + "details": "All connected MPRIS players.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Mpris/MprisLoopState.json b/modules/Quickshell.Services.Mpris/MprisLoopState.json new file mode 100644 index 0000000..542678a --- /dev/null +++ b/modules/Quickshell.Services.Mpris/MprisLoopState.json @@ -0,0 +1,50 @@ +{ + "name": "MprisLoopState", + "module": "Quickshell.Services.Mpris", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Loop state of an MprisPlayer", + "details": "See TYPE99MQS_Quickshell_Services_Mpris99NMprisPlayer99VloopState99Tprop99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "status", + "type": { + "type": "local", + "module": "Quickshell.Services.Mpris", + "name": "MprisLoopState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Playlist": { + "details": null + }, + "Track": { + "details": null + }, + "None": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Mpris/MprisPlaybackState.json b/modules/Quickshell.Services.Mpris/MprisPlaybackState.json new file mode 100644 index 0000000..2c032b1 --- /dev/null +++ b/modules/Quickshell.Services.Mpris/MprisPlaybackState.json @@ -0,0 +1,50 @@ +{ + "name": "MprisPlaybackState", + "module": "Quickshell.Services.Mpris", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Playback state of an MprisPlayer", + "details": "See TYPE99MQS_Quickshell_Services_Mpris99NMprisPlayer99VplaybackState99Tprop99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "status", + "type": { + "type": "local", + "module": "Quickshell.Services.Mpris", + "name": "MprisPlaybackState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Paused": { + "details": null + }, + "Stopped": { + "details": null + }, + "Playing": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Mpris/MprisPlayer.json b/modules/Quickshell.Services.Mpris/MprisPlayer.json new file mode 100644 index 0000000..d8d7c9f --- /dev/null +++ b/modules/Quickshell.Services.Mpris/MprisPlayer.json @@ -0,0 +1,539 @@ +{ + "name": "MprisPlayer", + "module": "Quickshell.Services.Mpris", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A media player exposed over MPRIS.", + "details": "A media player exposed over MPRIS.\n\n> [!WARNING] Support for various functionality and general compliance to\n> the MPRIS specification varies wildly by player.\n> Always check the associated `canXyz` and `xyzSupported` properties if available.\n\n> [!NOTE] The TrackList and Playlist interfaces were not implemented as we could not\n> find any media players using them to test against.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "trackArtUrl": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The current track's art url, or `\"\"` if none was provided.\n", + "flags": [ + "readonly" + ] + }, + "playbackState": { + "type": { + "type": "local", + "module": "Quickshell.Services.Mpris", + "name": "MprisPlaybackState" + }, + "details": "The playback state of the media player.\n\n- If TYPE99VcanPlay99Tprop99TYPE is false, you cannot assign the `Playing` state.\n- If TYPE99VcanPause99Tprop99TYPE is false, you cannot assign the `Paused` state.\n- If TYPE99VcanControl99Tprop99TYPE is false, you cannot assign the `Stopped` state.\n(or any of the others, though their repsective properties will also be false)\n" + }, + "canSeek": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "trackAlbumArtist": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The current track's album artist, or \"Unknown Artist\" if none was provided.\n", + "flags": [ + "readonly" + ] + }, + "length": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The length of the playing track, as seconds, with millisecond precision,\nor the value of TYPE99Vposition99Tprop99TYPE if TYPE99VlengthSupported99Tprop99TYPE is false.\n", + "flags": [ + "readonly" + ] + }, + "trackTitle": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The title of the current track, or \"Unknown Track\" if none was provided.\n", + "flags": [ + "readonly" + ] + }, + "identity": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The human readable name of the media player.\n", + "flags": [ + "readonly" + ] + }, + "canGoPrevious": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "trackAlbum": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The current track's album, or \"Unknown Album\" if none was provided.\n", + "flags": [ + "readonly" + ] + }, + "maxRate": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canTogglePlaying": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "shuffleSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "lengthSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canQuit": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "volumeSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "desktopEntry": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The name of the desktop entry for the media player, or an empty string if not provided.\n", + "flags": [ + "readonly" + ] + }, + "fullscreen": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the player is currently shown in fullscreen.\n\nMay only be written to if TYPE99VcanSetFullscreen99Tprop99TYPE is true.\n" + }, + "shuffle": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the play queue is currently being shuffled, or false if TYPE99VshuffleSupported99Tprop99TYPE is false.\n\nMay only be written if TYPE99VcanControl99Tprop99TYPE and TYPE99VshuffleSupported99Tprop99TYPE are true.\n" + }, + "loopState": { + "type": { + "type": "local", + "module": "Quickshell.Services.Mpris", + "name": "MprisLoopState" + }, + "details": "The loop state of the media player, or `None` if TYPE99VloopSupported99Tprop99TYPE is false.\n\nMay only be written to if TYPE99VcanControl99Tprop99TYPE and TYPE99VloopSupported99Tprop99TYPE are true.\n" + }, + "volume": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The volume of the playing track from 0.0 to 1.0, or 1.0 if TYPE99VvolumeSupported99Tprop99TYPE is false.\n\nMay only be written to if TYPE99VcanControl99Tprop99TYPE and TYPE99VvolumeSupported99Tprop99TYPE are true.\n" + }, + "canGoNext": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "supportedMimeTypes": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": "Mime types supported by TYPE99VopenUri99Tfunc99TYPE.\n", + "flags": [ + "readonly" + ] + }, + "canPlay": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canControl": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "metadata": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "Metadata of the current track.\n\nA map of common properties is available [here](https://www.freedesktop.org/wiki/Specifications/mpris-spec/metadata).\nDo not count on any of them actually being present.\n\nNote that the TYPE99VtrackTitle99Tprop99TYPE, TYPE99VtrackAlbum99Tprop99TYPE, TYPE99VtrackAlbumArtist99Tprop99TYPE, TYPE99VtrackArtists99Tprop99TYPE and TYPE99VtrackArtUrl99Tprop99TYPE\nproperties have extra logic to guard against bad players sending weird metadata, and should\nbe used over grabbing the properties directly from the metadata.\n", + "flags": [ + "readonly" + ] + }, + "rate": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The speed the song is playing at, as a multiplier.\n\nOnly values between TYPE99VminRate99Tprop99TYPE and TYPE99VmaxRate99Tprop99TYPE (inclusive) may be written to the property.\nAdditionally, It is recommended that you only write common values such as `0.25`, `0.5`, `1.0`, `2.0`\nto the property, as media players are free to ignore the value, and are more likely to\naccept common ones.\n" + }, + "supportedUriSchemes": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": "Uri schemes supported by TYPE99VopenUri99Tfunc99TYPE.\n", + "flags": [ + "readonly" + ] + }, + "trackArtists": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": "The current track's artists, or an empty list if none were provided.\n", + "flags": [ + "readonly" + ] + }, + "uniqueId": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "An opaque identifier for the current track unique within the current player.\n\n> [!WARNING] This is NOT `mpris:trackid` as that is sometimes missing or nonunique\n> in some players.\n", + "flags": [ + "readonly" + ] + }, + "loopSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "position": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The current position in the playing track, as seconds, with millisecond precision,\nor `0` if TYPE99VpositionSupported99Tprop99TYPE is false.\n\nMay only be written to if TYPE99VcanSeek99Tprop99TYPE and TYPE99VpositionSupported99Tprop99TYPE are true.\n\n> [!WARNING] To avoid excessive property updates wasting CPU while `position` is not\n> actively monitored, `position` usually will not update reactively, unless a nonlinear\n> change in position occurs, however reading it will always return the current position.\n>\n> If you want to actively monitor the position, the simplest way it to emit the TYPE99VpositionChanged99Tsignal99TYPE\n> signal manually for the duration you are monitoring it, Using a TYPE99MQT_qml_QtQuick99NFrameAnimation99TYPE if you need\n> the value to update smoothly, such as on a slider, or a TYPE99MQT_qml_QtQuick99NTimer99TYPE if not, as shown below.\n>\n> ```qml {filename=\"Using a FrameAnimation\"}\n> FrameAnimation {\n> // only emit the signal when the position is actually changing.\n> running: player.playbackState == MprisPlaybackState.Playing\n> // emit the positionChanged signal every frame.\n> onTriggered: player.positionChanged()\n> }\n> ```\n>\n> ```qml {filename=\"Using a Timer\"}\n> Timer {\n> // only emit the signal when the position is actually changing.\n> running: player.playbackState == MprisPlaybackState.Playing\n> // Make sure the position updates at least once per second.\n> interval: 1000\n> repeat: true\n> // emit the positionChanged signal every second.\n> onTriggered: player.positionChanged()\n> }\n> ```\n" + }, + "canRaise": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "positionSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "minRate": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canPause": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canSetFullscreen": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "next", + "id": "next", + "details": "Play the next song.\n\nMay only be called if TYPE99VcanGoNext99Tprop99TYPE is true.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "openUri", + "id": "openUri", + "details": "Open the given URI in the media player.\n\nMany players will silently ignore this, especially if the uri\ndoes not match TYPE99VsupportedUriSchemes99Tprop99TYPE and TYPE99VsupportedMimeTypes99Tprop99TYPE.\n", + "params": [ + { + "name": "uri", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "pause", + "id": "pause", + "details": "Equivalent to setting TYPE99VplaybackState99Tprop99TYPE to `Paused`.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "play", + "id": "play", + "details": "Equivalent to setting TYPE99VplaybackState99Tprop99TYPE to `Playing`.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "previous", + "id": "previous", + "details": "Play the previous song, or go back to the beginning of the current one.\n\nMay only be called if TYPE99VcanGoPrevious99Tprop99TYPE is true.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "quit", + "id": "quit", + "details": "Quit the media player.\n\nMay only be called if TYPE99VcanQuit99Tprop99TYPE is true.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "raise", + "id": "raise", + "details": "Bring the media player to the front of the window stack.\n\nMay only be called if TYPE99VcanRaise99Tprop99TYPE is true.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "seek", + "id": "seek", + "details": "Change `position` by an offset.\n\nEven if TYPE99VpositionSupported99Tprop99TYPE is false and you cannot set `position`,\nthis function may work.\n\nMay only be called if TYPE99VcanSeek99Tprop99TYPE is true.\n", + "params": [ + { + "name": "offset", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "stop", + "id": "stop", + "details": "Equivalent to setting TYPE99VplaybackState99Tprop99TYPE to `Stopped`.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "togglePlaying", + "id": "togglePlaying", + "details": "Equivalent to calling TYPE99Vplay99Tfunc99TYPE if not playing or TYPE99Vpause99Tfunc99TYPE if playing.\n\nMay only be called if TYPE99VcanTogglePlaying99Tprop99TYPE is true, which is equivalent to\nTYPE99VcanPlay99Tprop99TYPE or TYPE99VcanPause99Tfunc99TYPE depending on the current playback state.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Mpris/index.json b/modules/Quickshell.Services.Mpris/index.json new file mode 100644 index 0000000..7bc13de --- /dev/null +++ b/modules/Quickshell.Services.Mpris/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.Mpris", + "description": "Mpris Service", + "details": "" +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Notifications/Notification.json b/modules/Quickshell.Services.Notifications/Notification.json new file mode 100644 index 0000000..d2e70d3 --- /dev/null +++ b/modules/Quickshell.Services.Notifications/Notification.json @@ -0,0 +1,236 @@ +{ + "name": "Notification", + "module": "Quickshell.Services.Notifications", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A notification emitted by a NotificationServer.", + "details": "A notification emitted by a NotificationServer.\n\n> [!NOTE] This type is TYPE99MQS_Quickshell99NRetainable99TYPE. It\n> can be retained after destruction if necessary.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "hasActionIcons": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If actions associated with this notification have icons available.\n\nSee TYPE99MQS_Quickshell_Services_Notifications99NNotificationAction99Videntifier99Tprop99TYPE for details.\n", + "flags": [ + "readonly" + ] + }, + "expireTimeout": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Time in seconds the notification should be valid for\n", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Id of the notification as given to the client.\n", + "flags": [ + "readonly" + ] + }, + "hints": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "All hints sent by the client application as a javascript object.\nMany common hints are exposed via other properties.\n", + "flags": [ + "readonly" + ] + }, + "transient": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If true, the notification should skip any kind of persistence function like a notification area.\n", + "flags": [ + "readonly" + ] + }, + "appName": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The sending application's name.\n", + "flags": [ + "readonly" + ] + }, + "body": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "lastGeneration": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this notification was carried over from the last generation\nwhen quickshell reloaded.\n\nNotifications from the last generation will only be emitted\nif TYPE99MQS_Quickshell_Services_Notifications99NNotificationServer99VkeepOnReload99Tprop99TYPE is true.\n", + "flags": [ + "readonly" + ] + }, + "resident": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If true, the notification will not be destroyed after an action is invoked.\n", + "flags": [ + "readonly" + ] + }, + "summary": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The image associated with this notification, or \"\" if none.\n", + "flags": [ + "readonly" + ] + }, + "appIcon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The sending application's icon. If none was provided, then the icon from an associated\ndesktop entry will be retrieved. If none was found then \"\".\n", + "flags": [ + "readonly" + ] + }, + "actions": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "NotificationAction" + } + }, + "details": "Actions that can be taken for this notification.\n", + "flags": [ + "readonly" + ] + }, + "tracked": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the notification is tracked by the notification server.\n\nSetting this property to false is equivalent to calling TYPE99Vdismiss99Tfunc99TYPE.\n" + }, + "urgency": { + "type": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "NotificationUrgency" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "desktopEntry": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The name of the sender's desktop entry or \"\" if none was supplied.\n", + "flags": [ + "readonly" + ] + }, + "image": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "An image associated with the notification.\n\nThis image is often something like a profile picture in instant messaging applications.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "dismiss", + "id": "dismiss", + "details": "Destroy the notification and hint to the remote application that it was\nexplicitly closed by the user.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "expire", + "id": "expire", + "details": "Destroy the notification and hint to the remote application that it has\ntimed out an expired.\n", + "params": [] + } + ], + "signals": { + "closed": { + "name": "closed", + "details": "Sent when a notification has been closed.\n\nThe notification object will be destroyed as soon as all signal handlers exit.\n", + "params": [ + { + "name": "reason", + "type": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "NotificationCloseReason" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Notifications/NotificationAction.json b/modules/Quickshell.Services.Notifications/NotificationAction.json new file mode 100644 index 0000000..aceee5c --- /dev/null +++ b/modules/Quickshell.Services.Notifications/NotificationAction.json @@ -0,0 +1,54 @@ +{ + "name": "NotificationAction", + "module": "Quickshell.Services.Notifications", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "An action associated with a Notification.", + "details": "See TYPE99MQS_Quickshell_Services_Notifications99NNotification99Vactions99Tprop99TYPE.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "identifier": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The identifier of the action.\n\nWhen TYPE99MQS_Quickshell_Services_Notifications99NNotification99VhasActionIcons99Tprop99TYPE is true, this property will be an icon name.\nWhen it is false, this property is irrelevant.\n", + "flags": [ + "readonly" + ] + }, + "text": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The localized text that should be displayed on a button.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "invoke", + "id": "invoke", + "details": "Invoke the action. If TYPE99MQS_Quickshell_Services_Notifications99NNotification99Vresident99Tprop99TYPE is false it will be dismissed.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Notifications/NotificationCloseReason.json b/modules/Quickshell.Services.Notifications/NotificationCloseReason.json new file mode 100644 index 0000000..b0be91d --- /dev/null +++ b/modules/Quickshell.Services.Notifications/NotificationCloseReason.json @@ -0,0 +1,50 @@ +{ + "name": "NotificationCloseReason", + "module": "Quickshell.Services.Notifications", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "The reason a Notification was closed.", + "details": "See TYPE99MQS_Quickshell_Services_Notifications99NNotification99Vclosed99Tsignal99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "NotificationCloseReason" + } + } + ] + } + ], + "signals": {}, + "variants": { + "CloseRequested": { + "details": "The remote application requested the notification be removed.\n" + }, + "Expired": { + "details": "The notification expired due to a timeout.\n" + }, + "Dismissed": { + "details": "The notification was explicitly dismissed by the user.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Notifications/NotificationServer.json b/modules/Quickshell.Services.Notifications/NotificationServer.json new file mode 100644 index 0000000..40e3a39 --- /dev/null +++ b/modules/Quickshell.Services.Notifications/NotificationServer.json @@ -0,0 +1,133 @@ +{ + "name": "NotificationServer", + "module": "Quickshell.Services.Notifications", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Desktop Notifications Server.", + "details": "An implementation of the [Desktop Notifications Specification] for receiving notifications\nfrom external applications.\n\nThe server does not advertise most capabilities by default. See the individual properties for details.\n\n[Desktop Notifications Specification]: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html\n", + "properties": { + "actionIconsSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification actions should be advertised as supporting the display of icons. Defaults to false.\n" + }, + "trackedNotifications": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "Notification" + } + }, + "details": "All notifications currently tracked by the server.\n", + "flags": [ + "readonly" + ] + }, + "bodyHyperlinksSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification body text should be advertised as supporting hyperlinks as described in [the specification]\nDefaults to false.\n\nNote that returned notifications may still contain hyperlinks if this property is false, as it is only a hint.\n\n[the specification]: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html#hyperlinks\n" + }, + "extraHints": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": "Extra hints to expose to notification clients.\n" + }, + "bodySupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification body text should be advertised as supported by the notification server.\nDefaults to true.\n\nNote that returned notifications are likely to return body text even if this property is false,\nas it is only a hint.\n" + }, + "actionsSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification actions should be advertised as supported by the notification server. Defaults to false.\n" + }, + "bodyImagesSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification body text should be advertised as supporting images as described in [the specification]\nDefaults to false.\n\nNote that returned notifications may still contain images if this property is false, as it is only a hint.\n\n[the specification]: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html#images\n" + }, + "bodyMarkupSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification body text should be advertised as supporting markup as described in [the specification]\nDefaults to false.\n\nNote that returned notifications may still contain markup if this property is false,\nas it is only a hint. By default Text objects will try to render markup. To avoid this\nif any is sent, change TYPE99MQT_qml_QtQuick99NText99VtextFormat99Tprop99TYPE to `PlainText`.\n" + }, + "imageSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the notification server should advertise that it supports images. Defaults to false.\n" + }, + "keepOnReload": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notifications should be re-emitted when quickshell reloads. Defaults to true.\n\nThe TYPE99MQS_Quickshell_Services_Notifications99NNotification99VlastGeneration99Tprop99TYPE flag will be\nset on notifications from the prior generation for further filtering/handling.\n" + }, + "persistenceSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the notification server should advertise that it can persist notifications in the background\nafter going offscreen. Defaults to false.\n" + } + }, + "functions": [], + "signals": { + "notification": { + "name": "notification", + "details": "Sent when a notification is received by the server.\n\nIf this notification should not be discarded, set its `tracked` property to true.\n", + "params": [ + { + "name": "notification", + "type": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "Notification" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Notifications/NotificationUrgency.json b/modules/Quickshell.Services.Notifications/NotificationUrgency.json new file mode 100644 index 0000000..ab3515b --- /dev/null +++ b/modules/Quickshell.Services.Notifications/NotificationUrgency.json @@ -0,0 +1,50 @@ +{ + "name": "NotificationUrgency", + "module": "Quickshell.Services.Notifications", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "The urgency level of a Notification.", + "details": "See TYPE99MQS_Quickshell_Services_Notifications99NNotification99Vurgency99Tprop99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "NotificationUrgency" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Low": { + "details": null + }, + "Normal": { + "details": null + }, + "Critical": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Notifications/index.json b/modules/Quickshell.Services.Notifications/index.json new file mode 100644 index 0000000..9fc06a1 --- /dev/null +++ b/modules/Quickshell.Services.Notifications/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.Notifications", + "description": "Types for implementing a notification daemon", + "details": "" +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pam/PamContext.json b/modules/Quickshell.Services.Pam/PamContext.json new file mode 100644 index 0000000..c6ae47b --- /dev/null +++ b/modules/Quickshell.Services.Pam/PamContext.json @@ -0,0 +1,170 @@ +{ + "name": "PamContext", + "module": "Quickshell.Services.Pam", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Connection to pam.", + "details": "Connection to pam. See [the module documentation](../) for pam configuration advice.\n", + "properties": { + "user": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The user to authenticate as. If unset the current user will be used.\n\nThis property may not be set while TYPE99Vactive99Tprop99TYPE is true.\n" + }, + "responseRequired": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If pam currently wants a response.\n\nResponses can be returned with the TYPE99Vrespond99Tfunc99TYPE function.\n", + "flags": [ + "readonly" + ] + }, + "messageIsError": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the last message should be shown as an error.\n", + "flags": [ + "readonly" + ] + }, + "active": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the pam context is actively performing an authentication.\n\nSetting this value behaves exactly the same as calling TYPE99Vstart99Tfunc99TYPE and TYPE99Vabort99Tfunc99TYPE.\n" + }, + "configDirectory": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The pam configuration directory to use. Defaults to \"/etc/pam.d\".\n\nThe configuration directory is resolved relative to the current file if not an absolute path.\n\nThis property may not be set while TYPE99Vactive99Tprop99TYPE is true.\n" + }, + "message": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The last message sent by pam.\n", + "flags": [ + "readonly" + ] + }, + "config": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The pam configuration to use. Defaults to \"login\".\n\nThe configuration should name a file inside TYPE99VconfigDirectory99Tprop99TYPE.\n\nThis property may not be set while TYPE99Vactive99Tprop99TYPE is true.\n" + }, + "responseVisible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the user's response should be visible. Only valid when TYPE99VresponseRequired99Tprop99TYPE is true.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "abort", + "id": "abort", + "details": "Abort a running authentication session.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "respond", + "id": "respond", + "details": "Respond to pam.\n\nMay not be called unless TYPE99VresponseRequired99Tprop99TYPE is true.\n", + "params": [ + { + "name": "response", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "name": "start", + "id": "start", + "details": "Start an authentication session. Returns if the session was started successfully.\n", + "params": [] + } + ], + "signals": { + "completed": { + "name": "completed", + "details": "Emitted whenever authentication completes.\n", + "params": [ + { + "name": "result", + "type": { + "type": "local", + "module": "Quickshell.Services.Pam", + "name": "PamResult" + } + } + ] + }, + "pamMessage": { + "name": "pamMessage", + "details": "Emitted whenever pam sends a new message, after the change signals for\n`message`, `messageIsError`, and `responseRequired`.\n", + "params": [] + }, + "error": { + "name": "error", + "details": "Emitted if pam fails to perform authentication normally.\n\nA `completed(PamResult.Error)` will be emitted after this event.\n", + "params": [ + { + "name": "error", + "type": { + "type": "local", + "module": "Quickshell.Services.Pam", + "name": "PamError" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pam/PamError.json b/modules/Quickshell.Services.Pam/PamError.json new file mode 100644 index 0000000..1974859 --- /dev/null +++ b/modules/Quickshell.Services.Pam/PamError.json @@ -0,0 +1,50 @@ +{ + "name": "PamError", + "module": "Quickshell.Services.Pam", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "An error that occurred during an authentication.", + "details": "See TYPE99MQS_Quickshell_Services_Pam99NPamContext99Verror99Tsignal99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Pam", + "name": "PamError" + } + } + ] + } + ], + "signals": {}, + "variants": { + "InternalError": { + "details": "An error occurred inside quickshell's pam interface.\n" + }, + "StartFailed": { + "details": "Failed to start the pam session.\n" + }, + "TryAuthFailed": { + "details": "Failed to try to authenticate the user.\nThis is not the same as the user failing to authenticate.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pam/PamResult.json b/modules/Quickshell.Services.Pam/PamResult.json new file mode 100644 index 0000000..798182f --- /dev/null +++ b/modules/Quickshell.Services.Pam/PamResult.json @@ -0,0 +1,53 @@ +{ + "name": "PamResult", + "module": "Quickshell.Services.Pam", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "The result of an authentication.", + "details": "See TYPE99MQS_Quickshell_Services_Pam99NPamContext99Vcompleted99Tsignal99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Pam", + "name": "PamResult" + } + } + ] + } + ], + "signals": {}, + "variants": { + "MaxTries": { + "details": "The authentication method ran out of tries and should not be used again.\n" + }, + "Failed": { + "details": "Authentication failed.\n" + }, + "Success": { + "details": "Authentication was successful.\n" + }, + "Error": { + "details": "An error occurred while trying to authenticate.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pam/index.json b/modules/Quickshell.Services.Pam/index.json new file mode 100644 index 0000000..95c0d57 --- /dev/null +++ b/modules/Quickshell.Services.Pam/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.Pam", + "description": "Pam authentication", + "details": "## Writing pam configurations\n\nIt is a good idea to write pam configurations specifically for quickshell\nif you want to do anything other than match the default login flow.\n\nA good example of this is having a configuration that allows entering a password\nor fingerprint in any order.\n\n### Structure of a pam configuration.\nPam configuration files are a list of rules, each on a new line in the following form:\n```\n [options]\n```\n\nEach line runs in order.\n\nPamContext currently only works with the `auth` type, as other types require root\naccess to check.\n\n#### Control flags\nThe control flags you're likely to use are `required` and `sufficient`.\n- `required` rules must pass for authentication to succeed.\n- `sufficient` rules will bypass any remaining rules and return on success.\n\nNote that you should have at least one required rule or pam will fail with an undocumented error.\n\n#### Modules\nPam works with a set of modules that handle various authentication mechanisms.\nSome common ones include `pam_unix.so` which handles passwords and `pam_fprintd.so`\nwhich handles fingerprints.\n\nThese modules have options but none are required for basic functionality.\n\n### Examples\n\nAuthenticate with only a password:\n```\nauth required pam_unix.so\n```\n\nAuthenticate with only a fingerprint:\n```\nauth required pam_fprintd.so\n```\n\nTry to authenticate with a fingerprint first, but if that fails fall back to a password:\n```\nauth sufficient pam_fprintd.so\nauth required pam_unix.so\n```\n\nRequire both a fingerprint and a password:\n```\nauth required pam_fprintd.so\nauth required pam_unix.so\n```\n\n\nSee also: [Oracle: PAM configuration file](https://docs.oracle.com/cd/E19683-01/816-4883/pam-32/index.html)" +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pipewire/Pipewire.json b/modules/Quickshell.Services.Pipewire/Pipewire.json new file mode 100644 index 0000000..cc8b0fd --- /dev/null +++ b/modules/Quickshell.Services.Pipewire/Pipewire.json @@ -0,0 +1,90 @@ +{ + "name": "Pipewire", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Contains links to all pipewire objects.", + "details": "", + "flags": [ + "singleton" + ], + "properties": { + "defaultAudioSource": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The default audio source or `null`.\n", + "flags": [ + "readonly" + ] + }, + "linkGroups": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLinkGroup" + } + }, + "details": "All pipewire link groups.\n", + "flags": [ + "readonly" + ] + }, + "defaultAudioSink": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The default audio sink or `null`.\n", + "flags": [ + "readonly" + ] + }, + "links": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLink" + } + }, + "details": "All pipewire links.\n", + "flags": [ + "readonly" + ] + }, + "nodes": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + } + }, + "details": "All pipewire nodes.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pipewire/PwAudioChannel.json b/modules/Quickshell.Services.Pipewire/PwAudioChannel.json new file mode 100644 index 0000000..3593cd9 --- /dev/null +++ b/modules/Quickshell.Services.Pipewire/PwAudioChannel.json @@ -0,0 +1,164 @@ +{ + "name": "PwAudioChannel", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Audio channel of a pipewire node.", + "details": "See TYPE99MQS_Quickshell_Services_Pipewire99NPwNodeAudio99Vchannels99Tprop99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": "Print a human readable representation of the given channel,\nincluding aux and custom channel ranges.\n", + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwAudioChannel" + } + } + ] + } + ], + "signals": {}, + "variants": { + "TopCenter": { + "details": null + }, + "Mono": { + "details": null + }, + "AuxRangeEnd": { + "details": "The end of the aux channel range.\n\nValues between AuxRangeStart and AuxRangeEnd are valid.\n" + }, + "TopRearLeft": { + "details": null + }, + "TopRearRight": { + "details": null + }, + "FrontLeftHigh": { + "details": null + }, + "RearRightCenter": { + "details": null + }, + "TopSideLeft": { + "details": null + }, + "LowFrequencyEffects": { + "details": null + }, + "FrontCenterHigh": { + "details": null + }, + "BottomRightCenter": { + "details": null + }, + "FrontCenter": { + "details": null + }, + "FrontRightCenter": { + "details": null + }, + "LowFrequencyEffectsRight": { + "details": null + }, + "RearLeft": { + "details": null + }, + "RearLeftCenter": { + "details": null + }, + "FrontLeftCenter": { + "details": null + }, + "RearRight": { + "details": null + }, + "FrontRightHigh": { + "details": null + }, + "TopFrontCenter": { + "details": null + }, + "Unknown": { + "details": null + }, + "TopFrontLeft": { + "details": null + }, + "BottomCenter": { + "details": null + }, + "TopFrontRightCenter": { + "details": null + }, + "FrontRightWide": { + "details": null + }, + "FrontRight": { + "details": null + }, + "LowFrequencyEffects2": { + "details": null + }, + "FrontLeftWide": { + "details": null + }, + "LowFrequencyEffectsLeft": { + "details": null + }, + "FrontLeft": { + "details": null + }, + "TopFrontRight": { + "details": null + }, + "SideLeft": { + "details": null + }, + "SideRight": { + "details": null + }, + "RearCenter": { + "details": null + }, + "TopFrontLeftCenter": { + "details": null + }, + "TopRearCenter": { + "details": null + }, + "AuxRangeStart": { + "details": "The start of the aux channel range.\n\nValues between AuxRangeStart and AuxRangeEnd are valid.\n" + }, + "TopSideRight": { + "details": null + }, + "NA": { + "details": null + }, + "BottomLeftCenter": { + "details": null + }, + "CustomRangeStart": { + "details": "The end of the custom channel range.\n\nValues starting at CustomRangeStart are valid.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pipewire/PwLink.json b/modules/Quickshell.Services.Pipewire/PwLink.json new file mode 100644 index 0000000..2b863e2 --- /dev/null +++ b/modules/Quickshell.Services.Pipewire/PwLink.json @@ -0,0 +1,64 @@ +{ + "name": "PwLink", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A connection between pipewire nodes.", + "details": "Note that there is one link per *channel* of a connection between nodes.\nYou usually want TYPE99MQS_Quickshell_Services_Pipewire99NPwLinkGroup99TYPE.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "state": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLinkState" + }, + "details": "The current state of the link.\n\n> [!WARNING] This property is invalid unless the node is [bound](../pwobjecttracker).\n", + "flags": [ + "readonly" + ] + }, + "source": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The node that is *sending* information. (the source)\n", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The pipewire object id of the link.\n\nMainly useful for debugging. you can inspect the link directly\nwith `pw-cli i `.\n", + "flags": [ + "readonly" + ] + }, + "target": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The node that is *receiving* information. (the sink)\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pipewire/PwLinkGroup.json b/modules/Quickshell.Services.Pipewire/PwLinkGroup.json new file mode 100644 index 0000000..9300642 --- /dev/null +++ b/modules/Quickshell.Services.Pipewire/PwLinkGroup.json @@ -0,0 +1,53 @@ +{ + "name": "PwLinkGroup", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A group of connections between pipewire nodes.", + "details": "A group of connections between pipewire nodes, one per source->target pair.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "target": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The node that is *receiving* information. (the sink)\n", + "flags": [ + "readonly" + ] + }, + "source": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The node that is *sending* information. (the source)\n", + "flags": [ + "readonly" + ] + }, + "state": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLinkState" + }, + "details": "The current state of the link group.\n\n> [!WARNING] This property is invalid unless the node is [bound](../pwobjecttracker).\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pipewire/PwLinkState.json b/modules/Quickshell.Services.Pipewire/PwLinkState.json new file mode 100644 index 0000000..870c64a --- /dev/null +++ b/modules/Quickshell.Services.Pipewire/PwLinkState.json @@ -0,0 +1,62 @@ +{ + "name": "PwLinkState", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "State of a pipewire link.", + "details": "See TYPE99MQS_Quickshell_Services_Pipewire99NPwLink99Vstate99Tprop99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLinkState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Unlinked": { + "details": null + }, + "Error": { + "details": null + }, + "Init": { + "details": null + }, + "Allocating": { + "details": null + }, + "Paused": { + "details": null + }, + "Negotiating": { + "details": null + }, + "Active": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pipewire/PwNode.json b/modules/Quickshell.Services.Pipewire/PwNode.json new file mode 100644 index 0000000..aeb1508 --- /dev/null +++ b/modules/Quickshell.Services.Pipewire/PwNode.json @@ -0,0 +1,108 @@ +{ + "name": "PwNode", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A node in the pipewire connection graph.", + "details": "", + "flags": [ + "uncreatable" + ], + "properties": { + "nickname": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The node's nickname, corrosponding to the object's `node.nickname` property.\n\nMay be empty. Generally but not always more human readable than TYPE99Vdescription99Tprop99TYPE.\n", + "flags": [ + "readonly" + ] + }, + "audio": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNodeAudio" + }, + "details": "Extra information present only if the node sends or receives audio.\n", + "flags": [ + "readonly" + ] + }, + "isSink": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If `true`, then the node accepts audio input from other nodes,\nif `false` the node outputs audio to other nodes.\n", + "flags": [ + "readonly" + ] + }, + "isStream": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If `true` then the node is likely to be a program, if false it is liekly to be hardware.\n", + "flags": [ + "readonly" + ] + }, + "properties": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "The property set present on the node, as an object containing key-value pairs.\nYou can inspect this directly with `pw-cli i `.\n\nA few properties of note, which may or may not be present:\n- `application.name` - A suggested human readable name for the node.\n- `application.icon-name` - The name of an icon recommended to display for the node.\n- `media.name` - A description of the currently playing media.\n (more likely to be present than `media.title` and `media.artist`)\n- `media.title` - The title of the currently playing media.\n- `media.artist` - The artist of the currently playing media.\n\n> [!WARNING] This property is invalid unless the node is [bound](../pwobjecttracker).\n", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The pipewire object id of the node.\n\nMainly useful for debugging. you can inspect the node directly\nwith `pw-cli i `.\n", + "flags": [ + "readonly" + ] + }, + "description": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The node's description, corrosponding to the object's `node.description` property.\n\nMay be empty. Generally more human readable than TYPE99Vname99Tprop99TYPE.\n", + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The node's name, corrosponding to the object's `node.name` property.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pipewire/PwNodeAudio.json b/modules/Quickshell.Services.Pipewire/PwNodeAudio.json new file mode 100644 index 0000000..b20243b --- /dev/null +++ b/modules/Quickshell.Services.Pipewire/PwNodeAudio.json @@ -0,0 +1,65 @@ +{ + "name": "PwNodeAudio", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Audio specific properties of pipewire nodes.", + "details": "Extra properties of a TYPE99MQS_Quickshell_Services_Pipewire99NPwNode99TYPE if the node is an audio node.\n\nSee TYPE99MQS_Quickshell_Services_Pipewire99NPwNode99Vaudio99Tprop99TYPE.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "volume": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The average volume over all channels of the node.\nSetting this property modifies the volume of all channels proportionately.\n\n> [!WARNING] This property is invalid unless the node is [bound](../pwobjecttracker).\n" + }, + "channels": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwAudioChannel" + } + }, + "details": "The audio channels present on the node.\n\n> [!WARNING] This property is invalid unless the node is [bound](../pwobjecttracker).\n", + "flags": [ + "readonly" + ] + }, + "muted": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the node is currently muted. Setting this property changes the mute state.\n\n> [!WARNING] This property is invalid unless the node is [bound](../pwobjecttracker).\n" + }, + "volumes": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + "details": "The volumes of each audio channel individually. Each entry corrosponds to\nthe volume of the channel at the same index in TYPE99Vchannels99Tprop99TYPE. TYPE99Vvolumes99Tprop99TYPE and TYPE99Vchannels99Tprop99TYPE\nwill always be the same length.\n\n> [!WARNING] This property is invalid unless the node is [bound](../pwobjecttracker).\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pipewire/PwNodeLinkTracker.json b/modules/Quickshell.Services.Pipewire/PwNodeLinkTracker.json new file mode 100644 index 0000000..621f118 --- /dev/null +++ b/modules/Quickshell.Services.Pipewire/PwNodeLinkTracker.json @@ -0,0 +1,41 @@ +{ + "name": "PwNodeLinkTracker", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Tracks all link connections to a given node.", + "details": "", + "properties": { + "linkGroups": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLinkGroup" + } + }, + "details": "Link groups connected to the given node.\n\nIf the node is a sink, links which target the node will be tracked.\nIf the node is a source, links which source the node will be tracked.\n", + "flags": [ + "readonly" + ] + }, + "node": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The node to track connections to.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pipewire/PwObjectTracker.json b/modules/Quickshell.Services.Pipewire/PwObjectTracker.json new file mode 100644 index 0000000..798a267 --- /dev/null +++ b/modules/Quickshell.Services.Pipewire/PwObjectTracker.json @@ -0,0 +1,30 @@ +{ + "name": "PwObjectTracker", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Binds pipewire objects.", + "details": "If the object list of at least one PwObjectTracker contains a given pipewire object,\nit will become *bound* and you will be able to interact with bound-only properties.\n", + "properties": { + "objects": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": "The list of objects to bind.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.Pipewire/index.json b/modules/Quickshell.Services.Pipewire/index.json new file mode 100644 index 0000000..60832ec --- /dev/null +++ b/modules/Quickshell.Services.Pipewire/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.Pipewire", + "description": "Pipewire API", + "details": "" +} \ No newline at end of file diff --git a/modules/Quickshell.Services.SystemTray/SystemTray.json b/modules/Quickshell.Services.SystemTray/SystemTray.json new file mode 100644 index 0000000..a1939ff --- /dev/null +++ b/modules/Quickshell.Services.SystemTray/SystemTray.json @@ -0,0 +1,36 @@ +{ + "name": "SystemTray", + "module": "Quickshell.Services.SystemTray", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "System tray", + "details": "Referencing the SystemTray singleton will make quickshell start tracking\nsystem tray contents, which are updated as the tray changes, and can be\naccessed via the TYPE99Vitems99Tprop99TYPE property.\n", + "flags": [ + "singleton" + ], + "properties": { + "items": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayItem" + } + }, + "details": "List of all system tray icons.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.SystemTray/SystemTrayCategory.json b/modules/Quickshell.Services.SystemTray/SystemTrayCategory.json new file mode 100644 index 0000000..ef47912 --- /dev/null +++ b/modules/Quickshell.Services.SystemTray/SystemTrayCategory.json @@ -0,0 +1,18 @@ +{ + "name": "SystemTrayCategory", + "module": "Quickshell.Services.SystemTray", + "type": "enum", + "description": "Category of a SystemTrayItem.", + "details": "See TYPE99MQS_Quickshell_Services_SystemTray99NSystemTrayItem99Vcategory99Tprop99TYPE.\n", + "variants": { + "Hardware": { + "details": "Hardware controls like battery indicators or volume control.\n" + }, + "ApplicationStatus": { + "details": "The fallback category for general applications or anything that does\nnot fit into a different category.\n" + }, + "SystemServices": { + "details": "System services such as IMEs or disk indexing.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.SystemTray/SystemTrayItem.json b/modules/Quickshell.Services.SystemTray/SystemTrayItem.json new file mode 100644 index 0000000..b9a357a --- /dev/null +++ b/modules/Quickshell.Services.SystemTray/SystemTrayItem.json @@ -0,0 +1,217 @@ +{ + "name": "SystemTrayItem", + "module": "Quickshell.Services.SystemTray", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "An item in the system tray.", + "details": "A system tray item, roughly conforming to the [kde/freedesktop spec]\n(there is no real spec, we just implemented whatever seemed to actually be used).\n\n[kde/freedesktop spec]: https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/StatusNotifierItem/\n", + "flags": [ + "uncreatable" + ], + "properties": { + "category": { + "type": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayCategory" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "onlyMenu": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this tray item only offers a menu and activation will do nothing.\n", + "flags": [ + "readonly" + ] + }, + "hasMenu": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this tray item has an associated menu accessible via TYPE99Vdisplay99Tfunc99TYPE or TYPE99Vmenu99Tprop99TYPE.\n", + "flags": [ + "readonly" + ] + }, + "title": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Text that describes the application.\n", + "flags": [ + "readonly" + ] + }, + "menu": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuHandle" + }, + "details": "A handle to the menu associated with this tray item, if any.\n\nCan be displayed with TYPE99MQS_Quickshell99NQsMenuAnchor99TYPE or TYPE99MQS_Quickshell99NQsMenuOpener99TYPE.\n", + "flags": [ + "readonly" + ] + }, + "tooltipTitle": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "status": { + "type": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayStatus" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "tooltipDescription": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "A name unique to the application, such as its name.\n", + "flags": [ + "readonly" + ] + }, + "icon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Icon source string, usable as an Image source.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "activate", + "id": "activate", + "details": "Primary activation action, generally triggered via a left click.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "display", + "id": "display", + "details": "Display a platform menu at the given location relative to the parent window.\n", + "params": [ + { + "name": "parentWindow", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "relativeX", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + }, + { + "name": "relativeY", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "scroll", + "id": "scroll", + "details": "Scroll action, such as changing volume on a mixer.\n", + "params": [ + { + "name": "delta", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + }, + { + "name": "horizontal", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "secondaryActivate", + "id": "secondaryActivate", + "details": "Secondary activation action, generally triggered via a middle click.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.SystemTray/SystemTrayMenuWatcher.json b/modules/Quickshell.Services.SystemTray/SystemTrayMenuWatcher.json new file mode 100644 index 0000000..630bc7d --- /dev/null +++ b/modules/Quickshell.Services.SystemTray/SystemTrayMenuWatcher.json @@ -0,0 +1,36 @@ +{ + "name": "SystemTrayMenuWatcher", + "module": "Quickshell.Services.SystemTray", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Accessor for SystemTrayItem menus.", + "details": "> [!ERROR] Deprecated in favor of TYPE99MQS_Quickshell99NQsMenuOpener99Vmenu99Tprop99TYPE,\n> which now supports directly accessing a tray menu via TYPE99MQS_Quickshell_Services_SystemTray99NSystemTrayItem99Vmenu99Tprop99TYPE.\n\nSystemTrayMenuWatcher provides access to the associated\nTYPE99MQS_Quickshell_DBusMenu99NDBusMenuItem99TYPE for a tray item.\n", + "properties": { + "menu": { + "type": { + "type": "local", + "module": "Quickshell.DBusMenu", + "name": "DBusMenuItem" + }, + "details": "The menu associated with the tray item. Will be null if TYPE99VtrayItem99Tprop99TYPE is null\nor has no associated menu.\n", + "flags": [ + "readonly" + ] + }, + "trayItem": { + "type": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayItem" + }, + "details": "The tray item to watch.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.SystemTray/SystemTrayStatus.json b/modules/Quickshell.Services.SystemTray/SystemTrayStatus.json new file mode 100644 index 0000000..1a2d22d --- /dev/null +++ b/modules/Quickshell.Services.SystemTray/SystemTrayStatus.json @@ -0,0 +1,18 @@ +{ + "name": "SystemTrayStatus", + "module": "Quickshell.Services.SystemTray", + "type": "enum", + "description": "Statis of a SystemTrayItem.", + "details": "See TYPE99MQS_Quickshell_Services_SystemTray99NSystemTrayItem99Vstatus99Tprop99TYPE.\n", + "variants": { + "Passive": { + "details": "A passive item does not convey important information and can be considered idle. You may want to hide these.\n" + }, + "NeedsAttention": { + "details": "An item that needs attention conveys very important information such as low battery.\n" + }, + "Active": { + "details": "An active item may have information more important than a passive one and you probably do not want to hide it.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.SystemTray/index.json b/modules/Quickshell.Services.SystemTray/index.json new file mode 100644 index 0000000..0efc2ec --- /dev/null +++ b/modules/Quickshell.Services.SystemTray/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.SystemTray", + "description": "Types for implementing a system tray", + "details": "" +} \ No newline at end of file diff --git a/modules/Quickshell.Services.UPower/UPower.json b/modules/Quickshell.Services.UPower/UPower.json new file mode 100644 index 0000000..57788a6 --- /dev/null +++ b/modules/Quickshell.Services.UPower/UPower.json @@ -0,0 +1,58 @@ +{ + "name": "UPower", + "module": "Quickshell.Services.UPower", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "singleton" + ], + "properties": { + "devices": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDevice" + } + }, + "details": "All connected UPower devices.\n", + "flags": [ + "readonly" + ] + }, + "onBattery": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the system is currently running on battery power, or discharging.\n", + "flags": [ + "readonly" + ] + }, + "displayDevice": { + "type": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDevice" + }, + "details": "UPower's DisplayDevice for your system. Can be `null`.\n\nThis is an aggregate device and not a physical one, meaning you will not find it in TYPE99Vdevices99Tprop99TYPE.\nIt is typically the device that is used for displaying information in desktop environments.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.UPower/UPowerDevice.json b/modules/Quickshell.Services.UPower/UPowerDevice.json new file mode 100644 index 0000000..78e4bfe --- /dev/null +++ b/modules/Quickshell.Services.UPower/UPowerDevice.json @@ -0,0 +1,185 @@ +{ + "name": "UPowerDevice", + "module": "Quickshell.Services.UPower", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A device exposed through the UPower system service.", + "details": "", + "flags": [ + "uncreatable" + ], + "properties": { + "type": { + "type": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDeviceType" + }, + "details": "The type of device.\n", + "flags": [ + "readonly" + ] + }, + "healthSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "percentage": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Current charge level as a percentage.\n\nThis would be equivalent to TYPE99Venergy99Tprop99TYPE / TYPE99VenergyCapacity99Tprop99TYPE.\n", + "flags": [ + "readonly" + ] + }, + "timeToEmpty": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Estimated time until the device is fully discharged, in seconds.\n\nWill be set to `0` if charging.\n", + "flags": [ + "readonly" + ] + }, + "energy": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Current energy level of the device in watt-hours.\n", + "flags": [ + "readonly" + ] + }, + "state": { + "type": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDeviceState" + }, + "details": "Current state of the device.\n", + "flags": [ + "readonly" + ] + }, + "isPresent": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the power source is present in the bay or slot, useful for hot-removable batteries.\n\nIf the device `type` is not `Battery`, then the property will be invalid.\n", + "flags": [ + "readonly" + ] + }, + "healthPercentage": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Health of the device as a percentage of its original health.\n", + "flags": [ + "readonly" + ] + }, + "nativePath": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Native path of the device specific to your OS.\n", + "flags": [ + "readonly" + ] + }, + "energyCapacity": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Maximum energy capacity of the device in watt-hours\n", + "flags": [ + "readonly" + ] + }, + "timeToFull": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Estimated time until the device is fully charged, in seconds.\n\nWill be set to `0` if discharging.\n", + "flags": [ + "readonly" + ] + }, + "isLaptopBattery": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the device is a laptop battery or not. Use this to check if your device is a valid battery.\n\nThis will be equivalent to TYPE99Vtype99Tprop99TYPE == Battery && TYPE99VpowerSupply99Tprop99TYPE == true.\n", + "flags": [ + "readonly" + ] + }, + "changeRate": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Rate of energy change in watts (positive when charging, negative when discharging).\n", + "flags": [ + "readonly" + ] + }, + "iconName": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Name of the icon representing the current state of the device, or an empty string if not provided.\n", + "flags": [ + "readonly" + ] + }, + "powerSupply": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the device is a power supply for your computer and can provide charge.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Services.UPower/UPowerDeviceState.json b/modules/Quickshell.Services.UPower/UPowerDeviceState.json new file mode 100644 index 0000000..67563f5 --- /dev/null +++ b/modules/Quickshell.Services.UPower/UPowerDeviceState.json @@ -0,0 +1,62 @@ +{ + "name": "UPowerDeviceState", + "module": "Quickshell.Services.UPower", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Power state of a UPower device.", + "details": "See TYPE99MQS_Quickshell_Services_UPower99NUPowerDevice99Vstate99Tprop99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "status", + "type": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDeviceState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Empty": { + "details": null + }, + "Unknown": { + "details": null + }, + "Charging": { + "details": null + }, + "Discharging": { + "details": null + }, + "FullyCharged": { + "details": null + }, + "PendingCharge": { + "details": "The device is waiting to be charged after it was plugged in.\n" + }, + "PendingDischarge": { + "details": "The device is waiting to be discharged after being unplugged.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.UPower/UPowerDeviceType.json b/modules/Quickshell.Services.UPower/UPowerDeviceType.json new file mode 100644 index 0000000..8ad469f --- /dev/null +++ b/modules/Quickshell.Services.UPower/UPowerDeviceType.json @@ -0,0 +1,128 @@ +{ + "name": "UPowerDeviceType", + "module": "Quickshell.Services.UPower", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Type of a UPower device.", + "details": "See TYPE99MQS_Quickshell_Services_UPower99NUPowerDevice99Vtype99Tprop99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "type", + "type": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDeviceType" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Battery": { + "details": null + }, + "Speakers": { + "details": null + }, + "Phone": { + "details": null + }, + "GamingInput": { + "details": null + }, + "Headphones": { + "details": null + }, + "Camera": { + "details": null + }, + "Unknown": { + "details": null + }, + "Ups": { + "details": null + }, + "Mouse": { + "details": null + }, + "Pda": { + "details": null + }, + "MediaPlayer": { + "details": null + }, + "Touchpad": { + "details": null + }, + "OtherAudio": { + "details": null + }, + "RemoteControl": { + "details": null + }, + "Wearable": { + "details": null + }, + "Headset": { + "details": null + }, + "Network": { + "details": null + }, + "Tablet": { + "details": null + }, + "LinePower": { + "details": null + }, + "Printer": { + "details": null + }, + "Scanner": { + "details": null + }, + "Toy": { + "details": null + }, + "BluetoothGeneric": { + "details": null + }, + "Computer": { + "details": null + }, + "Video": { + "details": null + }, + "Keyboard": { + "details": null + }, + "Monitor": { + "details": null + }, + "Modem": { + "details": null + }, + "Pen": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Services.UPower/index.json b/modules/Quickshell.Services.UPower/index.json new file mode 100644 index 0000000..0e5ac33 --- /dev/null +++ b/modules/Quickshell.Services.UPower/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.UPower", + "description": "UPower Service", + "details": "" +} \ No newline at end of file diff --git a/modules/Quickshell.Wayland/Toplevel.json b/modules/Quickshell.Wayland/Toplevel.json new file mode 100644 index 0000000..4cf317c --- /dev/null +++ b/modules/Quickshell.Wayland/Toplevel.json @@ -0,0 +1,165 @@ +{ + "name": "Toplevel", + "module": "Quickshell.Wayland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Window from another application.", + "details": "A window/toplevel from another application, retrievable from\nthe TYPE99MQS_Quickshell_Wayland99NToplevelManager99TYPE.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "fullscreen": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is currently fullscreen.\n\nFullscreen can be requested by setting this property, though it may\nbe ignored by the compositor.\nFullscreen can be requested on a specific screen with the TYPE99VfullscreenOn99Tfunc99TYPE function.\n" + }, + "parent": { + "type": { + "type": "local", + "module": "Quickshell.Wayland", + "name": "Toplevel" + }, + "details": "Parent toplevel if this toplevel is a modal/dialog, otherwise null.\n", + "flags": [ + "readonly" + ] + }, + "maximized": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is currently maximized.\n\nMaximization can be requested by setting this property, though it may\nbe ignored by the compositor.\n" + }, + "activated": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is currently activated or focused.\n\nActivation can be requested with the TYPE99Vactivate99Tfunc99TYPE function.\n", + "flags": [ + "readonly" + ] + }, + "title": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "minimized": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is currently minimized.\n\nMinimization can be requested by setting this property, though it may\nbe ignored by the compositor.\n" + }, + "appId": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "activate", + "id": "activate", + "details": "Request that this toplevel is activated.\nThe request may be ignored by the compositor.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "fullscreenOn", + "id": "fullscreenOn", + "details": "Request that this toplevel is fullscreened on a specific screen.\nThe request may be ignored by the compositor.\n", + "params": [ + { + "name": "screen", + "type": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "setRectangle", + "id": "setRectangle", + "details": "Provide a hint to the compositor where the visual representation\nof this toplevel is relative to a quickshell window.\nThis hint can be used visually in operations like minimization.\n", + "params": [ + { + "name": "window", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "rect", + "type": { + "type": "qt", + "module": "qml", + "name": "rect" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "unsetRectangle", + "id": "unsetRectangle", + "details": null, + "params": [] + } + ], + "signals": { + "closed": { + "name": "closed", + "details": null, + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Wayland/ToplevelManager.json b/modules/Quickshell.Wayland/ToplevelManager.json new file mode 100644 index 0000000..9b7d867 --- /dev/null +++ b/modules/Quickshell.Wayland/ToplevelManager.json @@ -0,0 +1,47 @@ +{ + "name": "ToplevelManager", + "module": "Quickshell.Wayland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Exposes a list of Toplevels.", + "details": "Exposes a list of windows from other applications as TYPE99MQS_Quickshell_Wayland99NToplevel99TYPEs via the\n[zwlr-foreign-toplevel-management-v1](https://wayland.app/protocols/wlr-foreign-toplevel-management-unstable-v1)\nwayland protocol.\n", + "flags": [ + "singleton" + ], + "properties": { + "activeToplevel": { + "type": { + "type": "local", + "module": "Quickshell.Wayland", + "name": "Toplevel" + }, + "details": "Active toplevel or null.\n\n> [!NOTE] If multiple are active, this will be the most recently activated one.\n> Usually compositors will not report more than one toplevel as active at a time.\n", + "flags": [ + "readonly" + ] + }, + "toplevels": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Wayland", + "name": "Toplevel" + } + }, + "details": "All toplevel windows exposed by the compositor.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Wayland/WlSessionLock.json b/modules/Quickshell.Wayland/WlSessionLock.json new file mode 100644 index 0000000..6a6d653 --- /dev/null +++ b/modules/Quickshell.Wayland/WlSessionLock.json @@ -0,0 +1,47 @@ +{ + "name": "WlSessionLock", + "module": "Quickshell.Wayland", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Wayland session locker.", + "details": "Wayland session lock implemented using the [ext_session_lock_v1] protocol.\n\nWlSessionLock will create an instance of its `surface` component for every screen when\n`locked` is set to true. The `surface` component must create a TYPE99MQS_Quickshell_Wayland99NWlSessionLockSurface99TYPE\nwhich will be displayed on each screen.\n\nThe below example will create a session lock that disappears when the button is clicked.\n```qml\nWlSessionLock {\n id: lock\n\n WlSessionLockSurface {\n Button {\n text: \"unlock me\"\n onClicked: lock.locked = false\n }\n }\n}\n\n// ...\nlock.locked = true\n```\n\n> [!WARNING] If the WlSessionLock is destroyed or quickshell exits without setting `locked`\n> to false, conformant compositors will leave the screen locked and painted with a solid\n> color.\n>\n> This is what makes the session lock secure. The lock dying will not expose your session,\n> but it will render it inoperable.\n\n[ext_session_lock_v1]: https://wayland.app/protocols/ext-session-lock-v1\n", + "properties": { + "surface": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "The surface that will be created for each screen. Must create a TYPE99MQS_Quickshell_Wayland99NWlSessionLockSurface99TYPE.\n", + "flags": [ + "default" + ] + }, + "locked": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "Controls the lock state.\n\n> [!WARNING] Only one WlSessionLock may be locked at a time. Attempting to enable a lock while\n> another lock is enabled will do nothing.\n" + }, + "secure": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "The compositor lock state.\n\nThis is set to true once the compositor has confirmed all screens are covered with locks.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Wayland/WlSessionLockSurface.json b/modules/Quickshell.Wayland/WlSessionLockSurface.json new file mode 100644 index 0000000..25cea26 --- /dev/null +++ b/modules/Quickshell.Wayland/WlSessionLockSurface.json @@ -0,0 +1,97 @@ +{ + "name": "WlSessionLockSurface", + "module": "Quickshell.Wayland", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Surface to display with a `WlSessionLock`.", + "details": "Surface displayed by a TYPE99MQS_Quickshell_Wayland99NWlSessionLock99TYPE when it is locked.\n", + "properties": { + "contentItem": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "height": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "screen": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + }, + "details": "The screen that the surface is displayed on.\n", + "flags": [ + "readonly" + ] + }, + "visible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the surface has been made visible.\n\nNote: SessionLockSurfaces will never become invisible, they will only be destroyed.\n", + "flags": [ + "readonly" + ] + }, + "color": { + "type": { + "type": "qt", + "module": "qml", + "name": "color" + }, + "details": "The background color of the window. Defaults to white.\n\n> [!WARNING] This seems to behave weirdly when using transparent colors on some systems.\n> Using a colored content item over a transparent window is the recommended way to work around this:\n> ```qml\n> ProxyWindow {\n> Rectangle {\n> anchors.fill: parent\n> color: \"#20ffffff\"\n>\n> // your content here\n> }\n> }\n> ```\n> ... but you probably shouldn't make a transparent lock,\n> and most compositors will ignore an attempt to do so.\n" + }, + "data": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": null, + "flags": [ + "default", + "readonly" + ] + }, + "width": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Wayland/WlrKeyboardFocus.json b/modules/Quickshell.Wayland/WlrKeyboardFocus.json new file mode 100644 index 0000000..c3aa5c7 --- /dev/null +++ b/modules/Quickshell.Wayland/WlrKeyboardFocus.json @@ -0,0 +1,18 @@ +{ + "name": "WlrKeyboardFocus", + "module": "Quickshell.Wayland", + "type": "enum", + "description": "WlrLayershell keyboard focus mode", + "details": "See TYPE99MQS_Quickshell_Wayland99NWlrLayershell99VkeyboardFocus99Tprop99TYPE.\n", + "variants": { + "OnDemand": { + "details": "Access to the keyboard as determined by the operating system.\n\n> [!WARNING] On some systems, `OnDemand` may cause the shell window to\n> retain focus over another window unexpectedly.\n> You should try `None` if you experience issues.\n" + }, + "None": { + "details": "No keyboard input will be accepted.\n" + }, + "Exclusive": { + "details": "Exclusive access to the keyboard, locking out all other windows.\n\n> [!WARNING] You **CANNOT** use this to make a secure lock screen.\n>\n> If you want to make a lock screen, use TYPE99MQS_Quickshell_Wayland99NWlSessionLock99TYPE.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Wayland/WlrLayer.json b/modules/Quickshell.Wayland/WlrLayer.json new file mode 100644 index 0000000..e6654a4 --- /dev/null +++ b/modules/Quickshell.Wayland/WlrLayer.json @@ -0,0 +1,21 @@ +{ + "name": "WlrLayer", + "module": "Quickshell.Wayland", + "type": "enum", + "description": "WlrLayershell layer.", + "details": "See TYPE99MQS_Quickshell_Wayland99NWlrLayershell99Vlayer99Tprop99TYPE.\n", + "variants": { + "Background": { + "details": "Below bottom\n" + }, + "Top": { + "details": "Commonly used for panels, app launchers, and docks.\nUsually renders over normal windows and below fullscreen windows.\n" + }, + "Overlay": { + "details": "Usually renders over fullscreen windows\n" + }, + "Bottom": { + "details": "Above background, usually below windows\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell.Wayland/WlrLayershell.json b/modules/Quickshell.Wayland/WlrLayershell.json new file mode 100644 index 0000000..237156e --- /dev/null +++ b/modules/Quickshell.Wayland/WlrLayershell.json @@ -0,0 +1,41 @@ +{ + "name": "WlrLayershell", + "module": "Quickshell.Wayland", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "PanelWindow" + }, + "description": "Wlroots layershell window", + "details": "Decorationless window that can be attached to the screen edges using the [zwlr_layer_shell_v1] protocol.\n\n#### Attached object\n`WlrLayershell` works as an attached object of TYPE99MQS_Quickshell99NPanelWindow99TYPE which you should use instead if you can,\nas it is platform independent.\n\n```qml\nPanelWindow {\n // When PanelWindow is backed with WlrLayershell this will work\n WlrLayershell.layer: WlrLayer.Bottom\n}\n```\n\nTo maintain platform compatibility you can dynamically set layershell specific properties.\n```qml\nPanelWindow {\n Component.onCompleted: {\n if (this.WlrLayershell != null) {\n this.WlrLayershell.layer = WlrLayer.Bottom;\n }\n }\n}\n```\n\n[zwlr_layer_shell_v1]: https://wayland.app/protocols/wlr-layer-shell-unstable-v1\n", + "properties": { + "keyboardFocus": { + "type": { + "type": "local", + "module": "Quickshell.Wayland", + "name": "WlrKeyboardFocus" + }, + "details": "The degree of keyboard focus taken. Defaults to `KeyboardFocus.None`.\n" + }, + "layer": { + "type": { + "type": "local", + "module": "Quickshell.Wayland", + "name": "WlrLayer" + }, + "details": "The shell layer the window sits in. Defaults to `WlrLayer.Top`.\n" + }, + "namespace": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Similar to the class property of windows. Can be used to identify the window to external tools.\n\nCannot be set after windowConnected.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell.Wayland/index.json b/modules/Quickshell.Wayland/index.json new file mode 100644 index 0000000..28c624f --- /dev/null +++ b/modules/Quickshell.Wayland/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Wayland", + "description": "Wayland specific Quickshell types", + "details": "" +} \ No newline at end of file diff --git a/modules/Quickshell/BoundComponent.json b/modules/Quickshell/BoundComponent.json new file mode 100644 index 0000000..30b304b --- /dev/null +++ b/modules/Quickshell/BoundComponent.json @@ -0,0 +1,74 @@ +{ + "name": "BoundComponent", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "description": "Component loader that allows setting initial properties.", + "details": "Component loader that allows setting initial properties, primarily useful for\nescaping cyclic dependency errors.\n\nProperties defined on the BoundComponent will be applied to its loaded component,\nincluding required properties, and will remain reactive. Functions created with\nthe names of signal handlers will also be attached to signals of the loaded component.\n\n```qml {filename=\"MyComponent.qml\"}\nMouseArea {\n required property color color;\n width: 100\n height: 100\n\n Rectangle {\n anchors.fill: parent\n color: parent.color\n }\n}\n```\n\n```qml\nBoundComponent {\n source: \"MyComponent.qml\"\n\n // this is the same as assigning to `color` on MyComponent if loaded normally.\n property color color: \"red\";\n\n // this will be triggered when the `clicked` signal from the MouseArea is sent.\n function onClicked() {\n color = \"blue\";\n }\n}\n```\n", + "properties": { + "implicitHeight": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "implicitWidth": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "item": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "The loaded component. Will be null until it has finished loading.\n", + "flags": [ + "readonly" + ] + }, + "bindValues": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If property values should be bound after they are initially set. Defaults to `true`.\n" + }, + "source": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The source to load, as a Url.\n" + }, + "sourceComponent": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "The source to load, as a Component.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/DesktopAction.json b/modules/Quickshell/DesktopAction.json new file mode 100644 index 0000000..07af8fb --- /dev/null +++ b/modules/Quickshell/DesktopAction.json @@ -0,0 +1,76 @@ +{ + "name": "DesktopAction", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": "An action of a TYPE99MQS_Quickshell99NDesktopEntry99TYPE.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "execString": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The raw `Exec` string from the desktop entry. You probably want TYPE99Vexecute99Tfunc99TYPE.\n", + "flags": [ + "readonly" + ] + }, + "icon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "execute", + "id": "execute", + "details": "Run the application. Currently ignores TYPE99MQS_Quickshell99NDesktopEntry99VrunInTerminal99Tprop99TYPE and field codes.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/DesktopEntries.json b/modules/Quickshell/DesktopEntries.json new file mode 100644 index 0000000..d74c3a8 --- /dev/null +++ b/modules/Quickshell/DesktopEntries.json @@ -0,0 +1,57 @@ +{ + "name": "DesktopEntries", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Desktop entry index.", + "details": "Index of desktop entries according to the [desktop entry specification].\n\nPrimarily useful for looking up icons and metadata from an id, as there is\ncurrently no mechanism for usage based sorting of entries and other launcher niceties.\n\n[desktop entry specification]: https://specifications.freedesktop.org/desktop-entry-spec/latest/\n", + "flags": [ + "singleton" + ], + "properties": { + "applications": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell", + "name": "DesktopEntry" + } + }, + "details": "All desktop entries of type Application that are not Hidden or NoDisplay.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "local", + "module": "Quickshell", + "name": "DesktopEntry" + }, + "name": "byId", + "id": "byId", + "details": "Look up a desktop entry by name. Includes NoDisplay entries. May return null.\n", + "params": [ + { + "name": "id", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/DesktopEntry.json b/modules/Quickshell/DesktopEntry.json new file mode 100644 index 0000000..f134ad0 --- /dev/null +++ b/modules/Quickshell/DesktopEntry.json @@ -0,0 +1,179 @@ +{ + "name": "DesktopEntry", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": "A desktop entry. See TYPE99MQS_Quickshell99NDesktopEntries99TYPE for details.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Name of the specific application, such as \"Firefox\".\n", + "flags": [ + "readonly" + ] + }, + "comment": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Long description of the application, such as \"View websites on the internet\". May be empty.\n", + "flags": [ + "readonly" + ] + }, + "execString": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The raw `Exec` string from the desktop entry. You probably want TYPE99Vexecute99Tfunc99TYPE.\n", + "flags": [ + "readonly" + ] + }, + "keywords": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "categories": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "runInTerminal": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the application should run in a terminal.\n", + "flags": [ + "readonly" + ] + }, + "workingDirectory": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The working directory to execute from.\n", + "flags": [ + "readonly" + ] + }, + "actions": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell", + "name": "DesktopAction" + } + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "icon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Name of the icon associated with this application. May be empty.\n", + "flags": [ + "readonly" + ] + }, + "genericName": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Short description of the application, such as \"Web Browser\". May be empty.\n", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "noDisplay": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If true, this application should not be displayed in menus and launchers.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "execute", + "id": "execute", + "details": "Run the application. Currently ignores TYPE99VrunInTerminal99Tprop99TYPE and field codes.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/EasingCurve.json b/modules/Quickshell/EasingCurve.json new file mode 100644 index 0000000..9f805b5 --- /dev/null +++ b/modules/Quickshell/EasingCurve.json @@ -0,0 +1,154 @@ +{ + "name": "EasingCurve", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Easing curve.", + "details": "Directly accessible easing curve as used in property animations.\n", + "properties": { + "curve": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "Easing curve settings. Works exactly the same as\n[PropertyAnimation.easing](https://doc.qt.io/qt-6/qml-qtquick-propertyanimation.html#easing-prop).\n" + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "name": "interpolate", + "id": "interpolate", + "details": "Interpolates between two values using the given X coordinate.\n", + "params": [ + { + "name": "x", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + { + "name": "a", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + { + "name": "b", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "point" + }, + "name": "interpolate", + "id": "interpolate", + "details": "Interpolates between two points using the given X coordinate.\n", + "params": [ + { + "name": "x", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + { + "name": "a", + "type": { + "type": "qt", + "module": "qml", + "name": "point" + } + }, + { + "name": "b", + "type": { + "type": "qt", + "module": "qml", + "name": "point" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "rect" + }, + "name": "interpolate", + "id": "interpolate", + "details": "Interpolates two rects using the given X coordinate.\n", + "params": [ + { + "name": "x", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + { + "name": "a", + "type": { + "type": "qt", + "module": "qml", + "name": "rect" + } + }, + { + "name": "b", + "type": { + "type": "qt", + "module": "qml", + "name": "rect" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "name": "valueAt", + "id": "valueAt", + "details": "Returns the Y value for the given X value on the curve\nfrom 0.0 to 1.0.\n", + "params": [ + { + "name": "x", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + } + ] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/Edges.json b/modules/Quickshell/Edges.json new file mode 100644 index 0000000..8b32dbb --- /dev/null +++ b/modules/Quickshell/Edges.json @@ -0,0 +1,24 @@ +{ + "name": "Edges", + "module": "Quickshell", + "type": "enum", + "description": "Top Left Right Bottom flags.", + "details": "Edge flags can be combined with the `|` operator.\n", + "variants": { + "Top": { + "details": null + }, + "Left": { + "details": null + }, + "None": { + "details": null + }, + "Bottom": { + "details": null + }, + "Right": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules/Quickshell/ElapsedTimer.json b/modules/Quickshell/ElapsedTimer.json new file mode 100644 index 0000000..a4c56bf --- /dev/null +++ b/modules/Quickshell/ElapsedTimer.json @@ -0,0 +1,83 @@ +{ + "name": "ElapsedTimer", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Measures time between events", + "details": "The ElapsedTimer measures time since its last restart, and is useful\nfor determining the time between events that don't supply it.\n", + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "name": "elapsed", + "id": "elapsed", + "details": "Return the number of seconds since the timer was last\nstarted or restarted, with nanosecond precision.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "name": "elapsedMs", + "id": "elapsedMs", + "details": "Return the number of milliseconds since the timer was last\nstarted or restarted.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "name": "elapsedNs", + "id": "elapsedNs", + "details": "Return the number of nanoseconds since the timer was last\nstarted or restarted.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "name": "restart", + "id": "restart", + "details": "Restart the timer, returning the number of seconds since\nthe timer was last started or restarted, with nanosecond precision.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "name": "restartMs", + "id": "restartMs", + "details": "Restart the timer, returning the number of milliseconds since\nthe timer was last started or restarted.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "name": "restartNs", + "id": "restartNs", + "details": "Restart the timer, returning the number of nanoseconds since\nthe timer was last started or restarted.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/ExclusionMode.json b/modules/Quickshell/ExclusionMode.json new file mode 100644 index 0000000..bc2b383 --- /dev/null +++ b/modules/Quickshell/ExclusionMode.json @@ -0,0 +1,18 @@ +{ + "name": "ExclusionMode", + "module": "Quickshell", + "type": "enum", + "description": "Panel exclusion mode", + "details": "See TYPE99MQS_Quickshell99NPanelWindow99VexclusionMode99Tprop99TYPE.\n", + "variants": { + "Auto": { + "details": "Decide the exclusion zone based on the window dimensions and anchors.\n\nWill attempt to reseve exactly enough space for the window and its margins if\nexactly 3 anchors are connected.\n" + }, + "Normal": { + "details": "Respect the exclusion zone of other shell layers and optionally set one\n" + }, + "Ignore": { + "details": "Ignore exclusion zones of other shell layers. You cannot set an exclusion zone in this mode.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell/FloatingWindow.json b/modules/Quickshell/FloatingWindow.json new file mode 100644 index 0000000..ec3ca0c --- /dev/null +++ b/modules/Quickshell/FloatingWindow.json @@ -0,0 +1,16 @@ +{ + "name": "FloatingWindow", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "QsWindow" + }, + "description": "Standard toplevel operating system window that looks like any other application.", + "details": "", + "properties": {}, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/Intersection.json b/modules/Quickshell/Intersection.json new file mode 100644 index 0000000..69de786 --- /dev/null +++ b/modules/Quickshell/Intersection.json @@ -0,0 +1,21 @@ +{ + "name": "Intersection", + "module": "Quickshell", + "type": "enum", + "description": "Intersection strategy for Regions.", + "details": "See TYPE99MQS_Quickshell99NRegion99Vintersection99Tprop99TYPE.\n", + "variants": { + "Intersect": { + "details": "Create an intersection of this region and the other, leaving only\nthe area covered by both. (opposite of `Xor`)\n" + }, + "Combine": { + "details": "Combine this region, leaving a union of this and the other region. (opposite of `Subtract`)\n" + }, + "Xor": { + "details": "Create an intersection of this region and the other, leaving only\nthe area not covered by both. (opposite of `Intersect`)\n" + }, + "Subtract": { + "details": "Subtract this region, cutting this region out of the other. (opposite of `Combine`)\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell/LazyLoader.json b/modules/Quickshell/LazyLoader.json new file mode 100644 index 0000000..4c8a292 --- /dev/null +++ b/modules/Quickshell/LazyLoader.json @@ -0,0 +1,71 @@ +{ + "name": "LazyLoader", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Asynchronous component loader.", + "details": "The LazyLoader can be used to prepare components that don't need to be\ncreated immediately, such as windows that aren't visible until triggered\nby another action. It works on creating the component in the gaps between\nframe rendering to prevent blocking the interface thread.\nIt can also be used to preserve memory by loading components only\nwhen you need them and unloading them afterward.\n\nNote that when reloading the UI due to changes, lazy loaders will always\nload synchronously so windows can be reused.\n\n#### Example\nThe following example creates a PopupWindow asynchronously as the bar loads.\nThis means the bar can be shown onscreen before the popup is ready, however\ntrying to show the popup before it has finished loading in the background\nwill cause the UI thread to block.\n\n```qml\nimport QtQuick\nimport QtQuick.Controls\nimport Quickshell\n\nShellRoot {\n PanelWindow {\n id: window\n height: 50\n\n anchors {\n bottom: true\n left: true\n right: true\n }\n\n LazyLoader {\n id: popupLoader\n\n // start loading immediately\n loading: true\n\n // this window will be loaded in the background during spare\n // frame time unless active is set to true, where it will be\n // loaded in the foreground\n PopupWindow {\n // position the popup above the button\n parentWindow: window\n relativeX: window.width / 2 - width / 2\n relativeY: -height\n\n // some heavy component here\n\n width: 200\n height: 200\n }\n }\n\n Button {\n anchors.centerIn: parent\n text: \"show popup\"\n\n // accessing popupLoader.item will force the loader to\n // finish loading on the UI thread if it isn't finished yet.\n onClicked: popupLoader.item.visible = !popupLoader.item.visible\n }\n }\n}\n```\n\n> [!WARNING] Components that internally load other components must explicitly\n> support asynchronous loading to avoid blocking.\n>\n> Notably, TYPE99MQS_Quickshell99NVariants99TYPE does not corrently support asynchronous\n> loading, meaning using it inside a LazyLoader will block similarly to not\n> having a loader to start with.\n\n> [!WARNING] LazyLoaders do not start loading before the first window is created,\n> meaning if you create all windows inside of lazy loaders, none of them will ever load.\n", + "properties": { + "item": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "The fully loaded item if the loader is TYPE99Vloading99Tprop99TYPE or TYPE99Vactive99Tprop99TYPE, or `null`\nif neither TYPE99Vloading99Tprop99TYPE nor TYPE99Vactive99Tprop99TYPE.\n\nNote that the item is owned by the LazyLoader, and destroying the LazyLoader\nwill destroy the item.\n\n> [!WARNING] If you access the `item` of a loader that is currently loading,\n> it will block as if you had set `active` to true immediately beforehand.\n>\n> You can instead set TYPE99Vloading99Tprop99TYPE and listen to TYPE99VactiveChanged99Tsignal99TYPE signal to\n> ensure loading happens asynchronously.\n", + "flags": [ + "readonly" + ] + }, + "source": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The URI to load the component from. Mutually exclusive to TYPE99Vcomponent99Tprop99TYPE.\n" + }, + "active": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the component is fully loaded.\n\nSetting this property to `true` will force the component to load to completion,\nblocking the UI, and setting it to `false` will destroy the component, requiring\nit to be loaded again.\n\nSee also: TYPE99VactiveAsync99Tprop99TYPE.\n" + }, + "loading": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the loader is actively loading.\n\nIf the component is not loaded, setting this property to true will start\nloading it asynchronously. If the component is already loaded, setting\nthis property has no effect.\n\nSee also: TYPE99VactiveAsync99Tprop99TYPE.\n" + }, + "activeAsync": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the component is fully loaded.\n\nSetting this property to true will asynchronously load the component similarly to\nTYPE99Vloading99Tprop99TYPE. Reading it or setting it to false will behanve\nthe same as TYPE99Vactive99Tprop99TYPE.\n" + }, + "component": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "The component to load. Mutually exclusive to TYPE99Vsource99Tprop99TYPE.\n", + "flags": [ + "default" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/ObjectModel.json b/modules/Quickshell/ObjectModel.json new file mode 100644 index 0000000..15643b5 --- /dev/null +++ b/modules/Quickshell/ObjectModel.json @@ -0,0 +1,146 @@ +{ + "name": "ObjectModel", + "module": "Quickshell", + "type": "class", + "super": { + "type": "unknown", + "module": "", + "name": "" + }, + "description": "View into a list of objets", + "details": "Typed view into a list of objects.\n\nAn ObjectModel works as a QML [Data Model], allowing efficient interaction with\ncomponents that act on models. It has a single role named `modelData`, to match the\nbehavior of lists.\nThe same information contained in the list model is available as a normal list\nvia the `values` property.\n\n#### Differences from a list\nUnlike with a list, the following property binding will never be updated when `model[3]` changes.\n```qml\n// will not update reactively\nproperty var foo: model[3]\n```\n\nYou can work around this limitation using the TYPE99Vvalues99Tprop99TYPE property of the model to view it as a list.\n```qml\n// will update reactively\nproperty var foo: model.values[3]\n```\n\n[Data Model]: https://doc.qt.io/qt-6/qtquick-modelviewsdata-modelview.html#qml-data-models\n", + "flags": [ + "uncreatable" + ], + "properties": { + "values": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": "The content of the object model, as a QML list.\nThe values of this property will always be of the type of the model.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "name": "indexOf", + "id": "indexOf", + "details": null, + "params": [ + { + "name": "object", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + } + ] + } + ], + "signals": { + "objectInsertedPost": { + "name": "objectInsertedPost", + "details": "Sent immediately after an object is inserted into the list.\n", + "params": [ + { + "name": "object", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "index", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + }, + "objectInsertedPre": { + "name": "objectInsertedPre", + "details": "Sent immediately before an object is inserted into the list.\n", + "params": [ + { + "name": "object", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "index", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + }, + "objectRemovedPost": { + "name": "objectRemovedPost", + "details": "Sent immediately after an object is removed from the list.\n", + "params": [ + { + "name": "object", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "index", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + }, + "objectRemovedPre": { + "name": "objectRemovedPre", + "details": "Sent immediately before an object is removed from the list.\n", + "params": [ + { + "name": "object", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "index", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/ObjectRepeater.json b/modules/Quickshell/ObjectRepeater.json new file mode 100644 index 0000000..ca6a9f2 --- /dev/null +++ b/modules/Quickshell/ObjectRepeater.json @@ -0,0 +1,35 @@ +{ + "name": "ObjectRepeater", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel" + }, + "description": "A Repeater / for loop / map for non Item derived objects.", + "details": "> [!CAUTION] Removed in favor of TYPE99MQT_qml_QtQml_Models99NInstantiator99TYPE\n\nThe ObjectRepeater creates instances of the provided delegate for every entry in the\ngiven model, similarly to a TYPE99MQT_qml_QtQuick99NRepeater99TYPE but for non visual types.\n", + "flags": ["uncreatable"], + "properties": { + "model": { + "type": { + "type": "qt", + "module": "qml", + "name": "variant" + }, + "details": "The model providing data to the ObjectRepeater.\n\nCurrently accepted model types are `list` lists, javascript arrays,\nand [QAbstractListModel] derived models, though only one column will be repeated\nfrom the latter.\n\nNote: TYPE99MQS_Quickshell99NObjectModel99TYPE is a [QAbstractListModel] with a single column.\n\n[QAbstractListModel]: https://doc.qt.io/qt-6/qabstractlistmodel.html\n" + }, + "delegate": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "The delegate component to repeat.\n\nThe delegate is given the same properties as in a Repeater, except `index` which\nis not currently implemented.\n\nIf the model is a `list` or javascript array, a `modelData` property will be\nexposed containing the entry from the model. If the model is a [QAbstractListModel],\nthe roles from the model will be exposed.\n\nNote: TYPE99MQS_Quickshell99NObjectModel99TYPE has a single role named `modelData` for compatibility with normal lists.\n\n[QAbstractListModel]: https://doc.qt.io/qt-6/qabstractlistmodel.html\n", + "flags": ["default"] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} diff --git a/modules/Quickshell/PanelWindow.json b/modules/Quickshell/PanelWindow.json new file mode 100644 index 0000000..80401a5 --- /dev/null +++ b/modules/Quickshell/PanelWindow.json @@ -0,0 +1,103 @@ +{ + "name": "PanelWindow", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "QsWindow" + }, + "description": "Decorationless window attached to screen edges by anchors.", + "details": "Decorationless window attached to screen edges by anchors.\n\n#### Example\nThe following snippet creates a white bar attached to the bottom of the screen.\n\n```qml\nPanelWindow {\n anchors {\n left: true\n bottom: true\n right: true\n }\n\n Text {\n anchors.centerIn: parent\n text: \"Hello!\"\n }\n}\n```\n", + "properties": { + "exclusiveZone": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The amount of space reserved for the shell layer relative to its anchors.\nSetting this property sets TYPE99VexclusionMode99Tprop99TYPE to `ExclusionMode.Normal`.\n\n> [!NOTE] Either 1 or 3 anchors are required for the zone to take effect.\n" + }, + "exclusionMode": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ExclusionMode" + }, + "details": "Defaults to `ExclusionMode.Auto`.\n" + }, + "margins": { + "type": { + "gadget": { + "left": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "bottom": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "right": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "top": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + }, + "details": "Offsets from the sides of the screen.\n\n> [!NOTE] Only applies to edges with anchors\n" + }, + "focusable": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the panel should accept keyboard focus. Defaults to false.\n\nNote: On Wayland this property corrosponds to TYPE99MQS_Quickshell_Wayland99NWlrLayershell99VkeyboardFocus99Tprop99TYPE.\n" + }, + "aboveWindows": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the panel should render above standard windows. Defaults to true.\n\nNote: On Wayland this property corrosponds to TYPE99MQS_Quickshell_Wayland99NWlrLayershell99Vlayer99Tprop99TYPE.\n" + }, + "anchors": { + "type": { + "gadget": { + "right": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "left": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "bottom": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "top": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + }, + "details": "Anchors attach a shell window to the sides of the screen.\nBy default all anchors are disabled to avoid blocking the entire screen due to a misconfiguration.\n\n> [!NOTE] When two opposite anchors are attached at the same time, the corrosponding dimension\n> (width or height) will be forced to equal the screen width/height.\n> Margins can be used to create anchored windows that are also disconnected from the monitor sides.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/PersistentProperties.json b/modules/Quickshell/PersistentProperties.json new file mode 100644 index 0000000..54beeca --- /dev/null +++ b/modules/Quickshell/PersistentProperties.json @@ -0,0 +1,27 @@ +{ + "name": "PersistentProperties", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Object that holds properties that can persist across a config reload.", + "details": "PersistentProperties holds properties declated in it across a reload, which is\noften useful for things like keeping expandable popups open and styling them.\n\nBelow is an example of using `PersistentProperties` to keep track of the state\nof an expandable panel. When the configuration is reloaded, the `expanderOpen` property\nwill be saved and the expandable panel will stay in the open/closed state.\n\n```qml\nPersistentProperties {\n id: persist\n reloadableId: \"persistedStates\"\n\n property bool expanderOpen: false\n}\n\nButton {\n id: expanderButton\n anchors.centerIn: parent\n text: \"toggle expander\"\n onClicked: persist.expanderOpen = !persist.expanderOpen\n}\n\nRectangle {\n anchors.top: expanderButton.bottom\n anchors.left: expanderButton.left\n anchors.right: expanderButton.right\n height: 100\n\n color: \"lightblue\"\n visible: persist.expanderOpen\n}\n```\n", + "properties": {}, + "functions": [], + "signals": { + "loaded": { + "name": "loaded", + "details": "Called every time the reload stage completes.\nWill be called every time, including when nothing was loaded from an old instance.\n", + "params": [] + }, + "reloaded": { + "name": "reloaded", + "details": "Called every time the properties are reloaded.\nWill not be called if no old instance was loaded.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/PopupAdjustment.json b/modules/Quickshell/PopupAdjustment.json new file mode 100644 index 0000000..0588352 --- /dev/null +++ b/modules/Quickshell/PopupAdjustment.json @@ -0,0 +1,42 @@ +{ + "name": "PopupAdjustment", + "module": "Quickshell", + "type": "enum", + "description": "Adjustment strategy for popups that do not fit on screen.", + "details": "Adjustment strategy for popups. See TYPE99MQS_Quickshell99NPopupAnchor99Vadjustment99Tprop99TYPE.\n\nAdjustment flags can be combined with the `|` operator.\n\n`Flip` will be applied first, then `Slide`, then `Resize`.\n", + "variants": { + "FlipY": { + "details": "If the Y axis is constrained, the popup will invert its vertical gravity if any.\n" + }, + "ResizeX": { + "details": "If the X axis is constrained, the width of the popup will be reduced to fit on screen.\n" + }, + "Resize": { + "details": "Alias for `ResizeX | ResizeY`\n" + }, + "ResizeY": { + "details": "If the Y axis is constrained, the height of the popup will be reduced to fit on screen.\n" + }, + "All": { + "details": "Alias for `Flip | Slide | Resize`.\n" + }, + "Slide": { + "details": "Alias for `SlideX | SlideY`.\n" + }, + "SlideX": { + "details": "If the X axis is constrained, the popup will slide along the X axis until it fits onscreen.\n" + }, + "SlideY": { + "details": "If the Y axis is constrained, the popup will slide along the Y axis until it fits onscreen.\n" + }, + "Flip": { + "details": "Alias for `FlipX | FlipY`.\n" + }, + "None": { + "details": null + }, + "FlipX": { + "details": "If the X axis is constrained, the popup will invert its horizontal gravity if any.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell/PopupAnchor.json b/modules/Quickshell/PopupAnchor.json new file mode 100644 index 0000000..79086f7 --- /dev/null +++ b/modules/Quickshell/PopupAnchor.json @@ -0,0 +1,89 @@ +{ + "name": "PopupAnchor", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Anchorpoint or positioner for popup windows.", + "details": "", + "flags": [ + "uncreatable" + ], + "properties": { + "edges": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "Edges" + }, + "details": "The point on the anchor rectangle the popup should anchor to.\nOpposing edges suchs as `Edges.Left | Edges.Right` are not allowed.\n\nDefaults to `Edges.Top | Edges.Left`.\n" + }, + "adjustment": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "PopupAdjustment" + }, + "details": "The strategy used to adjust the popup's position if it would otherwise not fit on screen,\nbased on the anchor TYPE99Vrect99Tprop99TYPE, preferred TYPE99Vedges99Tprop99TYPE, and TYPE99Vgravity99Tprop99TYPE.\n\nSee the documentation for TYPE99MQS_Quickshell99NPopupAdjustment99TYPE for details.\n" + }, + "gravity": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "Edges" + }, + "details": "The direction the popup should expand towards, relative to the anchorpoint.\nOpposing edges suchs as `Edges.Left | Edges.Right` are not allowed.\n\nDefaults to `Edges.Bottom | Edges.Right`.\n" + }, + "rect": { + "type": { + "gadget": { + "x": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "y": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "w": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "h": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "width": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "height": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + }, + "details": "The anchorpoints the popup will attach to. Which anchors will be used is\ndetermined by the TYPE99Vedges99Tprop99TYPE, TYPE99Vgravity99Tprop99TYPE, and TYPE99Vadjustment99Tprop99TYPE.\n\nIf you leave TYPE99Vedges99Tprop99TYPE, TYPE99Vgravity99Tprop99TYPE and TYPE99Vadjustment99Tprop99TYPE at their default values,\nsetting more than `x` and `y` does not matter.\n\n> [!NOTE] The anchor rect cannot be smaller than 1x1 pixels.\n" + }, + "window": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "The window to anchor / attach the popup to.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/PopupWindow.json b/modules/Quickshell/PopupWindow.json new file mode 100644 index 0000000..7e21aeb --- /dev/null +++ b/modules/Quickshell/PopupWindow.json @@ -0,0 +1,71 @@ +{ + "name": "PopupWindow", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "QsWindow" + }, + "description": "Popup window.", + "details": "Popup window that can display in a position relative to a floating\nor panel window.\n\n#### Example\nThe following snippet creates a panel with a popup centered over it.\n\n```qml\nPanelWindow {\n id: toplevel\n\n anchors {\n bottom: true\n left: true\n right: true\n }\n\n PopupWindow {\n parentWindow: toplevel\n relativeX: parentWindow.width / 2 - width / 2\n relativeY: parentWindow.height\n width: 500\n height: 500\n visible: true\n }\n}\n```\n", + "properties": { + "parentWindow": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "> [!CAUTION] Deprecated in favor of `anchor.window`.\n\nThe parent window of this popup.\n\nChanging this property reparents the popup.\n" + }, + "visible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is shown or hidden. Defaults to false.\n\nThe popup will not be shown until TYPE99Vanchor99Tprop99TYPE is valid, regardless of this property.\n" + }, + "anchor": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "PopupAnchor" + }, + "details": "The popup's anchor / positioner relative to another window. The popup will not be\nshown until it has a valid anchor relative to a window and TYPE99Vvisible99Tprop99TYPE is true.\n\nYou can set properties of the anchor like so:\n```qml\nPopupWindow {\n anchor.window: parentwindow\n // or\n anchor {\n window: parentwindow\n }\n}\n```\n", + "flags": [ + "readonly" + ] + }, + "relativeX": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "> [!CAUTION] Deprecated in favor of `anchor.rect.x`.\n\nThe X position of the popup relative to the parent window.\n" + }, + "relativeY": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "> [!CAUTION] Deprecated in favor of `anchor.rect.y`.\n\nThe Y position of the popup relative to the parent window.\n" + }, + "screen": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + }, + "details": "The screen that the window currently occupies.\n\nThis may be modified to move the window to the given screen.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} diff --git a/modules/Quickshell/QsMenuAnchor.json b/modules/Quickshell/QsMenuAnchor.json new file mode 100644 index 0000000..7faba2f --- /dev/null +++ b/modules/Quickshell/QsMenuAnchor.json @@ -0,0 +1,81 @@ +{ + "name": "QsMenuAnchor", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Display anchor for platform menus.", + "details": "", + "properties": { + "anchor": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "PopupAnchor" + }, + "details": "The menu's anchor / positioner relative to another window. The menu will not be\nshown until it has a valid anchor.\n\n> [!NOTE] *The following is subject to change and NOT a guarantee of future behavior.*\n>\n> A snapshot of the anchor at the time TYPE99Vopened99Tsignal99TYPE is emitted will be\n> used to position the menu. Additional changes to the anchor after this point\n> will not affect the placement of the menu.\n\nYou can set properties of the anchor like so:\n```qml\nQsMenuAnchor {\n anchor.window: parentwindow\n // or\n anchor {\n window: parentwindow\n }\n}\n```\n", + "flags": [ + "readonly" + ] + }, + "menu": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuHandle" + }, + "details": "The menu that should be displayed on this anchor.\n\nSee also: TYPE99MQS_Quickshell_Services_SystemTray99NSystemTrayItem99Vmenu99Tprop99TYPE.\n" + }, + "visible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the menu is currently open and visible.\n\nSee also: TYPE99Vopen99Tfunc99TYPE, TYPE99Vclose99Tfunc99TYPE.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "close", + "id": "close", + "details": "Close the open menu.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "open", + "id": "open", + "details": "Open the given menu on this menu Requires that TYPE99Vanchor99Tprop99TYPE is valid.\n", + "params": [] + } + ], + "signals": { + "closed": { + "name": "closed", + "details": "Sent when the menu is closed.\n", + "params": [] + }, + "opened": { + "name": "opened", + "details": "Sent when the menu is displayed onscreen which may be after TYPE99Vvisible99Tprop99TYPE\nbecomes true.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/QsMenuButtonType.json b/modules/Quickshell/QsMenuButtonType.json new file mode 100644 index 0000000..e76eb4b --- /dev/null +++ b/modules/Quickshell/QsMenuButtonType.json @@ -0,0 +1,50 @@ +{ + "name": "QsMenuButtonType", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Button type associated with a QsMenuEntry.", + "details": "See TYPE99MQS_Quickshell99NQsMenuEntry99VbuttonType99Tprop99TYPE.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuButtonType" + } + } + ] + } + ], + "signals": {}, + "variants": { + "None": { + "details": "This menu item does not have a checkbox or a radiobutton associated with it.\n" + }, + "CheckBox": { + "details": "This menu item should draw a checkbox.\n" + }, + "RadioButton": { + "details": "This menu item should draw a radiobutton.\n" + } + } +} \ No newline at end of file diff --git a/modules/Quickshell/QsMenuEntry.json b/modules/Quickshell/QsMenuEntry.json new file mode 100644 index 0000000..cf680df --- /dev/null +++ b/modules/Quickshell/QsMenuEntry.json @@ -0,0 +1,140 @@ +{ + "name": "QsMenuEntry", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuHandle" + }, + "description": null, + "details": null, + "flags": [ + "uncreatable" + ], + "properties": { + "enabled": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "hasChildren": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this menu item has children that can be accessed through a TYPE99MQS_Quickshell99NQsMenuOpener99TYPE.\n", + "flags": [ + "readonly" + ] + }, + "isSeparator": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this menu item should be rendered as a separator between other items.\n\nNo other properties have a meaningful value when TYPE99VisSeparator99Tprop99TYPE is true.\n", + "flags": [ + "readonly" + ] + }, + "buttonType": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuButtonType" + }, + "details": "If this menu item has an associated checkbox or radiobutton.\n", + "flags": [ + "readonly" + ] + }, + "icon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Url of the menu item's icon or `\"\"` if it doesn't have one.\n\nThis can be passed to [Image.source](https://doc.qt.io/qt-6/qml-qtquick-image.html#source-prop)\nas shown below.\n\n```qml\nImage {\n source: menuItem.icon\n // To get the best image quality, set the image source size to the same size\n // as the rendered image.\n sourceSize.width: width\n sourceSize.height: height\n}\n```\n", + "flags": [ + "readonly" + ] + }, + "checkState": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "The check state of the checkbox or radiobutton if applicable, as a\n[Qt.CheckState](https://doc.qt.io/qt-6/qt.html#CheckState-enum).\n", + "flags": [ + "readonly" + ] + }, + "text": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Text of the menu item.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "display", + "id": "display", + "details": "Display a platform menu at the given location relative to the parent window.\n", + "params": [ + { + "name": "parentWindow", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "relativeX", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + }, + { + "name": "relativeY", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + } + ], + "signals": { + "triggered": { + "name": "triggered", + "details": "Send a trigger/click signal to the menu entry.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/QsMenuHandle.json b/modules/Quickshell/QsMenuHandle.json new file mode 100644 index 0000000..309151d --- /dev/null +++ b/modules/Quickshell/QsMenuHandle.json @@ -0,0 +1,19 @@ +{ + "name": "QsMenuHandle", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Menu handle for QsMenuOpener", + "details": "See TYPE99MQS_Quickshell99NQsMenuOpener99TYPE.\n", + "flags": [ + "uncreatable" + ], + "properties": {}, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/QsMenuOpener.json b/modules/Quickshell/QsMenuOpener.json new file mode 100644 index 0000000..6c66941 --- /dev/null +++ b/modules/Quickshell/QsMenuOpener.json @@ -0,0 +1,41 @@ +{ + "name": "QsMenuOpener", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Provides access to children of a QsMenuEntry", + "details": "", + "properties": { + "menu": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuHandle" + }, + "details": "The menu to retrieve children from.\n" + }, + "children": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuEntry" + } + }, + "details": "The children of the given menu.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/QsWindow.json b/modules/Quickshell/QsWindow.json new file mode 100644 index 0000000..c71d246 --- /dev/null +++ b/modules/Quickshell/QsWindow.json @@ -0,0 +1,124 @@ +{ + "name": "QsWindow", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Base class of Quickshell windows", + "details": "Base class of Quickshell windows\n### Attached properties\n`QSWindow` can be used as an attached object of anything that subclasses TYPE99MQT_qml_QtQuick99NItem99TYPE.\nIt provides the following properties\n- `window` - the `QSWindow` object.\n- `contentItem` - the `contentItem` property of the window.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "mask": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "Region" + }, + "details": "The clickthrough mask. Defaults to null.\n\nIf non null then the clickable areas of the window will be determined by the provided region.\n\n```qml\nShellWindow {\n // The mask region is set to `rect`, meaning only `rect` is clickable.\n // All other clicks pass through the window to ones behind it.\n mask: Region { item: rect }\n\n Rectangle {\n id: rect\n\n anchors.centerIn: parent\n width: 100\n height: 100\n }\n}\n```\n\nIf the provided region's intersection mode is `Combine` (the default),\nthen the region will be used as is. Otherwise it will be applied on top of the window region.\n\nFor example, setting the intersection mode to `Xor` will invert the mask and make everything in\nthe mask region not clickable and pass through clicks inside it through the window.\n\n```qml\nShellWindow {\n // The mask region is set to `rect`, but the intersection mode is set to `Xor`.\n // This inverts the mask causing all clicks inside `rect` to be passed to the window\n // behind this one.\n mask: Region { item: rect; intersection: Intersection.Xor }\n\n Rectangle {\n id: rect\n\n anchors.centerIn: parent\n width: 100\n height: 100\n }\n}\n```\n" + }, + "height": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null + }, + "width": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null + }, + "windowTransform": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "Opaque property that will receive an update when factors that affect the window's position\nand transform changed.\n\nThis property is intended to be used to force a binding update,\nalong with map[To|From]Item (which is not reactive).\n", + "flags": [ + "readonly" + ] + }, + "contentItem": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "screen": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + }, + "details": "The screen that the window currently occupies.\n\nThis may be modified to move the window to the given screen.\n" + }, + "data": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": null, + "flags": [ + "default", + "readonly" + ] + }, + "visible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window should be shown or hidden. Defaults to true.\n" + }, + "color": { + "type": { + "type": "qt", + "module": "qml", + "name": "color" + }, + "details": "The background color of the window. Defaults to white.\n\n> [!WARNING] This seems to behave weirdly when using transparent colors on some systems.\n> Using a colored content item over a transparent window is the recommended way to work around this:\n> ```qml\n> ProxyWindow {\n> color: \"transparent\"\n> Rectangle {\n> anchors.fill: parent\n> color: \"#20ffffff\"\n>\n> // your content here\n> }\n> }\n> ```\n" + }, + "backingWindowVisible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is currently shown. You should generally prefer [visible](#prop.visible).\n\nThis property is useful for ensuring windows spawn in a specific order, and you should\nnot use it in place of [visible](#prop.visible).\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": { + "windowConnected": { + "name": "windowConnected", + "details": null, + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/Quickshell.json b/modules/Quickshell/Quickshell.json new file mode 100644 index 0000000..1a4f3ad --- /dev/null +++ b/modules/Quickshell/Quickshell.json @@ -0,0 +1,149 @@ +{ + "name": "Quickshell", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "singleton" + ], + "properties": { + "screens": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + } + }, + "details": "All currently connected screens.\n\nThis property updates as connected screens change.\n\n#### Reusing a window on every screen\n```qml\nShellRoot {\n Variants {\n // see Variants for details\n variants: Quickshell.screens\n PanelWindow {\n property var modelData\n screen: modelData\n }\n }\n}\n```\n\nThis creates an instance of your window once on every screen.\nAs screens are added or removed your window will be created or destroyed on those screens.\n", + "flags": [ + "readonly" + ] + }, + "watchFiles": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If true then the configuration will be reloaded whenever any files change.\nDefaults to true.\n" + }, + "processId": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Quickshell's process id.\n", + "flags": [ + "readonly" + ] + }, + "workingDirectory": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Quickshell's working directory. Defaults to whereever quickshell was launched from.\n" + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "variant" + }, + "name": "env", + "id": "env", + "details": "Returns the string value of an environment variable or null if it is not set.\n", + "params": [ + { + "name": "variable", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "iconPath", + "id": "iconPath", + "details": "Returns a string usable for a TYPE99MQT_qml_QtQuick99NImage99Vsource99Tprop99TYPE for a given system icon.\n", + "params": [ + { + "name": "icon", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "reload", + "id": "reload", + "details": "Reload the shell.\n\n`hard` - perform a hard reload. If this is false, Quickshell will attempt to reuse windows\nthat already exist. If true windows will be recreated.\n\nSee TYPE99MQS_Quickshell99NReloadable99TYPE for more information on what can be reloaded and how.\n", + "params": [ + { + "name": "hard", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + ] + } + ], + "signals": { + "reloadCompleted": { + "name": "reloadCompleted", + "details": "The reload sequence has completed successfully.\n", + "params": [] + }, + "reloadFailed": { + "name": "reloadFailed", + "details": "The reload sequence has failed.\n", + "params": [ + { + "name": "errorString", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + "lastWindowClosed": { + "name": "lastWindowClosed", + "details": "Sent when the last window is closed.\n\nTo make the application exit when the last window is closed run `Qt.quit()`.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/QuickshellSettings.json b/modules/Quickshell/QuickshellSettings.json new file mode 100644 index 0000000..e86e3c9 --- /dev/null +++ b/modules/Quickshell/QuickshellSettings.json @@ -0,0 +1,42 @@ +{ + "name": "QuickshellSettings", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Accessor for some options under the Quickshell type.", + "details": "", + "flags": [ + "uncreatable" + ], + "properties": { + "workingDirectory": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Quickshell's working directory. Defaults to whereever quickshell was launched from.\n" + }, + "watchFiles": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If true then the configuration will be reloaded whenever any files change.\nDefaults to true.\n" + } + }, + "functions": [], + "signals": { + "lastWindowClosed": { + "name": "lastWindowClosed", + "details": "Sent when the last window is closed.\n\nTo make the application exit when the last window is closed run `Qt.quit()`.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/Region.json b/modules/Quickshell/Region.json new file mode 100644 index 0000000..c240651 --- /dev/null +++ b/modules/Quickshell/Region.json @@ -0,0 +1,101 @@ +{ + "name": "Region", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A composable region used as a mask.", + "details": "See TYPE99MQS_Quickshell99NQsWindow99Vmask99Tprop99TYPE.\n", + "properties": { + "shape": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "RegionShape" + }, + "details": "Defaults to `Rect`.\n" + }, + "regions": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell", + "name": "Region" + } + }, + "details": "Regions to apply on top of this region.\n\nRegions can be nested to create a more complex region.\nFor example this will create a square region with a cutout in the middle.\n```qml\nRegion {\n width: 100; height: 100;\n\n Region {\n x: 50; y: 50;\n width: 50; height: 50;\n intersection: Intersection.Subtract\n }\n}\n```\n", + "flags": [ + "default", + "readonly" + ] + }, + "height": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Defaults to 0. Does nothing if TYPE99Vitem99Tprop99TYPE is set.\n" + }, + "item": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": "The item that determines the geometry of the region.\n`item` overrides TYPE99Vx99Tprop99TYPE, TYPE99Vy99Tprop99TYPE, TYPE99Vwidth99Tprop99TYPE and TYPE99Vheight99Tprop99TYPE.\n" + }, + "width": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Defaults to 0. Does nothing if TYPE99Vitem99Tprop99TYPE is set.\n" + }, + "intersection": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "Intersection" + }, + "details": "The way this region interacts with its parent region. Defaults to `Combine`.\n" + }, + "x": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Defaults to 0. Does nothing if TYPE99Vitem99Tprop99TYPE is set.\n" + }, + "y": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Defaults to 0. Does nothing if TYPE99Vitem99Tprop99TYPE is set.\n" + } + }, + "functions": [], + "signals": { + "childrenChanged": { + "name": "childrenChanged", + "details": null, + "params": [] + }, + "changed": { + "name": "changed", + "details": null, + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/RegionShape.json b/modules/Quickshell/RegionShape.json new file mode 100644 index 0000000..1d2f279 --- /dev/null +++ b/modules/Quickshell/RegionShape.json @@ -0,0 +1,15 @@ +{ + "name": "RegionShape", + "module": "Quickshell", + "type": "enum", + "description": "Shape of a Region.", + "details": "See TYPE99MQS_Quickshell99NRegion99Vshape99Tprop99TYPE.\n", + "variants": { + "Rect": { + "details": null + }, + "Ellipse": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules/Quickshell/Reloadable.json b/modules/Quickshell/Reloadable.json new file mode 100644 index 0000000..eb9c632 --- /dev/null +++ b/modules/Quickshell/Reloadable.json @@ -0,0 +1,28 @@ +{ + "name": "Reloadable", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "The base class of all types that can be reloaded.", + "details": "Reloadables will attempt to take specific state from previous config revisions if possible.\nSome examples are TYPE99MQS_Quickshell99NProxyWindowBase99TYPE and TYPE99MQS_Quickshell99NPersistentProperties99TYPE\n", + "flags": [ + "uncreatable" + ], + "properties": { + "reloadableId": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "An additional identifier that can be used to try to match a reloadable object to its\nprevious state.\n\nSimply keeping a stable identifier across config versions (saves) is\nenough to help the reloader figure out which object in the old revision corrosponds to\nthis object in the current revision, and facilitate smoother reloading.\n\nNote that identifiers are scoped, and will try to do the right thing in context.\nFor example if you have a TYPE99MQS_Quickshell99NVariants99TYPE wrapping an object with an identified element inside,\na scope is created at the variant level.\n\n```qml\nVariants {\n // multiple variants of the same object tree\n variants: [ { foo: 1 }, { foo: 2 } ]\n\n // any non `Reloadable` object\n QtObject {\n FloatingWindow {\n // this FloatingWindow will now be matched to the same one in the previous\n // widget tree for its variant. \"myFloatingWindow\" refers to both the variant in\n // `foo: 1` and `foo: 2` for each tree.\n reloadableId: \"myFloatingWindow\"\n\n // ...\n }\n }\n}\n```\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/Retainable.json b/modules/Quickshell/Retainable.json new file mode 100644 index 0000000..b59fa05 --- /dev/null +++ b/modules/Quickshell/Retainable.json @@ -0,0 +1,76 @@ +{ + "name": "Retainable", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Attached object for types that can have delayed destruction.", + "details": "Retainable works as an attached property that allows objects to be\nkept around (retained) after they would normally be destroyed, which\nis especially useful for things like exit transitions.\n\nAn object that is retainable will have TYPE99MQS_Quickshell99NRetainable99TYPE as an attached property.\nAll retainable objects will say that they are retainable on their respective\ntypeinfo pages.\n\n> [!NOTE] Working directly with TYPE99MQS_Quickshell99NRetainable99TYPE is often overly complicated and\n> error prone. For this reason TYPE99MQS_Quickshell99NRetainableLock99TYPE should\n> usually be used instead.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "retained": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the object is currently in a retained state.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "forceUnlock", + "id": "forceUnlock", + "details": "Forcibly remove all locks, destroying the object.\n\nTYPE99Vunlock99Tfunc99TYPE should usually be preferred.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "lock", + "id": "lock", + "details": "Hold a lock on the object so it cannot be destroyed.\n\nA counter is used to ensure you can lock the object from multiple places\nand it will not be unlocked until the same number of unlocks as locks have occurred.\n\n> [!WARNING] It is easy to forget to unlock a locked object.\n> Doing so will create what is effectively a memory leak.\n>\n> Using TYPE99MQS_Quickshell99NRetainableLock99TYPE is recommended as it will help\n> avoid this scenario and make misuse more obvious.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "unlock", + "id": "unlock", + "details": "Remove a lock on the object. See TYPE99Vlock99Tfunc99TYPE for more information.\n", + "params": [] + } + ], + "signals": { + "dropped": { + "name": "dropped", + "details": "This signal is sent when the object would normally be destroyed.\n\nIf all signal handlers return and no locks are in place, the object will be destroyed.\nIf at least one lock is present the object will be retained until all are removed.\n", + "params": [] + }, + "aboutToDestroy": { + "name": "aboutToDestroy", + "details": "This signal is sent immediately before the object is destroyed.\nAt this point destruction cannot be interrupted.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/RetainableLock.json b/modules/Quickshell/RetainableLock.json new file mode 100644 index 0000000..5b26447 --- /dev/null +++ b/modules/Quickshell/RetainableLock.json @@ -0,0 +1,55 @@ +{ + "name": "RetainableLock", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A helper for easily using Retainable.", + "details": "A RetainableLock provides extra safety and ease of use for locking\nTYPE99MQS_Quickshell99NRetainable99TYPE objects. A retainable object can be locked by multiple\nlocks at once, and each lock re-exposes relevant properties\nof the retained objects.\n\n#### Example\nThe code below will keep a retainable object alive for as long as the\nRetainableLock exists.\n\n```qml\nRetainableLock {\n object: aRetainableObject\n locked: true\n}\n```\n", + "properties": { + "retained": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the object is currently in a retained state.\n", + "flags": [ + "readonly" + ] + }, + "object": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "The object to lock. Must be TYPE99MQS_Quickshell99NRetainable99TYPE.\n" + }, + "locked": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the object should be locked.\n" + } + }, + "functions": [], + "signals": { + "dropped": { + "name": "dropped", + "details": "Rebroadcast of the object's TYPE99MQS_Quickshell99NRetainable99Vdropped99Tsignal99TYPE.\n", + "params": [] + }, + "aboutToDestroy": { + "name": "aboutToDestroy", + "details": "Rebroadcast of the object's TYPE99MQS_Quickshell99NRetainable99VaboutToDestroy99Tsignal99TYPE.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/Scope.json b/modules/Quickshell/Scope.json new file mode 100644 index 0000000..aa3057c --- /dev/null +++ b/modules/Quickshell/Scope.json @@ -0,0 +1,34 @@ +{ + "name": "Scope", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Scope that propagates reloads to child items in order.", + "details": "Convenience type equivalent to setting TYPE99MQS_Quickshell99NReloadable99VreloadableId99Tprop99TYPE for all children.\n\nNote that this does not work for visible TYPE99MQT_qml_QtQuick99NItem99TYPEs (all widgets).\n\n```qml\nShellRoot {\n Variants {\n variants: ...\n\n Scope {\n // everything in here behaves the same as if it was defined\n // directly in `Variants` reload-wise.\n }\n }\n}\n", + "properties": { + "children": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": null, + "flags": [ + "default", + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/ShellRoot.json b/modules/Quickshell/ShellRoot.json new file mode 100644 index 0000000..d75b2da --- /dev/null +++ b/modules/Quickshell/ShellRoot.json @@ -0,0 +1,28 @@ +{ + "name": "ShellRoot", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Scope" + }, + "description": "Root config element", + "details": "", + "properties": { + "settings": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "QuickshellSettings" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/ShellScreen.json b/modules/Quickshell/ShellScreen.json new file mode 100644 index 0000000..3a97194 --- /dev/null +++ b/modules/Quickshell/ShellScreen.json @@ -0,0 +1,142 @@ +{ + "name": "ShellScreen", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": "Monitor object useful for setting the monitor for a TYPE99MQS_Quickshell99NQsWindow99TYPE\nor querying information about the monitor.\n\n> [!WARNING] If the monitor is disconnected than any stored copies of its ShellMonitor will\n> be marked as dangling and all properties will return default values.\n> Reconnecting the monitor will not reconnect it to the ShellMonitor object.\n\nDue to some technical limitations, it was not possible to reuse the native qml TYPE99MQT_qml_QtQuick99NScreen99TYPE type.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "orientation": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "width": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "y": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "logicalPixelDensity": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The number of device-independent (scaled) pixels per millimeter.\n", + "flags": [ + "readonly" + ] + }, + "physicalPixelDensity": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The number of physical pixels per millimeter.\n", + "flags": [ + "readonly" + ] + }, + "x": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "devicePixelRatio": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The ratio between physical pixels and device-independent (scaled) pixels.\n", + "flags": [ + "readonly" + ] + }, + "height": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The name of the screen as seen by the operating system.\n\nUsually something like `DP-1`, `HDMI-1`, `eDP-1`.\n", + "flags": [ + "readonly" + ] + }, + "primatyOrientation": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/Singleton.json b/modules/Quickshell/Singleton.json new file mode 100644 index 0000000..9651e88 --- /dev/null +++ b/modules/Quickshell/Singleton.json @@ -0,0 +1,16 @@ +{ + "name": "Singleton", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Scope" + }, + "description": "The root component for reloadable singletons.", + "details": "All singletons should inherit from this type.\n", + "properties": {}, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/SystemClock.json b/modules/Quickshell/SystemClock.json new file mode 100644 index 0000000..b684342 --- /dev/null +++ b/modules/Quickshell/SystemClock.json @@ -0,0 +1,79 @@ +{ + "name": "SystemClock", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "System clock accessor.", + "details": "", + "flags": [ + "enum" + ], + "properties": { + "precision": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "SystemClock" + }, + "details": "The precision the clock should measure at. Defaults to `SystemClock.Seconds`.\n" + }, + "minutes": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The current minute, or 0 if TYPE99Vprecision99Tprop99TYPE is `SystemClock.Hours`.\n", + "flags": [ + "readonly" + ] + }, + "enabled": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the clock should update. Defaults to true.\n\nSetting enabled to false pauses the clock.\n" + }, + "hours": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The current hour.\n", + "flags": [ + "readonly" + ] + }, + "seconds": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The current second, or 0 if TYPE99Vprecision99Tprop99TYPE is `SystemClock.Hours` or `SystemClock.Minutes`.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": { + "Hours": { + "details": null + }, + "Seconds": { + "details": null + }, + "Minutes": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules/Quickshell/TransformWatcher.json b/modules/Quickshell/TransformWatcher.json new file mode 100644 index 0000000..170a2d1 --- /dev/null +++ b/modules/Quickshell/TransformWatcher.json @@ -0,0 +1,52 @@ +{ + "name": "TransformWatcher", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Monitor of all geometry changes between two objects.", + "details": "The TransformWatcher monitors all properties that affect the geometry\nof two TYPE99MQT_qml_QtQuick99NItem99TYPEs relative to eachother.\n\n> [!NOTE] The algorithm responsible for determining the relationship\n> between `a` and `b` is biased towards `a` being a parent of `b`,\n> or `a` being closer to the common parent of `a` and `b` than `b`.\n", + "properties": { + "a": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": null + }, + "commonParent": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": "Known common parent of both `a` and `b`. Defaults to `null`.\n\nThis property can be used to optimize the algorithm that figures out\nthe relationship between `a` and `b`. Setting it to something that is not\na common parent of both `a` and `b` will prevent the path from being determined\ncorrectly, and setting it to `null` will disable the optimization.\n" + }, + "b": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": null + }, + "transform": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "This property is updated whenever the geometry of any item in the path from `a` to `b` changes.\n\nIts value is undefined, and is intended to trigger an expression update.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/Variants.json b/modules/Quickshell/Variants.json new file mode 100644 index 0000000..9a1946c --- /dev/null +++ b/modules/Quickshell/Variants.json @@ -0,0 +1,57 @@ +{ + "name": "Variants", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Creates instances of a component based on a given model.", + "details": "Creates and destroys instances of the given component when the given property changes.\n\n`Variants` is similar to TYPE99MQT_qml_QtQuick99NRepeater99TYPE except it is for *non TYPE99MQT_qml_QtQuick99NItem99TYPE* objects, and acts as\na reload scope.\n\nEach non duplicate value passed to TYPE99Vmodel99Tprop99TYPE will create a new instance of\nTYPE99Vdelegate99Tprop99TYPE with a `modelData` property set to that value.\n\nSee TYPE99MQS_Quickshell99NQuickshell99Vscreens99Tprop99TYPE for an example of using `Variants` to create copies of a window per\nscreen.\n\n> [!WARNING] BUG: Variants currently fails to reload children if the variant set is changed as\n> it is instantiated. (usually due to a mutation during variant creation)\n", + "properties": { + "delegate": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "The component to create instances of.\n\nThe delegate should define a `modelData` property that will be popuplated with a value\nfrom the TYPE99Vmodel99Tprop99TYPE.\n", + "flags": [ + "default" + ] + }, + "instances": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": "Current instances of the delegate.\n", + "flags": [ + "readonly" + ] + }, + "model": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "variant" + } + }, + "details": "The list of sets of properties to create instances with.\nEach set creates an instance of the component, which are updated when the input sets update.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules/Quickshell/index.json b/modules/Quickshell/index.json new file mode 100644 index 0000000..64ddf82 --- /dev/null +++ b/modules/Quickshell/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell", + "description": "Core Quickshell types", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.DBusMenu/DBusMenuHandle.json b/modules_old/Quickshell.DBusMenu/DBusMenuHandle.json new file mode 100644 index 0000000..b76dcf5 --- /dev/null +++ b/modules_old/Quickshell.DBusMenu/DBusMenuHandle.json @@ -0,0 +1,31 @@ +{ + "name": "DBusMenuHandle", + "module": "Quickshell.DBusMenu", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Handle to a DBusMenu tree.", + "details": "Handle to a menu tree provided by a remote process.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "menu": { + "type": { + "type": "local", + "module": "Quickshell.DBusMenu", + "name": "DBusMenuItem" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.DBusMenu/DBusMenuItem.json b/modules_old/Quickshell.DBusMenu/DBusMenuItem.json new file mode 100644 index 0000000..57cbbc6 --- /dev/null +++ b/modules_old/Quickshell.DBusMenu/DBusMenuItem.json @@ -0,0 +1,49 @@ +{ + "name": "DBusMenuItem", + "module": "Quickshell.DBusMenu", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuEntry" + }, + "description": "Menu item shared by an external program.", + "details": "Menu item shared by an external program via the\n[DBusMenu specification](https://github.com/AyatanaIndicators/libdbusmenu/blob/master/libdbusmenu-glib/dbus-menu.xml).\n", + "flags": [ + "uncreatable" + ], + "properties": { + "menuHandle": { + "type": { + "type": "local", + "module": "Quickshell.DBusMenu", + "name": "DBusMenuHandle" + }, + "details": "Handle to the root of this menu.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "updateLayout", + "id": "updateLayout", + "details": "Refreshes the menu contents.\n\nUsually you shouldn't need to call this manually but some applications providing\nmenus do not update them correctly. Call this if menus don't update their state.\n\nThe {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"signal\" mname=\"layoutUpdated\" >}} signal will be sent when a response is received.\n", + "params": [] + } + ], + "signals": { + "layoutUpdated": { + "name": "layoutUpdated", + "details": null, + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.DBusMenu/index.json b/modules_old/Quickshell.DBusMenu/index.json new file mode 100644 index 0000000..a11eddc --- /dev/null +++ b/modules_old/Quickshell.DBusMenu/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.DBusMenu", + "description": "Types related to DBusMenu (used in system tray)", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Hyprland/GlobalShortcut.json b/modules_old/Quickshell.Hyprland/GlobalShortcut.json new file mode 100644 index 0000000..df09fad --- /dev/null +++ b/modules_old/Quickshell.Hyprland/GlobalShortcut.json @@ -0,0 +1,71 @@ +{ + "name": "GlobalShortcut", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Hyprland global shortcut.", + "details": "Global shortcut implemented with [hyprland_global_shortcuts_v1].\n\nYou can use this within hyprland as a global shortcut:\n```\nbind = , , global, :\n```\nSee [the wiki] for details.\n\n{{< callout type=\"warning\" >}}\n The shortcuts protocol does not allow duplicate appid + name pairs.\nWithin a single instance of quickshell this is handled internally, and both\nusers will be notified, but multiple instances of quickshell or XDPH may collide.\n\nIf that happens, whichever client that tries to register the shortcuts last will crash.\n{{< /callout >}}\n\n{{< callout type=\"info\" >}}\n This type does *not* use the xdg-desktop-portal global shortcuts protocol,\nas it is not fully functional without flatpak and would cause a considerably worse\nuser experience from other limitations. It will only work with Hyprland.\nNote that, as this type bypasses xdg-desktop-portal, XDPH is not required.\n{{< /callout >}}\n\n[hyprland_global_shortcuts_v1]: https://github.com/hyprwm/hyprland-protocols/blob/main/protocols/hyprland-global-shortcuts-v1.xml\n[the wiki]: https://wiki.hyprland.org/Configuring/Binds/#dbus-global-shortcuts\n", + "properties": { + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The name of the shortcut.\nYou cannot change this at runtime.\n" + }, + "appid": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The appid of the shortcut. Defaults to `quickshell`.\nYou cannot change this at runtime.\n\nIf you have more than one shortcut we recommend subclassing\nGlobalShortcut to set this.\n" + }, + "description": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The description of the shortcut that appears in `hyprctl globalshortcuts`.\nYou cannot change this at runtime.\n" + }, + "pressed": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the keybind is currently pressed.\n", + "flags": [ + "readonly" + ] + }, + "triggerDescription": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Have not seen this used ever, but included for completeness. Safe to ignore.\n" + } + }, + "functions": [], + "signals": { + "pressed": { + "name": "pressed", + "details": "Fired when the keybind is pressed.\n", + "params": [] + }, + "released": { + "name": "released", + "details": "Fired when the keybind is released.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Hyprland/Hyprland.json b/modules_old/Quickshell.Hyprland/Hyprland.json new file mode 100644 index 0000000..795e936 --- /dev/null +++ b/modules_old/Quickshell.Hyprland/Hyprland.json @@ -0,0 +1,163 @@ +{ + "name": "Hyprland", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "singleton" + ], + "properties": { + "focusedMonitor": { + "type": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandMonitor" + }, + "details": "The currently focused hyprland monitor. May be null.\n", + "flags": [ + "readonly" + ] + }, + "workspaces": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandWorkspace" + } + }, + "details": "All hyprland workspaces.\n", + "flags": [ + "readonly" + ] + }, + "monitors": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandMonitor" + } + }, + "details": "All hyprland monitors.\n", + "flags": [ + "readonly" + ] + }, + "requestSocketPath": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Path to the request socket (.socket.sock)\n", + "flags": [ + "readonly" + ] + }, + "eventSocketPath": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Path to the event socket (.socket2.sock)\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "dispatch", + "id": "dispatch", + "details": "Execute a hyprland [dispatcher](https://wiki.hyprland.org/Configuring/Dispatchers).\n", + "params": [ + { + "name": "request", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandMonitor" + }, + "name": "monitorFor", + "id": "monitorFor", + "details": "Get the HyprlandMonitor object that corrosponds to a quickshell screen.\n", + "params": [ + { + "name": "screen", + "type": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "refreshMonitors", + "id": "refreshMonitors", + "details": "Refresh monitor information.\n\nMany actions that will invalidate monitor state don't send events,\nso this function is available if required.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "refreshWorkspaces", + "id": "refreshWorkspaces", + "details": "Refresh workspace information.\n\nMany actions that will invalidate workspace state don't send events,\nso this function is available if required.\n", + "params": [] + } + ], + "signals": { + "rawEvent": { + "name": "rawEvent", + "details": "Emitted for every event that comes in through the hyprland event socket (socket2).\n\nSee [Hyprland Wiki: IPC](https://wiki.hyprland.org/IPC/) for a list of events.\n", + "params": [ + { + "name": "event", + "type": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandEvent" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Hyprland/HyprlandEvent.json b/modules_old/Quickshell.Hyprland/HyprlandEvent.json new file mode 100644 index 0000000..9815b3a --- /dev/null +++ b/modules_old/Quickshell.Hyprland/HyprlandEvent.json @@ -0,0 +1,68 @@ +{ + "name": "HyprlandEvent", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Live Hyprland IPC event.", + "details": "Live Hyprland IPC event. Holding this object after the\nsignal handler exits is undefined as the event instance\nis reused.\n\nEmitted by {{< qmltypelink type=\"local\" module=\"Quickshell.Hyprland\" name=\"Hyprland\" mtype=\"signal\" mname=\"rawEvent\" >}}.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The name of the event.\n\nSee [Hyprland Wiki: IPC](https://wiki.hyprland.org/IPC/) for a list of events.\n", + "flags": [ + "readonly" + ] + }, + "data": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The unparsed data of the event.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "name": "parse", + "id": "parse", + "details": "Parse this event with a known number of arguments.\n\nArgument count is required as some events can contain commas\nin the last argument, which can be ignored as long as the count is known.\n", + "params": [ + { + "name": "argumentCount", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Hyprland/HyprlandFocusGrab.json b/modules_old/Quickshell.Hyprland/HyprlandFocusGrab.json new file mode 100644 index 0000000..29e988f --- /dev/null +++ b/modules_old/Quickshell.Hyprland/HyprlandFocusGrab.json @@ -0,0 +1,44 @@ +{ + "name": "HyprlandFocusGrab", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Input focus grabber", + "details": "Object for managing input focus grabs via the [hyprland_focus_grab_v1]\nwayland protocol.\n\nWhen enabled, all of the windows listed in the `windows` property will\nreceive input normally, and will retain keyboard focus even if the mouse\nis moved off of them. When areas of the screen that are not part of a listed\nwindow are clicked or touched, the grab will become inactive and emit the\ncleared signal.\n\nThis is useful for implementing dismissal of popup type windows.\n```qml\nimport Quickshell\nimport Quickshell.Hyprland\nimport QtQuick.Controls\n\nShellRoot {\n FloatingWindow {\n id: window\n\n Button {\n anchors.centerIn: parent\n text: grab.active ? \"Remove exclusive focus\" : \"Take exclusive focus\"\n onClicked: grab.active = !grab.active\n }\n\n HyprlandFocusGrab {\n id: grab\n windows: [ window ]\n }\n }\n}\n```\n\n[hyprland_focus_grab_v1]: https://github.com/hyprwm/hyprland-protocols/blob/main/protocols/hyprland-global-shortcuts-v1.xml\n", + "properties": { + "windows": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": "The list of windows to whitelist for input.\n" + }, + "active": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the focus grab is active. Defaults to false.\n\nWhen set to true, an input grab will be created for the listed windows.\n\nThis property will change to false once the grab is dismissed.\nIt will not change to true until the grab begins, which requires\nat least one visible window.\n" + } + }, + "functions": [], + "signals": { + "cleared": { + "name": "cleared", + "details": "Sent whenever the compositor clears the focus grab.\n\nThis may be in response to all windows being removed\nfrom the list or simultaneously hidden, in addition to\na normal clear.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Hyprland/HyprlandMonitor.json b/modules_old/Quickshell.Hyprland/HyprlandMonitor.json new file mode 100644 index 0000000..f0b0e53 --- /dev/null +++ b/modules_old/Quickshell.Hyprland/HyprlandMonitor.json @@ -0,0 +1,130 @@ +{ + "name": "HyprlandMonitor", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "uncreatable" + ], + "properties": { + "y": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "height": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "x": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "lastIpcObject": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "Last json returned for this monitor, as a javascript object.\n\n{{< callout type=\"warning\" >}}\n This is *not* updated unless the monitor object is fetched again from\nHyprland. If you need a value that is subject to change and does not have a dedicated\nproperty, run {{< qmltypelink type=\"local\" module=\"Quickshell.Hyprland\" name=\"Hyprland\" mtype=\"func\" mname=\"refreshMonitors\" >}} and wait for this property to update.\n\n{{< /callout >}}", + "flags": [ + "readonly" + ] + }, + "activeWorkspace": { + "type": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandWorkspace" + }, + "details": "The currently active workspace on this monitor. May be null.\n", + "flags": [ + "readonly" + ] + }, + "description": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "scale": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "width": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Hyprland/HyprlandWorkspace.json b/modules_old/Quickshell.Hyprland/HyprlandWorkspace.json new file mode 100644 index 0000000..abf72cb --- /dev/null +++ b/modules_old/Quickshell.Hyprland/HyprlandWorkspace.json @@ -0,0 +1,64 @@ +{ + "name": "HyprlandWorkspace", + "module": "Quickshell.Hyprland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "uncreatable" + ], + "properties": { + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "lastIpcObject": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "Last json returned for this workspace, as a javascript object.\n\n{{< callout type=\"warning\" >}}\n This is *not* updated unless the workspace object is fetched again from\nHyprland. If you need a value that is subject to change and does not have a dedicated\nproperty, run {{< qmltypelink type=\"local\" module=\"Quickshell.Hyprland\" name=\"Hyprland\" mtype=\"func\" mname=\"refreshWorkspaces\" >}} and wait for this property to update.\n\n{{< /callout >}}", + "flags": [ + "readonly" + ] + }, + "monitor": { + "type": { + "type": "local", + "module": "Quickshell.Hyprland", + "name": "HyprlandMonitor" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Hyprland/index.json b/modules_old/Quickshell.Hyprland/index.json new file mode 100644 index 0000000..810dde5 --- /dev/null +++ b/modules_old/Quickshell.Hyprland/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Hyprland", + "description": "Hyprland specific Quickshell types", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Io/DataStream.json b/modules_old/Quickshell.Io/DataStream.json new file mode 100644 index 0000000..54fcc98 --- /dev/null +++ b/modules_old/Quickshell.Io/DataStream.json @@ -0,0 +1,28 @@ +{ + "name": "DataStream", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Data source that can be streamed into a parser.", + "details": "See also: {{< qmltypelink type=\"local\" module=\"Quickshell.Io\" name=\"DataStreamParser\" mtype=\"\" mname=\"\" >}}\n", + "flags": [ + "uncreatable" + ], + "properties": { + "parser": { + "type": { + "type": "local", + "module": "Quickshell.Io", + "name": "DataStreamParser" + }, + "details": "The parser to stream data from this source into.\nIf the parser is null no data will be read.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Io/DataStreamParser.json b/modules_old/Quickshell.Io/DataStreamParser.json new file mode 100644 index 0000000..7227432 --- /dev/null +++ b/modules_old/Quickshell.Io/DataStreamParser.json @@ -0,0 +1,34 @@ +{ + "name": "DataStreamParser", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Parser for streamed input data.", + "details": "See also: {{< qmltypelink type=\"local\" module=\"Quickshell.Io\" name=\"DataStream\" mtype=\"\" mname=\"\" >}}, {{< qmltypelink type=\"local\" module=\"Quickshell.Io\" name=\"SplitParser\" mtype=\"\" mname=\"\" >}}.\n", + "flags": [ + "uncreatable" + ], + "properties": {}, + "functions": [], + "signals": { + "read": { + "name": "read", + "details": "Emitted when data is read from the stream.\n", + "params": [ + { + "name": "data", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Io/Process.json b/modules_old/Quickshell.Io/Process.json new file mode 100644 index 0000000..ca93eba --- /dev/null +++ b/modules_old/Quickshell.Io/Process.json @@ -0,0 +1,172 @@ +{ + "name": "Process", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Child process.", + "details": "#### Example\n```qml\nQS_Quickshell00Io_Process {\n running: true\n command: [ \"some-command\", \"arg\" ]\n stdout: QS_Quickshell00Io_SplitParser {\n onRead: data => console.log(`line read: ${data}`)\n }\n}\n```\n", + "properties": { + "running": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the process is currently running. Defaults to false.\n\nSetting this property to true will start the process if command has at least\none element.\nSetting it to false will send SIGTERM. To immediately kill the process,\nuse {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"signal\" >}} with SIGKILL. The process will be killed when\nquickshell dies.\n\nIf you want to run the process in a loop, use the onRunningChanged signal handler\nto restart the process.\n```qml\nQS_Quickshell00Io_Process {\n running: true\n onRunningChanged: if (!running) running = true\n}\n```\n" + }, + "workingDirectory": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The working directory of the process. Defaults to [quickshell's working directory].\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n\n[quickshell's working directory]: ../../quickshell/quickshell#prop.workingDirectory\n" + }, + "manageLifetime": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the process should be killed when the Process object is destroyed or quickshell exits.\nDefaults to true.\n\nThis property may be changed while the process is running and will affect it.\n\n{{< callout type=\"warning\" >}}\n If set to false the process will still be killed if the quickshell config reloads.\nIt will not be killed if quickshell exits normally or crashes.\n\n{{< /callout >}}" + }, + "stderr": { + "type": { + "type": "local", + "module": "Quickshell.Io", + "name": "DataStreamParser" + }, + "details": "The parser for stderr. If the parser is null the process's stdout channel will be closed\nand no further data will be read, even if a new parser is attached.\n" + }, + "stdout": { + "type": { + "type": "local", + "module": "Quickshell.Io", + "name": "DataStreamParser" + }, + "details": "The parser for stdout. If the parser is null the process's stdout channel will be closed\nand no further data will be read, even if a new parser is attached.\n" + }, + "command": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": "The command to execute. Each argument is its own string, which means you don't have\nto deal with quoting anything.\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n\n{{< callout type=\"info\" >}}\n You can use `[\"sh\", \"-c\", ]` to execute your command with\nthe system shell.\n\n{{< /callout >}}" + }, + "environment": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "Environment of the executed process.\n\nThis is a javascript object (json). Environment variables can be added by setting\nthem to a string and removed by setting them to null (except when {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"clearEnvironment\" >}} is true,\nin which case this behavior is inverted, see {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"clearEnvironment\" >}} for details).\n\n\n```qml\nenvironment: ({\n ADDED: \"value\",\n REMOVED: null,\n \"i'm different\": \"value\",\n})\n```\n\n{{< callout type=\"info\" >}}\n You need to wrap the returned object in () otherwise it won't parse due to javascript ambiguity.\n{{< /callout >}}\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n" + }, + "clearEnvironment": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the process's environment should be cleared prior to applying {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"environment\" >}}.\nDefaults to false.\n\nIf true, all environment variables will be removed before the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"environment\" >}}\nobject is applied, meaning the variables listed will be the only ones visible to the process.\nThis changes the behavior of `null` to pass in the system value of the variable if present instead\nof removing it.\n\n```qml\nclearEnvironment: true\nenvironment: ({\n ADDED: \"value\",\n PASSED_FROM_SYSTEM: null,\n})\n```\n\nIf the process is already running changing this property will affect the next\nstarted process. If the property has been changed after starting a process it will\nreturn the new value, not the one for the currently running process.\n" + }, + "stdinEnabled": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If stdin is enabled. Defaults to false. If this property is false the process's stdin channel\nwill be closed and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"write\" >}} will do nothing, even if set back to true.\n" + }, + "processId": { + "type": { + "type": "qt", + "module": "qml", + "name": "variant" + }, + "details": "The process ID of the running process or `null` if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"running\" >}} is false.\n", + "flags": ["readonly"] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "signal", + "id": "signal", + "details": "Sends a signal to the process if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"running\" >}} is true, otherwise does nothing.\n", + "params": [ + { + "name": "signal", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "write", + "id": "write", + "details": "Writes to the process's stdin. Does nothing if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"running\" >}} is false.\n", + "params": [ + { + "name": "data", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + ], + "signals": { + "exited": { + "name": "exited", + "details": null, + "params": [ + { + "name": "exitCode", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + }, + { + "name": "exitStatus", + "type": { + "type": "unknown", + "module": "", + "name": "" + } + } + ] + }, + "started": { + "name": "started", + "details": null, + "params": [] + } + }, + "variants": {} +} diff --git a/modules_old/Quickshell.Io/Socket.json b/modules_old/Quickshell.Io/Socket.json new file mode 100644 index 0000000..c0569a7 --- /dev/null +++ b/modules_old/Quickshell.Io/Socket.json @@ -0,0 +1,80 @@ +{ + "name": "Socket", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell.Io", + "name": "DataStream" + }, + "description": "Unix socket listener.", + "details": "", + "properties": { + "connected": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "Returns if the socket is currently connected.\n\nWriting to this property will set the target connection state and will not\nupdate the property immediately. Setting the property to false will begin disconnecting\nthe socket, and setting it to true will begin connecting the socket if path is not empty.\n" + }, + "path": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The path to connect this socket to when {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"connected\" >}} is set to true.\n\nChanging this property will have no effect while the connection is active.\n" + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "flush", + "id": "flush", + "details": "Flush any queued writes to the socket.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "write", + "id": "write", + "details": "Write data to the socket. Does nothing if not connected.\n\nRemember to call flush after your last write.\n", + "params": [ + { + "name": "data", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + ], + "signals": { + "error": { + "name": "error", + "details": "This signal is sent whenever a socket error is encountered.\n", + "params": [ + { + "name": "error", + "type": { + "type": "unknown", + "module": "", + "name": "" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Io/SocketServer.json b/modules_old/Quickshell.Io/SocketServer.json new file mode 100644 index 0000000..d3e6f1f --- /dev/null +++ b/modules_old/Quickshell.Io/SocketServer.json @@ -0,0 +1,41 @@ +{ + "name": "SocketServer", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Unix socket server.", + "details": "#### Example\n```qml\nSocketServer {\n active: true\n path: \"/path/too/socket.sock\"\n handler: Socket {\n onConnectedChanged: {\n console.log(connected ? \"new connection!\" : \"connection dropped!\")\n }\n parser: SplitParser {\n onRead: message => console.log(`read message from socket: ${message}`)\n }\n }\n}\n```\n", + "properties": { + "active": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the socket server is currently active. Defaults to false.\n\nSetting this to false will destory all active connections and delete\nthe socket file on disk.\n\nIf path is empty setting this property will have no effect.\n" + }, + "handler": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "Connection handler component. Must creeate a {{< qmltypelink type=\"local\" module=\"Quickshell.Io\" name=\"Socket\" mtype=\"\" mname=\"\" >}}.\n\nThe created socket should not set {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"connected\" >}} or {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"path\" >}} or the incoming\nsocket connection will be dropped (they will be set by the socket server.)\nSetting `connected` to false on the created socket after connection will\nclose and delete it.\n" + }, + "path": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The path to create the socket server at.\n\nSetting this property while the server is active will have no effect.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Io/SplitParser.json b/modules_old/Quickshell.Io/SplitParser.json new file mode 100644 index 0000000..1e5b1d7 --- /dev/null +++ b/modules_old/Quickshell.Io/SplitParser.json @@ -0,0 +1,25 @@ +{ + "name": "SplitParser", + "module": "Quickshell.Io", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell.Io", + "name": "DataStreamParser" + }, + "description": "Parser for delimited data streams.", + "details": "Parser for delimited data streams. {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"read\" >}} is emitted once per delimited chunk of the stream.\n", + "properties": { + "splitMarker": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The delimiter for parsed data. May be multiple characters. Defaults to `\\n`.\n\nIf the delimiter is empty read lengths may be arbitrary (whatever is returned by the\nunderlying read call.)\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Io/index.json b/modules_old/Quickshell.Io/index.json new file mode 100644 index 0000000..42bbdc6 --- /dev/null +++ b/modules_old/Quickshell.Io/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Io", + "description": "Io types", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Service.SystemTray/SystemTray.json b/modules_old/Quickshell.Service.SystemTray/SystemTray.json new file mode 100644 index 0000000..00f7ce7 --- /dev/null +++ b/modules_old/Quickshell.Service.SystemTray/SystemTray.json @@ -0,0 +1,33 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "System tray", + "details": "Referencing the SystemTray singleton will make quickshell start tracking\nsystem tray contents, which are updated as the tray changes, and can be\naccessed via the `items` property.\n", + "flags": [ + "singleton" + ], + "properties": { + "items": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayItem" + } + }, + "details": "List of all system tray icons.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Service.SystemTray/SystemTrayCategory.json b/modules_old/Quickshell.Service.SystemTray/SystemTrayCategory.json new file mode 100644 index 0000000..ebbf935 --- /dev/null +++ b/modules_old/Quickshell.Service.SystemTray/SystemTrayCategory.json @@ -0,0 +1,16 @@ +{ + "type": "enum", + "description": null, + "details": null, + "variants": { + "ApplicationStatus": { + "details": "The fallback category for general applications or anything that does\nnot fit into a different category.\n" + }, + "SystemServices": { + "details": "System services such as IMEs or disk indexing.\n" + }, + "Hardware": { + "details": "Hardware controls like battery indicators or volume control.\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Service.SystemTray/SystemTrayItem.json b/modules_old/Quickshell.Service.SystemTray/SystemTrayItem.json new file mode 100644 index 0000000..d0941d0 --- /dev/null +++ b/modules_old/Quickshell.Service.SystemTray/SystemTrayItem.json @@ -0,0 +1,156 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "An item in the system tray.", + "details": "A system tray item, roughly conforming to the [kde/freedesktop spec]\n(there is no real spec, we just implemented whatever seemed to actually be used).\n\nThe associated context menu can be retrieved using a [SystemTrayMenuWatcher](../systemtraymenuwatcher).\n\n[kde/freedesktop spec]: https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/StatusNotifierItem/\n", + "flags": [ + "uncreatable" + ], + "properties": { + "onlyMenu": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this tray item only offers a menu and activation will do nothing.\n", + "flags": [ + "readonly" + ] + }, + "status": { + "type": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayStatus" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "A name unique to the application, such as its name.\n", + "flags": [ + "readonly" + ] + }, + "tooltipTitle": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "icon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Icon source string, usable as an Image source.\n", + "flags": [ + "readonly" + ] + }, + "title": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Text that describes the application.\n", + "flags": [ + "readonly" + ] + }, + "category": { + "type": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayCategory" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "tooltipDescription": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "activate", + "id": "activate)", + "details": "Primary activation action, generally triggered via a left click.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "scroll", + "id": "scroll(int_bool)", + "details": "Scroll action, such as changing volume on a mixer.\n", + "params": [ + { + "name": "delta", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + }, + { + "name": "horizontal", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "secondaryActivate", + "id": "secondaryActivate)", + "details": "Secondary activation action, generally triggered via a middle click.\n", + "params": [] + } + ], + "signals": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Service.SystemTray/SystemTrayMenuWatcher.json b/modules_old/Quickshell.Service.SystemTray/SystemTrayMenuWatcher.json new file mode 100644 index 0000000..c3766e1 --- /dev/null +++ b/modules_old/Quickshell.Service.SystemTray/SystemTrayMenuWatcher.json @@ -0,0 +1,33 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Accessor for SystemTrayItem menus.", + "details": "SystemTrayMenuWatcher provides access to the associated\n[DBusMenuItem](../../quickshell.dbusmenu/dbusmenuitem) for a tray item.\n", + "properties": { + "trayItem": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "The tray item to watch.\n" + }, + "menu": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "The menu associated with the tray item. Will be null if `trayItem` is null\nor has no associated menu.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Service.SystemTray/SystemTrayStatus.json b/modules_old/Quickshell.Service.SystemTray/SystemTrayStatus.json new file mode 100644 index 0000000..a03f53f --- /dev/null +++ b/modules_old/Quickshell.Service.SystemTray/SystemTrayStatus.json @@ -0,0 +1,16 @@ +{ + "type": "enum", + "description": null, + "details": null, + "variants": { + "NeedsAttention": { + "details": "An item that needs attention conveys very important information such as low battery.\n" + }, + "Passive": { + "details": "A passive item does not convey important information and can be considered idle. You may want to hide these.\n" + }, + "Active": { + "details": "An active item may have information more important than a passive one and you probably do not want to hide it.\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Service.SystemTray/index.json b/modules_old/Quickshell.Service.SystemTray/index.json new file mode 100644 index 0000000..18ee297 --- /dev/null +++ b/modules_old/Quickshell.Service.SystemTray/index.json @@ -0,0 +1,4 @@ +{ + "description": "Types for implementing a system tray", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Greetd/Greetd.json b/modules_old/Quickshell.Services.Greetd/Greetd.json new file mode 100644 index 0000000..8147252 --- /dev/null +++ b/modules_old/Quickshell.Services.Greetd/Greetd.json @@ -0,0 +1,291 @@ +{ + "name": "Greetd", + "module": "Quickshell.Services.Greetd", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": "This object provides access to a running greetd instance if present.\nWith it you can authenticate a user and launch a session.\n\nSee [the greetd wiki] for instructions on how to set up a graphical greeter.\n\n[the greetd wiki]: https://man.sr.ht/~kennylevinsen/greetd/#setting-up-greetd-with-gtkgreet\n", + "flags": [ + "singleton" + ], + "properties": { + "user": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The currently authenticating user.\n", + "flags": [ + "readonly" + ] + }, + "state": { + "type": { + "type": "local", + "module": "Quickshell.Services.Greetd", + "name": "GreetdState" + }, + "details": "The current state of the greetd connection.\n", + "flags": [ + "readonly" + ] + }, + "available": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the greetd socket is available.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "cancelSession", + "id": "cancelSession", + "details": "Cancel the active greetd session.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "createSession", + "id": "createSession", + "details": "Create a greetd session for the given user.\n", + "params": [ + { + "name": "user", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "launch", + "id": "launch", + "details": "Launch the session, exiting quickshell.\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"state\" >}} must be `GreetdState.ReadyToLaunch` to call this function.\n", + "params": [ + { + "name": "command", + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "launch", + "id": "launch", + "details": "Launch the session, exiting quickshell.\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"state\" >}} must be `GreetdState.ReadyToLaunch` to call this function.\n", + "params": [ + { + "name": "command", + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + }, + { + "name": "environment", + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "launch", + "id": "launch", + "details": "Launch the session, exiting quickshell if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"quit\" >}} is true.\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"state\" >}} must be `GreetdState.ReadyToLaunch` to call this function.\n\nThe {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"launched\" >}} signal can be used to perform an action after greetd has acknowledged\nthe desired session.\n\n{{< callout type=\"warning\" >}}\n Note that greetd expects the greeter to terminate as soon as possible\nafter setting a target session, and waiting too long may lead to unexpected behavior\nsuch as the greeter restarting.\n\nPerforming animations and such should be done *before* calling {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"launch\" >}}.\n\n{{< /callout >}}", + "params": [ + { + "name": "command", + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + }, + { + "name": "environment", + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + }, + { + "name": "quit", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "respond", + "id": "respond", + "details": "Respond to an authentication message.\n\nMay only be called in response to an {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"signal\" mname=\"authMessage\" >}} with `responseRequired` set to true.\n", + "params": [ + { + "name": "response", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + ], + "signals": { + "readyToLaunch": { + "name": "readyToLaunch", + "details": "Authentication has finished successfully and greetd can now launch a session.\n", + "params": [] + }, + "launched": { + "name": "launched", + "details": "Greetd has acknowledged the launch request and the greeter should quit as soon as possible.\n\nThis signal is sent right before quickshell exits automatically if the launch was not specifically\nrequested not to exit. You usually don't need to use this signal.\n", + "params": [] + }, + "authMessage": { + "name": "authMessage", + "details": "An authentication message has been sent by greetd.\n- `message` - the text of the message\n- `error` - if the message should be displayed as an error\n- `responseRequired` - if a response via `respond()` is required for this message\n- `echoResponse` - if the response should be displayed in clear text to the user\n\nNote that `error` and `responseRequired` are mutually exclusive.\n\nErrors are sent through `authMessage` when they are recoverable, such as a fingerprint scanner\nnot being able to read a finger correctly, while definite failures such as a bad password are\nsent through `authFailure`.\n", + "params": [ + { + "name": "message", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + { + "name": "error", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + }, + { + "name": "responseRequired", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + }, + { + "name": "echoResponse", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + ] + }, + "error": { + "name": "error", + "details": "Greetd has encountered an error.\n", + "params": [ + { + "name": "error", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + "authFailure": { + "name": "authFailure", + "details": "Authentication has failed an the session has terminated.\n\nUsually this is something like a timeout or a failed password entry.\n", + "params": [ + { + "name": "message", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Greetd/GreetdState.json b/modules_old/Quickshell.Services.Greetd/GreetdState.json new file mode 100644 index 0000000..29db930 --- /dev/null +++ b/modules_old/Quickshell.Services.Greetd/GreetdState.json @@ -0,0 +1,56 @@ +{ + "name": "GreetdState", + "module": "Quickshell.Services.Greetd", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "State of the Greetd connection.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Greetd\" name=\"Greetd\" mtype=\"prop\" mname=\"state\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Greetd", + "name": "GreetdState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Inactive": { + "details": null + }, + "Launching": { + "details": null + }, + "ReadyToLaunch": { + "details": null + }, + "Authenticating": { + "details": null + }, + "Launched": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Greetd/index.json b/modules_old/Quickshell.Services.Greetd/index.json new file mode 100644 index 0000000..6b90007 --- /dev/null +++ b/modules_old/Quickshell.Services.Greetd/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.Greetd", + "description": "Greetd integration", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Mpris/Mpris.json b/modules_old/Quickshell.Services.Mpris/Mpris.json new file mode 100644 index 0000000..86b392e --- /dev/null +++ b/modules_old/Quickshell.Services.Mpris/Mpris.json @@ -0,0 +1,36 @@ +{ + "name": "Mpris", + "module": "Quickshell.Services.Mpris", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "singleton" + ], + "properties": { + "players": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.Mpris", + "name": "MprisPlayer" + } + }, + "details": "All connected MPRIS players.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Mpris/MprisLoopState.json b/modules_old/Quickshell.Services.Mpris/MprisLoopState.json new file mode 100644 index 0000000..442121a --- /dev/null +++ b/modules_old/Quickshell.Services.Mpris/MprisLoopState.json @@ -0,0 +1,50 @@ +{ + "name": "MprisLoopState", + "module": "Quickshell.Services.Mpris", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Loop state of an MprisPlayer", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Mpris\" name=\"MprisPlayer\" mtype=\"prop\" mname=\"loopState\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "status", + "type": { + "type": "local", + "module": "Quickshell.Services.Mpris", + "name": "MprisLoopState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Playlist": { + "details": null + }, + "None": { + "details": null + }, + "Track": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Mpris/MprisPlaybackState.json b/modules_old/Quickshell.Services.Mpris/MprisPlaybackState.json new file mode 100644 index 0000000..87a4ff7 --- /dev/null +++ b/modules_old/Quickshell.Services.Mpris/MprisPlaybackState.json @@ -0,0 +1,50 @@ +{ + "name": "MprisPlaybackState", + "module": "Quickshell.Services.Mpris", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Playback state of an MprisPlayer", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Mpris\" name=\"MprisPlayer\" mtype=\"prop\" mname=\"playbackState\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "status", + "type": { + "type": "local", + "module": "Quickshell.Services.Mpris", + "name": "MprisPlaybackState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Stopped": { + "details": null + }, + "Paused": { + "details": null + }, + "Playing": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Mpris/MprisPlayer.json b/modules_old/Quickshell.Services.Mpris/MprisPlayer.json new file mode 100644 index 0000000..8443b0a --- /dev/null +++ b/modules_old/Quickshell.Services.Mpris/MprisPlayer.json @@ -0,0 +1,534 @@ +{ + "name": "MprisPlayer", + "module": "Quickshell.Services.Mpris", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A media player exposed over MPRIS.", + "details": "A media player exposed over MPRIS.\n\n{{< callout type=\"warning\" >}}\n Support for various functionality and general compliance to\nthe MPRIS specification varies wildly by player.\nAlways check the associated `canXyz` and `xyzSupported` properties if available.\n{{< /callout >}}\n\n{{< callout type=\"info\" >}}\n The TrackList and Playlist interfaces were not implemented as we could not\nfind any media players using them to test against.\n\n{{< /callout >}}", + "flags": [ + "uncreatable" + ], + "properties": { + "desktopEntry": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The name of the desktop entry for the media player, or an empty string if not provided.\n", + "flags": [ + "readonly" + ] + }, + "maxRate": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "supportedUriSchemes": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": "Uri schemes supported by {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"openUri\" >}}.\n", + "flags": [ + "readonly" + ] + }, + "fullscreen": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the player is currently shown in fullscreen.\n\nMay only be written to if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canSetFullscreen\" >}} is true.\n" + }, + "canGoNext": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "identity": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The human readable name of the media player.\n", + "flags": [ + "readonly" + ] + }, + "loopState": { + "type": { + "type": "local", + "module": "Quickshell.Services.Mpris", + "name": "MprisLoopState" + }, + "details": "The loop state of the media player, or `None` if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loopSupported\" >}} is false.\n\nMay only be written to if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canControl\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loopSupported\" >}} are true.\n" + }, + "canSetFullscreen": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canControl": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "positionSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "trackArtists": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": "The current track's artists, or an empty list if none were provided.\n", + "flags": [ + "readonly" + ] + }, + "volumeSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canPause": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "metadata": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "Metadata of the current track.\n\nA map of common properties is available [here](https://www.freedesktop.org/wiki/Specifications/mpris-spec/metadata).\nDo not count on any of them actually being present.\n\nNote that the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trackTitle\" >}}, {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trackAlbum\" >}}, {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trackAlbumArtist\" >}}, {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trackArtists\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trackArtUrl\" >}}\nproperties have extra logic to guard against bad players sending weird metadata, and should\nbe used over grabbing the properties directly from the metadata.\n", + "flags": [ + "readonly" + ] + }, + "trackAlbum": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The current track's album, or \"Unknown Album\" if none was provided.\n", + "flags": [ + "readonly" + ] + }, + "trackArtUrl": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The current track's art url, or `\"\"` if none was provided.\n", + "flags": [ + "readonly" + ] + }, + "supportedMimeTypes": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": "Mime types supported by {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"openUri\" >}}.\n", + "flags": [ + "readonly" + ] + }, + "lengthSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "position": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The current position in the playing track, as seconds, with millisecond precision,\nor `0` if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"positionSupported\" >}} is false.\n\nMay only be written to if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canSeek\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"positionSupported\" >}} are true.\n\n{{< callout type=\"warning\" >}}\n To avoid excessive property updates wasting CPU while `position` is not\nactively monitored, `position` usually will not update reactively, unless a nonlinear\nchange in position occurs, however reading it will always return the current position.\n\nIf you want to actively monitor the position, the simplest way it to emit the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"signal\" mname=\"positionChanged\" >}}\nsignal manually for the duration you are monitoring it, Using a {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"FrameAnimation\" mtype=\"\" mname=\"\" >}} if you need\nthe value to update smoothly, such as on a slider, or a {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Timer\" mtype=\"\" mname=\"\" >}} if not, as shown below.\n\n```qml {filename=\"Using a FrameAnimation\"}\nFrameAnimation {\n // only emit the signal when the position is actually changing.\n running: player.playbackState == MprisPlaybackState.Playing\n // emit the positionChanged signal every frame.\n onTriggered: player.positionChanged()\n}\n```\n\n```qml {filename=\"Using a Timer\"}\nTimer {\n // only emit the signal when the position is actually changing.\n running: player.playbackState == MprisPlaybackState.Playing\n // Make sure the position updates at least once per second.\n interval: 1000\n repeat: true\n // emit the positionChanged signal every second.\n onTriggered: player.positionChanged()\n}\n```\n\n{{< /callout >}}" + }, + "length": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The length of the playing track, as seconds, with millisecond precision,\nor the value of {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"position\" >}} if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"lengthSupported\" >}} is false.\n", + "flags": [ + "readonly" + ] + }, + "playbackState": { + "type": { + "type": "local", + "module": "Quickshell.Services.Mpris", + "name": "MprisPlaybackState" + }, + "details": "The playback state of the media player.\n\n- If {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canPlay\" >}} is false, you cannot assign the `Playing` state.\n- If {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canPause\" >}} is false, you cannot assign the `Paused` state.\n- If {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canControl\" >}} is false, you cannot assign the `Stopped` state.\n(or any of the others, though their repsective properties will also be false)\n" + }, + "volume": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The volume of the playing track from 0.0 to 1.0, or 1.0 if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"volumeSupported\" >}} is false.\n\nMay only be written to if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canControl\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"volumeSupported\" >}} are true.\n" + }, + "trackTitle": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The title of the current track, or \"Unknown Track\" if none was provided.\n", + "flags": [ + "readonly" + ] + }, + "canPlay": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canRaise": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canGoPrevious": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canTogglePlaying": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "rate": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The speed the song is playing at, as a multiplier.\n\nOnly values between {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"minRate\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"maxRate\" >}} (inclusive) may be written to the property.\nAdditionally, It is recommended that you only write common values such as `0.25`, `0.5`, `1.0`, `2.0`\nto the property, as media players are free to ignore the value, and are more likely to\naccept common ones.\n" + }, + "shuffle": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the play queue is currently being shuffled, or false if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"shuffleSupported\" >}} is false.\n\nMay only be written if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canControl\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"shuffleSupported\" >}} are true.\n" + }, + "loopSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "shuffleSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "trackAlbumArtist": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The current track's album artist, or \"Unknown Artist\" if none was provided.\n", + "flags": [ + "readonly" + ] + }, + "canSeek": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "canQuit": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "minRate": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "next", + "id": "next", + "details": "Play the next song.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canGoNext\" >}} is true.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "openUri", + "id": "openUri", + "details": "Open the given URI in the media player.\n\nMany players will silently ignore this, especially if the uri\ndoes not match {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"supportedUriSchemes\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"supportedMimeTypes\" >}}.\n", + "params": [ + { + "name": "uri", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "pause", + "id": "pause", + "details": "Equivalent to setting {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"playbackState\" >}} to `Paused`.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "play", + "id": "play", + "details": "Equivalent to setting {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"playbackState\" >}} to `Playing`.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "previous", + "id": "previous", + "details": "Play the previous song, or go back to the beginning of the current one.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canGoPrevious\" >}} is true.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "quit", + "id": "quit", + "details": "Quit the media player.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canQuit\" >}} is true.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "raise", + "id": "raise", + "details": "Bring the media player to the front of the window stack.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canRaise\" >}} is true.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "seek", + "id": "seek", + "details": "Change `position` by an offset.\n\nEven if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"positionSupported\" >}} is false and you cannot set `position`,\nthis function may work.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canSeek\" >}} is true.\n", + "params": [ + { + "name": "offset", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "stop", + "id": "stop", + "details": "Equivalent to setting {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"playbackState\" >}} to `Stopped`.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "togglePlaying", + "id": "togglePlaying", + "details": "Equivalent to calling {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"play\" >}} if not playing or {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"pause\" >}} if playing.\n\nMay only be called if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canTogglePlaying\" >}} is true, which is equivalent to\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"canPlay\" >}} or {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"canPause\" >}} depending on the current playback state.\n", + "params": [] + } + ], + "signals": { + "trackChanged": { + "name": "trackChanged", + "details": null, + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Mpris/index.json b/modules_old/Quickshell.Services.Mpris/index.json new file mode 100644 index 0000000..7bc13de --- /dev/null +++ b/modules_old/Quickshell.Services.Mpris/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.Mpris", + "description": "Mpris Service", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Notifications/Notification.json b/modules_old/Quickshell.Services.Notifications/Notification.json new file mode 100644 index 0000000..1924176 --- /dev/null +++ b/modules_old/Quickshell.Services.Notifications/Notification.json @@ -0,0 +1,236 @@ +{ + "name": "Notification", + "module": "Quickshell.Services.Notifications", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A notification emitted by a NotificationServer.", + "details": "A notification emitted by a NotificationServer.\n\n{{< callout type=\"info\" >}}\n This type is {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"\" mname=\"\" >}}. It\ncan be retained after destruction if necessary.\n\n{{< /callout >}}", + "flags": [ + "uncreatable" + ], + "properties": { + "hasActionIcons": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If actions associated with this notification have icons available.\n\nSee {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"NotificationAction\" mtype=\"prop\" mname=\"identifier\" >}} for details.\n", + "flags": [ + "readonly" + ] + }, + "urgency": { + "type": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "NotificationUrgency" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "appIcon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The sending application's icon. If none was provided, then the icon from an associated\ndesktop entry will be retrieved. If none was found then \"\".\n", + "flags": [ + "readonly" + ] + }, + "desktopEntry": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The name of the sender's desktop entry or \"\" if none was supplied.\n", + "flags": [ + "readonly" + ] + }, + "appName": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The sending application's name.\n", + "flags": [ + "readonly" + ] + }, + "body": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "resident": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If true, the notification will not be destroyed after an action is invoked.\n", + "flags": [ + "readonly" + ] + }, + "expireTimeout": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Time in seconds the notification should be valid for\n", + "flags": [ + "readonly" + ] + }, + "summary": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The image associated with this notification, or \"\" if none.\n", + "flags": [ + "readonly" + ] + }, + "lastGeneration": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this notification was carried over from the last generation\nwhen quickshell reloaded.\n\nNotifications from the last generation will only be emitted\nif {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"NotificationServer\" mtype=\"prop\" mname=\"keepOnReload\" >}} is true.\n", + "flags": [ + "readonly" + ] + }, + "hints": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "All hints sent by the client application as a javascript object.\nMany common hints are exposed via other properties.\n", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Id of the notification as given to the client.\n", + "flags": [ + "readonly" + ] + }, + "transient": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If true, the notification should skip any kind of persistence function like a notification area.\n", + "flags": [ + "readonly" + ] + }, + "actions": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "NotificationAction" + } + }, + "details": "Actions that can be taken for this notification.\n", + "flags": [ + "readonly" + ] + }, + "image": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "An image associated with the notification.\n\nThis image is often something like a profile picture in instant messaging applications.\n", + "flags": [ + "readonly" + ] + }, + "tracked": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the notification is tracked by the notification server.\n\nSetting this property to false is equivalent to calling {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"dismiss\" >}}.\n" + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "dismiss", + "id": "dismiss", + "details": "Destroy the notification and hint to the remote application that it was\nexplicitly closed by the user.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "expire", + "id": "expire", + "details": "Destroy the notification and hint to the remote application that it has\ntimed out an expired.\n", + "params": [] + } + ], + "signals": { + "closed": { + "name": "closed", + "details": "Sent when a notification has been closed.\n\nThe notification object will be destroyed as soon as all signal handlers exit.\n", + "params": [ + { + "name": "reason", + "type": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "NotificationCloseReason" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Notifications/NotificationAction.json b/modules_old/Quickshell.Services.Notifications/NotificationAction.json new file mode 100644 index 0000000..a62298b --- /dev/null +++ b/modules_old/Quickshell.Services.Notifications/NotificationAction.json @@ -0,0 +1,54 @@ +{ + "name": "NotificationAction", + "module": "Quickshell.Services.Notifications", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "An action associated with a Notification.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"prop\" mname=\"actions\" >}}.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "identifier": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The identifier of the action.\n\nWhen {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"prop\" mname=\"hasActionIcons\" >}} is true, this property will be an icon name.\nWhen it is false, this property is irrelevant.\n", + "flags": [ + "readonly" + ] + }, + "text": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The localized text that should be displayed on a button.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "invoke", + "id": "invoke", + "details": "Invoke the action. If {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"prop\" mname=\"resident\" >}} is false it will be dismissed.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Notifications/NotificationCloseReason.json b/modules_old/Quickshell.Services.Notifications/NotificationCloseReason.json new file mode 100644 index 0000000..13dadb9 --- /dev/null +++ b/modules_old/Quickshell.Services.Notifications/NotificationCloseReason.json @@ -0,0 +1,50 @@ +{ + "name": "NotificationCloseReason", + "module": "Quickshell.Services.Notifications", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "The reason a Notification was closed.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"signal\" mname=\"closed\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "NotificationCloseReason" + } + } + ] + } + ], + "signals": {}, + "variants": { + "CloseRequested": { + "details": "The remote application requested the notification be removed.\n" + }, + "Dismissed": { + "details": "The notification was explicitly dismissed by the user.\n" + }, + "Expired": { + "details": "The notification expired due to a timeout.\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Notifications/NotificationServer.json b/modules_old/Quickshell.Services.Notifications/NotificationServer.json new file mode 100644 index 0000000..b1ad9e8 --- /dev/null +++ b/modules_old/Quickshell.Services.Notifications/NotificationServer.json @@ -0,0 +1,133 @@ +{ + "name": "NotificationServer", + "module": "Quickshell.Services.Notifications", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Desktop Notifications Server.", + "details": "An implementation of the [Desktop Notifications Specification] for receiving notifications\nfrom external applications.\n\nThe server does not advertise most capabilities by default. See the individual properties for details.\n\n[Desktop Notifications Specification]: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html\n", + "properties": { + "persistenceSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the notification server should advertise that it can persist notifications in the background\nafter going offscreen. Defaults to false.\n" + }, + "imageSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the notification server should advertise that it supports images. Defaults to false.\n" + }, + "bodyImagesSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification body text should be advertised as supporting images as described in [the specification]\nDefaults to false.\n\nNote that returned notifications may still contain images if this property is false, as it is only a hint.\n\n[the specification]: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html#images\n" + }, + "trackedNotifications": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "Notification" + } + }, + "details": "All notifications currently tracked by the server.\n", + "flags": [ + "readonly" + ] + }, + "actionsSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification actions should be advertised as supported by the notification server. Defaults to false.\n" + }, + "bodyHyperlinksSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification body text should be advertised as supporting hyperlinks as described in [the specification]\nDefaults to false.\n\nNote that returned notifications may still contain hyperlinks if this property is false, as it is only a hint.\n\n[the specification]: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html#hyperlinks\n" + }, + "bodySupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification body text should be advertised as supported by the notification server.\nDefaults to true.\n\nNote that returned notifications are likely to return body text even if this property is false,\nas it is only a hint.\n" + }, + "extraHints": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": "Extra hints to expose to notification clients.\n" + }, + "keepOnReload": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notifications should be re-emitted when quickshell reloads. Defaults to true.\n\nThe {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"prop\" mname=\"lastGeneration\" >}} flag will be\nset on notifications from the prior generation for further filtering/handling.\n" + }, + "bodyMarkupSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification body text should be advertised as supporting markup as described in [the specification]\nDefaults to false.\n\nNote that returned notifications may still contain markup if this property is false,\nas it is only a hint. By default Text objects will try to render markup. To avoid this\nif any is sent, change {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Text\" mtype=\"prop\" mname=\"textFormat\" >}} to `PlainText`.\n" + }, + "actionIconsSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If notification actions should be advertised as supporting the display of icons. Defaults to false.\n" + } + }, + "functions": [], + "signals": { + "notification": { + "name": "notification", + "details": "Sent when a notification is received by the server.\n\nIf this notification should not be discarded, set its `tracked` property to true.\n", + "params": [ + { + "name": "notification", + "type": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "Notification" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Notifications/NotificationUrgency.json b/modules_old/Quickshell.Services.Notifications/NotificationUrgency.json new file mode 100644 index 0000000..929c5a3 --- /dev/null +++ b/modules_old/Quickshell.Services.Notifications/NotificationUrgency.json @@ -0,0 +1,50 @@ +{ + "name": "NotificationUrgency", + "module": "Quickshell.Services.Notifications", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "The urgency level of a Notification.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Notifications\" name=\"Notification\" mtype=\"prop\" mname=\"urgency\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Notifications", + "name": "NotificationUrgency" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Normal": { + "details": null + }, + "Low": { + "details": null + }, + "Critical": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Notifications/index.json b/modules_old/Quickshell.Services.Notifications/index.json new file mode 100644 index 0000000..9fc06a1 --- /dev/null +++ b/modules_old/Quickshell.Services.Notifications/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.Notifications", + "description": "Types for implementing a notification daemon", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pam/PamContext.json b/modules_old/Quickshell.Services.Pam/PamContext.json new file mode 100644 index 0000000..de602df --- /dev/null +++ b/modules_old/Quickshell.Services.Pam/PamContext.json @@ -0,0 +1,162 @@ +{ + "name": "PamContext", + "module": "Quickshell.Services.Pam", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Connection to pam.", + "details": "Connection to pam. See [the module documentation](./) for pam configuration advice.\n", + "properties": { + "configDirectory": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The pam configuration directory to use. Defaults to `/etc/pam.d`.\n\nThe configuration directory is resolved relative to the current file if not an absolute path.\n\nThis property may not be set while {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}} is true.\n" + }, + "responseVisible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the user's response should be visible. Only valid when {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"responseRequired\" >}} is true.\n", + "flags": ["readonly"] + }, + "user": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The user to authenticate as. If unset the current user will be used.\n\nThis property may not be set while {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}} is true.\n" + }, + "active": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the pam context is actively performing an authentication.\n\nSetting this value behaves exactly the same as calling {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"start\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"abort\" >}}.\n" + }, + "config": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The pam configuration to use. Defaults to \"login\".\n\nThe configuration should name a file inside {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"configDirectory\" >}}.\n\nThis property may not be set while {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}} is true.\n" + }, + "message": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The last message sent by pam.\n", + "flags": ["readonly"] + }, + "messageIsError": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the last message should be shown as an error.\n", + "flags": ["readonly"] + }, + "responseRequired": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If pam currently wants a response.\n\nResponses can be returned with the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"respond\" >}} function.\n", + "flags": ["readonly"] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "abort", + "id": "abort", + "details": "Abort a running authentication session.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "respond", + "id": "respond", + "details": "Respond to pam.\n\nMay not be called unless {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"responseRequired\" >}} is true.\n", + "params": [ + { + "name": "response", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "name": "start", + "id": "start", + "details": "Start an authentication session. Returns if the session was started successfully.\n", + "params": [] + } + ], + "signals": { + "pamMessage": { + "name": "pamMessage", + "details": "Emitted whenever pam sends a new message, after the change signals for\n`message`, `messageIsError`, and `responseRequired`.\n", + "params": [] + }, + "error": { + "name": "error", + "details": "Emitted if pam fails to perform authentication normally.\n\nA `completed(PamResult.Error)` will be emitted after this event.\n", + "params": [ + { + "name": "error", + "type": { + "type": "local", + "module": "Quickshell.Services.Pam", + "name": "PamError" + } + } + ] + }, + "completed": { + "name": "completed", + "details": "Emitted whenever authentication completes.\n", + "params": [ + { + "name": "result", + "type": { + "type": "local", + "module": "Quickshell.Services.Pam", + "name": "PamResult" + } + } + ] + } + }, + "variants": {} +} diff --git a/modules_old/Quickshell.Services.Pam/PamError.json b/modules_old/Quickshell.Services.Pam/PamError.json new file mode 100644 index 0000000..474d8b6 --- /dev/null +++ b/modules_old/Quickshell.Services.Pam/PamError.json @@ -0,0 +1,50 @@ +{ + "name": "PamError", + "module": "Quickshell.Services.Pam", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "An error that occurred during an authentication.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pam\" name=\"PamContext\" mtype=\"signal\" mname=\"error\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Pam", + "name": "PamError" + } + } + ] + } + ], + "signals": {}, + "variants": { + "TryAuthFailed": { + "details": "Failed to try to authenticate the user.\nThis is not the same as the user failing to authenticate.\n" + }, + "InternalError": { + "details": "An error occurred inside quickshell's pam interface.\n" + }, + "StartFailed": { + "details": "Failed to start the pam session.\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pam/PamResult.json b/modules_old/Quickshell.Services.Pam/PamResult.json new file mode 100644 index 0000000..e6cfa15 --- /dev/null +++ b/modules_old/Quickshell.Services.Pam/PamResult.json @@ -0,0 +1,53 @@ +{ + "name": "PamResult", + "module": "Quickshell.Services.Pam", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "The result of an authentication.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pam\" name=\"PamContext\" mtype=\"signal\" mname=\"completed\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Pam", + "name": "PamResult" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Success": { + "details": "Authentication was successful.\n" + }, + "Error": { + "details": "An error occurred while trying to authenticate.\n" + }, + "Failed": { + "details": "Authentication failed.\n" + }, + "MaxTries": { + "details": "The authentication method ran out of tries and should not be used again.\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pam/index.json b/modules_old/Quickshell.Services.Pam/index.json new file mode 100644 index 0000000..95c0d57 --- /dev/null +++ b/modules_old/Quickshell.Services.Pam/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.Pam", + "description": "Pam authentication", + "details": "## Writing pam configurations\n\nIt is a good idea to write pam configurations specifically for quickshell\nif you want to do anything other than match the default login flow.\n\nA good example of this is having a configuration that allows entering a password\nor fingerprint in any order.\n\n### Structure of a pam configuration.\nPam configuration files are a list of rules, each on a new line in the following form:\n```\n [options]\n```\n\nEach line runs in order.\n\nPamContext currently only works with the `auth` type, as other types require root\naccess to check.\n\n#### Control flags\nThe control flags you're likely to use are `required` and `sufficient`.\n- `required` rules must pass for authentication to succeed.\n- `sufficient` rules will bypass any remaining rules and return on success.\n\nNote that you should have at least one required rule or pam will fail with an undocumented error.\n\n#### Modules\nPam works with a set of modules that handle various authentication mechanisms.\nSome common ones include `pam_unix.so` which handles passwords and `pam_fprintd.so`\nwhich handles fingerprints.\n\nThese modules have options but none are required for basic functionality.\n\n### Examples\n\nAuthenticate with only a password:\n```\nauth required pam_unix.so\n```\n\nAuthenticate with only a fingerprint:\n```\nauth required pam_fprintd.so\n```\n\nTry to authenticate with a fingerprint first, but if that fails fall back to a password:\n```\nauth sufficient pam_fprintd.so\nauth required pam_unix.so\n```\n\nRequire both a fingerprint and a password:\n```\nauth required pam_fprintd.so\nauth required pam_unix.so\n```\n\n\nSee also: [Oracle: PAM configuration file](https://docs.oracle.com/cd/E19683-01/816-4883/pam-32/index.html)" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.PipeWire/Pipewire.json b/modules_old/Quickshell.Services.PipeWire/Pipewire.json new file mode 100644 index 0000000..c0b9af6 --- /dev/null +++ b/modules_old/Quickshell.Services.PipeWire/Pipewire.json @@ -0,0 +1,88 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Contains links to all pipewire objects.", + "details": "", + "flags": [ + "singleton" + ], + "properties": { + "defaultAudioSource": { + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwNode" + }, + "details": "The default audio source or `null`.\n", + "flags": [ + "readonly" + ] + }, + "linkGroups": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwLinkGroup" + } + }, + "details": "All pipewire link groups.\n", + "flags": [ + "readonly" + ] + }, + "nodes": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwNode" + } + }, + "details": "All pipewire nodes.\n", + "flags": [ + "readonly" + ] + }, + "defaultAudioSink": { + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwNode" + }, + "details": "The default audio sink or `null`.\n", + "flags": [ + "readonly" + ] + }, + "links": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwLink" + } + }, + "details": "All pipewire links.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.PipeWire/PwAudioChannel.json b/modules_old/Quickshell.Services.PipeWire/PwAudioChannel.json new file mode 100644 index 0000000..7181ed5 --- /dev/null +++ b/modules_old/Quickshell.Services.PipeWire/PwAudioChannel.json @@ -0,0 +1,162 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString(PwAudioChannel)", + "details": "Print a human readable representation of the given channel,\nincluding aux and custom channel ranges.\n", + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwAudioChannel" + } + } + ] + } + ], + "signals": {}, + "variants": { + "TopFrontLeftCenter": { + "details": null + }, + "FrontLeft": { + "details": null + }, + "TopSideRight": { + "details": null + }, + "TopFrontRightCenter": { + "details": null + }, + "TopFrontRight": { + "details": null + }, + "TopSideLeft": { + "details": null + }, + "SideRight": { + "details": null + }, + "Mono": { + "details": null + }, + "BottomCenter": { + "details": null + }, + "RearLeft": { + "details": null + }, + "BottomLeftCenter": { + "details": null + }, + "RearLeftCenter": { + "details": null + }, + "TopFrontCenter": { + "details": null + }, + "FrontRightWide": { + "details": null + }, + "NA": { + "details": null + }, + "FrontRightCenter": { + "details": null + }, + "FrontRightHigh": { + "details": null + }, + "LowFrequencyEffectsRight": { + "details": null + }, + "TopRearRight": { + "details": null + }, + "Unknown": { + "details": null + }, + "TopFrontLeft": { + "details": null + }, + "TopCenter": { + "details": null + }, + "CustomRangeStart": { + "details": "The end of the custom channel range.\n\nValues starting at CustomRangeStart are valid.\n" + }, + "FrontLeftCenter": { + "details": null + }, + "RearRightCenter": { + "details": null + }, + "TopRearCenter": { + "details": null + }, + "SideLeft": { + "details": null + }, + "FrontCenterHigh": { + "details": null + }, + "LowFrequencyEffects2": { + "details": null + }, + "AuxRangeEnd": { + "details": "The end of the aux channel range.\n\nValues between AuxRangeStart and AuxRangeEnd are valid.\n" + }, + "FrontLeftHigh": { + "details": null + }, + "TopRearLeft": { + "details": null + }, + "RearRight": { + "details": null + }, + "LowFrequencyEffectsLeft": { + "details": null + }, + "FrontRight": { + "details": null + }, + "RearCenter": { + "details": null + }, + "BottomRightCenter": { + "details": null + }, + "FrontLeftWide": { + "details": null + }, + "LowFrequencyEffects": { + "details": null + }, + "AuxRangeStart": { + "details": "The start of the aux channel range.\n\nValues between AuxRangeStart and AuxRangeEnd are valid.\n" + }, + "FrontCenter": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.PipeWire/PwLink.json b/modules_old/Quickshell.Services.PipeWire/PwLink.json new file mode 100644 index 0000000..c8e904e --- /dev/null +++ b/modules_old/Quickshell.Services.PipeWire/PwLink.json @@ -0,0 +1,62 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A connection between pipewire nodes.", + "details": "Note that there is one link per *channel* of a connection between nodes.\nYou usually want [PwLinkGroup](../pwlinkgroup).\n", + "flags": [ + "uncreatable" + ], + "properties": { + "state": { + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwLinkState" + }, + "details": "The current state of the link.\n\n**This property is invalid unless the link is [bound](../pwobjecttracker).**\n", + "flags": [ + "readonly" + ] + }, + "target": { + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwNode" + }, + "details": "The node that is *receiving* information. (the sink)\n", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The pipewire object id of the link.\n\nMainly useful for debugging. you can inspect the link directly\nwith `pw-cli i `.\n", + "flags": [ + "readonly" + ] + }, + "source": { + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwNode" + }, + "details": "The node that is *sending* information. (the source)\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.PipeWire/PwLinkGroup.json b/modules_old/Quickshell.Services.PipeWire/PwLinkGroup.json new file mode 100644 index 0000000..757c8df --- /dev/null +++ b/modules_old/Quickshell.Services.PipeWire/PwLinkGroup.json @@ -0,0 +1,51 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A group of connections between pipewire nodes.", + "details": "A group of connections between pipewire nodes, one per source->target pair.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "target": { + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwNode" + }, + "details": "The node that is *receiving* information. (the sink)\n", + "flags": [ + "readonly" + ] + }, + "source": { + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwNode" + }, + "details": "The node that is *sending* information. (the source)\n", + "flags": [ + "readonly" + ] + }, + "state": { + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwLinkState" + }, + "details": "The current state of the link group.\n\n**This property is invalid unless the link is [bound](../pwobjecttracker).**\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.PipeWire/PwLinkState.json b/modules_old/Quickshell.Services.PipeWire/PwLinkState.json new file mode 100644 index 0000000..4841be7 --- /dev/null +++ b/modules_old/Quickshell.Services.PipeWire/PwLinkState.json @@ -0,0 +1,60 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString(PwLinkState)", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwLinkState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Error": { + "details": null + }, + "Paused": { + "details": null + }, + "Allocating": { + "details": null + }, + "Active": { + "details": null + }, + "Init": { + "details": null + }, + "Negotiating": { + "details": null + }, + "Unlinked": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.PipeWire/PwNode.json b/modules_old/Quickshell.Services.PipeWire/PwNode.json new file mode 100644 index 0000000..9589483 --- /dev/null +++ b/modules_old/Quickshell.Services.PipeWire/PwNode.json @@ -0,0 +1,106 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A node in the pipewire connection graph.", + "details": "", + "flags": [ + "uncreatable" + ], + "properties": { + "nickname": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The node's nickname, corrosponding to the object's `node.nickname` property.\n\nMay be empty. Generally but not always more human readable than `description`.\n", + "flags": [ + "readonly" + ] + }, + "audio": { + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwNodeAudio" + }, + "details": "Extra information present only if the node sends or receives audio.\n", + "flags": [ + "readonly" + ] + }, + "isSink": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If `true`, then the node accepts audio input from other nodes,\nif `false` the node outputs audio to other nodes.\n", + "flags": [ + "readonly" + ] + }, + "isStream": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If `true` then the node is likely to be a program, if false it is liekly to be hardware.\n", + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The node's name, corrosponding to the object's `node.name` property.\n", + "flags": [ + "readonly" + ] + }, + "properties": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "The property set present on the node, as an object containing key-value pairs.\nYou can inspect this directly with `pw-cli i `.\n\nA few properties of note, which may or may not be present:\n- `application.name` - A suggested human readable name for the node.\n- `application.icon-name` - The name of an icon recommended to display for the node.\n- `media.name` - A description of the currently playing media.\n (more likely to be present than `media.title` and `media.artist`)\n- `media.title` - The title of the currently playing media.\n- `media.artist` - The artist of the currently playing media.\n\n**This property is invalid unless the node is [bound](../pwobjecttracker).**\n", + "flags": [ + "readonly" + ] + }, + "description": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The node's description, corrosponding to the object's `node.description` property.\n\nMay be empty. Generally more human readable than `name`.\n", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The pipewire object id of the node.\n\nMainly useful for debugging. you can inspect the node directly\nwith `pw-cli i `.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.PipeWire/PwNodeAudio.json b/modules_old/Quickshell.Services.PipeWire/PwNodeAudio.json new file mode 100644 index 0000000..4db62bd --- /dev/null +++ b/modules_old/Quickshell.Services.PipeWire/PwNodeAudio.json @@ -0,0 +1,63 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Audio specific properties of pipewire nodes.", + "details": "", + "flags": [ + "uncreatable" + ], + "properties": { + "volume": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The average volume over all channels of the node.\nSetting this property modifies the volume of all channels proportionately.\n\n**This property is invalid unless the node is [bound](../pwobjecttracker).**\n" + }, + "channels": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwAudioChannel" + } + }, + "details": "The audio channels present on the node.\n\n**This property is invalid unless the node is [bound](../pwobjecttracker).**\n", + "flags": [ + "readonly" + ] + }, + "muted": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the node is currently muted. Setting this property changes the mute state.\n\n**This property is invalid unless the node is [bound](../pwobjecttracker).**\n" + }, + "volumes": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + "details": "The volumes of each audio channel individually. Each entry corrosponds to\nthe channel at the same index in `channels`. `volumes` and `channels` will always be\nthe same length.\n\n**This property is invalid unless the node is [bound](../pwobjecttracker).**\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.PipeWire/PwNodeLinkTracker.json b/modules_old/Quickshell.Services.PipeWire/PwNodeLinkTracker.json new file mode 100644 index 0000000..300b929 --- /dev/null +++ b/modules_old/Quickshell.Services.PipeWire/PwNodeLinkTracker.json @@ -0,0 +1,39 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Tracks all link connections to a given node.", + "details": "", + "properties": { + "linkGroups": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwLinkGroup" + } + }, + "details": "Link groups connected to the given node.\n\nIf the node is a sink, links which target the node will be tracked.\nIf the node is a source, links which source the node will be tracked.\n", + "flags": [ + "readonly" + ] + }, + "node": { + "type": { + "type": "local", + "module": "Quickshell.Services.PipeWire", + "name": "PwNode" + }, + "details": "The node to track connections to.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.PipeWire/PwObjectTracker.json b/modules_old/Quickshell.Services.PipeWire/PwObjectTracker.json new file mode 100644 index 0000000..8e239a7 --- /dev/null +++ b/modules_old/Quickshell.Services.PipeWire/PwObjectTracker.json @@ -0,0 +1,28 @@ +{ + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Binds pipewire objects.", + "details": "If the object list of at least one PwObjectTracker contains a given pipewire object,\nit will become *bound* and you will be able to interact with bound-only properties.\n", + "properties": { + "objects": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": "The list of objects to bind.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.PipeWire/index.json b/modules_old/Quickshell.Services.PipeWire/index.json new file mode 100644 index 0000000..e0515ab --- /dev/null +++ b/modules_old/Quickshell.Services.PipeWire/index.json @@ -0,0 +1,4 @@ +{ + "description": "Pipewire API", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pipewire/Pipewire.json b/modules_old/Quickshell.Services.Pipewire/Pipewire.json new file mode 100644 index 0000000..a06b3fa --- /dev/null +++ b/modules_old/Quickshell.Services.Pipewire/Pipewire.json @@ -0,0 +1,90 @@ +{ + "name": "Pipewire", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Contains links to all pipewire objects.", + "details": "", + "flags": [ + "singleton" + ], + "properties": { + "nodes": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + } + }, + "details": "All pipewire nodes.\n", + "flags": [ + "readonly" + ] + }, + "defaultAudioSource": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The default audio source or `null`.\n", + "flags": [ + "readonly" + ] + }, + "defaultAudioSink": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The default audio sink or `null`.\n", + "flags": [ + "readonly" + ] + }, + "linkGroups": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLinkGroup" + } + }, + "details": "All pipewire link groups.\n", + "flags": [ + "readonly" + ] + }, + "links": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLink" + } + }, + "details": "All pipewire links.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pipewire/PwAudioChannel.json b/modules_old/Quickshell.Services.Pipewire/PwAudioChannel.json new file mode 100644 index 0000000..9c050a4 --- /dev/null +++ b/modules_old/Quickshell.Services.Pipewire/PwAudioChannel.json @@ -0,0 +1,164 @@ +{ + "name": "PwAudioChannel", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Audio channel of a pipewire node.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pipewire\" name=\"PwNodeAudio\" mtype=\"prop\" mname=\"channels\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": "Print a human readable representation of the given channel,\nincluding aux and custom channel ranges.\n", + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwAudioChannel" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Unknown": { + "details": null + }, + "FrontLeftWide": { + "details": null + }, + "TopSideLeft": { + "details": null + }, + "FrontRightWide": { + "details": null + }, + "FrontLeft": { + "details": null + }, + "TopFrontCenter": { + "details": null + }, + "LowFrequencyEffects2": { + "details": null + }, + "TopRearLeft": { + "details": null + }, + "BottomRightCenter": { + "details": null + }, + "RearLeft": { + "details": null + }, + "AuxRangeStart": { + "details": "The start of the aux channel range.\n\nValues between AuxRangeStart and AuxRangeEnd are valid.\n" + }, + "LowFrequencyEffectsLeft": { + "details": null + }, + "RearCenter": { + "details": null + }, + "Mono": { + "details": null + }, + "CustomRangeStart": { + "details": "The end of the custom channel range.\n\nValues starting at CustomRangeStart are valid.\n" + }, + "SideLeft": { + "details": null + }, + "TopSideRight": { + "details": null + }, + "TopFrontRight": { + "details": null + }, + "TopCenter": { + "details": null + }, + "FrontRightCenter": { + "details": null + }, + "TopRearCenter": { + "details": null + }, + "FrontLeftCenter": { + "details": null + }, + "TopFrontLeft": { + "details": null + }, + "BottomLeftCenter": { + "details": null + }, + "TopFrontRightCenter": { + "details": null + }, + "LowFrequencyEffectsRight": { + "details": null + }, + "SideRight": { + "details": null + }, + "FrontCenter": { + "details": null + }, + "RearRightCenter": { + "details": null + }, + "TopFrontLeftCenter": { + "details": null + }, + "AuxRangeEnd": { + "details": "The end of the aux channel range.\n\nValues between AuxRangeStart and AuxRangeEnd are valid.\n" + }, + "TopRearRight": { + "details": null + }, + "FrontLeftHigh": { + "details": null + }, + "NA": { + "details": null + }, + "LowFrequencyEffects": { + "details": null + }, + "BottomCenter": { + "details": null + }, + "FrontRightHigh": { + "details": null + }, + "FrontCenterHigh": { + "details": null + }, + "FrontRight": { + "details": null + }, + "RearRight": { + "details": null + }, + "RearLeftCenter": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pipewire/PwLink.json b/modules_old/Quickshell.Services.Pipewire/PwLink.json new file mode 100644 index 0000000..743e175 --- /dev/null +++ b/modules_old/Quickshell.Services.Pipewire/PwLink.json @@ -0,0 +1,64 @@ +{ + "name": "PwLink", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A connection between pipewire nodes.", + "details": "Note that there is one link per *channel* of a connection between nodes.\nYou usually want {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pipewire\" name=\"PwLinkGroup\" mtype=\"\" mname=\"\" >}}.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "target": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The node that is *receiving* information. (the sink)\n", + "flags": [ + "readonly" + ] + }, + "state": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLinkState" + }, + "details": "The current state of the link.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The pipewire object id of the link.\n\nMainly useful for debugging. you can inspect the link directly\nwith `pw-cli i `.\n", + "flags": [ + "readonly" + ] + }, + "source": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The node that is *sending* information. (the source)\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pipewire/PwLinkGroup.json b/modules_old/Quickshell.Services.Pipewire/PwLinkGroup.json new file mode 100644 index 0000000..00a4e61 --- /dev/null +++ b/modules_old/Quickshell.Services.Pipewire/PwLinkGroup.json @@ -0,0 +1,53 @@ +{ + "name": "PwLinkGroup", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A group of connections between pipewire nodes.", + "details": "A group of connections between pipewire nodes, one per source->target pair.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "state": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLinkState" + }, + "details": "The current state of the link group.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}", + "flags": [ + "readonly" + ] + }, + "target": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The node that is *receiving* information. (the sink)\n", + "flags": [ + "readonly" + ] + }, + "source": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The node that is *sending* information. (the source)\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pipewire/PwLinkState.json b/modules_old/Quickshell.Services.Pipewire/PwLinkState.json new file mode 100644 index 0000000..db1aeea --- /dev/null +++ b/modules_old/Quickshell.Services.Pipewire/PwLinkState.json @@ -0,0 +1,62 @@ +{ + "name": "PwLinkState", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "State of a pipewire link.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pipewire\" name=\"PwLink\" mtype=\"prop\" mname=\"state\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLinkState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Unlinked": { + "details": null + }, + "Paused": { + "details": null + }, + "Error": { + "details": null + }, + "Allocating": { + "details": null + }, + "Init": { + "details": null + }, + "Negotiating": { + "details": null + }, + "Active": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pipewire/PwNode.json b/modules_old/Quickshell.Services.Pipewire/PwNode.json new file mode 100644 index 0000000..f973da1 --- /dev/null +++ b/modules_old/Quickshell.Services.Pipewire/PwNode.json @@ -0,0 +1,108 @@ +{ + "name": "PwNode", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A node in the pipewire connection graph.", + "details": "", + "flags": [ + "uncreatable" + ], + "properties": { + "isSink": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If `true`, then the node accepts audio input from other nodes,\nif `false` the node outputs audio to other nodes.\n", + "flags": [ + "readonly" + ] + }, + "nickname": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The node's nickname, corrosponding to the object's `node.nickname` property.\n\nMay be empty. Generally but not always more human readable than {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"description\" >}}.\n", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The pipewire object id of the node.\n\nMainly useful for debugging. you can inspect the node directly\nwith `pw-cli i `.\n", + "flags": [ + "readonly" + ] + }, + "isStream": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If `true` then the node is likely to be a program, if false it is liekly to be hardware.\n", + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The node's name, corrosponding to the object's `node.name` property.\n", + "flags": [ + "readonly" + ] + }, + "properties": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "The property set present on the node, as an object containing key-value pairs.\nYou can inspect this directly with `pw-cli i `.\n\nA few properties of note, which may or may not be present:\n- `application.name` - A suggested human readable name for the node.\n- `application.icon-name` - The name of an icon recommended to display for the node.\n- `media.name` - A description of the currently playing media.\n (more likely to be present than `media.title` and `media.artist`)\n- `media.title` - The title of the currently playing media.\n- `media.artist` - The artist of the currently playing media.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}", + "flags": [ + "readonly" + ] + }, + "description": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The node's description, corrosponding to the object's `node.description` property.\n\nMay be empty. Generally more human readable than {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"name\" >}}.\n", + "flags": [ + "readonly" + ] + }, + "audio": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNodeAudio" + }, + "details": "Extra information present only if the node sends or receives audio.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pipewire/PwNodeAudio.json b/modules_old/Quickshell.Services.Pipewire/PwNodeAudio.json new file mode 100644 index 0000000..38b09fe --- /dev/null +++ b/modules_old/Quickshell.Services.Pipewire/PwNodeAudio.json @@ -0,0 +1,65 @@ +{ + "name": "PwNodeAudio", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Audio specific properties of pipewire nodes.", + "details": "Extra properties of a {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pipewire\" name=\"PwNode\" mtype=\"\" mname=\"\" >}} if the node is an audio node.\n\nSee {{< qmltypelink type=\"local\" module=\"Quickshell.Services.Pipewire\" name=\"PwNode\" mtype=\"prop\" mname=\"audio\" >}}.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "channels": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwAudioChannel" + } + }, + "details": "The audio channels present on the node.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}", + "flags": [ + "readonly" + ] + }, + "volumes": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + "details": "The volumes of each audio channel individually. Each entry corrosponds to\nthe volume of the channel at the same index in {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"channels\" >}}. {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"volumes\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"channels\" >}}\nwill always be the same length.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}" + }, + "muted": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the node is currently muted. Setting this property changes the mute state.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}" + }, + "volume": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The average volume over all channels of the node.\nSetting this property modifies the volume of all channels proportionately.\n\n{{< callout type=\"warning\" >}}\n This property is invalid unless the node is [bound](../pwobjecttracker).\n\n{{< /callout >}}" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pipewire/PwNodeLinkTracker.json b/modules_old/Quickshell.Services.Pipewire/PwNodeLinkTracker.json new file mode 100644 index 0000000..621f118 --- /dev/null +++ b/modules_old/Quickshell.Services.Pipewire/PwNodeLinkTracker.json @@ -0,0 +1,41 @@ +{ + "name": "PwNodeLinkTracker", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Tracks all link connections to a given node.", + "details": "", + "properties": { + "linkGroups": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwLinkGroup" + } + }, + "details": "Link groups connected to the given node.\n\nIf the node is a sink, links which target the node will be tracked.\nIf the node is a source, links which source the node will be tracked.\n", + "flags": [ + "readonly" + ] + }, + "node": { + "type": { + "type": "local", + "module": "Quickshell.Services.Pipewire", + "name": "PwNode" + }, + "details": "The node to track connections to.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pipewire/PwObjectTracker.json b/modules_old/Quickshell.Services.Pipewire/PwObjectTracker.json new file mode 100644 index 0000000..798a267 --- /dev/null +++ b/modules_old/Quickshell.Services.Pipewire/PwObjectTracker.json @@ -0,0 +1,30 @@ +{ + "name": "PwObjectTracker", + "module": "Quickshell.Services.Pipewire", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Binds pipewire objects.", + "details": "If the object list of at least one PwObjectTracker contains a given pipewire object,\nit will become *bound* and you will be able to interact with bound-only properties.\n", + "properties": { + "objects": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": "The list of objects to bind.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.Pipewire/index.json b/modules_old/Quickshell.Services.Pipewire/index.json new file mode 100644 index 0000000..60832ec --- /dev/null +++ b/modules_old/Quickshell.Services.Pipewire/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.Pipewire", + "description": "Pipewire API", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.SystemTray/SystemTray.json b/modules_old/Quickshell.Services.SystemTray/SystemTray.json new file mode 100644 index 0000000..35c4bf0 --- /dev/null +++ b/modules_old/Quickshell.Services.SystemTray/SystemTray.json @@ -0,0 +1,36 @@ +{ + "name": "SystemTray", + "module": "Quickshell.Services.SystemTray", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "System tray", + "details": "Referencing the SystemTray singleton will make quickshell start tracking\nsystem tray contents, which are updated as the tray changes, and can be\naccessed via the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"items\" >}} property.\n", + "flags": [ + "singleton" + ], + "properties": { + "items": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayItem" + } + }, + "details": "List of all system tray icons.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.SystemTray/SystemTrayCategory.json b/modules_old/Quickshell.Services.SystemTray/SystemTrayCategory.json new file mode 100644 index 0000000..6f21873 --- /dev/null +++ b/modules_old/Quickshell.Services.SystemTray/SystemTrayCategory.json @@ -0,0 +1,18 @@ +{ + "name": "SystemTrayCategory", + "module": "Quickshell.Services.SystemTray", + "type": "enum", + "description": "Category of a SystemTrayItem.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.SystemTray\" name=\"SystemTrayItem\" mtype=\"prop\" mname=\"category\" >}}.\n", + "variants": { + "Hardware": { + "details": "Hardware controls like battery indicators or volume control.\n" + }, + "SystemServices": { + "details": "System services such as IMEs or disk indexing.\n" + }, + "ApplicationStatus": { + "details": "The fallback category for general applications or anything that does\nnot fit into a different category.\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.SystemTray/SystemTrayItem.json b/modules_old/Quickshell.Services.SystemTray/SystemTrayItem.json new file mode 100644 index 0000000..f923482 --- /dev/null +++ b/modules_old/Quickshell.Services.SystemTray/SystemTrayItem.json @@ -0,0 +1,206 @@ +{ + "name": "SystemTrayItem", + "module": "Quickshell.Services.SystemTray", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "An item in the system tray.", + "details": "A system tray item, roughly conforming to the [kde/freedesktop spec]\n(there is no real spec, we just implemented whatever seemed to actually be used).\n\n[kde/freedesktop spec]: https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/StatusNotifierItem/\n", + "flags": [ + "uncreatable" + ], + "properties": { + "status": { + "type": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayStatus" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "tooltipTitle": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "icon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Icon source string, usable as an Image source.\n", + "flags": [ + "readonly" + ] + }, + "onlyMenu": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this tray item only offers a menu and activation will do nothing.\n", + "flags": [ + "readonly" + ] + }, + "title": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Text that describes the application.\n", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "A name unique to the application, such as its name.\n", + "flags": [ + "readonly" + ] + }, + "hasMenu": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this tray item has an associated menu accessible via {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"display\" >}}\nor a\t{{< qmltypelink type=\"local\" module=\"Quickshell.Services.SystemTray\" name=\"SystemTrayMenuWatcher\" mtype=\"\" mname=\"\" >}}.\n", + "flags": [ + "readonly" + ] + }, + "tooltipDescription": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "category": { + "type": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayCategory" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "activate", + "id": "activate", + "details": "Primary activation action, generally triggered via a left click.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "display", + "id": "display", + "details": "Display a platform menu at the given location relative to the parent window.\n", + "params": [ + { + "name": "parentWindow", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "relativeX", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + }, + { + "name": "relativeY", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "scroll", + "id": "scroll", + "details": "Scroll action, such as changing volume on a mixer.\n", + "params": [ + { + "name": "delta", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + }, + { + "name": "horizontal", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "secondaryActivate", + "id": "secondaryActivate", + "details": "Secondary activation action, generally triggered via a middle click.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.SystemTray/SystemTrayMenuWatcher.json b/modules_old/Quickshell.Services.SystemTray/SystemTrayMenuWatcher.json new file mode 100644 index 0000000..29dfe1e --- /dev/null +++ b/modules_old/Quickshell.Services.SystemTray/SystemTrayMenuWatcher.json @@ -0,0 +1,36 @@ +{ + "name": "SystemTrayMenuWatcher", + "module": "Quickshell.Services.SystemTray", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Accessor for SystemTrayItem menus.", + "details": "SystemTrayMenuWatcher provides access to the associated\n{{< qmltypelink type=\"local\" module=\"Quickshell.DBusMenu\" name=\"DBusMenuItem\" mtype=\"\" mname=\"\" >}} for a tray item.\n", + "properties": { + "menu": { + "type": { + "type": "local", + "module": "Quickshell.DBusMenu", + "name": "DBusMenuItem" + }, + "details": "The menu associated with the tray item. Will be null if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"trayItem\" >}} is null\nor has no associated menu.\n", + "flags": [ + "readonly" + ] + }, + "trayItem": { + "type": { + "type": "local", + "module": "Quickshell.Services.SystemTray", + "name": "SystemTrayItem" + }, + "details": "The tray item to watch.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.SystemTray/SystemTrayStatus.json b/modules_old/Quickshell.Services.SystemTray/SystemTrayStatus.json new file mode 100644 index 0000000..3aff126 --- /dev/null +++ b/modules_old/Quickshell.Services.SystemTray/SystemTrayStatus.json @@ -0,0 +1,18 @@ +{ + "name": "SystemTrayStatus", + "module": "Quickshell.Services.SystemTray", + "type": "enum", + "description": "Statis of a SystemTrayItem.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.SystemTray\" name=\"SystemTrayItem\" mtype=\"prop\" mname=\"status\" >}}.\n", + "variants": { + "NeedsAttention": { + "details": "An item that needs attention conveys very important information such as low battery.\n" + }, + "Active": { + "details": "An active item may have information more important than a passive one and you probably do not want to hide it.\n" + }, + "Passive": { + "details": "A passive item does not convey important information and can be considered idle. You may want to hide these.\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.SystemTray/index.json b/modules_old/Quickshell.Services.SystemTray/index.json new file mode 100644 index 0000000..0efc2ec --- /dev/null +++ b/modules_old/Quickshell.Services.SystemTray/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.SystemTray", + "description": "Types for implementing a system tray", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.UPower/UPower.json b/modules_old/Quickshell.Services.UPower/UPower.json new file mode 100644 index 0000000..d362913 --- /dev/null +++ b/modules_old/Quickshell.Services.UPower/UPower.json @@ -0,0 +1,58 @@ +{ + "name": "UPower", + "module": "Quickshell.Services.UPower", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "singleton" + ], + "properties": { + "onBattery": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the system is currently running on battery power, or discharging.\n", + "flags": [ + "readonly" + ] + }, + "devices": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDevice" + } + }, + "details": "All connected UPower devices.\n", + "flags": [ + "readonly" + ] + }, + "displayDevice": { + "type": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDevice" + }, + "details": "UPower's DisplayDevice for your system. Can be `null`.\n\nThis is an aggregate device and not a physical one, meaning you will not find it in {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"devices\" >}}.\nIt is typically the device that is used for displaying information in desktop environments.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.UPower/UPowerDevice.json b/modules_old/Quickshell.Services.UPower/UPowerDevice.json new file mode 100644 index 0000000..917bc67 --- /dev/null +++ b/modules_old/Quickshell.Services.UPower/UPowerDevice.json @@ -0,0 +1,185 @@ +{ + "name": "UPowerDevice", + "module": "Quickshell.Services.UPower", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A device exposed through the UPower system service.", + "details": "", + "flags": [ + "uncreatable" + ], + "properties": { + "isPresent": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the power source is present in the bay or slot, useful for hot-removable batteries.\n\nIf the device `type` is not `Battery`, then the property will be invalid.\n", + "flags": [ + "readonly" + ] + }, + "healthPercentage": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Health of the device as a percentage of its original health.\n", + "flags": [ + "readonly" + ] + }, + "energy": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Current energy level of the device in watt-hours.\n", + "flags": [ + "readonly" + ] + }, + "isLaptopBattery": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the device is a laptop battery or not. Use this to check if your device is a valid battery.\n\nThis will be equivalent to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"type\" >}} == Battery && {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"powerSupply\" >}} == true.\n", + "flags": [ + "readonly" + ] + }, + "iconName": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Name of the icon representing the current state of the device, or an empty string if not provided.\n", + "flags": [ + "readonly" + ] + }, + "energyCapacity": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Maximum energy capacity of the device in watt-hours\n", + "flags": [ + "readonly" + ] + }, + "powerSupply": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the device is a power supply for your computer and can provide charge.\n", + "flags": [ + "readonly" + ] + }, + "percentage": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Current charge level as a percentage.\n\nThis would be equivalent to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"energy\" >}} / {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"energyCapacity\" >}}.\n", + "flags": [ + "readonly" + ] + }, + "state": { + "type": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDeviceState" + }, + "details": "Current state of the device.\n", + "flags": [ + "readonly" + ] + }, + "changeRate": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Rate of energy change in watts (positive when charging, negative when discharging).\n", + "flags": [ + "readonly" + ] + }, + "healthSupported": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "timeToEmpty": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Estimated time until the device is fully discharged, in seconds.\n\nWill be set to `0` if charging.\n", + "flags": [ + "readonly" + ] + }, + "timeToFull": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "Estimated time until the device is fully charged, in seconds.\n\nWill be set to `0` if discharging.\n", + "flags": [ + "readonly" + ] + }, + "type": { + "type": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDeviceType" + }, + "details": "The type of device.\n", + "flags": [ + "readonly" + ] + }, + "nativePath": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Native path of the device specific to your OS.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.UPower/UPowerDeviceState.json b/modules_old/Quickshell.Services.UPower/UPowerDeviceState.json new file mode 100644 index 0000000..9066c89 --- /dev/null +++ b/modules_old/Quickshell.Services.UPower/UPowerDeviceState.json @@ -0,0 +1,62 @@ +{ + "name": "UPowerDeviceState", + "module": "Quickshell.Services.UPower", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Power state of a UPower device.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.UPower\" name=\"UPowerDevice\" mtype=\"prop\" mname=\"state\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "status", + "type": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDeviceState" + } + } + ] + } + ], + "signals": {}, + "variants": { + "PendingCharge": { + "details": "The device is waiting to be charged after it was plugged in.\n" + }, + "PendingDischarge": { + "details": "The device is waiting to be discharged after being unplugged.\n" + }, + "Empty": { + "details": null + }, + "FullyCharged": { + "details": null + }, + "Unknown": { + "details": null + }, + "Discharging": { + "details": null + }, + "Charging": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.UPower/UPowerDeviceType.json b/modules_old/Quickshell.Services.UPower/UPowerDeviceType.json new file mode 100644 index 0000000..4e6e64e --- /dev/null +++ b/modules_old/Quickshell.Services.UPower/UPowerDeviceType.json @@ -0,0 +1,128 @@ +{ + "name": "UPowerDeviceType", + "module": "Quickshell.Services.UPower", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Type of a UPower device.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Services.UPower\" name=\"UPowerDevice\" mtype=\"prop\" mname=\"type\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "type", + "type": { + "type": "local", + "module": "Quickshell.Services.UPower", + "name": "UPowerDeviceType" + } + } + ] + } + ], + "signals": {}, + "variants": { + "Monitor": { + "details": null + }, + "Touchpad": { + "details": null + }, + "Unknown": { + "details": null + }, + "Keyboard": { + "details": null + }, + "Battery": { + "details": null + }, + "Video": { + "details": null + }, + "RemoteControl": { + "details": null + }, + "Printer": { + "details": null + }, + "Scanner": { + "details": null + }, + "Pen": { + "details": null + }, + "Phone": { + "details": null + }, + "OtherAudio": { + "details": null + }, + "Headset": { + "details": null + }, + "Mouse": { + "details": null + }, + "Camera": { + "details": null + }, + "Computer": { + "details": null + }, + "GamingInput": { + "details": null + }, + "Pda": { + "details": null + }, + "BluetoothGeneric": { + "details": null + }, + "Wearable": { + "details": null + }, + "LinePower": { + "details": null + }, + "MediaPlayer": { + "details": null + }, + "Speakers": { + "details": null + }, + "Tablet": { + "details": null + }, + "Headphones": { + "details": null + }, + "Toy": { + "details": null + }, + "Ups": { + "details": null + }, + "Modem": { + "details": null + }, + "Network": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Services.UPower/index.json b/modules_old/Quickshell.Services.UPower/index.json new file mode 100644 index 0000000..0e5ac33 --- /dev/null +++ b/modules_old/Quickshell.Services.UPower/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Services.UPower", + "description": "UPower Service", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell.Wayland/Toplevel.json b/modules_old/Quickshell.Wayland/Toplevel.json new file mode 100644 index 0000000..a4f83ff --- /dev/null +++ b/modules_old/Quickshell.Wayland/Toplevel.json @@ -0,0 +1,165 @@ +{ + "name": "Toplevel", + "module": "Quickshell.Wayland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Window from another application.", + "details": "A window/toplevel from another application, retrievable from\nthe {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"ToplevelManager\" mtype=\"\" mname=\"\" >}}.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "appId": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "minimized": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is currently minimized.\n\nMinimization can be requested by setting this property, though it may\nbe ignored by the compositor.\n" + }, + "fullscreen": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is currently fullscreen.\n\nFullscreen can be requested by setting this property, though it may\nbe ignored by the compositor.\nFullscreen can be requested on a specific screen with the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"fullscreenOn\" >}} function.\n" + }, + "activated": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is currently activated or focused.\n\nActivation can be requested with the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"activate\" >}} function.\n", + "flags": [ + "readonly" + ] + }, + "maximized": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is currently maximized.\n\nMaximization can be requested by setting this property, though it may\nbe ignored by the compositor.\n" + }, + "parent": { + "type": { + "type": "local", + "module": "Quickshell.Wayland", + "name": "Toplevel" + }, + "details": "Parent toplevel if this toplevel is a modal/dialog, otherwise null.\n", + "flags": [ + "readonly" + ] + }, + "title": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "activate", + "id": "activate", + "details": "Request that this toplevel is activated.\nThe request may be ignored by the compositor.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "fullscreenOn", + "id": "fullscreenOn", + "details": "Request that this toplevel is fullscreened on a specific screen.\nThe request may be ignored by the compositor.\n", + "params": [ + { + "name": "screen", + "type": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "setRectangle", + "id": "setRectangle", + "details": "Provide a hint to the compositor where the visual representation\nof this toplevel is relative to a quickshell window.\nThis hint can be used visually in operations like minimization.\n", + "params": [ + { + "name": "window", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "rect", + "type": { + "type": "qt", + "module": "qml", + "name": "rect" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "unsetRectangle", + "id": "unsetRectangle", + "details": null, + "params": [] + } + ], + "signals": { + "closed": { + "name": "closed", + "details": null, + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Wayland/ToplevelManager.json b/modules_old/Quickshell.Wayland/ToplevelManager.json new file mode 100644 index 0000000..e153cc5 --- /dev/null +++ b/modules_old/Quickshell.Wayland/ToplevelManager.json @@ -0,0 +1,36 @@ +{ + "name": "ToplevelManager", + "module": "Quickshell.Wayland", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Exposes a list of Toplevels.", + "details": "Exposes a list of windows from other applications as {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"Toplevel\" mtype=\"\" mname=\"\" >}}s via the\n[zwlr-foreign-toplevel-management-v1](https://wayland.app/protocols/wlr-foreign-toplevel-management-unstable-v1)\nwayland protocol.\n", + "flags": [ + "singleton" + ], + "properties": { + "toplevels": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell.Wayland", + "name": "Toplevel" + } + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Wayland/WlSessionLock.json b/modules_old/Quickshell.Wayland/WlSessionLock.json new file mode 100644 index 0000000..0b6ca48 --- /dev/null +++ b/modules_old/Quickshell.Wayland/WlSessionLock.json @@ -0,0 +1,47 @@ +{ + "name": "WlSessionLock", + "module": "Quickshell.Wayland", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Wayland session locker.", + "details": "Wayland session lock implemented using the [ext_session_lock_v1] protocol.\n\nWlSessionLock will create an instance of its `surface` component for every screen when\n`locked` is set to true. The `surface` component must create a {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlSessionLockSurface\" mtype=\"\" mname=\"\" >}}\nwhich will be displayed on each screen.\n\nThe below example will create a session lock that disappears when the button is clicked.\n```qml\nWlSessionLock {\n id: lock\n\n WlSessionLockSurface {\n Button {\n text: \"unlock me\"\n onClicked: lock.locked = false\n }\n }\n}\n\n// ...\nlock.locked = true\n```\n\n{{< callout type=\"warning\" >}}\n If the WlSessionLock is destroyed or quickshell exits without setting `locked`\nto false, conformant compositors will leave the screen locked and painted with a solid\ncolor.\n\nThis is what makes the session lock secure. The lock dying will not expose your session,\nbut it will render it inoperable.\n{{< /callout >}}\n\n[ext_session_lock_v1]: https://wayland.app/protocols/ext-session-lock-v1\n", + "properties": { + "locked": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "Controls the lock state.\n\n{{< callout type=\"warning\" >}}\n Only one WlSessionLock may be locked at a time. Attempting to enable a lock while\nanother lock is enabled will do nothing.\n\n{{< /callout >}}" + }, + "secure": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "The compositor lock state.\n\nThis is set to true once the compositor has confirmed all screens are covered with locks.\n", + "flags": [ + "readonly" + ] + }, + "surface": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "The surface that will be created for each screen. Must create a {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlSessionLockSurface\" mtype=\"\" mname=\"\" >}}.\n", + "flags": [ + "default" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Wayland/WlSessionLockSurface.json b/modules_old/Quickshell.Wayland/WlSessionLockSurface.json new file mode 100644 index 0000000..40f89d8 --- /dev/null +++ b/modules_old/Quickshell.Wayland/WlSessionLockSurface.json @@ -0,0 +1,97 @@ +{ + "name": "WlSessionLockSurface", + "module": "Quickshell.Wayland", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Surface to display with a `WlSessionLock`.", + "details": "Surface displayed by a {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlSessionLock\" mtype=\"\" mname=\"\" >}} when it is locked.\n", + "properties": { + "screen": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + }, + "details": "The screen that the surface is displayed on.\n", + "flags": [ + "readonly" + ] + }, + "data": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": null, + "flags": [ + "default", + "readonly" + ] + }, + "visible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the surface has been made visible.\n\nNote: SessionLockSurfaces will never become invisible, they will only be destroyed.\n", + "flags": [ + "readonly" + ] + }, + "color": { + "type": { + "type": "qt", + "module": "qml", + "name": "color" + }, + "details": "The background color of the window. Defaults to white.\n\n{{< callout type=\"warning\" >}}\n This seems to behave weirdly when using transparent colors on some systems.\nUsing a colored content item over a transparent window is the recommended way to work around this:\n```qml\nProxyWindow {\n Rectangle {\n anchors.fill: parent\n color: \"#20ffffff\"\n\n // your content here\n }\n}\n```\n... but you probably shouldn't make a transparent lock,\nand most compositors will ignore an attempt to do so.\n\n{{< /callout >}}" + }, + "height": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "width": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "contentItem": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Wayland/WlrKeyboardFocus.json b/modules_old/Quickshell.Wayland/WlrKeyboardFocus.json new file mode 100644 index 0000000..9d3370c --- /dev/null +++ b/modules_old/Quickshell.Wayland/WlrKeyboardFocus.json @@ -0,0 +1,18 @@ +{ + "name": "WlrKeyboardFocus", + "module": "Quickshell.Wayland", + "type": "enum", + "description": "WlrLayershell keyboard focus mode", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlrLayershell\" mtype=\"prop\" mname=\"keyboardFocus\" >}}.\n", + "variants": { + "OnDemand": { + "details": "Access to the keyboard as determined by the operating system.\n\n{{< callout type=\"warning\" >}}\n On some systems, `OnDemand` may cause the shell window to\nretain focus over another window unexpectedly.\nYou should try `None` if you experience issues.\n\n{{< /callout >}}" + }, + "None": { + "details": "No keyboard input will be accepted.\n" + }, + "Exclusive": { + "details": "Exclusive access to the keyboard, locking out all other windows.\n\n{{< callout type=\"warning\" >}}\n You **CANNOT** use this to make a secure lock screen.\n\nIf you want to make a lock screen, use {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlSessionLock\" mtype=\"\" mname=\"\" >}}.\n\n{{< /callout >}}" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Wayland/WlrLayer.json b/modules_old/Quickshell.Wayland/WlrLayer.json new file mode 100644 index 0000000..7500006 --- /dev/null +++ b/modules_old/Quickshell.Wayland/WlrLayer.json @@ -0,0 +1,21 @@ +{ + "name": "WlrLayer", + "module": "Quickshell.Wayland", + "type": "enum", + "description": "WlrLayershell layer.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlrLayershell\" mtype=\"prop\" mname=\"layer\" >}}.\n", + "variants": { + "Bottom": { + "details": "Above background, usually below windows\n" + }, + "Top": { + "details": "Commonly used for panels, app launchers, and docks.\nUsually renders over normal windows and below fullscreen windows.\n" + }, + "Overlay": { + "details": "Usually renders over fullscreen windows\n" + }, + "Background": { + "details": "Below bottom\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell.Wayland/WlrLayershell.json b/modules_old/Quickshell.Wayland/WlrLayershell.json new file mode 100644 index 0000000..2ca0fc0 --- /dev/null +++ b/modules_old/Quickshell.Wayland/WlrLayershell.json @@ -0,0 +1,41 @@ +{ + "name": "WlrLayershell", + "module": "Quickshell.Wayland", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "PanelWindow" + }, + "description": "Wlroots layershell window", + "details": "Decorationless window that can be attached to the screen edges using the [zwlr_layer_shell_v1] protocol.\n\n#### Attached object\n`WlrLayershell` works as an attached object of {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"PanelWindow\" mtype=\"\" mname=\"\" >}} which you should use instead if you can,\nas it is platform independent.\n\n```qml\nPanelWindow {\n // When PanelWindow is backed with WlrLayershell this will work\n WlrLayershell.layer: WlrLayer.Bottom\n}\n```\n\nTo maintain platform compatibility you can dynamically set layershell specific properties.\n```qml\nPanelWindow {\n Component.onCompleted: {\n if (this.WlrLayershell != null) {\n this.WlrLayershell.layer = WlrLayer.Bottom;\n }\n }\n}\n```\n\n[zwlr_layer_shell_v1]: https://wayland.app/protocols/wlr-layer-shell-unstable-v1\n", + "properties": { + "keyboardFocus": { + "type": { + "type": "local", + "module": "Quickshell.Wayland", + "name": "WlrKeyboardFocus" + }, + "details": "The degree of keyboard focus taken. Defaults to `KeyboardFocus.None`.\n" + }, + "namespace": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Similar to the class property of windows. Can be used to identify the window to external tools.\n\nCannot be set after windowConnected.\n" + }, + "layer": { + "type": { + "type": "local", + "module": "Quickshell.Wayland", + "name": "WlrLayer" + }, + "details": "The shell layer the window sits in. Defaults to `WlrLayer.Top`.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell.Wayland/index.json b/modules_old/Quickshell.Wayland/index.json new file mode 100644 index 0000000..28c624f --- /dev/null +++ b/modules_old/Quickshell.Wayland/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell.Wayland", + "description": "Wayland specific Quickshell types", + "details": "" +} \ No newline at end of file diff --git a/modules_old/Quickshell/BoundComponent.json b/modules_old/Quickshell/BoundComponent.json new file mode 100644 index 0000000..5547993 --- /dev/null +++ b/modules_old/Quickshell/BoundComponent.json @@ -0,0 +1,74 @@ +{ + "name": "BoundComponent", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "description": "Component loader that allows setting initial properties.", + "details": "Component loader that allows setting initial properties, primarily useful for\nescaping cyclic dependency errors.\n\nProperties defined on the BoundComponent will be applied to its loaded component,\nincluding required properties, and will remain reactive. Functions created with\nthe names of signal handlers will also be attached to signals of the loaded component.\n\n```qml {filename=\"MyComponent.qml\"}\nMouseArea {\n required property color color;\n width: 100\n height: 100\n\n Rectangle {\n anchors.fill: parent\n color: parent.color\n }\n}\n```\n\n```qml\nBoundComponent {\n source: \"MyComponent.qml\"\n\n // this is the same as assigning to `color` on MyComponent if loaded normally.\n property color color: \"red\";\n\n // this will be triggered when the `clicked` signal from the MouseArea is sent.\n function onClicked() {\n color = \"blue\";\n }\n}\n```\n", + "properties": { + "implicitHeight": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "implicitWidth": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "item": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "The loaded component. Will be null until it has finished loading.\n", + "flags": [ + "readonly" + ] + }, + "sourceComponent": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "The source to load, as a Component.\n" + }, + "bindValues": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If property values should be bound after they are initially set. Defaults to `true`.\n" + }, + "source": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The source to load, as a Url.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} diff --git a/modules_old/Quickshell/DesktopAction.json b/modules_old/Quickshell/DesktopAction.json new file mode 100644 index 0000000..2fbdbbe --- /dev/null +++ b/modules_old/Quickshell/DesktopAction.json @@ -0,0 +1,76 @@ +{ + "name": "DesktopAction", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": "An action of a {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"DesktopEntry\" mtype=\"\" mname=\"\" >}}.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "icon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "execString": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The raw `Exec` string from the desktop entry. You probably want {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"execute\" >}}.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "execute", + "id": "execute", + "details": "Run the application. Currently ignores {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"DesktopEntry\" mtype=\"prop\" mname=\"runInTerminal\" >}} and field codes.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/DesktopEntries.json b/modules_old/Quickshell/DesktopEntries.json new file mode 100644 index 0000000..d74c3a8 --- /dev/null +++ b/modules_old/Quickshell/DesktopEntries.json @@ -0,0 +1,57 @@ +{ + "name": "DesktopEntries", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Desktop entry index.", + "details": "Index of desktop entries according to the [desktop entry specification].\n\nPrimarily useful for looking up icons and metadata from an id, as there is\ncurrently no mechanism for usage based sorting of entries and other launcher niceties.\n\n[desktop entry specification]: https://specifications.freedesktop.org/desktop-entry-spec/latest/\n", + "flags": [ + "singleton" + ], + "properties": { + "applications": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel", + "of": { + "type": "local", + "module": "Quickshell", + "name": "DesktopEntry" + } + }, + "details": "All desktop entries of type Application that are not Hidden or NoDisplay.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "local", + "module": "Quickshell", + "name": "DesktopEntry" + }, + "name": "byId", + "id": "byId", + "details": "Look up a desktop entry by name. Includes NoDisplay entries. May return null.\n", + "params": [ + { + "name": "id", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/DesktopEntry.json b/modules_old/Quickshell/DesktopEntry.json new file mode 100644 index 0000000..35df95a --- /dev/null +++ b/modules_old/Quickshell/DesktopEntry.json @@ -0,0 +1,179 @@ +{ + "name": "DesktopEntry", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": "A desktop entry. See {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"DesktopEntries\" mtype=\"\" mname=\"\" >}} for details.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "categories": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "genericName": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Short description of the application, such as \"Web Browser\". May be empty.\n", + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Name of the specific application, such as \"Firefox\".\n", + "flags": [ + "readonly" + ] + }, + "comment": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Long description of the application, such as \"View websites on the internet\". May be empty.\n", + "flags": [ + "readonly" + ] + }, + "id": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "runInTerminal": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the application should run in a terminal.\n", + "flags": [ + "readonly" + ] + }, + "workingDirectory": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The working directory to execute from.\n", + "flags": [ + "readonly" + ] + }, + "noDisplay": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If true, this application should not be displayed in menus and launchers.\n", + "flags": [ + "readonly" + ] + }, + "icon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Name of the icon associated with this application. May be empty.\n", + "flags": [ + "readonly" + ] + }, + "actions": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell", + "name": "DesktopAction" + } + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "keywords": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "string" + } + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "execString": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The raw `Exec` string from the desktop entry. You probably want {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"execute\" >}}.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "execute", + "id": "execute", + "details": "Run the application. Currently ignores {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"runInTerminal\" >}} and field codes.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/EasingCurve.json b/modules_old/Quickshell/EasingCurve.json new file mode 100644 index 0000000..9f805b5 --- /dev/null +++ b/modules_old/Quickshell/EasingCurve.json @@ -0,0 +1,154 @@ +{ + "name": "EasingCurve", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Easing curve.", + "details": "Directly accessible easing curve as used in property animations.\n", + "properties": { + "curve": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "Easing curve settings. Works exactly the same as\n[PropertyAnimation.easing](https://doc.qt.io/qt-6/qml-qtquick-propertyanimation.html#easing-prop).\n" + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "name": "interpolate", + "id": "interpolate", + "details": "Interpolates between two values using the given X coordinate.\n", + "params": [ + { + "name": "x", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + { + "name": "a", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + { + "name": "b", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "point" + }, + "name": "interpolate", + "id": "interpolate", + "details": "Interpolates between two points using the given X coordinate.\n", + "params": [ + { + "name": "x", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + { + "name": "a", + "type": { + "type": "qt", + "module": "qml", + "name": "point" + } + }, + { + "name": "b", + "type": { + "type": "qt", + "module": "qml", + "name": "point" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "rect" + }, + "name": "interpolate", + "id": "interpolate", + "details": "Interpolates two rects using the given X coordinate.\n", + "params": [ + { + "name": "x", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + }, + { + "name": "a", + "type": { + "type": "qt", + "module": "qml", + "name": "rect" + } + }, + { + "name": "b", + "type": { + "type": "qt", + "module": "qml", + "name": "rect" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "name": "valueAt", + "id": "valueAt", + "details": "Returns the Y value for the given X value on the curve\nfrom 0.0 to 1.0.\n", + "params": [ + { + "name": "x", + "type": { + "type": "qt", + "module": "qml", + "name": "real" + } + } + ] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/ElapsedTimer.json b/modules_old/Quickshell/ElapsedTimer.json new file mode 100644 index 0000000..a4c56bf --- /dev/null +++ b/modules_old/Quickshell/ElapsedTimer.json @@ -0,0 +1,83 @@ +{ + "name": "ElapsedTimer", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Measures time between events", + "details": "The ElapsedTimer measures time since its last restart, and is useful\nfor determining the time between events that don't supply it.\n", + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "name": "elapsed", + "id": "elapsed", + "details": "Return the number of seconds since the timer was last\nstarted or restarted, with nanosecond precision.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "name": "elapsedMs", + "id": "elapsedMs", + "details": "Return the number of milliseconds since the timer was last\nstarted or restarted.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "name": "elapsedNs", + "id": "elapsedNs", + "details": "Return the number of nanoseconds since the timer was last\nstarted or restarted.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "name": "restart", + "id": "restart", + "details": "Restart the timer, returning the number of seconds since\nthe timer was last started or restarted, with nanosecond precision.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "name": "restartMs", + "id": "restartMs", + "details": "Restart the timer, returning the number of milliseconds since\nthe timer was last started or restarted.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "name": "restartNs", + "id": "restartNs", + "details": "Restart the timer, returning the number of nanoseconds since\nthe timer was last started or restarted.\n", + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/ExclusionMode.json b/modules_old/Quickshell/ExclusionMode.json new file mode 100644 index 0000000..97a8d75 --- /dev/null +++ b/modules_old/Quickshell/ExclusionMode.json @@ -0,0 +1,18 @@ +{ + "name": "ExclusionMode", + "module": "Quickshell", + "type": "enum", + "description": "Panel exclusion mode", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"PanelWindow\" mtype=\"prop\" mname=\"exclusionMode\" >}}.\n", + "variants": { + "Normal": { + "details": "Respect the exclusion zone of other shell layers and optionally set one\n" + }, + "Auto": { + "details": "Decide the exclusion zone based on the window dimensions and anchors.\n\nWill attempt to reseve exactly enough space for the window and its margins if\nexactly 3 anchors are connected.\n" + }, + "Ignore": { + "details": "Ignore exclusion zones of other shell layers. You cannot set an exclusion zone in this mode.\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell/FloatingWindow.json b/modules_old/Quickshell/FloatingWindow.json new file mode 100644 index 0000000..ec3ca0c --- /dev/null +++ b/modules_old/Quickshell/FloatingWindow.json @@ -0,0 +1,16 @@ +{ + "name": "FloatingWindow", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "QsWindow" + }, + "description": "Standard toplevel operating system window that looks like any other application.", + "details": "", + "properties": {}, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/Intersection.json b/modules_old/Quickshell/Intersection.json new file mode 100644 index 0000000..4ef5c72 --- /dev/null +++ b/modules_old/Quickshell/Intersection.json @@ -0,0 +1,21 @@ +{ + "name": "Intersection", + "module": "Quickshell", + "type": "enum", + "description": "Intersection strategy for Regions.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Region\" mtype=\"prop\" mname=\"intersection\" >}}.\n", + "variants": { + "Xor": { + "details": "Create an intersection of this region and the other, leaving only\nthe area not covered by both. (opposite of `Intersect`)\n" + }, + "Intersect": { + "details": "Create an intersection of this region and the other, leaving only\nthe area covered by both. (opposite of `Xor`)\n" + }, + "Subtract": { + "details": "Subtract this region, cutting this region out of the other. (opposite of `Combine`)\n" + }, + "Combine": { + "details": "Combine this region, leaving a union of this and the other region. (opposite of `Subtract`)\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell/LazyLoader.json b/modules_old/Quickshell/LazyLoader.json new file mode 100644 index 0000000..30fcb93 --- /dev/null +++ b/modules_old/Quickshell/LazyLoader.json @@ -0,0 +1,71 @@ +{ + "name": "LazyLoader", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Asynchronous component loader.", + "details": "The LazyLoader can be used to prepare components that don't need to be\ncreated immediately, such as windows that aren't visible until triggered\nby another action. It works on creating the component in the gaps between\nframe rendering to prevent blocking the interface thread.\nIt can also be used to preserve memory by loading components only\nwhen you need them and unloading them afterward.\n\nNote that when reloading the UI due to changes, lazy loaders will always\nload synchronously so windows can be reused.\n\n#### Example\nThe following example creates a PopupWindow asynchronously as the bar loads.\nThis means the bar can be shown onscreen before the popup is ready, however\ntrying to show the popup before it has finished loading in the background\nwill cause the UI thread to block.\n\n```qml\nimport QtQuick\nimport QtQuick.Controls\nimport Quickshell\n\nQS_Quickshell_ShellRoot {\n QS_Quickshell_PanelWindow {\n id: window\n height: 50\n\n anchors {\n bottom: true\n left: true\n right: true\n }\n\n QS_Quickshell_LazyLoader {\n id: popupLoader\n\n // start loading immediately\n loading: true\n\n // this window will be loaded in the background during spare\n // frame time unless active is set to true, where it will be\n // loaded in the foreground\n QS_Quickshell_PopupWindow {\n // position the popup above the button\n parentWindow: window\n relativeX: window.width / 2 - width / 2\n relativeY: -height\n\n // some heavy component here\n\n width: 200\n height: 200\n }\n }\n\n QT_qtquick11controls_Button {\n anchors.centerIn: parent\n text: \"show popup\"\n\n // accessing popupLoader.item will force the loader to\n // finish loading on the UI thread if it isn't finished yet.\n onClicked: popupLoader.item.visible = !popupLoader.item.visible\n }\n }\n}\n```\n\n> [!WARNING]\n> Components that internally load other components must explicitly\n> support asynchronous loading to avoid blocking.\n> \n> Notably, {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Variants\" mtype=\"\" mname=\"\" >}} does not currently support asynchronous\n> loading, meaning using it inside a LazyLoader will block similarly to not\n> having a loader to start with.\n\n> [!WARNING]\n> LazyLoaders do not start loading before the first window is created,\n> meaning if you create all windows inside of lazy loaders, none of them will ever load.\n\n", + "properties": { + "loading": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the loader is actively loading.\n\nIf the component is not loaded, setting this property to true will start\nloading it asynchronously. If the component is already loaded, setting\nthis property has no effect.\n\nSee also: {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"activeAsync\" >}}.\n" + }, + "activeAsync": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the component is fully loaded.\n\nSetting this property to true will asynchronously load the component similarly to\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loading\" >}}. Reading it or setting it to false will behanve\nthe same as {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}}.\n" + }, + "source": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The URI to load the component from. Mutually exclusive to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"component\" >}}.\n" + }, + "active": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the component is fully loaded.\n\nSetting this property to `true` will force the component to load to completion,\nblocking the UI, and setting it to `false` will destroy the component, requiring\nit to be loaded again.\n\nSee also: {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"activeAsync\" >}}.\n" + }, + "component": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "The component to load. Mutually exclusive to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"source\" >}}.\n", + "flags": [ + "default" + ] + }, + "item": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "The fully loaded item if the loader is {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loading\" >}} or {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}}, or `null`\nif neither {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loading\" >}} nor {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"active\" >}}.\n\nNote that the item is owned by the LazyLoader, and destroying the LazyLoader\nwill destroy the item.\n\n> [!WARNING]\n> If you access the `item` of a loader that is currently loading,\n> it will block as if you had set `active` to true immediately beforehand.\n> \n> You can instead set {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"loading\" >}} and listen to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"signal\" mname=\"activeChanged\" >}} signal to\n> ensure loading happens asynchronously.\n\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} diff --git a/modules_old/Quickshell/ObjectModel.json b/modules_old/Quickshell/ObjectModel.json new file mode 100644 index 0000000..e6eb943 --- /dev/null +++ b/modules_old/Quickshell/ObjectModel.json @@ -0,0 +1,146 @@ +{ + "name": "ObjectModel", + "module": "Quickshell", + "type": "class", + "super": { + "type": "unknown", + "module": "", + "name": "" + }, + "description": "View into a list of objets", + "details": "Typed view into a list of objects.\n\nAn ObjectModel works as a QML [Data Model], allowing efficient interaction with\ncomponents that act on models. It has a single role named `modelData`, to match the\nbehavior of lists.\nThe same information contained in the list model is available as a normal list\nvia the `values` property.\n\n#### Differences from a list\nUnlike with a list, the following property binding will never be updated when `model[3]` changes.\n```qml\n// will not update reactively\nproperty var foo: model[3]\n```\n\nYou can work around this limitation using the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"values\" >}} property of the model to view it as a list.\n```qml\n// will update reactively\nproperty var foo: model.values[3]\n```\n\n[Data Model]: https://doc.qt.io/qt-6/qtquick-modelviewsdata-modelview.html#qml-data-models\n", + "flags": [ + "uncreatable" + ], + "properties": { + "values": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": "The content of the object model, as a QML list.\nThe values of this property will always be of the type of the model.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "name": "indexOf", + "id": "indexOf", + "details": null, + "params": [ + { + "name": "object", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + } + ] + } + ], + "signals": { + "objectRemovedPost": { + "name": "objectRemovedPost", + "details": "Sent immediately after an object is removed from the list.\n", + "params": [ + { + "name": "object", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "index", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + }, + "objectInsertedPre": { + "name": "objectInsertedPre", + "details": "Sent immediately before an object is inserted into the list.\n", + "params": [ + { + "name": "object", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "index", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + }, + "objectInsertedPost": { + "name": "objectInsertedPost", + "details": "Sent immediately after an object is inserted into the list.\n", + "params": [ + { + "name": "object", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "index", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + }, + "objectRemovedPre": { + "name": "objectRemovedPre", + "details": "Sent immediately before an object is removed from the list.\n", + "params": [ + { + "name": "object", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "index", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/ObjectRepeater.json b/modules_old/Quickshell/ObjectRepeater.json new file mode 100644 index 0000000..3b23f6f --- /dev/null +++ b/modules_old/Quickshell/ObjectRepeater.json @@ -0,0 +1,39 @@ +{ + "name": "ObjectRepeater", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "ObjectModel" + }, + "description": "A Repeater / for loop / map for non Item derived objects.", + "details": "{{< callout type=\"error\" >}}\n Removed in favor of {{< qmltypelink type=\"qt\" module=\"qml.QtQml.Models\" name=\"Instantiator\" mtype=\"\" mname=\"\" >}}\n{{< /callout >}}\n\nThe ObjectRepeater creates instances of the provided delegate for every entry in the\ngiven model, similarly to a {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Repeater\" mtype=\"\" mname=\"\" >}} but for non visual types.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "model": { + "type": { + "type": "qt", + "module": "qml", + "name": "variant" + }, + "details": "The model providing data to the ObjectRepeater.\n\nCurrently accepted model types are `list` lists, javascript arrays,\nand [QAbstractListModel] derived models, though only one column will be repeated\nfrom the latter.\n\nNote: {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"ObjectModel\" mtype=\"\" mname=\"\" >}} is a [QAbstractListModel] with a single column.\n\n[QAbstractListModel]: https://doc.qt.io/qt-6/qabstractlistmodel.html\n" + }, + "delegate": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "The delegate component to repeat.\n\nThe delegate is given the same properties as in a Repeater, except `index` which\nis not currently implemented.\n\nIf the model is a `list` or javascript array, a `modelData` property will be\nexposed containing the entry from the model. If the model is a [QAbstractListModel],\nthe roles from the model will be exposed.\n\nNote: {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"ObjectModel\" mtype=\"\" mname=\"\" >}} has a single role named `modelData` for compatibility with normal lists.\n\n[QAbstractListModel]: https://doc.qt.io/qt-6/qabstractlistmodel.html\n", + "flags": [ + "default" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/PanelWindow.json b/modules_old/Quickshell/PanelWindow.json new file mode 100644 index 0000000..fccda6d --- /dev/null +++ b/modules_old/Quickshell/PanelWindow.json @@ -0,0 +1,103 @@ +{ + "name": "PanelWindow", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "QsWindow" + }, + "description": "Decorationless window attached to screen edges by anchors.", + "details": "Decorationless window attached to screen edges by anchors.\n\n#### Example\nThe following snippet creates a white bar attached to the bottom of the screen.\n\n```qml\nPanelWindow {\n anchors {\n left: true\n bottom: true\n right: true\n }\n\n Text {\n anchors.centerIn: parent\n text: \"Hello!\"\n }\n}\n```\n", + "properties": { + "anchors": { + "type": { + "gadget": { + "bottom": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "left": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "right": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "top": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + }, + "details": "Anchors attach a shell window to the sides of the screen.\nBy default all anchors are disabled to avoid blocking the entire screen due to a misconfiguration.\n\n{{< callout type=\"info\" >}}\n When two opposite anchors are attached at the same time, the corrosponding dimension\n(width or height) will be forced to equal the screen width/height.\nMargins can be used to create anchored windows that are also disconnected from the monitor sides.\n\n{{< /callout >}}" + }, + "exclusiveZone": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The amount of space reserved for the shell layer relative to its anchors.\nSetting this property sets {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"exclusionMode\" >}} to `ExclusionMode.Normal`.\n\n{{< callout type=\"info\" >}}\n Either 1 or 3 anchors are required for the zone to take effect.\n\n{{< /callout >}}" + }, + "margins": { + "type": { + "gadget": { + "left": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "bottom": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "right": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "top": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + }, + "details": "Offsets from the sides of the screen.\n\n{{< callout type=\"info\" >}}\n Only applies to edges with anchors\n\n{{< /callout >}}" + }, + "aboveWindows": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the panel should render above standard windows. Defaults to true.\n\nNote: On Wayland this property corrosponds to {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlrLayershell\" mtype=\"prop\" mname=\"layer\" >}}.\n" + }, + "exclusionMode": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ExclusionMode" + }, + "details": "Defaults to `ExclusionMode.Auto`.\n" + }, + "focusable": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the panel should accept keyboard focus. Defaults to false.\n\nNote: On Wayland this property corrosponds to {{< qmltypelink type=\"local\" module=\"Quickshell.Wayland\" name=\"WlrLayershell\" mtype=\"prop\" mname=\"keyboardFocus\" >}}.\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/PersistentProperties.json b/modules_old/Quickshell/PersistentProperties.json new file mode 100644 index 0000000..54beeca --- /dev/null +++ b/modules_old/Quickshell/PersistentProperties.json @@ -0,0 +1,27 @@ +{ + "name": "PersistentProperties", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Object that holds properties that can persist across a config reload.", + "details": "PersistentProperties holds properties declated in it across a reload, which is\noften useful for things like keeping expandable popups open and styling them.\n\nBelow is an example of using `PersistentProperties` to keep track of the state\nof an expandable panel. When the configuration is reloaded, the `expanderOpen` property\nwill be saved and the expandable panel will stay in the open/closed state.\n\n```qml\nPersistentProperties {\n id: persist\n reloadableId: \"persistedStates\"\n\n property bool expanderOpen: false\n}\n\nButton {\n id: expanderButton\n anchors.centerIn: parent\n text: \"toggle expander\"\n onClicked: persist.expanderOpen = !persist.expanderOpen\n}\n\nRectangle {\n anchors.top: expanderButton.bottom\n anchors.left: expanderButton.left\n anchors.right: expanderButton.right\n height: 100\n\n color: \"lightblue\"\n visible: persist.expanderOpen\n}\n```\n", + "properties": {}, + "functions": [], + "signals": { + "loaded": { + "name": "loaded", + "details": "Called every time the reload stage completes.\nWill be called every time, including when nothing was loaded from an old instance.\n", + "params": [] + }, + "reloaded": { + "name": "reloaded", + "details": "Called every time the properties are reloaded.\nWill not be called if no old instance was loaded.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/PopupAdjustment.json b/modules_old/Quickshell/PopupAdjustment.json new file mode 100644 index 0000000..3e7e35c --- /dev/null +++ b/modules_old/Quickshell/PopupAdjustment.json @@ -0,0 +1,42 @@ +{ + "name": "PopupAdjustment", + "module": "Quickshell", + "type": "enum", + "description": null, + "details": null, + "variants": { + "Resize": { + "details": null + }, + "All": { + "details": null + }, + "ResizeX": { + "details": null + }, + "ResizeY": { + "details": null + }, + "SlideY": { + "details": null + }, + "SlideX": { + "details": null + }, + "FlipX": { + "details": null + }, + "None": { + "details": null + }, + "Slide": { + "details": null + }, + "FlipY": { + "details": null + }, + "Flip": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell/PopupWindow.json b/modules_old/Quickshell/PopupWindow.json new file mode 100644 index 0000000..8efc468 --- /dev/null +++ b/modules_old/Quickshell/PopupWindow.json @@ -0,0 +1,71 @@ +{ + "name": "PopupWindow", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "QsWindow" + }, + "description": "Popup window.", + "details": "Popup window that can display in a position relative to a floating\nor panel window.\n\n#### Example\nThe following snippet creates a panel with a popup centered over it.\n\n```qml\nPanelWindow {\n id: toplevel\n\n anchors {\n bottom: true\n left: true\n right: true\n }\n\n PopupWindow {\n parentWindow: toplevel\n relativeX: parentWindow.width / 2 - width / 2\n relativeY: parentWindow.height\n width: 500\n height: 500\n visible: true\n }\n}\n```\n", + "properties": { + "relativeX": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The X position of the popup relative to the parent window.\n" + }, + "anchor": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "visible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is shown or hidden. Defaults to false.\n" + }, + "parentWindow": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "The parent window of this popup.\n\nChanging this property reparents the popup.\n" + }, + "relativeY": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "The Y position of the popup relative to the parent window.\n" + }, + "screen": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + }, + "details": "The screen that the window currently occupies.\n\nThis may be modified to move the window to the given screen.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/QsMenuButtonType.json b/modules_old/Quickshell/QsMenuButtonType.json new file mode 100644 index 0000000..ad6a463 --- /dev/null +++ b/modules_old/Quickshell/QsMenuButtonType.json @@ -0,0 +1,50 @@ +{ + "name": "QsMenuButtonType", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Button type associated with a QsMenuEntry.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"QsMenuEntry\" mtype=\"prop\" mname=\"buttonType\" >}}.\n", + "flags": [ + "enum" + ], + "properties": {}, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [ + { + "name": "value", + "type": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuButtonType" + } + } + ] + } + ], + "signals": {}, + "variants": { + "CheckBox": { + "details": "This menu item should draw a checkbox.\n" + }, + "None": { + "details": "This menu item does not have a checkbox or a radiobutton associated with it.\n" + }, + "RadioButton": { + "details": "This menu item should draw a radiobutton.\n" + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell/QsMenuEntry.json b/modules_old/Quickshell/QsMenuEntry.json new file mode 100644 index 0000000..e59114c --- /dev/null +++ b/modules_old/Quickshell/QsMenuEntry.json @@ -0,0 +1,140 @@ +{ + "name": "QsMenuEntry", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "uncreatable" + ], + "properties": { + "hasChildren": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this menu item has children that can be accessed through a {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"QsMenuOpener\" mtype=\"\" mname=\"\" >}}.\n", + "flags": [ + "readonly" + ] + }, + "buttonType": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuButtonType" + }, + "details": "If this menu item has an associated checkbox or radiobutton.\n", + "flags": [ + "readonly" + ] + }, + "text": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Text of the menu item.\n", + "flags": [ + "readonly" + ] + }, + "icon": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Url of the menu item's icon or `\"\"` if it doesn't have one.\n\nThis can be passed to [Image.source](https://doc.qt.io/qt-6/qml-qtquick-image.html#source-prop)\nas shown below.\n\n```qml\nImage {\n source: menuItem.icon\n // To get the best image quality, set the image source size to the same size\n // as the rendered image.\n sourceSize.width: width\n sourceSize.height: height\n}\n```\n", + "flags": [ + "readonly" + ] + }, + "isSeparator": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If this menu item should be rendered as a separator between other items.\n\nNo other properties have a meaningful value when {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"isSeparator\" >}} is true.\n", + "flags": [ + "readonly" + ] + }, + "enabled": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "checkState": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": "The check state of the checkbox or radiobutton if applicable, as a\n[Qt.CheckState](https://doc.qt.io/qt-6/qt.html#CheckState-enum).\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "display", + "id": "display", + "details": "Display a platform menu at the given location relative to the parent window.\n", + "params": [ + { + "name": "parentWindow", + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + { + "name": "relativeX", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + }, + { + "name": "relativeY", + "type": { + "type": "qt", + "module": "qml", + "name": "int" + } + } + ] + } + ], + "signals": { + "triggered": { + "name": "triggered", + "details": "Send a trigger/click signal to the menu entry.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/QsMenuOpener.json b/modules_old/Quickshell/QsMenuOpener.json new file mode 100644 index 0000000..aeab557 --- /dev/null +++ b/modules_old/Quickshell/QsMenuOpener.json @@ -0,0 +1,41 @@ +{ + "name": "QsMenuOpener", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Provides access to children of a QsMenuEntry", + "details": "", + "properties": { + "menu": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuEntry" + }, + "details": "The menu to retrieve children from.\n" + }, + "children": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell", + "name": "QsMenuEntry" + } + }, + "details": "The children of the given menu.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/QsWindow.json b/modules_old/Quickshell/QsWindow.json new file mode 100644 index 0000000..24aef13 --- /dev/null +++ b/modules_old/Quickshell/QsWindow.json @@ -0,0 +1,113 @@ +{ + "name": "QsWindow", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Base class of Quickshell windows", + "details": "Base class of Quickshell windows\n### Attached properties\n`QSWindow` can be used as an attached object of anything that subclasses {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Item\" mtype=\"\" mname=\"\" >}}.\nIt provides the following properties\n- `window` - the `QSWindow` object.\n- `contentItem` - the `contentItem` property of the window.\n", + "flags": ["uncreatable"], + "properties": { + "width": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null + }, + "height": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null + }, + "data": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": null, + "flags": ["default", "readonly"] + }, + "backingWindowVisible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window is currently shown. You should generally prefer [prop||visible](#visible).\n\nThis property is useful for ensuring windows spawn in a specific order, and you should\nnot use it in place of [prop||visible](#visible).\n", + "flags": ["readonly"] + }, + "contentItem": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": null, + "flags": ["readonly"] + }, + "screen": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + }, + "details": "The screen that the window currently occupies.\n\nThis may be modified to move the window to the given screen.\n" + }, + "mask": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "Region" + }, + "details": "The clickthrough mask. Defaults to null.\n\nIf non null then the clickable areas of the window will be determined by the provided region.\n\n```qml\nShellWindow {\n // The mask region is set to `rect`, meaning only `rect` is clickable.\n // All other clicks pass through the window to ones behind it.\n mask: Region { item: rect }\n\n Rectangle {\n id: rect\n\n anchors.centerIn: parent\n width: 100\n height: 100\n }\n}\n```\n\nIf the provided region's intersection mode is `Combine` (the default),\nthen the region will be used as is. Otherwise it will be applied on top of the window region.\n\nFor example, setting the intersection mode to `Xor` will invert the mask and make everything in\nthe mask region not clickable and pass through clicks inside it through the window.\n\n```qml\nShellWindow {\n // The mask region is set to `rect`, but the intersection mode is set to `Xor`.\n // This inverts the mask causing all clicks inside `rect` to be passed to the window\n // behind this one.\n mask: Region { item: rect; intersection: Intersection.Xor }\n\n Rectangle {\n id: rect\n\n anchors.centerIn: parent\n width: 100\n height: 100\n }\n}\n```\n" + }, + "color": { + "type": { + "type": "qt", + "module": "qml", + "name": "color" + }, + "details": "The background color of the window. Defaults to white.\n\n{{< callout type=\"warning\" >}}\n This seems to behave weirdly when using transparent colors on some systems.\nUsing a colored content item over a transparent window is the recommended way to work around this:\n```qml\nProxyWindow {\n color: \"transparent\"\n Rectangle {\n anchors.fill: parent\n color: \"#20ffffff\"\n\n // your content here\n }\n}\n```\n\n{{< /callout >}}" + }, + "visible": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the window should be shown or hidden. Defaults to true.\n" + }, + "windowTransform": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "Opaque property that will receive an update when factors that affect the window's position\nand transform changed.\n\nThis property is intended to be used to force a binding update,\nalong with map[To|From]Item (which is not reactive).\n", + "flags": ["readonly"] + } + }, + "functions": [], + "signals": { + "windowConnected": { + "name": "windowConnected", + "details": null, + "params": [] + } + }, + "variants": {} +} diff --git a/modules_old/Quickshell/Quickshell.json b/modules_old/Quickshell/Quickshell.json new file mode 100644 index 0000000..4aef9e4 --- /dev/null +++ b/modules_old/Quickshell/Quickshell.json @@ -0,0 +1,149 @@ +{ + "name": "Quickshell", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": null, + "flags": [ + "singleton" + ], + "properties": { + "screens": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell", + "name": "ShellScreen" + } + }, + "details": "All currently connected screens.\n\nThis property updates as connected screens change.\n\n#### Reusing a window on every screen\n```qml\nShellRoot {\n Variants {\n // see Variants for details\n variants: Quickshell.screens\n PanelWindow {\n property var modelData\n screen: modelData\n }\n }\n}\n```\n\nThis creates an instance of your window once on every screen.\nAs screens are added or removed your window will be created or destroyed on those screens.\n", + "flags": [ + "readonly" + ] + }, + "watchFiles": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If true then the configuration will be reloaded whenever any files change.\nDefaults to true.\n" + }, + "workingDirectory": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Quickshell's working directory. Defaults to whereever quickshell was launched from.\n" + }, + "processId": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Quickshell's process id.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "variant" + }, + "name": "env", + "id": "env", + "details": "Returns the string value of an environment variable or null if it is not set.\n", + "params": [ + { + "name": "variable", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "iconPath", + "id": "iconPath", + "details": "Returns a string usable for a {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Image\" mtype=\"prop\" mname=\"source\" >}} for a given system icon.\n", + "params": [ + { + "name": "icon", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "reload", + "id": "reload", + "details": "Reload the shell.\n\n`hard` - perform a hard reload. If this is false, Quickshell will attempt to reuse windows\nthat already exist. If true windows will be recreated.\n\nSee {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Reloadable\" mtype=\"\" mname=\"\" >}} for more information on what can be reloaded and how.\n", + "params": [ + { + "name": "hard", + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + } + } + ] + } + ], + "signals": { + "reloadCompleted": { + "name": "reloadCompleted", + "details": "The reload sequence has completed successfully.\n", + "params": [] + }, + "reloadFailed": { + "name": "reloadFailed", + "details": "The reload sequence has failed.\n", + "params": [ + { + "name": "errorString", + "type": { + "type": "qt", + "module": "qml", + "name": "string" + } + } + ] + }, + "lastWindowClosed": { + "name": "lastWindowClosed", + "details": "Sent when the last window is closed.\n\nTo make the application exit when the last window is closed run `Qt.quit()`.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/QuickshellSettings.json b/modules_old/Quickshell/QuickshellSettings.json new file mode 100644 index 0000000..71502f0 --- /dev/null +++ b/modules_old/Quickshell/QuickshellSettings.json @@ -0,0 +1,42 @@ +{ + "name": "QuickshellSettings", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Accessor for some options under the Quickshell type.", + "details": "", + "flags": [ + "uncreatable" + ], + "properties": { + "watchFiles": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If true then the configuration will be reloaded whenever any files change.\nDefaults to true.\n" + }, + "workingDirectory": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "Quickshell's working directory. Defaults to whereever quickshell was launched from.\n" + } + }, + "functions": [], + "signals": { + "lastWindowClosed": { + "name": "lastWindowClosed", + "details": "Sent when the last window is closed.\n\nTo make the application exit when the last window is closed run `Qt.quit()`.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/Region.json b/modules_old/Quickshell/Region.json new file mode 100644 index 0000000..41a669a --- /dev/null +++ b/modules_old/Quickshell/Region.json @@ -0,0 +1,101 @@ +{ + "name": "Region", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A composable region used as a mask.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"QsWindow\" mtype=\"prop\" mname=\"mask\" >}}.\n", + "properties": { + "item": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": "The item that determines the geometry of the region.\n`item` overrides {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"x\" >}}, {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"y\" >}}, {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"width\" >}} and {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"height\" >}}.\n" + }, + "regions": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "local", + "module": "Quickshell", + "name": "Region" + } + }, + "details": "Regions to apply on top of this region.\n\nRegions can be nested to create a more complex region.\nFor example this will create a square region with a cutout in the middle.\n```qml\nRegion {\n width: 100; height: 100;\n\n Region {\n x: 50; y: 50;\n width: 50; height: 50;\n intersection: Intersection.Subtract\n }\n}\n```\n", + "flags": [ + "default", + "readonly" + ] + }, + "intersection": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "Intersection" + }, + "details": "The way this region interacts with its parent region. Defaults to `Combine`.\n" + }, + "y": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Defaults to 0. Does nothing if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"item\" >}} is set.\n" + }, + "width": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Defaults to 0. Does nothing if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"item\" >}} is set.\n" + }, + "height": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Defaults to 0. Does nothing if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"item\" >}} is set.\n" + }, + "shape": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "RegionShape" + }, + "details": "Defaults to `Rect`.\n" + }, + "x": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": "Defaults to 0. Does nothing if {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"item\" >}} is set.\n" + } + }, + "functions": [], + "signals": { + "childrenChanged": { + "name": "childrenChanged", + "details": null, + "params": [] + }, + "changed": { + "name": "changed", + "details": null, + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/RegionShape.json b/modules_old/Quickshell/RegionShape.json new file mode 100644 index 0000000..189e1cd --- /dev/null +++ b/modules_old/Quickshell/RegionShape.json @@ -0,0 +1,15 @@ +{ + "name": "RegionShape", + "module": "Quickshell", + "type": "enum", + "description": "Shape of a Region.", + "details": "See {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Region\" mtype=\"prop\" mname=\"shape\" >}}.\n", + "variants": { + "Ellipse": { + "details": null + }, + "Rect": { + "details": null + } + } +} \ No newline at end of file diff --git a/modules_old/Quickshell/Reloadable.json b/modules_old/Quickshell/Reloadable.json new file mode 100644 index 0000000..9561d0e --- /dev/null +++ b/modules_old/Quickshell/Reloadable.json @@ -0,0 +1,28 @@ +{ + "name": "Reloadable", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "The base class of all types that can be reloaded.", + "details": "Reloadables will attempt to take specific state from previous config revisions if possible.\nSome examples are {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"ProxyWindowBase\" mtype=\"\" mname=\"\" >}} and {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"PersistentProperties\" mtype=\"\" mname=\"\" >}}\n", + "flags": [ + "uncreatable" + ], + "properties": { + "reloadableId": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "An additional identifier that can be used to try to match a reloadable object to its\nprevious state.\n\nSimply keeping a stable identifier across config versions (saves) is\nenough to help the reloader figure out which object in the old revision corrosponds to\nthis object in the current revision, and facilitate smoother reloading.\n\nNote that identifiers are scoped, and will try to do the right thing in context.\nFor example if you have a {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Variants\" mtype=\"\" mname=\"\" >}} wrapping an object with an identified element inside,\na scope is created at the variant level.\n\n```qml\nVariants {\n // multiple variants of the same object tree\n variants: [ { foo: 1 }, { foo: 2 } ]\n\n // any non `Reloadable` object\n QtObject {\n FloatingWindow {\n // this FloatingWindow will now be matched to the same one in the previous\n // widget tree for its variant. \"myFloatingWindow\" refers to both the variant in\n // `foo: 1` and `foo: 2` for each tree.\n reloadableId: \"myFloatingWindow\"\n\n // ...\n }\n }\n}\n```\n" + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/Retainable.json b/modules_old/Quickshell/Retainable.json new file mode 100644 index 0000000..16954b2 --- /dev/null +++ b/modules_old/Quickshell/Retainable.json @@ -0,0 +1,76 @@ +{ + "name": "Retainable", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Attached object for types that can have delayed destruction.", + "details": "Retainable works as an attached property that allows objects to be\nkept around (retained) after they would normally be destroyed, which\nis especially useful for things like exit transitions.\n\nAn object that is retainable will have {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"\" mname=\"\" >}} as an attached property.\nAll retainable objects will say that they are retainable on their respective\ntypeinfo pages.\n\n{{< callout type=\"info\" >}}\n Working directly with {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"\" mname=\"\" >}} is often overly complicated and\nerror prone. For this reason {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"RetainableLock\" mtype=\"\" mname=\"\" >}} should\nusually be used instead.\n\n{{< /callout >}}", + "flags": [ + "uncreatable" + ], + "properties": { + "retained": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the object is currently in a retained state.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "forceUnlock", + "id": "forceUnlock", + "details": "Forcibly remove all locks, destroying the object.\n\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"unlock\" >}} should usually be preferred.\n", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "lock", + "id": "lock", + "details": "Hold a lock on the object so it cannot be destroyed.\n\nA counter is used to ensure you can lock the object from multiple places\nand it will not be unlocked until the same number of unlocks as locks have occurred.\n\n{{< callout type=\"warning\" >}}\n It is easy to forget to unlock a locked object.\nDoing so will create what is effectively a memory leak.\n\nUsing {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"RetainableLock\" mtype=\"\" mname=\"\" >}} is recommended as it will help\navoid this scenario and make misuse more obvious.\n\n{{< /callout >}}", + "params": [] + }, + { + "ret": { + "type": "qt", + "module": "qml", + "name": "void" + }, + "name": "unlock", + "id": "unlock", + "details": "Remove a lock on the object. See {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"func\" mname=\"lock\" >}} for more information.\n", + "params": [] + } + ], + "signals": { + "aboutToDestroy": { + "name": "aboutToDestroy", + "details": "This signal is sent immediately before the object is destroyed.\nAt this point destruction cannot be interrupted.\n", + "params": [] + }, + "dropped": { + "name": "dropped", + "details": "This signal is sent when the object would normally be destroyed.\n\nIf all signal handlers return and no locks are in place, the object will be destroyed.\nIf at least one lock is present the object will be retained until all are removed.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/RetainableLock.json b/modules_old/Quickshell/RetainableLock.json new file mode 100644 index 0000000..cc41bf6 --- /dev/null +++ b/modules_old/Quickshell/RetainableLock.json @@ -0,0 +1,55 @@ +{ + "name": "RetainableLock", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "A helper for easily using Retainable.", + "details": "A RetainableLock provides extra safety and ease of use for locking\n{{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"\" mname=\"\" >}} objects. A retainable object can be locked by multiple\nlocks at once, and each lock re-exposes relevant properties\nof the retained objects.\n\n#### Example\nThe code below will keep a retainable object alive for as long as the\nRetainableLock exists.\n\n```qml\nRetainableLock {\n object: aRetainableObject\n locked: true\n}\n```\n", + "properties": { + "object": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "The object to lock. Must be {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"\" mname=\"\" >}}.\n" + }, + "retained": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the object is currently in a retained state.\n", + "flags": [ + "readonly" + ] + }, + "locked": { + "type": { + "type": "qt", + "module": "qml", + "name": "bool" + }, + "details": "If the object should be locked.\n" + } + }, + "functions": [], + "signals": { + "aboutToDestroy": { + "name": "aboutToDestroy", + "details": "Rebroadcast of the object's {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"signal\" mname=\"aboutToDestroy\" >}}.\n", + "params": [] + }, + "dropped": { + "name": "dropped", + "details": "Rebroadcast of the object's {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Retainable\" mtype=\"signal\" mname=\"dropped\" >}}.\n", + "params": [] + } + }, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/Scope.json b/modules_old/Quickshell/Scope.json new file mode 100644 index 0000000..702e2fb --- /dev/null +++ b/modules_old/Quickshell/Scope.json @@ -0,0 +1,34 @@ +{ + "name": "Scope", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Scope that propagates reloads to child items in order.", + "details": "Convenience type equivalent to setting {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Reloadable\" mtype=\"prop\" mname=\"reloadableId\" >}} for all children.\n\nNote that this does not work for visible {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Item\" mtype=\"\" mname=\"\" >}}s (all widgets).\n\n```qml\nShellRoot {\n Variants {\n variants: ...\n\n Scope {\n // everything in here behaves the same as if it was defined\n // directly in `Variants` reload-wise.\n }\n }\n}\n", + "properties": { + "children": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": null, + "flags": [ + "default", + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/ShellRoot.json b/modules_old/Quickshell/ShellRoot.json new file mode 100644 index 0000000..d75b2da --- /dev/null +++ b/modules_old/Quickshell/ShellRoot.json @@ -0,0 +1,28 @@ +{ + "name": "ShellRoot", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Scope" + }, + "description": "Root config element", + "details": "", + "properties": { + "settings": { + "type": { + "type": "local", + "module": "Quickshell", + "name": "QuickshellSettings" + }, + "details": null, + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/ShellScreen.json b/modules_old/Quickshell/ShellScreen.json new file mode 100644 index 0000000..8972d2b --- /dev/null +++ b/modules_old/Quickshell/ShellScreen.json @@ -0,0 +1,142 @@ +{ + "name": "ShellScreen", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": null, + "details": "Monitor object useful for setting the monitor for a {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"QsWindow\" mtype=\"\" mname=\"\" >}}\nor querying information about the monitor.\n\n{{< callout type=\"warning\" >}}\n If the monitor is disconnected than any stored copies of its ShellMonitor will\nbe marked as dangling and all properties will return default values.\nReconnecting the monitor will not reconnect it to the ShellMonitor object.\n{{< /callout >}}\n\nDue to some technical limitations, it was not possible to reuse the native qml {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Screen\" mtype=\"\" mname=\"\" >}} type.\n", + "flags": [ + "uncreatable" + ], + "properties": { + "devicePixelRatio": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The ratio between physical pixels and device-independent (scaled) pixels.\n", + "flags": [ + "readonly" + ] + }, + "width": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "orientation": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "logicalPixelDensity": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The number of device-independent (scaled) pixels per millimeter.\n", + "flags": [ + "readonly" + ] + }, + "primatyOrientation": { + "type": { + "type": "unknown", + "module": "", + "name": "" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "y": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "name": { + "type": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "details": "The name of the screen as seen by the operating system.\n\nUsually something like `DP-1`, `HDMI-1`, `eDP-1`.\n", + "flags": [ + "readonly" + ] + }, + "height": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "x": { + "type": { + "type": "qt", + "module": "qml", + "name": "int" + }, + "details": null, + "flags": [ + "readonly" + ] + }, + "physicalPixelDensity": { + "type": { + "type": "qt", + "module": "qml", + "name": "real" + }, + "details": "The number of physical pixels per millimeter.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [ + { + "ret": { + "type": "qt", + "module": "qml", + "name": "string" + }, + "name": "toString", + "id": "toString", + "details": null, + "params": [] + } + ], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/Singleton.json b/modules_old/Quickshell/Singleton.json new file mode 100644 index 0000000..9651e88 --- /dev/null +++ b/modules_old/Quickshell/Singleton.json @@ -0,0 +1,16 @@ +{ + "name": "Singleton", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Scope" + }, + "description": "The root component for reloadable singletons.", + "details": "All singletons should inherit from this type.\n", + "properties": {}, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/TransformWatcher.json b/modules_old/Quickshell/TransformWatcher.json new file mode 100644 index 0000000..48a48d7 --- /dev/null +++ b/modules_old/Quickshell/TransformWatcher.json @@ -0,0 +1,52 @@ +{ + "name": "TransformWatcher", + "module": "Quickshell", + "type": "class", + "super": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "description": "Monitor of all geometry changes between two objects.", + "details": "The TransformWatcher monitors all properties that affect the geometry\nof two {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Item\" mtype=\"\" mname=\"\" >}}s relative to eachother.\n\n{{< callout type=\"info\" >}}\n The algorithm responsible for determining the relationship\nbetween `a` and `b` is biased towards `a` being a parent of `b`,\nor `a` being closer to the common parent of `a` and `b` than `b`.\n\n{{< /callout >}}", + "properties": { + "commonParent": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": "Known common parent of both `a` and `b`. Defaults to `null`.\n\nThis property can be used to optimize the algorithm that figures out\nthe relationship between `a` and `b`. Setting it to something that is not\na common parent of both `a` and `b` will prevent the path from being determined\ncorrectly, and setting it to `null` will disable the optimization.\n" + }, + "transform": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + }, + "details": "This property is updated whenever the geometry of any item in the path from `a` to `b` changes.\n\nIts value is undefined, and is intended to trigger an expression update.\n", + "flags": [ + "readonly" + ] + }, + "b": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": null + }, + "a": { + "type": { + "type": "qt", + "module": "qml.QtQuick", + "name": "Item" + }, + "details": null + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/Variants.json b/modules_old/Quickshell/Variants.json new file mode 100644 index 0000000..44ff9a5 --- /dev/null +++ b/modules_old/Quickshell/Variants.json @@ -0,0 +1,57 @@ +{ + "name": "Variants", + "module": "Quickshell", + "type": "class", + "super": { + "type": "local", + "module": "Quickshell", + "name": "Reloadable" + }, + "description": "Creates instances of a component based on a given model.", + "details": "Creates and destroys instances of the given component when the given property changes.\n\n`Variants` is similar to {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Repeater\" mtype=\"\" mname=\"\" >}} except it is for *non {{< qmltypelink type=\"qt\" module=\"qml.QtQuick\" name=\"Item\" mtype=\"\" mname=\"\" >}}* objects, and acts as\na reload scope.\n\nEach non duplicate value passed to {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"model\" >}} will create a new instance of\n{{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"delegate\" >}} with a `modelData` property set to that value.\n\nSee {{< qmltypelink type=\"local\" module=\"Quickshell\" name=\"Quickshell\" mtype=\"prop\" mname=\"screens\" >}} for an example of using `Variants` to create copies of a window per\nscreen.\n\n{{< callout type=\"warning\" >}}\n BUG: Variants currently fails to reload children if the variant set is changed as\nit is instantiated. (usually due to a mutation during variant creation)\n\n{{< /callout >}}", + "properties": { + "model": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml", + "name": "variant" + } + }, + "details": "The list of sets of properties to create instances with.\nEach set creates an instance of the component, which are updated when the input sets update.\n" + }, + "delegate": { + "type": { + "type": "qt", + "module": "qml.QtQml", + "name": "Component" + }, + "details": "The component to create instances of.\n\nThe delegate should define a `modelData` property that will be popuplated with a value\nfrom the {{< qmltypelink type=\"\" module=\"\" name=\"\" mtype=\"prop\" mname=\"model\" >}}.\n", + "flags": [ + "default" + ] + }, + "instances": { + "type": { + "type": "qt", + "module": "qml", + "name": "list", + "of": { + "type": "qt", + "module": "qml.QtQml", + "name": "QtObject" + } + }, + "details": "Current instances of the delegate.\n", + "flags": [ + "readonly" + ] + } + }, + "functions": [], + "signals": {}, + "variants": {} +} \ No newline at end of file diff --git a/modules_old/Quickshell/index.json b/modules_old/Quickshell/index.json new file mode 100644 index 0000000..64ddf82 --- /dev/null +++ b/modules_old/Quickshell/index.json @@ -0,0 +1,5 @@ +{ + "name": "Quickshell", + "description": "Core Quickshell types", + "details": "" +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..93475a6 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7728 @@ +{ + "name": "quickshell-docs", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "quickshell-docs", + "version": "0.0.1", + "dependencies": { + "@ark-ui/solid": "^3.5.0", + "@astrojs/check": "^0.9.3", + "@astrojs/mdx": "^3.1.4", + "@astrojs/solid-js": "^4.4.1", + "@types/node": "^20.14.11", + "astro": "^4.14.5", + "astro-breadcrumbs": "^2.3.1", + "astro-pagefind": "^1.6.0", + "fuse.js": "^7.0.0", + "marked": "^14.1.0", + "marked-alert": "^2.0.2", + "node": "npm:22.7.0", + "remark-github-blockquote-alert": "^1.2.1", + "remark-parse": "^11.0.0", + "solid-devtools": "^0.30.1", + "solid-js": "^1.8.18", + "typescript": "^5.5.3" + }, + "devDependencies": { + "@astrojs/ts-plugin": "^1.10.1", + "@biomejs/biome": "^1.8.3", + "@hbsnow/rehype-sectionize": "^1.0.7", + "shiki": "^1.11.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ark-ui/solid": { + "version": "3.5.0", + "license": "MIT", + "dependencies": { + "@zag-js/accordion": "0.59.0", + "@zag-js/anatomy": "0.59.0", + "@zag-js/avatar": "0.59.0", + "@zag-js/carousel": "0.59.0", + "@zag-js/checkbox": "0.59.0", + "@zag-js/clipboard": "0.59.0", + "@zag-js/collapsible": "0.59.0", + "@zag-js/color-picker": "0.59.0", + "@zag-js/combobox": "0.59.0", + "@zag-js/date-picker": "0.59.0", + "@zag-js/dialog": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/editable": "0.59.0", + "@zag-js/file-upload": "0.59.0", + "@zag-js/file-utils": "0.59.0", + "@zag-js/hover-card": "0.59.0", + "@zag-js/i18n-utils": "0.59.0", + "@zag-js/menu": "0.59.0", + "@zag-js/number-input": "0.59.0", + "@zag-js/pagination": "0.59.0", + "@zag-js/pin-input": "0.59.0", + "@zag-js/popover": "0.59.0", + "@zag-js/presence": "0.59.0", + "@zag-js/progress": "0.59.0", + "@zag-js/qr-code": "0.59.0", + "@zag-js/radio-group": "0.59.0", + "@zag-js/rating-group": "0.59.0", + "@zag-js/select": "0.59.0", + "@zag-js/signature-pad": "0.59.0", + "@zag-js/slider": "0.59.0", + "@zag-js/solid": "0.59.0", + "@zag-js/splitter": "0.59.0", + "@zag-js/switch": "0.59.0", + "@zag-js/tabs": "0.59.0", + "@zag-js/tags-input": "0.59.0", + "@zag-js/toast": "0.59.0", + "@zag-js/toggle-group": "0.59.0", + "@zag-js/tooltip": "0.59.0", + "@zag-js/tree-view": "0.59.0", + "@zag-js/types": "0.59.0" + }, + "peerDependencies": { + "solid-js": ">=1.6.0" + } + }, + "node_modules/@astrojs/check": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.9.3.tgz", + "integrity": "sha512-I6Dz45bMI5YRbp4yK2LKWsHH3/kkHRGdPGruGkLap6pqxhdcNh7oCgN04Ac+haDfc9ow5BYPGPmEhkwef15GQQ==", + "license": "MIT", + "dependencies": { + "@astrojs/language-server": "^2.14.1", + "chokidar": "^3.5.3", + "fast-glob": "^3.3.1", + "kleur": "^4.1.5", + "yargs": "^17.7.2" + }, + "bin": { + "astro-check": "dist/bin.js" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, + "node_modules/@astrojs/compiler": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.10.3.tgz", + "integrity": "sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==", + "license": "MIT" + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.4.1", + "license": "MIT" + }, + "node_modules/@astrojs/language-server": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.14.1.tgz", + "integrity": "sha512-mkKtCTPRD4dyKdAqIP0zmmPyO/ZABOqFESnaVca47Dg/sAagJnDSEsDUDzNbHFh1+9Dj1o5y4iwNsxJboGdaNg==", + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.10.3", + "@astrojs/yaml2ts": "^0.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@volar/kit": "~2.4.0", + "@volar/language-core": "~2.4.0", + "@volar/language-server": "~2.4.0", + "@volar/language-service": "~2.4.0", + "@volar/typescript": "~2.4.0", + "fast-glob": "^3.2.12", + "muggle-string": "^0.4.1", + "volar-service-css": "0.0.61", + "volar-service-emmet": "0.0.61", + "volar-service-html": "0.0.61", + "volar-service-prettier": "0.0.61", + "volar-service-typescript": "0.0.61", + "volar-service-typescript-twoslash-queries": "0.0.61", + "volar-service-yaml": "0.0.61", + "vscode-html-languageservice": "^5.2.0", + "vscode-uri": "^3.0.8" + }, + "bin": { + "astro-ls": "bin/nodeServer.js" + }, + "peerDependencies": { + "prettier": "^3.0.0", + "prettier-plugin-astro": ">=0.11.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + } + } + }, + "node_modules/@astrojs/markdown-remark": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "@astrojs/prism": "3.1.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.1", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.1.0", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.0", + "remark-gfm": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.0", + "remark-smartypants": "^3.0.2", + "shiki": "^1.10.3", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1", + "vfile": "^6.0.2" + } + }, + "node_modules/@astrojs/mdx": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-3.1.4.tgz", + "integrity": "sha512-AcdcAlDpzTM5LHpur7A3NWoIqyfhH1gZNbTvvjiUlDEo7eJjIxl4gdWrb/kZZRfLBEuM8cptCB+Qk11ncQL4IA==", + "license": "MIT", + "dependencies": { + "@astrojs/markdown-remark": "5.2.0", + "@mdx-js/mdx": "^3.0.1", + "acorn": "^8.12.1", + "es-module-lexer": "^1.5.4", + "estree-util-visit": "^2.0.0", + "gray-matter": "^4.0.3", + "hast-util-to-html": "^9.0.1", + "kleur": "^4.1.5", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.0", + "remark-smartypants": "^3.0.2", + "source-map": "^0.7.4", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.2" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" + }, + "peerDependencies": { + "astro": "^4.8.0" + } + }, + "node_modules/@astrojs/prism": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "prismjs": "^1.29.0" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" + } + }, + "node_modules/@astrojs/solid-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/solid-js/-/solid-js-4.4.1.tgz", + "integrity": "sha512-C8t+0sK8myZ9xJyL+GvNo0LjiqL8KTAJReb8Bn+0WjsOfCm+0N8GKQdBt5Gqf9Ig59KVZon3ydGa6GmqrkCojw==", + "license": "MIT", + "dependencies": { + "vite-plugin-solid": "^2.10.2" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" + }, + "peerDependencies": { + "solid-devtools": "^0.30.1", + "solid-js": "^1.8.5" + }, + "peerDependenciesMeta": { + "solid-devtools": { + "optional": true + } + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "ci-info": "^4.0.0", + "debug": "^4.3.4", + "dlv": "^1.1.3", + "dset": "^3.1.3", + "is-docker": "^3.0.0", + "is-wsl": "^3.0.0", + "which-pm-runs": "^1.1.0" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" + } + }, + "node_modules/@astrojs/ts-plugin": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@astrojs/ts-plugin/-/ts-plugin-1.10.1.tgz", + "integrity": "sha512-T7Z8fob6bkgLlcYiJSsn84wF5XelS0VJSEC4BRPnEHZj3eeOrmmMl8uZqBTJ+zArGMOfyhhA7X+SUGRIAZApHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.10.3", + "@astrojs/yaml2ts": "^0.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@volar/language-core": "~2.4.0", + "@volar/typescript": "~2.4.0", + "semver": "^7.3.8", + "vscode-languageserver-textdocument": "^1.0.11" + } + }, + "node_modules/@astrojs/yaml2ts": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.1.tgz", + "integrity": "sha512-CBaNwDQJz20E5WxzQh4thLVfhB3JEEGz72wRA+oJp6fQR37QLAqXZJU0mHC+yqMOQ6oj0GfRPJrz6hjf+zm6zA==", + "license": "MIT", + "dependencies": { + "yaml": "^2.5.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz", + "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.4", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", + "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.7", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", + "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.4", + "@babel/parser": "^7.25.4", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.4", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@biomejs/biome": { + "version": "1.8.3", + "dev": true, + "hasInstallScript": true, + "license": "MIT OR Apache-2.0", + "bin": { + "biome": "bin/biome" + }, + "engines": { + "node": ">=14.21.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/biome" + }, + "optionalDependencies": { + "@biomejs/cli-darwin-arm64": "1.8.3", + "@biomejs/cli-darwin-x64": "1.8.3", + "@biomejs/cli-linux-arm64": "1.8.3", + "@biomejs/cli-linux-arm64-musl": "1.8.3", + "@biomejs/cli-linux-x64": "1.8.3", + "@biomejs/cli-linux-x64-musl": "1.8.3", + "@biomejs/cli-win32-arm64": "1.8.3", + "@biomejs/cli-win32-x64": "1.8.3" + } + }, + "node_modules/@biomejs/cli-linux-x64": { + "version": "1.8.3", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@emmetio/abbreviation": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", + "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==", + "license": "MIT", + "dependencies": { + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/css-abbreviation": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz", + "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==", + "license": "MIT", + "dependencies": { + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/css-parser": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.0.tgz", + "integrity": "sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==", + "license": "MIT", + "dependencies": { + "@emmetio/stream-reader": "^2.2.0", + "@emmetio/stream-reader-utils": "^0.1.0" + } + }, + "node_modules/@emmetio/html-matcher": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@emmetio/html-matcher/-/html-matcher-1.3.0.tgz", + "integrity": "sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==", + "license": "ISC", + "dependencies": { + "@emmetio/scanner": "^1.0.0" + } + }, + "node_modules/@emmetio/scanner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz", + "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==", + "license": "MIT" + }, + "node_modules/@emmetio/stream-reader": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz", + "integrity": "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==", + "license": "MIT" + }, + "node_modules/@emmetio/stream-reader-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz", + "integrity": "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==", + "license": "MIT" + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.5", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.5" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.6", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.3" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.5", + "license": "MIT" + }, + "node_modules/@hbsnow/rehype-sectionize": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@hbsnow/rehype-sectionize/-/rehype-sectionize-1.0.7.tgz", + "integrity": "sha512-twbVxCFf4YwgTm6FIdGtHfJ14vvIHedk2fqZTpE3X6+vszEeZlMTy7tOyI9KaP/6S2DN2Jnk7zZGtZANTD+vEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hast-util-heading": "^2.0.1", + "hast-util-heading-rank": "^2.1.1", + "rehype": "^12.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/hast-util-from-parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", + "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/hast-util-parse-selector": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", + "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/hast-util-raw": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz", + "integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-util-from-parse5": "^7.0.0", + "hast-util-to-parse5": "^7.0.0", + "html-void-elements": "^2.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/hast-util-to-html": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz", + "integrity": "sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^7.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/hast-util-to-parse5": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz", + "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/hast-util-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/hastscript": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", + "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/rehype": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-12.0.1.tgz", + "integrity": "sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "rehype-parse": "^8.0.0", + "rehype-stringify": "^9.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/rehype-parse": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.5.tgz", + "integrity": "sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^7.0.0", + "parse5": "^6.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/rehype-stringify": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.4.tgz", + "integrity": "sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-to-html": "^8.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/vfile-location": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", + "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hbsnow/rehype-sectionize/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.2", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.4", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.2" + } + }, + "node_modules/@internationalized/date": { + "version": "3.5.4", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.5.3", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.1.tgz", + "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-to-js": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nothing-but/utils": { + "version": "0.12.1", + "license": "MIT" + }, + "node_modules/@oslojs/encoding": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-0.4.1.tgz", + "integrity": "sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q==", + "license": "MIT" + }, + "node_modules/@pagefind/darwin-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.1.1.tgz", + "integrity": "sha512-tZ9tysUmQpFs2EqWG2+E1gc+opDAhSyZSsgKmFzhnWfkK02YHZhvL5XJXEZDqYy3s1FAKhwjTg8XDxneuBlDZQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/darwin-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.1.1.tgz", + "integrity": "sha512-ChohLQ39dLwaxQv0jIQB/SavP3TM5K5ENfDTqIdzLkmfs3+JlzSDyQKcJFjTHYcCzQOZVeieeGq8PdqvLJxJxQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/default-ui": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.1.1.tgz", + "integrity": "sha512-ZM0zDatWDnac/VGHhQCiM7UgA4ca8jpjA+VfuTJyHJBaxGqZMQnm4WoTz9E0KFcue1Bh9kxpu7uWFZfwpZZk0A==", + "license": "MIT" + }, + "node_modules/@pagefind/linux-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.1.1.tgz", + "integrity": "sha512-H5P6wDoCoAbdsWp0Zx0DxnLUrwTGWGLu/VI1rcN2CyFdY2EGSvPQsbGBMrseKRNuIrJDFtxHHHyjZ7UbzaM9EA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/linux-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.1.1.tgz", + "integrity": "sha512-yJs7tTYbL2MI3HT+ngs9E1BfUbY9M4/YzA0yEM5xBo4Xl8Yu8Qg2xZTOQ1/F6gwvMrjCUFo8EoACs6LRDhtMrQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/windows-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.1.1.tgz", + "integrity": "sha512-b7/qPqgIl+lMzkQ8fJt51SfguB396xbIIR+VZ3YrL2tLuyifDJ1wL5mEm+ddmHxJ2Fki340paPcDan9en5OmAw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "license": "MIT" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz", + "integrity": "sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.0.tgz", + "integrity": "sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.0.tgz", + "integrity": "sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz", + "integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.0.tgz", + "integrity": "sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.0.tgz", + "integrity": "sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.0.tgz", + "integrity": "sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.0.tgz", + "integrity": "sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.0.tgz", + "integrity": "sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.0.tgz", + "integrity": "sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.0.tgz", + "integrity": "sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.0.tgz", + "integrity": "sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.0.tgz", + "integrity": "sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.0.tgz", + "integrity": "sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.0.tgz", + "integrity": "sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.0.tgz", + "integrity": "sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.14.1.tgz", + "integrity": "sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.4" + } + }, + "node_modules/@solid-devtools/debugger": { + "version": "0.23.4", + "license": "MIT", + "dependencies": { + "@nothing-but/utils": "~0.12.0", + "@solid-devtools/shared": "^0.13.2", + "@solid-primitives/bounds": "^0.0.118", + "@solid-primitives/cursor": "^0.0.112", + "@solid-primitives/event-bus": "^1.0.8", + "@solid-primitives/event-listener": "^2.3.0", + "@solid-primitives/keyboard": "^1.2.5", + "@solid-primitives/platform": "^0.1.0", + "@solid-primitives/rootless": "^1.4.2", + "@solid-primitives/scheduled": "^1.4.1", + "@solid-primitives/static-store": "^0.0.5", + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.8.0" + } + }, + "node_modules/@solid-devtools/shared": { + "version": "0.13.2", + "license": "MIT", + "dependencies": { + "@solid-primitives/event-bus": "^1.0.8", + "@solid-primitives/event-listener": "^2.3.0", + "@solid-primitives/media": "^2.2.5", + "@solid-primitives/refs": "^1.0.5", + "@solid-primitives/rootless": "^1.4.2", + "@solid-primitives/scheduled": "^1.4.1", + "@solid-primitives/static-store": "^0.0.5", + "@solid-primitives/styles": "^0.0.111", + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.8.0" + } + }, + "node_modules/@solid-primitives/bounds": { + "version": "0.0.118", + "license": "MIT", + "dependencies": { + "@solid-primitives/event-listener": "^2.3.0", + "@solid-primitives/resize-observer": "^2.0.22", + "@solid-primitives/static-store": "^0.0.5", + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/cursor": { + "version": "0.0.112", + "license": "MIT", + "dependencies": { + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/event-bus": { + "version": "1.0.11", + "license": "MIT", + "dependencies": { + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/event-listener": { + "version": "2.3.3", + "license": "MIT", + "dependencies": { + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/keyboard": { + "version": "1.2.8", + "license": "MIT", + "dependencies": { + "@solid-primitives/event-listener": "^2.3.3", + "@solid-primitives/rootless": "^1.4.5", + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/media": { + "version": "2.2.9", + "license": "MIT", + "dependencies": { + "@solid-primitives/event-listener": "^2.3.3", + "@solid-primitives/rootless": "^1.4.5", + "@solid-primitives/static-store": "^0.0.8", + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/media/node_modules/@solid-primitives/static-store": { + "version": "0.0.8", + "license": "MIT", + "dependencies": { + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/platform": { + "version": "0.1.2", + "license": "MIT", + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/refs": { + "version": "1.0.8", + "license": "MIT", + "dependencies": { + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/resize-observer": { + "version": "2.0.26", + "license": "MIT", + "dependencies": { + "@solid-primitives/event-listener": "^2.3.3", + "@solid-primitives/rootless": "^1.4.5", + "@solid-primitives/static-store": "^0.0.8", + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/resize-observer/node_modules/@solid-primitives/static-store": { + "version": "0.0.8", + "license": "MIT", + "dependencies": { + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/rootless": { + "version": "1.4.5", + "license": "MIT", + "dependencies": { + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/scheduled": { + "version": "1.4.3", + "license": "MIT", + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/static-store": { + "version": "0.0.5", + "license": "MIT", + "dependencies": { + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/styles": { + "version": "0.0.111", + "license": "MIT", + "dependencies": { + "@solid-primitives/rootless": "^1.4.2", + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/utils": { + "version": "6.2.3", + "license": "MIT", + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.12", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "license": "MIT" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "20.14.11", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "license": "ISC" + }, + "node_modules/@volar/kit": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.0.tgz", + "integrity": "sha512-uqwtPKhrbnP+3f8hs+ltDYXLZ6Wdbs54IzkaPocasI4aBhqWLht5qXctE1MqpZU52wbH359E0u9nhxEFmyon+w==", + "license": "MIT", + "dependencies": { + "@volar/language-service": "2.4.0", + "@volar/typescript": "2.4.0", + "typesafe-path": "^0.2.2", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0.tgz", + "integrity": "sha512-FTla+khE+sYK0qJP+6hwPAAUwiNHVMph4RUXpxf/FIPKUP61NFrVZorml4mjFShnueR2y9/j8/vnh09YwVdH7A==", + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.0" + } + }, + "node_modules/@volar/language-server": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.0.tgz", + "integrity": "sha512-rmGIjAxWekWQiGH97Mosb4juiD/hfFYNQKV5Py9r7vDOLSkbIwRhITbwHm88NJKs8P6TNc6w/PfBXN6yjKadJg==", + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.0", + "@volar/language-service": "2.4.0", + "@volar/typescript": "2.4.0", + "path-browserify": "^1.0.1", + "request-light": "^0.7.0", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@volar/language-service": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.0.tgz", + "integrity": "sha512-4P3yeQXIL68mLfS3n6P3m02IRg3GnLHUU9k/1PCHEfm5FG9bySkDOc72dbBn2vAa2BxOqm18bmmZXrsWuQ5AOw==", + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.0", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0.tgz", + "integrity": "sha512-2ceY8/NEZvN6F44TXw2qRP6AQsvCYhV2bxaBPWxV9HqIfkbRydSksTFObCF1DBDNBfKiZTS8G/4vqV6cvjdOIQ==", + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0.tgz", + "integrity": "sha512-9zx3lQWgHmVd+JRRAHUSRiEhe4TlzL7U7e6ulWXOxHH/WNYxzKwCvZD7WYWEZFdw4dHfTD9vUR0yPQO6GilCaQ==", + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.0", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vscode/emmet-helper": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.9.3.tgz", + "integrity": "sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==", + "license": "MIT", + "dependencies": { + "emmet": "^2.4.3", + "jsonc-parser": "^2.3.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-uri": "^2.1.2" + } + }, + "node_modules/@vscode/emmet-helper/node_modules/vscode-uri": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==", + "license": "MIT" + }, + "node_modules/@vscode/l10n": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", + "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", + "license": "MIT" + }, + "node_modules/@zag-js/accordion": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/anatomy": { + "version": "0.59.0", + "license": "MIT" + }, + "node_modules/@zag-js/aria-hidden": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.59.0" + } + }, + "node_modules/@zag-js/auto-resize": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.59.0" + } + }, + "node_modules/@zag-js/avatar": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/carousel": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/checkbox": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/clipboard": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/collapsible": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/collection": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/color-picker": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/color-utils": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dismissable": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/popper": "0.59.0", + "@zag-js/text-selection": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/color-utils": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/numeric-range": "0.59.0" + } + }, + "node_modules/@zag-js/combobox": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/aria-hidden": "0.59.0", + "@zag-js/collection": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dismissable": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/popper": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/core": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/store": "0.59.0", + "klona": "2.0.6" + } + }, + "node_modules/@zag-js/date-picker": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@internationalized/date": "3.5.4", + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/date-utils": "0.59.0", + "@zag-js/dismissable": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/live-region": "0.59.0", + "@zag-js/popper": "0.59.0", + "@zag-js/text-selection": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/date-utils": { + "version": "0.59.0", + "license": "MIT", + "peerDependencies": { + "@internationalized/date": ">=3.0.0" + } + }, + "node_modules/@zag-js/dialog": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/aria-hidden": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dismissable": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/remove-scroll": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0", + "focus-trap": "7.5.4" + } + }, + "node_modules/@zag-js/dismissable": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/interact-outside": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/dom-event": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.59.0", + "@zag-js/text-selection": "0.59.0", + "@zag-js/types": "0.59.0" + } + }, + "node_modules/@zag-js/dom-query": { + "version": "0.59.0", + "license": "MIT" + }, + "node_modules/@zag-js/editable": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/interact-outside": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/element-rect": { + "version": "0.59.0", + "license": "MIT" + }, + "node_modules/@zag-js/element-size": { + "version": "0.59.0", + "license": "MIT" + }, + "node_modules/@zag-js/file-upload": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/file-utils": "0.59.0", + "@zag-js/i18n-utils": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/file-utils": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/i18n-utils": "0.59.0" + } + }, + "node_modules/@zag-js/form-utils": { + "version": "0.59.0", + "license": "MIT" + }, + "node_modules/@zag-js/hover-card": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dismissable": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/popper": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/i18n-utils": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.59.0" + } + }, + "node_modules/@zag-js/interact-outside": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/live-region": { + "version": "0.59.0", + "license": "MIT" + }, + "node_modules/@zag-js/menu": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dismissable": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/popper": "0.59.0", + "@zag-js/rect-utils": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/number-input": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@internationalized/number": "3.5.3", + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/number-utils": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/number-utils": { + "version": "0.59.0", + "license": "MIT" + }, + "node_modules/@zag-js/numeric-range": { + "version": "0.59.0", + "license": "MIT" + }, + "node_modules/@zag-js/pagination": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/pin-input": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/popover": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/aria-hidden": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dismissable": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/popper": "0.59.0", + "@zag-js/remove-scroll": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0", + "focus-trap": "7.5.4" + } + }, + "node_modules/@zag-js/popper": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "1.6.6", + "@zag-js/dom-query": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/presence": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/core": "0.59.0", + "@zag-js/types": "0.59.0" + } + }, + "node_modules/@zag-js/progress": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/qr-code": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0", + "proxy-memoize": "3.0.0", + "uqr": "0.1.2" + } + }, + "node_modules/@zag-js/radio-group": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/element-rect": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/rating-group": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/rect-utils": { + "version": "0.59.0", + "license": "MIT" + }, + "node_modules/@zag-js/remove-scroll": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.59.0" + } + }, + "node_modules/@zag-js/select": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/collection": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dismissable": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/popper": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/signature-pad": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0", + "perfect-freehand": "^1.2.2" + } + }, + "node_modules/@zag-js/slider": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/element-size": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/numeric-range": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/solid": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/core": "0.59.0", + "@zag-js/store": "0.59.0", + "@zag-js/types": "0.59.0" + }, + "peerDependencies": { + "solid-js": ">=1.1.3" + } + }, + "node_modules/@zag-js/splitter": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/number-utils": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/store": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "proxy-compare": "3.0.0" + } + }, + "node_modules/@zag-js/switch": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/tabs": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/element-rect": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/tags-input": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/auto-resize": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/form-utils": "0.59.0", + "@zag-js/interact-outside": "0.59.0", + "@zag-js/live-region": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/text-selection": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.59.0" + } + }, + "node_modules/@zag-js/toast": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dismissable": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/toggle-group": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/tooltip": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/popper": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/tree-view": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.59.0", + "@zag-js/core": "0.59.0", + "@zag-js/dom-event": "0.59.0", + "@zag-js/dom-query": "0.59.0", + "@zag-js/types": "0.59.0", + "@zag-js/utils": "0.59.0" + } + }, + "node_modules/@zag-js/types": { + "version": "0.59.0", + "license": "MIT", + "dependencies": { + "csstype": "3.1.3" + } + }, + "node_modules/@zag-js/utils": { + "version": "0.59.0", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.12.1", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/astro": { + "version": "4.14.5", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.14.5.tgz", + "integrity": "sha512-sv47kPE6FnvyxxHHcCePNwTKpOMKBq0r1m6WZYg6ag9j3yF9m72ov64NFB7c+hAMDUKgsHfVdLKjOOqDC/c+fA==", + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.10.3", + "@astrojs/internal-helpers": "0.4.1", + "@astrojs/markdown-remark": "5.2.0", + "@astrojs/telemetry": "3.1.0", + "@babel/core": "^7.25.2", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/traverse": "^7.25.3", + "@babel/types": "^7.25.2", + "@oslojs/encoding": "^0.4.1", + "@rollup/pluginutils": "^5.1.0", + "@types/babel__core": "^7.20.5", + "@types/cookie": "^0.6.0", + "acorn": "^8.12.1", + "aria-query": "^5.3.0", + "axobject-query": "^4.1.0", + "boxen": "7.1.1", + "ci-info": "^4.0.0", + "clsx": "^2.1.1", + "common-ancestor-path": "^1.0.1", + "cookie": "^0.6.0", + "cssesc": "^3.0.0", + "debug": "^4.3.6", + "deterministic-object-hash": "^2.0.2", + "devalue": "^5.0.0", + "diff": "^5.2.0", + "dlv": "^1.1.3", + "dset": "^3.1.3", + "es-module-lexer": "^1.5.4", + "esbuild": "^0.21.5", + "estree-walker": "^3.0.3", + "execa": "^8.0.1", + "fast-glob": "^3.3.2", + "flattie": "^1.1.1", + "github-slugger": "^2.0.0", + "gray-matter": "^4.0.3", + "html-escaper": "^3.0.3", + "http-cache-semantics": "^4.1.1", + "js-yaml": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.11", + "micromatch": "^4.0.7", + "mrmime": "^2.0.0", + "neotraverse": "^0.6.18", + "ora": "^8.0.1", + "p-limit": "^6.1.0", + "p-queue": "^8.0.1", + "path-to-regexp": "^6.2.2", + "preferred-pm": "^4.0.0", + "prompts": "^2.4.2", + "rehype": "^13.0.1", + "semver": "^7.6.3", + "shiki": "^1.14.1", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "tsconfck": "^3.1.1", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.2", + "vite": "^5.4.1", + "vitefu": "^0.2.5", + "which-pm": "^3.0.0", + "xxhash-wasm": "^1.0.2", + "yargs-parser": "^21.1.1", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.23.2", + "zod-to-ts": "^1.2.0" + }, + "bin": { + "astro": "astro.js" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "optionalDependencies": { + "sharp": "^0.33.3" + } + }, + "node_modules/astro-breadcrumbs": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/astro-breadcrumbs/-/astro-breadcrumbs-2.3.1.tgz", + "integrity": "sha512-9SUAGZiUP9iCnYOdtngZpHk1Fyge78T3tR7QR1mdx5qjOv1jIGXxtqCdxL84rMJsxgGg+NEI72rb1lK7AeCb+w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/felix-berlin" + }, + { + "type": "Ko-fi", + "url": "https://ko-fi.com/felixberlin" + }, + { + "type": "PayPal", + "url": "https://paypal.me/FelixScholze" + }, + { + "type": "Buy me a coffee", + "url": "https://www.buymeacoffee.com/felixberlin" + } + ], + "license": "GPL-3.0", + "workspaces": [ + "demo", + "docs" + ], + "peerDependencies": { + "astro": "^2.0.0-beta.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/astro-pagefind": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/astro-pagefind/-/astro-pagefind-1.6.0.tgz", + "integrity": "sha512-U/WuE0ktkZkoFJf6yopWO4DjIJ3+wrnopE2L3kUYiyqNTJpqmp13bFLR8gir6B+KzQ5dsXQtJZYTQtKJg1FxIA==", + "license": "MIT", + "dependencies": { + "@pagefind/default-ui": "^1.0.3", + "pagefind": "^1.0.3", + "sirv": "^2.0.3" + }, + "peerDependencies": { + "astro": "^2.0.4 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/astro/node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/astro/node_modules/emoji-regex": { + "version": "10.3.0", + "license": "MIT" + }, + "node_modules/astro/node_modules/js-yaml": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/astro/node_modules/string-width": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-plugin-jsx-dom-expressions": { + "version": "0.37.23", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "7.18.6", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.20.7", + "html-entities": "2.3.3", + "validate-html-nesting": "^1.2.1" + }, + "peerDependencies": { + "@babel/core": "^7.20.12" + } + }, + "node_modules/babel-plugin-jsx-dom-expressions/node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/babel-preset-solid": { + "version": "1.8.18", + "license": "MIT", + "dependencies": { + "babel-plugin-jsx-dom-expressions": "^0.37.23" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/base-64": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen": { + "version": "7.1.1", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" + }, + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase": { + "version": "7.0.1", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001653", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz", + "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "5.3.0", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "4.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color": { + "version": "4.2.3", + "license": "MIT", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.6.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/deterministic-object-hash": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "base-64": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/devalue": { + "version": "5.0.0", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "5.2.0", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/dset": { + "version": "3.1.3", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", + "license": "ISC" + }, + "node_modules/emmet": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.7.tgz", + "integrity": "sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==", + "license": "MIT", + "workspaces": [ + "./packages/scanner", + "./packages/abbreviation", + "./packages/css-abbreviation", + "./" + ], + "dependencies": { + "@emmetio/abbreviation": "^2.3.3", + "@emmetio/css-abbreviation": "^2.1.8" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "license": "MIT" + }, + "node_modules/execa": { + "version": "8.0.1", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.16", + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" + } + }, + "node_modules/flattie": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/focus-trap": { + "version": "7.5.4", + "license": "MIT", + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fuse.js": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz", + "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-heading": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-heading/-/hast-util-heading-2.0.1.tgz", + "integrity": "sha512-nwRggTanShzHRYMUX46lm6pbJ2c1+TUQCETahENb6yR6c8ro8MkE0hRJm8G0IqAZl35ONgJiW8RC8+D3484vYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-is-element": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-heading-rank": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-2.1.1.tgz", + "integrity": "sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-heading-rank/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/hast-util-heading-rank/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/hast-util-heading/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/hast-util-heading/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/hast-util-heading/node_modules/hast-util-is-element": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz", + "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.0.4", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", + "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.1", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^9.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", + "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==", + "license": "MIT" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", + "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.3" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "8.0.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "license": "BSD-2-Clause" + }, + "node_modules/human-signals": { + "version": "5.0.0", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "license": "MIT" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "license": "MIT", + "optional": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", + "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", + "license": "MIT" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/load-yaml-file": { + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.3", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/marked": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.2.tgz", + "integrity": "sha512-f3r0yqpz31VXiDB/wj9GaOB0a2PRLQl6vJmXiFrniNwjkKdvakqJRULhjFKJpxOchlCRiG5fcacoUZY5Xa6PEQ==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/marked-alert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/marked-alert/-/marked-alert-2.1.0.tgz", + "integrity": "sha512-X95Z8PCDgWa0bBfM70GxZG3LD/leUrhXc3cx3w1eFExBhswd1oXn/S4S+9H8ypPdCY7okREb4dItUOc+VJq4jQ==", + "license": "MIT", + "peerDependencies": { + "marked": ">=7.0.0" + } + }, + "node_modules/mdast-util-definitions": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge-anything": { + "version": "5.1.7", + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "license": "MIT", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.7", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/node": { + "version": "22.5.1", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "node-bin-setup": "^1.0.0" + }, + "bin": { + "node": "bin/node" + }, + "engines": { + "npm": ">=5.0.0" + } + }, + "node_modules/node-bin-setup": { + "version": "1.1.3", + "license": "ISC" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "8.0.1", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/emoji-regex": { + "version": "10.3.0", + "license": "MIT" + }, + "node_modules/ora/node_modules/string-width": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "8.0.1", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.2", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pagefind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.1.1.tgz", + "integrity": "sha512-U2YR0dQN5B2fbIXrLtt/UXNS0yWSSYfePaad1KcBPTi0p+zRtsVjwmoPaMQgTks5DnHNbmDxyJUL5TGaLljK3A==", + "license": "MIT", + "bin": { + "pagefind": "lib/runner/bin.cjs" + }, + "optionalDependencies": { + "@pagefind/darwin-arm64": "1.1.1", + "@pagefind/darwin-x64": "1.1.1", + "@pagefind/linux-arm64": "1.1.1", + "@pagefind/linux-x64": "1.1.1", + "@pagefind/windows-x64": "1.1.1" + } + }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "license": "MIT" + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "6.2.2", + "license": "MIT" + }, + "node_modules/perfect-freehand": { + "version": "1.2.2", + "license": "MIT" + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preferred-pm": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "find-up-simple": "^1.0.0", + "find-yarn-workspace-root2": "1.2.16", + "which-pm": "^3.0.0" + }, + "engines": { + "node": ">=18.12" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "license": "MIT", + "optional": true, + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/property-information": { + "version": "6.5.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-compare": { + "version": "3.0.0", + "license": "MIT" + }, + "node_modules/proxy-memoize": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "proxy-compare": "^3.0.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rehype": { + "version": "13.0.1", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-github-blockquote-alert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/remark-github-blockquote-alert/-/remark-github-blockquote-alert-1.2.1.tgz", + "integrity": "sha512-qNf2mSAoZgh3Cl23/9Y1L7S4Kbf9NsdHvYK398ab/52yEsDPDU5I4cuTcgDRrdIX7Ltc6RK+KCLRtWkbFnL6Dg==", + "license": "MIT", + "dependencies": { + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } + }, + "node_modules/remark-mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", + "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/request-light": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz", + "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==", + "license": "MIT" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "license": "ISC" + }, + "node_modules/retext": { + "version": "9.0.0", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", + "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.21.0", + "@rollup/rollup-android-arm64": "4.21.0", + "@rollup/rollup-darwin-arm64": "4.21.0", + "@rollup/rollup-darwin-x64": "4.21.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.0", + "@rollup/rollup-linux-arm-musleabihf": "4.21.0", + "@rollup/rollup-linux-arm64-gnu": "4.21.0", + "@rollup/rollup-linux-arm64-musl": "4.21.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.0", + "@rollup/rollup-linux-riscv64-gnu": "4.21.0", + "@rollup/rollup-linux-s390x-gnu": "4.21.0", + "@rollup/rollup-linux-x64-gnu": "4.21.0", + "@rollup/rollup-linux-x64-musl": "4.21.0", + "@rollup/rollup-win32-arm64-msvc": "4.21.0", + "@rollup/rollup-win32-ia32-msvc": "4.21.0", + "@rollup/rollup-win32-x64-msvc": "4.21.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/seroval": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/seroval-plugins": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "seroval": "^1.0" + } + }, + "node_modules/sharp": { + "version": "0.33.4", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.0" + }, + "engines": { + "libvips": ">=8.15.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.4", + "@img/sharp-darwin-x64": "0.33.4", + "@img/sharp-libvips-darwin-arm64": "1.0.2", + "@img/sharp-libvips-darwin-x64": "1.0.2", + "@img/sharp-libvips-linux-arm": "1.0.2", + "@img/sharp-libvips-linux-arm64": "1.0.2", + "@img/sharp-libvips-linux-s390x": "1.0.2", + "@img/sharp-libvips-linux-x64": "1.0.2", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", + "@img/sharp-libvips-linuxmusl-x64": "1.0.2", + "@img/sharp-linux-arm": "0.33.4", + "@img/sharp-linux-arm64": "0.33.4", + "@img/sharp-linux-s390x": "0.33.4", + "@img/sharp-linux-x64": "0.33.4", + "@img/sharp-linuxmusl-arm64": "0.33.4", + "@img/sharp-linuxmusl-x64": "0.33.4", + "@img/sharp-wasm32": "0.33.4", + "@img/sharp-win32-ia32": "0.33.4", + "@img/sharp-win32-x64": "0.33.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.14.1.tgz", + "integrity": "sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.14.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "license": "MIT", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/solid-devtools": { + "version": "0.30.1", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/plugin-syntax-typescript": "^7.23.3", + "@babel/types": "^7.23.3", + "@solid-devtools/debugger": "^0.23.4", + "@solid-devtools/shared": "^0.13.2" + }, + "peerDependencies": { + "solid-js": "^1.8.0", + "solid-start": "^0.3.0", + "vite": "^2.2.3 || ^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "solid-start": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/solid-js": { + "version": "1.8.18", + "license": "MIT", + "dependencies": { + "csstype": "^3.1.0", + "seroval": "^1.0.4", + "seroval-plugins": "^1.0.3" + } + }, + "node_modules/solid-refresh": { + "version": "0.6.3", + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.23.6", + "@babel/helper-module-imports": "^7.22.15", + "@babel/types": "^7.23.6" + }, + "peerDependencies": { + "solid-js": "^1.3" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "license": "BSD-3-Clause" + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "license": "MIT" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tsconfck": { + "version": "3.1.1", + "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typesafe-path": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz", + "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.5.3", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-auto-import-cache": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.3.tgz", + "integrity": "sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.8" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uqr": { + "version": "0.1.2", + "license": "MIT" + }, + "node_modules/validate-html-nesting": { + "version": "1.2.2", + "license": "ISC" + }, + "node_modules/vfile": { + "version": "6.0.2", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", + "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.41", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-solid": { + "version": "2.10.2", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.3", + "@types/babel__core": "^7.20.4", + "babel-preset-solid": "^1.8.4", + "merge-anything": "^5.1.7", + "solid-refresh": "^0.6.3", + "vitefu": "^0.2.5" + }, + "peerDependencies": { + "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", + "solid-js": "^1.7.2", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "@testing-library/jest-dom": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "license": "MIT", + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/volar-service-css": { + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.61.tgz", + "integrity": "sha512-Ct9L/w+IB1JU8F4jofcNCGoHy6TF83aiapfZq9A0qYYpq+Kk5dH+ONS+rVZSsuhsunq8UvAuF8Gk6B8IFLfniw==", + "license": "MIT", + "dependencies": { + "vscode-css-languageservice": "^6.3.0", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-emmet": { + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.61.tgz", + "integrity": "sha512-iiYqBxjjcekqrRruw4COQHZME6EZYWVbkHjHDbULpml3g8HGJHzpAMkj9tXNCPxf36A+f1oUYjsvZt36qPg4cg==", + "license": "MIT", + "dependencies": { + "@emmetio/css-parser": "^0.4.0", + "@emmetio/html-matcher": "^1.3.0", + "@vscode/emmet-helper": "^2.9.3", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-html": { + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.61.tgz", + "integrity": "sha512-yFE+YmmgqIL5HI4ORqP++IYb1QaGcv+xBboI0WkCxJJ/M35HZj7f5rbT3eQ24ECLXFbFCFanckwyWJVz5KmN3Q==", + "license": "MIT", + "dependencies": { + "vscode-html-languageservice": "^5.3.0", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-prettier": { + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.61.tgz", + "integrity": "sha512-F612nql5I0IS8HxXemCGvOR2Uxd4XooIwqYVUvk7WSBxP/+xu1jYvE3QJ7EVpl8Ty3S4SxPXYiYTsG3bi+gzIQ==", + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0", + "prettier": "^2.2 || ^3.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + }, + "prettier": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript": { + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.61.tgz", + "integrity": "sha512-4kRHxVbW7wFBHZWRU6yWxTgiKETBDIJNwmJUAWeP0mHaKpnDGj/astdRFKqGFRYVeEYl45lcUPhdJyrzanjsdQ==", + "license": "MIT", + "dependencies": { + "path-browserify": "^1.0.1", + "semver": "^7.6.2", + "typescript-auto-import-cache": "^0.3.3", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-nls": "^5.2.0", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript-twoslash-queries": { + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.61.tgz", + "integrity": "sha512-99FICGrEF0r1E2tV+SvprHPw9Knyg7BdW2fUch0tf59kG+KG+Tj4tL6tUg+cy8f23O/VXlmsWFMIE+bx1dXPnQ==", + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-yaml": { + "version": "0.0.61", + "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.61.tgz", + "integrity": "sha512-L+gbDiLDQQ1rZUbJ3mf3doDsoQUa8OZM/xdpk/unMg1Vz24Zmi2Ign8GrZyBD7bRoIQDwOH9gdktGDKzRPpUNw==", + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8", + "yaml-language-server": "~1.15.0" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/vscode-css-languageservice": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.0.tgz", + "integrity": "sha512-nU92imtkgzpCL0xikrIb8WvedV553F2BENzgz23wFuok/HLN5BeQmroMy26pUwFxV2eV8oNRmYCUv8iO7kSMhw==", + "license": "MIT", + "dependencies": { + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-types": "3.17.5", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/vscode-html-languageservice": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.3.0.tgz", + "integrity": "sha512-C4Z3KsP5Ih+fjHpiBc5jxmvCl+4iEwvXegIrzu2F5pktbWvQaBT3YkVPk8N+QlSSMk8oCG6PKtZ/Sq2YHb5e8g==", + "license": "MIT", + "dependencies": { + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-types": "^3.17.5", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/vscode-json-languageservice": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz", + "integrity": "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==", + "license": "MIT", + "dependencies": { + "jsonc-parser": "^3.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-nls": "^5.0.0", + "vscode-uri": "^3.0.2" + }, + "engines": { + "npm": ">=7.0.0" + } + }, + "node_modules/vscode-json-languageservice/node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.11", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + }, + "node_modules/vscode-nls": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz", + "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "license": "MIT" + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/which": { + "version": "2.0.2", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-pm": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "load-yaml-file": "^0.2.0" + }, + "engines": { + "node": ">=18.12" + } + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xxhash-wasm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", + "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yaml-language-server": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.15.0.tgz", + "integrity": "sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==", + "license": "MIT", + "dependencies": { + "ajv": "^8.11.0", + "lodash": "4.17.21", + "request-light": "^0.5.7", + "vscode-json-languageservice": "4.1.8", + "vscode-languageserver": "^7.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-nls": "^5.0.0", + "vscode-uri": "^3.0.2", + "yaml": "2.2.2" + }, + "bin": { + "yaml-language-server": "bin/yaml-language-server" + }, + "optionalDependencies": { + "prettier": "2.8.7" + } + }, + "node_modules/yaml-language-server/node_modules/prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "license": "MIT", + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/yaml-language-server/node_modules/request-light": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz", + "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==", + "license": "MIT" + }, + "node_modules/yaml-language-server/node_modules/vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "license": "MIT", + "engines": { + "node": ">=8.0.0 || >=10.0.0" + } + }, + "node_modules/yaml-language-server/node_modules/vscode-languageserver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", + "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.16.0" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/yaml-language-server/node_modules/vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + } + }, + "node_modules/yaml-language-server/node_modules/vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", + "license": "MIT" + }, + "node_modules/yaml-language-server/node_modules/yaml": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.2.tgz", + "integrity": "sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.23.3" + } + }, + "node_modules/zod-to-ts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz", + "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", + "peerDependencies": { + "typescript": "^4.9.4 || ^5.0.2", + "zod": "^3" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..95675b0 --- /dev/null +++ b/package.json @@ -0,0 +1,37 @@ +{ + "name": "quickshell-docs", + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "build": "astro check && astro build", + "preview": "astro preview", + "astro": "astro" + }, + "dependencies": { + "@ark-ui/solid": "^3.5.0", + "@astrojs/check": "^0.9.3", + "@astrojs/mdx": "^3.1.4", + "@astrojs/solid-js": "^4.4.1", + "@types/node": "^20.14.11", + "astro": "^4.14.5", + "astro-breadcrumbs": "^2.3.1", + "astro-pagefind": "^1.6.0", + "marked": "^14.1.0", + "marked-alert": "^2.0.2", + "node": "npm:22.7.0", + "remark-github-blockquote-alert": "^1.2.1", + "remark-parse": "^11.0.0", + "solid-devtools": "^0.30.1", + "solid-js": "^1.8.18", + "typescript": "^5.5.3" + }, + "devDependencies": { + "@astrojs/ts-plugin": "^1.10.1", + "@biomejs/biome": "^1.8.3", + "@hbsnow/rehype-sectionize": "^1.0.7", + "shiki": "^1.11.0" + }, + "packageManager": "yarn@4.5.0" +} diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..ee539d4 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/quickshell.png b/public/quickshell.png new file mode 100644 index 0000000000000000000000000000000000000000..98aceb722f7761a7c78a734b3fe0f45742c6b11f GIT binary patch literal 12985 zcmch8^;aBCur^76;O-8=-CcsaTNZbMyIX=g!DW%)u8V7McbCQ8T^75%_h0zFbLWTY zIeogjX1c1no_e|`LPbd$8G!%+3JMBYRz^Y%3hJ}=$Fm>Y=Z`zo)pQvY6d9DPgs6sR z<{8*hZ%&2~>Qc6GM!-ZAt!5Eqa?xP~gO!|Tf~$%pSrbID4Va8H6735NH<6TV4JVuN zkuLOTG{5oxd&Vre+urtIpYwhpoOx=&o-VsTtYA@>78v;XKS6yMZ_1Yc349#Y>b^jS*X1aFd#%Yttr>BJvz^A7tSLn}jU^z_ml`+F>uR>s*`Xi*XTT$K4D4T6D! z+I(MQi41J6A1DEUied?`bOY>S?8~mz6zGS|HIw}(#}y)CAeV137bin6D_xA#s;x&q zIckamOkL*lW@cV+W9Z!g<5nXUSAlvFTp2zU6a zFB|U0kh7lxbWw2=fk%(W$8}Y=5XL_efEqAG{s}&`*mzWkVV0xC@aKcc_AUk=D5y*M zmnT}9ett!L(HT}^y;UIragCDD(5irSt|Z)xts&W9IYh8 zq`R=*$E}#`Lz%w<(nWX#LaRy-Ud9gc`d#g&(P%&C)8A$}_}x7v_JUg9cwmh`H2?DT zC4x4*e1hNUqQKu_n0qH@3WxoRw*I9ct86V;w;nSdn5oz6K=ei_d*4)0ujcumG5ob7 zK2O`q!r|j*JXd-i{uRpR8l8#yRe1xFw~Gr)XK0wD!ai1B0MWWce{5&EVQ4HpEiqquU#RIQl~&@&{Hb z!S7NSUU44GUZA&Cie;bn z{{B?d!bmCboO0FoD*9Ra-zmRy_S?(RPUzjqazkP!R*+Z?yB5C>-E9v@2vxEdH{jjI;%&FSBAOvwG(?-fGSA66HC2 z$i9}vMtB+Dx)vYT&vKuf`KgB+@zYr!a>#s`FR-yR_i&k#W$(nampSdX-)JhmsGwqr zu=iaHpsxk!xVW?mC3GM3B5vaMe&(q7Z!Unbj=z8lZCWm`SuDtH5jg5F@SYU%sg`ITgz(EDQ$bBcJd7}<7e7$4Bi z>yLg@LST`V<5BlKlWBPs*MV8DJM>O-<>4Iq*BD0{yO8-Pi_k&|Yi!?Y^0p}b& zk;|#-WKl1=s_L1haPZhP%%WU1oGQkI$*QuFy?8Ocf0WM^`~en<)fUEBA6_@g?|!3P%wxkS zivnC7@gx{7vlB)S?f#jseJ^iJfAero#6-jYYjh;;I$-;5*G;sYDcgv|uuQms%WQ29% z&5^`A%NIv<_+jQ@*;wTXI&&TtI|cW#70oXhuq{+l_Cn1CKqEBja#Jv4(cQ^nvG#_r zI5Mi>@IIWyclTZQHc9I#(hm!WM-js9qt&nmEo3M+-m66HIxbOSknr}E)OT4)U|keh zvPz0JThVkro$Ga;*~1c&2jl55ObR(>=F8)md-XYm{3> zC5zPw?wT3kG2F~zcU82D$Cp@3D@HXLg%3t++nf~wK3%jUM;D#Q%unX-`J?(SE>K7( z0C#MfmiHG@F+QBG2TgsDA*{#){rEtYt4LwS{Ut$yESR+ge*lsZh)=d0f55#eth7TO zjCOMJHTBG=A)u|LRd>h3aap!J-#6&R6FhAtMZIy*1~N6gDI@nBwLq^Tj@j$HM_YAWfo z)QOOtTod9jfYlTWij0IG2Szv2lSy(QG;0cY5vu$m^olH(N4g0#)0Jl?xcpczfsoT1~DRDz4z#|#*-%rcv0~YY2Khq zg1Qb9RrJiSA>v@(zyQ@V7WPZ|6Rr|e;)agn4?y(B!H)$a8%VyKT31#Ph=x4xs-yp>h}KOF z9pAO6B#ws@f8&132uV}Zi^wl%f(+_AqpK}Fbm}PjE2flXVei8Z&B}K@2kYYtN z{%wZz(fLVwh?^By%-;>lpeWbZ4ixN}vEAy^qI2=37AUQHmEuF1kyfYr8^xc*A^n z)y>=Phy{O6ZIbs6#^wkX#nm|;;OCc&gSa~&+Y+}dN2S;DQIStFk~MQnpR`P4?0L$` z{{zg#h)nIfm&$t-%CW5J!vd%i=&yI*L+>Md2}7e|lQCLIMfMl$CRrF5(PbmbINXCT zubl?|9GNEbr)W}$e3LIglsXc&4Oemf*T&rSICL}N)}+hq_6~OJI&<-t9eri5y9SF! zjn*>8YhH|~qrMpnsTGY^5mi(0P+z7$dwm_<14$$4Ixkg!-xVd*bU9rzyi+1JaCgoa zswcF5$R@ZviTyzLe}iI76l{`c+4~Gx4CzmJ+a8(CbuwR9?)l`k$?(0mB z%IlUNmd^z5Z=Pb+Im_c1R|uBgd<~Bz*lxn-;Lb?x_-m%DFvHEn{rDp0=7BI2lu2H` zevtLMd}`0Z>XBS{MTj;@nS+o<*SO*nRW(a%KPL+D2RsN)B1EY6?$xATS$}Rm^SNK7 zZ;kZkfsqO$MWpDP^z(ffkBxVM_J>8tFJtMv^)B%GX{N;mI{C}?jngbxz=)D&`DS8} zyU6yM{oHP2X>=4^(PZRWSTgR`{wJ+*`}RO5n6+QFoCg?<{g|m|-+a4%mEYy#KU7X- zB^QLGt%!!dPu0Sg-qK|a1ONW49=Et)x{nwPh#ZKV)t0x7TZ5l4qeIHHG44_h_*HL& zBg5Pk^lkDZiKw32qK=dC02{w|K3dYuCAL>jp5A)}IIP50T(&u}bUd}AM^l#XJtPzqcfzeO49c+=8e7G9GLx;=l9 zK!8dlse2uXUoPVnGwZ(b@s|`sC3SlG6gnu>ld!Y1ZHmz)=$^JJ$@_R6W$4-Y=BBPb zl#oi3DIOwK#b$jlysEz*N>da7@8>(F!V682km~YYpeyJK{RwJ&M|thhWfr_hxZE}T zUW$!sW^VgEc*um)eRsK|Nqtq1U#U(mvRt4&I3{(=qV~vILDPp_u5RWWP$~3QyG-!7 z&wIqf#AF{X=-XQY{#a3dE`iN=WaiK{v2RI&I7=5ocivt8gm)QZNfdw1abC=>s-I50Wc}u z*&0V-yaxeezee41IJK~~F_Yr4#KlWq#4%?z?dV)CHb#X}j_i<?-%^apqP`ws4CnuJ{UG@Ddu6%UXC53ndLIXk^GQd2Y4B%}XWK`Nit`ZVHY zE6fyUUcbm^8{qRfY_%Vmh9XZ*pH`6d|3y13o2lk2b&BuypKQUR7K4qISB8rIlP!z|2RqR zknJS`KaO<R9c#;t#3q`$gwB)6;m4RKU&`DpWJgJu1a@Dv^Xq57KW zya5b88f{)&Ek685sQh}@uHi-czh_VWZ@HTPS7|SUs%bOV2z3f0B3Y;(u~nQnCNS-V z?91w?Fu7{P(Qs{!fluZdYl}d>5aEm~YN$o=8qdkXeYW{6GfmMt_i=Cohe&hl(QCa# zY9YcI_`9RDm4{Z@7Tok8pHx9-{UH-Z9Hm8;@|Z$<>-T*c^*1&JueB-xW7&u+r<`xq zCk##LZohpIUb{Sv#sqOww;LLttA$J|5~s5YDoRXu4vAMX`Hc=%lj2ZJb=M%cbMbu@ zF7R{)C!G9g&~E=Gn&@)Fq^C0iBnX|zIQJ^=$gBrB7X5FXV$rQW`GmckPLzCc?^J{r z$dfPcYTaQOi${Bs18=a5Cqgv6>_jroyQgkF7J}Z(C|*RrtePOJX}T%KHFqFAB_t$Z z5njLSqhsnPyYE%|DXvX64!@HSmrER>w+T7eovRZ*zfA85P;thvA>y35WnBa317lE~ zpX?k)Sd`#=ZyH%ap|&Twcp<}o)zTFBLsfu=wrjrzj8te91}5)ISP>FM`;U+a#NbTX z@p!Yk(Mrv?b#GUjl9qhWm8oCF=YCs+HAR%l{! zp7`_ko#_mJz>L*V3N(5=xH?UB$QvX(cwB8y&;h`>3rKzZI-tth3Y{os`F5+?Fo{aI zw9gezrzmj0d40`Hg)W?ZpiXb@tz=ODQZpFbd4h9s#qcIdxKc%ZUc9;+5Em;Us%QF? z?e@C##vQe=KC(*|JQX4z_aM?~Zequ_waomU!OcUhCg=h5cBd?V$C@}O2adf(2Gi-c zx{-5Kw|aL*?!96k1(A}Ceo?MOeJOVN^s6S8vt~}z=HaLu*UK)W>(%QMDS0rn-j%?f zkLZT`8F9eiVIyH$S4G5g>fyhih()~a*JL_dH{}n<)^Ow!TETkm$Oom-z^R;2G`~Po z*D@oAtQnWt+1q9p5Yt_0%(5W`=P<04C z;O|saK;+}ih(N1icRwNR%)yx9NX&b=SRzDDz+Qq%C9Xd%&~_AamJ=J=aoNvL%0P+B z0F$#%(^&pd<;?C0I+AuJ0d|+ zMCJXv%Bc}JJT6F_d~MryS#yr6R#ZM&G{rBoO6eP(X_TurRKZI?juS|F~IIvL{j zXFI8ao!|knUX7Fu8EZU??p;`X0TBdQ8Cm5x6kpd7-+Fc!a!Bw_JfCd9nDG?s#nt4* zgwn%uiJ~anR%GuYuLxYY;>3_b^rcIK{$Hx;ABJyqpNg68o1Y{Lizp?#+`&REQF=#K4`%XQgz}WOjSf9)zQ`v@H^!n-Rd>pfD{r|qa9PaA zY%P||vDuFYFYOEzK!Dk9pe&W0jt^Fk7V*N~d4C1v?t8JmQf-BjsY1o6gU8+^_sx*_ zhx3wJc$LXd328q|*BgKowN{&HH70b<;zy;^wmE&`Za`5NIcr;K3>>Z@h5dKHXmiBO z{N*!VgXnIv&9T;6)Ztnm2VN%nR`ag6ac!v!7#xA>W_kPxUPwIEqaU`=0dUZDc8!SX z#pR0RrtybBn~|X<5nQPqM9FQ*eDusg3SS`2-Fs*Eg*{FeCugizszKGBY1`lbNV~>+ zD^j+&$3TlB7;W8ZeFSh#mzrISF^-bkkYx3R+pxn-?n=1x%!q#`t#uvZf!d#OBw&yl zf4fdt)pDVR*yiZ!qR{}Uh!MzI)8upE_WD@D6sRTL7h>%UeM$7Z4KhhnXzB$9{#Eig z*e=TWd+uF6eNOKl9c$9-T%GqlkHziB%NqWd{#iPBI!%E-q^H0XPCe6S?d-4p3ykhf zjap0YsK;riR~Em+bbp%e!YTz#g+Qa++uqg2YbU5ndJjE(!Ls9o=_I=pmHE_V#PZ&- z-uTQ5)%=`j^q`+|z=*w6D5U~_&)qf^Alvk$Tlryy20G%D>&|P=5sS(JP4f}u4e6j* zsXFulGxif$aI=#~1y9)MCY~5vB7Uv?`|+o}(o#uEu_ThBfVH(^bpNfP0aQth*VG?p zkR1$dhwh6jx2DCq8&qEN&K9?=Av>wAko|Jy7F7hx6)!Ls zmV`0YoVx4V^D5V*9}nc~Zp(ZRrsC>rN%LAL%$menjJaUIYY57EtG z^|#tqorcR(cCP^dTyn!(~pBZ6C{;t z3tXJKE(_QUX>PO?IJsJrweE3hvxDctmBiay$BuDx8OA2gOPXcA`%*b#b$5|ALgfkH z+&A301`IPB`I3VnjEzhFTaB5^YaJI1GNo+Kddk3|esI@MQvFiFmCYq`Cj3*Mo3(m_ z1m6$;QZd_KIz#O|Y(6s~0ll-Acepdpm~$-nV8fA|p%VPq?(n!FC_p+|NEeeRGJ{)y zXJKGU{QI&1NDfphRiF;(G2=w8HdP3f=>64Vgt>U!uRGIR=m=a}_lAfp{H6_8J<^Ca zn_oacMoF~AiRwF2pcgyy`z1waTkp>K+M7EM1Uo;%upJ~_1Zd&38;;_KV1$ONOL_tl}4wcDvlNFFQ4kpTc7KQ&ExTvA)-6? z4DYyciT(aWPA)8NwM>zZj8`dmd_E0it`e2>4PFnMzXfjbo9_S1C*M+p5%-Pry{C=M zbY4nJKRh@~{wEHX>psqmF#tJyA{+l%+0D48{SYN1aa8LW!u+;%`HHnYxVq4r92#>P z(Z7__`b3c$r(&dXSk4x?%!omLGz{cMrfarp?tc1)NWS}C+B&;x3QT$McIJm64}RP@ zzhGV4GXyhAMmP-&e6cpPWox{qBS&w&zzll=&+ue;@9uSsaI=e@aCjH^9-WL@lEONp zAt1mZr_IHw57Ef)7>LMOPSo;<)mC@3&%gzvnJ97UJ`+CdxzFkwe7KTwwxp9Esl!Um z?(HZ;Ivja$vmx`j;9I&uL*uR4AWRC|qWV8K9?) z2L7W1ouY^pI4Aq8cC@=IK?2TrqgU^qU$31|Uy=grGJ@Zv^(MMhXkwt4EEp|R^KqGR zbyr=2BABFK?ZuvnEz6DmQMB~mZ&e+USLl&17yKKpjV7(53G*oNjKNb`xBwnQ{=)@7 z8PZORRkO~?P&a9Vq(rz5#3$y5^AT@Qyoap_ZM~MCTUy8MqySN7NXN2i&8w0#lNc@4 zrV~!U+`8Lw=|u;rl;a1H#qYTnI;@5+jce;ROo=AeNxnDYaJo=UWuWy3&M$gIo9NMXv@X4Dy{QvExSN!-#>@?oYv`}KRrsI@d{YNBa9rFK zGAWp8|GM2VDP2;?{Uox9tIY9|UR;!Bd(o*sH23Gv%g3H>p8+e8$oz|iyC0?!Ve3&J z|DDV;cIY5MB#@BwDx}hG*U|UYSKp2bRzTpz&Cy!3*P!L+pg?^-s?G zd0xK!PrKsIZ^eg9hE3+iBK*t@EYFJyhr9hE?YN4h4$UgW(&55G|NaJ?5kAm7i8wi5 z%L_}J=j9RxY&h`yl!OvB&~rU%dZHkb>*U0Xo6`$FN-u7lT_JvXHI>cE6+a$y^rVYt zV-m{y>w31R8;gsJr=w%YGA}Bj%B6X5lG*t5s$}Od`R?zV|Nos%xeRmyel+q>1 z$~_;H_8W@lol%WhJ$I5jmTw<6Cldf^OOzI@5_TMmmSo_m$^m~FG}|L6ORPZlIo8(5 zi7KmE%uSAd3-W;n>o(rp=HKD3<>;W@G8c6=M`T)ds@{DwNwWVI>aisa1D(8h7Eu9r z6}MZ8Lc9_)V|_PI9J?*1`&>GoO_*v|h4`DPXBUE^LNgl_pGf?Tc%T&nt?-XrmcuLq~Ng3-==={d0q znir_d8*1%7y))ufK+5pCB&fK=Fy$u;IMfQcd$t-Oiw@gx4Sy=~2^pW-f%=J{pB|G4i!BFDf^2efMPR3%>&R&!kOC+r}OcRi}SXKxp~ zL@xBaG&FEyUut-C9+xo3)=4A{TK%*5h7Gj6IY4q5ATst9aMt98Kk`?gY5c2gojq;;0%)H_m8bBQ&u0}<91ULVI2je!me5D*cDTnu*3E#$duF-qw zl5mcL%glFO%~D)X@zskjLxq{CMdnVYYAbKNRS{M3xmHT{Dc( z$Jf^vOnJ>u%*IhOjFT~p(r2KQw$@>g^L=FUd)Rv)yBQp^%a+iMWHWoaj!6r0ck_io zJG?pCnm<&g7dD{=l9K)nS?6w7lu@(6%fcf$p^3d5k63q3SvFTBVa5LWUS?-NKv|vw zPT~djle5twz=+#rnPS`R{y+n00+!SG{3QWYvhfKPM&V40I{gg^nz6xwf?vT@GF%v1% zVPI$^jBnR>3H{vJwyXSK!@{EM40u&iajoaFqOGod8cc5BG#?7AhVcz%C5iiY`1vNI zw)LoiLPm=zsxOHWn#5e*)Tl_SV9C)$c1ly3T<=aHGbZ^n777v)YgN6bUJ3?T+eFkE zwIy4Mpns-IHn+r(X{$tcm5ogKDozjG1nP9Mp7bN*ji{x$k9LGj^tg91@ z20-8O`qy_urd}9#KDMV@>8>ZN&enVB?GEx$steVWr+}xEMVjBxHcenpz^iTy{RWxO z`FCjJKVl(B;@`L3lNvgKRm3~kJ#OJxQ<=T>x}-)TmVj6_0bHtfB2-Wl&5k8Nfl5tI z71h+_62rH@xwYx3EHN=!&UU=ua~oR}=R8j4aj&AoouJ7arR zDAh%AFg(7}m&wrar56dRn(q~4Y)HJEBS7OS~#=M4p&Hi0bmKxo8C77 z{Nf@oGhD;K|1A{ED~Uv|Q1xC>2!f0nha2A9jgFSP<9_Cw@q^ej5|2LhJ6##F#Tb-@ zz&ri#bp>c=4*Kez_;w^-TpDN4?pe=IOs-_*J@l%6pIw?}5s>RunKTg;R&te30!Csn z`WF1BZ&TJ3YejqHjIqgre#1-nX+iQm_>5C(4(#K^bepvzhp&y#A8@csiFs>)Pa>)t8) zW{E><5%C| zcAH^i5ir+Z2QTR<_?#};-v#_@izVH_9F2=8CH+(Mb24+an$0k=_^iV_Z0t7&KE zr>OKKTdojl21of;pT%uDyJ%JpR^pJ||Atr^a_aQzg<^R(H9vbb8?0y4g`{3|7B1?} z6h4#VLkJK{!Ry!;jAQ>d;77vQRWB?KSGlN!8Fa|LaYsreFmG+jWOGD)@$f-nIhULd zTC4$p50f@fV@!WXDj$=^sn+VXSMPR3F{cK6F`SCO3zUG^St4<_PyUG9%73vT zp@lC-EyNEudz>Z5Mf+d`2trwVDrl>yuY~=G!kX z?bn?kq9bXyf3U+)Zvk8G*9nHy+Iu|WAYL}xf(tR&Y&b5xxMc$?!mf2eYR@I5x^ZH)8Pe+@|6s11 zyQDf}WRT-%0UR3>Z1Q*J^i3zwiO4RyaCN21k{AhzC}5##Kbl7d&^v{Tc*Bd2k70Pd z=b6CkV~a4)OJk;?&r?bt@`jmvlWe&*N-;O3#?AUTlmB@mrnbB$I1qsna%8v0Zpi2A zF_n*6sby%|Bk^|A!QjDhkuB(bViwbla$(E7UFaWKrN?1<^81c{S`uGWIG61_^-FZ@ znX>?c%bp}bDVNXdK>VrE>S~NQ(F=)9HCW5>Cc?Z_QK!Y7S7c;;2Xx5?h7?X~VT$8; zToPdhqb~dR7S2{KrpwqAm0Dd~^9YcbW3+E;F;vZ0U|>J6bg;G=Io&b3pR0Z@zwyMB zPc$}XW*~WvH}`KM*;C|kc9*s{$YDs9Isz)BZsqR#*%%N~EuUlFNFy_fjoYw3Bu3pt z!4%)IJX#ChUn`fU9P@cativ_b;igm>Hh<`)ezCV;e%01KQ|k(jDFMH3$?P{mob8)l zS4@<4Rp&(T>h6X}ZRl!;&(DEoJI)2_-O1?w7Z?89bG*8-fOq!93Vk4QQN@~Y&It2F zbj0NGHPGA84!~F$EFrNUW4B)?ZL39ik)`1Ke(GXjv$-v=`{N_?mv9Ey3b&opeTsLo z=|$+gBbn7~#?YLbVZf0G_V1%>;Dkw-N%qmrx^Xr!;Ao#>7VG>VAR84T zTohnYGk1)d?YTIwbM@AirN|t$z=V!sLi-M|Mak*i;ye$puLZQ7-Lm87aWbu~N^LBE zi`VV?CY&{Hw-z{#(_-^&*_Jz}-y{*vDSxs;2ViB_Fmrzl3#g!H+0O!{_i}A%!k;?Q z?ASf3mTQJh$}j9ncnX}on0Z@Bf;3L<2lri|rOsAqdDK{QKEE4=rQ+x4i4Tdm1Q^U+ zGg%VSVd7U2rhq)o4BBooYd<&K`W7CuP~5hu6~yv65Qk{b>A(zm)r4%@i+(y=jf!9_zv1D zS5(fX>7YcQZO=J}>pg%6ZE(()8V%JmvPhjqN6ym%VCZ}e8r&f8*(f2xZ87HMDE2zG zUcYowAnV|s#*>JAod!J&^1e4`_Xawf_o`%WOGQfFkO*>~MqB=!#8K&z`QvTt6)TDS=2ZcGC8dl2=HJ>^$7wM>i?8x_vG`8wr=Ga?WP>iF2=$g5u!;GgJypqj z8i&<0lykrfq*!$AF)HOjpmN#BZYn}2<7L9C5}d3N|IDFOo(db%zkj(Lhzr$ig6>Nn zCQTvH=p9R*pgy{_C^SdWV$0pV$JrJt!wgi^5CpBJuy>EFO-TGUMB8!OoZ6D!c!EoA z(s8P^#Ksn0ZU}4~bsx>x(cY_#%q&?%VTfxBT_g)G`;3b3a6q(P>j|nf&{SFy*BvE` z+9E;UEDbqC$)h*%q;Qvm0UWIG=g%o`#E7FjY{2dvq&UWK^0 zuga|rvpSCzZYyEQCsJ?rb%WOf8*}E%+Z3QPnz@5zpAUKJYpZQ!rI>7u95rbJA`ty!|h#!(lI%~JI**6vX7G=Z+LOQz8M-{!&adW z?kOu6_)^`7Tw@&?mVQBIq~;hn&pkP=+fhf-*CnF(eCMx;1^rIc4y+yY(S<)qk9w1F zc;^>|TKSYm_Be@|lSB15*)v}>PBP*ha3cyE{Qa_g9=Qv&)b*l&4fWFXtCQ^Gq`?)8 f-~Yc~H6WzVYqmU)aZmV = props => { + return ( + + + + {props.title} + + {props.children} + + ); +}; diff --git a/src/components/Header.astro b/src/components/Header.astro new file mode 100644 index 0000000..e0436ac --- /dev/null +++ b/src/components/Header.astro @@ -0,0 +1,66 @@ +--- +import { ThemeSelect } from "@components/hooks/ThemeSwitch"; +import { generateTypeData } from "@config/io/generateTypeData"; +import Nav from "@components/navigation/sidebars/Nav.astro"; +import TOC from "@components/navigation/sidebars/TOC.astro"; +import type { TypeTOC } from "./navigation/sidebars/types"; +import Search from "./navigation/Search.astro"; + +const routes = await generateTypeData(); + +const url = Astro.url.pathname.split("/"); +const currentClass = url[4]; +const currentData = routes.find( + item => item.name === currentClass +); + +const data = currentData?.data; +const tocFunctions = + data?.functions?.map(item => item.name) || null; + +const propsKeys = data?.properties + ? Object.keys(data.properties) + : null; +const signalKeys = data?.signals + ? Object.keys(data.signals) + : null; +const variantKeys = data?.variants + ? Object.keys(data.variants) + : null; + +let sidebarData: TypeTOC | undefined = { + properties: propsKeys, + functions: tocFunctions, + signals: signalKeys, + variants: variantKeys, +}; + +if (!data) { + sidebarData = undefined; +} + +const { headings } = Astro.props; +--- +

+
+

+ Quickshell +

+ {url.length > 2 ? +
+
+ +
|
+ +
|
+ {url.length > 2 ? + + : null} +
+
diff --git a/src/components/MD_Title.tsx b/src/components/MD_Title.tsx new file mode 100644 index 0000000..4d24761 --- /dev/null +++ b/src/components/MD_Title.tsx @@ -0,0 +1,30 @@ +import { + type ParentComponent, + onMount, + createSignal, + onCleanup, +} from "solid-js"; +import { Hashtag } from "@icons"; + +const MD_Title: ParentComponent<{ titleVar: number }> = props => { + const [_, setMounted] = createSignal(false); + + onMount(() => { + setMounted(true); + onCleanup(() => { + setMounted(false); + }); + }); + + return ( +
+ + + + {props.children} +
+
+ ); +}; + +export default MD_Title; diff --git a/src/components/hooks/CreateCopyButtons.astro b/src/components/hooks/CreateCopyButtons.astro new file mode 100644 index 0000000..ddfcac2 --- /dev/null +++ b/src/components/hooks/CreateCopyButtons.astro @@ -0,0 +1,52 @@ +--- + +--- + + diff --git a/src/components/hooks/CreateQMLCodeButtons.astro b/src/components/hooks/CreateQMLCodeButtons.astro new file mode 100644 index 0000000..346181a --- /dev/null +++ b/src/components/hooks/CreateQMLCodeButtons.astro @@ -0,0 +1,107 @@ +--- + +--- + diff --git a/src/components/hooks/TOCIntersectionObserver.astro b/src/components/hooks/TOCIntersectionObserver.astro new file mode 100644 index 0000000..a6f6a26 --- /dev/null +++ b/src/components/hooks/TOCIntersectionObserver.astro @@ -0,0 +1,29 @@ +--- +--- + diff --git a/src/components/hooks/ThemeSwitch.tsx b/src/components/hooks/ThemeSwitch.tsx new file mode 100644 index 0000000..fd410ed --- /dev/null +++ b/src/components/hooks/ThemeSwitch.tsx @@ -0,0 +1,101 @@ +import { + createSignal, + createEffect, + onCleanup, + onMount, + type VoidComponent, +} from "solid-js"; +import { Sun, Moon } from "@icons"; + +interface ThemeProps { + theme: "light" | "dark"; + system: "light" | "dark"; +} + +const getCurrentTheme = (): ThemeProps => { + if ( + typeof localStorage !== "undefined" && + (localStorage.theme === "dark" || + (!("theme" in localStorage) && + window.matchMedia("(prefers-color-scheme: dark)").matches)) + ) { + return { + theme: "dark", + system: window.matchMedia("(prefers-color-scheme: dark)").matches + ? "dark" + : "light", + }; + } + return { + theme: "light", + system: window.matchMedia("(prefers-color-scheme: dark)").matches + ? "dark" + : "light", + }; +}; + +const updateTheme = () => { + document.documentElement.classList.add("changing-theme"); + if ( + localStorage.theme === "dark" || + (!("theme" in localStorage) && + window.matchMedia("(prefers-color-scheme: dark)").matches) + ) { + document.documentElement.classList.add("dark"); + } else { + document.documentElement.classList.remove("dark"); + } + requestAnimationFrame(() => { + requestAnimationFrame(() => { + document.documentElement.classList.remove("changing-theme"); + }); + }); +}; + +export const ThemeSelect: VoidComponent = () => { + const [currentTheme, setCurrentTheme] = createSignal({ + theme: "dark", + system: "dark", + }); + const [mounted, setMounted] = createSignal(false); + + const toggleTheme = () => { + if (!mounted()) return; + setCurrentTheme(getCurrentTheme()); + if (currentTheme()!.theme !== currentTheme()!.system) { + localStorage.removeItem("theme"); + } else { + localStorage.theme = currentTheme()!.theme === "dark" ? "light" : "dark"; + } + updateTheme(); + setCurrentTheme(getCurrentTheme()); + }; + + onMount(() => { + setMounted(true); + setCurrentTheme(getCurrentTheme()); + }); + + createEffect(() => { + const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); + mediaQuery.addEventListener("change", updateTheme); + window.addEventListener("storage", updateTheme); + + onCleanup(() => { + mediaQuery.removeEventListener("change", updateTheme); + window.removeEventListener("storage", updateTheme); + setMounted(false); + }); + }); + + return ( +
+ {(mounted() && currentTheme().theme === "light") || + currentTheme().system === "light" ? ( + + ) : ( + + )} +
+ ); +}; diff --git a/src/components/hooks/TransformLinks.astro b/src/components/hooks/TransformLinks.astro new file mode 100644 index 0000000..7d7cca7 --- /dev/null +++ b/src/components/hooks/TransformLinks.astro @@ -0,0 +1,66 @@ +--- +--- + diff --git a/src/components/hooks/TransformMDCodeblocks.astro b/src/components/hooks/TransformMDCodeblocks.astro new file mode 100644 index 0000000..478cf3d --- /dev/null +++ b/src/components/hooks/TransformMDCodeblocks.astro @@ -0,0 +1,21 @@ +--- +--- + diff --git a/src/components/icons.tsx b/src/components/icons.tsx new file mode 100644 index 0000000..2208364 --- /dev/null +++ b/src/components/icons.tsx @@ -0,0 +1,477 @@ +import type { VoidComponent } from "solid-js"; + +export const XToMenu: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Close Menu + + + + + + + + + + + + + ); +}; + +export const MenuToX: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Open Menu + + + + + + + + + + + + + ); +}; + +export const Sun: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Light + + + ); +}; + +export const Moon: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Dark + + + ); +}; + +export const ShevronSmallDown: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Open + + + + + + + ); +}; + +export const CaretCircleRight: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Open + + + ); +}; + +export const Clipboard: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Copy code + + + ); +}; + +export const Hashtag: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Copy link + + + ); +}; + +export const Tag: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Go to + + + ); +}; + +export const Subtitles: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Go to + + + ); +}; + +export const Ruler: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Go to + + + ); +}; + +export const RoundBrackets: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Go to + + + ); +}; + +export const PowerCord: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Go to + + + ); +}; + +export const FourDiamonds: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Go to + + + ); +}; + +export const Flag: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Flags + + + ); +}; + +export const ReturnKey: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Return + + + ); +}; + +export const ArrowRightElbow: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Return + + + ); +}; + +export const ArrowLeftSimple: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Return + + + ); +}; + +export const Article: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Types + + + ); +}; + +export const LoadingSpinner: VoidComponent<{ + class?: string; +}> = props => { + return ( + + Loading + + + + + ); +}; diff --git a/src/components/navigation/Search.astro b/src/components/navigation/Search.astro new file mode 100644 index 0000000..3c63ad2 --- /dev/null +++ b/src/components/navigation/Search.astro @@ -0,0 +1,7 @@ +--- +import SearchComponent from "./search"; +--- + +
+ +
diff --git a/src/components/navigation/search/SearchModal.tsx b/src/components/navigation/search/SearchModal.tsx new file mode 100644 index 0000000..b22c242 --- /dev/null +++ b/src/components/navigation/search/SearchModal.tsx @@ -0,0 +1,53 @@ +import { For, type Component } from "solid-js"; +import type { SearchResult } from "./types"; +import { + getIconForLink, + getQMLTypeLink, + getQMLTypeLinkObject, +} from "@src/config/io/helpers"; + +const SearchModal: Component<{ + results: SearchResult[]; +}> = props => { + const { results } = props; + const linkRegex = /TYPE99(\w+.)99TYPE/g; + + return ( +
+ + {result => { + let excerpt = result.excerpt; + const linkMatch = [...excerpt.matchAll(linkRegex)]; + for (const match of linkMatch) { + const unparsed = match[1]; + const linkObject = getQMLTypeLinkObject(unparsed); + const linkParsed = getQMLTypeLink(linkObject); + const icon = linkObject.mtype + ? getIconForLink(linkObject.mtype, false) + : ""; + const bracketString = getIconForLink("func", false); + const newString = `${icon}${linkObject.mname || linkObject.name}${linkObject.mtype === "signal" ? bracketString : ""}`; + excerpt = excerpt.replace(match[0], newString); + } + excerpt = `${excerpt}...`; + return ( + + ); + }} + +
+ ); +}; + +export default SearchModal; diff --git a/src/components/navigation/search/index.tsx b/src/components/navigation/search/index.tsx new file mode 100644 index 0000000..6e37e21 --- /dev/null +++ b/src/components/navigation/search/index.tsx @@ -0,0 +1,59 @@ +import { + createResource, + createSignal, + type Component, +} from "solid-js"; + +import type { SearchResult } from "./types"; +import SearchModal from "./SearchModal"; + +const pagefind = await import("@dist/pagefind/pagefind.js"); +pagefind.init(); + +async function PagefindSearch(query: string) { + const search = await pagefind.search(query); + const resultdata: SearchResult[] = []; + for (const result of search.results) { + const data = await result.data(); + resultdata.push(data); + } + return resultdata; +} + +const SearchComponent: Component = () => { + let modal!: HTMLElement; + const [query, setQuery] = createSignal(""); + const [results, { refetch }] = createResource( + query, + PagefindSearch + ); + + function handleSearch(value: string) { + setQuery(value); + refetch(); + console.log(results()); + } + + return ( + + ); +}; + +export default SearchComponent; diff --git a/src/components/navigation/search/types.d.ts b/src/components/navigation/search/types.d.ts new file mode 100644 index 0000000..890aaae --- /dev/null +++ b/src/components/navigation/search/types.d.ts @@ -0,0 +1,15 @@ +interface SearchResult { + url: string; + excerpt: string; + meta: { + title: string; + image?: string; + }; + sub_results: { + title: string; + url: string; + excerpt: string; + }[]; +} + +export type { SearchResult } diff --git a/src/components/navigation/sidebars/Nav.astro b/src/components/navigation/sidebars/Nav.astro new file mode 100644 index 0000000..79af2b1 --- /dev/null +++ b/src/components/navigation/sidebars/Nav.astro @@ -0,0 +1,31 @@ +--- +import { generateTypeData } from "@config/io/generateTypeData"; +import { groupRoutes } from "@config/io/helpers"; +import NavComponent from "./nav"; + +const routes = await generateTypeData(); +const groupedRoutes = groupRoutes(routes); + +const url = Astro.url.pathname.split("/"); +const currentRoute = url[2]; +const currentModule = url[3]; +const currentClass = url[4]; + +const treeProps = { + items: groupedRoutes, + currentRoute: currentRoute, + currentModule: currentModule, + currentClass: currentClass, +}; + +const { mobile } = Astro.props; +--- + + diff --git a/src/components/navigation/sidebars/TOC.astro b/src/components/navigation/sidebars/TOC.astro new file mode 100644 index 0000000..310c0ce --- /dev/null +++ b/src/components/navigation/sidebars/TOC.astro @@ -0,0 +1,21 @@ +--- +import TableOfContents from "./toc"; +import type { ConfigHeading, TypeTOC } from "./types.d.ts"; + +export interface Props { + headings?: ConfigHeading[]; + types?: TypeTOC; + mobile: boolean; +} + +const { headings, types, mobile } = Astro.props; +--- + +
+ +
diff --git a/src/components/navigation/sidebars/nav/Tree.tsx b/src/components/navigation/sidebars/nav/Tree.tsx new file mode 100644 index 0000000..6145708 --- /dev/null +++ b/src/components/navigation/sidebars/nav/Tree.tsx @@ -0,0 +1,124 @@ +import { type Component, Index, For } from "solid-js"; +import { Accordion } from "@ark-ui/solid"; + +import { ShevronSmallDown } from "@icons"; +import type { TreeProps } from "../types"; + +export const Tree: Component = props => { + const { currentRoute, currentModule, currentClass, items } = + props; + + const typeKeys = items!.types && Object.keys(items!.types); + + const tutorials = + items!.tutorials && items!.tutorials + ? items!.tutorials.configuration + : null; + + return ( + + ); +}; diff --git a/src/components/navigation/sidebars/nav/index.tsx b/src/components/navigation/sidebars/nav/index.tsx new file mode 100644 index 0000000..2c99c08 --- /dev/null +++ b/src/components/navigation/sidebars/nav/index.tsx @@ -0,0 +1,52 @@ +import { createSignal, type Component } from "solid-js"; + +import { LoadingSpinner, MenuToX, XToMenu } from "@icons"; +import { Tree } from "./Tree"; +import type { NavProps } from "../types"; + +const NavComponent: Component = props => { + const [open, setOpen] = createSignal(false); + const { tree, mobile, routes } = props; + + if (!tree) { + return ; + } + + function toggle(e: MouseEvent) { + e.preventDefault(); + setOpen(!open()); + } + + if (!mobile) { + return ( + + ); + } + + return ( + + ); +}; + +export default NavComponent; diff --git a/src/components/navigation/sidebars/toc/Heading.tsx b/src/components/navigation/sidebars/toc/Heading.tsx new file mode 100644 index 0000000..3cc3366 --- /dev/null +++ b/src/components/navigation/sidebars/toc/Heading.tsx @@ -0,0 +1,33 @@ +import { For, type Component } from "solid-js"; + +import type { ConfigTOC } from "../types"; + +export const Heading: Component<{ + heading: ConfigTOC; + index: number; +}> = props => { + const { heading, index } = props; + + return ( +
  • + + {heading.text} + + {heading.subheadings.length > 0 && ( +
      + + {subheading => ( + + )} + +
    + )} +
  • + ); +}; diff --git a/src/components/navigation/sidebars/toc/Table.tsx b/src/components/navigation/sidebars/toc/Table.tsx new file mode 100644 index 0000000..b3b49cf --- /dev/null +++ b/src/components/navigation/sidebars/toc/Table.tsx @@ -0,0 +1,111 @@ +import { type Component, For } from "solid-js"; + +import type { TypeTOC, ConfigTOC } from "../types"; +import { + LoadingSpinner, + Tag, + RoundBrackets, + PowerCord, + FourDiamonds, +} from "@icons"; +import { Heading } from "./Heading"; + +export const Table: Component<{ + typeTOC?: TypeTOC; + configTOC?: ConfigTOC[]; +}> = props => { + const { typeTOC, configTOC } = props; + + if (configTOC) { + return ( +
    +

    Contents

    + + {heading => ( + + )} + +
    + ); + } + + if (!typeTOC) { + return ; + } + + return ( + + ); +}; diff --git a/src/components/navigation/sidebars/toc/i.tsx.bak b/src/components/navigation/sidebars/toc/i.tsx.bak new file mode 100644 index 0000000..49cd9fc --- /dev/null +++ b/src/components/navigation/sidebars/toc/i.tsx.bak @@ -0,0 +1,52 @@ +import { createSignal, type Component } from "solid-js"; + +import { Article } from "@icons"; +import { Table } from "./Table"; +import type { + TOCProps, + TypeTOC, + ConfigHeading, +} from "../types"; +import { buildHierarchy } from "@config/io/helpers"; + +const TableOfContents: Component = props => { + const [open, setOpen] = createSignal(false); + const [typeProps] = createSignal( + props.type + ); + const [configProps] = createSignal< + ConfigHeading[] | undefined + >(props.config); + + function toggle(e: MouseEvent) { + e.preventDefault(); + setOpen(!open()); + } + + if (!props.mobile) { + return typeProps() ? ( + + ) : ( +
    + ); + } + + return ( +
    + ) : ( +
    + )} + + + ); +}; + +export default TableOfContents; diff --git a/src/components/navigation/sidebars/toc/index.tsx b/src/components/navigation/sidebars/toc/index.tsx new file mode 100644 index 0000000..5934d9e --- /dev/null +++ b/src/components/navigation/sidebars/toc/index.tsx @@ -0,0 +1,41 @@ +import { createSignal, type Component } from "solid-js"; + +import { Article } from "@icons"; +import { Table } from "./Table"; +import type { TOCProps } from "../types"; +import { buildHierarchy } from "@config/io/helpers"; + +const TableOfContents: Component = props => { + const [open, setOpen] = createSignal(false); + const { mobile, config, type } = props; + + function toggle(e: MouseEvent) { + e.preventDefault(); + setOpen(!open()); + } + + if (!mobile) { + return type ? ( +
    + ) : ( +
    + ); + } + + return ( +
    +
    toggle(e)}> +
    +
    +
    + {type ? ( +
    + ) : ( +
    + )} + + + ); +}; + +export default TableOfContents; diff --git a/src/components/navigation/sidebars/types.d.ts b/src/components/navigation/sidebars/types.d.ts new file mode 100644 index 0000000..3189119 --- /dev/null +++ b/src/components/navigation/sidebars/types.d.ts @@ -0,0 +1,63 @@ +// Left +export interface Item { + name: string; + type: string; +} + +export interface GroupedRoutes { + tutorials: { [key: string]: Item[] }; + types: { [key: string]: Item[] }; +} + +export interface TreeProps { + items: GroupedRoutes; + currentRoute?: string; + currentModule: string | null; + currentClass: string | null; +} + +export interface NavProps { + routes: GroupedRoutes; + tree: TreeProps; + mobile: boolean; +} + +// Right +export interface TOCProps { + config?: ConfigHeading[]; + type?: TypeTableProps; + mobile: boolean; +} + +// -- Config +export interface ConfigHeading { + slug: string; + text: string; + depth: number; +} + +export interface ConfigTOC { + slug: string; + text: string; + depth: number; + subheadings: ConfigTOC[]; +} + +export interface ConfigTableProps { + content: { + title: string; + }; + headings: ConfigHeading[]; + frontmatter?: { + title: string; + description: string; + }; +} + +// -- Types +export interface TypeTOC { + properties: string[] | null; + functions: string[] | null; + signals: string[] | null; + variants: string[] | null; +} diff --git a/src/components/type/Functions.astro b/src/components/type/Functions.astro new file mode 100644 index 0000000..8b4792c --- /dev/null +++ b/src/components/type/Functions.astro @@ -0,0 +1,67 @@ +--- +import type { + QMLTypeLinkObject, + QuickshellFunction, +} from "@config/io/types"; +import { + parseMarkdown, + getQMLTypeLink, +} from "@config/io/helpers"; +import { Tag } from "@icons"; + +export interface Props { + funcData: QuickshellFunction[]; + title: string; +} + +const { funcData, title } = Astro.props; +--- +
      + { + funcData.map(item => { + const functionParams = item.params.length > 0 ? item.params : null + const retTypeLink = getQMLTypeLink(item.ret as unknown as QMLTypeLinkObject) + return ( +
    • +

      + {item.name}({functionParams + ? functionParams.map((itemType, index) => ( + {itemType.name}{ + index !== functionParams.length - 1 + && ", " + } + ) + ) : null}){item.ret.name || item.ret.type} +

      + { + item.params.length > 0 ? ( +

      + { + item.params.map(param => { + const paramTypeLink = getQMLTypeLink(param.type); + return ( + + + {param.name}{param.type.name} + + ) + }) + } +

      + ) + :null + } +
      +
      +
      +
    • + ) + }) + } +
    diff --git a/src/components/type/Properties.astro b/src/components/type/Properties.astro new file mode 100644 index 0000000..59be51d --- /dev/null +++ b/src/components/type/Properties.astro @@ -0,0 +1,83 @@ +--- +import { + parseMarkdown, + getQMLTypeLink, +} from "@config/io/helpers"; +import type { + QMLTypeLinkObject, + QuickshellProps, +} from "@config/io/types"; +import { Tag, Flag } from "@icons"; + +export interface Props { + propsKeys: string[]; + propsData: QuickshellProps; + title: string; +} + +const { propsKeys, propsData, title } = Astro.props; +--- +
      + { + propsKeys.map(item => { + const propData = propsData[item] + let typeLink:string; + let linkText:string; + const gadget = propData.type.gadget; + if (gadget) { + typeLink = "#" + linkText = `[${Object.keys(gadget).toString()}]` + } else { + typeLink = getQMLTypeLink(propData.type as unknown as QMLTypeLinkObject) + linkText = propData.type.name || propData.type.type + } + return ( +
    • +

      + + { item }{ linkText } +

      + { + propData.flags && propData.flags.length > 0 ? ( +

      + { + propData.flags.map((flag) => { + return ( + + + {flag} + + ) + }) + } +

      + ) : null + } + { + gadget ? ( +

      + { + Object.keys(gadget).map((key) => { + const gadgetData = gadget[key] + return ( + + + {key}:{gadgetData.name} + + ) + }) + } +

      + ):null + } +
      +
      +
      +
    • + ) + }) + } +
    diff --git a/src/components/type/Signals.astro b/src/components/type/Signals.astro new file mode 100644 index 0000000..8424a06 --- /dev/null +++ b/src/components/type/Signals.astro @@ -0,0 +1,54 @@ +--- +import type { QuickshellSignal } from "@config/io/types"; +import { Tag, PowerCord } from "@icons"; +import { parseMarkdown } from "@config/io/helpers"; + +export interface Props { + signalKeys: string[]; + signalsData: QuickshellSignal; + title: string; +} + +const { signalKeys, signalsData, title } = Astro.props; +--- +
      + { + signalKeys.map(item => { + const signalData = signalsData[item]; + const paramKeys = signalData.params.length > 0 ? signalData.params.map((param,index) => `${param.name}${index !== signalData.params.length -1 ? ", ":""}`) : [] + return ( +
    • +

      + + { item }({paramKeys})? +

      + { + signalData.params && signalData.params.length > 0 ? ( +

      + { + signalData.params.map((param, _) => { + return ( + + + {param.name}{param.type.name} + + ) + }) + } +

      + ) : null + } +
      +
      +
      +
    • + ) + }) + } +
    diff --git a/src/components/type/Variants.astro b/src/components/type/Variants.astro new file mode 100644 index 0000000..b074f73 --- /dev/null +++ b/src/components/type/Variants.astro @@ -0,0 +1,45 @@ +--- +import type { QuickshellVariant } from "@config/io/types"; +import { FourDiamonds } from "../icons"; +import { parseMarkdown } from "@src/config/io/helpers"; + +export interface Props { + variantKeys: string[]; + variantsData: QuickshellVariant; + title: string; +} + +const { variantKeys, variantsData, title } = Astro.props; +--- +
      + { + variantKeys.map(item => { + const variantData = variantsData[item]; + const paramKeys = variantData.params && variantData.params.length > 0 + ? variantData.params.map(param => param.name) + : []; + return ( +
    • +

      + + { item } +

      + { + paramKeys ? ( +
      + {paramKeys.map(paramKey => ( + {paramKey} + ))} +
      + ) + :null + } +
      +
      +
      +
    • + ) + }) + } +
    + diff --git a/src/config/Head.astro b/src/config/Head.astro new file mode 100644 index 0000000..4ff5fe5 --- /dev/null +++ b/src/config/Head.astro @@ -0,0 +1,28 @@ +--- +interface Props { + title: string; + description: string; + // image: string; +} +const { title, description } = Astro.props; +--- + +{title} + + + + + + + + + + + + + + + + + + diff --git a/src/config/PreTheme.astro b/src/config/PreTheme.astro new file mode 100644 index 0000000..8b5293c --- /dev/null +++ b/src/config/PreTheme.astro @@ -0,0 +1,23 @@ +--- + +--- + + diff --git a/src/config/io/fuseConfig.ts b/src/config/io/fuseConfig.ts new file mode 100644 index 0000000..a78ce3f --- /dev/null +++ b/src/config/io/fuseConfig.ts @@ -0,0 +1,5 @@ +export const options = { + includeMatches: true, + minMatchCharLength: 2, + threshold: 0.5, +}; diff --git a/src/config/io/generateSearchLists.ts b/src/config/io/generateSearchLists.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/config/io/generateTypeData.ts b/src/config/io/generateTypeData.ts new file mode 100644 index 0000000..ef905bf --- /dev/null +++ b/src/config/io/generateTypeData.ts @@ -0,0 +1,53 @@ +import { promises as fs } from "node:fs"; +import path from "node:path"; + +import type { RouteData, dirData } from "./types"; + +async function readSubdir(subdir: string): Promise { + const fullpath = path.join(process.cwd(), "modules", subdir); + const filenames = await fs.readdir(fullpath); + + const data = await Promise.all( + filenames.map(async filename => { + const filepath = path.join(fullpath, filename); + const content = await fs.readFile(filepath, "utf8"); + const data = JSON.parse(content); + if (typeof data.module === "undefined") { + data.module = "index"; + data.contains = filenames + .filter(filename => filename !== "index.json") + .map(filename => filename.replace(".json", "")); + } + const returnValue = { + fullpath: path.join(fullpath, filename), + filename: filename.replace(".json", ""), + category: subdir, + data: data, + }; + return returnValue; + }) + ); + return data; +} + +export async function generateTypeData(): Promise { + const mainDir = path.join(process.cwd(), "modules"); + const subdirs = await fs.readdir(mainDir, { + withFileTypes: true, + }); + const routes: RouteData[] = []; + + for (const subdir of subdirs) { + const data = await readSubdir(subdir.name); + const returnValue = data.map(entry => { + return { + type: entry.category, + name: entry.filename, + path: entry.fullpath, + data: entry.data, + }; + }); + routes.push(...returnValue); + } + return routes; +} diff --git a/src/config/io/helpers.ts b/src/config/io/helpers.ts new file mode 100644 index 0000000..90e56f9 --- /dev/null +++ b/src/config/io/helpers.ts @@ -0,0 +1,238 @@ +import { marked } from "marked"; +import markedAlert from "marked-alert"; + +import { + // Flag, + PowerCord, + Tag, + FourDiamonds, + RoundBrackets, +} from "@icons"; +import type { + ConfigHeading, + ConfigTOC, + GroupedRoutes, +} from "@components/navigation/sidebars/types"; +import type { QMLTypeLinkObject, RouteData } from "./types"; + +export function buildHierarchy(headings: ConfigHeading[]) { + const toc: ConfigTOC[] = []; + const parentHeadings = new Map(); + + if (!headings || headings.length === 0) { + return toc; + } + + for (const h of headings) { + const heading = { ...h, subheadings: [] }; + parentHeadings.set(heading.depth, heading); + + if (heading.depth === 1) { + toc.push(heading); + } else { + parentHeadings + .get(heading.depth - 1) + .subheadings.push(heading); + } + } + return toc; +} + +export function groupRoutes(routes: RouteData[]): GroupedRoutes { + const froutes = routes.filter(route => route.name !== "index"); + const defaultValue = { + tutorials: { + configuration: [ + { name: "Intro", type: "intro" }, + { name: "Positioning", type: "positioning" }, + { name: "QML Overview", type: "qml-overview" }, + ], + }, + types: {}, + }; + return froutes.reduce((acc, route) => { + if (!acc.tutorials) { + acc.tutorials = { + configuration: [ + { name: "Intro", type: "intro" }, + { name: "Positioning", type: "positioning" }, + { name: "QML Overview", type: "qml-overview" }, + ], + }; + } + + if (!acc.types) acc.types = {}; + + if (!acc.types[route.type]) { + acc.types[route.type] = []; + } + + acc.types[route.type].push({ + name: route.name, + type: route.type, + }); + return acc; + }, defaultValue); +} + +export function parseMarkdown(text?: string, title?: string) { + if (!text) { + return marked.parse(`${title}`); + } + + return marked.use(markedAlert()).parse(text); +} + +export function getQMLTypeLinkObject(unparsed: string) { + const isLocal = unparsed.startsWith("MQS_") ? "local" : false; + const isQT = unparsed.startsWith("MQT_") ? "qt" : false; + const index = isLocal || isQT || "self"; + + const hashMap = { + local: () => { + const linkSplit = unparsed.slice(4).split("99"); + const hasSubmodule = linkSplit[0].indexOf("_") !== -1; + const linkModule = hasSubmodule + ? linkSplit[0].replace("_", ".") + : linkSplit[0]; + const linkObj: QMLTypeLinkObject = { + type: "local", + module: linkModule.replace("_", "."), + name: linkSplit[1].slice(1), + }; + if (linkSplit.length > 2) { + linkObj.mname = linkSplit[2].slice(1); + linkObj.mtype = linkSplit[3].slice(1); + } + return linkObj; + }, + qt: () => { + const linkSplit = unparsed.slice(4).split("99"); + const hasSubmodule = linkSplit[0].indexOf("_") !== -1; + const linkModule = hasSubmodule + ? linkSplit[0].replace("_", "-") + : linkSplit[0]; + const linkObj: QMLTypeLinkObject = { + type: "qt", + module: linkModule, + name: linkSplit[1].slice(1), + }; + if (linkSplit.length > 2) { + linkObj.mname = linkSplit[3]; + linkObj.mtype = linkSplit[4]; + } + return linkObj; + }, + self: () => { + const linkSplit = unparsed.slice(1).split("99"); + const linkObj: QMLTypeLinkObject = { + type: "self", + mname: linkSplit[0], + mtype: linkSplit[1].slice(1), + }; + return linkObj; + }, + }; + + return hashMap[index](); +} + +export function getQMLTypeLink({ + type, + module, + name, + //mtype, + mname, +}: QMLTypeLinkObject) { + if (type === "unknown") { + return "#unknown"; + } + const qtStart = "https://doc.qt.io/qt-6/"; + const localStart = "/docs/types"; + const isSpecific = mname ? `#${mname}` : ""; + + const hashMap = { + local: () => { + const localLink = `${localStart}/${module}/${name}${isSpecific}`; + return localLink; + }, + qt: () => { + const qtLink = `${qtStart}${module!.toLowerCase().replace(".", "-")}-${name!.toLowerCase()}${isSpecific.toLowerCase()}.html`; + return qtLink; + }, + self: () => { + const selfLink = `#${mname}`; + return selfLink; + }, + }; + + if (!type) { + type = "self"; + } + + return hashMap[type as keyof typeof hashMap](); +} + +export function getIconForLink(mtype: string, isJsx: boolean) { + const TagIconString: string = ` + Go to + + `; + const RoundBracketsIconString: string = ` + Go to + + `; + const PowerCordIconString: string = ` + Go to + + `; + const FourDiamondsIconString: string = ` + Go to + + `; + const map = { + prop: () => (isJsx ? Tag : TagIconString), + func: () => (isJsx ? RoundBrackets : RoundBracketsIconString), + signal: () => (isJsx ? PowerCord : PowerCordIconString), + variant: () => + isJsx ? FourDiamonds : FourDiamondsIconString, + }; + + return map[mtype as keyof typeof map](); +} diff --git a/src/config/io/types.d.ts b/src/config/io/types.d.ts new file mode 100644 index 0000000..daa2723 --- /dev/null +++ b/src/config/io/types.d.ts @@ -0,0 +1,121 @@ +//#FIXME fuseConfig.ts +// -- + +// generateSearchLists.ts +interface SearchLists { + slug: string; + link: string; + summary: string; +} +// -- + +// generateTypeData.ts +interface QuickshellBase { + type: string; + module: string; + name: string; +} + +interface QuickshellInstance { + name?: string; + type: { + gadget?: QuickshellGadget; + type: string; + module: string; + name: string; + of?: QuickshellBase; + }; + details?: string; + flags?: string[]; +} + +interface QuickshellGadget { + [key: string]: QuickshellInstance; +} + +interface QuickshellProps { + [key: string]: QuickshellInstance; +} + +interface QuickshellFunction { + ret: QuickshellInstance; + name: string; + id: string; + details: string; + params: QuickshellInstance[]; +} + +interface QuickshellSignal { + [key: string]: { + name: string; + details: string; + params: QuickshellInstance[]; + }; +} + +export interface QuickshellVariant { + [key: string]: { + name?: string; + details: string; + params?: QuickshellInstance[]; + }; +} + +export interface QuickshellData { + type: string; + module: string; + name: string; + description: string; + details: string; + flags?: string[]; + contains?: string[]; + super?: QuickshellBase; + properties?: QuickshellProps; + functions?: QuickshellFunction[]; + signals?: QuickshellSignal; + variants?: QuickshellVariant; + subtypes?: QuickshellData[]; +} + +export interface RouteData { + // priority 1: Quickshell, Quickshell.Io, etc. + type: string; + // priority 1.1: entry name (e.g. DataStreamParser) + name: string; + // path to json + path: string; + // data content of the route + data: QuickshellData; +} + +export interface dirData { + fullpath: string; + filename: string; + category: string; + data: QuickshellData; +} +// -- + +// helpers.ts +interface QMLTypeLinkObject { + type: string; + module?: string; + name?: string; + mtype?: string; + mname?: string; +} +// -- + +export type { + QuickshellBase, + QuickshellInstance, + QuickshellGadget, + QuickshellProps, + QuickshellFunction, + QuickshellSignal, + QuickshellVariant, + QuickshellData, + RouteData, + dirData, + QMLTypeLinkObject, +}; diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..acef35f --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro new file mode 100644 index 0000000..0520497 --- /dev/null +++ b/src/layouts/BaseLayout.astro @@ -0,0 +1,29 @@ +--- +import Header from "@components/Header.astro"; +import Head from "@config/Head.astro"; +import PreTheme from "@config/PreTheme.astro"; +import "@styles/global.css"; + +interface Props { + title: string; + description: string; + image: string; +} +const { title, description } = Astro.props; +--- + + + + + + + + + + + +
    +

    {title}

    + + + diff --git a/src/layouts/ConfigLayout.astro b/src/layouts/ConfigLayout.astro new file mode 100644 index 0000000..3f68caf --- /dev/null +++ b/src/layouts/ConfigLayout.astro @@ -0,0 +1,39 @@ +--- +import DocsLayout from "@layouts/DocsLayout.astro"; +import TOCIntersectionObserver from "@src/components/hooks/TOCIntersectionObserver.astro"; +import TOC from "@components/navigation/sidebars/TOC.astro"; + +export interface Headings { + slug: string; + text: string; + depth: number; +} + +export interface Props { + content: { + title: string; + }; + headings: Headings[]; + frontmatter?: { + title: string; + description: string; + }; +} + +const { headings, frontmatter } = Astro.props; +--- + +
    +
    +
    + +
    +
    + +
    + + diff --git a/src/layouts/DocsLayout.astro b/src/layouts/DocsLayout.astro new file mode 100644 index 0000000..16e60e6 --- /dev/null +++ b/src/layouts/DocsLayout.astro @@ -0,0 +1,103 @@ +--- +import { Breadcrumbs } from "astro-breadcrumbs"; +import "astro-breadcrumbs/breadcrumbs.css"; + +import CreateCopyButtons from "@components/hooks/CreateCopyButtons.astro"; +import PreTheme from "@config/PreTheme.astro"; +import Header from "@components/Header.astro"; +import Head from "@config/Head.astro"; +import Nav from "@components/navigation/sidebars/Nav.astro"; +import CreateQMLCodeButtons from "@components/hooks/CreateQMLCodeButtons.astro"; +import "@styles/global.css"; +import type { ConfigHeading } from "@src/components/navigation/sidebars/types"; + +interface Props { + title: string; + description: string; + headings?: ConfigHeading[]; +} + +const { title, description, headings } = Astro.props; +const url = Astro.url.pathname.split("/"); + +const customBreadcrumbs = [ + { + index: 0, + text: "custom", + href: "/", + }, + { + text: url[1].slice(0, 1)[0].toUpperCase() + url[1].slice(1), + href: `/${url[1]}`, + }, +]; + +if (url[2]) { + customBreadcrumbs.push({ + text: url[2].slice(0, 1)[0].toUpperCase() + url[2].slice(1), + href: `/${url[1]}/${url[2]}`, + }); + if (url[3]) { + customBreadcrumbs.push({ + text: url[3].slice(0, 1)[0].toUpperCase() + url[3].slice(1), + href: `/${url[1]}/${url[2]}/${url[3]}`, + }); + if (url[4]) { + customBreadcrumbs.filter((_, index) => index !== 4); + customBreadcrumbs.push({ + text: url[4], + href: `/${url[1]}/${url[2]}/${url[3]}/${url[4]}`, + }); + } + } +} +--- + + + + + + + + + + + + + +
    +
    +
    + + + diff --git a/src/pages/docs/configuration/index.mdx b/src/pages/docs/configuration/index.mdx new file mode 100644 index 0000000..247fe5d --- /dev/null +++ b/src/pages/docs/configuration/index.mdx @@ -0,0 +1,17 @@ +--- +layout: "@layouts/ConfigLayout.astro" +title: "Configuration" +description: "Configuring the shell" +--- +import MD_Title from "@components/MD_Title.tsx" + +# {frontmatter.title} +You should start with the [Introduction](./configuration/intro) which will guide you +through the basics of QML by creating a simple topbar with a clock. + +From there you can read the [QML Overview](./configuration/qml-overview) to get an overview of +the QML language, or jump right into the [Type Reference](/docs/types) to find +types you can use in your shell. + +The [quickshell-examples](https://git.outfoxxed.me/outfoxxed/quickshell-examples) repo contains +fully working example configurations you can read and modify. diff --git a/src/pages/docs/configuration/intro.mdx b/src/pages/docs/configuration/intro.mdx new file mode 100644 index 0000000..be0f2fc --- /dev/null +++ b/src/pages/docs/configuration/intro.mdx @@ -0,0 +1,844 @@ +--- +layout: "@layouts/ConfigLayout.astro" +title: "Introduction" +--- + +import { DocsCollapsible } from "@components/Collapsible.tsx"; +import MD_Title from "@components/MD_Title.tsx" + +# {frontmatter.title} + +This page will walk you through the process of creating a simple bar/panel, and +introduce you to all the basic concepts involved. + +There are many links to the [QML Overview](../qml-overview) +and [Type Reference](/docs/types) which you should follow if you don't +fully understand the concepts involved. + +## Shell Files + +Every quickshell instance starts from a shell root file, conventionally named `shell.qml`. +The default path is `~/.config/quickshell/shell.qml`. +(where `~/.config` can be substituted with `$XDG_CONFIG_HOME` if present.) + +Each shell file starts with the shell root object. Only one may exist per configuration. + +```qml {filename="~/.config/quickshell/shell.qml"} +import Quickshell + +QS_Quickshell_ShellRoot { + // ... +} +``` + +The shell root is not a visual element but instead contains all of the visual +and non visual objects in your shell. You can have multiple different shells +with shared components and different shell roots. + + +Quickshell can be launched with configurations in locations other than the default one. + +The `-p` or `--path` option will launch the shell root at the given path. +It will also accept folders with a `shell.qml` file in them. +It can also be specified via the `QS_CONFIG_PATH` environment variable. + +The `-c` or `--config` option will launch a configuration from the current manifest, +or if no manifest is specified, a subfolder of quickshell's base path. +It can also be specified via the `QS_CONFIG_NAME` environment variable. + +The base path defaults to `~/.config/quickshell`, but can be changed using +the `QS_BASE_PATH` environment variable. + +The `-m` or `--manifest` option specifies the quickshell manifest to read configs +from. When used with `-c`, the config will be chosen by name from the manifest. +It can also be specified via the `QS_MANIFEST` environment variable. + +The manifest path defaults to `~/.config/quickshell/manifest.conf` and is a list +of `name = path` pairs where path can be relative or absolute. +Lines starting with `#` are comments. + +```properties +# ~/.config/quickshell/manifest.conf +myconf1 = myconf +myconf2 = ./myconf +myconf3 = myconf/shell.nix +myconf4 = ~/.config/quickshell/myconf +``` + +You can use `quickshell --current` to print the current values of any of these +options and what set them. + + + +## Creating Windows + +Quickshell has two main window types available, +[PanelWindow](/docs/types/quickshell/panelwindow) for bars and widgets, and +[FloatingWindow](/docs/types/quickshell/floatingwindow) for standard desktop windows. + +We'll start with an example: + +```qml +import Quickshell // for ShellRoot and PanelWindow +import QtQuick // for Text + +QS_Quickshell_ShellRoot { + QS_Quickshell_PanelWindow { + anchors { + top: true + left: true + right: true + } + + height: 30 + + QT__Text { + // center the bar in its parent component (the window) + anchors.centerIn: parent + + text: "hello world" + } + } +} +``` + +The above example creates a bar/panel on your currently focused monitor with +a centered piece of [text](https://doc.qt.io/qt-6/qml-qtquick-text.html). It will also reserve space for itself on your monitor. + +More information about available properties is available in the [type reference](/docs/types/quickshell/panelwindow). + +## Running a process + +Now that we have a piece of text, what if it did something useful? +To start with lets make a clock. To get the time we'll use the `date` command. + +We can use a [Process](/docs/types/quickshell.io/process) object to run commands +and return their results. + +We'll listen to the [DataStreamParser.read](/docs/types/quickshell.io/datastreamparser/#signal.read) +[signal](/docs/configuration/qml-overview/#signals) emitted by +[SplitParser](/docs/types/quickshell.io/splitparser/) using a +[signal handler](/docs/configuration/qml-overview/#signal-handlers) +to update the text on the clock. + +> [!note/Note] +> Quickshell live-reloads your code. You can leave it open and edit the +> original file. The panel will reload when you save it. + +```qml +import Quickshell +import Quickshell.Io // for Process +import QtQuick + +QS_Quickshell_ShellRoot { + QS_Quickshell_PanelWindow { + anchors { + top: true + left: true + right: true + } + + height: 30 + + QT__Text { + // give the text an ID we can refer to elsewhere in the file + id: clock + + anchors.centerIn: parent + + // create a process management object + QS_Quickshell00Io_Process { + // the command it will run, every argument is its own string + command: ["date"] + + // run the command immediately + running: true + + // process the stdout stream using a SplitParser + // which returns chunks of output after a delimiter + stdout: QS_Quickshell00Io_SplitParser { + // listen for the read signal, which returns the data that was read + // from stdout, then write that data to the clock's text property + onRead: data => clock.text = data + } + } + } + } +} +``` + +## Running code at an interval + +With the above example, your bar should now display the time, but it isn't updating! +Let's use a [Timer](https://doc.qt.io/qt-6/qml-qtqml-timer.html) fix that. + +```qml +import Quickshell +import Quickshell.Io +import QtQuick + +QS_Quickshell_ShellRoot { + QS_Quickshell_PanelWindow { + anchors { + top: true + left: true + right: true + } + + height: 30 + + QT__Text { + id: clock + anchors.centerIn: parent + + QS_Quickshell00Io_Process { + // give the process object an id so we can talk + // about it from the timer + id: dateProc + + command: ["date"] + running: true + + stdout: QS_Quickshell00Io_SplitParser { + onRead: data => clock.text = data + } + } + + // use a timer to rerun the process at an interval + QT_qtqml_Timer { + // 1000 milliseconds is 1 second + interval: 1000 + + // start the timer immediately + running: true + + // run the timer again when it ends + repeat: true + + // when the timer is triggered, set the running property of the + // process to true, which reruns it if stopped. + onTriggered: dateProc.running = true + } + } + } +} +``` + +## Reusable components + +If you have multiple monitors you might have noticed that your bar +is only on one of them. If not, you'll still want to **follow this section +to make sure your bar doesn't disappear if your monitor disconnects**. + +We can use a [Variants](/docs/types/quickshell/variants) +object to create instances of _non widget items_. +(See [Repeater](https://doc.qt.io/qt-6/qml-qtquick-repeater.html) for doing +something similar with visual items.) + +The `Variants` type creates instances of a +[Component](https://doc.qt.io/qt-6/qml-qtqml-component.html) based on a data model +you supply. (A component is a re-usable tree of objects.) + +The most common use of `Variants` in a shell is to create instances of +a window (your bar) based on your monitor list (the data model). + +Variants will inject the values in the data model into each new +component's `modelData` property, which means we can easily pass each screen +to its own component. +(See [Window.screen](/docs/types/quickshell/qswindow/#prop.screen).) + +```qml +import Quickshell +import Quickshell.Io +import QtQuick + +QS_Quickshell_ShellRoot { + QS_Quickshell_Variants { + model: Quickshell.screens; + + delegate: QT_qtqml_Component { + QS_Quickshell_PanelWindow { + // the screen from the screens list will be injected into this + // property + property var modelData + + // we can then set the window's screen to the injected property + screen: modelData + + anchors { + top: true + left: true + right: true + } + + height: 30 + + QT__Text { + id: clock + anchors.centerIn: parent + + QS_Quickshell00Io_Process { + id: dateProc + command: ["date"] + running: true + + stdout: QS_Quickshell00Io_SplitParser { + onRead: data => clock.text = data + } + } + + QT_qtqml_Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } + } + } + } + } +} +``` + + + See also: [Property + Bindings](/docs/configuration/qml-overview/#property-bindings), + [Variants.component](/docs/types/quickshell/variants/#prop.component), + [Quickshell.screens](/docs/types/quickshell/quickshell/#prop.screens), + [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) + + +With this example, bars will be created and destroyed as you plug and unplug them, +due to the reactive nature of the +[Quickshell.screens](/docs/types/quickshell/quickshell/#prop.screens) property. +(See: [Reactive Bindings](/docs/configuration/qml-overview/#reactive-bindings).) + +Now there's an important problem you might have noticed: when the window +is created multiple times we also make a new Process and Timer. We can fix +this by moving the Process and Timer outside of the window. + +> [!caution/Error] +> This code will not work correctly. + +```qml +import Quickshell +import Quickshell.Io +import QtQuick + +QS_Quickshell_ShellRoot { + QS_Quickshell_Variants { + model: Quickshell.screens + + delegate: QT_qtqml_Component { + QS_Quickshell_PanelWindow { + property var modelData + screen: modelData + + anchors { + top: true + left: true + right: true + } + + height: 30 + + QT__Text { + id: clock + anchors.centerIn: parent + } + } + } + } + + QS_Quickshell00Io_Process { + id: dateProc + command: ["date"] + running: true + + stdout: QS_Quickshell00Io_SplitParser { + onRead: data => clock.text = data + } + } + + QT_qtqml_Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } +} +``` + +However there is a problem with naively moving the Process and Timer +out of the component. +_What about the `clock` that the process references?_ + +If you run the above example you'll see something like this in the console every second: + +``` +file:///home/name/.config/quickshell/shell.qml:33: ReferenceError: clock is not defined +file:///home/name/.config/quickshell/shell.qml:33: ReferenceError: clock is not defined +file:///home/name/.config/quickshell/shell.qml:33: ReferenceError: clock is not defined +file:///home/name/.config/quickshell/shell.qml:33: ReferenceError: clock is not defined +file:///home/name/.config/quickshell/shell.qml:33: ReferenceError: clock is not defined +``` + +This is because the `clock` object, even though it has an ID, cannot be referenced +outside of its component. Remember, components can be created _any number of times_, +including zero, so `clock` may not exist or there may be more than one, meaning +there isn't an object to refer to from here. + +We can fix it with a [Property Definition](/docs/configuration/qml-overview/#property-definitions). + +We can define a property inside of the ShellRoot and reference it from the clock +text instead. Due to QML's [Reactive Bindings](/docs/configuration/qml-overview/#reactive-bindings), +the clock text will be updated when we update the property for every clock that +currently exists. + +```qml +import Quickshell +import Quickshell.Io +import QtQuick + +QS_Quickshell_ShellRoot { + id: root + + // add a property in the root + property string time; + + QS_Quickshell_Variants { + model: Quickshell.screens + + delegate: QT_qtqml_Component { + QS_Quickshell_PanelWindow { + property var modelData + screen: modelData + + anchors { + top: true + left: true + right: true + } + + height: 30 + + QT__Text { + // remove the id as we don't need it anymore + + anchors.centerIn: parent + + // bind the text to the root's time property + text: root.time + } + } + } + } + + QS_Quickshell00Io_Process { + id: dateProc + command: ["date"] + running: true + + stdout: QS_Quickshell00Io_SplitParser { + // update the property instead of the clock directly + onRead: data => root.time = data + } + } + + QT_qtqml_Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } +} +``` + +Now we've fixed the problem so there's nothing actually wrong with the +above code, but we can make it more concise: + +1. `Component`s can be defined implicitly, meaning we can remove the + component wrapping the window and place the window directly into the + `delegate` property. +2. The [Variants.delegate](/docs/types/quickshell/variants/#prop.delegate) + property is a [Default Property](/docs/configuration/qml-overview/#the-default-property), + which means we can skip the `delegate:` part of the assignment. + We're already using [ShellRoot](/docs/types/quickshell/shellroot/)'s + default property to store our Variants, Process, and Timer components + among other things. +3. The ShellRoot doesn't actually need an `id` property to talk about + the time property, as it is the outermost object in the file which + has [special scoping rules](/docs/configuration/qml-overview/#property-access-scopes). + +This is what our shell looks like with the above (optional) cleanup: + +```qml +import Quickshell +import Quickshell.Io +import QtQuick + +QS_Quickshell_ShellRoot { + property string time; + + QS_Quickshell_Variants { + model: Quickshell.screens + + QS_Quickshell_PanelWindow { + property var modelData + screen: modelData + + anchors { + top: true + left: true + right: true + } + + height: 30 + + QT__Text { + anchors.centerIn: parent + + // now just time instead of root.time + text: time + } + } + } + + QS_Quickshell00Io_Process { + id: dateProc + command: ["date"] + running: true + + stdout: QS_Quickshell00Io_SplitParser { + // now just time instead of root.time + onRead: data => time = data + } + } + + QT_qtqml_Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } +} +``` + +## Multiple files + +In an example as small as this, it isn't a problem, but as the shell +grows it might be preferable to separate it into multiple files. + +To start with, let's move the entire bar into a new file. + +```qml {filename="shell.qml"} +import Quickshell + +QS_Quickshell_ShellRoot { + Bar {} +} +``` + +```qml {filename="Bar.qml"} +import Quickshell +import Quickshell.Io +import QtQuick + +QS_Quickshell_Scope { + property string time; + + QS_Quickshell_Variants { + model: Quickshell.screens + + QS_Quickshell_PanelWindow { + property var modelData + screen: modelData + + anchors { + top: true + left: true + right: true + } + + height: 30 + + QT__Text { + anchors.centerIn: parent + + // now just time instead of root.time + text: time + } + } + } + + QS_Quickshell00Io_Process { + id: dateProc + command: ["date"] + running: true + + stdout: QS_Quickshell00Io_SplitParser { + // now just time instead of root.time + onRead: data => time = data + } + } + + QT_qtqml_Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } +} +``` + +See also: [Scope](/docs/types/Quickshell/Scope/) + +Any qml file that starts with an uppercase letter can be referenced this way. +We can bring in other folders as well using +[import statements](/docs/configuration/qml-overview/#explicit-imports). + +Now what about breaking out the clock? This is a bit more complex because +the clock component in the bar, as well as the process and timer that +make up the actual clock, need to be dealt with. + +To start with, we can move the clock widget to a new file. For now it's just a +single `Text` object but the same concepts apply regardless of complexity. + +```qml {filename="ClockWidget.qml"} +import QtQuick + +QT__Text { + // A property the creator of this type is required to set. + // Note that we could just set `text` instead, but don't because your + // clock probably will not be this simple. + required property string time + + text: time +} +``` + +```qml {filename="Bar.qml"} +import Quickshell +import Quickshell.Io +import QtQuick + +QS_Quickshell_Scope { + id: root + property string time; + + QS_Quickshell_Variants { + model: Quickshell.screens + + QS_Quickshell_PanelWindow { + property var modelData + screen: modelData + + anchors { + top: true + left: true + right: true + } + + height: 30 + + // the ClockWidget type we just created + ClockWidget { + anchors.centerIn: parent + // Warning: setting `time: time` will bind time to itself which is not what we want + time: root.time + } + } + } + + QS_Quickshell00Io_Process { + id: dateProc + command: ["date"] + running: true + + stdout: QS_Quickshell00Io_SplitParser { + onRead: data => time = data + } + } + + QT_qtqml_Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } +} +``` + +While this example is larger than what we had before, we can now expand +on the clock widget without cluttering the bar file. + +Let's deal with the clock's update logic now: + +```qml {filename="Time.qml"} +import Quickshell +import Quickshell.Io +import QtQuick + +QS_Quickshell_Scope { + property string time; + + QS_Quickshell00Io_Process { + id: dateProc + command: ["date"] + running: true + + stdout: QS_Quickshell00Io_SplitParser { + onRead: data => time = data + } + } + + QT_qtqml_Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } +} +``` + +```qml {filename="Bar.qml"} +import Quickshell + +QS_Quickshell_Scope { + // the Time type we just created + Time { id: timeSource } + + QS_Quickshell_Variants { + model: Quickshell.screens + + QS_Quickshell_PanelWindow { + property var modelData + screen: modelData + + anchors { + top: true + left: true + right: true + } + + height: 30 + + ClockWidget { + anchors.centerIn: parent + // now using the time from timeSource + time: timeSource.time + } + } + } +} +``` + +## Singletons + +Now you might be thinking, why do we need the `Time` type in +our bar file, and the answer is we don't. We can make `Time` +a [Singleton](/docs/configuration/qml-overview/#singletons). + +A singleton object has only one instance, and is accessible from +any scope. + +```qml {filename="Time.qml"} +// with this line our type becomes a singleton +pragma Singleton + +import Quickshell +import Quickshell.Io +import QtQuick + +// your singletons should always have Singleton as the type +QS_Quickshell_Singleton { + property string time + + QS_Quickshell00Io_Process { + id: dateProc + command: ["date"] + running: true + + stdout: QS_Quickshell00Io_SplitParser { + onRead: data => time = data + } + } + + QT_qtqml_Timer { + interval: 1000 + running: true + repeat: true + onTriggered: dateProc.running = true + } +} +``` + +```qml {filename="ClockWidget.qml"} +import QtQuick + +QT__Text { + // we no longer need time as an input + + // directly access the time property from the Time singleton + text: Time.time +} +``` + +```qml {filename="Bar.qml"} +import Quickshell + +QS_Quickshell_Scope { + // no more time object + + QS_Quickshell_Variants { + model: Quickshell.screens + + QS_Quickshell_PanelWindow { + property var modelData + screen: modelData + + anchors { + top: true + left: true + right: true + } + + height: 30 + + ClockWidget { + anchors.centerIn: parent + + // no more time binding + } + } + } +} +``` + +## JavaScript APIs + +In addition to calling external processes, a [limited set of javascript interfaces] is available. +We can use this to improve our clock by using the [Date API] instead of calling `date`. + +[limited set of javascript interfaces]: https://doc.qt.io/qt-6/qtqml-javascript-functionlist.html +[Date API]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date + +```qml {filename="Time.qml"} +pragma Singleton + +import Quickshell +import Quickshell.Io +import QtQuick + +QS_Quickshell_Singleton { + property var date: new Date() + property string time: date.toLocaleString(Qt.locale()) + + QT_qtqml_Timer { + interval: 1000 + running: true + repeat: true + onTriggered: date = new Date() + } +} +``` diff --git a/src/pages/docs/configuration/positioning.mdx b/src/pages/docs/configuration/positioning.mdx new file mode 100644 index 0000000..12824a5 --- /dev/null +++ b/src/pages/docs/configuration/positioning.mdx @@ -0,0 +1,117 @@ +--- +layout: "@layouts/ConfigLayout.astro" +title: "Positioning" +--- +import MD_Title from "@components/MD_Title.tsx" + +# {frontmatter.title} + +QtQuick has multiple ways to position components. This page has instructions for where and how +to use them. + +## Anchors + +Anchors can be used to position components relative to another neighboring component. +It is faster than [manual positioning](#manual-positioning) and covers a lot of simple +use cases. + +The [Qt Documentation: Positioning with Anchors](https://doc.qt.io/qt-6/qtquick-positioning-anchors.html) +page has comprehensive documentation of anchors. + +## Layouts + +Layouts are useful when you have many components that need to be positioned relative to +eachother such as a list. + +The [Qt Documentation: Layouts Overview](https://doc.qt.io/qt-6/qtquicklayouts-overview.html) +page has good documentation of the basic layout types and how to use them. + +> [!note/Note:] +> Layouts by default have a nonzero spacing. + +## Manual Positioning + +If layouts and anchors can't easily fulfill your usecase, you can also manually position and size +components by setting their `x`, `y`, `width` and `height` properties, which are relative to +the parent component. + +This example puts a 100x100px blue rectangle at x=20,y=40 in the parent item. Ensure the size +of the parent is large enough for its content or positioning based on them will break. + +```qml +QT__Item { + // make sure the component is large enough to fit its children + implicitWidth: childrenRect.width + implicitHeight: childrenRect.height + + QT__Rectangle { + color: "blue" + x: 20 + y: 40 + width: 100 + height: 100 + } +} +``` + +## Notes + +### Component Size + +The [Item.implicitHeight] and [Item.implicitWidth] properties control the _base size_ of a +component, before layouts are applied. These properties are _not_ the same as +[Item.height] and [Item.width] which are the final size of the component. +You should nearly always use the implicit size properties when creating a component, +however using the normal width and height properties is fine if you know an +item will never go in a layout. + +[Item.height]: https://doc.qt.io/qt-6/qml-qtquick-item.html#height-prop +[Item.width]: https://doc.qt.io/qt-6/qml-qtquick-item.html#width-prop +[Item.implicitHeight]: https://doc.qt.io/qt-6/qml-qtquick-item.html#implicitHeight-prop +[Item.implicitWidth]: https://doc.qt.io/qt-6/qml-qtquick-item.html#implicitWidth-prop + +This example component puts a colored rectangle behind some text, and will act the same +way in a layout as the text by itself. + +```qml {filename="TextWithBkgColor.qml"} +QT__Rectangle { + implicitWidth: text.implicitWidth + implicitHeight: text.implicitHeight + + QT__Text { + id: text + text: "hello!" + } +} +``` + +If you want to size your component based on multiple others or use any other math you can. + +```qml {filename="PaddedTexts.qml"} +QT__Item { + // width of both texts plus 5 + implicitWidth: text1.implicitWidth + text2.implicitWidth + 5 + // max height of both texts plus 5 + implicitHeight: Math.min(text1.implicitHeight, text2.implicitHeight) + 5 + + QT__Text { + id: text1 + text: "text1" + } + + QT__Text { + id: text2 + anchors.left: text1.left + text: "text2" + } +} +``` + +### Coordinate space + +You should always position or size components relative to the closest possible +parent. Often this is just the `parent` property. + +Refrain from using things like the size of your screen to size a component, +as this will break as soon as anything up the component hierarchy changes, such +as adding padding to a bar. diff --git a/src/pages/docs/configuration/qml-overview.mdx b/src/pages/docs/configuration/qml-overview.mdx new file mode 100644 index 0000000..a1a56a0 --- /dev/null +++ b/src/pages/docs/configuration/qml-overview.mdx @@ -0,0 +1,888 @@ +--- +layout: "@layouts/ConfigLayout.astro" +title: "QML Overview" +--- +import MD_Title from "@components/MD_Title.tsx" +import { DocsCollapsible } from "@components/Collapsible.tsx"; + +# {frontmatter.title} + +Quickshell is configured using the Qt Modeling Language, or QML. +This page explains what you need to know about QML to start using quickshell. + + + See also: [Qt Documentation: QML + Tutorial](https://doc.qt.io/qt-6/qml-tutorial.html) + + +## Structure + +Below is a QML document showing most of the syntax. +Keep it in mind as you read the detailed descriptions below. + +> [!note/Notes:] +> +> - Semicolons are permitted basically everywhere, and recommended in +> functions and expressions. +> - While types can often be elided, we recommend you use them where +> possible to catch problems early instead of running into them unexpectedly later on. + +```qml +// QML Import statement +import QtQuick 6.0 + +// Javascript import statement +import "myjs.js" as MyJs + +// Root Object +QT__Item { + // Id assignment + + id: root + // Property declaration + property int myProp: 5; + + // Property binding + width: 100 + + // Property binding + height: width + + // Multiline property binding + prop: { + // ... + 5 + } + + // Object assigned to a property + objProp: Object { + // ... + } + + // Object assigned to the parent's default property + AnotherObject { + // ... + } + + // Signal declaration + signal foo(bar: int) + + // Signal handler + onSignal: console.log("received signal!") + + // Property change signal handler + onWidthChanged: console.log(`width is now ${width}!`) + + // Multiline signal handler + onOtherSignal: { + console.log("received other signal!"); + console.log(`5 * 2 is ${dub(5)}`); + // ... + } + + // Attached property signal handler + Component.onCompleted: MyJs.myfunction() + + // Function + function dub(x: int): int { + return x * 2 + } +} +``` + +### Imports + +#### Manual imports + +Every QML File begins with a list of imports. +Import statements tell the QML engine where +to look for types you can create [objects](#objects) from. + +A module import statement looks like this: + +```qml +import [Major.Minor] [as ] +``` + +- `Module` is the name of the module you want to import, such as `QtQuick`. +- `Major.Minor` is the version of the module you want to import. +- `Namespace` is an optional namespace to import types from the module under. + +A subfolder import statement looks like this: + +```qml +import "" [as ] +``` + +- `directory` is the directory to import, relative to the current file. +- `Namespace` is an optional namespace to import types from the folder under. + +A javascript import statement looks like this: + +```qml +import "" as +``` + +- `filename` is the name of the javascript file to import. +- `Namespace` is the namespace functions and variables from the javascript + file will be made available under. + +Note: All _Module_ and _Namespace_ names must start with an uppercase letter. +Attempting to use a lowercase namespace is an error. + +##### Examples + +```qml +import QtQuick +import QtQuick.Controls 6.0 +import Quickshell as QS +import QtQuick.Layouts 6.0 as L +import "jsfile.js" as JsFile +``` + + + +By default, when no module version is requested, the QML engine will pick +the latest available version of the module. Requesting a specific version +can help ensure you get a specific version of the module's types, and as a +result your code doesn't break across Qt or quickshell updates. + +While Qt's types usually don't majorly change across versions, quickshell's +are much more likely to break. To put off dealing with the breakage we suggest +specifying a version at least when importing quickshell modules. + + + + + [Qt Documentation: Import + syntax](https://doc.qt.io/qt-6/qtqml-syntax-imports.html) + + +#### Implicit imports + +The QML engine will automatically import any [types](#creating-types) in neighboring files +with names that start with an uppercase letter. + +``` +root +|-MyButton.qml +|-shell.qml +``` + +In this example, `MyButton` will automatically be imported as a type usable from shell.qml +or any other neighboring files. + +### Objects + +Objects are instances of a type from an imported module. +The name of an object must start with an uppercase letter. +This will always distinguish an object from a property. + +An object looks like this: + +```qml +Name { + id: foo + // properties, functions, signals, etc... +} +``` + +Every object can contain [properties](#properties), [functions](#functions), +and [signals](#signals). You can find out what properties are available for a type +by looking it up in the [Type Reference](/docs/types/). + +#### Properties + +Every object may have any number of property assignments (only one per specific property). +Each assignment binds the named property to the given expression. + +##### Property bindings + +Expressions are snippets of javascript code assigned to a property. The last (or only) line +can be the return value, or an explicit return statement (multiline expressions only) can be used. + +```qml +QT__Item { + // simple expression + property: 5 + + // complex expression + property: 5 * 20 + this.otherProperty + + // multiline expression + property: { + const foo = 5; + const bar = 10; + foo * bar + } + + // multiline expression with return + property: { + // ... + return 5; + } +} +``` + +Semicolons are optional and allowed on any line of a single or multiline expression, +including the last line. + +All property bindings are [_reactive_](#reactive-bindings), which means when any property the expression depends +on is updated, the expression is re-evaluated and the property is updated. + +See: [Reactive bindings](#reactive-bindings) + +Note that it is an error to try to assign to a property that does not exist. +(See: [property definitions](#property-definitions)) + +##### Property definitions + +Properties can be defined inside of objects with the following syntax: + +```qml +[required] [readonly] [default] property [: binding] +``` + +- `required` forces users of this type to assign this property. See [Creating Types](#creating-types) for details. +- `readonly` makes the property not assignable. Its binding will still be [reactive](#reactive-bindings). +- `default` makes the property the [default property](#the-default-property) of this type. +- `type` is the type of the property. You can use `var` if you don't know or don't care but be aware that `var` will + allow any value type. +- `name` is the name that the property is known as. It cannot start with an uppercase letter. +- `binding` is the property binding. See [Property bindings](#property-bindings) for details. + +```qml +QT__Item { + // normal property + property int foo: 3 + + // readonly property + readonly property string bar: "hi!" + + // bound property + property var things: [ "foo", "bar" ] +} +``` + +Defining a property with the same name as one provided by the current object will override +the property of the type it is derived from in the current context. + +##### The default property + +Types can have a _default property_ which must accept either an object or a list of objects. + +The default property will allow you to assign a value to it without using the name of the property: + +```qml +QT__Item { + // normal property + foo: 3 + + // this item is assigned to the outer object's default property + QT__Item { + } +} +``` + +If the default property is a list, you can put multiple objects into it the same way as you +would put a single object in: + +```qml +QT__Item { + // normal property + foo: 3 + + // this item is assigned to the outer object's default property + QT__Item { + } + + // this one is too + QT__Item { + } +} +``` + +##### The `id` property + +Every object has a special property called `id` that can be assigned to give +the object a name it can be referred to throughout the current file. The id must be lowercase. + +```qml +QT_qtquick11layouts_ColumnLayout { + QT__Text { + id: text + text: "Hello World!" + } + + QT_qtquick11controls_Button { + text: "Make the text red"; + onClicked: text.color = "red"; + } +} +``` + + + +The `id` property isn't really a property, and doesn't do anything other than +expose the object to the current file. It is only called a property because it +uses very similar syntax to one, and is the only exception to standard property +definition rules. The name `id` is always reserved for the id property. + + + +##### Property access scopes + +Properties are "in scope" and usable in two cases. + +1. They are defined for current type. +2. They are defined for the root type in the current file. + +You can access the properties of any object by setting its [id property](#the-id-property), +or make sure the property you are accessing is from the current object using `this`. + +The `parent` property is also defined for all objects, but may not always point to what it +looks like it should. Use the `id` property if `parent` does not do what you want. + +```qml +QT__Item { + property string rootDefinition + + QT__Item { + id: mid + property string midDefinition + + QT__Text { + property string innerDefinition + + // legal - innerDefinition is defined on the current object + text: innerDefinition + + // legal - innerDefinition is accessed via `this` to refer to the current object + text: this.innerDefinition + + // legal - width is defined for Text + text: width + + // legal - rootDefinition is defined on the root object + text: rootDefinition + + // illegal - midDefinition is not defined on the root or current object + text: midDefinition + + // legal - midDefinition is accessed via `mid`'s id. + text: mid.midDefinition + + // legal - midDefinition is accessed via `parent` + text: parent.midDefinition + } + } +} +``` + + + [Qt Documentation: Scope and Naming + Resolution](https://doc.qt.io/qt-6/qtqml-documents-scope.html) + + +#### Functions + +Functions in QML can be declared everywhere [properties](#properties) can, and follow +the same [scoping rules](#property-access-scopes). + +Function definition syntax: + +```qml +function ([: ][, ...])[: returntype] { + // multiline expression (note that `return` is required) +} +``` + +Functions can be invoked in expressions. Expression reactivity carries through +functions, meaning if one of the properties a function depends on is re-evaluated, +every expression depending on the function is also re-evaluated. + +```qml +QT_qtquick11layouts_ColumnLayout { + property int clicks: 0 + + function makeClicksLabel(): string { + return "the button has been clicked " + clicks + " times!"; + } + + QT_qtquick11controls_Button { + text: "click me" + onClicked: clicks += 1 + } + + QT__Text { + text: makeClicksLabel() + } +} +``` + +In this example, every time the button is clicked, the label's count increases +by one, as `clicks` is changed, which triggers a re-evaluation of `text` through +`makeClicksLabel`. + +##### Lambdas + +Functions can also be values, and you can assign them to properties or pass them to +other functions (callbacks). There is a shorter way to write these functions, known +as lambdas. + +Lambda syntax: + +```qml + => + +// params can take the following forms: +() => ... // 0 parameters + => ... // 1 parameter +([, ...]) => ... // 1+ parameters + +// the expression can be either a single or multiline expression. +... => +... => { + return ; +} +``` + +Assigning functions to properties: + +```qml +QT__Item { + // using functions + function dub(number: int): int { return number * 2; } + property var operation: dub + + // using lambdas + property var operation: number => number * 2 +} +``` + +An overcomplicated click counter using a lambda callback: + +```qml +QT_qtquick11layouts_ColumnLayout { + property int clicks: 0 + + function incrementAndCall(callback) { + clicks += 1; + callback(clicks); + } + + QT_qtquick11controls_Button { + text: "click me" + onClicked: incrementAndCall(clicks => { + label.text = `the button was clicked ${clicks} time(s)!`; + }) + } + + QT__Text { + id: label + text: "the button has not been clicked" + } +} +``` + +#### Signals + +A signal is basically an event emitter you can connect to and receive updates from. +They can be declared everywhere [properties](#properties) and [functions](#functions) +can, and follow the same [scoping rules](#property-access-scopes). + + + [Qt Documentation: Signal and Handler Event + System](https://doc.qt.io/qt-6/qtqml-syntax-signals.html) + + +##### Signal definitions + +A signal can be explicitly defined with the following syntax: + +```qml +signal (: [, ...]) +``` + +##### Making connections + +Signals all have a `connect()` method which invokes the given function +or signal when the signal is emitted. + +```qml +QT_qtquick11layouts_ColumnLayout { + property int clicks: 0 + + function updateText() { + clicks += 1; + label.text = `the button has been clicked ${clicks} times!`; + } + + QT_qtquick11controls_Button { + id: button + text: "click me" + } + + QT__Text { + id: label + text: "the button has not been clicked" + } + + Component.onCompleted: { + button.clicked.connect(updateText) + } +} +``` + + + `Component.onCompleted` will be addressed later in [Attached + Properties](#attached-properties) but for now just know that it runs + immediately once the object is fully initialized. + + +When the button is clicked, the button emits the `clicked` signal which we connected to +`updateText`. The signal then invokes `updateText` which updates the counter and the +text on the label. + +##### Signal handlers + +Signal handlers are a more concise way to make a connections, and prior examples have used them. + +When creating an object, for every signal present on its type there is a corresponding `on` +property implicitly defined which can be set to a function. (Note that the first letter of the +signal's name it capitalized.) + +Below is the same example as in [Making Connections](#making-connections), +this time using the implicit signal handler property to handle `button.clicked`. + +```qml +QT_qtquick11layouts_ColumnLayout { + property int clicks: 0 + + function updateText() { + clicks += 1; + label.text = `the button has been clicked ${clicks} times!`; + } + + QT_qtquick11controls_Button { + text: "click me" + onClicked: updateText() + } + + QT__Text { + id: label + text: "the button has not been clicked" + } +} +``` + +##### Indirect signal handlers + +When it is not possible or not convenient to directly define a signal handler, before resorting +to `.connect`ing the properties, a [Connections] object can be used to access them. + +This is especially useful to connect to signals of singletons. + +```qml +QT__Item { + QT_qtquick11controls_Button { + id: myButton + text "click me" + } + + QT_qtqml_Connections { + target: myButton + + function onClicked() { + // ... + } + } +} +``` + +##### Property change signals + +Every property has an associated signal, which powers QML's [reactive bindings](#reactive-bindings). +The signal is named `Changed` and works exactly the same as any other signal. + +Whenever the property is re-evaluated, its change signal is emitted. This is used internally +to update dependent properties, but can be directly used, usually with a signal handler. + +```qml +QT_qtquick11layouts_ColumnLayout { + CheckBox { + text: "check me" + + onCheckStateChanged: { + label.text = labelText(checkState == Qt.Checked); + } + } + + QT__Text { + id: label + text: labelText(false) + } + + function labelText(checked): string { + return `the checkbox is checked: ${checked}`; + } +} +``` + +In this example we listen for the `checkState` property of the CheckBox changing +using its change signal, `checkStateChanged` with the signal handler `onCheckStateChanged`. + +Since text is also a property we can do the same thing more concisely: + +```qml +QT_qtquick11layouts_ColumnLayout { + CheckBox { + id: checkbox + text: "check me" + } + + QT__Text { + id: label + text: labelText(checkbox.checkState == Qt.Checked) + } + + function labelText(checked): string { + return `the checkbox is checked: ${checked}`; + } +} +``` + +And the function can also be inlined to an expression: + +```qml +QT_qtquick11layouts_ColumnLayout { + CheckBox { + id: checkbox + text: "check me" + } + + QT__Text { + id: label + text: { + const checked = checkbox.checkState == Qt.Checked; + return `the checkbox is checked: ${checked}`; + } + } +} +``` + +You can also remove the return statement if you wish. + +##### Attached objects + +Attached objects are additional objects that can be associated with an object +as decided by internal library code. The documentation for a type will +tell you if it can be used as an attached object and how. + +Attached objects are accessed in the form `.` and can have +properties, functions and signals. + +A good example is the [Component](https://doc.qt.io/qt-6/qml-qtqml-component.html) type, +which is attached to every object and often used to run code when an object initializes. + +```qml +QT__Text { + Component.onCompleted: { + text = "hello!" + } +} +``` + +In this example, the text property is set inside the `Component.onCompleted` attached signal handler. + +#### Creating types + +Every QML file with an uppercase name is implicitly a type, and can be used from +neighboring files or imported (See [Imports](#imports).) + +A type definition is just a normal object. All properties defined for the root object +are visible to the consumer of the type. Objects identified by [id properties](#the-id-property) +are not visible outside the file. + +```qml +// MyText.qml +QT__Rectangle { + required property string text + + color: "red" + implicitWidth: textObj.implicitWidth + implicitHeight: textObj.implicitHeight + + QT__Text { + id: textObj + anchors.fill: parent + text: parent.text + } +} + +// AnotherComponent.qml +QT__Item { + MyText { + // The `text` property of `MyText` is required, so we must set it. + text: "Hello World!" + + // `anchors` is a property of `Item` which `Rectangle` subclasses, + // so it is available on MyText. + anchors.centerIn: parent + + // `color` is a property of `Rectangle`. Even though MyText sets it + // to "red", we can override it here. + color: "blue" + + // `textObj` is has an `id` within MyText.qml but is not a property + // so we cannot access it. + textObj.color: "red" // illegal + } +} +``` + +##### Singletons + +QML Types can be easily made into a singleton, meaning there is only one instance +of the type. + +To make a type a singleton, put `pragma Singleton` at the top of the file. +To ensure it behaves correctly with quickshell you should also make +[Singleton](/docs/types/quickshell/singleton) the root item of your type. + +```qml +pragma Singleton +import ... + +QS_Quickshell_Singleton { + ... +} +``` + +once a type is a singleton, its members can be accessed by name from neighboring +files. + +## Concepts + +### Reactive bindings + + + This section assumes knowledge of: [Properties](#properties), + [Signals](#signals), and [Functions](#functions). See also the [Qt + documentation](https://doc.qt.io/qt-6/qtqml-syntax-propertybinding.html). + + +Reactivity is when a property is updated based on updates to another property. +Every time one of the properties in a binding change, the binding is re-evaluated +and the bound property takes the new result. Any bindings that depend on that property +are then re-evaluated and so forth. + +Bindings can be created in two different ways: + +##### Automatic bindings + +A reactive binding occurs automatically when you use one or more properties in the definition +of another property. . + +```qml +QT__Item { + property int clicks: 0 + + QT_qtquick11controls_Button { + text: `clicks: ${clicks}` + onClicked: clicks += 1 + } +} +``` + +In this example, the button's `text` property is re-evaluated every time the button is clicked, because +the `clicks` property has changed. + +###### Avoiding creation + +To avoid creating a binding, do not use any other properties in the definition of a property. + +You can use the `Component.onCompleted` signal to set a value using a property without creating a binding, +as assignments to properties do not create binding. + +```qml +QT__Item { + property string theProperty: "initial value" + + QT__Text { + // text: "Right now, theProperty is: " + theProperty + Component.onCompleted: text = "At creation time, theProperty is: " + theProperty + } +} +``` + +##### Manual bindings + +Sometimes (not often) you need to create a binding inside of a function, signal, or expression. +If you need to change or attach a binding at runtime, the `Qt.binding` function can be used to +create one. + +The `Qt.binding` function takes another function as an argument, and when assigned to a property, +the property will use that function as its binding expression. + +```qml +QT__Item { + QT__Text { + id: boundText + text: "not bound to anything" + } + + QT_qtquick11controls_Button { + text: "bind the above text" + onClicked: { + if (boundText.text == "not bound to anything") { + text = "press me"; + boundText.text = Qt.binding(() => `button is pressed: ${this.pressed}`); + } + } + } +} +``` + +In this example, `boundText`'s `text` property is bound to the button's pressed state +when the button is first clicked. When you press or unpress the button the text will +be updated. + +##### Removing bindings + +To remove a binding, just assign a new value to the property without using `Qt.binding`. + +```qml +QT__Item { + QT__Text { + id: boundText + text: `button is pressed: ${theButton.pressed}` + } + + QT_qtquick11controls_Button { + id: theButton + text: "break the binding" + onClicked: boundText.text = `button was pressed at the time the binding was broken: ${pressed}` + } +} +``` + +When the button is first pressed, the text will be updated, but once `onClicked` fires +the text will be unbound, and even though it contains a reference to the `pressed` property, +it will not be updated further by the binding. + +### Lazy loading + +Often not all of your interface needs to load immediately. By default the QML +engine initializes every object in the scene before showing anything onscreen. +For parts of the interface you don't need to be immediately visible, load them +asynchronously using a [LazyLoader](/docs/types/quickshell/lazyloader). +See its documentation for more information. + +#### Components + +Another delayed loading mechanism is the [Component](https://doc.qt.io/qt-6/qml-qtqml-component.html) type. +This type can be used to create multiple instances of objects or lazily load them. It's used by types such +as [Repeater](https://doc.qt.io/qt-6/qml-qtquick-repeater.html) +and [Quickshell.Variants](/docs/types/quickshell/variants) +to create instances of a component at runtime. diff --git a/src/pages/docs/index.astro b/src/pages/docs/index.astro new file mode 100644 index 0000000..4c3c8bf --- /dev/null +++ b/src/pages/docs/index.astro @@ -0,0 +1,10 @@ +--- +import DocsLayout from "@layouts/DocsLayout.astro"; +--- + +

    Docs

    + +
    diff --git a/src/pages/docs/types/[type]/[name].astro b/src/pages/docs/types/[type]/[name].astro new file mode 100644 index 0000000..70a136e --- /dev/null +++ b/src/pages/docs/types/[type]/[name].astro @@ -0,0 +1,127 @@ +--- +import { + parseMarkdown, + getQMLTypeLink, +} from "@config/io/helpers"; +import { generateTypeData } from "@config/io/generateTypeData"; +import { Flag } from "@icons"; +import DocsLayout from "@layouts/DocsLayout.astro"; +import TOC from "@components/navigation/sidebars/TOC.astro"; +import Properties from "@components/type/Properties.astro"; +import Functions from "@components/type/Functions.astro"; +import Signals from "@components/type/Signals.astro"; +import Variants from "@components/type/Variants.astro"; +import TransformMDCodeblocks from "@components/hooks/TransformMDCodeblocks.astro"; +import TransformLinks from "@components/hooks/TransformLinks.astro"; + +export async function getStaticPaths() { + const routes = await generateTypeData(); + + return routes + .filter(route => route.name !== "index") + .map(route => ({ + params: { type: route.type, name: route.name }, + props: { route }, + })); +} + +const { route } = Astro.props; + +const data = route.data; + +const sidebarFunctions = + data.functions?.map(item => item.name) || null; + +const propsKeys = data.properties + ? Object.keys(data.properties) + : null; +const signalKeys = data.signals + ? Object.keys(data.signals) + : null; +const variantKeys = data.variants + ? Object.keys(data.variants) + : null; + +const sidebarData = { + properties: propsKeys, + functions: sidebarFunctions, + signals: signalKeys, + variants: variantKeys, +}; + +const superLink = data.super ? getQMLTypeLink(data.super) : null; + +const details = parseMarkdown(data.details, route.name); +--- + + + + +
    +
    +
    +

    + {route.name}: + {data.super ? ( + + {data.super.name} + + ):( + {data.type} + ) + } +

    + { + route && data ? ( +
    + + import {data.module} + {data.flags ? ( +
    {data.flags.map(flag => ( + + + {flag} + + ))}
    + ):null} + + {!details ? ({data.description}):null} +
    + { data.properties && propsKeys ? ( + + ): null} + { data.functions && data.functions.length > 0 ? ( + + ): null} + { data.signals && signalKeys ? ( + + ):null} + { data.variants && variantKeys ? ( + + ):null} +
    + ) : null + } +
    + +
    +
    + diff --git a/src/pages/docs/types/[type]/index.astro b/src/pages/docs/types/[type]/index.astro new file mode 100644 index 0000000..203dd99 --- /dev/null +++ b/src/pages/docs/types/[type]/index.astro @@ -0,0 +1,27 @@ +--- +import DocsLayout from "@layouts/DocsLayout.astro"; +import { generateTypeData } from "@config/io/generateTypeData"; + +export async function getStaticPaths() { + const routes = await generateTypeData(); + + return routes.map(route => ({ + params: { type: route.type, name: route.type }, + props: { route }, + })); +} +const { route } = Astro.props; +--- + + +
    +

    {route.type[0].toUpperCase() + route.type.slice(1)} Definitions

    +
    + {route.data.contains!.map((item:string) => { + return () + })} +
    +
    diff --git a/src/pages/docs/types/index.astro b/src/pages/docs/types/index.astro new file mode 100644 index 0000000..19ebb3c --- /dev/null +++ b/src/pages/docs/types/index.astro @@ -0,0 +1,8 @@ +--- +import DocsLayout from "@layouts/DocsLayout.astro"; +--- + +

    Type Definitions

    +
    +
    +
    diff --git a/src/pages/index.astro b/src/pages/index.astro new file mode 100644 index 0000000..a59a241 --- /dev/null +++ b/src/pages/index.astro @@ -0,0 +1,13 @@ +--- +import BaseLayout from "@layouts/BaseLayout.astro"; +--- + +

    A fully user customizable desktop shell

    +

    Based on QtQuick

    + +
    diff --git a/src/styles/css-config/animations.css b/src/styles/css-config/animations.css new file mode 100644 index 0000000..178d31e --- /dev/null +++ b/src/styles/css-config/animations.css @@ -0,0 +1,107 @@ +@property --percent { + syntax: ''; + initial-value: 0%; + inherits: false; +} + +@keyframes pulseGreen { + 0% { + background-color: hsl(var(--blue) 85 35 / 0.1); + color: hsl(var(--blue) 100 69 / 1.0); + } + + 50% { + background-color: hsl(var(--green) 85 35 / 0.5); + color: hsl(var(--green) 100 69 / 1.0); + } + + 100% { + background-color: hsl(var(--blue) 85 35 / 0.1); + color: hsl(var(--blue) 100 69 / 1.0); + } +} + +@keyframes slideDown { + from { + opacity: 0.001; + height: 0; + } + + to { + opacity: 1; + height: var(--height); + } +} + +@keyframes slideUp { + from { + opacity: 1; + height: var(--height); + } + + to { + opacity: 0; + height: 0; + } +} + +@keyframes rotateIn { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(180deg); + } +} + +@keyframes rotateOut { + from { + transform: rotate(180deg); + } + + to { + transform: rotate(0deg); + } +} + +@keyframes rotateIn90 { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(90deg); + } +} + +@keyframes rotateOut90 { + from { + transform: rotate(90deg); + } + + to { + transform: rotate(0deg); + } +} + + +@keyframes percentToFifty { + from { + --percent: 0%; + } + + to { + --percent: 50%; + } +} + +@keyframes percentToZero { + from { + --percent: 50%; + } + + to { + --percent: 0%; + } +} diff --git a/src/styles/css-config/base.css b/src/styles/css-config/base.css new file mode 100644 index 0000000..a6e3531 --- /dev/null +++ b/src/styles/css-config/base.css @@ -0,0 +1,79 @@ +html { + font-family: 'Rubik', Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.272; + font-weight: 400; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + color-scheme: light dark; + /* accent */ + --green: 141; + --accent-400: var(--green) 100 67; + --accent-500: var(--green) 100 57; + --accent-600: var(--green) 98 50; + + /* secondary */ + --blue: 224; + --secondary-400: var(--blue) 100 68; + --secondary-500: var(--blue) 100 58; + --secondary-600: var(--blue) 53 41; + --secondary-700: var(--blue) 43 31; + --secondary-800: var(--blue) 23 21; + --secondary-900: var(--blue) 44 7; + + /* primary */ + --white: 194; + --bg-400: var(--white) 33 100; + --bg-500: var(--white) 12 96; + --bg-600: var(--white) 12 76; + --bg-700: var(--white) 12 56; + --bg-800: var(--white) 12 36; + --bg-900: var(--white) 12 16; +} + +html.dark { + /* accent */ + --green: 141; + --accent-400: var(--green) 100 67; + --accent-500: var(--green) 95 55; + --accent-600: var(--green) 90 40; + + /* secondary */ + --white: 194; + --secondary-400: var(--white) 33 100; + --secondary-500: var(--white) 33 96; + --secondary-600: var(--white) 33 76; + --secondary-700: var(--white) 33 56; + --secondary-800: var(--white) 35 36; + --secondary-900: var(--white) 44 7; + + /* primary */ + --blue: 224; + --bg-400: var(--blue) 90 65; + --bg-500: var(--blue) 83 45; + --bg-700: var(--blue) 82 25; + --bg-800: var(--blue) 82 15; + --bg-900: var(--blue) 82 3; + + /* docs */ + --prop-color: 350 78 70; + --prop-link-color: 350 78 60; + --func-color: 50 78 70; + --func-link-color: 50 78 60; + --signal-color: 270 78 70; + --signal-link-color: 270 85 60; + --var-color: 190 78 70; + --var-link-color: 190 85 60; + --inner-param-color: 215 60 70; +} + +* { + box-sizing: border-box; + position: relative; + margin: 0; + padding: 0; +} diff --git a/src/styles/css-config/code.css b/src/styles/css-config/code.css new file mode 100644 index 0000000..ad7eea3 --- /dev/null +++ b/src/styles/css-config/code.css @@ -0,0 +1,42 @@ +:where(p, li):has(>code) code { + padding-inline: 0.272rem; + border-radius: 0.272rem; + color: hsl(var(--blue) 100 69); + background-color: hsl(var(--blue) 85 35 / 0.1); +} + +pre { + padding: 1rem; + margin: 0.618rem; + border-radius: 0.618rem; + overflow: auto; + text-wrap: wrap; + + &>button { + all: unset; + width: 3svh; + height: 3svh; + position: absolute; + top: 0.5rem; + right: 0.5rem; + font-size: 1.618rem; + font-weight: 500; + border-radius: 0.272rem; + padding: 0.418rem; + display: flex; + align-items: center; + justify-content: center; + color: hsl(var(--blue) 100 69); + background-color: hsl(var(--blue) 85 35 / 0.1); + cursor: pointer; + transition: color 0.25s; + + &:hover { + color: hsl(var(--blue) 100 75); + } + + &.copied { + animation: pulseGreen 0.5s cubic-bezier(0, 1, 0.6, 1); + } + } +} diff --git a/src/styles/css-config/colors.css b/src/styles/css-config/colors.css new file mode 100644 index 0000000..629b489 --- /dev/null +++ b/src/styles/css-config/colors.css @@ -0,0 +1,31 @@ +.typeprop-link { + color: hsl(var(--prop-link-color)); + + & a { + color: hsl(var(--prop-link-color)) !important; + } +} + +.typesignal-link { + color: hsl(var(--signal-link-color)); + + & a { + color: hsl(var(--signal-link-color)) !important; + } +} + +.typefunc-link { + color: hsl(var(--func-link-color)); + + & a { + color: hsl(var(--func-link-color)) !important; + } +} + +.typevar-link { + color: hsl(var(--var-link-color)); + + & a { + color: hsl(var(--var-link-color)) !important; + } +} diff --git a/src/styles/css-config/modal.css b/src/styles/css-config/modal.css new file mode 100644 index 0000000..8814288 --- /dev/null +++ b/src/styles/css-config/modal.css @@ -0,0 +1,41 @@ +.search-output { + position: fixed; + inset: 0 25svw; + top: 3.6rem; + z-index: 33; + max-height: 100svw; + max-width: 50svw; + + overflow: scroll; + overflow-x: show; + + display: grid; + grid-template-columns: 1fr; + grid-auto-rows: max-content; + row-gap: 0.618rem; + padding: 1rem; +} + +.search-output::before { + content: ""; + position: fixed; + inset: -4rem; + backdrop-filter: blur(4px); + overflow: hidden; + background-color: hsla(0 0 0 / 0.3); +} + +.search-output_item { + height: max-content; + padding: 1rem; + border: 2px solid rgba(200, 200, 200, 0.23); + border-radius: 12px; + background-color: hsl(0 0 0); + overflow: hidden; + + & mark { + all: unset; + background: hsla(53 800 34 / 0.5); + padding-inline: 3px; + } +} diff --git a/src/styles/css-config/search.css b/src/styles/css-config/search.css new file mode 100644 index 0000000..ea8819d --- /dev/null +++ b/src/styles/css-config/search.css @@ -0,0 +1 @@ +@import "./modal.css"; diff --git a/src/styles/docs/collapsible.css b/src/styles/docs/collapsible.css new file mode 100644 index 0000000..b2cdcb4 --- /dev/null +++ b/src/styles/docs/collapsible.css @@ -0,0 +1,66 @@ +[data-scope='collapsible'][data-part='root'] { + --height: max-content; + padding: 0.673rem; + background-color: hsl(var(--white) 40 50 / 0.1); + border-radius: 0.618rem; +} + +[data-scope='collapsible'][data-part='content'] { + transition: all 250ms; + padding: 0; + margin-left: 0; +} + +[data-scope='collapsible'][data-part='content'][data-state='open'] { + animation: slideDown 250ms; + display: flex; + gap: 1.272rem; + flex-direction: column; + padding: 0.618em; + margin-left: 22px; + + & p { + margin-block: 0; + + } + +} + +[data-scope='collapsible'][data-part='content'][data-state='closed'] { + animation: slideUp 200ms; + padding: 0; + margin-left: 0; + + & svg { + animation: rotateOut90 250ms; + } +} + +[data-scope='collapsible'][data-part='trigger'] { + all: unset; + cursor: pointer; + font-size: 1.117rem; + font-weight: 500; + display: flex; + gap: 0.272rem; + align-items: center; + justify-content: space-between; + padding: 0.618rem; + border-radius: 0.618rem; + + &:hover { + background-color: hsl(var(--white) 40 50 / 0.1); + } + + &[data-state='open'] { + & svg { + animation: rotateIn90 250ms forwards; + } + } + + &[data-state='closed'] { + & svg { + animation: rotateOut90 250ms forwards; + } + } +} diff --git a/src/styles/docs/docs-config.css b/src/styles/docs/docs-config.css new file mode 100644 index 0000000..d43f4ee --- /dev/null +++ b/src/styles/docs/docs-config.css @@ -0,0 +1,13 @@ +.small { + opacity: 0.6; + transition: opacity 0.5s; + + &:hover { + opacity: 1; + } + + & p { + font-size: 0.841rem; + margin-top: 1rem; + } +} diff --git a/src/styles/docs/docs-types.css b/src/styles/docs/docs-types.css new file mode 100644 index 0000000..433eebf --- /dev/null +++ b/src/styles/docs/docs-types.css @@ -0,0 +1,407 @@ +.root-nav { + margin-left: 1em; + display: flex; + flex-direction: column; + + & .root-nav-entry { + margin-block: 1em; + } +} + +.types-nav { + display: none; +} + +.typedocs-title { + & a { + opacity: 0.6; + transition: opacity 0.5s; + + &:hover { + opacity: 1; + } + } +} + +#injectedMd { + &>p:not(:first-child) { + margin-block: 0.724rem; + } + +} + +.type-module { + color: hsl(var(--blue) 75 60); +} + +.typedocs-subheading { + margin-bottom: 1rem; +} + +.typedocs-content { + + &>p { + margin-block: 0.618rem; + } + + & hr { + margin-top: 0; + margin-bottom: 0.318rem; + } +} + + +.typedocs-data { + & subheading { + display: flex; + flex-direction: column; + gap: 0.618rem; + } +} + +.typedata { + list-style: none; + margin: 0; + + & .typedata-root { + margin-bottom: 0.618rem; + border-radius: 12px; + padding: 1.272rem; + transition: border 0.3s; + + + &>.typedata-name { + display: flex; + align-items: center; + font-size: 1.272rem; + margin: 0; + margin-top: 0.272rem; + + &>svg { + width: 27px; + height: 27px; + margin-right: 6px; + } + } + } + + & .typedata-details { + margin-top: 1.618rem; + } + + & .typedata-params { + & .typedata-param { + margin-top: 0.272rem; + display: flex; + align-items: center; + gap: 0.117rem; + + &>svg { + height: 1.272rem; + width: 1.272rem; + } + } + } + + & .typedata-detailsdata, + .typedocs-subheading { + &>p { + margin-top: 0.618rem; + } + + & .typeprop-link { + color: hsl(var(--prop-link-color)); + + & a { + color: hsl(var(--prop-link-color)); + } + } + + & .typesignal-link { + color: hsl(var(--signal-link-color)); + + & a { + color: hsl(var(--signal-link-color)); + } + } + + & .typefunc-link { + color: hsl(var(--func-link-color)); + + & a { + color: hsl(var(--func-link-color)); + } + } + + & .typevar-link { + color: hsl(var(--var-link-color)); + + & a { + color: hsl(var(--var-link-color)) + } + } + } +} + + +.typedata-link { + display: inline-flex; + align-items: baseline; + gap: 3px; + + & svg { + width: 18px; + height: 18px; + align-self: center; + } +} + + +.typedata-param { + color: hsla(var(--prop-link-color) / 1); +} + +.type-datatype { + color: #808080; + opacity: 0.8; + width: max-content; + transition: opacity 0.5s; + + &>a { + opacity: inherit; + } +} + +.type-flags { + & .type-flag { + margin: 0; + margin-top: 0.272rem; + display: flex; + align-items: center; + gap: 0.117rem; + color: hsl(var(--inner-param-color)) + } +} + +.typeprops { + & .typeprop-root { + border: 1px solid hsla(var(--prop-color) / 0.3); + + &:hover { + border: 1px solid hsla(var(--prop-color) / 0.6); + + & .type-datatype { + opacity: 1; + } + } + + & .typeprop-name { + color: hsl(var(--prop-link-color)); + } + + } +} + +.typefuncs { + & .typefunc-root { + border: 1px solid hsla(var(--func-color) / 0.3); + + &:hover { + border: 1px solid hsla(var(--func-color) / 0.6); + + & .type-datatype { + opacity: 1; + } + } + + & .typefunc-name { + color: hsl(var(--func-link-color)); + } + + & .typefunc-params { + + & .typefunc-param { + margin-top: 0.272rem; + display: flex; + align-items: center; + gap: 0.117rem; + + &>svg { + height: 1.272rem; + width: 1.272rem; + } + } + + } + + } +} + + +.typesignals { + & .typesignal-root { + border: 1px solid hsla(var(--signal-color) / 0.3); + + &:hover { + border: 1px solid hsla(var(--signal-color) / 0.6); + + & .typesignal-doclink { + opacity: 1; + } + } + + & .typesignal-name { + position: relative; + width: max-content; + color: hsl(var(--signal-link-color)); + + & .typesignal-doclink { + position: absolute; + top: -12px; + right: -12px; + opacity: 0.8; + scale: 75%; + } + } + + & .typesignal-params { + & .typesignal-param { + margin-top: 0.272rem; + display: flex; + align-items: center; + gap: 0.117rem; + + &>svg { + height: 1.272rem; + width: 1.272rem; + } + } + } + } +} + +.typevariants { + & .typevariant-root { + border: 1px solid hsla(var(--var-color) / 0.3); + + &:hover { + border: 1px solid hsla(var(--var-color) / 0.6); + + & .typevariant-doclink { + opacity: 1; + } + } + + & .typevariant-name { + position: relative; + width: max-content; + color: hsl(var(--var-link-color)); + + & .typevariant-doclink { + position: absolute; + top: -12px; + right: -12px; + opacity: 0.8; + scale: 75%; + } + } + } +} + +@media (min-width: 768px) { + .typedocs-content { + margin-inline: 1.272rem; + + & section { + min-width: 30svw; + } + + &>p { + margin-block: 1.217rem; + } + } +} + +@media (min-width: 1280px) { + .typedata { + max-width: 47svw; + } + + .typedata-detailsdata, + .typedocs-subheading { + max-width: 42svw; + + } + + .root-nav { + min-width: 45svw; + } + + .types-nav { + display: block; + position: fixed; + top: 5rem; + right: 10svw; + width: 250px; + max-height: 90svh; + overflow-y: scroll; + z-index: 10; + + & .props-list { + color: hsl(var(--prop-color)); + + & a { + color: hsl(var(--prop-link-color)); + } + } + + & .funcs-list { + color: hsl(var(--func-color)); + + & a { + color: hsl(var(--func-link-color)); + } + } + + & .signals-list { + color: hsl(var(--signal-color)); + + & a { + color: hsl(var(--signal-link-color)); + } + } + + & .vars-list { + color: hsl(var(--var-color)); + + & a { + color: hsl(var(--var-link-color)); + } + } + + & .types-list { + list-style: none; + + & .types-item { + margin-block: 10px; + display: flex; + align-items: center; + gap: 0.478rem; + + & svg { + opacity: 0.6; + width: 24px; + height: 24px; + transition: opacity 0.5s; + } + + &:hover { + & svg { + opacity: 1; + } + } + } + + } + } +} diff --git a/src/styles/docs/docs.css b/src/styles/docs/docs.css new file mode 100644 index 0000000..925dd7f --- /dev/null +++ b/src/styles/docs/docs.css @@ -0,0 +1,124 @@ +@import "./docs-config.css"; +@import "./docs-types.css"; + +.docslayout-root { + margin: 0.618rem; + margin-top: 3.5rem; + overflow: hidden; +} + +.docs, +.docslayout-root { + display: flex; + flex-direction: column; +} + +.spacer-desktop { + display: none; +} + +.c-breadcrumbs { + margin-top: 1.056rem; + margin-bottom: 0.318rem; + max-width: 100svw; +} + +.docs-content { + & section { + max-width: 95svw; + margin-block: 1.618rem; + } + + & p { + margin-block: 0.618rem; + } + + & hr { + margin-top: 0; + margin-bottom: 0.318rem; + } +} + +.heading { + & > [id] { + width: max-content; + } + + & .heading-hashtag { + & svg { + width: 24px; + height: 24px; + opacity: 0.5; + transition: opacity 0.5s; + + &:hover { + opacity: 1; + cursor: pointer; + } + } + } +} + +hr { + opacity: 0.3; +} + +ul { + margin-left: 2.478rem; +} + +.markdown-alert { + margin-block: 0.618rem; + + & > *:not(:first-child) { + margin-block: 0.724rem; + } +} + +.markdown-alert-title { + text-transform: lowercase; + text-transform: capitalize; +} + +@media (min-width: 768px) { + .docs, + .docslayout-root { + gap: 0.648rem; + } + + .docslayout-root { + margin-left: calc(1.618rem + 260px); + } + + .docslayout-inner { + display: block; + } + + .docs-content { + margin-inline: 1.272rem; + + & section { + margin-block: 1.884rem; + } + + & p { + margin-block: 1.217rem; + } + } + + .c-breadcrumbs { + margin-inline: 1.272rem; + } +} + +@media (min-width: 1280px) { + .docs-content { + & section { + max-width: 45svw; + } + } + + .docslayout-root { + margin-inline: calc(10svw + 260px); + } +} diff --git a/src/styles/docs/nav/nav-tree.css b/src/styles/docs/nav/nav-tree.css new file mode 100644 index 0000000..2f10493 --- /dev/null +++ b/src/styles/docs/nav/nav-tree.css @@ -0,0 +1,171 @@ +[data-scope="accordion"][data-part="root"] { + display: flex; + flex-direction: column; + gap: 0.15em; + + & [data-part="item"] { + padding: 6px; + + & [data-part="item"] { + padding-right: 0; + + } + } +} + +[data-scope="accordion"][data-part="item-trigger"] { + background-color: hsl(var(--bg-900)); + position: relative; + border: unset; + border-radius: 6px; + cursor: pointer; + font-size: 1rem; + font-weight: 600; + width: 100%; + height: 36px; + display: flex; + justify-content: flex-start; + align-items: center; + gap: 0.15em; + + & p:has(a) { + text-overflow: ellipsis; + overflow: hidden; + padding-inline: 4px; + border-radius: 20px; + + &:hover { + position: relative; + width: max-content; + padding: 4px; + overflow: scroll; + z-index: 101; + } + } + + &::before { + content: ""; + position: absolute; + border-radius: 6px; + z-index: -1; + inset: -1px; + background-color: hsla(var(--green) 80 70 / 0.3); + transition: background-color 0.3s; + } + + &:hover { + &::before { + background-color: hsla(var(--green) 80 70 / 0.6); + } + } +} + +[data-scope="accordion"][data-part="item-indicator"] { + position: relative; + display: flex; + flex-shrink: 0; + justify-content: center; + align-items: center; + width: 24px; + height: 24px; + border-radius: 50%; + margin-left: 3px; + + &:hover { + background-color: hsl(var(--blue) 30 30); + } + +} + +[data-scope="accordion"][data-part="item-indicator"][data-state="open"] { + animation: rotateIn 250ms ease-in-out forwards; +} + +[data-scope="accordion"][data-part="item-indicator"][data-state="closed"] { + animation: rotateOut 250ms ease-in-out; +} + +[data-scope="accordion"][data-part="item-content"] { + --height: 709; + margin-block: 0.175rem; + + &>.arktree-item, + [data-part="item"] { + margin-left: 21px; + margin-block: 0.117rem; + } + + & .arktree-item, + [data-part="item-content"]>div { + display: flex; + flex-direction: column; + gap: 0.15em; + margin-left: 24px; + margin-top: 0.224em; + + &::before { + content: ""; + position: absolute; + bottom: 0; + height: 1px; + background: linear-gradient(to right, + hsla(var(--accent-400) / 0.5) var(--percent), + hsla(var(--accent-400) / 0) 75%); + animation: percentToZero 250ms ease-in-out forwards; + width: 0; + transition: width 0.25s; + } + + &:hover::before { + width: 100%; + animation: percentToFifty 250ms ease-in-out forwards; + } + + + &>a { + padding-top: 1em; + width: 100%; + + &:hover { + text-decoration: none; + } + } + } +} + +[data-scope="accordion"][data-part="item-content"][data-state="open"] { + animation: slideDown 250ms ease-in-out; +} + +[data-scope="accordion"][data-part="item-content"][data-state="closed"] { + animation: slideUp 200ms ease-in-out; +} + +.__current-type-doc { + color: hsl(var(--blue) 100 70); + + & [data-part="item-trigger"] a { + color: hsl(var(--blue) 100 70) !important; + + } + + &>a { + &::before { + content: ""; + position: absolute; + bottom: 0; + height: 1px; + background: linear-gradient(to right, + hsla(var(--accent-400) / 0.5) var(--percent), + hsla(var(--accent-400) / 0) 100%); + animation: percentToZero 250ms ease-in-out forwards; + width: 100%; + + } + + &:hover::before { + animation: percentToFifty 250ms ease-in-out forwards; + } + + } +} diff --git a/src/styles/docs/nav/nav.css b/src/styles/docs/nav/nav.css new file mode 100644 index 0000000..ff86796 --- /dev/null +++ b/src/styles/docs/nav/nav.css @@ -0,0 +1,127 @@ +@import "./nav-tree.css"; + +.nav-wrapper { + display: none; +} + +.nav-toggle { + position: unset; + height: 24px; + font-size: 1.614rem; + overflow-y: scroll; + max-height: 500px; + scrollbar-width: none; + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } + + & svg, + div { + height: max-content; + width: 100%; + } + + &:hover { + cursor: pointer; + } + + & .nav-items { + position: absolute; + z-index: 11; + overflow-y: scroll; + top: 2.5rem; + left: -1rem; + width: 0; + height: 0; + font-size: 0.745rem; + font-weight: 600; + scrollbar-width: none; + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } + + transition: + width 0.3s ease, + height 0.3s ease, + background-color 0.3s ease, + backdrop-filter 0.3s ease, + padding 0.3s ease; + + &.shown { + padding: 0.3rem; + width: 100svw; + height: 50svh; + background-color: hsl(var(--bg-900) / 0.6); + backdrop-filter: blur(3px) saturate(180%); + display: flex; + flex-direction: column; + align-items: center; + } + + & .navtree { + height: 100%; + width: 100%; + overflow: scroll; + padding: 6px; + + & [data-part="item"] { + margin-left: unset; + display: flex; + flex-direction: column; + align-items: flex-start; + padding-right: 0; + + & [data-part="item-content"] { + & [data-part="item-trigger"] { + width: 93%; + margin-left: 1em; + + & p { + text-align: left; + } + } + + & [data-part="item-content"] { + width: 80%; + margin-left: 24px; + } + } + } + } + } +} + +@media (min-width: 768px) { + .nav-wrapper-mobile { + display: none; + } + + .nav-wrapper { + display: block; + width: 250px; + position: fixed; + top: 5rem; + left: 1.618rem; + flex-shrink: 0; + overflow: scroll; + max-height: 90svh; + scrollbar-width: none; + -ms-overflow-style: none; + z-index: 10; + } + + .navtree { + width: 100%; + z-index: 1; + } +} + +@media (min-width: 1280px) { + .nav-wrapper { + left: 10svw; + } +} diff --git a/src/styles/docs/toc/intro-toc.css b/src/styles/docs/toc/intro-toc.css new file mode 100644 index 0000000..c640aa5 --- /dev/null +++ b/src/styles/docs/toc/intro-toc.css @@ -0,0 +1,29 @@ +.toc-wrapper-mobile .toc-content { + & .toc_a { + transition: color 0.33s; + color: hsl(var(--green) 72 40); + } + + & ul { + margin: 0; + } + + & li { + list-style: none; + + &.active { + & > .toc_a { + color: hsl(var(--green) 72 60); + } + } + } + + & .toc_heading { + margin: 0; + margin-block: 0.618rem; + + & * { + margin-left: 0.348rem; + } + } +} diff --git a/src/styles/docs/toc/toc.css b/src/styles/docs/toc/toc.css new file mode 100644 index 0000000..78d3525 --- /dev/null +++ b/src/styles/docs/toc/toc.css @@ -0,0 +1,125 @@ +@import "./types-toc.css"; +@import "./intro-toc.css"; + +.toc-wrapper { + display: none; +} + +.toc-wrapper-mobile { + display: block; +} + +.toc-toggle { + --width: 100svw; + display: block; + position: unset; + height: 24px; + font-size: 1.614rem; + max-height: 500px; + scrollbar-width: none; + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } + + & > svg { + height: 100%; + width: 24px; + } + + & div { + width: 100%; + height: max-content; + } + + &:hover { + cursor: pointer; + } + + & .toc-mobile { + position: absolute; + overflow-y: scroll; + top: 2.6rem; + right: -1rem; + width: 0; + height: 0; + font-size: 0.745rem; + font-weight: 600; + scrollbar-width: none; + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } + + transition: + width 0.3s ease, + height 0.3s ease, + background-color 0.3s ease, + backdrop-filter 0.3s ease, + padding 0.3s ease; + + &.shown { + padding: 0.3rem; + width: var(--width); + height: 50svh; + background-color: hsl(var(--bg-900) / 0.6); + backdrop-filter: blur(3px) saturate(180%); + display: flex; + flex-direction: column; + align-items: center; + } + } +} + +@media (max-width: 1280px) { + .toc-toggle { + --width: 70svw; + } +} + +@media (min-width: 1280px) { + .toc-wrapper-mobile { + display: none; + } + + .toc-wrapper { + display: block; + position: fixed; + top: 5rem; + right: 10svw; + width: 250px; + max-height: 90svh; + overflow-y: scroll; + z-index: 10; + + & .toc_a { + transition: color 0.33s; + color: hsl(var(--green) 72 40); + } + + & ul { + margin: 0; + } + + & li { + list-style: none; + + &.active { + & > .toc_a { + color: hsl(var(--green) 72 60); + } + } + } + + & .toc_heading { + margin: 0; + margin-block: 0.618rem; + + & * { + margin-left: 0.348rem; + } + } + } +} diff --git a/src/styles/docs/toc/types-toc.css b/src/styles/docs/toc/types-toc.css new file mode 100644 index 0000000..163de52 --- /dev/null +++ b/src/styles/docs/toc/types-toc.css @@ -0,0 +1,63 @@ +.toc-content { + height: 100%; + width: 100%; + overflow: scroll; + padding: 6px; + + & .props-list { + color: hsl(var(--prop-color)); + + & a { + color: hsl(var(--prop-link-color)); + } + } + + & .funcs-list { + color: hsl(var(--func-color)); + + & a { + color: hsl(var(--func-link-color)); + } + } + + & .signals-list { + color: hsl(var(--signal-color)); + + & a { + color: hsl(var(--signal-link-color)); + } + } + + & .vars-list { + color: hsl(var(--var-color)); + + & a { + color: hsl(var(--var-link-color)); + } + } +} + +.types-list { + list-style: none; + z-index: 21; + + & .types-item { + margin-block: 10px; + display: flex; + align-items: center; + gap: 0.478rem; + + & svg { + opacity: 0.6; + width: 24px; + height: 24px; + transition: opacity 0.5s; + } + + &:hover { + & svg { + opacity: 1; + } + } + } +} diff --git a/src/styles/global.css b/src/styles/global.css new file mode 100644 index 0000000..ca623e2 --- /dev/null +++ b/src/styles/global.css @@ -0,0 +1,142 @@ +@import "remark-github-blockquote-alert/alert.css"; +@import "./css-config/base.css"; +@import "./css-config/animations.css"; +@import "./css-config/code.css"; +@import "./css-config/search.css"; +@import "./css-config/colors.css"; +@import "./docs/nav/nav.css"; +@import "./docs/toc/toc.css"; +@import "./docs/docs.css"; +@import "./docs/collapsible.css"; + +/* color styling */ +.header { + background-color: hsl(var(--blue) 100 88); + box-shadow: 0 3px 3px 3px hsla(var(--white) 100 0 / 0.3); +} + +.baselayout, +.docslayout { + background-color: hsl(var(--bg-500)); + color: hsl(var(--secondary-900)); +} + +a { + color: hsla(var(--accent-600)); + text-decoration: none; + + &:hover { + text-decoration: underline; + cursor: pointer; + } +} + +html.dark { + & .header { + background-color: hsl(var(--secondary-900)); + color: hsl(var(--secondary-500)); + } + + & .baselayout, + .docslayout { + background-color: hsl(var(--bg-900)); + color: hsl(var(--secondary-400)); + } + + & a { + color: hsl(var(--accent-500)); + } +} + +/* layout and positioning */ +.unset { + all: unset; +} + +.search { + display: none; +} + +.header { + position: fixed; + top: 0; + width: 100%; + z-index: 10; + display: flex; + align-items: center; + height: 3.5rem; +} + +.header-title { + display: none; + font-size: 1.614em; + font-weight: 700; + line-height: 1.272; +} + +.header-title.mobile { + display: block; +} + +.header-item { + display: flex; + gap: 1rem; + flex-shrink: 0; + flex-grow: 1; + align-items: center; +} + +.header-left { + justify-content: flex-start; + padding-left: 1rem; +} + +.header-right { + justify-content: flex-end; + padding-right: 1rem; +} + +.spacer-mobile { + font-size: 1.374rem; + color: hsla(var(--white) 40 50 / 0.3); +} + +.theme-toggle { + height: 24px; + font-size: 1.614rem; + + &:hover { + cursor: pointer; + } +} + +@media (min-width: 768px) { + html { + font-size: 16px; + } + + .header-title { + display: block; + } + + .header-title.mobile { + display: none; + } + + .menu-toggle, + .spacer-mobile { + display: none; + } + + .search { + display: block; + } + + .spacer-desktop { + display: block; + font-size: 1.374rem; + color: hsla(var(--white) 40 50 / 0.3); + } +} + +@media (min-width: 1280px) {} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ff5dd34 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,37 @@ +{ + "extends": "astro/tsconfigs/strict", + "compilerOptions": { + "plugins": [ + { + "name": "@astrojs/ts-plugin" + } + ], + "jsx": "preserve", + "jsxImportSource": "solid-js", + "verbatimModuleSyntax": true, + "baseUrl": ".", + "paths": { + "@*": [ + "./*" + ], + "@/*": [ + "./src/*" + ], + "@config/*": [ + "./src/config/*" + ], + "@icons": [ + "./src/components/icons.tsx" + ], + "@components/*": [ + "./src/components/*" + ], + "@layouts/*": [ + "./src/layouts/*" + ], + "@styles/*": [ + "./src/styles/*" + ] + } + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..ba050bf --- /dev/null +++ b/yarn.lock @@ -0,0 +1,8245 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + languageName: node + linkType: hard + +"@ark-ui/solid@npm:^3.5.0": + version: 3.13.0 + resolution: "@ark-ui/solid@npm:3.13.0" + dependencies: + "@internationalized/date": "npm:3.5.5" + "@zag-js/accordion": "npm:0.71.0" + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/avatar": "npm:0.71.0" + "@zag-js/carousel": "npm:0.71.0" + "@zag-js/checkbox": "npm:0.71.0" + "@zag-js/clipboard": "npm:0.71.0" + "@zag-js/collapsible": "npm:0.71.0" + "@zag-js/color-picker": "npm:0.71.0" + "@zag-js/combobox": "npm:0.71.0" + "@zag-js/date-picker": "npm:0.71.0" + "@zag-js/dialog": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/editable": "npm:0.71.0" + "@zag-js/file-upload": "npm:0.71.0" + "@zag-js/file-utils": "npm:0.71.0" + "@zag-js/highlight-word": "npm:0.71.0" + "@zag-js/hover-card": "npm:0.71.0" + "@zag-js/i18n-utils": "npm:0.71.0" + "@zag-js/menu": "npm:0.71.0" + "@zag-js/number-input": "npm:0.71.0" + "@zag-js/pagination": "npm:0.71.0" + "@zag-js/pin-input": "npm:0.71.0" + "@zag-js/popover": "npm:0.71.0" + "@zag-js/presence": "npm:0.71.0" + "@zag-js/progress": "npm:0.71.0" + "@zag-js/qr-code": "npm:0.71.0" + "@zag-js/radio-group": "npm:0.71.0" + "@zag-js/rating-group": "npm:0.71.0" + "@zag-js/select": "npm:0.71.0" + "@zag-js/signature-pad": "npm:0.71.0" + "@zag-js/slider": "npm:0.71.0" + "@zag-js/solid": "npm:0.71.0" + "@zag-js/splitter": "npm:0.71.0" + "@zag-js/steps": "npm:0.71.0" + "@zag-js/switch": "npm:0.71.0" + "@zag-js/tabs": "npm:0.71.0" + "@zag-js/tags-input": "npm:0.71.0" + "@zag-js/time-picker": "npm:0.71.0" + "@zag-js/timer": "npm:0.71.0" + "@zag-js/toast": "npm:0.71.0" + "@zag-js/toggle-group": "npm:0.71.0" + "@zag-js/tooltip": "npm:0.71.0" + "@zag-js/tree-view": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + peerDependencies: + solid-js: ">=1.6.0" + checksum: 10c0/00eab4879a4d6a0a5ca2ac2dd898f3a236b82cb46ea050948b3380e18e5bbb5f25aba83e5b5111ff5bbffedf91ddc8a9ac49455b491c5b876c06cd0e0d4e2c3e + languageName: node + linkType: hard + +"@astrojs/check@npm:^0.9.3": + version: 0.9.3 + resolution: "@astrojs/check@npm:0.9.3" + dependencies: + "@astrojs/language-server": "npm:^2.14.1" + chokidar: "npm:^3.5.3" + fast-glob: "npm:^3.3.1" + kleur: "npm:^4.1.5" + yargs: "npm:^17.7.2" + peerDependencies: + typescript: ^5.0.0 + bin: + astro-check: dist/bin.js + checksum: 10c0/fab8d39ca0734777534e54940c888663f7e448b53b0b6eb64d0008b9219da893b61ddbb281843a4ab05ae854cbfefca4e6dd43b3a2e1727bf71498de47935a87 + languageName: node + linkType: hard + +"@astrojs/compiler@npm:^2.10.3": + version: 2.10.3 + resolution: "@astrojs/compiler@npm:2.10.3" + checksum: 10c0/35e7a6e9d197924a3203afd3bd7bff39c8d4271516816c30173cca872302312c3748eefc5a5832523f49b98743115628a1b96922d7d96588a8d96e110a106b88 + languageName: node + linkType: hard + +"@astrojs/internal-helpers@npm:0.4.1": + version: 0.4.1 + resolution: "@astrojs/internal-helpers@npm:0.4.1" + checksum: 10c0/1545eb29994b8bf1dfa95d953f7fb23b52c1e1a3daefc2f39c032b2b0ff1bad5dde8ac7b2694d1f0c9f8f52f8d1f2d645c7e88969bca392fc22058674192b070 + languageName: node + linkType: hard + +"@astrojs/language-server@npm:^2.14.1": + version: 2.14.1 + resolution: "@astrojs/language-server@npm:2.14.1" + dependencies: + "@astrojs/compiler": "npm:^2.10.3" + "@astrojs/yaml2ts": "npm:^0.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.15" + "@volar/kit": "npm:~2.4.0" + "@volar/language-core": "npm:~2.4.0" + "@volar/language-server": "npm:~2.4.0" + "@volar/language-service": "npm:~2.4.0" + "@volar/typescript": "npm:~2.4.0" + fast-glob: "npm:^3.2.12" + muggle-string: "npm:^0.4.1" + volar-service-css: "npm:0.0.61" + volar-service-emmet: "npm:0.0.61" + volar-service-html: "npm:0.0.61" + volar-service-prettier: "npm:0.0.61" + volar-service-typescript: "npm:0.0.61" + volar-service-typescript-twoslash-queries: "npm:0.0.61" + volar-service-yaml: "npm:0.0.61" + vscode-html-languageservice: "npm:^5.2.0" + vscode-uri: "npm:^3.0.8" + peerDependencies: + prettier: ^3.0.0 + prettier-plugin-astro: ">=0.11.0" + peerDependenciesMeta: + prettier: + optional: true + prettier-plugin-astro: + optional: true + bin: + astro-ls: bin/nodeServer.js + checksum: 10c0/093e8d99314d461dc943f17f25b9ae6dfbf73232a651efcf29d09d7adc633796ef358773479e3497e534a2f2b5bab585a2ef452bae5fac6dc9c2b1d6c37bb664 + languageName: node + linkType: hard + +"@astrojs/markdown-remark@npm:5.2.0": + version: 5.2.0 + resolution: "@astrojs/markdown-remark@npm:5.2.0" + dependencies: + "@astrojs/prism": "npm:3.1.0" + github-slugger: "npm:^2.0.0" + hast-util-from-html: "npm:^2.0.1" + hast-util-to-text: "npm:^4.0.2" + import-meta-resolve: "npm:^4.1.0" + mdast-util-definitions: "npm:^6.0.0" + rehype-raw: "npm:^7.0.0" + rehype-stringify: "npm:^10.0.0" + remark-gfm: "npm:^4.0.0" + remark-parse: "npm:^11.0.0" + remark-rehype: "npm:^11.1.0" + remark-smartypants: "npm:^3.0.2" + shiki: "npm:^1.10.3" + unified: "npm:^11.0.5" + unist-util-remove-position: "npm:^5.0.0" + unist-util-visit: "npm:^5.0.0" + unist-util-visit-parents: "npm:^6.0.1" + vfile: "npm:^6.0.2" + checksum: 10c0/d7227e3cbb66d328a4681b3c9e2b90b45b92db4ae9068794a1acf6023cea7be33d666f05899be980db76a3ff3bf4393d5ee0ee34a012963e4e9aa100c8a6f87b + languageName: node + linkType: hard + +"@astrojs/mdx@npm:^3.1.4": + version: 3.1.4 + resolution: "@astrojs/mdx@npm:3.1.4" + dependencies: + "@astrojs/markdown-remark": "npm:5.2.0" + "@mdx-js/mdx": "npm:^3.0.1" + acorn: "npm:^8.12.1" + es-module-lexer: "npm:^1.5.4" + estree-util-visit: "npm:^2.0.0" + gray-matter: "npm:^4.0.3" + hast-util-to-html: "npm:^9.0.1" + kleur: "npm:^4.1.5" + rehype-raw: "npm:^7.0.0" + remark-gfm: "npm:^4.0.0" + remark-smartypants: "npm:^3.0.2" + source-map: "npm:^0.7.4" + unist-util-visit: "npm:^5.0.0" + vfile: "npm:^6.0.2" + peerDependencies: + astro: ^4.8.0 + checksum: 10c0/937795f30d9f0392effcc1a1b984dd03f547cc31d4cbadbb2d969df59fba36c941e56cba33be4be817fce2d5372e51f2cc520333f2fe5a9931a3f586e8b9925d + languageName: node + linkType: hard + +"@astrojs/prism@npm:3.1.0": + version: 3.1.0 + resolution: "@astrojs/prism@npm:3.1.0" + dependencies: + prismjs: "npm:^1.29.0" + checksum: 10c0/45132cd1cc8ac45f5fe75bfbf3f8bad3caa9d68aadb0537505f866fcf3ab4bcfa038be1ce20ad26b7e344c4f9a1edd0ab0f4211d413e09c84731fbc7c59b7746 + languageName: node + linkType: hard + +"@astrojs/solid-js@npm:^4.4.1": + version: 4.4.1 + resolution: "@astrojs/solid-js@npm:4.4.1" + dependencies: + vite-plugin-solid: "npm:^2.10.2" + peerDependencies: + solid-devtools: ^0.30.1 + solid-js: ^1.8.5 + peerDependenciesMeta: + solid-devtools: + optional: true + checksum: 10c0/69c0d5d7d38ffb6f56e53fb73283d5df75981cb1ce77dd6946635911b7af0e3f62a7f35bfab16955cf070c845f39b91b56f7f8da7a22f9608158888643d2aa92 + languageName: node + linkType: hard + +"@astrojs/telemetry@npm:3.1.0": + version: 3.1.0 + resolution: "@astrojs/telemetry@npm:3.1.0" + dependencies: + ci-info: "npm:^4.0.0" + debug: "npm:^4.3.4" + dlv: "npm:^1.1.3" + dset: "npm:^3.1.3" + is-docker: "npm:^3.0.0" + is-wsl: "npm:^3.0.0" + which-pm-runs: "npm:^1.1.0" + checksum: 10c0/ed4df1f0763e2fed242805f67f1c50aec0021c31b971ce846355cc981dfce498517f0b24e84de0ec6c426e6f17a2b48f97a2f7b32efa015653646f4dd3c51649 + languageName: node + linkType: hard + +"@astrojs/ts-plugin@npm:^1.10.1": + version: 1.10.1 + resolution: "@astrojs/ts-plugin@npm:1.10.1" + dependencies: + "@astrojs/compiler": "npm:^2.10.3" + "@astrojs/yaml2ts": "npm:^0.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.15" + "@volar/language-core": "npm:~2.4.0" + "@volar/typescript": "npm:~2.4.0" + semver: "npm:^7.3.8" + vscode-languageserver-textdocument: "npm:^1.0.11" + checksum: 10c0/d35064ec75a7c81ab9fcefeb20ea373adfcacdc098390c73e9fb90389b70bb79136e9e0066d8a49a804b9b006710c1e52970d67fb91a86cb2ec246e6835680a2 + languageName: node + linkType: hard + +"@astrojs/yaml2ts@npm:^0.2.1": + version: 0.2.1 + resolution: "@astrojs/yaml2ts@npm:0.2.1" + dependencies: + yaml: "npm:^2.5.0" + checksum: 10c0/944a60799f499863479d60bce781f29ec2aea674fe39d37bbc03a4b418ed54b72174695d1925732a3277b233cbec83e606dfaca2c6c752142a4b3dd14cf22a49 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/code-frame@npm:7.24.7" + dependencies: + "@babel/highlight": "npm:^7.24.7" + picocolors: "npm:^1.0.0" + checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.25.2": + version: 7.25.4 + resolution: "@babel/compat-data@npm:7.25.4" + checksum: 10c0/50d79734d584a28c69d6f5b99adfaa064d0f41609a378aef04eb06accc5b44f8520e68549eba3a082478180957b7d5783f1bfb1672e4ae8574e797ce8bae79fa + languageName: node + linkType: hard + +"@babel/core@npm:^7.23.3, @babel/core@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/core@npm:7.25.2" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.24.7" + "@babel/generator": "npm:^7.25.0" + "@babel/helper-compilation-targets": "npm:^7.25.2" + "@babel/helper-module-transforms": "npm:^7.25.2" + "@babel/helpers": "npm:^7.25.0" + "@babel/parser": "npm:^7.25.0" + "@babel/template": "npm:^7.25.0" + "@babel/traverse": "npm:^7.25.2" + "@babel/types": "npm:^7.25.2" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/a425fa40e73cb72b6464063a57c478bc2de9dbcc19c280f1b55a3d88b35d572e87e8594e7d7b4880331addb6faef641bbeb701b91b41b8806cd4deae5d74f401 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.23.6, @babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.4": + version: 7.25.5 + resolution: "@babel/generator@npm:7.25.5" + dependencies: + "@babel/types": "npm:^7.25.4" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^2.5.1" + checksum: 10c0/eb8af30c39476e4f4d6b953f355fcf092258291f78d65fb759b7d5e5e6fd521b5bfee64a4e2e4290279f0dcd25ccf8c49a61807828b99b5830d2b734506da1fd + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" + dependencies: + "@babel/types": "npm:^7.24.7" + checksum: 10c0/4679f7df4dffd5b3e26083ae65228116c3da34c3fff2c11ae11b259a61baec440f51e30fd236f7a0435b9d471acd93d0bc5a95df8213cbf02b1e083503d81b9a + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-compilation-targets@npm:7.25.2" + dependencies: + "@babel/compat-data": "npm:^7.25.2" + "@babel/helper-validator-option": "npm:^7.24.8" + browserslist: "npm:^4.23.1" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/de10e986b5322c9f807350467dc845ec59df9e596a5926a3b5edbb4710d8e3b8009d4396690e70b88c3844fe8ec4042d61436dd4b92d1f5f75655cf43ab07e99 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:7.18.6": + version: 7.18.6 + resolution: "@babel/helper-module-imports@npm:7.18.6" + dependencies: + "@babel/types": "npm:^7.18.6" + checksum: 10c0/a92e28fc4b5dbb0d0afd4a313efc0cf5b26ce1adc0c01fc22724c997789ac7d7f4f30bc9143d94a6ba8b0a035933cf63a727a365ce1c57dbca0935f48de96244 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-imports@npm:7.24.7" + dependencies: + "@babel/traverse": "npm:^7.24.7" + "@babel/types": "npm:^7.24.7" + checksum: 10c0/97c57db6c3eeaea31564286e328a9fb52b0313c5cfcc7eee4bc226aebcf0418ea5b6fe78673c0e4a774512ec6c86e309d0f326e99d2b37bfc16a25a032498af0 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-module-transforms@npm:7.25.2" + dependencies: + "@babel/helper-module-imports": "npm:^7.24.7" + "@babel/helper-simple-access": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.24.7" + "@babel/traverse": "npm:^7.25.2" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/adaa15970ace0aee5934b5a633789b5795b6229c6a9cf3e09a7e80aa33e478675eee807006a862aa9aa517935d81f88a6db8a9f5936e3a2a40ec75f8062bc329 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-plugin-utils@npm:7.24.8" + checksum: 10c0/0376037f94a3bfe6b820a39f81220ac04f243eaee7193774b983e956c1750883ff236b30785795abbcda43fac3ece74750566830c2daa4d6e3870bb0dff34c2d + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-simple-access@npm:7.24.7" + dependencies: + "@babel/traverse": "npm:^7.24.7" + "@babel/types": "npm:^7.24.7" + checksum: 10c0/7230e419d59a85f93153415100a5faff23c133d7442c19e0cd070da1784d13cd29096ee6c5a5761065c44e8164f9f80e3a518c41a0256df39e38f7ad6744fed7 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-string-parser@npm:7.24.8" + checksum: 10c0/6361f72076c17fabf305e252bf6d580106429014b3ab3c1f5c4eb3e6d465536ea6b670cc0e9a637a77a9ad40454d3e41361a2909e70e305116a23d68ce094c08 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 10c0/87ad608694c9477814093ed5b5c080c2e06d44cb1924ae8320474a74415241223cc2a725eea2640dd783ff1e3390e5f95eede978bc540e870053152e58f1d651 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-validator-option@npm:7.24.8" + checksum: 10c0/73db93a34ae89201351288bee7623eed81a54000779462a986105b54ffe82069e764afd15171a428b82e7c7a9b5fec10b5d5603b216317a414062edf5c67a21f + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helpers@npm:7.25.0" + dependencies: + "@babel/template": "npm:^7.25.0" + "@babel/types": "npm:^7.25.0" + checksum: 10c0/b7fe007fc4194268abf70aa3810365085e290e6528dcb9fbbf7a765d43c74b6369ce0f99c5ccd2d44c413853099daa449c9a0123f0b212ac8d18643f2e8174b8 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.24.7" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.25.4": + version: 7.25.4 + resolution: "@babel/parser@npm:7.25.4" + dependencies: + "@babel/types": "npm:^7.25.4" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/bdada5662f15d1df11a7266ec3bc9bb769bf3637ecf3d051eafcfc8f576dcf5a3ac1007c5e059db4a1e1387db9ae9caad239fc4f79e4c2200930ed610e779993 + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.18.6, @babel/plugin-syntax-jsx@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f44d927a9ae8d5ef016ff5b450e1671e56629ddc12e56b938e41fd46e141170d9dfc9a53d6cb2b9a20a7dd266a938885e6a3981c60c052a2e1daed602ac80e51 + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.23.3": + version: 7.25.4 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.8" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/199919d44c73e5edee9ffd311cf638f88d26a810189e32d338c46c7600441fd5c4a2e431f9be377707cbf318410895304e90b83bf8d9011d205150fa7f260e63 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/plugin-transform-react-jsx@npm:7.25.2" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.24.7" + "@babel/helper-module-imports": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.24.8" + "@babel/plugin-syntax-jsx": "npm:^7.24.7" + "@babel/types": "npm:^7.25.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8c5b515f38118471197605e02bea54a8a4283010e3c55bad8cfb78de59ad63612b14d40baca63689afdc9d57b147aac4c7794fe5f7736c9e1ed6dd38784be624 + languageName: node + linkType: hard + +"@babel/template@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/template@npm:7.25.0" + dependencies: + "@babel/code-frame": "npm:^7.24.7" + "@babel/parser": "npm:^7.25.0" + "@babel/types": "npm:^7.25.0" + checksum: 10c0/4e31afd873215744c016e02b04f43b9fa23205d6d0766fb2e93eb4091c60c1b88897936adb895fb04e3c23de98dfdcbe31bc98daaa1a4e0133f78bb948e1209b + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3": + version: 7.25.4 + resolution: "@babel/traverse@npm:7.25.4" + dependencies: + "@babel/code-frame": "npm:^7.24.7" + "@babel/generator": "npm:^7.25.4" + "@babel/parser": "npm:^7.25.4" + "@babel/template": "npm:^7.25.0" + "@babel/types": "npm:^7.25.4" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/37c9b49b277e051fe499ef5f6f217370c4f648d6370564d70b5e6beb2da75bfda6d7dab1d39504d89e9245448f8959bc1a5880d2238840cdc3979b35338ed0f5 + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.23.3, @babel/types@npm:^7.23.6, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.4": + version: 7.25.4 + resolution: "@babel/types@npm:7.25.4" + dependencies: + "@babel/helper-string-parser": "npm:^7.24.8" + "@babel/helper-validator-identifier": "npm:^7.24.7" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/9aa25dfcd89cc4e4dde3188091c34398a005a49e2c2b069d0367b41e1122c91e80fd92998c52a90f2fb500f7e897b6090ec8be263d9cb53d0d75c756f44419f2 + languageName: node + linkType: hard + +"@biomejs/biome@npm:^1.8.3": + version: 1.9.2 + resolution: "@biomejs/biome@npm:1.9.2" + dependencies: + "@biomejs/cli-darwin-arm64": "npm:1.9.2" + "@biomejs/cli-darwin-x64": "npm:1.9.2" + "@biomejs/cli-linux-arm64": "npm:1.9.2" + "@biomejs/cli-linux-arm64-musl": "npm:1.9.2" + "@biomejs/cli-linux-x64": "npm:1.9.2" + "@biomejs/cli-linux-x64-musl": "npm:1.9.2" + "@biomejs/cli-win32-arm64": "npm:1.9.2" + "@biomejs/cli-win32-x64": "npm:1.9.2" + dependenciesMeta: + "@biomejs/cli-darwin-arm64": + optional: true + "@biomejs/cli-darwin-x64": + optional: true + "@biomejs/cli-linux-arm64": + optional: true + "@biomejs/cli-linux-arm64-musl": + optional: true + "@biomejs/cli-linux-x64": + optional: true + "@biomejs/cli-linux-x64-musl": + optional: true + "@biomejs/cli-win32-arm64": + optional: true + "@biomejs/cli-win32-x64": + optional: true + bin: + biome: bin/biome + checksum: 10c0/0addf6a387112ba950693ae0b782db93f307300de111a46902c745c25baab5aaf1a3558be830f373e4f034d45eaa011b6bccfdc1e18d26f733136c32dffd83f9 + languageName: node + linkType: hard + +"@biomejs/cli-darwin-arm64@npm:1.9.2": + version: 1.9.2 + resolution: "@biomejs/cli-darwin-arm64@npm:1.9.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@biomejs/cli-darwin-x64@npm:1.9.2": + version: 1.9.2 + resolution: "@biomejs/cli-darwin-x64@npm:1.9.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@biomejs/cli-linux-arm64-musl@npm:1.9.2": + version: 1.9.2 + resolution: "@biomejs/cli-linux-arm64-musl@npm:1.9.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@biomejs/cli-linux-arm64@npm:1.9.2": + version: 1.9.2 + resolution: "@biomejs/cli-linux-arm64@npm:1.9.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@biomejs/cli-linux-x64-musl@npm:1.9.2": + version: 1.9.2 + resolution: "@biomejs/cli-linux-x64-musl@npm:1.9.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@biomejs/cli-linux-x64@npm:1.9.2": + version: 1.9.2 + resolution: "@biomejs/cli-linux-x64@npm:1.9.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@biomejs/cli-win32-arm64@npm:1.9.2": + version: 1.9.2 + resolution: "@biomejs/cli-win32-arm64@npm:1.9.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@biomejs/cli-win32-x64@npm:1.9.2": + version: 1.9.2 + resolution: "@biomejs/cli-win32-x64@npm:1.9.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@emmetio/abbreviation@npm:^2.3.3": + version: 2.3.3 + resolution: "@emmetio/abbreviation@npm:2.3.3" + dependencies: + "@emmetio/scanner": "npm:^1.0.4" + checksum: 10c0/835b460706d5920a6f9a569a44b7d98e88d5530e3983af3678b44fa38b4cbdf68b5df933476d72e340779b16e7e7962ffa63142db8d2f59b1175a11c30c14635 + languageName: node + linkType: hard + +"@emmetio/css-abbreviation@npm:^2.1.8": + version: 2.1.8 + resolution: "@emmetio/css-abbreviation@npm:2.1.8" + dependencies: + "@emmetio/scanner": "npm:^1.0.4" + checksum: 10c0/b5b3b39e773185d848b634e48e1b520e6ebffd28bfd0ba34fbcf877ca77e0edb8c7bbf58230cb0621f80f579bd7fd0265f00ab5e09ac482a835897cbdb6182a6 + languageName: node + linkType: hard + +"@emmetio/css-parser@npm:^0.4.0": + version: 0.4.0 + resolution: "@emmetio/css-parser@npm:0.4.0" + dependencies: + "@emmetio/stream-reader": "npm:^2.2.0" + "@emmetio/stream-reader-utils": "npm:^0.1.0" + checksum: 10c0/44606cb3220c4d1c910439271c5cf903ec89ce602fa25c527a25e8a744ca8e84df3ffbb82d3b44923b890884a7f889eff34c462568e5866e2ab5d98dda99c6f0 + languageName: node + linkType: hard + +"@emmetio/html-matcher@npm:^1.3.0": + version: 1.3.0 + resolution: "@emmetio/html-matcher@npm:1.3.0" + dependencies: + "@emmetio/scanner": "npm:^1.0.0" + checksum: 10c0/354f6d4d52ffb124883cc350d6a09942f2ec352b03dfb928ba8c3078b0f570041b6095367367094a307388c158e6b053565c09a9c1db699517801435a0eadb5c + languageName: node + linkType: hard + +"@emmetio/scanner@npm:^1.0.0, @emmetio/scanner@npm:^1.0.4": + version: 1.0.4 + resolution: "@emmetio/scanner@npm:1.0.4" + checksum: 10c0/ae6244e563caaff0f88d7afefc33fd6cfb7cc767ce914b54d35b46002637948cfc65951dba6d6941328afa54c721c225836fafce2de40fb7643660ba09fe7372 + languageName: node + linkType: hard + +"@emmetio/stream-reader-utils@npm:^0.1.0": + version: 0.1.0 + resolution: "@emmetio/stream-reader-utils@npm:0.1.0" + checksum: 10c0/8630a066200976aa07ce25708484e5c2458182961280dc4637a7a6e98e1f3bb59fb7bf3bf26380f74c6ff1fd40d3dbf1143f21c721833199e45f669614a33b87 + languageName: node + linkType: hard + +"@emmetio/stream-reader@npm:^2.2.0": + version: 2.2.0 + resolution: "@emmetio/stream-reader@npm:2.2.0" + checksum: 10c0/d1a5c83b1ef062ce89b48e1fc170cd5f21b0dfa6132dc41421ef7eda455563227c047977cd4c7b70f072fa73b5af553b04cafe381c600df9bd17c58ca8238e8b + languageName: node + linkType: hard + +"@emnapi/runtime@npm:^1.2.0": + version: 1.2.0 + resolution: "@emnapi/runtime@npm:1.2.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/7005ff8b67724c9e61b6cd79a3decbdb2ce25d24abd4d3d187472f200ee6e573329c30264335125fb136bd813aa9cf9f4f7c9391d04b07dd1e63ce0a3427be57 + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/aix-ppc64@npm:0.21.5" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm64@npm:0.21.5" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-arm@npm:0.21.5" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/android-x64@npm:0.21.5" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-arm64@npm:0.21.5" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/darwin-x64@npm:0.21.5" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-arm64@npm:0.21.5" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/freebsd-x64@npm:0.21.5" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm64@npm:0.21.5" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-arm@npm:0.21.5" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ia32@npm:0.21.5" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-loong64@npm:0.21.5" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-mips64el@npm:0.21.5" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-ppc64@npm:0.21.5" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-riscv64@npm:0.21.5" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-s390x@npm:0.21.5" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/linux-x64@npm:0.21.5" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/netbsd-x64@npm:0.21.5" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/openbsd-x64@npm:0.21.5" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/sunos-x64@npm:0.21.5" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-arm64@npm:0.21.5" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-ia32@npm:0.21.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.21.5": + version: 0.21.5 + resolution: "@esbuild/win32-x64@npm:0.21.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@floating-ui/core@npm:^1.6.0": + version: 1.6.8 + resolution: "@floating-ui/core@npm:1.6.8" + dependencies: + "@floating-ui/utils": "npm:^0.2.8" + checksum: 10c0/d6985462aeccae7b55a2d3f40571551c8c42bf820ae0a477fc40ef462e33edc4f3f5b7f11b100de77c9b58ecb581670c5c3f46d0af82b5e30aa185c735257eb9 + languageName: node + linkType: hard + +"@floating-ui/dom@npm:1.6.11": + version: 1.6.11 + resolution: "@floating-ui/dom@npm:1.6.11" + dependencies: + "@floating-ui/core": "npm:^1.6.0" + "@floating-ui/utils": "npm:^0.2.8" + checksum: 10c0/02ef34a75a515543c772880338eea7b66724997bd5ec7cd58d26b50325709d46d480a306b84e7d5509d734434411a4bcf23af5680c2e461e6e6a8bf45d751df8 + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.2.8": + version: 0.2.8 + resolution: "@floating-ui/utils@npm:0.2.8" + checksum: 10c0/a8cee5f17406c900e1c3ef63e3ca89b35e7a2ed645418459a73627b93b7377477fc888081011c6cd177cac45ec2b92a6cab018c14ea140519465498dddd2d3f9 + languageName: node + linkType: hard + +"@hbsnow/rehype-sectionize@npm:^1.0.7": + version: 1.0.7 + resolution: "@hbsnow/rehype-sectionize@npm:1.0.7" + dependencies: + hast-util-heading: "npm:^2.0.1" + hast-util-heading-rank: "npm:^2.1.1" + rehype: "npm:^12.0.1" + checksum: 10c0/44173aff9ce988d04357d8542cca89257390a19a5fc04c0e1e85063ee1b0a26e637a2dbc4b0847e5ce77d3a540aadcd48de549000dbe7e585f7d7993b5528ad5 + languageName: node + linkType: hard + +"@img/sharp-darwin-arm64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-darwin-arm64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-darwin-arm64": "npm:1.0.4" + dependenciesMeta: + "@img/sharp-libvips-darwin-arm64": + optional: true + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@img/sharp-darwin-x64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-darwin-x64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-darwin-x64": "npm:1.0.4" + dependenciesMeta: + "@img/sharp-libvips-darwin-x64": + optional: true + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@img/sharp-libvips-darwin-arm64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@img/sharp-libvips-darwin-x64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-arm64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.4" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-arm@npm:1.0.5": + version: 1.0.5 + resolution: "@img/sharp-libvips-linux-arm@npm:1.0.5" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-s390x@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.4" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-x64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-linux-x64@npm:1.0.4" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-libvips-linuxmusl-x64@npm:1.0.4": + version: 1.0.4 + resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.4" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-linux-arm64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linux-arm64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linux-arm64": "npm:1.0.4" + dependenciesMeta: + "@img/sharp-libvips-linux-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-arm@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linux-arm@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linux-arm": "npm:1.0.5" + dependenciesMeta: + "@img/sharp-libvips-linux-arm": + optional: true + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-s390x@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linux-s390x@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linux-s390x": "npm:1.0.4" + dependenciesMeta: + "@img/sharp-libvips-linux-s390x": + optional: true + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-x64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linux-x64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linux-x64": "npm:1.0.4" + dependenciesMeta: + "@img/sharp-libvips-linux-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linuxmusl-arm64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.4" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-linuxmusl-x64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-linuxmusl-x64@npm:0.33.5" + dependencies: + "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.4" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-wasm32@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-wasm32@npm:0.33.5" + dependencies: + "@emnapi/runtime": "npm:^1.2.0" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@img/sharp-win32-ia32@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-win32-ia32@npm:0.33.5" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@img/sharp-win32-x64@npm:0.33.5": + version: 0.33.5 + resolution: "@img/sharp-win32-x64@npm:0.33.5" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@internationalized/date@npm:3.5.5": + version: 3.5.5 + resolution: "@internationalized/date@npm:3.5.5" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/fc17291c8923eaf413e4cb1c74570a8f78269d8b6a5ad74de6f4f45b4e9a84f4243a9c3f224526c36b024f77e4a2fae34df6b34b022ae1b068384e04ad32560e + languageName: node + linkType: hard + +"@internationalized/number@npm:3.5.3": + version: 3.5.3 + resolution: "@internationalized/number@npm:3.5.3" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/dd1bb4e89c6468b97e8357e1ba0a60234bd2c8226f3241c4c7499e5b1791ba0574127ea6de0fd6c4158e2ceef564bba6531a8f5589e58b820df669e312500f99 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15, @jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + languageName: node + linkType: hard + +"@mdx-js/mdx@npm:^3.0.1": + version: 3.0.1 + resolution: "@mdx-js/mdx@npm:3.0.1" + dependencies: + "@types/estree": "npm:^1.0.0" + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdx": "npm:^2.0.0" + collapse-white-space: "npm:^2.0.0" + devlop: "npm:^1.0.0" + estree-util-build-jsx: "npm:^3.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + estree-util-to-js: "npm:^2.0.0" + estree-walker: "npm:^3.0.0" + hast-util-to-estree: "npm:^3.0.0" + hast-util-to-jsx-runtime: "npm:^2.0.0" + markdown-extensions: "npm:^2.0.0" + periscopic: "npm:^3.0.0" + remark-mdx: "npm:^3.0.0" + remark-parse: "npm:^11.0.0" + remark-rehype: "npm:^11.0.0" + source-map: "npm:^0.7.0" + unified: "npm:^11.0.0" + unist-util-position-from-estree: "npm:^2.0.0" + unist-util-stringify-position: "npm:^4.0.0" + unist-util-visit: "npm:^5.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/8cd7084f1242209bbeef81f69ea670ffffa0656dda2893bbd46b1b2b26078a57f9d993f8f82ad8ba16bc969189235140007185276d7673471827331521eae2e0 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@nothing-but/utils@npm:~0.12.0": + version: 0.12.1 + resolution: "@nothing-but/utils@npm:0.12.1" + checksum: 10c0/b6211b69021a09035426013abba1ece06fdc452097e2b2569eb820a1a9c5fde2245447e827007abbe57bc4cd3094a0c222129296e992d6ae9dbf3f4bf671517e + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/325e0db7b287d4154ecd164c0815c08007abfb07653cc57bceded17bb7fd240998a3cbdbe87d700e30bef494885eccc725ab73b668020811d56623d145b524ae + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.1 + resolution: "@npmcli/fs@npm:3.1.1" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c37a5b4842bfdece3d14dfdb054f73fe15ed2d3da61b34ff76629fb5b1731647c49166fd2a8bf8b56fcfa51200382385ea8909a3cbecdad612310c114d3f6c99 + languageName: node + linkType: hard + +"@oslojs/encoding@npm:^0.4.1": + version: 0.4.1 + resolution: "@oslojs/encoding@npm:0.4.1" + checksum: 10c0/e3ccee039f385cca8a53afb1584c85d66d3685e20142649aab8f6e7f71ea11e026861e60e3d61de8d34a78adf9049e6da6813e3de51ba2b86239a4200c08ee76 + languageName: node + linkType: hard + +"@pagefind/darwin-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@pagefind/darwin-arm64@npm:1.1.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@pagefind/darwin-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@pagefind/darwin-x64@npm:1.1.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@pagefind/default-ui@npm:^1.0.3": + version: 1.1.1 + resolution: "@pagefind/default-ui@npm:1.1.1" + checksum: 10c0/a1069183ae31daa8b71344abd6cdd85b7183b2af4f88fdc89d8c5298ea0e653e7f8a89f95d10ee54053ab55c36dd1142b6768efd1a7c29d589432b432b7a291b + languageName: node + linkType: hard + +"@pagefind/linux-arm64@npm:1.1.1": + version: 1.1.1 + resolution: "@pagefind/linux-arm64@npm:1.1.1" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@pagefind/linux-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@pagefind/linux-x64@npm:1.1.1" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@pagefind/windows-x64@npm:1.1.1": + version: 1.1.1 + resolution: "@pagefind/windows-x64@npm:1.1.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@polka/url@npm:^1.0.0-next.24": + version: 1.0.0-next.28 + resolution: "@polka/url@npm:1.0.0-next.28" + checksum: 10c0/acc5ea62597e4da2fb42dbee02749d07f102ae7d6d2c966bf7e423c79cd65d1621da305af567e6e7c232f3b565e242d1ec932cbb3dcc0db1508d02e9a2cafa2e + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^5.1.0": + version: 5.1.0 + resolution: "@rollup/pluginutils@npm:5.1.0" + dependencies: + "@types/estree": "npm:^1.0.0" + estree-walker: "npm:^2.0.2" + picomatch: "npm:^2.3.1" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10c0/c7bed15711f942d6fdd3470fef4105b73991f99a478605e13d41888963330a6f9e32be37e6ddb13f012bc7673ff5e54f06f59fd47109436c1c513986a8a7612d + languageName: node + linkType: hard + +"@rollup/rollup-android-arm-eabi@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.21.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@rollup/rollup-android-arm64@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-android-arm64@npm:4.21.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-arm64@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.21.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-darwin-x64@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.21.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.21.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-musleabihf@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.21.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-gnu@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.21.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm64-musl@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.21.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.21.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.21.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-s390x-gnu@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.21.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.21.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-musl@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.21.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.21.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-ia32-msvc@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.21.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.21.0": + version: 4.21.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.21.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@shikijs/core@npm:1.14.1": + version: 1.14.1 + resolution: "@shikijs/core@npm:1.14.1" + dependencies: + "@types/hast": "npm:^3.0.4" + checksum: 10c0/a9779634956010788f346f779a8e445d17101cae64e6769a7a4d6d479ccd5d47e6c897fd7a57445cea6b64f1b79f1126ff4f57dbc6ce28c1533f6b74450d752f + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e + languageName: node + linkType: hard + +"@solid-devtools/debugger@npm:^0.23.4": + version: 0.23.4 + resolution: "@solid-devtools/debugger@npm:0.23.4" + dependencies: + "@nothing-but/utils": "npm:~0.12.0" + "@solid-devtools/shared": "npm:^0.13.2" + "@solid-primitives/bounds": "npm:^0.0.118" + "@solid-primitives/cursor": "npm:^0.0.112" + "@solid-primitives/event-bus": "npm:^1.0.8" + "@solid-primitives/event-listener": "npm:^2.3.0" + "@solid-primitives/keyboard": "npm:^1.2.5" + "@solid-primitives/platform": "npm:^0.1.0" + "@solid-primitives/rootless": "npm:^1.4.2" + "@solid-primitives/scheduled": "npm:^1.4.1" + "@solid-primitives/static-store": "npm:^0.0.5" + "@solid-primitives/utils": "npm:^6.2.1" + peerDependencies: + solid-js: ^1.8.0 + checksum: 10c0/abb8e53541d3e6736e904500987ea2c23b93ea75fa89bde5759b3cb17398dc4ee2daaa912c8b9bc7a575a495ff0cb2f44d4f3eee6854a6b8d49e832dd5a2ca8f + languageName: node + linkType: hard + +"@solid-devtools/shared@npm:^0.13.2": + version: 0.13.2 + resolution: "@solid-devtools/shared@npm:0.13.2" + dependencies: + "@solid-primitives/event-bus": "npm:^1.0.8" + "@solid-primitives/event-listener": "npm:^2.3.0" + "@solid-primitives/media": "npm:^2.2.5" + "@solid-primitives/refs": "npm:^1.0.5" + "@solid-primitives/rootless": "npm:^1.4.2" + "@solid-primitives/scheduled": "npm:^1.4.1" + "@solid-primitives/static-store": "npm:^0.0.5" + "@solid-primitives/styles": "npm:^0.0.111" + "@solid-primitives/utils": "npm:^6.2.1" + peerDependencies: + solid-js: ^1.8.0 + checksum: 10c0/8898cc0051c517408ac8427b63349d4844913fc852599739641e28d91ab4ab206f3dfa5f7653ac22bfa7bd6758897e004223af3cc3af2241e934f2123452e6f3 + languageName: node + linkType: hard + +"@solid-primitives/bounds@npm:^0.0.118": + version: 0.0.118 + resolution: "@solid-primitives/bounds@npm:0.0.118" + dependencies: + "@solid-primitives/event-listener": "npm:^2.3.0" + "@solid-primitives/resize-observer": "npm:^2.0.22" + "@solid-primitives/static-store": "npm:^0.0.5" + "@solid-primitives/utils": "npm:^6.2.1" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/a0d7e18987ba2ea6250c89a9a9006271b9d70584f208f72639bb2d373c16e739df83fd0f20576464cdef2980046b53851f4ea693ae7e62ebaa775035f8ff9c3f + languageName: node + linkType: hard + +"@solid-primitives/cursor@npm:^0.0.112": + version: 0.0.112 + resolution: "@solid-primitives/cursor@npm:0.0.112" + dependencies: + "@solid-primitives/utils": "npm:^6.2.1" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/7044983d6ed134297e0fab394e38fd5077894a448c4fe1b7423f63123055dec00817f154846be1c4f94fb249e88892ef3348c4d4fbda56cd3b5c72a5753195a0 + languageName: node + linkType: hard + +"@solid-primitives/event-bus@npm:^1.0.8": + version: 1.0.11 + resolution: "@solid-primitives/event-bus@npm:1.0.11" + dependencies: + "@solid-primitives/utils": "npm:^6.2.3" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/46165ba05fd74db347acc8c1be2a433951f76c327a75ebabd903f3fe8cdf4afd12228f724977d4a8df2fc85997f68b36b9168fc81cf125604a9b13b32e735556 + languageName: node + linkType: hard + +"@solid-primitives/event-listener@npm:^2.3.0, @solid-primitives/event-listener@npm:^2.3.3": + version: 2.3.3 + resolution: "@solid-primitives/event-listener@npm:2.3.3" + dependencies: + "@solid-primitives/utils": "npm:^6.2.3" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/054cbd6d4e5e89592f29cb22b727074146a33f70163d7d19316a4bc4ff02a6504219150acbd815d3903b9c3b88312d50911ca18a6baf0b05af6db0d067bb82c7 + languageName: node + linkType: hard + +"@solid-primitives/keyboard@npm:^1.2.5": + version: 1.2.8 + resolution: "@solid-primitives/keyboard@npm:1.2.8" + dependencies: + "@solid-primitives/event-listener": "npm:^2.3.3" + "@solid-primitives/rootless": "npm:^1.4.5" + "@solid-primitives/utils": "npm:^6.2.3" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/45f53b40d135eb5f7e4894e3d746bbb9242c7dc5d5110499f56a953d59368806375eacfcf8c5aa9f7c1785a4d1181f5acb8e4839a8fa439b5425fd876f363dd8 + languageName: node + linkType: hard + +"@solid-primitives/media@npm:^2.2.5": + version: 2.2.9 + resolution: "@solid-primitives/media@npm:2.2.9" + dependencies: + "@solid-primitives/event-listener": "npm:^2.3.3" + "@solid-primitives/rootless": "npm:^1.4.5" + "@solid-primitives/static-store": "npm:^0.0.8" + "@solid-primitives/utils": "npm:^6.2.3" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/5cc6f8fd637c6bbf1818ccfb663a41713d3914a4cf43bbaa518ac6c834b12c85368f17198f2d230b5ad39b1c3c7f51d7c5528f90c8b0375e521382739e98c25b + languageName: node + linkType: hard + +"@solid-primitives/platform@npm:^0.1.0": + version: 0.1.2 + resolution: "@solid-primitives/platform@npm:0.1.2" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/696cc1a678d71b4be4bc5b511ab4e1437cbbecfd776186631360b0a920c2855c3bd6f2532a1538140cf6ec3edf0ca2add211bc3b11cd4d1ca5c30e16c66f65bd + languageName: node + linkType: hard + +"@solid-primitives/refs@npm:^1.0.5": + version: 1.0.8 + resolution: "@solid-primitives/refs@npm:1.0.8" + dependencies: + "@solid-primitives/utils": "npm:^6.2.3" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/bc4313a3915eb406bd725dcfeaa1801fe9d7d97b47584bcaf8c5d0625acc893022536175ccf02cb750130d5629acee436f886daa434db393ba7800d6c3a92d6a + languageName: node + linkType: hard + +"@solid-primitives/resize-observer@npm:^2.0.22": + version: 2.0.26 + resolution: "@solid-primitives/resize-observer@npm:2.0.26" + dependencies: + "@solid-primitives/event-listener": "npm:^2.3.3" + "@solid-primitives/rootless": "npm:^1.4.5" + "@solid-primitives/static-store": "npm:^0.0.8" + "@solid-primitives/utils": "npm:^6.2.3" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/a953097a9b0506f492fb21af2f07cdb68ba0dcc09e874fd79c70ba328e418a71ba2892b40cbea5b48b6b9fe0f867b0c4a10d55f511c1c0ff48acbfbdd21e22dd + languageName: node + linkType: hard + +"@solid-primitives/rootless@npm:^1.4.2, @solid-primitives/rootless@npm:^1.4.5": + version: 1.4.5 + resolution: "@solid-primitives/rootless@npm:1.4.5" + dependencies: + "@solid-primitives/utils": "npm:^6.2.3" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/55654e8a2aa5acdcb39c896eef3af3046fc91a60b5b8d9d7a92c5abdea599e8bbbf7d75a89515f01407acd6a40a352f5cb64b8c8728216026d5e731ddfcb27ee + languageName: node + linkType: hard + +"@solid-primitives/scheduled@npm:^1.4.1": + version: 1.4.3 + resolution: "@solid-primitives/scheduled@npm:1.4.3" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/dc6b2210420978798bd72e28eac046da09f890e694f72f689b2f496df96370e326698031cf0e990a63f97e6c9b900a2a48207f9e90cadd4aac30d53340746a38 + languageName: node + linkType: hard + +"@solid-primitives/static-store@npm:^0.0.5": + version: 0.0.5 + resolution: "@solid-primitives/static-store@npm:0.0.5" + dependencies: + "@solid-primitives/utils": "npm:^6.2.1" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/e3803368146d47d8e981a628bd5c020ff3d0a7c7a27c7416c9d29e11b1213d58ba9ee6c235442823f2b14f901850ad9feaa19076a02df34519389bcb366d1bb4 + languageName: node + linkType: hard + +"@solid-primitives/static-store@npm:^0.0.8": + version: 0.0.8 + resolution: "@solid-primitives/static-store@npm:0.0.8" + dependencies: + "@solid-primitives/utils": "npm:^6.2.3" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/7efcaf43c6028113a97d6d194983251c14f4a50741583b920ea5eb635a9ec26cce91d7ae681098bd82e527722b1f580cd17d92c4363eaf1ed55c4ee8eef073bf + languageName: node + linkType: hard + +"@solid-primitives/styles@npm:^0.0.111": + version: 0.0.111 + resolution: "@solid-primitives/styles@npm:0.0.111" + dependencies: + "@solid-primitives/rootless": "npm:^1.4.2" + "@solid-primitives/utils": "npm:^6.2.1" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/d6800c593f7e2d27c2d5023d6473d0fcf2079f04ff265a1ae1610b9b3fb3a7eba001824ae0f840046c363c17a7051c8a7a8bd219009c22661bbd979b383a0c55 + languageName: node + linkType: hard + +"@solid-primitives/utils@npm:^6.2.1, @solid-primitives/utils@npm:^6.2.3": + version: 6.2.3 + resolution: "@solid-primitives/utils@npm:6.2.3" + peerDependencies: + solid-js: ^1.6.12 + checksum: 10c0/d14d922b17f7745a612bc264293db582b9f40e6f06366153401b92d0d4d5b85bef8e187ac5e7cf3689d6c675a9754bdca9ad3fdb5ad76657be974a62d9df6005 + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.5.0": + version: 0.5.13 + resolution: "@swc/helpers@npm:0.5.13" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/b9df578401fc62405da9a6c31e79e447a2fd90f68b25b1daee12f2caf2821991bb89106f0397bc1acb4c4d84a8ce079d04b60b65f534496952e3bf8c9a52f40f + languageName: node + linkType: hard + +"@types/acorn@npm:^4.0.0": + version: 4.0.6 + resolution: "@types/acorn@npm:4.0.6" + dependencies: + "@types/estree": "npm:*" + checksum: 10c0/5a65a1d7e91fc95703f0a717897be60fa7ccd34b17f5462056274a246e6690259fe0a1baabc86fd3260354f87245cb3dc483346d7faad2b78fc199763978ede9 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.20.4, @types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/f0ba105e7d2296bf367d6e055bb22996886c114261e2cb70bf9359556d0076c7a57239d019dee42bb063f565bade5ccb46009bce2044b2952d964bf9a454d6d2 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*": + version: 7.20.6 + resolution: "@types/babel__traverse@npm:7.20.6" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/7ba7db61a53e28cac955aa99af280d2600f15a8c056619c05b6fc911cbe02c61aa4f2823299221b23ce0cce00b294c0e5f618ec772aa3f247523c2e48cf7b888 + languageName: node + linkType: hard + +"@types/cookie@npm:^0.6.0": + version: 0.6.0 + resolution: "@types/cookie@npm:0.6.0" + checksum: 10c0/5b326bd0188120fb32c0be086b141b1481fec9941b76ad537f9110e10d61ee2636beac145463319c71e4be67a17e85b81ca9e13ceb6e3bb63b93d16824d6c149 + languageName: node + linkType: hard + +"@types/debug@npm:^4.0.0": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" + dependencies: + "@types/ms": "npm:*" + checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f + languageName: node + linkType: hard + +"@types/estree-jsx@npm:^1.0.0": + version: 1.0.5 + resolution: "@types/estree-jsx@npm:1.0.5" + dependencies: + "@types/estree": "npm:*" + checksum: 10c0/07b354331516428b27a3ab99ee397547d47eb223c34053b48f84872fafb841770834b90cc1a0068398e7c7ccb15ec51ab00ec64b31dc5e3dbefd624638a35c6d + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.0": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a + languageName: node + linkType: hard + +"@types/estree@npm:1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d + languageName: node + linkType: hard + +"@types/hast@npm:^2.0.0": + version: 2.3.10 + resolution: "@types/hast@npm:2.3.10" + dependencies: + "@types/unist": "npm:^2" + checksum: 10c0/16daac35d032e656defe1f103f9c09c341a6dc553c7ec17b388274076fa26e904a71ea5ea41fd368a6d5f1e9e53be275c80af7942b9c466d8511d261c9529c7e + languageName: node + linkType: hard + +"@types/hast@npm:^3.0.0, @types/hast@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/hast@npm:3.0.4" + dependencies: + "@types/unist": "npm:*" + checksum: 10c0/3249781a511b38f1d330fd1e3344eed3c4e7ea8eff82e835d35da78e637480d36fad37a78be5a7aed8465d237ad0446abc1150859d0fde395354ea634decf9f7 + languageName: node + linkType: hard + +"@types/mdast@npm:^4.0.0": + version: 4.0.4 + resolution: "@types/mdast@npm:4.0.4" + dependencies: + "@types/unist": "npm:*" + checksum: 10c0/84f403dbe582ee508fd9c7643ac781ad8597fcbfc9ccb8d4715a2c92e4545e5772cbd0dbdf18eda65789386d81b009967fdef01b24faf6640f817287f54d9c82 + languageName: node + linkType: hard + +"@types/mdx@npm:^2.0.0": + version: 2.0.13 + resolution: "@types/mdx@npm:2.0.13" + checksum: 10c0/5edf1099505ac568da55f9ae8a93e7e314e8cbc13d3445d0be61b75941226b005e1390d9b95caecf5dcb00c9d1bab2f1f60f6ff9876dc091a48b547495007720 + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: 10c0/ac80bd90012116ceb2d188fde62d96830ca847823e8ca71255616bc73991aa7d9f057b8bfab79e8ee44ffefb031ddd1bcce63ea82f9e66f7c31ec02d2d823ccc + languageName: node + linkType: hard + +"@types/nlcst@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/nlcst@npm:2.0.3" + dependencies: + "@types/unist": "npm:*" + checksum: 10c0/d83549aaee59681ae8fa2a78d8a1b968a41eb7c0422773dff12acbf3661e4b2b2859740c3effdad9d0cd12ea14a0ec33ca302da12106476b627e09d2a029d3c1 + languageName: node + linkType: hard + +"@types/node@npm:^20.14.11": + version: 20.16.9 + resolution: "@types/node@npm:20.16.9" + dependencies: + undici-types: "npm:~6.19.2" + checksum: 10c0/52d7cbd6792a26e6757c913d1f6dd0fb0104ac44c93dd87480c011d1211b3a1ba282962996bf6aec03f633b5b39f61576f1bafe8436592ab08ad39464e53e4b0 + languageName: node + linkType: hard + +"@types/parse5@npm:^6.0.0": + version: 6.0.3 + resolution: "@types/parse5@npm:6.0.3" + checksum: 10c0/a7c7ef6625974b74b93c1105953003a2291897e453369efcadc569b907de2784d61d4e6905de3ef959fa07f3278f41ed0c22ead0173776023fc43b6ed31042d0 + languageName: node + linkType: hard + +"@types/unist@npm:*, @types/unist@npm:^3.0.0": + version: 3.0.3 + resolution: "@types/unist@npm:3.0.3" + checksum: 10c0/2b1e4adcab78388e088fcc3c0ae8700f76619dbcb4741d7d201f87e2cb346bfc29a89003cfea2d76c996e1061452e14fcd737e8b25aacf949c1f2d6b2bc3dd60 + languageName: node + linkType: hard + +"@types/unist@npm:^2, @types/unist@npm:^2.0.0": + version: 2.0.11 + resolution: "@types/unist@npm:2.0.11" + checksum: 10c0/24dcdf25a168f453bb70298145eb043cfdbb82472db0bc0b56d6d51cd2e484b9ed8271d4ac93000a80da568f2402e9339723db262d0869e2bf13bc58e081768d + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.0.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + languageName: node + linkType: hard + +"@volar/kit@npm:~2.4.0": + version: 2.4.0 + resolution: "@volar/kit@npm:2.4.0" + dependencies: + "@volar/language-service": "npm:2.4.0" + "@volar/typescript": "npm:2.4.0" + typesafe-path: "npm:^0.2.2" + vscode-languageserver-textdocument: "npm:^1.0.11" + vscode-uri: "npm:^3.0.8" + peerDependencies: + typescript: "*" + checksum: 10c0/34b4ccccfd40c5fa11becedad1753cf80a5e4864a5706ef7e7c7a68ab58c497634ee0ad71687224333cafbe7edb199f203a3c043c02054332ac6b16763f04250 + languageName: node + linkType: hard + +"@volar/language-core@npm:2.4.0, @volar/language-core@npm:~2.4.0": + version: 2.4.0 + resolution: "@volar/language-core@npm:2.4.0" + dependencies: + "@volar/source-map": "npm:2.4.0" + checksum: 10c0/10d62ed6556dae586a26899407ff75fa7e30be6df9ee5e2a1f05a38bfbde454ce03a02dd0a8e5fcc396d9cf91ddceec4ac79707cd92e2257e29fdc121d78085c + languageName: node + linkType: hard + +"@volar/language-server@npm:~2.4.0": + version: 2.4.0 + resolution: "@volar/language-server@npm:2.4.0" + dependencies: + "@volar/language-core": "npm:2.4.0" + "@volar/language-service": "npm:2.4.0" + "@volar/typescript": "npm:2.4.0" + path-browserify: "npm:^1.0.1" + request-light: "npm:^0.7.0" + vscode-languageserver: "npm:^9.0.1" + vscode-languageserver-protocol: "npm:^3.17.5" + vscode-languageserver-textdocument: "npm:^1.0.11" + vscode-uri: "npm:^3.0.8" + checksum: 10c0/fdd400f8f478b4c4ae49306c4742ad077a328ca165dad1d21f45d3737488981b3b0de2aa47675d87ae16f47c8c04e742fe86290fdfd098afd47f6a35a90aaf69 + languageName: node + linkType: hard + +"@volar/language-service@npm:2.4.0, @volar/language-service@npm:~2.4.0": + version: 2.4.0 + resolution: "@volar/language-service@npm:2.4.0" + dependencies: + "@volar/language-core": "npm:2.4.0" + vscode-languageserver-protocol: "npm:^3.17.5" + vscode-languageserver-textdocument: "npm:^1.0.11" + vscode-uri: "npm:^3.0.8" + checksum: 10c0/f316a6d97ae75e17cab520cdce2803b0bc08ab386553984517dca60cb1934eb97ffb76a87685462c8e12002291248830d7a44a7166d35878a78b37da59328f66 + languageName: node + linkType: hard + +"@volar/source-map@npm:2.4.0": + version: 2.4.0 + resolution: "@volar/source-map@npm:2.4.0" + checksum: 10c0/e1bd40c96e7d5e7fcd7270b15909080065154a2227af44b341d0edc7b7a417a13a4b71dd661cd62af0fdad431a0fd50f17393707534c8f3b6891252d0135d86e + languageName: node + linkType: hard + +"@volar/typescript@npm:2.4.0, @volar/typescript@npm:~2.4.0": + version: 2.4.0 + resolution: "@volar/typescript@npm:2.4.0" + dependencies: + "@volar/language-core": "npm:2.4.0" + path-browserify: "npm:^1.0.1" + vscode-uri: "npm:^3.0.8" + checksum: 10c0/8684b87edec5ffef034895766daab099a214cb75e49d726825b80bc16dcc046bd84422bd7d19e05bfef3aa174d1e5e1102a80c26732726f625fa277e7674c35a + languageName: node + linkType: hard + +"@vscode/emmet-helper@npm:^2.9.3": + version: 2.9.3 + resolution: "@vscode/emmet-helper@npm:2.9.3" + dependencies: + emmet: "npm:^2.4.3" + jsonc-parser: "npm:^2.3.0" + vscode-languageserver-textdocument: "npm:^1.0.1" + vscode-languageserver-types: "npm:^3.15.1" + vscode-uri: "npm:^2.1.2" + checksum: 10c0/2d7a1947499860fa8e8972b39a7a118f5ae814fbdc91660053b201cd6314b8ae7d3ba02f50be3305e176e9cb9a54996b453883647e51ca7d4aea1a5cabb0e50a + languageName: node + linkType: hard + +"@vscode/l10n@npm:^0.0.18": + version: 0.0.18 + resolution: "@vscode/l10n@npm:0.0.18" + checksum: 10c0/d1fc797001f7d508ab3fa91175f7a50ea98516c4e47830ff2be79163cde9279279514a167a3bad15b7ab7fc243e7808d8f32d3eb41f4a7d6721d9dfdbb38d89e + languageName: node + linkType: hard + +"@zag-js/accordion@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/accordion@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/8a2d27a23b241a6e8a33b591e9f23a38ac632bc65ae05620b31d4887bcff3ec338e8a7d72c7113c6e997b5ec22a158932e3ccdafe983611ffa816b7c29ae8e3c + languageName: node + linkType: hard + +"@zag-js/anatomy@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/anatomy@npm:0.71.0" + checksum: 10c0/88c96135bbafc6a20f8bd327d750e08068ee67109e851f12b6f4782fb6b0c5edec24122be2067c6319a83fcc453f9790095947410b030183fdaf165e53fbb698 + languageName: node + linkType: hard + +"@zag-js/aria-hidden@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/aria-hidden@npm:0.71.0" + dependencies: + aria-hidden: "npm:1.2.4" + checksum: 10c0/3cecf508ba76b769d800dc6bcf4642977689d768ebc015ff7180168001922a0a1dfabda362161c1ce322390b24a475bc0a0f2df98c819e3293b4d2a5b42f722d + languageName: node + linkType: hard + +"@zag-js/auto-resize@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/auto-resize@npm:0.71.0" + dependencies: + "@zag-js/dom-query": "npm:0.71.0" + checksum: 10c0/31201ba858fce9e818f765f4e54659ddf68f28a14e43118bab5a90e403d5e905d7c4fbbac3b9645c39cc8a7f7050a9c2deab648e268b8d9068d27bce99e85011 + languageName: node + linkType: hard + +"@zag-js/avatar@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/avatar@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/e7640dcbd83a8bb2153ee1cde42a0408c6bba079eeb48d3d07aece75cd12c63f1ae366a8990bd973d2251306c3e02e11c31ce9adafbe14da11cdc876eabab5f4 + languageName: node + linkType: hard + +"@zag-js/carousel@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/carousel@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/4deed2cfc156bf77c833d018a355a707361d35c266bf18c67929c190c068759348d764caef376b780757cf52eb80c840eecd81e42f7313ac01f191482de6aac1 + languageName: node + linkType: hard + +"@zag-js/checkbox@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/checkbox@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/focus-visible": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/7610e53818dd593184e7e4c26793cd8db9781de2af2e2325f23438bf1ccbc989174608e979f6d65680c238b2b06c0aaa3a2db95cba500d1608f0e050635e56f7 + languageName: node + linkType: hard + +"@zag-js/clipboard@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/clipboard@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/b46c4fb90812c307de50f7a8ca9251085573f037ce71405c2b9e4e3cb629fac37cfc178d87f569d61562125042bde06c149204f70daab3c24c3817766cdf24b7 + languageName: node + linkType: hard + +"@zag-js/collapsible@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/collapsible@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/948da21060b66fb268c18d760d94eefbd822d07cb6660958dd9fc9360723a59411e8cb37ba00d6aab29a5a226a98190038d01e1cd9f0b2fad8478d172b1863f0 + languageName: node + linkType: hard + +"@zag-js/collection@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/collection@npm:0.71.0" + dependencies: + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/58474b2055d4edbacf8828fd6d3fa1b40fd40dc4f7d4f3fddfbe5ea4b42fb994a1f30ecdd5e0f826ec512676e1d3e1d85f2b8ea5f6c6baa373b272c156e947e6 + languageName: node + linkType: hard + +"@zag-js/color-picker@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/color-picker@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/color-utils": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dismissable": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/popper": "npm:0.71.0" + "@zag-js/text-selection": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/d8ff9278d30622fde9c6e0bc74793a4f0b3171c2856664da1bba6410f14d6d7021925a0afe8903fb89ab1f4f74e58892de9ec8c41dd238e6b874f8a453168ce9 + languageName: node + linkType: hard + +"@zag-js/color-utils@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/color-utils@npm:0.71.0" + dependencies: + "@zag-js/numeric-range": "npm:0.71.0" + checksum: 10c0/f1647cb9480c5e078f460eb48b63da770981df65c5247172f03b6685af669d8f26f35457e58e0a9cbfe65e2dcbd25d7d2986a115a21cf7a2de761a3dd7eeaa41 + languageName: node + linkType: hard + +"@zag-js/combobox@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/combobox@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/aria-hidden": "npm:0.71.0" + "@zag-js/collection": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dismissable": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/popper": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/8d33695c2e8a76b8348deadeb6376d55bf7a7266d274c13b007c1421bcb9466fc045a6b12da1e18fe30481a3cb34e175cbf162197b4db758212eb853245d3f89 + languageName: node + linkType: hard + +"@zag-js/core@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/core@npm:0.71.0" + dependencies: + "@zag-js/store": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + klona: "npm:2.0.6" + checksum: 10c0/15e372efe45bb8dba6738964796d411a24a23e7870ee58e1efd9e82dfd70668a87a255a67629fbeee1306e2c5e28751f418dcac70997ad978d4343628902d3ca + languageName: node + linkType: hard + +"@zag-js/date-picker@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/date-picker@npm:0.71.0" + dependencies: + "@internationalized/date": "npm:3.5.5" + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/date-utils": "npm:0.71.0" + "@zag-js/dismissable": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/live-region": "npm:0.71.0" + "@zag-js/popper": "npm:0.71.0" + "@zag-js/text-selection": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/0b8a4aef104d26a9a3e22e2c86fbde30d61e653d250ac76c25738f8dbc0072b6d186c2425a61f9cde8bf0c887947c505d5f983ed9302ff708748862457139456 + languageName: node + linkType: hard + +"@zag-js/date-utils@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/date-utils@npm:0.71.0" + peerDependencies: + "@internationalized/date": ">=3.0.0" + checksum: 10c0/3cbe414dc0f8195d95c4f6dacba2046c46f0ec947f9d003476e443374a6267dcded1a0a1207e7e07ee2102d04c57ab3fff16d6dd4375983a826f39559963687b + languageName: node + linkType: hard + +"@zag-js/dialog@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/dialog@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/aria-hidden": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dismissable": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/remove-scroll": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + focus-trap: "npm:7.6.0" + checksum: 10c0/72e74b027008995bccdbd70eb5bc65418da0cd9d404776930b8d23c9a02ac7486c85341286f6888e0ce03de4dc45982e699f44bfdd01d18d6298bcdd0a38884c + languageName: node + linkType: hard + +"@zag-js/dismissable@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/dismissable@npm:0.71.0" + dependencies: + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/interact-outside": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/964e3a306b1572bd6aff98fe04d4320a33f14cc3fdb2c5aec856bf43eee96c7118d5d2aefd5bc00c744e04ec1dafb46d9c90ecd6defeb56d75320c7ad0be2673 + languageName: node + linkType: hard + +"@zag-js/dom-event@npm:0.71.0, @zag-js/dom-event@npm:^0.71.0": + version: 0.71.0 + resolution: "@zag-js/dom-event@npm:0.71.0" + dependencies: + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/text-selection": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + checksum: 10c0/c82b8224cc05a64d2f7bbed9edc11ea089b733f1202f841d59abfd0642ea4ebf1fce67b7fc6d0105dbc372b4e223c96721f1860f7fb5a75bc03749f7c9c3445c + languageName: node + linkType: hard + +"@zag-js/dom-query@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/dom-query@npm:0.71.0" + checksum: 10c0/6bb8407e141b1b58a419fe3241959e4a2d3e8353cf618584fec080f05629b6f26f8a1af29b32cda9cac9047ebc7591676ec1e8ffd135c63e2b5277f6cf56c66e + languageName: node + linkType: hard + +"@zag-js/editable@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/editable@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/interact-outside": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/95f568fde1a5f2d7930e5a17d2450df643751af2e55fdef117d0ab81997f5e0ad9986001f8d17b882a93de672d3389f54cd2ac2af0e4085899ed42e75222a9b9 + languageName: node + linkType: hard + +"@zag-js/element-rect@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/element-rect@npm:0.71.0" + checksum: 10c0/5437f3fd965fe4773b720d8c707e96a7e87dc9cf4e572ecb5b83991bcea27afdfb35f2fbbb0ea82988a32c0b41c70b647cfa34807d97ed4163252f6ac46541f8 + languageName: node + linkType: hard + +"@zag-js/element-size@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/element-size@npm:0.71.0" + checksum: 10c0/12cd8e2f184596fc502b665af7b539355e08af3982b27e8f98e531008cc8bebd882cbb39d3edcfc4e8e228e785589c562f69a4b7a6324da1b4c5130d6747c362 + languageName: node + linkType: hard + +"@zag-js/file-upload@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/file-upload@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/file-utils": "npm:0.71.0" + "@zag-js/i18n-utils": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/00327458e2ce9f0448805855b0e6145d0008177a9ce432dadcae720bf797c07661827f153c14ca3e7b4e8c430648706d163ccfe60c522552d5178a71cb419a3f + languageName: node + linkType: hard + +"@zag-js/file-utils@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/file-utils@npm:0.71.0" + dependencies: + "@zag-js/i18n-utils": "npm:0.71.0" + checksum: 10c0/93c2d63d12106c265b3a01c339ed4cb10cfcd68ead720cffccaef39bde17a222ba0899ffbc275f17388a3d5ea5857bea013ffc3a476487b84c0cf124eb2f9879 + languageName: node + linkType: hard + +"@zag-js/focus-visible@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/focus-visible@npm:0.71.0" + dependencies: + "@zag-js/dom-query": "npm:0.71.0" + checksum: 10c0/36987ffb658b79ad97d09e89af96d05f6233f03ae9d6eb7a033ff584d66eebde303f30a67915d6efc8aec9dd7b146011103b3a504cdc1bed4569ca4ddee3e288 + languageName: node + linkType: hard + +"@zag-js/form-utils@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/form-utils@npm:0.71.0" + checksum: 10c0/12dad5522a12599c844fd946721f865e5f255f1c681839955c6327f046cbb9efacf4b17c8e55ddbf8dd574540ba4ebe66ffc48e81f43586a8d2d12fbee86f9eb + languageName: node + linkType: hard + +"@zag-js/highlight-word@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/highlight-word@npm:0.71.0" + checksum: 10c0/b312cf30386e5b046191bb511555e8b7ac1655807cf907e281d14b4bc36ae90286d857c99b57e78429d1ccab5ba2544eda9451ce96eac513a3a5b8bc157f4c98 + languageName: node + linkType: hard + +"@zag-js/hover-card@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/hover-card@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dismissable": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/popper": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/62eca4c5442ec4a8c33cbc4d19f3eee98ec5ce83c791082facd8337214a80f71933e2d06d05e33ab2ee5f7367562ff6a53d54790ebfb95c115cbacac1b53770d + languageName: node + linkType: hard + +"@zag-js/i18n-utils@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/i18n-utils@npm:0.71.0" + dependencies: + "@zag-js/dom-query": "npm:0.71.0" + checksum: 10c0/4398f207c76818a640cc371b3891eb207444f7c3b5ff9f518d42a405ba8dfe05946edcb8063b3a069da34e0ce05b99a46a4222eced5fe9a1c62cc5a0e40f5e1b + languageName: node + linkType: hard + +"@zag-js/interact-outside@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/interact-outside@npm:0.71.0" + dependencies: + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/6c8280bb5b11d8c2ab5daf5bc76e91427c757f611966324e89904099a1e34db88b5e2674414dcccc0f7a83b99d50dabf286447b443714c273d920760730b5093 + languageName: node + linkType: hard + +"@zag-js/live-region@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/live-region@npm:0.71.0" + checksum: 10c0/0a7b0b32949834994a4e557f7fc6e1af7e1c8a7acddcdb575bcbffbe9044c33dae26fe99e8dfb428493e5510dd1917736aaeac8622e2cbe0cb10f00724473603 + languageName: node + linkType: hard + +"@zag-js/menu@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/menu@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dismissable": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/popper": "npm:0.71.0" + "@zag-js/rect-utils": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/9786eb6c68d5f572a3468947974722ddc635e15b2f0e61d1f54b517055782be6a8294f71a6b235d3d453c8bb64be43e8c45bfb25d930c1aa82e90344822a6cbe + languageName: node + linkType: hard + +"@zag-js/number-input@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/number-input@npm:0.71.0" + dependencies: + "@internationalized/number": "npm:3.5.3" + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/number-utils": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/f230901b4d221d47b17b59701ae14bdda1ba3ac0858ce32b03710b472dde41fae594d7fcedee4ca9d14f6d72905b7ae3ad0a4ea647aea9f8ba8d9ddff35969c4 + languageName: node + linkType: hard + +"@zag-js/number-utils@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/number-utils@npm:0.71.0" + checksum: 10c0/aec8127ded305d9e6d3c6d934339a561991f7d54ed6da0c8c65dc0c77b5fd848ac106973e73d007f8fcedb699be8f6a9f092bb5845758fb95f9496730cbab8df + languageName: node + linkType: hard + +"@zag-js/numeric-range@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/numeric-range@npm:0.71.0" + checksum: 10c0/0458b999d63636202646da304c3eb0282dd6dbe0bb81c030009c397ee525771dd851f473329c18160dd9879f5fe372d147d934cc9d213a086b3990cf18bc01a5 + languageName: node + linkType: hard + +"@zag-js/pagination@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/pagination@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/530fd600472f546f08f725dfc01b9314ec7e66a39943d8ae1d48bbd32c6f2178e7b148dce5a704a05bfb9e60a4265c7236f7c2ca6e0acbe5c52165bad7e62cf0 + languageName: node + linkType: hard + +"@zag-js/pin-input@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/pin-input@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/3065677d80cae036bc2ec5080fe3bed1df9858e2b001bfea2f91d8b3800d7b63b285fc152f8860cd98e8e0e7bca1a3a2a9c6be631e4cbd4ef166e8da424ac9f9 + languageName: node + linkType: hard + +"@zag-js/popover@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/popover@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/aria-hidden": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dismissable": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/popper": "npm:0.71.0" + "@zag-js/remove-scroll": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + focus-trap: "npm:7.6.0" + checksum: 10c0/7c5bae7d192cc3b5b7859ce6b7a81d6dd0e247c0e4c66666c5802cc07888db742551d7643fe1654a0cbe3e7ff2deb79107a673b2003ac45a3f44bb444828a990 + languageName: node + linkType: hard + +"@zag-js/popper@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/popper@npm:0.71.0" + dependencies: + "@floating-ui/dom": "npm:1.6.11" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/0f4d78523090da9873162a289070dc010ac310a1b98009ee15d595d67fbbd9e81b96f4376c14a8dcb48373608e3976e65aa642cc1800a90ef3b0f6fe2335d314 + languageName: node + linkType: hard + +"@zag-js/presence@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/presence@npm:0.71.0" + dependencies: + "@zag-js/core": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + checksum: 10c0/f7486d89f1152ad263ee4eddfa88e6c3d51f32e01d02fad467b6c54b3234b2e394903a0762c9a3b8eb99c8680f206eabd7e1df189eacabe0a4033bdebda0ecab + languageName: node + linkType: hard + +"@zag-js/progress@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/progress@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/bf6eb191d1a8447c789764a010d5fdcb5be6217790b1268d7672d845cd68ca032709198117505099237c56d3709aaf17c2ce2b015fdfd1a07c55c71920059563 + languageName: node + linkType: hard + +"@zag-js/qr-code@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/qr-code@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + proxy-memoize: "npm:3.0.1" + uqr: "npm:0.1.2" + checksum: 10c0/bcc22371ed9eb8a81e7aa93ab571a382745eead1670b1ab50e0a7731208eac43cad28c63575f82f56d88b39348894662860ec52b3edde7251ee6c4b1d2b72f8c + languageName: node + linkType: hard + +"@zag-js/radio-group@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/radio-group@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/element-rect": "npm:0.71.0" + "@zag-js/focus-visible": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/8f25535f7b2d2b00f83b8404fdd137f5877c200d92ff04f6e250189131bef6bdb11dc366ea56812f40c0fbe550937c02b3727afd0aa113204836e7c8fc594fba + languageName: node + linkType: hard + +"@zag-js/rating-group@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/rating-group@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/e11ab431ce991c5fca331349b88eb9c12b7f3eeaa0c53edfc985a66137a20785e50eb073c152abff40687154f2312e6b3a8cd6f911c21c067b164e016a2b2f7a + languageName: node + linkType: hard + +"@zag-js/rect-utils@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/rect-utils@npm:0.71.0" + checksum: 10c0/9667f286edd0ecd86dd66a8e5cb947dcd8065d0aace5f5c2b42025a9a1da29f7edfc84f07fe23655b6d352998d4706cfef83ddc49c0fd08323c6341b9089fdca + languageName: node + linkType: hard + +"@zag-js/remove-scroll@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/remove-scroll@npm:0.71.0" + dependencies: + "@zag-js/dom-query": "npm:0.71.0" + checksum: 10c0/6f35ba74291579374eda570cfa2a6f6665d1a23236dacfcf888be4f35dd26a1f886327a463871b44e644b26cf1385e9db637c43fd0df0d1974dca2a95d93e513 + languageName: node + linkType: hard + +"@zag-js/select@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/select@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/collection": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dismissable": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/popper": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/0316f6a0c42ef5a1a98e12bcc8a4f77e2f61e93b6c9a49c679d294e747043330122df181a5e6498b88ce3f95b788ea9427415b84588b6b43a14f2e8c0f46c090 + languageName: node + linkType: hard + +"@zag-js/signature-pad@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/signature-pad@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + perfect-freehand: "npm:^1.2.2" + checksum: 10c0/c6a5fa5a20b146f4e1f5c1ac8dec56830f8776c004540bc922faf82b80c70bd64aab30d60c9be02b0d9cfe68e4b5b8b454ff7ee88e959e0f3580d165634f6647 + languageName: node + linkType: hard + +"@zag-js/slider@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/slider@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/element-size": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/numeric-range": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/2e905e800ed6abedeccdfefc6d19f2daafeece0bb84b6562a1e68cda70b321c94dd17228a6719c62c93b927de9f861970245aade168b646acd01006bdca4577b + languageName: node + linkType: hard + +"@zag-js/solid@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/solid@npm:0.71.0" + dependencies: + "@zag-js/core": "npm:0.71.0" + "@zag-js/store": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + peerDependencies: + solid-js: ">=1.1.3" + checksum: 10c0/96c0a0f9c949e1a1e667214d2346673e6ae17d8414f28406d975a017450c8db7d2f26658cc93a481b2fc714092d3dd8719d66349f96c59398b241b51fb578b07 + languageName: node + linkType: hard + +"@zag-js/splitter@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/splitter@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/number-utils": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/a74f30256949b6b367d0ec7e4473fd4cda167aba3abc0838f01640eae6575de0679f8ca8a671256bac4c513d6aaa4d1dc0931bf3959fbd93c7e99ce8da71219e + languageName: node + linkType: hard + +"@zag-js/steps@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/steps@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/6d7f088cc8652c071e28167e3265610f07e52bb41ec569bf761100793bd2177e69858fb83183b49fd74276ac56c38b41cab2d65f0037df9e16db6157394a39ef + languageName: node + linkType: hard + +"@zag-js/store@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/store@npm:0.71.0" + dependencies: + proxy-compare: "npm:3.0.0" + checksum: 10c0/328c49cdcf49471a9e2d62cd0284596d28ec6a0b063b4bb0ea8d97c00a3197f6125dabc65582d6ed8d11f1e69a9f8c52889b3e5e23c0e371668b6e2bf8555ee6 + languageName: node + linkType: hard + +"@zag-js/switch@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/switch@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/focus-visible": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/4ea23c98f0e684db92fb7e1c410038899f6ff90f1051d0e69a081ed60f1102cb2df34785987859a0df84599204fb256d74ae52e3265a831548d1636514db1419 + languageName: node + linkType: hard + +"@zag-js/tabs@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/tabs@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/element-rect": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/2145cd40c86a795ee3e45cc66d0a2d749a73d4876cf5ad80f75193f27b29f1d21ba1a7a7c1ac39844d60bdca5cfbfcd8444c413833bf2fe91b76e4a86a84a8ba + languageName: node + linkType: hard + +"@zag-js/tags-input@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/tags-input@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/auto-resize": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/form-utils": "npm:0.71.0" + "@zag-js/interact-outside": "npm:0.71.0" + "@zag-js/live-region": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/5671425f00b71822fefe6e94b05d19b576419defbbb223e4afe201f663d017b97343440511f85656490c96aacfed5ee87a5fc9130aa1eefb709e33b6ae756b45 + languageName: node + linkType: hard + +"@zag-js/text-selection@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/text-selection@npm:0.71.0" + dependencies: + "@zag-js/dom-query": "npm:0.71.0" + checksum: 10c0/ab27485cf3aa2c4943826c60af240165d3a0981ea064d69462f10fc714548d555d6d544bf8a9afaaf32009cefd85b9ada7762ccb7d6d5b9031378c5fa19486f3 + languageName: node + linkType: hard + +"@zag-js/time-picker@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/time-picker@npm:0.71.0" + dependencies: + "@internationalized/date": "npm:3.5.5" + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dismissable": "npm:0.71.0" + "@zag-js/dom-event": "npm:^0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/popper": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/5f6e113d5aff88855f8e36385cc8273a5024408d8852520569f89ae8f85932e8297d377ca29a1bd9a3a2458b0d1d58e297918ce4e10e06aa207d226b0996d1ae + languageName: node + linkType: hard + +"@zag-js/timer@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/timer@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/24ca64e05c2c93f0d2619f4a00faf8d6488a2476b5cc253fd0a2bfedf30e234436f4791436c07e73b486bc14bc17f9d1afd51780cb7f065e1e8cfcdb2d9ef8e7 + languageName: node + linkType: hard + +"@zag-js/toast@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/toast@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dismissable": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/b82df2211fd95fa13451d04643e02ac11fe850adef4b1c4e244664ff9bbb2d108163dd2c282bdfdf9dcb44211849a97293d26c07e5d45802d1b0b825db97541a + languageName: node + linkType: hard + +"@zag-js/toggle-group@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/toggle-group@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/ee17c69190710272add5e5b5e80706cd208a702dc19917d6141dc26f6044a2d1ebe01d9e5614e8bb6c4f8a6d6b6c1bd8fd306790181474eb2dc5b88b8b8e8e16 + languageName: node + linkType: hard + +"@zag-js/tooltip@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/tooltip@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/focus-visible": "npm:0.71.0" + "@zag-js/popper": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/3b14a264cd78ab3c51c39aa5660ec667c68b4e13127e70f6ab5731bdb4feb27d58b867ed4d53651dd4ff6e2c23e5d0da9d78155ba841bbc1810b4dc13f30a242 + languageName: node + linkType: hard + +"@zag-js/tree-view@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/tree-view@npm:0.71.0" + dependencies: + "@zag-js/anatomy": "npm:0.71.0" + "@zag-js/core": "npm:0.71.0" + "@zag-js/dom-event": "npm:0.71.0" + "@zag-js/dom-query": "npm:0.71.0" + "@zag-js/types": "npm:0.71.0" + "@zag-js/utils": "npm:0.71.0" + checksum: 10c0/9f705d15452c80037527690682faa29f190d9b0b88821190246d7a4b3f641d83878a699315045cccc171c20ed4661e9598a10149228eae0397c7321db764ba02 + languageName: node + linkType: hard + +"@zag-js/types@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/types@npm:0.71.0" + dependencies: + csstype: "npm:3.1.3" + checksum: 10c0/68ddddbc8b9679cbe86124e625d417ef52999c807bfadc5e412b5355423be74ed1d0886c2120b361b3861198e0be5bd5c4e12e56579b3c4bc833159a118eb273 + languageName: node + linkType: hard + +"@zag-js/utils@npm:0.71.0": + version: 0.71.0 + resolution: "@zag-js/utils@npm:0.71.0" + checksum: 10c0/3b60280dea909023c7af791d09009ffd3ccb5ae0b84b2b98fb9872d04a38b4894a92e6872fa62509b2ebe53108c0b52c22f28673d83cee22515f9f5a5440e38d + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.0.0": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn@npm:^8.0.0, acorn@npm:^8.12.1": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" + bin: + acorn: bin/acorn + checksum: 10c0/51fb26cd678f914e13287e886da2d7021f8c2bc0ccc95e03d3e0447ee278dd3b40b9c57dc222acd5881adcf26f3edc40901a4953403232129e3876793cd17386 + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" + dependencies: + debug: "npm:^4.3.4" + checksum: 10c0/e59ce7bed9c63bf071a30cc471f2933862044c97fd9958967bfe22521d7a0f601ce4ed5a8c011799d0c726ca70312142ae193bbebb60f576b52be19d4a363b50 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ajv@npm:^8.11.0": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/ec3ba10a573c6b60f94639ffc53526275917a2df6810e4ab5a6b959d87459f9ef3f00d5e7865b82677cb7d21590355b34da14d1d0b9c32d75f95a187e76fff35 + languageName: node + linkType: hard + +"ansi-align@npm:^3.0.1": + version: 3.0.1 + resolution: "ansi-align@npm:3.0.1" + dependencies: + string-width: "npm:^4.1.0" + checksum: 10c0/ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"aria-hidden@npm:1.2.4": + version: 1.2.4 + resolution: "aria-hidden@npm:1.2.4" + dependencies: + tslib: "npm:^2.0.0" + checksum: 10c0/8abcab2e1432efc4db415e97cb3959649ddf52c8fc815d7384f43f3d3abf56f1c12852575d00df9a8927f421d7e0712652dd5f8db244ea57634344e29ecfc74a + languageName: node + linkType: hard + +"aria-query@npm:^5.3.0": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10c0/003c7e3e2cff5540bf7a7893775fc614de82b0c5dde8ae823d47b7a28a9d4da1f7ed85f340bdb93d5649caa927755f0e31ecc7ab63edfdfc00c8ef07e505e03e + languageName: node + linkType: hard + +"array-iterate@npm:^2.0.0": + version: 2.0.1 + resolution: "array-iterate@npm:2.0.1" + checksum: 10c0/756c08334f95e290f03ab2141b034514af1311ef7b62f15b0f5ea6f8f3033ee9cc6a8f1c3e9ff4803d4d723cf992aa61460acf5fce884936972db966b1da287d + languageName: node + linkType: hard + +"astring@npm:^1.8.0": + version: 1.8.6 + resolution: "astring@npm:1.8.6" + bin: + astring: bin/astring + checksum: 10c0/31f09144597048c11072417959a412f208f8f95ba8dce408dfbc3367acb929f31fbcc00ed5eb61ccbf7c2f1173b9ac8bfcaaa37134a9455050c669b2b036ed88 + languageName: node + linkType: hard + +"astro-breadcrumbs@npm:^2.3.1": + version: 2.3.1 + resolution: "astro-breadcrumbs@npm:2.3.1" + peerDependencies: + astro: ^2.0.0-beta.0 || ^3.0.0 || ^4.0.0 + checksum: 10c0/5381f28a3ab457c36d84e4c65aa821463847c625efddb28bb3d3d30a2417c8a6dd8708c8b7d72d0f90e7090dde6d235e0cc618dd1fdf5d71242bb2fbb9f12f0b + languageName: node + linkType: hard + +"astro-pagefind@npm:^1.6.0": + version: 1.6.0 + resolution: "astro-pagefind@npm:1.6.0" + dependencies: + "@pagefind/default-ui": "npm:^1.0.3" + pagefind: "npm:^1.0.3" + sirv: "npm:^2.0.3" + peerDependencies: + astro: ^2.0.4 || ^3.0.0 || ^4.0.0 + checksum: 10c0/4ee30b5fdb229351a496a9bc21995b459dfd82091efd9f6e0281695f795fa47689253fefde46695af785d2dd278ba90b3e2b261a3a2ede49f7e27ee7d5070650 + languageName: node + linkType: hard + +"astro@npm:^4.14.5": + version: 4.14.5 + resolution: "astro@npm:4.14.5" + dependencies: + "@astrojs/compiler": "npm:^2.10.3" + "@astrojs/internal-helpers": "npm:0.4.1" + "@astrojs/markdown-remark": "npm:5.2.0" + "@astrojs/telemetry": "npm:3.1.0" + "@babel/core": "npm:^7.25.2" + "@babel/generator": "npm:^7.25.0" + "@babel/parser": "npm:^7.25.3" + "@babel/plugin-transform-react-jsx": "npm:^7.25.2" + "@babel/traverse": "npm:^7.25.3" + "@babel/types": "npm:^7.25.2" + "@oslojs/encoding": "npm:^0.4.1" + "@rollup/pluginutils": "npm:^5.1.0" + "@types/babel__core": "npm:^7.20.5" + "@types/cookie": "npm:^0.6.0" + acorn: "npm:^8.12.1" + aria-query: "npm:^5.3.0" + axobject-query: "npm:^4.1.0" + boxen: "npm:7.1.1" + ci-info: "npm:^4.0.0" + clsx: "npm:^2.1.1" + common-ancestor-path: "npm:^1.0.1" + cookie: "npm:^0.6.0" + cssesc: "npm:^3.0.0" + debug: "npm:^4.3.6" + deterministic-object-hash: "npm:^2.0.2" + devalue: "npm:^5.0.0" + diff: "npm:^5.2.0" + dlv: "npm:^1.1.3" + dset: "npm:^3.1.3" + es-module-lexer: "npm:^1.5.4" + esbuild: "npm:^0.21.5" + estree-walker: "npm:^3.0.3" + execa: "npm:^8.0.1" + fast-glob: "npm:^3.3.2" + flattie: "npm:^1.1.1" + github-slugger: "npm:^2.0.0" + gray-matter: "npm:^4.0.3" + html-escaper: "npm:^3.0.3" + http-cache-semantics: "npm:^4.1.1" + js-yaml: "npm:^4.1.0" + kleur: "npm:^4.1.5" + magic-string: "npm:^0.30.11" + micromatch: "npm:^4.0.7" + mrmime: "npm:^2.0.0" + neotraverse: "npm:^0.6.18" + ora: "npm:^8.0.1" + p-limit: "npm:^6.1.0" + p-queue: "npm:^8.0.1" + path-to-regexp: "npm:^6.2.2" + preferred-pm: "npm:^4.0.0" + prompts: "npm:^2.4.2" + rehype: "npm:^13.0.1" + semver: "npm:^7.6.3" + sharp: "npm:^0.33.3" + shiki: "npm:^1.14.1" + string-width: "npm:^7.2.0" + strip-ansi: "npm:^7.1.0" + tsconfck: "npm:^3.1.1" + unist-util-visit: "npm:^5.0.0" + vfile: "npm:^6.0.2" + vite: "npm:^5.4.1" + vitefu: "npm:^0.2.5" + which-pm: "npm:^3.0.0" + xxhash-wasm: "npm:^1.0.2" + yargs-parser: "npm:^21.1.1" + zod: "npm:^3.23.8" + zod-to-json-schema: "npm:^3.23.2" + zod-to-ts: "npm:^1.2.0" + dependenciesMeta: + sharp: + optional: true + bin: + astro: astro.js + checksum: 10c0/ede0b3d38bdb2135066e67c0830edac2f1737a3f34a707f17d12395f74d61e90b3fcaf70dfd31abb91c12c9d02fde748a28c7c4ca4038c2e7d5ad1bb5acb6a02 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"axobject-query@npm:^4.1.0": + version: 4.1.0 + resolution: "axobject-query@npm:4.1.0" + checksum: 10c0/c470e4f95008f232eadd755b018cb55f16c03ccf39c027b941cd8820ac6b68707ce5d7368a46756db4256fbc91bb4ead368f84f7fb034b2b7932f082f6dc0775 + languageName: node + linkType: hard + +"babel-plugin-jsx-dom-expressions@npm:^0.39.0": + version: 0.39.0 + resolution: "babel-plugin-jsx-dom-expressions@npm:0.39.0" + dependencies: + "@babel/helper-module-imports": "npm:7.18.6" + "@babel/plugin-syntax-jsx": "npm:^7.18.6" + "@babel/types": "npm:^7.20.7" + html-entities: "npm:2.3.3" + jest-diff: "npm:^29.7.0" + jsdom: "npm:^25.0.0" + validate-html-nesting: "npm:^1.2.1" + peerDependencies: + "@babel/core": ^7.20.12 + checksum: 10c0/52bc71239bba38f90dde464a60b304b4fcdcccfc0b169838346bbac0067bad23d5b190a09eaa5e69252da675b6ef525489dc6d6ca1d00695657b6936b93e1950 + languageName: node + linkType: hard + +"babel-preset-solid@npm:^1.8.4": + version: 1.9.0 + resolution: "babel-preset-solid@npm:1.9.0" + dependencies: + babel-plugin-jsx-dom-expressions: "npm:^0.39.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/7e209372b7006b73b758bcdcfe40ec6db38bda54b183650d8d061b6a10a6d0ca3f4bf051cd39a307aef5638c75c88da68a17e9f100ca25428a02c2cdcfe39c3d + languageName: node + linkType: hard + +"bail@npm:^2.0.0": + version: 2.0.2 + resolution: "bail@npm:2.0.2" + checksum: 10c0/25cbea309ef6a1f56214187004e8f34014eb015713ea01fa5b9b7e9e776ca88d0fdffd64143ac42dc91966c915a4b7b683411b56e14929fad16153fc026ffb8b + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"base-64@npm:^1.0.0": + version: 1.0.0 + resolution: "base-64@npm:1.0.0" + checksum: 10c0/d886cb3236cee0bed9f7075675748b59b32fad623ddb8ce1793c790306aa0f76a03238cad4b3fb398abda6527ce08a5588388533a4ccade0b97e82b9da660e28 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + +"boxen@npm:7.1.1": + version: 7.1.1 + resolution: "boxen@npm:7.1.1" + dependencies: + ansi-align: "npm:^3.0.1" + camelcase: "npm:^7.0.1" + chalk: "npm:^5.2.0" + cli-boxes: "npm:^3.0.0" + string-width: "npm:^5.1.2" + type-fest: "npm:^2.13.0" + widest-line: "npm:^4.0.1" + wrap-ansi: "npm:^8.1.0" + checksum: 10c0/3a9891dc98ac40d582c9879e8165628258e2c70420c919e70fff0a53ccc7b42825e73cda6298199b2fbc1f41f5d5b93b492490ad2ae27623bed3897ddb4267f8 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"browserslist@npm:^4.23.1": + version: 4.23.3 + resolution: "browserslist@npm:4.23.3" + dependencies: + caniuse-lite: "npm:^1.0.30001646" + electron-to-chromium: "npm:^1.5.4" + node-releases: "npm:^2.0.18" + update-browserslist-db: "npm:^1.1.0" + bin: + browserslist: cli.js + checksum: 10c0/3063bfdf812815346447f4796c8f04601bf5d62003374305fd323c2a463e42776475bcc5309264e39bcf9a8605851e53560695991a623be988138b3ff8c66642 + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.4 + resolution: "cacache@npm:18.0.4" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/6c055bafed9de4f3dcc64ac3dc7dd24e863210902b7c470eb9ce55a806309b3efff78033e3d8b4f7dcc5d467f2db43c6a2857aaaf26f0094b8a351d44c42179f + languageName: node + linkType: hard + +"camelcase@npm:^7.0.1": + version: 7.0.1 + resolution: "camelcase@npm:7.0.1" + checksum: 10c0/3adfc9a0e96d51b3a2f4efe90a84dad3e206aaa81dfc664f1bd568270e1bf3b010aad31f01db16345b4ffe1910e16ab411c7273a19a859addd1b98ef7cf4cfbd + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001646": + version: 1.0.30001653 + resolution: "caniuse-lite@npm:1.0.30001653" + checksum: 10c0/7aedf037541c93744148f599daea93d46d1f93ab4347997189efa2d1f003af8eadd7e1e05347ef09261ac1dc635ce375b8c6c00796245fffb4120a124824a14f + languageName: node + linkType: hard + +"ccount@npm:^2.0.0": + version: 2.0.1 + resolution: "ccount@npm:2.0.1" + checksum: 10c0/3939b1664390174484322bc3f45b798462e6c07ee6384cb3d645e0aa2f318502d174845198c1561930e1d431087f74cf1fe291ae9a4722821a9f4ba67e574350 + languageName: node + linkType: hard + +"chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"chalk@npm:^5.2.0, chalk@npm:^5.3.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 + languageName: node + linkType: hard + +"character-entities-html4@npm:^2.0.0": + version: 2.1.0 + resolution: "character-entities-html4@npm:2.1.0" + checksum: 10c0/fe61b553f083400c20c0b0fd65095df30a0b445d960f3bbf271536ae6c3ba676f39cb7af0b4bf2755812f08ab9b88f2feed68f9aebb73bb153f7a115fe5c6e40 + languageName: node + linkType: hard + +"character-entities-legacy@npm:^3.0.0": + version: 3.0.0 + resolution: "character-entities-legacy@npm:3.0.0" + checksum: 10c0/ec4b430af873661aa754a896a2b55af089b4e938d3d010fad5219299a6b6d32ab175142699ee250640678cd64bdecd6db3c9af0b8759ab7b155d970d84c4c7d1 + languageName: node + linkType: hard + +"character-entities@npm:^2.0.0": + version: 2.0.2 + resolution: "character-entities@npm:2.0.2" + checksum: 10c0/b0c645a45bcc90ff24f0e0140f4875a8436b8ef13b6bcd31ec02cfb2ca502b680362aa95386f7815bdc04b6464d48cf191210b3840d7c04241a149ede591a308 + languageName: node + linkType: hard + +"character-reference-invalid@npm:^2.0.0": + version: 2.0.1 + resolution: "character-reference-invalid@npm:2.0.1" + checksum: 10c0/2ae0dec770cd8659d7e8b0ce24392d83b4c2f0eb4a3395c955dce5528edd4cc030a794cfa06600fcdd700b3f2de2f9b8e40e309c0011c4180e3be64a0b42e6a1 + languageName: node + linkType: hard + +"chokidar@npm:^3.5.3": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + +"ci-info@npm:^4.0.0": + version: 4.0.0 + resolution: "ci-info@npm:4.0.0" + checksum: 10c0/ecc003e5b60580bd081d83dd61d398ddb8607537f916313e40af4667f9c92a1243bd8e8a591a5aa78e418afec245dbe8e90a0e26e39ca0825129a99b978dd3f9 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"cli-boxes@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-boxes@npm:3.0.0" + checksum: 10c0/4db3e8fbfaf1aac4fb3a6cbe5a2d3fa048bee741a45371b906439b9ffc821c6e626b0f108bdcd3ddf126a4a319409aedcf39a0730573ff050fdd7b6731e99fb9 + languageName: node + linkType: hard + +"cli-cursor@npm:^5.0.0": + version: 5.0.0 + resolution: "cli-cursor@npm:5.0.0" + dependencies: + restore-cursor: "npm:^5.0.0" + checksum: 10c0/7ec62f69b79f6734ab209a3e4dbdc8af7422d44d360a7cb1efa8a0887bbe466a6e625650c466fe4359aee44dbe2dc0b6994b583d40a05d0808a5cb193641d220 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.9.2": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"clsx@npm:^2.1.1": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: 10c0/c4c8eb865f8c82baab07e71bfa8897c73454881c4f99d6bc81585aecd7c441746c1399d08363dc096c550cceaf97bd4ce1e8854e1771e9998d9f94c4fe075839 + languageName: node + linkType: hard + +"collapse-white-space@npm:^2.0.0": + version: 2.1.0 + resolution: "collapse-white-space@npm:2.1.0" + checksum: 10c0/b2e2800f4ab261e62eb27a1fbe853378296e3a726d6695117ed033e82d61fb6abeae4ffc1465d5454499e237005de9cfc52c9562dc7ca4ac759b9a222ef14453 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + languageName: node + linkType: hard + +"color-name@npm:^1.0.0, color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"color-string@npm:^1.9.0": + version: 1.9.1 + resolution: "color-string@npm:1.9.1" + dependencies: + color-name: "npm:^1.0.0" + simple-swizzle: "npm:^0.2.2" + checksum: 10c0/b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404 + languageName: node + linkType: hard + +"color@npm:^4.2.3": + version: 4.2.3 + resolution: "color@npm:4.2.3" + dependencies: + color-convert: "npm:^2.0.1" + color-string: "npm:^1.9.0" + checksum: 10c0/7fbe7cfb811054c808349de19fb380252e5e34e61d7d168ec3353e9e9aacb1802674bddc657682e4e9730c2786592a4de6f8283e7e0d3870b829bb0b7b2f6118 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + +"comma-separated-tokens@npm:^2.0.0": + version: 2.0.3 + resolution: "comma-separated-tokens@npm:2.0.3" + checksum: 10c0/91f90f1aae320f1755d6957ef0b864fe4f54737f3313bd95e0802686ee2ca38bff1dd381964d00ae5db42912dd1f4ae5c2709644e82706ffc6f6842a813cdd67 + languageName: node + linkType: hard + +"common-ancestor-path@npm:^1.0.1": + version: 1.0.1 + resolution: "common-ancestor-path@npm:1.0.1" + checksum: 10c0/390c08d2a67a7a106d39499c002d827d2874966d938012453fd7ca34cd306881e2b9d604f657fa7a8e6e4896d67f39ebc09bf1bfd8da8ff318e0fb7a8752c534 + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"cookie@npm:^0.6.0": + version: 0.6.0 + resolution: "cookie@npm:0.6.0" + checksum: 10c0/f2318b31af7a31b4ddb4a678d024514df5e705f9be5909a192d7f116cfb6d45cbacf96a473fa733faa95050e7cff26e7832bb3ef94751592f1387b71c8956686 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + languageName: node + linkType: hard + +"cssstyle@npm:^4.1.0": + version: 4.1.0 + resolution: "cssstyle@npm:4.1.0" + dependencies: + rrweb-cssom: "npm:^0.7.1" + checksum: 10c0/05c6597e5d3e0ec6b15221f2c0ce9a0443a46cc50a6089a3ba9ee1ac27f83ff86a445a8f95435137dadd859f091fc61b6d342abaf396d3c910471b5b33cfcbfa + languageName: node + linkType: hard + +"csstype@npm:3.1.3, csstype@npm:^3.1.0": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 + languageName: node + linkType: hard + +"data-urls@npm:^5.0.0": + version: 5.0.0 + resolution: "data-urls@npm:5.0.0" + dependencies: + whatwg-mimetype: "npm:^4.0.0" + whatwg-url: "npm:^14.0.0" + checksum: 10c0/1b894d7d41c861f3a4ed2ae9b1c3f0909d4575ada02e36d3d3bc584bdd84278e20709070c79c3b3bff7ac98598cb191eb3e86a89a79ea4ee1ef360e1694f92ad + languageName: node + linkType: hard + +"debug@npm:4": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b + languageName: node + linkType: hard + +"debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.3.1, debug@npm:^4.3.4, debug@npm:^4.3.6": + version: 4.3.6 + resolution: "debug@npm:4.3.6" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/3293416bff072389c101697d4611c402a6bacd1900ac20c0492f61a9cdd6b3b29750fc7f5e299f8058469ef60ff8fb79b86395a30374fbd2490113c1c7112285 + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.3": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee + languageName: node + linkType: hard + +"decode-named-character-reference@npm:^1.0.0": + version: 1.0.2 + resolution: "decode-named-character-reference@npm:1.0.2" + dependencies: + character-entities: "npm:^2.0.0" + checksum: 10c0/66a9fc5d9b5385a2b3675c69ba0d8e893393d64057f7dbbb585265bb4fc05ec513d76943b8e5aac7d8016d20eea4499322cbf4cd6d54b466976b78f3a7587a4c + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"dequal@npm:^2.0.0": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + languageName: node + linkType: hard + +"detect-libc@npm:^2.0.3": + version: 2.0.3 + resolution: "detect-libc@npm:2.0.3" + checksum: 10c0/88095bda8f90220c95f162bf92cad70bd0e424913e655c20578600e35b91edc261af27531cf160a331e185c0ced93944bc7e09939143225f56312d7fd800fdb7 + languageName: node + linkType: hard + +"deterministic-object-hash@npm:^2.0.2": + version: 2.0.2 + resolution: "deterministic-object-hash@npm:2.0.2" + dependencies: + base-64: "npm:^1.0.0" + checksum: 10c0/072010ec12981ba8d6018a6bc540aa66aceb35f922fd5c394d021b76f4489ffc447579dd29ce0f01186c3acb26d0655f3b8c81e302fccae8f2c47f393c7a4294 + languageName: node + linkType: hard + +"devalue@npm:^5.0.0": + version: 5.1.1 + resolution: "devalue@npm:5.1.1" + checksum: 10c0/f6717a856fd54216959abd341cb189e47a9b37d72d8419e055ae77567ff4ed0fb683b1ffb6a71067f645adae5991bffabe6468a3e2385937bff49273e71c1f51 + languageName: node + linkType: hard + +"devlop@npm:^1.0.0, devlop@npm:^1.1.0": + version: 1.1.0 + resolution: "devlop@npm:1.1.0" + dependencies: + dequal: "npm:^2.0.0" + checksum: 10c0/e0928ab8f94c59417a2b8389c45c55ce0a02d9ac7fd74ef62d01ba48060129e1d594501b77de01f3eeafc7cb00773819b0df74d96251cf20b31c5b3071f45c0e + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + languageName: node + linkType: hard + +"diff@npm:^5.2.0": + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 + languageName: node + linkType: hard + +"dlv@npm:^1.1.3": + version: 1.1.3 + resolution: "dlv@npm:1.1.3" + checksum: 10c0/03eb4e769f19a027fd5b43b59e8a05e3fd2100ac239ebb0bf9a745de35d449e2f25cfaf3aa3934664551d72856f4ae8b7822016ce5c42c2d27c18ae79429ec42 + languageName: node + linkType: hard + +"dset@npm:^3.1.3": + version: 3.1.4 + resolution: "dset@npm:3.1.4" + checksum: 10c0/b67bbd28dd8a539e90c15ffb61100eb64ef995c5270a124d4f99bbb53f4d82f55a051b731ba81f3215dd9dce2b4c8d69927dc20b3be1c5fc88bab159467aa438 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.4": + version: 1.5.13 + resolution: "electron-to-chromium@npm:1.5.13" + checksum: 10c0/1d88ac39447e1d718c4296f92fe89836df4688daf2d362d6c49108136795f05a56dd9c950f1c6715e0395fa037c3b5f5ea686c543fdc90e6d74a005877c45022 + languageName: node + linkType: hard + +"emmet@npm:^2.4.3": + version: 2.4.7 + resolution: "emmet@npm:2.4.7" + dependencies: + "@emmetio/abbreviation": "npm:^2.3.3" + "@emmetio/css-abbreviation": "npm:^2.1.8" + checksum: 10c0/d68b2f988f6568555c47f80c9cae0f5e0bcb001cc9c044b4e2e0713f411cb58327d4819720290c67930b692a9b610406968eb04df2164e2a239c881464c04cdd + languageName: node + linkType: hard + +"emoji-regex@npm:^10.3.0": + version: 10.4.0 + resolution: "emoji-regex@npm:10.4.0" + checksum: 10c0/a3fcedfc58bfcce21a05a5f36a529d81e88d602100145fcca3dc6f795e3c8acc4fc18fe773fbf9b6d6e9371205edb3afa2668ec3473fa2aa7fd47d2a9d46482d + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.5.4": + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: 10c0/300a469488c2f22081df1e4c8398c78db92358496e639b0df7f89ac6455462aaf5d8893939087c1a1cbcbf20eed4610c70e0bcb8f3e4b0d80a5d2611c539408c + languageName: node + linkType: hard + +"esbuild@npm:^0.21.3, esbuild@npm:^0.21.5": + version: 0.21.5 + resolution: "esbuild@npm:0.21.5" + dependencies: + "@esbuild/aix-ppc64": "npm:0.21.5" + "@esbuild/android-arm": "npm:0.21.5" + "@esbuild/android-arm64": "npm:0.21.5" + "@esbuild/android-x64": "npm:0.21.5" + "@esbuild/darwin-arm64": "npm:0.21.5" + "@esbuild/darwin-x64": "npm:0.21.5" + "@esbuild/freebsd-arm64": "npm:0.21.5" + "@esbuild/freebsd-x64": "npm:0.21.5" + "@esbuild/linux-arm": "npm:0.21.5" + "@esbuild/linux-arm64": "npm:0.21.5" + "@esbuild/linux-ia32": "npm:0.21.5" + "@esbuild/linux-loong64": "npm:0.21.5" + "@esbuild/linux-mips64el": "npm:0.21.5" + "@esbuild/linux-ppc64": "npm:0.21.5" + "@esbuild/linux-riscv64": "npm:0.21.5" + "@esbuild/linux-s390x": "npm:0.21.5" + "@esbuild/linux-x64": "npm:0.21.5" + "@esbuild/netbsd-x64": "npm:0.21.5" + "@esbuild/openbsd-x64": "npm:0.21.5" + "@esbuild/sunos-x64": "npm:0.21.5" + "@esbuild/win32-arm64": "npm:0.21.5" + "@esbuild/win32-ia32": "npm:0.21.5" + "@esbuild/win32-x64": "npm:0.21.5" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.1.2": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^5.0.0": + version: 5.0.0 + resolution: "escape-string-regexp@npm:5.0.0" + checksum: 10c0/6366f474c6f37a802800a435232395e04e9885919873e382b157ab7e8f0feb8fed71497f84a6f6a81a49aab41815522f5839112bd38026d203aea0c91622df95 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"estree-util-attach-comments@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-attach-comments@npm:3.0.0" + dependencies: + "@types/estree": "npm:^1.0.0" + checksum: 10c0/ee69bb5c45e2ad074725b90ed181c1c934b29d81bce4b0c7761431e83c4c6ab1b223a6a3d6a4fbeb92128bc5d5ee201d5dd36cf1770aa5e16a40b0cf36e8a1f1 + languageName: node + linkType: hard + +"estree-util-build-jsx@npm:^3.0.0": + version: 3.0.1 + resolution: "estree-util-build-jsx@npm:3.0.1" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + devlop: "npm:^1.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + estree-walker: "npm:^3.0.0" + checksum: 10c0/274c119817b8e7caa14a9778f1e497fea56cdd2b01df1a1ed037f843178992d3afe85e0d364d485e1e2e239255763553d1b647b15e4a7ba50851bcb43dc6bf80 + languageName: node + linkType: hard + +"estree-util-is-identifier-name@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-is-identifier-name@npm:3.0.0" + checksum: 10c0/d1881c6ed14bd588ebd508fc90bf2a541811dbb9ca04dec2f39d27dcaa635f85b5ed9bbbe7fc6fb1ddfca68744a5f7c70456b4b7108b6c4c52780631cc787c5b + languageName: node + linkType: hard + +"estree-util-to-js@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-to-js@npm:2.0.0" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + astring: "npm:^1.8.0" + source-map: "npm:^0.7.0" + checksum: 10c0/ac88cb831401ef99e365f92f4af903755d56ae1ce0e0f0fb8ff66e678141f3d529194f0fb15f6c78cd7554c16fda36854df851d58f9e05cfab15bddf7a97cea0 + languageName: node + linkType: hard + +"estree-util-visit@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-visit@npm:2.0.0" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/unist": "npm:^3.0.0" + checksum: 10c0/acda8b03cc8f890d79c7c7361f6c95331ba84b7ccc0c32b49f447fc30206b20002b37ffdfc97b6ad16e6fe065c63ecbae1622492e2b6b4775c15966606217f39 + languageName: node + linkType: hard + +"estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af + languageName: node + linkType: hard + +"estree-walker@npm:^3.0.0, estree-walker@npm:^3.0.3": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": "npm:^1.0.0" + checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d + languageName: node + linkType: hard + +"eventemitter3@npm:^5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 + languageName: node + linkType: hard + +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^8.0.1" + human-signals: "npm:^5.0.0" + is-stream: "npm:^3.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^5.1.0" + onetime: "npm:^6.0.0" + signal-exit: "npm:^4.1.0" + strip-final-newline: "npm:^3.0.0" + checksum: 10c0/2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + languageName: node + linkType: hard + +"extend-shallow@npm:^2.0.1": + version: 2.0.1 + resolution: "extend-shallow@npm:2.0.1" + dependencies: + is-extendable: "npm:^0.1.0" + checksum: 10c0/ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9 + languageName: node + linkType: hard + +"extend@npm:^3.0.0": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.12, fast-glob@npm:^3.3.1, fast-glob@npm:^3.3.2": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 + languageName: node + linkType: hard + +"fast-uri@npm:^3.0.1": + version: 3.0.1 + resolution: "fast-uri@npm:3.0.1" + checksum: 10c0/3cd46d6006083b14ca61ffe9a05b8eef75ef87e9574b6f68f2e17ecf4daa7aaadeff44e3f0f7a0ef4e0f7e7c20fc07beec49ff14dc72d0b500f00386592f2d10 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"find-up-simple@npm:^1.0.0": + version: 1.0.0 + resolution: "find-up-simple@npm:1.0.0" + checksum: 10c0/de1ad5e55c8c162f5600fe3297bb55a3da5cd9cb8c6755e463ec1d52c4c15a84e312a68397fb5962d13263b3dbd4ea294668c465ccacc41291d7cc97588769f9 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + +"find-yarn-workspace-root2@npm:1.2.16": + version: 1.2.16 + resolution: "find-yarn-workspace-root2@npm:1.2.16" + dependencies: + micromatch: "npm:^4.0.2" + pkg-dir: "npm:^4.2.0" + checksum: 10c0/d576067c7823de517d71831eafb5f6dc60554335c2d14445708f2698551b234f89c976a7f259d9355a44e417c49e7a93b369d0474579af02bbe2498f780c92d3 + languageName: node + linkType: hard + +"flattie@npm:^1.1.1": + version: 1.1.1 + resolution: "flattie@npm:1.1.1" + checksum: 10c0/a8f8242c7af126cb2f1aa4a067af338fce609fc4c4df183c626fcc70a46c1878ce4aa88cd0dc8ef8f583ad4e7088a3b11ebeb6a62c9c97d75c0b1b0f08182ee3 + languageName: node + linkType: hard + +"focus-trap@npm:7.6.0": + version: 7.6.0 + resolution: "focus-trap@npm:7.6.0" + dependencies: + tabbable: "npm:^6.2.0" + checksum: 10c0/5d1cdefdc11ae97f2c7bcced5c0facfa9794e1ec7a9d8b6547f3f03b51de0423ab572666371f6632b2165613470ec8245daea836160319d52d7a6434e6847a23 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/028f1d41000553fcfa6c4bb5c372963bf3d9bf0b1f25a87d1a6253014343fb69dfb1b42d9625d7cf44c8ba429940f3d0ff718b62105d4d4a4f6ef8ca0a53faa2 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-east-asian-width@npm:^1.0.0": + version: 1.2.0 + resolution: "get-east-asian-width@npm:1.2.0" + checksum: 10c0/914b1e217cf38436c24b4c60b4c45289e39a45bf9e65ef9fd343c2815a1a02b8a0215aeec8bf9c07c516089004b6e3826332481f40a09529fcadbf6e579f286b + languageName: node + linkType: hard + +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 10c0/5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290 + languageName: node + linkType: hard + +"github-slugger@npm:^2.0.0": + version: 2.0.0 + resolution: "github-slugger@npm:2.0.0" + checksum: 10c0/21b912b6b1e48f1e5a50b2292b48df0ff6abeeb0691b161b3d93d84f4ae6b1acd6ae23702e914af7ea5d441c096453cf0f621b72d57893946618d21dd1a1c486 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"gray-matter@npm:^4.0.3": + version: 4.0.3 + resolution: "gray-matter@npm:4.0.3" + dependencies: + js-yaml: "npm:^3.13.1" + kind-of: "npm:^6.0.2" + section-matter: "npm:^1.0.0" + strip-bom-string: "npm:^1.0.0" + checksum: 10c0/e38489906dad4f162ca01e0dcbdbed96d1a53740cef446b9bf76d80bec66fa799af07776a18077aee642346c5e1365ed95e4c91854a12bf40ba0d4fb43a625a6 + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"hast-util-from-html@npm:^2.0.0, hast-util-from-html@npm:^2.0.1": + version: 2.0.3 + resolution: "hast-util-from-html@npm:2.0.3" + dependencies: + "@types/hast": "npm:^3.0.0" + devlop: "npm:^1.1.0" + hast-util-from-parse5: "npm:^8.0.0" + parse5: "npm:^7.0.0" + vfile: "npm:^6.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/993ef707c1a12474c8d4094fc9706a72826c660a7e308ea54c50ad893353d32e139b7cbc67510c2e82feac572b320e3b05aeb13d0f9c6302d61261f337b46764 + languageName: node + linkType: hard + +"hast-util-from-parse5@npm:^7.0.0": + version: 7.1.2 + resolution: "hast-util-from-parse5@npm:7.1.2" + dependencies: + "@types/hast": "npm:^2.0.0" + "@types/unist": "npm:^2.0.0" + hastscript: "npm:^7.0.0" + property-information: "npm:^6.0.0" + vfile: "npm:^5.0.0" + vfile-location: "npm:^4.0.0" + web-namespaces: "npm:^2.0.0" + checksum: 10c0/c1002816d0235ff0a1e888d71c191d3ecfbaba510aaef86eec00edcba8803a3e0ad901bb0e5430a9d2aee2d52c31aabacae8282394dc519c333017a46c68d1c8 + languageName: node + linkType: hard + +"hast-util-from-parse5@npm:^8.0.0": + version: 8.0.1 + resolution: "hast-util-from-parse5@npm:8.0.1" + dependencies: + "@types/hast": "npm:^3.0.0" + "@types/unist": "npm:^3.0.0" + devlop: "npm:^1.0.0" + hastscript: "npm:^8.0.0" + property-information: "npm:^6.0.0" + vfile: "npm:^6.0.0" + vfile-location: "npm:^5.0.0" + web-namespaces: "npm:^2.0.0" + checksum: 10c0/4a30bb885cff1f0e023c429ae3ece73fe4b03386f07234bf23f5555ca087c2573ff4e551035b417ed7615bde559f394cdaf1db2b91c3b7f0575f3563cd238969 + languageName: node + linkType: hard + +"hast-util-heading-rank@npm:^2.1.1": + version: 2.1.1 + resolution: "hast-util-heading-rank@npm:2.1.1" + dependencies: + "@types/hast": "npm:^2.0.0" + checksum: 10c0/e1451ae71ea4b524aae1e772063dabb44c13d812de198d6a2841d5d5425c64414d0a81df745bde00f1393b4cbc6990b91b5614f4f895183120ee418fa50ed2c7 + languageName: node + linkType: hard + +"hast-util-heading@npm:^2.0.1": + version: 2.0.1 + resolution: "hast-util-heading@npm:2.0.1" + dependencies: + "@types/hast": "npm:^2.0.0" + hast-util-is-element: "npm:^2.0.0" + checksum: 10c0/dcbc57ce85caa47af95166a4d3d28413c88a016999c35d1b64b456e07cff6030afe9d0ad7f848978e486e6ce420e664e4d4dd33c3f64edbfaff6746841ae80b5 + languageName: node + linkType: hard + +"hast-util-is-element@npm:^2.0.0": + version: 2.1.3 + resolution: "hast-util-is-element@npm:2.1.3" + dependencies: + "@types/hast": "npm:^2.0.0" + "@types/unist": "npm:^2.0.0" + checksum: 10c0/a1f22d96a24aba39e85fc52b4f7248d66fd2fd60c0fcf9cdb0644aad92a315b22eeffe434f63791077a69196e30af629d80a04ddcedc344ca88c021bc8af19c7 + languageName: node + linkType: hard + +"hast-util-is-element@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-is-element@npm:3.0.0" + dependencies: + "@types/hast": "npm:^3.0.0" + checksum: 10c0/f5361e4c9859c587ca8eb0d8343492f3077ccaa0f58a44cd09f35d5038f94d65152288dcd0c19336ef2c9491ec4d4e45fde2176b05293437021570aa0bc3613b + languageName: node + linkType: hard + +"hast-util-parse-selector@npm:^3.0.0": + version: 3.1.1 + resolution: "hast-util-parse-selector@npm:3.1.1" + dependencies: + "@types/hast": "npm:^2.0.0" + checksum: 10c0/34ac1707a477fd9764e328087163f1f21857bdb0f8d425bf41f6def7baf840e50e4bca2eb03072e3da4e39856de28893c4b688dcba0cc305160d53afcece4df4 + languageName: node + linkType: hard + +"hast-util-parse-selector@npm:^4.0.0": + version: 4.0.0 + resolution: "hast-util-parse-selector@npm:4.0.0" + dependencies: + "@types/hast": "npm:^3.0.0" + checksum: 10c0/5e98168cb44470dc274aabf1a28317e4feb09b1eaf7a48bbaa8c1de1b43a89cd195cb1284e535698e658e3ec26ad91bc5e52c9563c36feb75abbc68aaf68fb9f + languageName: node + linkType: hard + +"hast-util-raw@npm:^7.0.0": + version: 7.2.3 + resolution: "hast-util-raw@npm:7.2.3" + dependencies: + "@types/hast": "npm:^2.0.0" + "@types/parse5": "npm:^6.0.0" + hast-util-from-parse5: "npm:^7.0.0" + hast-util-to-parse5: "npm:^7.0.0" + html-void-elements: "npm:^2.0.0" + parse5: "npm:^6.0.0" + unist-util-position: "npm:^4.0.0" + unist-util-visit: "npm:^4.0.0" + vfile: "npm:^5.0.0" + web-namespaces: "npm:^2.0.0" + zwitch: "npm:^2.0.0" + checksum: 10c0/c7bf994938cbc1acaaeb337f99773773b51ad77695b559c6352cba5c35b26610e6de2936b5086ef8bc53b436dd8032a3860e7357f28b6bb0365f751919745398 + languageName: node + linkType: hard + +"hast-util-raw@npm:^9.0.0": + version: 9.0.4 + resolution: "hast-util-raw@npm:9.0.4" + dependencies: + "@types/hast": "npm:^3.0.0" + "@types/unist": "npm:^3.0.0" + "@ungap/structured-clone": "npm:^1.0.0" + hast-util-from-parse5: "npm:^8.0.0" + hast-util-to-parse5: "npm:^8.0.0" + html-void-elements: "npm:^3.0.0" + mdast-util-to-hast: "npm:^13.0.0" + parse5: "npm:^7.0.0" + unist-util-position: "npm:^5.0.0" + unist-util-visit: "npm:^5.0.0" + vfile: "npm:^6.0.0" + web-namespaces: "npm:^2.0.0" + zwitch: "npm:^2.0.0" + checksum: 10c0/03d0fe7ba8bd75c9ce81f829650b19b78917bbe31db70d36bf6f136842496c3474e3bb1841f2d30dafe1f6b561a89a524185492b9a93d40b131000743c0d7998 + languageName: node + linkType: hard + +"hast-util-to-estree@npm:^3.0.0": + version: 3.1.0 + resolution: "hast-util-to-estree@npm:3.1.0" + dependencies: + "@types/estree": "npm:^1.0.0" + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + comma-separated-tokens: "npm:^2.0.0" + devlop: "npm:^1.0.0" + estree-util-attach-comments: "npm:^3.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + hast-util-whitespace: "npm:^3.0.0" + mdast-util-mdx-expression: "npm:^2.0.0" + mdast-util-mdx-jsx: "npm:^3.0.0" + mdast-util-mdxjs-esm: "npm:^2.0.0" + property-information: "npm:^6.0.0" + space-separated-tokens: "npm:^2.0.0" + style-to-object: "npm:^0.4.0" + unist-util-position: "npm:^5.0.0" + zwitch: "npm:^2.0.0" + checksum: 10c0/9003a8bac26a4580d5fc9f2a271d17330dd653266425e9f5539feecd2f7538868d6630a18f70698b8b804bf14c306418a3f4ab3119bb4692aca78b0c08b1291e + languageName: node + linkType: hard + +"hast-util-to-html@npm:^8.0.0": + version: 8.0.4 + resolution: "hast-util-to-html@npm:8.0.4" + dependencies: + "@types/hast": "npm:^2.0.0" + "@types/unist": "npm:^2.0.0" + ccount: "npm:^2.0.0" + comma-separated-tokens: "npm:^2.0.0" + hast-util-raw: "npm:^7.0.0" + hast-util-whitespace: "npm:^2.0.0" + html-void-elements: "npm:^2.0.0" + property-information: "npm:^6.0.0" + space-separated-tokens: "npm:^2.0.0" + stringify-entities: "npm:^4.0.0" + zwitch: "npm:^2.0.4" + checksum: 10c0/a9dd87cdd710dcd151d144152ec6d2c6d20377b8258b31776e1387868fab8e3e0552d237c337d84dc94407b935a47e2e344b1cf8bd3ce16541c934004879c33f + languageName: node + linkType: hard + +"hast-util-to-html@npm:^9.0.0, hast-util-to-html@npm:^9.0.1": + version: 9.0.3 + resolution: "hast-util-to-html@npm:9.0.3" + dependencies: + "@types/hast": "npm:^3.0.0" + "@types/unist": "npm:^3.0.0" + ccount: "npm:^2.0.0" + comma-separated-tokens: "npm:^2.0.0" + hast-util-whitespace: "npm:^3.0.0" + html-void-elements: "npm:^3.0.0" + mdast-util-to-hast: "npm:^13.0.0" + property-information: "npm:^6.0.0" + space-separated-tokens: "npm:^2.0.0" + stringify-entities: "npm:^4.0.0" + zwitch: "npm:^2.0.4" + checksum: 10c0/af938a03034727f6c944d3855732d72f71a3bcd920d36b9ba3e083df2217faf81713740934db64673aca69d76b60abe80052e47c0702323fd0bd5dce03b67b8d + languageName: node + linkType: hard + +"hast-util-to-jsx-runtime@npm:^2.0.0": + version: 2.3.0 + resolution: "hast-util-to-jsx-runtime@npm:2.3.0" + dependencies: + "@types/estree": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/unist": "npm:^3.0.0" + comma-separated-tokens: "npm:^2.0.0" + devlop: "npm:^1.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + hast-util-whitespace: "npm:^3.0.0" + mdast-util-mdx-expression: "npm:^2.0.0" + mdast-util-mdx-jsx: "npm:^3.0.0" + mdast-util-mdxjs-esm: "npm:^2.0.0" + property-information: "npm:^6.0.0" + space-separated-tokens: "npm:^2.0.0" + style-to-object: "npm:^1.0.0" + unist-util-position: "npm:^5.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/df7a36dcc792df7667a54438f044b721753d5e09692606d23bf7336bf4651670111fe7728eebbf9f0e4f96ab3346a05bb23037fa1b1d115482b3bc5bde8b6912 + languageName: node + linkType: hard + +"hast-util-to-parse5@npm:^7.0.0": + version: 7.1.0 + resolution: "hast-util-to-parse5@npm:7.1.0" + dependencies: + "@types/hast": "npm:^2.0.0" + comma-separated-tokens: "npm:^2.0.0" + property-information: "npm:^6.0.0" + space-separated-tokens: "npm:^2.0.0" + web-namespaces: "npm:^2.0.0" + zwitch: "npm:^2.0.0" + checksum: 10c0/2a96302b8f25fa2d5b657a94bb20a3d9a1a81e66c2f81582a242c5634dd850e3bd95313a7471eef8282b597f2129551fef5a1631f4ce14c41aab646281b339a0 + languageName: node + linkType: hard + +"hast-util-to-parse5@npm:^8.0.0": + version: 8.0.0 + resolution: "hast-util-to-parse5@npm:8.0.0" + dependencies: + "@types/hast": "npm:^3.0.0" + comma-separated-tokens: "npm:^2.0.0" + devlop: "npm:^1.0.0" + property-information: "npm:^6.0.0" + space-separated-tokens: "npm:^2.0.0" + web-namespaces: "npm:^2.0.0" + zwitch: "npm:^2.0.0" + checksum: 10c0/3c0c7fba026e0c4be4675daf7277f9ff22ae6da801435f1b7104f7740de5422576f1c025023c7b3df1d0a161e13a04c6ab8f98ada96eb50adb287b537849a2bd + languageName: node + linkType: hard + +"hast-util-to-text@npm:^4.0.2": + version: 4.0.2 + resolution: "hast-util-to-text@npm:4.0.2" + dependencies: + "@types/hast": "npm:^3.0.0" + "@types/unist": "npm:^3.0.0" + hast-util-is-element: "npm:^3.0.0" + unist-util-find-after: "npm:^5.0.0" + checksum: 10c0/93ecc10e68fe5391c6e634140eb330942e71dea2724c8e0c647c73ed74a8ec930a4b77043b5081284808c96f73f2bee64ee416038ece75a63a467e8d14f09946 + languageName: node + linkType: hard + +"hast-util-whitespace@npm:^2.0.0": + version: 2.0.1 + resolution: "hast-util-whitespace@npm:2.0.1" + checksum: 10c0/dcf6ebab091c802ffa7bb3112305c7631c15adb6c07a258f5528aefbddf82b4e162c8310ef426c48dc1dc623982cc33920e6dde5a50015d307f2778dcf6c2487 + languageName: node + linkType: hard + +"hast-util-whitespace@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-whitespace@npm:3.0.0" + dependencies: + "@types/hast": "npm:^3.0.0" + checksum: 10c0/b898bc9fe27884b272580d15260b6bbdabe239973a147e97fa98c45fa0ffec967a481aaa42291ec34fb56530dc2d484d473d7e2bae79f39c83f3762307edfea8 + languageName: node + linkType: hard + +"hastscript@npm:^7.0.0": + version: 7.2.0 + resolution: "hastscript@npm:7.2.0" + dependencies: + "@types/hast": "npm:^2.0.0" + comma-separated-tokens: "npm:^2.0.0" + hast-util-parse-selector: "npm:^3.0.0" + property-information: "npm:^6.0.0" + space-separated-tokens: "npm:^2.0.0" + checksum: 10c0/579912b03ff4a5b19eb609df7403c6dba2505ef1a1e2bc47cbf467cbd7cffcd51df40e74d882de1ccdda40aaf18487f82619eb9cb9f2077cba778017e95e868e + languageName: node + linkType: hard + +"hastscript@npm:^8.0.0": + version: 8.0.0 + resolution: "hastscript@npm:8.0.0" + dependencies: + "@types/hast": "npm:^3.0.0" + comma-separated-tokens: "npm:^2.0.0" + hast-util-parse-selector: "npm:^4.0.0" + property-information: "npm:^6.0.0" + space-separated-tokens: "npm:^2.0.0" + checksum: 10c0/f0b54bbdd710854b71c0f044612db0fe1b5e4d74fa2001633dc8c535c26033269f04f536f9fd5b03f234de1111808f9e230e9d19493bf919432bb24d541719e0 + languageName: node + linkType: hard + +"html-encoding-sniffer@npm:^4.0.0": + version: 4.0.0 + resolution: "html-encoding-sniffer@npm:4.0.0" + dependencies: + whatwg-encoding: "npm:^3.1.1" + checksum: 10c0/523398055dc61ac9b34718a719cb4aa691e4166f29187e211e1607de63dc25ac7af52ca7c9aead0c4b3c0415ffecb17326396e1202e2e86ff4bca4c0ee4c6140 + languageName: node + linkType: hard + +"html-entities@npm:2.3.3": + version: 2.3.3 + resolution: "html-entities@npm:2.3.3" + checksum: 10c0/a76cbdbb276d9499dc7ef800d23f3964254e659f04db51c8d1ff6abfe21992c69b7217ecfd6e3c16ff0aa027ba4261d77f0dba71f55639c16a325bbdf69c535d + languageName: node + linkType: hard + +"html-escaper@npm:^3.0.3": + version: 3.0.3 + resolution: "html-escaper@npm:3.0.3" + checksum: 10c0/a042fa4139127ff7546513e90ea39cc9161a1938ce90122dbc4260d4b7252c9aa8452f4509c0c2889901b8ae9a8699179150f1f99d3f80bcf7317573c5f08f4e + languageName: node + linkType: hard + +"html-void-elements@npm:^2.0.0": + version: 2.0.1 + resolution: "html-void-elements@npm:2.0.1" + checksum: 10c0/1079c9e9fdb3b6a2481f2a282098a0183f3d45bf2b9d76c7dfc1671ee1857d7bacdd04fd8c6e2418f5ff550c30cabf97a010fe31ec402d0c89189807b48e6d79 + languageName: node + linkType: hard + +"html-void-elements@npm:^3.0.0": + version: 3.0.0 + resolution: "html-void-elements@npm:3.0.0" + checksum: 10c0/a8b9ec5db23b7c8053876dad73a0336183e6162bf6d2677376d8b38d654fdc59ba74fdd12f8812688f7db6fad451210c91b300e472afc0909224e0a44c8610d2 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0, http-proxy-agent@npm:^7.0.2": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.5": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/2490e3acec397abeb88807db52cac59102d5ed758feee6df6112ab3ccd8325e8a1ce8bce6f4b66e5470eca102d31e425ace904242e4fa28dbe0c59c4bafa7b2c + languageName: node + linkType: hard + +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 10c0/5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82 + languageName: node + linkType: hard + +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"import-meta-resolve@npm:^4.1.0": + version: 4.1.0 + resolution: "import-meta-resolve@npm:4.1.0" + checksum: 10c0/42f3284b0460635ddf105c4ad99c6716099c3ce76702602290ad5cbbcd295700cbc04e4bdf47bacf9e3f1a4cec2e1ff887dabc20458bef398f9de22ddff45ef5 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"inline-style-parser@npm:0.1.1": + version: 0.1.1 + resolution: "inline-style-parser@npm:0.1.1" + checksum: 10c0/08832a533f51a1e17619f2eabf2f5ec5e956d6dcba1896351285c65df022c9420de61d73256e1dca8015a52abf96cc84ddc3b73b898b22de6589d3962b5e501b + languageName: node + linkType: hard + +"inline-style-parser@npm:0.2.3": + version: 0.2.3 + resolution: "inline-style-parser@npm:0.2.3" + checksum: 10c0/21b46d39a39c8aeaa738346650469388e8a412dd276ab75aa3d85b1883311e89c86a1fdbb8c2f1958f4c979bae74067f6ba0385455b125faf4fa77e1dbb94799 + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"is-alphabetical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphabetical@npm:2.0.1" + checksum: 10c0/932367456f17237533fd1fc9fe179df77957271020b83ea31da50e5cc472d35ef6b5fb8147453274ffd251134472ce24eb6f8d8398d96dee98237cdb81a6c9a7 + languageName: node + linkType: hard + +"is-alphanumerical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphanumerical@npm:2.0.1" + dependencies: + is-alphabetical: "npm:^2.0.0" + is-decimal: "npm:^2.0.0" + checksum: 10c0/4b35c42b18e40d41378293f82a3ecd9de77049b476f748db5697c297f686e1e05b072a6aaae2d16f54d2a57f85b00cbbe755c75f6d583d1c77d6657bd0feb5a2 + languageName: node + linkType: hard + +"is-arrayish@npm:^0.3.1": + version: 0.3.2 + resolution: "is-arrayish@npm:0.3.2" + checksum: 10c0/f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-buffer@npm:^2.0.0": + version: 2.0.5 + resolution: "is-buffer@npm:2.0.5" + checksum: 10c0/e603f6fced83cf94c53399cff3bda1a9f08e391b872b64a73793b0928be3e5f047f2bcece230edb7632eaea2acdbfcb56c23b33d8a20c820023b230f1485679a + languageName: node + linkType: hard + +"is-decimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-decimal@npm:2.0.1" + checksum: 10c0/8085dd66f7d82f9de818fba48b9e9c0429cb4291824e6c5f2622e96b9680b54a07a624cfc663b24148b8e853c62a1c987cfe8b0b5a13f5156991afaf6736e334 + languageName: node + linkType: hard + +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 + languageName: node + linkType: hard + +"is-extendable@npm:^0.1.0": + version: 0.1.1 + resolution: "is-extendable@npm:0.1.1" + checksum: 10c0/dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-hexadecimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-hexadecimal@npm:2.0.1" + checksum: 10c0/3eb60fe2f1e2bbc760b927dcad4d51eaa0c60138cf7fc671803f66353ad90c301605b502c7ea4c6bb0548e1c7e79dfd37b73b632652e3b76030bba603a7e9626 + languageName: node + linkType: hard + +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: "npm:^3.0.0" + bin: + is-inside-container: cli.js + checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd + languageName: node + linkType: hard + +"is-interactive@npm:^2.0.0": + version: 2.0.0 + resolution: "is-interactive@npm:2.0.0" + checksum: 10c0/801c8f6064f85199dc6bf99b5dd98db3282e930c3bc197b32f2c5b89313bb578a07d1b8a01365c4348c2927229234f3681eb861b9c2c92bee72ff397390fa600 + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-plain-obj@npm:^4.0.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e + languageName: node + linkType: hard + +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: 10c0/b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 + languageName: node + linkType: hard + +"is-reference@npm:^3.0.0": + version: 3.0.2 + resolution: "is-reference@npm:3.0.2" + dependencies: + "@types/estree": "npm:*" + checksum: 10c0/652d31b405e8e8269071cee78fe874b072745012eba202c6dc86880fd603a65ae043e3160990ab4a0a4b33567cbf662eecf3bc6b3c2c1550e6c2b6cf885ce5aa + languageName: node + linkType: hard + +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 10c0/eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^1.3.0": + version: 1.3.0 + resolution: "is-unicode-supported@npm:1.3.0" + checksum: 10c0/b8674ea95d869f6faabddc6a484767207058b91aea0250803cbf1221345cb0c56f466d4ecea375dc77f6633d248d33c47bd296fb8f4cdba0b4edba8917e83d8a + languageName: node + linkType: hard + +"is-unicode-supported@npm:^2.0.0": + version: 2.1.0 + resolution: "is-unicode-supported@npm:2.1.0" + checksum: 10c0/a0f53e9a7c1fdbcf2d2ef6e40d4736fdffff1c9f8944c75e15425118ff3610172c87bf7bc6c34d3903b04be59790bb2212ddbe21ee65b5a97030fc50370545a5 + languageName: node + linkType: hard + +"is-what@npm:^4.1.8": + version: 4.1.16 + resolution: "is-what@npm:4.1.16" + checksum: 10c0/611f1947776826dcf85b57cfb7bd3b3ea6f4b94a9c2f551d4a53f653cf0cb9d1e6518846648256d46ee6c91d114b6d09d2ac8a07306f7430c5900f87466aae5b + languageName: node + linkType: hard + +"is-wsl@npm:^3.0.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: "npm:^1.0.0" + checksum: 10c0/d3317c11995690a32c362100225e22ba793678fe8732660c6de511ae71a0ff05b06980cf21f98a6bf40d7be0e9e9506f859abe00a1118287d63e53d0a3d06947 + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.0, js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jsdom@npm:^25.0.0": + version: 25.0.1 + resolution: "jsdom@npm:25.0.1" + dependencies: + cssstyle: "npm:^4.1.0" + data-urls: "npm:^5.0.0" + decimal.js: "npm:^10.4.3" + form-data: "npm:^4.0.0" + html-encoding-sniffer: "npm:^4.0.0" + http-proxy-agent: "npm:^7.0.2" + https-proxy-agent: "npm:^7.0.5" + is-potential-custom-element-name: "npm:^1.0.1" + nwsapi: "npm:^2.2.12" + parse5: "npm:^7.1.2" + rrweb-cssom: "npm:^0.7.1" + saxes: "npm:^6.0.0" + symbol-tree: "npm:^3.2.4" + tough-cookie: "npm:^5.0.0" + w3c-xmlserializer: "npm:^5.0.0" + webidl-conversions: "npm:^7.0.0" + whatwg-encoding: "npm:^3.1.1" + whatwg-mimetype: "npm:^4.0.0" + whatwg-url: "npm:^14.0.0" + ws: "npm:^8.18.0" + xml-name-validator: "npm:^5.0.0" + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/6bda32a6dfe4e37a30568bf51136bdb3ba9c0b72aadd6356280404275a34c9e097c8c25b5eb3c742e602623741e172da977ff456684befd77c9042ed9bf8c2b4 + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 + languageName: node + linkType: hard + +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsonc-parser@npm:^2.3.0": + version: 2.3.1 + resolution: "jsonc-parser@npm:2.3.1" + checksum: 10c0/b5e823612f6518a4d35e65d3c642e87b994c52a71b6d83d306d59f9b57003a1f6c64659808f0f1c3448991c28916d56faca45222f31ddb1a32effecdef0f0485 + languageName: node + linkType: hard + +"jsonc-parser@npm:^3.0.0": + version: 3.3.1 + resolution: "jsonc-parser@npm:3.3.1" + checksum: 10c0/269c3ae0a0e4f907a914bf334306c384aabb9929bd8c99f909275ebd5c2d3bc70b9bcd119ad794f339dec9f24b6a4ee9cd5a8ab2e6435e730ad4075388fc2ab6 + languageName: node + linkType: hard + +"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + languageName: node + linkType: hard + +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b + languageName: node + linkType: hard + +"kleur@npm:^4.1.5": + version: 4.1.5 + resolution: "kleur@npm:4.1.5" + checksum: 10c0/e9de6cb49657b6fa70ba2d1448fd3d691a5c4370d8f7bbf1c2f64c24d461270f2117e1b0afe8cb3114f13bbd8e51de158c2a224953960331904e636a5e4c0f2a + languageName: node + linkType: hard + +"klona@npm:2.0.6": + version: 2.0.6 + resolution: "klona@npm:2.0.6" + checksum: 10c0/94eed2c6c2ce99f409df9186a96340558897b3e62a85afdc1ee39103954d2ebe1c1c4e9fe2b0952771771fa96d70055ede8b27962a7021406374fdb695fd4d01 + languageName: node + linkType: hard + +"load-yaml-file@npm:^0.2.0": + version: 0.2.0 + resolution: "load-yaml-file@npm:0.2.0" + dependencies: + graceful-fs: "npm:^4.1.5" + js-yaml: "npm:^3.13.0" + pify: "npm:^4.0.1" + strip-bom: "npm:^3.0.0" + checksum: 10c0/e00ed43048c0648dfef7639129b6d7e5c2272bc36d2a50dd983dd495f3341a02cd2c40765afa01345f798d0d894e5ba53212449933e72ddfa4d3f7a48f822d2f + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + +"lodash@npm:4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"log-symbols@npm:^6.0.0": + version: 6.0.0 + resolution: "log-symbols@npm:6.0.0" + dependencies: + chalk: "npm:^5.3.0" + is-unicode-supported: "npm:^1.3.0" + checksum: 10c0/36636cacedba8f067d2deb4aad44e91a89d9efb3ead27e1846e7b82c9a10ea2e3a7bd6ce28a7ca616bebc60954ff25c67b0f92d20a6a746bb3cc52c3701891f6 + languageName: node + linkType: hard + +"longest-streak@npm:^3.0.0": + version: 3.1.0 + resolution: "longest-streak@npm:3.1.0" + checksum: 10c0/7c2f02d0454b52834d1bcedef79c557bd295ee71fdabb02d041ff3aa9da48a90b5df7c0409156dedbc4df9b65da18742652aaea4759d6ece01f08971af6a7eaa + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"magic-string@npm:^0.30.11": + version: 0.30.11 + resolution: "magic-string@npm:0.30.11" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.0" + checksum: 10c0/b9eb370773d0bd90ca11a848753409d8e5309b1ad56d2a1aa49d6649da710a6d2fe7237ad1a643c5a5d3800de2b9946ed9690acdfc00e6cc1aeafff3ab1752c4 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" + dependencies: + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + proc-log: "npm:^4.2.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 10c0/df5f4dbb6d98153b751bccf4dc4cc500de85a96a9331db9805596c46aa9f99d9555983954e6c1266d9f981ae37a9e4647f42b9a4bb5466f867f4012e582c9e7e + languageName: node + linkType: hard + +"markdown-extensions@npm:^2.0.0": + version: 2.0.0 + resolution: "markdown-extensions@npm:2.0.0" + checksum: 10c0/406139da2aa0d5ebad86195c8e8c02412f873c452b4c087ae7bc767af37956141be449998223bb379eea179b5fd38dfa610602b6f29c22ddab5d51e627a7e41d + languageName: node + linkType: hard + +"markdown-table@npm:^3.0.0": + version: 3.0.3 + resolution: "markdown-table@npm:3.0.3" + checksum: 10c0/47433a3f31e4637a184e38e873ab1d2fadfb0106a683d466fec329e99a2d8dfa09f091fa42202c6f13ec94aef0199f449a684b28042c636f2edbc1b7e1811dcd + languageName: node + linkType: hard + +"marked-alert@npm:^2.0.2": + version: 2.1.0 + resolution: "marked-alert@npm:2.1.0" + peerDependencies: + marked: ">=7.0.0" + checksum: 10c0/36f684c30672f39c819dd7c225dc9841635da1df94cf0724ae84c468044fec1c9d06d55e6f6bb565992331e5ce1fd8dcf119c3ed7897b927fac4f4e884d51816 + languageName: node + linkType: hard + +"marked@npm:^14.1.0": + version: 14.1.2 + resolution: "marked@npm:14.1.2" + bin: + marked: bin/marked.js + checksum: 10c0/fb636a97a2f11acf4cca092836020281ff3bc573f3295b4f4639135a6188e4815b910ec8572eb5686e25580c9c383daf605b4a00fcb5e5626e5c65914755e4bd + languageName: node + linkType: hard + +"mdast-util-definitions@npm:^6.0.0": + version: 6.0.0 + resolution: "mdast-util-definitions@npm:6.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + unist-util-visit: "npm:^5.0.0" + checksum: 10c0/a2e0e51122a3eff4f35379de2c50ee3d8a89bea58488a390b1b40ada95727eb769f87d4bc885e5935d61820d19e0567bc047876db302a2139f3a29668b612b80 + languageName: node + linkType: hard + +"mdast-util-find-and-replace@npm:^3.0.0": + version: 3.0.1 + resolution: "mdast-util-find-and-replace@npm:3.0.1" + dependencies: + "@types/mdast": "npm:^4.0.0" + escape-string-regexp: "npm:^5.0.0" + unist-util-is: "npm:^6.0.0" + unist-util-visit-parents: "npm:^6.0.0" + checksum: 10c0/1faca98c4ee10a919f23b8cc6d818e5bb6953216a71dfd35f51066ed5d51ef86e5063b43dcfdc6061cd946e016a9f0d44a1dccadd58452cf4ed14e39377f00cb + languageName: node + linkType: hard + +"mdast-util-from-markdown@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-from-markdown@npm:2.0.1" + dependencies: + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + decode-named-character-reference: "npm:^1.0.0" + devlop: "npm:^1.0.0" + mdast-util-to-string: "npm:^4.0.0" + micromark: "npm:^4.0.0" + micromark-util-decode-numeric-character-reference: "npm:^2.0.0" + micromark-util-decode-string: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unist-util-stringify-position: "npm:^4.0.0" + checksum: 10c0/496596bc6419200ff6258531a0ebcaee576a5c169695f5aa296a79a85f2a221bb9247d565827c709a7c2acfb56ae3c3754bf483d86206617bd299a9658c8121c + languageName: node + linkType: hard + +"mdast-util-gfm-autolink-literal@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1" + dependencies: + "@types/mdast": "npm:^4.0.0" + ccount: "npm:^2.0.0" + devlop: "npm:^1.0.0" + mdast-util-find-and-replace: "npm:^3.0.0" + micromark-util-character: "npm:^2.0.0" + checksum: 10c0/963cd22bd42aebdec7bdd0a527c9494d024d1ad0739c43dc040fee35bdfb5e29c22564330a7418a72b5eab51d47a6eff32bc0255ef3ccb5cebfe8970e91b81b6 + languageName: node + linkType: hard + +"mdast-util-gfm-footnote@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-footnote@npm:2.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.1.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + checksum: 10c0/c673b22bea24740235e74cfd66765b41a2fa540334f7043fa934b94938b06b7d3c93f2d3b33671910c5492b922c0cc98be833be3b04cfed540e0679650a6d2de + languageName: node + linkType: hard + +"mdast-util-gfm-strikethrough@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-strikethrough@npm:2.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/b053e93d62c7545019bd914271ea9e5667ad3b3b57d16dbf68e56fea39a7e19b4a345e781312714eb3d43fdd069ff7ee22a3ca7f6149dfa774554f19ce3ac056 + languageName: node + linkType: hard + +"mdast-util-gfm-table@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-table@npm:2.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + markdown-table: "npm:^3.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/128af47c503a53bd1c79f20642561e54a510ad5e2db1e418d28fefaf1294ab839e6c838e341aef5d7e404f9170b9ca3d1d89605f234efafde93ee51174a6e31e + languageName: node + linkType: hard + +"mdast-util-gfm-task-list-item@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-gfm-task-list-item@npm:2.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/258d725288482b636c0a376c296431390c14b4f29588675297cb6580a8598ed311fc73ebc312acfca12cc8546f07a3a285a53a3b082712e2cbf5c190d677d834 + languageName: node + linkType: hard + +"mdast-util-gfm@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-gfm@npm:3.0.0" + dependencies: + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-gfm-autolink-literal: "npm:^2.0.0" + mdast-util-gfm-footnote: "npm:^2.0.0" + mdast-util-gfm-strikethrough: "npm:^2.0.0" + mdast-util-gfm-table: "npm:^2.0.0" + mdast-util-gfm-task-list-item: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/91596fe9bf3e4a0c546d0c57f88106c17956d9afbe88ceb08308e4da2388aff64489d649ddad599caecfdf755fc3ae4c9b82c219b85281bc0586b67599881fca + languageName: node + linkType: hard + +"mdast-util-mdx-expression@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-mdx-expression@npm:2.0.0" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/512848cbc44b9dc7cffc1bb3f95f7e67f0d6562870e56a67d25647f475d411e136b915ba417c8069fb36eac1839d0209fb05fb323d377f35626a82fcb0879363 + languageName: node + linkType: hard + +"mdast-util-mdx-jsx@npm:^3.0.0": + version: 3.1.2 + resolution: "mdast-util-mdx-jsx@npm:3.1.2" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + ccount: "npm:^2.0.0" + devlop: "npm:^1.1.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + parse-entities: "npm:^4.0.0" + stringify-entities: "npm:^4.0.0" + unist-util-remove-position: "npm:^5.0.0" + unist-util-stringify-position: "npm:^4.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/855b60c3db9bde2fe142bd366597f7bd5892fc288428ba054e26ffcffc07bfe5648c0792d614ba6e08b1eab9784ffc3c1267cf29dfc6db92b419d68b5bcd487d + languageName: node + linkType: hard + +"mdast-util-mdx@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-mdx@npm:3.0.0" + dependencies: + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-mdx-expression: "npm:^2.0.0" + mdast-util-mdx-jsx: "npm:^3.0.0" + mdast-util-mdxjs-esm: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/4faea13f77d6bc9aa64ee41a5e4779110b73444a17fda363df6ebe880ecfa58b321155b71f8801c3faa6d70d6222a32a00cbd6dbf5fad8db417f4688bc9c74e1 + languageName: node + linkType: hard + +"mdast-util-mdxjs-esm@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdxjs-esm@npm:2.0.1" + dependencies: + "@types/estree-jsx": "npm:^1.0.0" + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + devlop: "npm:^1.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + checksum: 10c0/5bda92fc154141705af2b804a534d891f28dac6273186edf1a4c5e3f045d5b01dbcac7400d27aaf91b7e76e8dce007c7b2fdf136c11ea78206ad00bdf9db46bc + languageName: node + linkType: hard + +"mdast-util-phrasing@npm:^4.0.0": + version: 4.1.0 + resolution: "mdast-util-phrasing@npm:4.1.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + unist-util-is: "npm:^6.0.0" + checksum: 10c0/bf6c31d51349aa3d74603d5e5a312f59f3f65662ed16c58017169a5fb0f84ca98578f626c5ee9e4aa3e0a81c996db8717096705521bddb4a0185f98c12c9b42f + languageName: node + linkType: hard + +"mdast-util-to-hast@npm:^13.0.0": + version: 13.2.0 + resolution: "mdast-util-to-hast@npm:13.2.0" + dependencies: + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + "@ungap/structured-clone": "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-util-sanitize-uri: "npm:^2.0.0" + trim-lines: "npm:^3.0.0" + unist-util-position: "npm:^5.0.0" + unist-util-visit: "npm:^5.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/9ee58def9287df8350cbb6f83ced90f9c088d72d4153780ad37854f87144cadc6f27b20347073b285173b1649b0723ddf0b9c78158608a804dcacb6bda6e1816 + languageName: node + linkType: hard + +"mdast-util-to-markdown@npm:^2.0.0": + version: 2.1.0 + resolution: "mdast-util-to-markdown@npm:2.1.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + "@types/unist": "npm:^3.0.0" + longest-streak: "npm:^3.0.0" + mdast-util-phrasing: "npm:^4.0.0" + mdast-util-to-string: "npm:^4.0.0" + micromark-util-decode-string: "npm:^2.0.0" + unist-util-visit: "npm:^5.0.0" + zwitch: "npm:^2.0.0" + checksum: 10c0/8bd37a9627a438ef6418d6642661904d0cc03c5c732b8b018a8e238ef5cc82fe8aef1940b19c6f563245e58b9659f35e527209bd3fe145f3c723ba14d18fc3e6 + languageName: node + linkType: hard + +"mdast-util-to-string@npm:^4.0.0": + version: 4.0.0 + resolution: "mdast-util-to-string@npm:4.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + checksum: 10c0/2d3c1af29bf3fe9c20f552ee9685af308002488f3b04b12fa66652c9718f66f41a32f8362aa2d770c3ff464c034860b41715902ada2306bb0a055146cef064d7 + languageName: node + linkType: hard + +"merge-anything@npm:^5.1.7": + version: 5.1.7 + resolution: "merge-anything@npm:5.1.7" + dependencies: + is-what: "npm:^4.1.8" + checksum: 10c0/1820c8dfa5da65de1829b5e9adb65d1685ec4bc5d358927cacd20a9917eff9448f383f937695f4dbd2162b152faf41ce24187a931621839ee8a8b3c306a65136 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"micromark-core-commonmark@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-core-commonmark@npm:2.0.1" + dependencies: + decode-named-character-reference: "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-factory-destination: "npm:^2.0.0" + micromark-factory-label: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-factory-title: "npm:^2.0.0" + micromark-factory-whitespace: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-classify-character: "npm:^2.0.0" + micromark-util-html-tag-name: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-resolve-all: "npm:^2.0.0" + micromark-util-subtokenize: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/a0b280b1b6132f600518e72cb29a4dd1b2175b85f5ed5b25d2c5695e42b876b045971370daacbcfc6b4ce8cf7acbf78dd3a0284528fb422b450144f4b3bebe19 + languageName: node + linkType: hard + +"micromark-extension-gfm-autolink-literal@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-autolink-literal@npm:2.1.0" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-sanitize-uri: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/84e6fbb84ea7c161dfa179665dc90d51116de4c28f3e958260c0423e5a745372b7dcbc87d3cde98213b532e6812f847eef5ae561c9397d7f7da1e59872ef3efe + languageName: node + linkType: hard + +"micromark-extension-gfm-footnote@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-footnote@npm:2.1.0" + dependencies: + devlop: "npm:^1.0.0" + micromark-core-commonmark: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-sanitize-uri: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/d172e4218968b7371b9321af5cde8c77423f73b233b2b0fcf3ff6fd6f61d2e0d52c49123a9b7910612478bf1f0d5e88c75a3990dd68f70f3933fe812b9f77edc + languageName: node + linkType: hard + +"micromark-extension-gfm-strikethrough@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-strikethrough@npm:2.1.0" + dependencies: + devlop: "npm:^1.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-classify-character: "npm:^2.0.0" + micromark-util-resolve-all: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/ef4f248b865bdda71303b494671b7487808a340b25552b11ca6814dff3fcfaab9be8d294643060bbdb50f79313e4a686ab18b99cbe4d3ee8a4170fcd134234fb + languageName: node + linkType: hard + +"micromark-extension-gfm-table@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-table@npm:2.1.0" + dependencies: + devlop: "npm:^1.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/c1b564ab68576406046d825b9574f5b4dbedbb5c44bede49b5babc4db92f015d9057dd79d8e0530f2fecc8970a695c40ac2e5e1d4435ccf3ef161038d0d1463b + languageName: node + linkType: hard + +"micromark-extension-gfm-tagfilter@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0" + dependencies: + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/995558843fff137ae4e46aecb878d8a4691cdf23527dcf1e2f0157d66786be9f7bea0109c52a8ef70e68e3f930af811828ba912239438e31a9cfb9981f44d34d + languageName: node + linkType: hard + +"micromark-extension-gfm-task-list-item@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0" + dependencies: + devlop: "npm:^1.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/78aa537d929e9309f076ba41e5edc99f78d6decd754b6734519ccbbfca8abd52e1c62df68d41a6ae64d2a3fc1646cea955893c79680b0b4385ced4c52296181f + languageName: node + linkType: hard + +"micromark-extension-gfm@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-gfm@npm:3.0.0" + dependencies: + micromark-extension-gfm-autolink-literal: "npm:^2.0.0" + micromark-extension-gfm-footnote: "npm:^2.0.0" + micromark-extension-gfm-strikethrough: "npm:^2.0.0" + micromark-extension-gfm-table: "npm:^2.0.0" + micromark-extension-gfm-tagfilter: "npm:^2.0.0" + micromark-extension-gfm-task-list-item: "npm:^2.0.0" + micromark-util-combine-extensions: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/970e28df6ebdd7c7249f52a0dda56e0566fbfa9ae56c8eeeb2445d77b6b89d44096880cd57a1c01e7821b1f4e31009109fbaca4e89731bff7b83b8519690e5d9 + languageName: node + linkType: hard + +"micromark-extension-mdx-expression@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdx-expression@npm:3.0.0" + dependencies: + "@types/estree": "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-factory-mdx-expression: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/fa799c594d8ff9ecbbd28e226959c4928590cfcddb60a926d9d859d00fc7acd25684b6f78dbe6a7f0830879a402b4a3628efd40bb9df1f5846e6d2b7332715f7 + languageName: node + linkType: hard + +"micromark-extension-mdx-jsx@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdx-jsx@npm:3.0.0" + dependencies: + "@types/acorn": "npm:^4.0.0" + "@types/estree": "npm:^1.0.0" + devlop: "npm:^1.0.0" + estree-util-is-identifier-name: "npm:^3.0.0" + micromark-factory-mdx-expression: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/18a81c8def7f3a2088dc435bba19e649c19f679464b1a01e2c680f9518820e70fb0974b8403c790aee8f44205833a280b56ba157fe5a5b2903b476c5de5ba353 + languageName: node + linkType: hard + +"micromark-extension-mdx-md@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-mdx-md@npm:2.0.0" + dependencies: + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/bae91c61273de0e5ba80a980c03470e6cd9d7924aa936f46fbda15d780704d9386e945b99eda200e087b96254fbb4271a9545d5ce02676cd6ae67886a8bf82df + languageName: node + linkType: hard + +"micromark-extension-mdxjs-esm@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs-esm@npm:3.0.0" + dependencies: + "@types/estree": "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-core-commonmark: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unist-util-position-from-estree: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/13e3f726495a960650cdedcba39198ace5bdc953ccb12c14d71fc9ed9bb88e40cc3ba9231e973f6984da3b3573e7ddb23ce409f7c16f52a8d57b608bf46c748d + languageName: node + linkType: hard + +"micromark-extension-mdxjs@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs@npm:3.0.0" + dependencies: + acorn: "npm:^8.0.0" + acorn-jsx: "npm:^5.0.0" + micromark-extension-mdx-expression: "npm:^3.0.0" + micromark-extension-mdx-jsx: "npm:^3.0.0" + micromark-extension-mdx-md: "npm:^2.0.0" + micromark-extension-mdxjs-esm: "npm:^3.0.0" + micromark-util-combine-extensions: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/fd84f036ddad0aabbc12e7f1b3e9dcfe31573bbc413c5ae903779ef0366d7a4c08193547e7ba75718c9f45654e45f52e575cfc2f23a5f89205a8a70d9a506aea + languageName: node + linkType: hard + +"micromark-factory-destination@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-destination@npm:2.0.0" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/b73492f687d41a6a379159c2f3acbf813042346bcea523d9041d0cc6124e6715f0779dbb2a0b3422719e9764c3b09f9707880aa159557e3cb4aeb03b9d274915 + languageName: node + linkType: hard + +"micromark-factory-label@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-label@npm:2.0.0" + dependencies: + devlop: "npm:^1.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/8ffad00487a7891941b1d1f51d53a33c7a659dcf48617edb7a4008dad7aff67ec316baa16d55ca98ae3d75ce1d81628dbf72fedc7c6f108f740dec0d5d21c8ee + languageName: node + linkType: hard + +"micromark-factory-mdx-expression@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-mdx-expression@npm:2.0.1" + dependencies: + "@types/estree": "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-events-to-acorn: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unist-util-position-from-estree: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/d9cf475a73a7fbfa09aba0d057e033d57e45b7adff78692be9efb4405c4a1717ece4594a632f92a4302e4f8f2ae96355785b616e3f5b2fe8599ec24cfdeee12d + languageName: node + linkType: hard + +"micromark-factory-space@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-space@npm:2.0.0" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/103ca954dade963d4ff1d2f27d397833fe855ddc72590205022832ef68b775acdea67949000cee221708e376530b1de78c745267b0bf8366740840783eb37122 + languageName: node + linkType: hard + +"micromark-factory-title@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-title@npm:2.0.0" + dependencies: + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/2b2188e7a011b1b001faf8c860286d246d5c3485ef8819270c60a5808f4c7613e49d4e481dbdff62600ef7acdba0f5100be2d125cbd2a15e236c26b3668a8ebd + languageName: node + linkType: hard + +"micromark-factory-whitespace@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-factory-whitespace@npm:2.0.0" + dependencies: + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/4e91baab0cc71873095134bd0e225d01d9786cde352701402d71b72d317973954754e8f9f1849901f165530e6421202209f4d97c460a27bb0808ec5a3fc3148c + languageName: node + linkType: hard + +"micromark-util-character@npm:^2.0.0": + version: 2.1.0 + resolution: "micromark-util-character@npm:2.1.0" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/fc37a76aaa5a5138191ba2bef1ac50c36b3bcb476522e98b1a42304ab4ec76f5b036a746ddf795d3de3e7004b2c09f21dd1bad42d161f39b8cfc0acd067e6373 + languageName: node + linkType: hard + +"micromark-util-chunked@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-chunked@npm:2.0.0" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/043b5f2abc8c13a1e2e4c378ead191d1a47ed9e0cd6d0fa5a0a430b2df9e17ada9d5de5a20688a000bbc5932507e746144acec60a9589d9a79fa60918e029203 + languageName: node + linkType: hard + +"micromark-util-classify-character@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-classify-character@npm:2.0.0" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/2bf5fa5050faa9b69f6c7e51dbaaf02329ab70fabad8229984381b356afbbf69db90f4617bec36d814a7d285fb7cad8e3c4e38d1daf4387dc9e240aa7f9a292a + languageName: node + linkType: hard + +"micromark-util-combine-extensions@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-combine-extensions@npm:2.0.0" + dependencies: + micromark-util-chunked: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/cd4c8d1a85255527facb419ff3b3cc3d7b7f27005c5ef5fa7ef2c4d0e57a9129534fc292a188ec2d467c2c458642d369c5f894bc8a9e142aed6696cc7989d3ea + languageName: node + linkType: hard + +"micromark-util-decode-numeric-character-reference@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.1" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/3f6d684ee8f317c67806e19b3e761956256cb936a2e0533aad6d49ac5604c6536b2041769c6febdd387ab7175b7b7e551851bf2c1f78da943e7a3671ca7635ac + languageName: node + linkType: hard + +"micromark-util-decode-string@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-decode-string@npm:2.0.0" + dependencies: + decode-named-character-reference: "npm:^1.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-decode-numeric-character-reference: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/f5413bebb21bdb686cfa1bcfa7e9c93093a523d1b42443ead303b062d2d680a94e5e8424549f57b8ba9d786a758e5a26a97f56068991bbdbca5d1885b3aa7227 + languageName: node + linkType: hard + +"micromark-util-encode@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-encode@npm:2.0.0" + checksum: 10c0/ebdaafff23100bbf4c74e63b4b1612a9ddf94cd7211d6a076bc6fb0bc32c1b48d6fb615aa0953e607c62c97d849f97f1042260d3eb135259d63d372f401bbbb2 + languageName: node + linkType: hard + +"micromark-util-events-to-acorn@npm:^2.0.0": + version: 2.0.2 + resolution: "micromark-util-events-to-acorn@npm:2.0.2" + dependencies: + "@types/acorn": "npm:^4.0.0" + "@types/estree": "npm:^1.0.0" + "@types/unist": "npm:^3.0.0" + devlop: "npm:^1.0.0" + estree-util-visit: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/2bd2660a49efddb625e6adcabdc3384ae4c50c7a04270737270f4aab53d09e8253e6d2607cd947c4c77f8a9900278915babb240e61fd143dc5bab51d9fd50709 + languageName: node + linkType: hard + +"micromark-util-html-tag-name@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-html-tag-name@npm:2.0.0" + checksum: 10c0/988aa26367449bd345b627ae32cf605076daabe2dc1db71b578a8a511a47123e14af466bcd6dcbdacec60142f07bc2723ec5f7a0eed0f5319ce83b5e04825429 + languageName: node + linkType: hard + +"micromark-util-normalize-identifier@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-normalize-identifier@npm:2.0.0" + dependencies: + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/93bf8789b8449538f22cf82ac9b196363a5f3b2f26efd98aef87c4c1b1f8c05be3ef6391ff38316ff9b03c1a6fd077342567598019ddd12b9bd923dacc556333 + languageName: node + linkType: hard + +"micromark-util-resolve-all@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-resolve-all@npm:2.0.0" + dependencies: + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/3b912e88453dcefe728a9080c8934a75ac4732056d6576ceecbcaf97f42c5d6fa2df66db8abdc8427eb167c5ffddefe26713728cfe500bc0e314ed260d6e2746 + languageName: node + linkType: hard + +"micromark-util-sanitize-uri@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-sanitize-uri@npm:2.0.0" + dependencies: + micromark-util-character: "npm:^2.0.0" + micromark-util-encode: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + checksum: 10c0/74763ca1c927dd520d3ab8fd9856a19740acf76fc091f0a1f5d4e99c8cd5f1b81c5a0be3efb564941a071fb6d85fd951103f2760eb6cff77b5ab3abe08341309 + languageName: node + linkType: hard + +"micromark-util-subtokenize@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-subtokenize@npm:2.0.1" + dependencies: + devlop: "npm:^1.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/000cefde827db129f4ed92b8fbdeb4866c5f9c93068c0115485564b0426abcb9058080aa257df9035e12ca7fa92259d66623ea750b9eb3bcdd8325d3fb6fc237 + languageName: node + linkType: hard + +"micromark-util-symbol@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-symbol@npm:2.0.0" + checksum: 10c0/4e76186c185ce4cefb9cea8584213d9ffacd77099d1da30c0beb09fa21f46f66f6de4c84c781d7e34ff763fe3a06b530e132fa9004882afab9e825238d0aa8b3 + languageName: node + linkType: hard + +"micromark-util-types@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-util-types@npm:2.0.0" + checksum: 10c0/d74e913b9b61268e0d6939f4209e3abe9dada640d1ee782419b04fd153711112cfaaa3c4d5f37225c9aee1e23c3bb91a1f5223e1e33ba92d33e83956a53e61de + languageName: node + linkType: hard + +"micromark@npm:^4.0.0": + version: 4.0.0 + resolution: "micromark@npm:4.0.0" + dependencies: + "@types/debug": "npm:^4.0.0" + debug: "npm:^4.0.0" + decode-named-character-reference: "npm:^1.0.0" + devlop: "npm:^1.0.0" + micromark-core-commonmark: "npm:^2.0.0" + micromark-factory-space: "npm:^2.0.0" + micromark-util-character: "npm:^2.0.0" + micromark-util-chunked: "npm:^2.0.0" + micromark-util-combine-extensions: "npm:^2.0.0" + micromark-util-decode-numeric-character-reference: "npm:^2.0.0" + micromark-util-encode: "npm:^2.0.0" + micromark-util-normalize-identifier: "npm:^2.0.0" + micromark-util-resolve-all: "npm:^2.0.0" + micromark-util-sanitize-uri: "npm:^2.0.0" + micromark-util-subtokenize: "npm:^2.0.0" + micromark-util-symbol: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + checksum: 10c0/7e91c8d19ff27bc52964100853f1b3b32bb5b2ece57470a34ba1b2f09f4e2a183d90106c4ae585c9f2046969ee088576fed79b2f7061cba60d16652ccc2c64fd + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.7": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 10c0/de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf + languageName: node + linkType: hard + +"mimic-function@npm:^5.0.0": + version: 5.0.1 + resolution: "mimic-function@npm:5.0.1" + checksum: 10c0/f3d9464dd1816ecf6bdf2aec6ba32c0728022039d992f178237d8e289b48764fee4131319e72eedd4f7f094e22ded0af836c3187a7edc4595d28dd74368fd81d + languageName: node + linkType: hard + +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/9d702d57f556274286fdd97e406fc38a2f5c8d15e158b498d7393b1105974b21249289ec571fa2b51e038a4872bfc82710111cf75fae98c662f3d6f95e72152b + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"mrmime@npm:^2.0.0": + version: 2.0.0 + resolution: "mrmime@npm:2.0.0" + checksum: 10c0/312b35ed288986aec90955410b21ed7427fd1e4ee318cb5fc18765c8d029eeded9444faa46589e5b1ed6b35fb2054a802ac8dcb917ddf6b3e189cb3bf11a965c + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + +"ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"muggle-string@npm:^0.4.1": + version: 0.4.1 + resolution: "muggle-string@npm:0.4.1" + checksum: 10c0/e914b63e24cd23f97e18376ec47e4ba3aa24365e4776212b666add2e47bb158003212980d732c49abf3719568900af7861873844a6e2d3a7ca7e86952c0e99e9 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + +"neotraverse@npm:^0.6.18": + version: 0.6.18 + resolution: "neotraverse@npm:0.6.18" + checksum: 10c0/46f4c53cbbdc53671150916b544a9f46e27781f8003985237507542190173bec131168d89b846535f9c34c0a2a7debb1ab3a4f7a93d08218e2c194a363708ffa + languageName: node + linkType: hard + +"nlcst-to-string@npm:^4.0.0": + version: 4.0.0 + resolution: "nlcst-to-string@npm:4.0.0" + dependencies: + "@types/nlcst": "npm:^2.0.0" + checksum: 10c0/a192c8b3365a7c076812004e72ae5b4a1734e582be2a6f3c062f3beecf18868a9fe2d1bad870bfead320fb39830f2c4f3752e5ae6574c4e59157126fd1ddba70 + languageName: node + linkType: hard + +"node-bin-setup@npm:^1.0.0": + version: 1.1.3 + resolution: "node-bin-setup@npm:1.1.3" + checksum: 10c0/7de7d17aff7baa4e424f2b94ba14626b177620998d7bbe5bb28841a4e078d9c198a96edefb88f00e80a724f3d56907cdfb4be8af1c45e46b0f1476c26d828910 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.2.0 + resolution: "node-gyp@npm:10.2.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^4.1.0" + semver: "npm:^7.3.5" + tar: "npm:^6.2.1" + which: "npm:^4.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/00630d67dbd09a45aee0a5d55c05e3916ca9e6d427ee4f7bc392d2d3dc5fad7449b21fc098dd38260a53d9dcc9c879b36704a1994235d4707e7271af7e9a835b + languageName: node + linkType: hard + +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27 + languageName: node + linkType: hard + +"node@npm:22.7.0": + version: 22.7.0 + resolution: "node@npm:22.7.0" + dependencies: + node-bin-setup: "npm:^1.0.0" + bin: + node: bin/node + checksum: 10c0/62430677f3915b689dadaa5fc482cba1758e6e56f33a4aab2b505001a41e079734a5d053851435a0c98865fbbcd2cc25287032dc8099aefd6aa41a3c84b56374 + languageName: node + linkType: hard + +"nopt@npm:^7.0.0": + version: 7.2.1 + resolution: "nopt@npm:7.2.1" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/a069c7c736767121242037a22a788863accfa932ab285a1eb569eb8cd534b09d17206f68c37f096ae785647435e0c5a5a0a67b42ec743e481a455e5ae6a6df81 + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"npm-run-path@npm:^5.1.0": + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" + dependencies: + path-key: "npm:^4.0.0" + checksum: 10c0/124df74820c40c2eb9a8612a254ea1d557ddfab1581c3e751f825e3e366d9f00b0d76a3c94ecd8398e7f3eee193018622677e95816e8491f0797b21e30b2deba + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.12": + version: 2.2.12 + resolution: "nwsapi@npm:2.2.12" + checksum: 10c0/95e9623d63df111405503df8c5d800e26f71675d319e2c9c70cddfa31e5ace1d3f8b6d98d354544fc156a1506d920ec291e303fab761e4f99296868e199a466e + languageName: node + linkType: hard + +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: "npm:^4.0.0" + checksum: 10c0/4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c + languageName: node + linkType: hard + +"onetime@npm:^7.0.0": + version: 7.0.0 + resolution: "onetime@npm:7.0.0" + dependencies: + mimic-function: "npm:^5.0.0" + checksum: 10c0/5cb9179d74b63f52a196a2e7037ba2b9a893245a5532d3f44360012005c9cadb60851d56716ebff18a6f47129dab7168022445df47c2aff3b276d92585ed1221 + languageName: node + linkType: hard + +"ora@npm:^8.0.1": + version: 8.1.0 + resolution: "ora@npm:8.1.0" + dependencies: + chalk: "npm:^5.3.0" + cli-cursor: "npm:^5.0.0" + cli-spinners: "npm:^2.9.2" + is-interactive: "npm:^2.0.0" + is-unicode-supported: "npm:^2.0.0" + log-symbols: "npm:^6.0.0" + stdin-discarder: "npm:^0.2.2" + string-width: "npm:^7.2.0" + strip-ansi: "npm:^7.1.0" + checksum: 10c0/4ac9a6dd7fe915a354680f33ced21ee96d13d3c5ab0dc00b3c3ba9e3695ed141b1d045222990f5a71a9a91f801042a0b0d32e58dfc5509ff9b81efdd3fcf6339 + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^6.1.0": + version: 6.1.0 + resolution: "p-limit@npm:6.1.0" + dependencies: + yocto-queue: "npm:^1.1.1" + checksum: 10c0/40af29461206185a81bdc971ed499d97ceb344114fd21420db95debd9c979b6c02d66a41c321246d09245a51e68410e13df92622cc8c0130f87c6bd81a15d777 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"p-queue@npm:^8.0.1": + version: 8.0.1 + resolution: "p-queue@npm:8.0.1" + dependencies: + eventemitter3: "npm:^5.0.1" + p-timeout: "npm:^6.1.2" + checksum: 10c0/fe185bc8bbd32d17a5f6dba090077b1bb326b008b4ec9b0646c57a32a6984035aa8ece909a6d0de7f6c4640296dc288197f430e7394cdc76a26d862339494616 + languageName: node + linkType: hard + +"p-timeout@npm:^6.1.2": + version: 6.1.2 + resolution: "p-timeout@npm:6.1.2" + checksum: 10c0/d46b90a9a5fb7c650a5c56dd5cf7102ea9ab6ce998defa2b3d4672789aaec4e2f45b3b0b5a4a3e17a0fb94301ad5dd26da7d8728402e48db2022ad1847594d19 + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + languageName: node + linkType: hard + +"pagefind@npm:^1.0.3": + version: 1.1.1 + resolution: "pagefind@npm:1.1.1" + dependencies: + "@pagefind/darwin-arm64": "npm:1.1.1" + "@pagefind/darwin-x64": "npm:1.1.1" + "@pagefind/linux-arm64": "npm:1.1.1" + "@pagefind/linux-x64": "npm:1.1.1" + "@pagefind/windows-x64": "npm:1.1.1" + dependenciesMeta: + "@pagefind/darwin-arm64": + optional: true + "@pagefind/darwin-x64": + optional: true + "@pagefind/linux-arm64": + optional: true + "@pagefind/linux-x64": + optional: true + "@pagefind/windows-x64": + optional: true + bin: + pagefind: lib/runner/bin.cjs + checksum: 10c0/60545c2a56294251fc92e2e5e90d9d11f3bc99087bea8e31930c4c848f6d965ee509d3c01c2f25d0a2f8df62901a5ab5e1a23cc9c8c32a01ff3e27bf09a7c62e + languageName: node + linkType: hard + +"parse-entities@npm:^4.0.0": + version: 4.0.1 + resolution: "parse-entities@npm:4.0.1" + dependencies: + "@types/unist": "npm:^2.0.0" + character-entities: "npm:^2.0.0" + character-entities-legacy: "npm:^3.0.0" + character-reference-invalid: "npm:^2.0.0" + decode-named-character-reference: "npm:^1.0.0" + is-alphanumerical: "npm:^2.0.0" + is-decimal: "npm:^2.0.0" + is-hexadecimal: "npm:^2.0.0" + checksum: 10c0/9dfa3b0dc43a913c2558c4bd625b1abcc2d6c6b38aa5724b141ed988471977248f7ad234eed57e1bc70b694dd15b0d710a04f66c2f7c096e35abd91962b7d926 + languageName: node + linkType: hard + +"parse-latin@npm:^7.0.0": + version: 7.0.0 + resolution: "parse-latin@npm:7.0.0" + dependencies: + "@types/nlcst": "npm:^2.0.0" + "@types/unist": "npm:^3.0.0" + nlcst-to-string: "npm:^4.0.0" + unist-util-modify-children: "npm:^4.0.0" + unist-util-visit-children: "npm:^3.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/4232a464f98c41c6680575c54bc2c9b21ac4b82a1f796a871bfef5efa6eddaab9bccf734b08cde6b0a5504ef46a0a14041ddd0bc5d9cc70f73a507f93f610596 + languageName: node + linkType: hard + +"parse5@npm:^6.0.0": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: 10c0/595821edc094ecbcfb9ddcb46a3e1fe3a718540f8320eff08b8cf6742a5114cce2d46d45f95c26191c11b184dcaf4e2960abcd9c5ed9eb9393ac9a37efcfdecb + languageName: node + linkType: hard + +"parse5@npm:^7.0.0, parse5@npm:^7.1.2": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: "npm:^4.4.0" + checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 + languageName: node + linkType: hard + +"path-browserify@npm:^1.0.1": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1" + checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + +"path-to-regexp@npm:^6.2.2": + version: 6.3.0 + resolution: "path-to-regexp@npm:6.3.0" + checksum: 10c0/73b67f4638b41cde56254e6354e46ae3a2ebc08279583f6af3d96fe4664fc75788f74ed0d18ca44fa4a98491b69434f9eee73b97bb5314bd1b5adb700f5c18d6 + languageName: node + linkType: hard + +"perfect-freehand@npm:^1.2.2": + version: 1.2.2 + resolution: "perfect-freehand@npm:1.2.2" + checksum: 10c0/8f7ae1cd24bdd91b51b06eb8a02bee1b4ecef361df9e3ef9a56aa942e14f59820cccff919eb33831493e12af2a6b7f8617cbdc59bf0b11723f4ffdc8fe325f1a + languageName: node + linkType: hard + +"periscopic@npm:^3.0.0": + version: 3.1.0 + resolution: "periscopic@npm:3.1.0" + dependencies: + "@types/estree": "npm:^1.0.0" + estree-walker: "npm:^3.0.0" + is-reference: "npm:^3.0.0" + checksum: 10c0/fb5ce7cd810c49254cdf1cd3892811e6dd1a1dfbdf5f10a0a33fb7141baac36443c4cad4f0e2b30abd4eac613f6ab845c2bc1b7ce66ae9694c7321e6ada5bd96 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": + version: 1.1.0 + resolution: "picocolors@npm:1.1.0" + checksum: 10c0/86946f6032148801ef09c051c6fb13b5cf942eaf147e30ea79edb91dd32d700934edebe782a1078ff859fb2b816792e97ef4dab03d7f0b804f6b01a0df35e023 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf + languageName: node + linkType: hard + +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + +"postcss@npm:^8.4.41": + version: 8.4.41 + resolution: "postcss@npm:8.4.41" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.0.1" + source-map-js: "npm:^1.2.0" + checksum: 10c0/c1828fc59e7ec1a3bf52b3a42f615dba53c67960ed82a81df6441b485fe43c20aba7f4e7c55425762fd99c594ecabbaaba8cf5b30fd79dfec5b52a9f63a2d690 + languageName: node + linkType: hard + +"preferred-pm@npm:^4.0.0": + version: 4.0.0 + resolution: "preferred-pm@npm:4.0.0" + dependencies: + find-up-simple: "npm:^1.0.0" + find-yarn-workspace-root2: "npm:1.2.16" + which-pm: "npm:^3.0.0" + checksum: 10c0/66477a0df1b54889a562475291eb438048502d946ec65cb67801a02e21d16299d9ed3d664f77c553da6d4ab27688bec52627e91a6bcedc8b6e07a437d1ba3517 + languageName: node + linkType: hard + +"prettier@npm:2.8.7": + version: 2.8.7 + resolution: "prettier@npm:2.8.7" + bin: + prettier: bin-prettier.js + checksum: 10c0/84c5b62f7d4909ae5b18b1a4cee67f6a30a548244c8919e67158dee1453f4fa4ff4d291c6f2e41e21d443a0c405f03ec27690502d4ad90c3a7c59bcaf38b51ba + languageName: node + linkType: hard + +"pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + +"prismjs@npm:^1.29.0": + version: 1.29.0 + resolution: "prismjs@npm:1.29.0" + checksum: 10c0/d906c4c4d01b446db549b4f57f72d5d7e6ccaca04ecc670fb85cea4d4b1acc1283e945a9cbc3d81819084a699b382f970e02f9d1378e14af9808d366d9ed7ec6 + languageName: node + linkType: hard + +"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 10c0/17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"prompts@npm:^2.4.2": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: "npm:^3.0.3" + sisteransi: "npm:^1.0.5" + checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 + languageName: node + linkType: hard + +"property-information@npm:^6.0.0": + version: 6.5.0 + resolution: "property-information@npm:6.5.0" + checksum: 10c0/981e0f9cc2e5acdb414a6fd48a99dd0fd3a4079e7a91ab41cf97a8534cf43e0e0bc1ffada6602a1b3d047a33db8b5fc2ef46d863507eda712d5ceedac443f0ef + languageName: node + linkType: hard + +"proxy-compare@npm:3.0.0, proxy-compare@npm:^3.0.0": + version: 3.0.0 + resolution: "proxy-compare@npm:3.0.0" + checksum: 10c0/9740af3709496b16ba18ebc337df5ca4c103f345436a8c0ec2e09217b7a06e119c145bedfe7fc4ad50b77b30fa804efaa6a7fe147eafb61aaf7ef44e387710f5 + languageName: node + linkType: hard + +"proxy-memoize@npm:3.0.1": + version: 3.0.1 + resolution: "proxy-memoize@npm:3.0.1" + dependencies: + proxy-compare: "npm:^3.0.0" + checksum: 10c0/cfdd442365fb7081dcba427ded75a8a9b68af17e72eef8098aa2e6d625914ac4152021832c631f071660d2f61ec18aaaa07ec77142abaa50b12dcaa845de8e4c + languageName: node + linkType: hard + +"punycode@npm:^2.3.1": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"quickshell-docs@workspace:.": + version: 0.0.0-use.local + resolution: "quickshell-docs@workspace:." + dependencies: + "@ark-ui/solid": "npm:^3.5.0" + "@astrojs/check": "npm:^0.9.3" + "@astrojs/mdx": "npm:^3.1.4" + "@astrojs/solid-js": "npm:^4.4.1" + "@astrojs/ts-plugin": "npm:^1.10.1" + "@biomejs/biome": "npm:^1.8.3" + "@hbsnow/rehype-sectionize": "npm:^1.0.7" + "@types/node": "npm:^20.14.11" + astro: "npm:^4.14.5" + astro-breadcrumbs: "npm:^2.3.1" + astro-pagefind: "npm:^1.6.0" + marked: "npm:^14.1.0" + marked-alert: "npm:^2.0.2" + node: "npm:22.7.0" + remark-github-blockquote-alert: "npm:^1.2.1" + remark-parse: "npm:^11.0.0" + shiki: "npm:^1.11.0" + solid-devtools: "npm:^0.30.1" + solid-js: "npm:^1.8.18" + typescript: "npm:^5.5.3" + languageName: unknown + linkType: soft + +"react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + +"rehype-parse@npm:^8.0.0": + version: 8.0.5 + resolution: "rehype-parse@npm:8.0.5" + dependencies: + "@types/hast": "npm:^2.0.0" + hast-util-from-parse5: "npm:^7.0.0" + parse5: "npm:^6.0.0" + unified: "npm:^10.0.0" + checksum: 10c0/6ab741830d74d381ae46849a61edb9539b16667ed03c4cf74d4aa6003947e14d35398f745649dd2b83cc1c6de8db1f9dbd46cbb76048c22bbb3d1200967ac1e3 + languageName: node + linkType: hard + +"rehype-parse@npm:^9.0.0": + version: 9.0.0 + resolution: "rehype-parse@npm:9.0.0" + dependencies: + "@types/hast": "npm:^3.0.0" + hast-util-from-html: "npm:^2.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/c38d07b8bfb5eb3ad6ce8ebdc65ecb31b4c68e440fb020178a34937fa28753d63c70f51146890bf32f840ef6102efdf31e03eb937fc100bc9efa4f4f808a50d2 + languageName: node + linkType: hard + +"rehype-raw@npm:^7.0.0": + version: 7.0.0 + resolution: "rehype-raw@npm:7.0.0" + dependencies: + "@types/hast": "npm:^3.0.0" + hast-util-raw: "npm:^9.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/1435b4b6640a5bc3abe3b2133885c4dbff5ef2190ef9cfe09d6a63f74dd7d7ffd0cede70603278560ccf1acbfb9da9faae4b68065a28bc5aa88ad18e40f32d52 + languageName: node + linkType: hard + +"rehype-stringify@npm:^10.0.0": + version: 10.0.0 + resolution: "rehype-stringify@npm:10.0.0" + dependencies: + "@types/hast": "npm:^3.0.0" + hast-util-to-html: "npm:^9.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/6a5f763cfc51cefbcfe504c9661da39b2f28e49c6caea085ff7ad97457b9574289076471f6eeca7af6479f1f90fd1bf1e8d176640b66da262372b76a1f1b3147 + languageName: node + linkType: hard + +"rehype-stringify@npm:^9.0.0": + version: 9.0.4 + resolution: "rehype-stringify@npm:9.0.4" + dependencies: + "@types/hast": "npm:^2.0.0" + hast-util-to-html: "npm:^8.0.0" + unified: "npm:^10.0.0" + checksum: 10c0/8c8bc118c3e3242a6126456c35af5f902a168ec8daab7b97f6bfeafa5ced2c23fbe2807776908ecec8ed17a9ef67c6f6d473ff54c28c1d6a711624505a551078 + languageName: node + linkType: hard + +"rehype@npm:^12.0.1": + version: 12.0.1 + resolution: "rehype@npm:12.0.1" + dependencies: + "@types/hast": "npm:^2.0.0" + rehype-parse: "npm:^8.0.0" + rehype-stringify: "npm:^9.0.0" + unified: "npm:^10.0.0" + checksum: 10c0/9a0a2cccc80f302c2ed1c4fd2d8a23779696fc7ebab8149c23c6f551a26371bfb4a80736c1a98bc1e04115e6cb9e1ef0badb11f41fb9f624bdb07f5226272ed9 + languageName: node + linkType: hard + +"rehype@npm:^13.0.1": + version: 13.0.1 + resolution: "rehype@npm:13.0.1" + dependencies: + "@types/hast": "npm:^3.0.0" + rehype-parse: "npm:^9.0.0" + rehype-stringify: "npm:^10.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/9f35e07483376c5ccc49a6889ec74cbee22ca23fe2ed7b60588ab106d31d0b779d3fce10c38f889c9e34d5e9d9f5c2275b6c014f75467ec4af6c1423579556a6 + languageName: node + linkType: hard + +"remark-gfm@npm:^4.0.0": + version: 4.0.0 + resolution: "remark-gfm@npm:4.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + mdast-util-gfm: "npm:^3.0.0" + micromark-extension-gfm: "npm:^3.0.0" + remark-parse: "npm:^11.0.0" + remark-stringify: "npm:^11.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/db0aa85ab718d475c2596e27c95be9255d3b0fc730a4eda9af076b919f7dd812f7be3ac020611a8dbe5253fd29671d7b12750b56e529fdc32dfebad6dbf77403 + languageName: node + linkType: hard + +"remark-github-blockquote-alert@npm:^1.2.1": + version: 1.2.1 + resolution: "remark-github-blockquote-alert@npm:1.2.1" + dependencies: + unist-util-visit: "npm:^5.0.0" + checksum: 10c0/48f70a56347ba6d2649ec647f9b126fe2e22ee4efcbc4962e1645967ac0994859a930a1af3a8b75c2989d55ed5b7ce2df6fc86a4b0f2c0aa39d5ed2162c857ca + languageName: node + linkType: hard + +"remark-mdx@npm:^3.0.0": + version: 3.0.1 + resolution: "remark-mdx@npm:3.0.1" + dependencies: + mdast-util-mdx: "npm:^3.0.0" + micromark-extension-mdxjs: "npm:^3.0.0" + checksum: 10c0/9e16cd5ff3b30620bd25351a2dd1701627fa5555785b35ee5fe07bd1e6793a9c825cc1f6af9e54a44351f74879f8b5ea2bce8e5a21379aeab58935e76a4d69ce + languageName: node + linkType: hard + +"remark-parse@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-parse@npm:11.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + mdast-util-from-markdown: "npm:^2.0.0" + micromark-util-types: "npm:^2.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/6eed15ddb8680eca93e04fcb2d1b8db65a743dcc0023f5007265dda558b09db595a087f622062ccad2630953cd5cddc1055ce491d25a81f3317c858348a8dd38 + languageName: node + linkType: hard + +"remark-rehype@npm:^11.0.0, remark-rehype@npm:^11.1.0": + version: 11.1.1 + resolution: "remark-rehype@npm:11.1.1" + dependencies: + "@types/hast": "npm:^3.0.0" + "@types/mdast": "npm:^4.0.0" + mdast-util-to-hast: "npm:^13.0.0" + unified: "npm:^11.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/68f986e8ee758d415e93babda2a0d89477c15b7c200edc23b8b1d914dd6e963c5fc151a11cbbbcfa7dd237367ff3ef86e302be90f31f37a17b0748668bd8c65b + languageName: node + linkType: hard + +"remark-smartypants@npm:^3.0.2": + version: 3.0.2 + resolution: "remark-smartypants@npm:3.0.2" + dependencies: + retext: "npm:^9.0.0" + retext-smartypants: "npm:^6.0.0" + unified: "npm:^11.0.4" + unist-util-visit: "npm:^5.0.0" + checksum: 10c0/661129f6258feb4531c896d0d7013d0cd7835599f7d9c46947ff0cda19c717e2d5a7da28fc72a9d454dd5a5b6308403f0d7a7ec58338865a28c9242a77739b40 + languageName: node + linkType: hard + +"remark-stringify@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-stringify@npm:11.0.0" + dependencies: + "@types/mdast": "npm:^4.0.0" + mdast-util-to-markdown: "npm:^2.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/0cdb37ce1217578f6f847c7ec9f50cbab35df5b9e3903d543e74b405404e67c07defcb23cd260a567b41b769400f6de03c2c3d9cd6ae7a6707d5c8d89ead489f + languageName: node + linkType: hard + +"request-light@npm:^0.5.7": + version: 0.5.8 + resolution: "request-light@npm:0.5.8" + checksum: 10c0/65d47f79cbe13c46c10eecb9264ad06ea5f76ea64855766448937c0fe888a70b9c854bf9dc4c2dc1949ea5400030b55bea7d4ba0807fae0202004cee796ea819 + languageName: node + linkType: hard + +"request-light@npm:^0.7.0": + version: 0.7.0 + resolution: "request-light@npm:0.7.0" + checksum: 10c0/1c98f0d74b8a28a6fecb96d4b30c255a27b402f5e10b2696b67ede7257389a7533fba9e8ea122ccec9a7c6f06db36eab5d0b563bd5ff27b15aaa9d3910e31894 + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + languageName: node + linkType: hard + +"restore-cursor@npm:^5.0.0": + version: 5.1.0 + resolution: "restore-cursor@npm:5.1.0" + dependencies: + onetime: "npm:^7.0.0" + signal-exit: "npm:^4.1.0" + checksum: 10c0/c2ba89131eea791d1b25205bdfdc86699767e2b88dee2a590b1a6caa51737deac8bad0260a5ded2f7c074b7db2f3a626bcf1fcf3cdf35974cbeea5e2e6764f60 + languageName: node + linkType: hard + +"retext-latin@npm:^4.0.0": + version: 4.0.0 + resolution: "retext-latin@npm:4.0.0" + dependencies: + "@types/nlcst": "npm:^2.0.0" + parse-latin: "npm:^7.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/51530be66db9ef6ab8e9cda5dd0598377ff4321481d6a941bf70dac16fa6e9123ff7d8ff093a05c30a3e00e282e37094b845b6130a8005a3cb7186a961ab99cb + languageName: node + linkType: hard + +"retext-smartypants@npm:^6.0.0": + version: 6.1.1 + resolution: "retext-smartypants@npm:6.1.1" + dependencies: + "@types/nlcst": "npm:^2.0.0" + nlcst-to-string: "npm:^4.0.0" + unist-util-visit: "npm:^5.0.0" + checksum: 10c0/46c8bb97291cbf501bfde0069e48ce4a299efd0b07b71e7863339d7bcb9f955a0629d1b98fb2b4beef563e0a8b3c9698d36063c05a6b3bb012474b9adcafb044 + languageName: node + linkType: hard + +"retext-stringify@npm:^4.0.0": + version: 4.0.0 + resolution: "retext-stringify@npm:4.0.0" + dependencies: + "@types/nlcst": "npm:^2.0.0" + nlcst-to-string: "npm:^4.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/eb2930356c85999a8978092a5d6ba3695fea859c71f221dcdc485704552922641bc17e50fea2ae0599d665192eaad002e98bb4236ecac94a570b73581b99004d + languageName: node + linkType: hard + +"retext@npm:^9.0.0": + version: 9.0.0 + resolution: "retext@npm:9.0.0" + dependencies: + "@types/nlcst": "npm:^2.0.0" + retext-latin: "npm:^4.0.0" + retext-stringify: "npm:^4.0.0" + unified: "npm:^11.0.0" + checksum: 10c0/eee9f66ff6fae5670a5eeccc0b5e2639112f868475273ce307d3079cfe7deb9d1b0f2b8fa28b4ab30abaf8538345185a44908f461a27bbf43c4f94feda90ecac + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + languageName: node + linkType: hard + +"rollup@npm:^4.20.0": + version: 4.21.0 + resolution: "rollup@npm:4.21.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.21.0" + "@rollup/rollup-android-arm64": "npm:4.21.0" + "@rollup/rollup-darwin-arm64": "npm:4.21.0" + "@rollup/rollup-darwin-x64": "npm:4.21.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.21.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.21.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.21.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.21.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.21.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.21.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.21.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.21.0" + "@rollup/rollup-linux-x64-musl": "npm:4.21.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.21.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.21.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.21.0" + "@types/estree": "npm:1.0.5" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/984beb858da245c5e3a9027d6d87e67ad6443f1b46eab07685b861d9e49da5856693265c62a6f8262c36d11c9092713a96a9124f43e6de6698eb84d77118496a + languageName: node + linkType: hard + +"rrweb-cssom@npm:^0.7.1": + version: 0.7.1 + resolution: "rrweb-cssom@npm:0.7.1" + checksum: 10c0/127b8ca6c8aac45e2755abbae6138d4a813b1bedc2caabf79466ae83ab3cfc84b5bfab513b7033f0aa4561c7753edf787d0dd01163ceacdee2e8eb1b6bf7237e + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: "npm:^2.2.0" + checksum: 10c0/3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 + languageName: node + linkType: hard + +"section-matter@npm:^1.0.0": + version: 1.0.0 + resolution: "section-matter@npm:1.0.0" + dependencies: + extend-shallow: "npm:^2.0.1" + kind-of: "npm:^6.0.0" + checksum: 10c0/8007f91780adc5aaa781a848eaae50b0f680bbf4043b90cf8a96778195b8fab690c87fe7a989e02394ce69890e330811ec8dab22397d384673ce59f7d750641d + languageName: node + linkType: hard + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.6.2, semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf + languageName: node + linkType: hard + +"seroval-plugins@npm:^1.1.0": + version: 1.1.1 + resolution: "seroval-plugins@npm:1.1.1" + peerDependencies: + seroval: ^1.0 + checksum: 10c0/69ef623f014643b709beac56a3ab018098d43ac5533a89d1435e5aa17461a1b669fbc7f34916d905454c12372a6ace3c6933fb2bf41e720638522abbfb5774e2 + languageName: node + linkType: hard + +"seroval@npm:^1.1.0": + version: 1.1.1 + resolution: "seroval@npm:1.1.1" + checksum: 10c0/bde54883a05150d63606ca9f95f72999fcec4ad2345ab45e7fe22bd9bcda98f4c36c6a1660d59b2d7e47389881aad4b1a93b6c0adbfa64bf67acd4bf7e304651 + languageName: node + linkType: hard + +"sharp@npm:^0.33.3": + version: 0.33.5 + resolution: "sharp@npm:0.33.5" + dependencies: + "@img/sharp-darwin-arm64": "npm:0.33.5" + "@img/sharp-darwin-x64": "npm:0.33.5" + "@img/sharp-libvips-darwin-arm64": "npm:1.0.4" + "@img/sharp-libvips-darwin-x64": "npm:1.0.4" + "@img/sharp-libvips-linux-arm": "npm:1.0.5" + "@img/sharp-libvips-linux-arm64": "npm:1.0.4" + "@img/sharp-libvips-linux-s390x": "npm:1.0.4" + "@img/sharp-libvips-linux-x64": "npm:1.0.4" + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.4" + "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.4" + "@img/sharp-linux-arm": "npm:0.33.5" + "@img/sharp-linux-arm64": "npm:0.33.5" + "@img/sharp-linux-s390x": "npm:0.33.5" + "@img/sharp-linux-x64": "npm:0.33.5" + "@img/sharp-linuxmusl-arm64": "npm:0.33.5" + "@img/sharp-linuxmusl-x64": "npm:0.33.5" + "@img/sharp-wasm32": "npm:0.33.5" + "@img/sharp-win32-ia32": "npm:0.33.5" + "@img/sharp-win32-x64": "npm:0.33.5" + color: "npm:^4.2.3" + detect-libc: "npm:^2.0.3" + semver: "npm:^7.6.3" + dependenciesMeta: + "@img/sharp-darwin-arm64": + optional: true + "@img/sharp-darwin-x64": + optional: true + "@img/sharp-libvips-darwin-arm64": + optional: true + "@img/sharp-libvips-darwin-x64": + optional: true + "@img/sharp-libvips-linux-arm": + optional: true + "@img/sharp-libvips-linux-arm64": + optional: true + "@img/sharp-libvips-linux-s390x": + optional: true + "@img/sharp-libvips-linux-x64": + optional: true + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + "@img/sharp-libvips-linuxmusl-x64": + optional: true + "@img/sharp-linux-arm": + optional: true + "@img/sharp-linux-arm64": + optional: true + "@img/sharp-linux-s390x": + optional: true + "@img/sharp-linux-x64": + optional: true + "@img/sharp-linuxmusl-arm64": + optional: true + "@img/sharp-linuxmusl-x64": + optional: true + "@img/sharp-wasm32": + optional: true + "@img/sharp-win32-ia32": + optional: true + "@img/sharp-win32-x64": + optional: true + checksum: 10c0/6b81421ddfe6ee524d8d77e325c5e147fef22884e1c7b1656dfd89a88d7025894115da02d5f984261bf2e6daa16f98cadd1721c4ba408b4212b1d2a60f233484 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"shiki@npm:^1.10.3, shiki@npm:^1.11.0, shiki@npm:^1.14.1": + version: 1.14.1 + resolution: "shiki@npm:1.14.1" + dependencies: + "@shikijs/core": "npm:1.14.1" + "@types/hast": "npm:^3.0.4" + checksum: 10c0/756f45917f281e158eef114b985b9a4cae9f0470f955e2f96f4473a3aed327dc1d653b9bd6280eb28398bd0da6d533caa4fce61b716c1263c5d85df53964ade2 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"simple-swizzle@npm:^0.2.2": + version: 0.2.2 + resolution: "simple-swizzle@npm:0.2.2" + dependencies: + is-arrayish: "npm:^0.3.1" + checksum: 10c0/df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308 + languageName: node + linkType: hard + +"sirv@npm:^2.0.3": + version: 2.0.4 + resolution: "sirv@npm:2.0.4" + dependencies: + "@polka/url": "npm:^1.0.0-next.24" + mrmime: "npm:^2.0.0" + totalist: "npm:^3.0.0" + checksum: 10c0/68f8ee857f6a9415e9c07a1f31c7c561df8d5f1b1ba79bee3de583fa37da8718def5309f6b1c6e2c3ef77de45d74f5e49efc7959214443aa92d42e9c99180a4e + languageName: node + linkType: hard + +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.4 + resolution: "socks-proxy-agent@npm:8.0.4" + dependencies: + agent-base: "npm:^7.1.1" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/345593bb21b95b0508e63e703c84da11549f0a2657d6b4e3ee3612c312cb3a907eac10e53b23ede3557c6601d63252103494caa306b66560f43af7b98f53957a + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.3 + resolution: "socks@npm:2.8.3" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/d54a52bf9325165770b674a67241143a3d8b4e4c8884560c4e0e078aace2a728dffc7f70150660f51b85797c4e1a3b82f9b7aa25e0a0ceae1a243365da5c51a7 + languageName: node + linkType: hard + +"solid-devtools@npm:^0.30.1": + version: 0.30.1 + resolution: "solid-devtools@npm:0.30.1" + dependencies: + "@babel/core": "npm:^7.23.3" + "@babel/plugin-syntax-typescript": "npm:^7.23.3" + "@babel/types": "npm:^7.23.3" + "@solid-devtools/debugger": "npm:^0.23.4" + "@solid-devtools/shared": "npm:^0.13.2" + peerDependencies: + solid-js: ^1.8.0 + solid-start: ^0.3.0 + vite: ^2.2.3 || ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + solid-start: + optional: true + vite: + optional: true + checksum: 10c0/b8d6545fdb841b16b5d70e6248c7c1eb0980bf12f8fccb46254b74b26a1507404bac98f40b26f48a2e88d35f7b6ce09e61732a857c0dcd835de951891c5d9176 + languageName: node + linkType: hard + +"solid-js@npm:^1.8.18": + version: 1.9.1 + resolution: "solid-js@npm:1.9.1" + dependencies: + csstype: "npm:^3.1.0" + seroval: "npm:^1.1.0" + seroval-plugins: "npm:^1.1.0" + checksum: 10c0/32209babd637980eae2be6163d788093e43a27b24b11fc590be69696c5ada7b0ec00904a998c09da991e22f116e36b2c2916ce2b0e1bd629cfdcb4d160dd1b77 + languageName: node + linkType: hard + +"solid-refresh@npm:^0.6.3": + version: 0.6.3 + resolution: "solid-refresh@npm:0.6.3" + dependencies: + "@babel/generator": "npm:^7.23.6" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/types": "npm:^7.23.6" + peerDependencies: + solid-js: ^1.3 + checksum: 10c0/04f474704fe60e28835ece852bb6a5ce60106d1d360c2d9ed0f5740751b60672705591b5ae57a35202fd6c13c8cf4eb0e17897e954317e204c2e2bda46b8bb17 + languageName: node + linkType: hard + +"source-map-js@npm:^1.2.0": + version: 1.2.0 + resolution: "source-map-js@npm:1.2.0" + checksum: 10c0/7e5f896ac10a3a50fe2898e5009c58ff0dc102dcb056ed27a354623a0ece8954d4b2649e1a1b2b52ef2e161d26f8859c7710350930751640e71e374fe2d321a4 + languageName: node + linkType: hard + +"source-map@npm:^0.7.0, source-map@npm:^0.7.4": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc + languageName: node + linkType: hard + +"space-separated-tokens@npm:^2.0.0": + version: 2.0.2 + resolution: "space-separated-tokens@npm:2.0.2" + checksum: 10c0/6173e1d903dca41dcab6a2deed8b4caf61bd13b6d7af8374713500570aa929ff9414ae09a0519f4f8772df993300305a395d4871f35bc4ca72b6db57e1f30af8 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.6 + resolution: "ssri@npm:10.0.6" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/e5a1e23a4057a86a97971465418f22ea89bd439ac36ade88812dd920e4e61873e8abd6a9b72a03a67ef50faa00a2daf1ab745c5a15b46d03e0544a0296354227 + languageName: node + linkType: hard + +"stdin-discarder@npm:^0.2.2": + version: 0.2.2 + resolution: "stdin-discarder@npm:0.2.2" + checksum: 10c0/c78375e82e956d7a64be6e63c809c7f058f5303efcaf62ea48350af072bacdb99c06cba39209b45a071c1acbd49116af30df1df9abb448df78a6005b72f10537 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string-width@npm:^7.2.0": + version: 7.2.0 + resolution: "string-width@npm:7.2.0" + dependencies: + emoji-regex: "npm:^10.3.0" + get-east-asian-width: "npm:^1.0.0" + strip-ansi: "npm:^7.1.0" + checksum: 10c0/eb0430dd43f3199c7a46dcbf7a0b34539c76fe3aa62763d0b0655acdcbdf360b3f66f3d58ca25ba0205f42ea3491fa00f09426d3b7d3040e506878fc7664c9b9 + languageName: node + linkType: hard + +"stringify-entities@npm:^4.0.0": + version: 4.0.4 + resolution: "stringify-entities@npm:4.0.4" + dependencies: + character-entities-html4: "npm:^2.0.0" + character-entities-legacy: "npm:^3.0.0" + checksum: 10c0/537c7e656354192406bdd08157d759cd615724e9d0873602d2c9b2f6a5c0a8d0b1d73a0a08677848105c5eebac6db037b57c0b3a4ec86331117fa7319ed50448 + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-bom-string@npm:^1.0.0": + version: 1.0.0 + resolution: "strip-bom-string@npm:1.0.0" + checksum: 10c0/5c5717e2643225aa6a6d659d34176ab2657037f1fe2423ac6fcdb488f135e14fef1022030e426d8b4d0989e09adbd5c3288d5d3b9c632abeefd2358dfc512bca + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 10c0/a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce + languageName: node + linkType: hard + +"style-to-object@npm:^0.4.0": + version: 0.4.4 + resolution: "style-to-object@npm:0.4.4" + dependencies: + inline-style-parser: "npm:0.1.1" + checksum: 10c0/3a733080da66952881175b17d65f92985cf94c1ca358a92cf21b114b1260d49b94a404ed79476047fb95698d64c7e366ca7443f0225939e2fb34c38bbc9c7639 + languageName: node + linkType: hard + +"style-to-object@npm:^1.0.0": + version: 1.0.6 + resolution: "style-to-object@npm:1.0.6" + dependencies: + inline-style-parser: "npm:0.2.3" + checksum: 10c0/be5e8e3f0e35c0338de4112b9d861db576a52ebbd97f2501f1fb2c900d05c8fc42c5114407fa3a7f8b39301146cd8ca03a661bf52212394125a9629d5b771aba + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 10c0/dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 + languageName: node + linkType: hard + +"tabbable@npm:^6.2.0": + version: 6.2.0 + resolution: "tabbable@npm:6.2.0" + checksum: 10c0/ced8b38f05f2de62cd46836d77c2646c42b8c9713f5bd265daf0e78ff5ac73d3ba48a7ca45f348bafeef29b23da7187c72250742d37627883ef89cbd7fa76898 + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.2.1": + version: 6.2.1 + resolution: "tar@npm:6.2.1" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + languageName: node + linkType: hard + +"tldts-core@npm:^6.1.47": + version: 6.1.47 + resolution: "tldts-core@npm:6.1.47" + checksum: 10c0/538372072aea7153e842646a9e22d0d9335acf7fd877d10ee374cf78dceff79a2ccebadf7d25e0dbddd7b7b60bafe1c885aac3e3b1d5bec7806963c89b163ee7 + languageName: node + linkType: hard + +"tldts@npm:^6.1.32": + version: 6.1.47 + resolution: "tldts@npm:6.1.47" + dependencies: + tldts-core: "npm:^6.1.47" + bin: + tldts: bin/cli.js + checksum: 10c0/42c999ab24ce3ab221cfefe77488d145d16d9523524913badaa4af4f1f0d65e0a92a678659b22b7d26d1c62796540c95158049220c9ff243090b93470f236302 + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"totalist@npm:^3.0.0": + version: 3.0.1 + resolution: "totalist@npm:3.0.1" + checksum: 10c0/4bb1fadb69c3edbef91c73ebef9d25b33bbf69afe1e37ce544d5f7d13854cda15e47132f3e0dc4cafe300ddb8578c77c50a65004d8b6e97e77934a69aa924863 + languageName: node + linkType: hard + +"tough-cookie@npm:^5.0.0": + version: 5.0.0 + resolution: "tough-cookie@npm:5.0.0" + dependencies: + tldts: "npm:^6.1.32" + checksum: 10c0/4a69c885bf6f45c5a64e60262af99e8c0d58a33bd3d0ce5da62121eeb9c00996d0128a72df8fc4614cbde59cc8b70aa3e21e4c3c98c2bbde137d7aba7fa00124 + languageName: node + linkType: hard + +"tr46@npm:^5.0.0": + version: 5.0.0 + resolution: "tr46@npm:5.0.0" + dependencies: + punycode: "npm:^2.3.1" + checksum: 10c0/1521b6e7bbc8adc825c4561480f9fe48eb2276c81335eed9fa610aa4c44a48a3221f78b10e5f18b875769eb3413e30efbf209ed556a17a42aa8d690df44b7bee + languageName: node + linkType: hard + +"trim-lines@npm:^3.0.0": + version: 3.0.1 + resolution: "trim-lines@npm:3.0.1" + checksum: 10c0/3a1611fa9e52aa56a94c69951a9ea15b8aaad760eaa26c56a65330dc8adf99cb282fc07cc9d94968b7d4d88003beba220a7278bbe2063328eb23fb56f9509e94 + languageName: node + linkType: hard + +"trough@npm:^2.0.0": + version: 2.2.0 + resolution: "trough@npm:2.2.0" + checksum: 10c0/58b671fc970e7867a48514168894396dd94e6d9d6456aca427cc299c004fe67f35ed7172a36449086b2edde10e78a71a284ec0076809add6834fb8f857ccb9b0 + languageName: node + linkType: hard + +"tsconfck@npm:^3.1.1": + version: 3.1.3 + resolution: "tsconfck@npm:3.1.3" + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + bin: + tsconfck: bin/tsconfck.js + checksum: 10c0/64f7a8ed0a6d36b0902dfc0075e791d2242f7634644f124343ec0dec4f3f70092f929c5a9f59496d51883aa81bb1e595deb92a219593575d2e75b849064713d1 + languageName: node + linkType: hard + +"tslib@npm:^2.0.0, tslib@npm:^2.4.0": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6 + languageName: node + linkType: hard + +"type-fest@npm:^2.13.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb + languageName: node + linkType: hard + +"typesafe-path@npm:^0.2.2": + version: 0.2.2 + resolution: "typesafe-path@npm:0.2.2" + checksum: 10c0/05027ea6a52a1e879da39c53fae7f5059e50cf578d586cc6c7741c3eca0b37ee2da4ef16d35ecf9f60cd0e8ca5aca98ea47902672907a19470f2260e8769b933 + languageName: node + linkType: hard + +"typescript-auto-import-cache@npm:^0.3.3": + version: 0.3.3 + resolution: "typescript-auto-import-cache@npm:0.3.3" + dependencies: + semver: "npm:^7.3.8" + checksum: 10c0/d189f61729204553bfd290d4870b37af4edeb00c426b705ef3102d8ef477d5e2c242a0387a24d48016ee5b4ebed1ca40438d993f779cc58eaa5c08667c3f45b3 + languageName: node + linkType: hard + +"typescript@npm:^5.5.3": + version: 5.6.2 + resolution: "typescript@npm:5.6.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/3ed8297a8c7c56b7fec282532503d1ac795239d06e7c4966b42d4330c6cf433a170b53bcf93a130a7f14ccc5235de5560df4f1045eb7f3550b46ebed16d3c5e5 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5.5.3#optional!builtin": + version: 5.6.2 + resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=8c6c40" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/94eb47e130d3edd964b76da85975601dcb3604b0c848a36f63ac448d0104e93819d94c8bdf6b07c00120f2ce9c05256b8b6092d23cf5cf1c6fa911159e4d572f + languageName: node + linkType: hard + +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 + languageName: node + linkType: hard + +"unified@npm:^10.0.0": + version: 10.1.2 + resolution: "unified@npm:10.1.2" + dependencies: + "@types/unist": "npm:^2.0.0" + bail: "npm:^2.0.0" + extend: "npm:^3.0.0" + is-buffer: "npm:^2.0.0" + is-plain-obj: "npm:^4.0.0" + trough: "npm:^2.0.0" + vfile: "npm:^5.0.0" + checksum: 10c0/da9195e3375a74ab861a65e1d7b0454225d17a61646697911eb6b3e97de41091930ed3d167eb11881d4097c51deac407091d39ddd1ee8bf1fde3f946844a17a7 + languageName: node + linkType: hard + +"unified@npm:^11.0.0, unified@npm:^11.0.4, unified@npm:^11.0.5": + version: 11.0.5 + resolution: "unified@npm:11.0.5" + dependencies: + "@types/unist": "npm:^3.0.0" + bail: "npm:^2.0.0" + devlop: "npm:^1.0.0" + extend: "npm:^3.0.0" + is-plain-obj: "npm:^4.0.0" + trough: "npm:^2.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/53c8e685f56d11d9d458a43e0e74328a4d6386af51c8ac37a3dcabec74ce5026da21250590d4aff6733ccd7dc203116aae2b0769abc18cdf9639a54ae528dfc9 + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: "npm:^4.0.0" + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + languageName: node + linkType: hard + +"unist-util-find-after@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-find-after@npm:5.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-is: "npm:^6.0.0" + checksum: 10c0/a7cea473c4384df8de867c456b797ff1221b20f822e1af673ff5812ed505358b36f47f3b084ac14c3622cb879ed833b71b288e8aa71025352a2aab4c2925a6eb + languageName: node + linkType: hard + +"unist-util-is@npm:^5.0.0": + version: 5.2.1 + resolution: "unist-util-is@npm:5.2.1" + dependencies: + "@types/unist": "npm:^2.0.0" + checksum: 10c0/a2376910b832bb10653d2167c3cd85b3610a5fd53f5169834c08b3c3a720fae9043d75ad32d727eedfc611491966c26a9501d428ec62467edc17f270feb5410b + languageName: node + linkType: hard + +"unist-util-is@npm:^6.0.0": + version: 6.0.0 + resolution: "unist-util-is@npm:6.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/9419352181eaa1da35eca9490634a6df70d2217815bb5938a04af3a662c12c5607a2f1014197ec9c426fbef18834f6371bfdb6f033040fa8aa3e965300d70e7e + languageName: node + linkType: hard + +"unist-util-modify-children@npm:^4.0.0": + version: 4.0.0 + resolution: "unist-util-modify-children@npm:4.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + array-iterate: "npm:^2.0.0" + checksum: 10c0/63d44b09a2e4c674c72816d4328d668972e68cc965ea719fef1c642b66a3ebe3b102e284a3213b4920ebccff05e0f689b4eaae8a0e5c3dafcad117d1577496da + languageName: node + linkType: hard + +"unist-util-position-from-estree@npm:^2.0.0": + version: 2.0.0 + resolution: "unist-util-position-from-estree@npm:2.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/39127bf5f0594e0a76d9241dec4f7aa26323517120ce1edd5ed91c8c1b9df7d6fb18af556e4b6250f1c7368825720ed892e2b6923be5cdc08a9bb16536dc37b3 + languageName: node + linkType: hard + +"unist-util-position@npm:^4.0.0": + version: 4.0.4 + resolution: "unist-util-position@npm:4.0.4" + dependencies: + "@types/unist": "npm:^2.0.0" + checksum: 10c0/e506d702e25a0fb47a64502054f709a6ff5db98993bf139eec868cd11eb7de34392b781c6c2002e2c24d97aa398c14b32a47076129f36e4b894a2c1351200888 + languageName: node + linkType: hard + +"unist-util-position@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-position@npm:5.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/dde3b31e314c98f12b4dc6402f9722b2bf35e96a4f2d463233dd90d7cde2d4928074a7a11eff0a5eb1f4e200f27fc1557e0a64a7e8e4da6558542f251b1b7400 + languageName: node + linkType: hard + +"unist-util-remove-position@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-remove-position@npm:5.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-visit: "npm:^5.0.0" + checksum: 10c0/e8c76da4399446b3da2d1c84a97c607b37d03d1d92561e14838cbe4fdcb485bfc06c06cfadbb808ccb72105a80643976d0660d1fe222ca372203075be9d71105 + languageName: node + linkType: hard + +"unist-util-stringify-position@npm:^3.0.0": + version: 3.0.3 + resolution: "unist-util-stringify-position@npm:3.0.3" + dependencies: + "@types/unist": "npm:^2.0.0" + checksum: 10c0/14550027825230528f6437dad7f2579a841780318569851291be6c8a970bae6f65a7feb24dabbcfce0e5e68cacae85bf12cbda3f360f7c873b4db602bdf7bb21 + languageName: node + linkType: hard + +"unist-util-stringify-position@npm:^4.0.0": + version: 4.0.0 + resolution: "unist-util-stringify-position@npm:4.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/dfe1dbe79ba31f589108cb35e523f14029b6675d741a79dea7e5f3d098785045d556d5650ec6a8338af11e9e78d2a30df12b1ee86529cded1098da3f17ee999e + languageName: node + linkType: hard + +"unist-util-visit-children@npm:^3.0.0": + version: 3.0.0 + resolution: "unist-util-visit-children@npm:3.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + checksum: 10c0/51e95f54fbf11d414952c011c761c3960864948ad3fd2abe3989eb18b18d96b8f48e7ea5ab6f23264d1a3f4f5a1ff76312dd8f2196c78b762098403505c3abb9 + languageName: node + linkType: hard + +"unist-util-visit-parents@npm:^5.1.1": + version: 5.1.3 + resolution: "unist-util-visit-parents@npm:5.1.3" + dependencies: + "@types/unist": "npm:^2.0.0" + unist-util-is: "npm:^5.0.0" + checksum: 10c0/f6829bfd8f2eddf63a32e2c302cd50978ef0c194b792c6fe60c2b71dfd7232415a3c5941903972543e9d34e6a8ea69dee9ccd95811f4a795495ed2ae855d28d0 + languageName: node + linkType: hard + +"unist-util-visit-parents@npm:^6.0.0, unist-util-visit-parents@npm:^6.0.1": + version: 6.0.1 + resolution: "unist-util-visit-parents@npm:6.0.1" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-is: "npm:^6.0.0" + checksum: 10c0/51b1a5b0aa23c97d3e03e7288f0cdf136974df2217d0999d3de573c05001ef04cccd246f51d2ebdfb9e8b0ed2704451ad90ba85ae3f3177cf9772cef67f56206 + languageName: node + linkType: hard + +"unist-util-visit@npm:^4.0.0": + version: 4.1.2 + resolution: "unist-util-visit@npm:4.1.2" + dependencies: + "@types/unist": "npm:^2.0.0" + unist-util-is: "npm:^5.0.0" + unist-util-visit-parents: "npm:^5.1.1" + checksum: 10c0/56a1f49a4d8e321e75b3c7821d540a45165a031dd06324bb0e8c75e7737bc8d73bdddbf0b0ca82000f9708a4c36861c6ebe88d01f7cf00e925f5d75f13a3a017 + languageName: node + linkType: hard + +"unist-util-visit@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-visit@npm:5.0.0" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-is: "npm:^6.0.0" + unist-util-visit-parents: "npm:^6.0.0" + checksum: 10c0/51434a1d80252c1540cce6271a90fd1a106dbe624997c09ed8879279667fb0b2d3a685e02e92bf66598dcbe6cdffa7a5f5fb363af8fdf90dda6c855449ae39a5 + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.1.0": + version: 1.1.0 + resolution: "update-browserslist-db@npm:1.1.0" + dependencies: + escalade: "npm:^3.1.2" + picocolors: "npm:^1.0.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/a7452de47785842736fb71547651c5bbe5b4dc1e3722ccf48a704b7b34e4dcf633991eaa8e4a6a517ffb738b3252eede3773bef673ef9021baa26b056d63a5b9 + languageName: node + linkType: hard + +"uqr@npm:0.1.2": + version: 0.1.2 + resolution: "uqr@npm:0.1.2" + checksum: 10c0/40cd81b4c13f1764d52ec28da2d58e60816e6fae54d4eb75b32fbf3137937f438eff16c766139fb0faec5d248a5314591f5a0dbd694e569d419eed6f3bd80242 + languageName: node + linkType: hard + +"validate-html-nesting@npm:^1.2.1": + version: 1.2.2 + resolution: "validate-html-nesting@npm:1.2.2" + checksum: 10c0/4321ed3cae99a611b8d8e9b8dd7c06bd937102192b1639af362de1f5b74f199bfff5287490d31fd361a915d584efa544644edf028bcc8ac5f0993c0167531089 + languageName: node + linkType: hard + +"vfile-location@npm:^4.0.0": + version: 4.1.0 + resolution: "vfile-location@npm:4.1.0" + dependencies: + "@types/unist": "npm:^2.0.0" + vfile: "npm:^5.0.0" + checksum: 10c0/77097e819579214d3346aaa2b06e4d23e2413221ac4914679d312cf64973011b76f0e2424fa8f18987befcd6ed60f4f6c4c6ebd5d5326062173a95f6b4445a96 + languageName: node + linkType: hard + +"vfile-location@npm:^5.0.0": + version: 5.0.3 + resolution: "vfile-location@npm:5.0.3" + dependencies: + "@types/unist": "npm:^3.0.0" + vfile: "npm:^6.0.0" + checksum: 10c0/1711f67802a5bc175ea69750d59863343ed43d1b1bb25c0a9063e4c70595e673e53e2ed5cdbb6dcdc370059b31605144d95e8c061b9361bcc2b036b8f63a4966 + languageName: node + linkType: hard + +"vfile-message@npm:^3.0.0": + version: 3.1.4 + resolution: "vfile-message@npm:3.1.4" + dependencies: + "@types/unist": "npm:^2.0.0" + unist-util-stringify-position: "npm:^3.0.0" + checksum: 10c0/c4ccf9c0ced92d657846fd067fefcf91c5832cdbe2ecc431bb67886e8c959bf7fc05a9dbbca5551bc34c9c87a0a73854b4249f65c64ddfebc4d59ea24a18b996 + languageName: node + linkType: hard + +"vfile-message@npm:^4.0.0": + version: 4.0.2 + resolution: "vfile-message@npm:4.0.2" + dependencies: + "@types/unist": "npm:^3.0.0" + unist-util-stringify-position: "npm:^4.0.0" + checksum: 10c0/07671d239a075f888b78f318bc1d54de02799db4e9dce322474e67c35d75ac4a5ac0aaf37b18801d91c9f8152974ea39678aa72d7198758b07f3ba04fb7d7514 + languageName: node + linkType: hard + +"vfile@npm:^5.0.0": + version: 5.3.7 + resolution: "vfile@npm:5.3.7" + dependencies: + "@types/unist": "npm:^2.0.0" + is-buffer: "npm:^2.0.0" + unist-util-stringify-position: "npm:^3.0.0" + vfile-message: "npm:^3.0.0" + checksum: 10c0/c36bd4c3f16ec0c6cbad0711ca99200316bbf849d6b07aa4cb5d9062cc18ae89249fe62af9521926e9659c0e6bc5c2c1da0fe26b41fb71e757438297e1a41da4 + languageName: node + linkType: hard + +"vfile@npm:^6.0.0, vfile@npm:^6.0.2": + version: 6.0.3 + resolution: "vfile@npm:6.0.3" + dependencies: + "@types/unist": "npm:^3.0.0" + vfile-message: "npm:^4.0.0" + checksum: 10c0/e5d9eb4810623f23758cfc2205323e33552fb5972e5c2e6587babe08fe4d24859866277404fb9e2a20afb71013860d96ec806cb257536ae463c87d70022ab9ef + languageName: node + linkType: hard + +"vite-plugin-solid@npm:^2.10.2": + version: 2.10.2 + resolution: "vite-plugin-solid@npm:2.10.2" + dependencies: + "@babel/core": "npm:^7.23.3" + "@types/babel__core": "npm:^7.20.4" + babel-preset-solid: "npm:^1.8.4" + merge-anything: "npm:^5.1.7" + solid-refresh: "npm:^0.6.3" + vitefu: "npm:^0.2.5" + peerDependencies: + "@testing-library/jest-dom": ^5.16.6 || ^5.17.0 || ^6.* + solid-js: ^1.7.2 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + "@testing-library/jest-dom": + optional: true + checksum: 10c0/872a9d63d9d1ada29921de37f7420b0636ae7bc4c596072da0f098d03d932dee38b9e5f6ce88b42b4d3b19c9f06ceffcb86a335d2752784da18ca2827bf8ee56 + languageName: node + linkType: hard + +"vite@npm:^5.4.1": + version: 5.4.2 + resolution: "vite@npm:5.4.2" + dependencies: + esbuild: "npm:^0.21.3" + fsevents: "npm:~2.3.3" + postcss: "npm:^8.4.41" + rollup: "npm:^4.20.0" + peerDependencies: + "@types/node": ^18.0.0 || >=20.0.0 + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/23e347ca8aa6f0a774227e4eb7abae228f12c6806a727b046aa75e7ee37ffc2d68cff74360e12a42c347f79adc294e2363bc723b957bf4b382b5a8fb39e4df9d + languageName: node + linkType: hard + +"vitefu@npm:^0.2.5": + version: 0.2.5 + resolution: "vitefu@npm:0.2.5" + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + checksum: 10c0/5781ece3025b6be0eb87ee7d97760a7721b1c6c5ad60ede5f37c86393ece3c8fce4245472f62368eb192448034086e25bdcadf098eefc271277176ab9a430204 + languageName: node + linkType: hard + +"volar-service-css@npm:0.0.61": + version: 0.0.61 + resolution: "volar-service-css@npm:0.0.61" + dependencies: + vscode-css-languageservice: "npm:^6.3.0" + vscode-languageserver-textdocument: "npm:^1.0.11" + vscode-uri: "npm:^3.0.8" + peerDependencies: + "@volar/language-service": ~2.4.0 + peerDependenciesMeta: + "@volar/language-service": + optional: true + checksum: 10c0/6e1fe8e2178f8d85c6f1e4e9ad5b39ac1b085a68c216454f0f388394b40c88d12e9c3481f4a21ef95bd70e06684c87ae57b96eb025870a60d66cc85035fa0f42 + languageName: node + linkType: hard + +"volar-service-emmet@npm:0.0.61": + version: 0.0.61 + resolution: "volar-service-emmet@npm:0.0.61" + dependencies: + "@emmetio/css-parser": "npm:^0.4.0" + "@emmetio/html-matcher": "npm:^1.3.0" + "@vscode/emmet-helper": "npm:^2.9.3" + vscode-uri: "npm:^3.0.8" + peerDependencies: + "@volar/language-service": ~2.4.0 + peerDependenciesMeta: + "@volar/language-service": + optional: true + checksum: 10c0/8fc608896014caae22ab59b7c4d16474e0b1daa9e0792f84ff1a0ff4691017b9e776cf9b3fc6def88c1e8e29b5fa9f9c62d91f62f2fc896eb855d929d1b7add3 + languageName: node + linkType: hard + +"volar-service-html@npm:0.0.61": + version: 0.0.61 + resolution: "volar-service-html@npm:0.0.61" + dependencies: + vscode-html-languageservice: "npm:^5.3.0" + vscode-languageserver-textdocument: "npm:^1.0.11" + vscode-uri: "npm:^3.0.8" + peerDependencies: + "@volar/language-service": ~2.4.0 + peerDependenciesMeta: + "@volar/language-service": + optional: true + checksum: 10c0/16f253d7580811102c2eef9a606ae81792bd461d8917a02886370d36e3555916805bb9dfe79cf5b52365a04124efb8c06822429185aee5f747e9327d03fdc556 + languageName: node + linkType: hard + +"volar-service-prettier@npm:0.0.61": + version: 0.0.61 + resolution: "volar-service-prettier@npm:0.0.61" + dependencies: + vscode-uri: "npm:^3.0.8" + peerDependencies: + "@volar/language-service": ~2.4.0 + prettier: ^2.2 || ^3.0 + peerDependenciesMeta: + "@volar/language-service": + optional: true + prettier: + optional: true + checksum: 10c0/c4d2c7a60f41a546cbf6359979f92d284283ab50545a7cdc0be698ec9296105e575ea3271c724c99fe8179046574eb12e423e4b3f5765cc23523ceef6c309e7b + languageName: node + linkType: hard + +"volar-service-typescript-twoslash-queries@npm:0.0.61": + version: 0.0.61 + resolution: "volar-service-typescript-twoslash-queries@npm:0.0.61" + dependencies: + vscode-uri: "npm:^3.0.8" + peerDependencies: + "@volar/language-service": ~2.4.0 + peerDependenciesMeta: + "@volar/language-service": + optional: true + checksum: 10c0/1c55d6f0745d0f6077fcc773bfaca56c92090dc1e5a6e6ce2aa437bfe0d8649dd412b67045b5d3f7aec52e8fbb6cde9291088e1ecb7cfe942953a249b4537d28 + languageName: node + linkType: hard + +"volar-service-typescript@npm:0.0.61": + version: 0.0.61 + resolution: "volar-service-typescript@npm:0.0.61" + dependencies: + path-browserify: "npm:^1.0.1" + semver: "npm:^7.6.2" + typescript-auto-import-cache: "npm:^0.3.3" + vscode-languageserver-textdocument: "npm:^1.0.11" + vscode-nls: "npm:^5.2.0" + vscode-uri: "npm:^3.0.8" + peerDependencies: + "@volar/language-service": ~2.4.0 + peerDependenciesMeta: + "@volar/language-service": + optional: true + checksum: 10c0/c27a884c0f7cb43d456c46e9c09504e51b76d6d3bee75621a50bd10f6b771433d76640bdb8fc4ade00073f16de2d5e7ed6e88fa0994fe9ab5c0ba6fa907f461e + languageName: node + linkType: hard + +"volar-service-yaml@npm:0.0.61": + version: 0.0.61 + resolution: "volar-service-yaml@npm:0.0.61" + dependencies: + vscode-uri: "npm:^3.0.8" + yaml-language-server: "npm:~1.15.0" + peerDependencies: + "@volar/language-service": ~2.4.0 + peerDependenciesMeta: + "@volar/language-service": + optional: true + checksum: 10c0/be067b82b2389523d5e290dea3087674d3d44a1cd837e0a94794a8c81488b2f509a4115653213e05afd854d860accf653a68b2d392f6a6f83e1a99a409a61faa + languageName: node + linkType: hard + +"vscode-css-languageservice@npm:^6.3.0": + version: 6.3.0 + resolution: "vscode-css-languageservice@npm:6.3.0" + dependencies: + "@vscode/l10n": "npm:^0.0.18" + vscode-languageserver-textdocument: "npm:^1.0.11" + vscode-languageserver-types: "npm:3.17.5" + vscode-uri: "npm:^3.0.8" + checksum: 10c0/3afca42c36936583880ba99c1d5236a8bc8e410b2ccc3be49580dc1c448d78e7098701fc0ea12d76eecdf0a282630a3bd96ce6dfd867051f0c1c365276287ad3 + languageName: node + linkType: hard + +"vscode-html-languageservice@npm:^5.2.0, vscode-html-languageservice@npm:^5.3.0": + version: 5.3.0 + resolution: "vscode-html-languageservice@npm:5.3.0" + dependencies: + "@vscode/l10n": "npm:^0.0.18" + vscode-languageserver-textdocument: "npm:^1.0.11" + vscode-languageserver-types: "npm:^3.17.5" + vscode-uri: "npm:^3.0.8" + checksum: 10c0/2db5703568a654b6cad9f20b5374ef73ec058aac86efd886edce441eecb41d21204818c76b2784bb5f57c6127f44d5a2c8809da4b90e257981e6a20943ae31b5 + languageName: node + linkType: hard + +"vscode-json-languageservice@npm:4.1.8": + version: 4.1.8 + resolution: "vscode-json-languageservice@npm:4.1.8" + dependencies: + jsonc-parser: "npm:^3.0.0" + vscode-languageserver-textdocument: "npm:^1.0.1" + vscode-languageserver-types: "npm:^3.16.0" + vscode-nls: "npm:^5.0.0" + vscode-uri: "npm:^3.0.2" + checksum: 10c0/9165703884e5eef52d4bf52294051df6623461cc7a3d458ef1f4fa3f98ac93c3a79efc8c4a15fda6ddf6e43d155c207c3c13534dcac3fe7982ddf1926dbf22a7 + languageName: node + linkType: hard + +"vscode-jsonrpc@npm:6.0.0": + version: 6.0.0 + resolution: "vscode-jsonrpc@npm:6.0.0" + checksum: 10c0/22c35873155a62e71c454ad71165683536361eaabc1f07af41cbfd83c4c3bbfe3b36b58faba2b059d8f20da61b645a8c687bdf449407196e0bdb0a080257ca69 + languageName: node + linkType: hard + +"vscode-jsonrpc@npm:8.2.0": + version: 8.2.0 + resolution: "vscode-jsonrpc@npm:8.2.0" + checksum: 10c0/0789c227057a844f5ead55c84679206227a639b9fb76e881185053abc4e9848aa487245966cc2393fcb342c4541241b015a1a2559fddd20ac1e68945c95344e6 + languageName: node + linkType: hard + +"vscode-languageserver-protocol@npm:3.16.0": + version: 3.16.0 + resolution: "vscode-languageserver-protocol@npm:3.16.0" + dependencies: + vscode-jsonrpc: "npm:6.0.0" + vscode-languageserver-types: "npm:3.16.0" + checksum: 10c0/6a1ca737d826a710271b36d72c0833dfc8f78c68416725173892195d04b358ee8eb1095d5edfb7a62c7ea01128c762b9463ee8b6b1949efe060a43fe621ea62a + languageName: node + linkType: hard + +"vscode-languageserver-protocol@npm:3.17.5, vscode-languageserver-protocol@npm:^3.17.5": + version: 3.17.5 + resolution: "vscode-languageserver-protocol@npm:3.17.5" + dependencies: + vscode-jsonrpc: "npm:8.2.0" + vscode-languageserver-types: "npm:3.17.5" + checksum: 10c0/5f38fd80da9868d706eaa4a025f4aff9c3faad34646bcde1426f915cbd8d7e8b6c3755ce3fef6eebd256ba3145426af1085305f8a76e34276d2e95aaf339a90b + languageName: node + linkType: hard + +"vscode-languageserver-textdocument@npm:^1.0.1, vscode-languageserver-textdocument@npm:^1.0.11": + version: 1.0.12 + resolution: "vscode-languageserver-textdocument@npm:1.0.12" + checksum: 10c0/534349894b059602c4d97615a1147b6c4c031141c2093e59657f54e38570f5989c21b376836f13b9375419869242e9efb4066643208b21ab1e1dee111a0f00fb + languageName: node + linkType: hard + +"vscode-languageserver-types@npm:3.16.0": + version: 3.16.0 + resolution: "vscode-languageserver-types@npm:3.16.0" + checksum: 10c0/cc1bd68a7fe94152849e434cfc6fd8471f5c17198057fc6c95814d4b1655ab2b76d577b5fcd0f1f2a5df0285f054c96b9698e6d33e8183846f152d6e7d3ecc97 + languageName: node + linkType: hard + +"vscode-languageserver-types@npm:3.17.5, vscode-languageserver-types@npm:^3.15.1, vscode-languageserver-types@npm:^3.16.0, vscode-languageserver-types@npm:^3.17.5": + version: 3.17.5 + resolution: "vscode-languageserver-types@npm:3.17.5" + checksum: 10c0/1e1260de79a2cc8de3e46f2e0182cdc94a7eddab487db5a3bd4ee716f67728e685852707d72c059721ce500447be9a46764a04f0611e94e4321ffa088eef36f8 + languageName: node + linkType: hard + +"vscode-languageserver@npm:^7.0.0": + version: 7.0.0 + resolution: "vscode-languageserver@npm:7.0.0" + dependencies: + vscode-languageserver-protocol: "npm:3.16.0" + bin: + installServerIntoExtension: bin/installServerIntoExtension + checksum: 10c0/a36f66ab2f43ff3a754ccca5030ac3ec73cf373ab3d4d65c1de59895198b3abb3760691ada71fd7837e7dbda1eb14526420b4b91fe562facabfc568a2e58a88a + languageName: node + linkType: hard + +"vscode-languageserver@npm:^9.0.1": + version: 9.0.1 + resolution: "vscode-languageserver@npm:9.0.1" + dependencies: + vscode-languageserver-protocol: "npm:3.17.5" + bin: + installServerIntoExtension: bin/installServerIntoExtension + checksum: 10c0/8a0838d77c98a211c76e54bd3a6249fc877e4e1a73322673fb0e921168d8e91de4f170f1d4ff7e8b6289d0698207afc6aba6662d4c1cd8e4bd7cae96afd6b0c2 + languageName: node + linkType: hard + +"vscode-nls@npm:^5.0.0, vscode-nls@npm:^5.2.0": + version: 5.2.0 + resolution: "vscode-nls@npm:5.2.0" + checksum: 10c0/dc9e48f58ebbc807f435d351008813a2ea0c9432d51e778bcac9163c0642f929ddb518411ad654e775ce31e24d6acfa8fb7db8893c05b42c2019894e08b050f9 + languageName: node + linkType: hard + +"vscode-uri@npm:^2.1.2": + version: 2.1.2 + resolution: "vscode-uri@npm:2.1.2" + checksum: 10c0/4ed01e79f8caee5518d7dce567280001a00c87ff75c29421ac3693c735834f17950e79f818981c591e58c6efe681e13928470037b6ae75c948bec9b398e4c8db + languageName: node + linkType: hard + +"vscode-uri@npm:^3.0.2, vscode-uri@npm:^3.0.8": + version: 3.0.8 + resolution: "vscode-uri@npm:3.0.8" + checksum: 10c0/f7f217f526bf109589969fe6e66b71e70b937de1385a1d7bb577ca3ee7c5e820d3856a86e9ff2fa9b7a0bc56a3dd8c3a9a557d3fedd7df414bc618d5e6b567f9 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^5.0.0": + version: 5.0.0 + resolution: "w3c-xmlserializer@npm:5.0.0" + dependencies: + xml-name-validator: "npm:^5.0.0" + checksum: 10c0/8712774c1aeb62dec22928bf1cdfd11426c2c9383a1a63f2bcae18db87ca574165a0fbe96b312b73652149167ac6c7f4cf5409f2eb101d9c805efe0e4bae798b + languageName: node + linkType: hard + +"web-namespaces@npm:^2.0.0": + version: 2.0.1 + resolution: "web-namespaces@npm:2.0.1" + checksum: 10c0/df245f466ad83bd5cd80bfffc1674c7f64b7b84d1de0e4d2c0934fb0782e0a599164e7197a4bce310ee3342fd61817b8047ff04f076a1ce12dd470584142a4bd + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 + languageName: node + linkType: hard + +"whatwg-encoding@npm:^3.1.1": + version: 3.1.1 + resolution: "whatwg-encoding@npm:3.1.1" + dependencies: + iconv-lite: "npm:0.6.3" + checksum: 10c0/273b5f441c2f7fda3368a496c3009edbaa5e43b71b09728f90425e7f487e5cef9eb2b846a31bd760dd8077739c26faf6b5ca43a5f24033172b003b72cf61a93e + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^4.0.0": + version: 4.0.0 + resolution: "whatwg-mimetype@npm:4.0.0" + checksum: 10c0/a773cdc8126b514d790bdae7052e8bf242970cebd84af62fb2f35a33411e78e981f6c0ab9ed1fe6ec5071b09d5340ac9178e05b52d35a9c4bcf558ba1b1551df + languageName: node + linkType: hard + +"whatwg-url@npm:^14.0.0": + version: 14.0.0 + resolution: "whatwg-url@npm:14.0.0" + dependencies: + tr46: "npm:^5.0.0" + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/ac32e9ba9d08744605519bbe9e1371174d36229689ecc099157b6ba102d4251a95e81d81f3d80271eb8da182eccfa65653f07f0ab43ea66a6934e643fd091ba9 + languageName: node + linkType: hard + +"which-pm-runs@npm:^1.1.0": + version: 1.1.0 + resolution: "which-pm-runs@npm:1.1.0" + checksum: 10c0/b8f2f230aa49babe21cb93f169f5da13937f940b8cc7a47d2078d9d200950c0dba5ac5659bc01bdbe401e6db3adec6a97b6115215a4ca8e87fd714aebd0cabc6 + languageName: node + linkType: hard + +"which-pm@npm:^3.0.0": + version: 3.0.0 + resolution: "which-pm@npm:3.0.0" + dependencies: + load-yaml-file: "npm:^0.2.0" + checksum: 10c0/42be608abc9012b1456b99a1f3354119eb2500908e48532f873aa9d8c705d235d1b4ade62a2b28e35e90ecac1e0750a69cd6a079e3cf3e11d6bc1b601dbfda44 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + +"widest-line@npm:^4.0.1": + version: 4.0.1 + resolution: "widest-line@npm:4.0.1" + dependencies: + string-width: "npm:^5.0.1" + checksum: 10c0/7da9525ba45eaf3e4ed1a20f3dcb9b85bd9443962450694dae950f4bdd752839747bbc14713522b0b93080007de8e8af677a61a8c2114aa553ad52bde72d0f9c + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"ws@npm:^8.18.0": + version: 8.18.0 + resolution: "ws@npm:8.18.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 + languageName: node + linkType: hard + +"xml-name-validator@npm:^5.0.0": + version: 5.0.0 + resolution: "xml-name-validator@npm:5.0.0" + checksum: 10c0/3fcf44e7b73fb18be917fdd4ccffff3639373c7cb83f8fc35df6001fecba7942f1dbead29d91ebb8315e2f2ff786b508f0c9dc0215b6353f9983c6b7d62cb1f5 + languageName: node + linkType: hard + +"xmlchars@npm:^2.2.0": + version: 2.2.0 + resolution: "xmlchars@npm:2.2.0" + checksum: 10c0/b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 + languageName: node + linkType: hard + +"xxhash-wasm@npm:^1.0.2": + version: 1.0.2 + resolution: "xxhash-wasm@npm:1.0.2" + checksum: 10c0/5ba899d9216d9897de2d61a5331b16c99226e75ce47895fc8c730bac5cb00e6e50856dd8f489c12b3012f0fc81b6894806b2e44d2eb3cc7843919793485a30d1 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yaml-language-server@npm:~1.15.0": + version: 1.15.0 + resolution: "yaml-language-server@npm:1.15.0" + dependencies: + ajv: "npm:^8.11.0" + lodash: "npm:4.17.21" + prettier: "npm:2.8.7" + request-light: "npm:^0.5.7" + vscode-json-languageservice: "npm:4.1.8" + vscode-languageserver: "npm:^7.0.0" + vscode-languageserver-textdocument: "npm:^1.0.1" + vscode-languageserver-types: "npm:^3.16.0" + vscode-nls: "npm:^5.0.0" + vscode-uri: "npm:^3.0.2" + yaml: "npm:2.2.2" + dependenciesMeta: + prettier: + optional: true + bin: + yaml-language-server: bin/yaml-language-server + checksum: 10c0/0f01cb9503ebde941b4f9d1efc3c2df3132781f977079626d8d7b816073f4a1b4ed9a3bacfb020d39dacdf484847804045b87d5e4baadbc379c9f4194b4a06b4 + languageName: node + linkType: hard + +"yaml@npm:2.2.2": + version: 2.2.2 + resolution: "yaml@npm:2.2.2" + checksum: 10c0/a95bed9205a1f1cac11b315cb3f7ddf6b9979b85a478a18c86abf3066fd8d32c88f8de128c1ea97c2ac5f05de3268ff64e8286c241fd956851f1308044a50a9d + languageName: node + linkType: hard + +"yaml@npm:^2.5.0": + version: 2.5.0 + resolution: "yaml@npm:2.5.0" + bin: + yaml: bin.mjs + checksum: 10c0/771a1df083c8217cf04ef49f87244ae2dd7d7457094425e793b8f056159f167602ce172aa32d6bca21f787d24ec724aee3cecde938f6643564117bd151452631 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yocto-queue@npm:^1.1.1": + version: 1.1.1 + resolution: "yocto-queue@npm:1.1.1" + checksum: 10c0/cb287fe5e6acfa82690acb43c283de34e945c571a78a939774f6eaba7c285bacdf6c90fbc16ce530060863984c906d2b4c6ceb069c94d1e0a06d5f2b458e2a92 + languageName: node + linkType: hard + +"zod-to-json-schema@npm:^3.23.2": + version: 3.23.2 + resolution: "zod-to-json-schema@npm:3.23.2" + peerDependencies: + zod: ^3.23.3 + checksum: 10c0/7c9a4756a5eba231d2c354528eb8338a96489a2f804d1a8619e1baa10dde4178fc9f1b4f369e965d858b19a226dcb3375e5b38b5e822c52e2d7ad529d2a6912d + languageName: node + linkType: hard + +"zod-to-ts@npm:^1.2.0": + version: 1.2.0 + resolution: "zod-to-ts@npm:1.2.0" + peerDependencies: + typescript: ^4.9.4 || ^5.0.2 + zod: ^3 + checksum: 10c0/69375a29b04ac93fcfb7df286984a287c06219b51a0a70f15088baa662378d2078f4f96730f0090713df9172f02fe84ba9767cd2e1fbbc55f7d48b2190d9b0d9 + languageName: node + linkType: hard + +"zod@npm:^3.23.8": + version: 3.23.8 + resolution: "zod@npm:3.23.8" + checksum: 10c0/8f14c87d6b1b53c944c25ce7a28616896319d95bc46a9660fe441adc0ed0a81253b02b5abdaeffedbeb23bdd25a0bf1c29d2c12dd919aef6447652dd295e3e69 + languageName: node + linkType: hard + +"zwitch@npm:^2.0.0, zwitch@npm:^2.0.4": + version: 2.0.4 + resolution: "zwitch@npm:2.0.4" + checksum: 10c0/3c7830cdd3378667e058ffdb4cf2bb78ac5711214e2725900873accb23f3dfe5f9e7e5a06dcdc5f29605da976fc45c26d9a13ca334d6eea2245a15e77b8fc06e + languageName: node + linkType: hard