From 180eef34a211764aaa57282be4ebe37fa59cf389 Mon Sep 17 00:00:00 2001 From: Sebastian Bauer Date: Thu, 26 Jan 2023 08:11:31 +0100 Subject: [PATCH] Remove all systray related for v2. (#2329) Possible fix for #2265. Close systray separately after the application ran. --- v2/examples/systray/.gitignore | 3 - v2/examples/systray/README.md | 17 - v2/examples/systray/build/appicon.png | Bin 132625 -> 0 bytes v2/examples/systray/build/darwin/Info.plist | 27 - v2/examples/systray/build/windows/icon.ico | Bin 21017 -> 0 bytes v2/examples/systray/build/windows/info.json | 15 - .../build/windows/installer/project.nsi | 101 --- .../build/windows/installer/wails_tools.nsh | 171 ---- .../systray/build/windows/wails.exe.manifest | 15 - v2/examples/systray/frontend/dist/gitkeep | 0 v2/examples/systray/frontend/index.html | 59 -- .../systray/frontend/package-lock.json | 852 ------------------ v2/examples/systray/frontend/package.json | 13 - v2/examples/systray/go.mod | 34 - v2/examples/systray/go.sum | 79 -- v2/examples/systray/iconDarkMode.png | Bin 3167 -> 0 bytes v2/examples/systray/iconLightMode.png | Bin 3156 -> 0 bytes v2/examples/systray/main.go | 217 ----- v2/examples/systray/wails.json | 12 - v2/internal/platform/systray.go | 31 - v2/internal/platform/systray/menu_windows.go | 222 ----- v2/internal/platform/systray/systray_linux.go | 83 -- v2/internal/platform/systray/systray_mac.go | 91 -- .../platform/systray/systray_windows.go | 432 --------- v2/pkg/application/application.go | 18 - v2/pkg/application/systray.go | 151 ---- 26 files changed, 2643 deletions(-) delete mode 100644 v2/examples/systray/.gitignore delete mode 100644 v2/examples/systray/README.md delete mode 100644 v2/examples/systray/build/appicon.png delete mode 100644 v2/examples/systray/build/darwin/Info.plist delete mode 100644 v2/examples/systray/build/windows/icon.ico delete mode 100644 v2/examples/systray/build/windows/info.json delete mode 100644 v2/examples/systray/build/windows/installer/project.nsi delete mode 100644 v2/examples/systray/build/windows/installer/wails_tools.nsh delete mode 100644 v2/examples/systray/build/windows/wails.exe.manifest delete mode 100644 v2/examples/systray/frontend/dist/gitkeep delete mode 100644 v2/examples/systray/frontend/index.html delete mode 100644 v2/examples/systray/frontend/package-lock.json delete mode 100644 v2/examples/systray/frontend/package.json delete mode 100644 v2/examples/systray/go.mod delete mode 100644 v2/examples/systray/go.sum delete mode 100644 v2/examples/systray/iconDarkMode.png delete mode 100644 v2/examples/systray/iconLightMode.png delete mode 100644 v2/examples/systray/main.go delete mode 100644 v2/examples/systray/wails.json delete mode 100644 v2/internal/platform/systray.go delete mode 100644 v2/internal/platform/systray/menu_windows.go delete mode 100644 v2/internal/platform/systray/systray_linux.go delete mode 100644 v2/internal/platform/systray/systray_mac.go delete mode 100644 v2/internal/platform/systray/systray_windows.go delete mode 100644 v2/pkg/application/systray.go diff --git a/v2/examples/systray/.gitignore b/v2/examples/systray/.gitignore deleted file mode 100644 index 9fc08b5e..00000000 --- a/v2/examples/systray/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -build/bin -node_modules -frontend/wailsjs diff --git a/v2/examples/systray/README.md b/v2/examples/systray/README.md deleted file mode 100644 index c99dfcb9..00000000 --- a/v2/examples/systray/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# System Tray - -This example shows how to create a system tray using an experimental programmatic API. - -## Running - -As this example outputs text to the console, it is recommended to build using `wails build -debug`. - -## Supported Platforms - -- [x] Windows -- [ ] macOS -- [ ] Linux - - - - diff --git a/v2/examples/systray/build/appicon.png b/v2/examples/systray/build/appicon.png deleted file mode 100644 index 63617fe4f746b8a878bd5f44725f4f317b9d9850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132625 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 - - - CFBundlePackageType - APPL - CFBundleName - {{.Info.ProductName}} - CFBundleExecutable - {{.Name}} - CFBundleIdentifier - com.wails.{{.Name}} - CFBundleVersion - {{.Info.ProductVersion}} - CFBundleGetInfoString - {{.Info.Comments}} - CFBundleShortVersionString - {{.Info.ProductVersion}} - CFBundleIconFile - iconfile - LSMinimumSystemVersion - 10.13.0 - NSHighResolutionCapable - true - NSHumanReadableCopyright - {{.Info.Copyright}} - - \ No newline at end of file diff --git a/v2/examples/systray/build/windows/icon.ico b/v2/examples/systray/build/windows/icon.ico deleted file mode 100644 index f33479841c61728c8b5ee076ed13771c68e48b40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21017 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 AM*si- diff --git a/v2/examples/systray/build/windows/info.json b/v2/examples/systray/build/windows/info.json deleted file mode 100644 index c23c173c..00000000 --- a/v2/examples/systray/build/windows/info.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "fixed": { - "file_version": "{{.Info.ProductVersion}}" - }, - "info": { - "0000": { - "ProductVersion": "{{.Info.ProductVersion}}", - "CompanyName": "{{.Info.CompanyName}}", - "FileDescription": "{{.Info.ProductName}}", - "LegalCopyright": "{{.Info.Copyright}}", - "ProductName": "{{.Info.ProductName}}", - "Comments": "{{.Info.Comments}}" - } - } -} \ No newline at end of file diff --git a/v2/examples/systray/build/windows/installer/project.nsi b/v2/examples/systray/build/windows/installer/project.nsi deleted file mode 100644 index 3b1588e0..00000000 --- a/v2/examples/systray/build/windows/installer/project.nsi +++ /dev/null @@ -1,101 +0,0 @@ -Unicode true - -#### -## Please note: Template replacements don't work in this file. They are provided with default defines like -## mentioned underneath. -## If the keyword is not defined, "wails_tools.nsh" will populate them with the values from ProjectInfo. -## If they are defined here, "wails_tools.nsh" will not touch them. This allows to use this project.nsi manually -## from outside of Wails for debugging and development of the installer. -## -## For development first make a wails nsis build to populate the "wails_tools.nsh": -## > wails build --target windows/amd64 --nsis -## Then you can call makensis on this file with specifying the path to your binary: -## For a AMD64 only installer: -## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app.exe -## For a ARM64 only installer: -## > makensis -DARG_WAILS_ARM64_BINARY=..\..\bin\app.exe -## For a installer with both architectures: -## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app-amd64.exe -DARG_WAILS_ARM64_BINARY=..\..\bin\app-arm64.exe -#### -## The following information is taken from the ProjectInfo file, but they can be overwritten here. -#### -## !define INFO_PROJECTNAME "MyProject" # Default "{{.Name}}" -## !define INFO_COMPANYNAME "MyCompany" # Default "{{.Info.CompanyName}}" -## !define INFO_PRODUCTNAME "MyProduct" # Default "{{.Info.ProductName}}" -## !define INFO_PRODUCTVERSION "1.0.0" # Default "{{.Info.ProductVersion}}" -## !define INFO_COPYRIGHT "Copyright" # Default "{{.Info.Copyright}}" -### -## !define PRODUCT_EXECUTABLE "Application.exe" # Default "${INFO_PROJECTNAME}.exe" -## !define UNINST_KEY_NAME "UninstKeyInRegistry" # Default "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}" -#### -## !define REQUEST_EXECUTION_LEVEL "admin" # Default "admin" see also https://nsis.sourceforge.io/Docs/Chapter4.html -#### -## Include the wails tools -#### -!include "wails_tools.nsh" - -# The version information for this two must consist of 4 parts -VIProductVersion "${INFO_PRODUCTVERSION}.0" -VIFileVersion "${INFO_PRODUCTVERSION}.0" - -VIAddVersionKey "CompanyName" "${INFO_COMPANYNAME}" -VIAddVersionKey "FileDescription" "${INFO_PRODUCTNAME} Installer" -VIAddVersionKey "ProductVersion" "${INFO_PRODUCTVERSION}" -VIAddVersionKey "FileVersion" "${INFO_PRODUCTVERSION}" -VIAddVersionKey "LegalCopyright" "${INFO_COPYRIGHT}" -VIAddVersionKey "ProductName" "${INFO_PRODUCTNAME}" - -!include "MUI.nsh" - -!define MUI_ICON "..\icon.ico" -!define MUI_UNICON "..\icon.ico" -# !define MUI_WELCOMEFINISHPAGE_BITMAP "resources\leftimage.bmp" #Include this to add a bitmap on the left side of the Welcome Page. Must be a size of 164x314 -!define MUI_FINISHPAGE_NOAUTOCLOSE # Wait on the INSTFILES page so the user can take a look into the details of the installation steps -!define MUI_ABORTWARNING # This will warn the user if they exit from the installer. - -!insertmacro MUI_PAGE_WELCOME # Welcome to the installer page. -# !insertmacro MUI_PAGE_LICENSE "resources\eula.txt" # Adds a EULA page to the installer -!insertmacro MUI_PAGE_DIRECTORY # In which folder install page. -!insertmacro MUI_PAGE_INSTFILES # Installing page. -!insertmacro MUI_PAGE_FINISH # Finished installation page. - -!insertmacro MUI_UNPAGE_INSTFILES # Uinstalling page - -!insertmacro MUI_LANGUAGE "English" # Set the Language of the installer - -## The following two statements can be used to sign the installer and the uninstaller. The path to the binaries are provided in %1 -#!uninstfinalize 'signtool --file "%1"' -#!finalize 'signtool --file "%1"' - -Name "${INFO_PRODUCTNAME}" -OutFile "..\..\bin\${INFO_PROJECTNAME}-${ARCH}-installer.exe" # Name of the installer's file. -InstallDir "$PROGRAMFILES64\${INFO_COMPANYNAME}\${INFO_PRODUCTNAME}" # Default installing folder ($PROGRAMFILES is Program Files folder). -ShowInstDetails show # This will always show the installation details. - -Function .onInit - !insertmacro wails.checkArchitecture -FunctionEnd - -Section - !insertmacro wails.webview2runtime - - SetOutPath $INSTDIR - - !insertmacro wails.files - - CreateShortcut "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}" - CreateShortCut "$DESKTOP\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}" - - !insertmacro wails.writeUninstaller -SectionEnd - -Section "uninstall" - RMDir /r "$AppData\${PRODUCT_EXECUTABLE}" # Remove the WebView2 DataPath - - RMDir /r $INSTDIR - - Delete "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" - Delete "$DESKTOP\${INFO_PRODUCTNAME}.lnk" - - !insertmacro wails.deleteUninstaller -SectionEnd diff --git a/v2/examples/systray/build/windows/installer/wails_tools.nsh b/v2/examples/systray/build/windows/installer/wails_tools.nsh deleted file mode 100644 index 66dc209a..00000000 --- a/v2/examples/systray/build/windows/installer/wails_tools.nsh +++ /dev/null @@ -1,171 +0,0 @@ -# DO NOT EDIT - Generated automatically by `wails build` - -!include "x64.nsh" -!include "WinVer.nsh" -!include "FileFunc.nsh" - -!ifndef INFO_PROJECTNAME - !define INFO_PROJECTNAME "{{.Name}}" -!endif -!ifndef INFO_COMPANYNAME - !define INFO_COMPANYNAME "{{.Info.CompanyName}}" -!endif -!ifndef INFO_PRODUCTNAME - !define INFO_PRODUCTNAME "{{.Info.ProductName}}" -!endif -!ifndef INFO_PRODUCTVERSION - !define INFO_PRODUCTVERSION "{{.Info.ProductVersion}}" -!endif -!ifndef INFO_COPYRIGHT - !define INFO_COPYRIGHT "{{.Info.Copyright}}" -!endif -!ifndef PRODUCT_EXECUTABLE - !define PRODUCT_EXECUTABLE "${INFO_PROJECTNAME}.exe" -!endif -!ifndef UNINST_KEY_NAME - !define UNINST_KEY_NAME "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}" -!endif -!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINST_KEY_NAME}" - -!ifndef REQUEST_EXECUTION_LEVEL - !define REQUEST_EXECUTION_LEVEL "admin" -!endif - -RequestExecutionLevel "${REQUEST_EXECUTION_LEVEL}" - -!ifdef ARG_WAILS_AMD64_BINARY - !define SUPPORTS_AMD64 -!endif - -!ifdef ARG_WAILS_ARM64_BINARY - !define SUPPORTS_ARM64 -!endif - -!ifdef SUPPORTS_AMD64 - !ifdef SUPPORTS_ARM64 - !define ARCH "amd64_arm64" - !else - !define ARCH "amd64" - !endif -!else - !ifdef SUPPORTS_ARM64 - !define ARCH "arm64" - !else - !error "Wails: Undefined ARCH, please provide at least one of ARG_WAILS_AMD64_BINARY or ARG_WAILS_ARM64_BINARY" - !endif -!endif - -!macro wails.checkArchitecture - !ifndef WAILS_WIN10_REQUIRED - !define WAILS_WIN10_REQUIRED "This product is only supported on Windows 10 (Server 2016) and later." - !endif - - !ifndef WAILS_ARCHITECTURE_NOT_SUPPORTED - !define WAILS_ARCHITECTURE_NOT_SUPPORTED "This product can't be installed on the current Windows architecture. Supports: ${ARCH}" - !endif - - ${If} ${AtLeastWin10} - !ifdef SUPPORTS_AMD64 - ${if} ${IsNativeAMD64} - Goto ok - ${EndIf} - !endif - - !ifdef SUPPORTS_ARM64 - ${if} ${IsNativeARM64} - Goto ok - ${EndIf} - !endif - - IfSilent silentArch notSilentArch - silentArch: - SetErrorLevel 65 - Abort - notSilentArch: - MessageBox MB_OK "${WAILS_ARCHITECTURE_NOT_SUPPORTED}" - Quit - ${else} - IfSilent silentWin notSilentWin - silentWin: - SetErrorLevel 64 - Abort - notSilentWin: - MessageBox MB_OK "${WAILS_WIN10_REQUIRED}" - Quit - ${EndIf} - - ok: -!macroend - -!macro wails.files - !ifdef SUPPORTS_AMD64 - ${if} ${IsNativeAMD64} - File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_AMD64_BINARY}" - ${EndIf} - !endif - - !ifdef SUPPORTS_ARM64 - ${if} ${IsNativeARM64} - File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_ARM64_BINARY}" - ${EndIf} - !endif -!macroend - -!macro wails.writeUninstaller - WriteUninstaller "$INSTDIR\uninstall.exe" - - SetRegView 64 - WriteRegStr HKLM "${UNINST_KEY}" "Publisher" "${INFO_COMPANYNAME}" - WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "${INFO_PRODUCTNAME}" - WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${INFO_PRODUCTVERSION}" - WriteRegStr HKLM "${UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_EXECUTABLE}" - WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" - WriteRegStr HKLM "${UNINST_KEY}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S" - - ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2 - IntFmt $0 "0x%08X" $0 - WriteRegDWORD HKLM "${UNINST_KEY}" "EstimatedSize" "$0" -!macroend - -!macro wails.deleteUninstaller - Delete "$INSTDIR\uninstall.exe" - - SetRegView 64 - DeleteRegKey HKLM "${UNINST_KEY}" -!macroend - -# Install webview2 by launching the bootstrapper -# See https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#online-only-deployment -!macro wails.webview2runtime - !ifndef WAILS_INSTALL_WEBVIEW_DETAILPRINT - !define WAILS_INSTALL_WEBVIEW_DETAILPRINT "Installing: WebView2 Runtime" - !endif - - SetRegView 64 - # If the admin key exists and is not empty then webview2 is already installed - ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv" - ${If} $0 != "" - Goto ok - ${EndIf} - - ${If} ${REQUEST_EXECUTION_LEVEL} == "user" - # If the installer is run in user level, check the user specific key exists and is not empty then webview2 is already installed - ReadRegStr $0 HKCU "Software\Microsoft\EdgeUpdate\Clients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv" - ${If} $0 != "" - Goto ok - ${EndIf} - ${EndIf} - - SetDetailsPrint both - DetailPrint "${WAILS_INSTALL_WEBVIEW_DETAILPRINT}" - SetDetailsPrint listonly - - InitPluginsDir - CreateDirectory "$pluginsdir\webview2bootstrapper" - SetOutPath "$pluginsdir\webview2bootstrapper" - File "tmp\MicrosoftEdgeWebview2Setup.exe" - ExecWait '"$pluginsdir\webview2bootstrapper\MicrosoftEdgeWebview2Setup.exe" /silent /install' - - SetDetailsPrint both - ok: -!macroend \ No newline at end of file diff --git a/v2/examples/systray/build/windows/wails.exe.manifest b/v2/examples/systray/build/windows/wails.exe.manifest deleted file mode 100644 index 17e1a238..00000000 --- a/v2/examples/systray/build/windows/wails.exe.manifest +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - true/pm - permonitorv2,permonitor - - - \ No newline at end of file diff --git a/v2/examples/systray/frontend/dist/gitkeep b/v2/examples/systray/frontend/dist/gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/v2/examples/systray/frontend/index.html b/v2/examples/systray/frontend/index.html deleted file mode 100644 index 5451f1e3..00000000 --- a/v2/examples/systray/frontend/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - Systray Example - - - -
- -

Systray Example

-
- - diff --git a/v2/examples/systray/frontend/package-lock.json b/v2/examples/systray/frontend/package-lock.json deleted file mode 100644 index 1f1e962f..00000000 --- a/v2/examples/systray/frontend/package-lock.json +++ /dev/null @@ -1,852 +0,0 @@ -{ - "name": "frontend", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "frontend", - "version": "0.0.0", - "devDependencies": { - "vite": "^2.9.9" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", - "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", - "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/linux-loong64": "0.14.54", - "esbuild-android-64": "0.14.54", - "esbuild-android-arm64": "0.14.54", - "esbuild-darwin-64": "0.14.54", - "esbuild-darwin-arm64": "0.14.54", - "esbuild-freebsd-64": "0.14.54", - "esbuild-freebsd-arm64": "0.14.54", - "esbuild-linux-32": "0.14.54", - "esbuild-linux-64": "0.14.54", - "esbuild-linux-arm": "0.14.54", - "esbuild-linux-arm64": "0.14.54", - "esbuild-linux-mips64le": "0.14.54", - "esbuild-linux-ppc64le": "0.14.54", - "esbuild-linux-riscv64": "0.14.54", - "esbuild-linux-s390x": "0.14.54", - "esbuild-netbsd-64": "0.14.54", - "esbuild-openbsd-64": "0.14.54", - "esbuild-sunos-64": "0.14.54", - "esbuild-windows-32": "0.14.54", - "esbuild-windows-64": "0.14.54", - "esbuild-windows-arm64": "0.14.54" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", - "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", - "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", - "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", - "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", - "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", - "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", - "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", - "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", - "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", - "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", - "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", - "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", - "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", - "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", - "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", - "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", - "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", - "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", - "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", - "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rollup": { - "version": "2.77.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", - "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/vite": { - "version": "2.9.15", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz", - "integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==", - "dev": true, - "dependencies": { - "esbuild": "^0.14.27", - "postcss": "^8.4.13", - "resolve": "^1.22.0", - "rollup": ">=2.59.0 <2.78.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": ">=12.2.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "less": "*", - "sass": "*", - "stylus": "*" - }, - "peerDependenciesMeta": { - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - } - } - } - }, - "dependencies": { - "@esbuild/linux-loong64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", - "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", - "dev": true, - "optional": true - }, - "esbuild": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", - "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", - "dev": true, - "requires": { - "@esbuild/linux-loong64": "0.14.54", - "esbuild-android-64": "0.14.54", - "esbuild-android-arm64": "0.14.54", - "esbuild-darwin-64": "0.14.54", - "esbuild-darwin-arm64": "0.14.54", - "esbuild-freebsd-64": "0.14.54", - "esbuild-freebsd-arm64": "0.14.54", - "esbuild-linux-32": "0.14.54", - "esbuild-linux-64": "0.14.54", - "esbuild-linux-arm": "0.14.54", - "esbuild-linux-arm64": "0.14.54", - "esbuild-linux-mips64le": "0.14.54", - "esbuild-linux-ppc64le": "0.14.54", - "esbuild-linux-riscv64": "0.14.54", - "esbuild-linux-s390x": "0.14.54", - "esbuild-netbsd-64": "0.14.54", - "esbuild-openbsd-64": "0.14.54", - "esbuild-sunos-64": "0.14.54", - "esbuild-windows-32": "0.14.54", - "esbuild-windows-64": "0.14.54", - "esbuild-windows-arm64": "0.14.54" - } - }, - "esbuild-android-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", - "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", - "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", - "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", - "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", - "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", - "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", - "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", - "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", - "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", - "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", - "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", - "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", - "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", - "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", - "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", - "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", - "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", - "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", - "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", - "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", - "dev": true, - "optional": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "rollup": { - "version": "2.77.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", - "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "vite": { - "version": "2.9.15", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz", - "integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==", - "dev": true, - "requires": { - "esbuild": "^0.14.27", - "fsevents": "~2.3.2", - "postcss": "^8.4.13", - "resolve": "^1.22.0", - "rollup": ">=2.59.0 <2.78.0" - } - } - } -} diff --git a/v2/examples/systray/frontend/package.json b/v2/examples/systray/frontend/package.json deleted file mode 100644 index 4ac88179..00000000 --- a/v2/examples/systray/frontend/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "frontend", - "private": true, - "version": "0.0.0", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "vite": "^2.9.9" - } -} \ No newline at end of file diff --git a/v2/examples/systray/go.mod b/v2/examples/systray/go.mod deleted file mode 100644 index f624d426..00000000 --- a/v2/examples/systray/go.mod +++ /dev/null @@ -1,34 +0,0 @@ -module github.com/wailsapp/examples/systray - -go 1.18 - -require github.com/wailsapp/wails/v2 v2.2.0 - -require ( - github.com/bep/debounce v1.2.1 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect - github.com/google/uuid v1.1.2 // indirect - github.com/imdario/mergo v0.3.12 // indirect - github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect - github.com/labstack/echo/v4 v4.9.0 // indirect - github.com/labstack/gommon v0.3.1 // indirect - github.com/leaanthony/go-ansi-parser v1.0.1 // indirect - github.com/leaanthony/gosod v1.0.3 // indirect - github.com/leaanthony/slicer v1.5.0 // indirect - github.com/mattn/go-colorable v0.1.11 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect - github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/samber/lo v1.27.1 // indirect - github.com/tkrajina/go-reflector v0.5.5 // indirect - github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fasttemplate v1.2.1 // indirect - github.com/wailsapp/mimetype v1.4.1 // indirect - golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect - golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect - golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect - golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect - golang.org/x/text v0.3.7 // indirect -) - -replace github.com/wailsapp/wails/v2 v2.2.0 => ../.. diff --git a/v2/examples/systray/go.sum b/v2/examples/systray/go.sum deleted file mode 100644 index 9f577485..00000000 --- a/v2/examples/systray/go.sum +++ /dev/null @@ -1,79 +0,0 @@ -github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY= -github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck= -github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs= -github.com/labstack/echo/v4 v4.9.0 h1:wPOF1CE6gvt/kmbMR4dGzWvHMPT+sAEUJOwOTtvITVY= -github.com/labstack/echo/v4 v4.9.0/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks= -github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o= -github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= -github.com/leaanthony/debme v1.2.1 h1:9Tgwf+kjcrbMQ4WnPcEIUcQuIZYqdWftzZkBr+i/oOc= -github.com/leaanthony/debme v1.2.1/go.mod h1:3V+sCm5tYAgQymvSOfYQ5Xx2JCr+OXiD9Jkw3otUjiA= -github.com/leaanthony/go-ansi-parser v1.0.1 h1:97v6c5kYppVsbScf4r/VZdXyQ21KQIfeQOk2DgKxGG4= -github.com/leaanthony/go-ansi-parser v1.0.1/go.mod h1:7arTzgVI47srICYhvgUV4CGd063sGEeoSlych5yeSPM= -github.com/leaanthony/gosod v1.0.3 h1:Fnt+/B6NjQOVuCWOKYRREZnjGyvg+mEhd1nkkA04aTQ= -github.com/leaanthony/gosod v1.0.3/go.mod h1:BJ2J+oHsQIyIQpnLPjnqFGTMnOZXDbvWtRCSG7jGxs4= -github.com/leaanthony/slicer v1.5.0 h1:aHYTN8xbCCLxJmkNKiLB6tgcMARl4eWmH9/F+S/0HtY= -github.com/leaanthony/slicer v1.5.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY= -github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= -github.com/mattn/go-colorable v0.1.11 h1:nQ+aFkoE2TMGc0b68U2OKSexC+eq46+XwZzWXHRmPYs= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 h1:acNfDZXmm28D2Yg/c3ALnZStzNaZMSagpbr96vY6Zjc= -github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/samber/lo v1.27.1 h1:sTXwkRiIFIQG+G0HeAvOEnGjqWeWtI9cg5/n51KrxPg= -github.com/samber/lo v1.27.1/go.mod h1:it33p9UtPMS7z72fP4gw/EIfQB2eI8ke7GR2wc6+Rhg= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= -github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M= -github.com/tkrajina/go-reflector v0.5.5 h1:gwoQFNye30Kk7NrExj8zm3zFtrGPqOkzFMLuQZg1DtQ= -github.com/tkrajina/go-reflector v0.5.5/go.mod h1:ECbqLgccecY5kPmPmXg1MrHW585yMcDkVl6IvJe64T4= -github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= -github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= -golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= -golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/v2/examples/systray/iconDarkMode.png b/v2/examples/systray/iconDarkMode.png deleted file mode 100644 index 8d72ee490f6490f0ad01a685ee708cae021d1d50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3167 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hELsS+ zC#C9D0Vi&D~Tl`=|73as??%gf94%8m8%i_-NCEiEne z4UF`SjC6}q(sYX}^GXscbn}XpK}JB#a7isrF3Kz@$;{7F0GXMXlwVq6tE9xGpr8OX zyd*OXVR~LM)ceW#x%wa(eM3D1ePrdS6`44cgJdw27i8p@;mZj#ED1$=+6fRbt zxryniKB;->B^kC#W+rG7;h8Du;vj=^N>N;(pO%@EYO7QnFR7|XlZ7qYorG;rXsh%$~QkHGp*7ku_V=2$;iOS zNY~In*U&J;$iT|P*viOK+tAR;zyNGASaoViVoG93A|ds5pcHFUkz3&FYvqwyT#{c@ z2^NAR^WfA%2oJ)|$pooZP*4EJvQ=U-DAaA03X1YmN|RGlz?Q>hi}TY;$`gxH9n(|u zN^F%J)6z2YGD|8I0zfHO!BEf8K+hCaM|nnS9zMV6L)>Dc56W>cr`hOZI3A(^DT{(~ zK3G$bi<=#njXt=90F@SYT!>;QH7~_hsYuD*?ip`^9RmYnW2Uon07i5$FlbCHow(bZ z*-@a~e(|H(99pfN7z|%b(How=sx1yH|xnKp`wpFyahIj=CHC}JQlvNzHwXA zRt1eNg=tA^GZsIbbDCA?$QdK+`~S+)Z_H(#J}Ja>^CIyrA-6dC*lj*@ch6fDp0#pu zTV9mYs+Iod`!uI)S*f-}+Bl@tueAvw2l5nAW)^`tRvD?7Bvc$2TI*uYKB?6+eI9&|lfV z>{*)Xw(jkTLMd|?HcamX+eRCUY#;(>|s>{=V*80gi-kh+0 zSL0vi7n44}dm5kgIQypU~3=EtF9+AZi4BWyX%*Zfnjsyb(>j_U6$B>FSZ)e~2 zmX4G-Hh=QT;}(&d-v!<7@ZC7OHE2Wb3RcgLi?f6_CS00*Pe-@Iq_|g*9xJtO+l^`FJ(C@>UE^7EWLfU{p^{zCCSNY=g!RZQPXcT{-}5<@ z&*pxwdBUVhI;|wNY zN-54-Q-A$jv3`M+kH7zajstlwUNs+Fus%Q|rEk|~H9=L+Nta%J;bzF&`g%*?y7_l@ zm%nd1oA$Vu_3XxGh6V+W`-}yvBrmWq953YSwkj35;jlAo6~l7Ye zynO3cQS-bz7vB0?E@OEh{l)!c(ZprTmrp$Z+_d%->xEO|Mi(k!%R6Q@R*k*8O}tnyoc?FDl<7sQy&}uSj43PQ zOwXt~#@Tb8V(M7bQDJi~WW6Bcy7>Kk^Uog-SuZt>TftuK^y$;PHoHkiHr%}%yJp?G ztXubX7PqhTlX_Ovz{t34*|Hh0r?SqN?d>Gux@zv-yyI_gZ=d-(^zaj#23yWecK;8E zGp40)J-mPQYVP!Na}w8u^LooOI&rW#9yoT4?b`M0qVucw#;uZPP$^lqKW)?go~4Hu zoPNr5yzt5gc?pRCUGoxLBW-3s3ZDscKjCbTXQ`T8@Ug!s+r_YY_39HTMqQsgRG1h-7_Sty`FMMCTUlH4ew)(wGB$DT&IAAc z?OSx_Y0<*%+r=4T8P@Vne)ur)M$XmSXUt-SPfyx0CBdNM*s(|9rBR1vdb8T>19~|M zB!7R(DEM&t$)_vba5yF=o%dbr&3y&7_?cUN~62nCZx(t9ySp9JO39 z$3dZCbNYF?J?2Udg^wRga2?pBtr9HtufdRUUF`0*Zt>eQ-bSvB6jEtXkl~ZpGFEcf zI(dH2PniQ7jCmO9_RH7p-@nMrqVMpB4+XCKs;>AjRDKHP%4WHhAS2>>*B+Pi|;f7bY=DRlh`&U0-kF*|6e1GG{jTP5l%RaDpm(4c+al?$$Pyf~Z z{q^;|t*vc6!w>N(9%+A%cE~nxAMLQ@Wb)9k`&=nfZy5wGN?)z`V4t?@*4mbyGt8iV Nfv2mV%Q~loCIB8h8^{0v diff --git a/v2/examples/systray/iconLightMode.png b/v2/examples/systray/iconLightMode.png deleted file mode 100644 index e8d3418756ac7e9f7f84586e557c1421c09fe789..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3156 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 diff --git a/v2/examples/systray/main.go b/v2/examples/systray/main.go deleted file mode 100644 index 1c73d0b6..00000000 --- a/v2/examples/systray/main.go +++ /dev/null @@ -1,217 +0,0 @@ -package main - -import ( - "context" - "embed" - "fmt" - "time" - - "github.com/wailsapp/wails/v2/pkg/application" - "github.com/wailsapp/wails/v2/pkg/menu" - "github.com/wailsapp/wails/v2/pkg/options" - "github.com/wailsapp/wails/v2/pkg/options/windows" - "github.com/wailsapp/wails/v2/pkg/runtime" -) - -//go:embed all:frontend/dist -var assets embed.FS - -//go:embed iconLightMode.png -var lightModeIcon []byte - -//go:embed iconDarkMode.png -var darkModeIcon []byte - -func main() { - - var runtimeContext context.Context - - // Create a new Wails application using the current options - mainApp := application.NewWithOptions(&options.App{ - Assets: assets, - StartHidden: true, - HideWindowOnClose: true, - OnStartup: func(ctx context.Context) { - runtimeContext = ctx - }, - Windows: &windows.Options{ - BackdropType: windows.Acrylic, - WindowIsTranslucent: true, - WebviewIsTransparent: true, - DisableWindowIcon: true, - }, - }) - - // ------------------------------------ - // Create a systray for the application - // Currently we only support PNG for icons - - var systray *application.SystemTray - var showWindow = func() { - // Show the window - // In a future version of this API, it will be possible to - // create windows programmatically and be able to show/hide - // them from the systray with something like: - // - // myWindow := mainApp.NewWindow(...) - // mainApp.NewSystemTray(&options.SystemTray{ - // OnLeftClick: func() { - // myWindow.SetVisibility(!myWindow.IsVisible()) - // } - // }) - runtime.Show(runtimeContext) - } - systray = mainApp.NewSystemTray(&options.SystemTray{ - // This is the icon used when the system in using light mode - LightModeIcon: &options.SystemTrayIcon{ - Data: lightModeIcon, - }, - // This is the icon used when the system in using dark mode - DarkModeIcon: &options.SystemTrayIcon{ - Data: darkModeIcon, - }, - Tooltip: "Systray Example", - OnLeftClick: showWindow, - OnMenuClose: func() { - // Add the left click call after 500ms - // We do this because the left click fires right - // after the menu closes, and we don't want to show - // the window on menu close. - go func() { - time.Sleep(500 * time.Millisecond) - systray.OnLeftClick(showWindow) - }() - }, - OnMenuOpen: func() { - // Remove the left click callback - systray.OnLeftClick(func() {}) - }, - }) - - // --------------------------------------------------- - // Menu items are created in the order they are added. - // This is a contrived example to show what can be done - // with menus. - - // This is a menuitem we will show/hide at runtime - visibleNotVisible := menu.Label("visible?").Show() - - counter := 0 - icons := [][]byte{lightModeIcon, darkModeIcon} - iconCounter := 0 - - disabledEnabledMenu := menu.Label("disabled").Disable().OnClick(func(c *menu.CallbackData) { - println("Disabled item clicked!") - }) - - // This checkbox menuitem will print the current checked state to the console when clicked. - // When a checkbox item is clicked, the state of the `Checked` variable is toggled. - // The UI automatically reflects the current state, even if this item is used multiple times. - mycheckbox := menu.Label("checked").SetChecked(true).OnClick(func(c *menu.CallbackData) { - println("My checked state is: ", c.MenuItem.Checked) - }) - - // This radio callback will be used by all the radio items. - // The CallbackData has a pointer back to the menuitem, so we can determine - // which item was selected - radioCallback := func(data *menu.CallbackData) { - println("Radio item clicked:", data.MenuItem.Label) - } - - // We create 3 radio items , with the first being selected. They all share a callback. - radio1 := menu.Radio("Radio 1", true, nil, radioCallback) - radio2 := menu.Radio("Radio 2", false, nil, radioCallback) - radio3 := menu.Radio("Radio 3", false, nil, radioCallback) - - // Now we set the menu of the systray. - // This would likely be created in a different function/file - systray.SetMenu(menu.NewMenuFromItems( - - visibleNotVisible, - // This menu item changes its label when clicked. - menu.Label("Click Me!").OnClick(func(c *menu.CallbackData) { - counter++ - c.MenuItem.SetLabel(fmt.Sprintf("Clicked %d times", counter)) - systray.Update() - }), - - // We add a checkbox - menu.Separator(), - mycheckbox, - - // Next we create 2 radio groups containing the same menu items. - // It is perfectly fine to reuse radio item groups - the state and UI will - // stay in sync. Warning: Using the same radio item in different groups will - // lead to unspecified behaviour! - menu.Separator(), - radio1, - radio2, - radio3, - - menu.Separator(), - mycheckbox, - - menu.Label("Toggle items!").OnClick(func(c *menu.CallbackData) { - - iconCounter++ - - // Swap light and dark mode icons - systray.SetIcons(&options.SystemTrayIcon{ - Data: icons[iconCounter%2], - }, &options.SystemTrayIcon{ - Data: icons[(iconCounter+1)%2], - }) - - // Do some toggling - if iconCounter%2 == 0 { - visibleNotVisible.Show() - disabledEnabledMenu.Disable() - } else { - visibleNotVisible.Hide() - disabledEnabledMenu.Enable() - } - - // Update the menu - err := systray.Update() - if err != nil { - panic(err) - } - }), - - // We create a checkbox item that is initially unchecked. - menu.Label("unchecked").SetChecked(false).OnClick(func(c *menu.CallbackData) { - println("My checked state is: ", c.MenuItem.Checked) - systray.SetTooltip("My updated tooltip!") - }), - - // This menu item will toggle between enabled and disabled each time the "Toggle items!" menu - // option is selected - disabledEnabledMenu, - - // We now add a submenu, reusing the checkbox item and submenu we created earlier - menu.SubMenu("submenu", menu.NewMenuFromItems( - mycheckbox, - menu.Label("submenu item").OnClick(func(data *menu.CallbackData) { - println("submenu item clicked") - }), - menu.Separator(), - radio1, - radio2, - radio3, - )), - menu.Separator(), - menu.Label("quit").OnClick(func(_ *menu.CallbackData) { - println("Quitting application") - mainApp.Quit() - }), - )) - - println("Check out the system tray!") - - // Now we run the application - err := mainApp.Run() - - if err != nil { - println("Error:", err.Error()) - } -} diff --git a/v2/examples/systray/wails.json b/v2/examples/systray/wails.json deleted file mode 100644 index f532e008..00000000 --- a/v2/examples/systray/wails.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "systray", - "outputfilename": "systray", - "frontend:install": "npm install", - "frontend:build": "npm run build", - "frontend:dev:watcher": "npm run dev", - "frontend:dev:serverUrl": "auto", - "author": { - "name": "Lea Anthony", - "email": "lea.anthony@gmail.com" - } -} diff --git a/v2/internal/platform/systray.go b/v2/internal/platform/systray.go deleted file mode 100644 index af79f427..00000000 --- a/v2/internal/platform/systray.go +++ /dev/null @@ -1,31 +0,0 @@ -package platform - -import ( - "github.com/wailsapp/wails/v2/internal/platform/systray" - "github.com/wailsapp/wails/v2/pkg/menu" - "github.com/wailsapp/wails/v2/pkg/options" -) -import "github.com/samber/lo" - -type SysTray interface { - // SetTitle sets the title of the tray menu - SetTitle(title string) - SetTooltip(tooltip string) error - Show() error - Hide() error - Run() error - Close() - SetMenu(menu *menu.Menu) error - SetIcons(lightModeIcon, darkModeIcon *options.SystemTrayIcon) error - Update() error - OnLeftClick(func()) - OnRightClick(func()) - OnLeftDoubleClick(func()) - OnRightDoubleClick(func()) - OnMenuClose(func()) - OnMenuOpen(func()) -} - -func NewSysTray() SysTray { - return lo.Must(systray.New()) -} diff --git a/v2/internal/platform/systray/menu_windows.go b/v2/internal/platform/systray/menu_windows.go deleted file mode 100644 index b191a41c..00000000 --- a/v2/internal/platform/systray/menu_windows.go +++ /dev/null @@ -1,222 +0,0 @@ -//go:build windows - -package systray - -import ( - "errors" - "fmt" - platformMenu "github.com/wailsapp/wails/v2/internal/platform/menu" - "github.com/wailsapp/wails/v2/internal/platform/win32" - "github.com/wailsapp/wails/v2/pkg/menu" -) - -type RadioGroupMember struct { - ID int - MenuItem *menu.MenuItem -} - -type RadioGroup []*RadioGroupMember - -func (r *RadioGroup) Add(id int, item *menu.MenuItem) { - *r = append(*r, &RadioGroupMember{ - ID: id, - MenuItem: item, - }) -} - -func (r *RadioGroup) Bounds() (int, int) { - p := *r - return p[0].ID, p[len(p)-1].ID -} - -func (r *RadioGroup) MenuID(item *menu.MenuItem) int { - for _, member := range *r { - if member.MenuItem == item { - return member.ID - } - } - panic("RadioGroup.MenuID: item not found:") -} - -type PopupMenu struct { - menu win32.PopupMenu - parent win32.HWND - menuMapping map[int]*menu.MenuItem - checkboxItems map[*menu.MenuItem][]int - radioGroups map[*menu.MenuItem][]*RadioGroup - menuData *menu.Menu - currentMenuID int - onMenuClose func() - onMenuOpen func() -} - -func (p *PopupMenu) buildMenu(parentMenu win32.PopupMenu, inputMenu *menu.Menu) error { - var currentRadioGroup RadioGroup - for _, item := range inputMenu.Items { - if item.Hidden { - continue - } - var ret bool - p.currentMenuID++ - itemID := p.currentMenuID - p.menuMapping[itemID] = item - - flags := win32.MF_STRING - if item.Disabled { - flags = flags | win32.MF_GRAYED - } - if item.Checked { - flags = flags | win32.MF_CHECKED - } - //if item.BarBreak { - // flags = flags | win32.MF_MENUBARBREAK - //} - if item.IsSeparator() { - flags = flags | win32.MF_SEPARATOR - } - - if item.IsCheckbox() { - p.checkboxItems[item] = append(p.checkboxItems[item], itemID) - } - if item.IsRadio() { - currentRadioGroup.Add(itemID, item) - } else { - if len(currentRadioGroup) > 0 { - for _, radioMember := range currentRadioGroup { - currentRadioGroup := currentRadioGroup - p.radioGroups[radioMember.MenuItem] = append(p.radioGroups[radioMember.MenuItem], ¤tRadioGroup) - } - currentRadioGroup = RadioGroup{} - } - } - - if item.SubMenu != nil { - flags = flags | win32.MF_POPUP - submenu := win32.CreatePopupMenu() - err := p.buildMenu(submenu, item.SubMenu) - if err != nil { - return err - } - itemID = int(submenu) - } - - var menuText = item.Label - if item.Accelerator != nil { - shortcut := win32.AcceleratorToShortcut(item.Accelerator) - menuText = fmt.Sprintf("%s\t%s", menuText, shortcut) - // Popup Menus don't appear to support accelerators and I'm not - // sure they make sense either - } - - ret = parentMenu.Append(uintptr(flags), uintptr(itemID), menuText) - if ret == false { - return errors.New("AppendMenu failed") - } - } - if len(currentRadioGroup) > 0 { - for _, radioMember := range currentRadioGroup { - currentRadioGroup := currentRadioGroup - p.radioGroups[radioMember.MenuItem] = append(p.radioGroups[radioMember.MenuItem], ¤tRadioGroup) - } - currentRadioGroup = RadioGroup{} - } - return nil -} - -func (p *PopupMenu) Update() error { - p.menu = win32.CreatePopupMenu() - p.menuMapping = make(map[int]*menu.MenuItem) - p.currentMenuID = win32.MenuItemMsgID - err := p.buildMenu(p.menu, p.menuData) - if err != nil { - return err - } - p.updateRadioGroups() - return nil -} - -func NewPopupMenu(parent win32.HWND, inputMenu *menu.Menu) (*PopupMenu, error) { - result := &PopupMenu{ - parent: parent, - menuData: inputMenu, - checkboxItems: make(map[*menu.MenuItem][]int), - radioGroups: make(map[*menu.MenuItem][]*RadioGroup), - } - err := result.Update() - platformMenu.MenuManager.AddMenu(inputMenu, result.UpdateMenuItem) - return result, err -} - -func (p *PopupMenu) ShowAtCursor() error { - x, y, ok := win32.GetCursorPos() - if ok == false { - return errors.New("GetCursorPos failed") - } - - if win32.SetForegroundWindow(p.parent) == false { - return errors.New("SetForegroundWindow failed") - } - - if p.onMenuOpen != nil { - p.onMenuOpen() - } - - if p.menu.Track(win32.TPM_LEFTALIGN, x, y-5, p.parent) == false { - return errors.New("TrackPopupMenu failed") - } - - if p.onMenuClose != nil { - p.onMenuClose() - } - - if win32.PostMessage(p.parent, win32.WM_NULL, 0, 0) == 0 { - return errors.New("PostMessage failed") - } - - return nil -} - -func (p *PopupMenu) ProcessCommand(cmdMsgID int) { - item := p.menuMapping[cmdMsgID] - platformMenu.MenuManager.ProcessClick(item) -} - -func (p *PopupMenu) Destroy() { - p.menu.Destroy() -} - -func (p *PopupMenu) UpdateMenuItem(item *menu.MenuItem) { - if item.IsCheckbox() { - for _, itemID := range p.checkboxItems[item] { - p.menu.Check(uintptr(itemID), item.Checked) - } - return - } - if item.IsRadio() && item.Checked == true { - p.updateRadioGroup(item) - } -} - -func (p *PopupMenu) updateRadioGroups() { - for menuItem := range p.radioGroups { - if menuItem.Checked { - p.updateRadioGroup(menuItem) - } - } -} - -func (p *PopupMenu) updateRadioGroup(item *menu.MenuItem) { - for _, radioGroup := range p.radioGroups[item] { - thisMenuID := radioGroup.MenuID(item) - startID, endID := radioGroup.Bounds() - p.menu.CheckRadio(startID, endID, thisMenuID) - } -} - -func (p *PopupMenu) OnMenuOpen(fn func()) { - p.onMenuOpen = fn -} - -func (p *PopupMenu) OnMenuClose(fn func()) { - p.onMenuClose = fn -} diff --git a/v2/internal/platform/systray/systray_linux.go b/v2/internal/platform/systray/systray_linux.go deleted file mode 100644 index 48095501..00000000 --- a/v2/internal/platform/systray/systray_linux.go +++ /dev/null @@ -1,83 +0,0 @@ -//go:build linux - -/* - * Based on code originally from https://github.com/tadvi/systray. Copyright (C) 2019 The Systray Authors. All Rights Reserved. - */ - -package systray - -import ( - "github.com/wailsapp/wails/v2/pkg/menu" - "github.com/wailsapp/wails/v2/pkg/options" -) - -type Systray struct { -} - -func (p *Systray) Close() { - err := p.Stop() - if err != nil { - println(err.Error()) - } -} - -func (p *Systray) Update() error { - return nil -} - -// SetTitle is unused on Windows -func (p *Systray) SetTitle(_ string) {} - -func New() (*Systray, error) { - return nil, nil -} - -func (p *Systray) SetMenu(popupMenu *menu.Menu) (err error) { - return -} - -func (p *Systray) Stop() error { - return nil -} - -func (p *Systray) OnLeftClick(fn func()) { -} - -func (p *Systray) OnRightClick(fn func()) { -} - -func (p *Systray) OnLeftDoubleClick(fn func()) { -} - -func (p *Systray) OnRightDoubleClick(fn func()) { -} - -func (p *Systray) OnMenuClose(fn func()) { -} - -func (p *Systray) OnMenuOpen(fn func()) { -} - -func (p *Systray) SetTooltip(tooltip string) error { - return nil -} - -func (p *Systray) Show() error { - return p.setVisible(true) -} - -func (p *Systray) Hide() error { - return p.setVisible(false) -} - -func (p *Systray) setVisible(visible bool) error { - return nil -} - -func (p *Systray) SetIcons(lightModeIcon, darkModeIcon *options.SystemTrayIcon) error { - return nil -} - -func (p *Systray) Run() error { - return nil -} diff --git a/v2/internal/platform/systray/systray_mac.go b/v2/internal/platform/systray/systray_mac.go deleted file mode 100644 index 6cb1009b..00000000 --- a/v2/internal/platform/systray/systray_mac.go +++ /dev/null @@ -1,91 +0,0 @@ -//go:build darwin - -package systray - -import ( - "errors" - "github.com/wailsapp/wails/v2/pkg/menu" - "github.com/wailsapp/wails/v2/pkg/options" -) - -var NotImplementedSysTray = errors.New("not implemented") - -type Systray struct { -} - -func (p *Systray) Close() { - err := p.Stop() - if err != nil { - println(err.Error()) - } -} - -func (p *Systray) Update() error { - return NotImplementedSysTray -} - -func (p *Systray) SetTitle(_ string) {} - -func New() (*Systray, error) { - return nil, NotImplementedSysTray -} - -func (p *Systray) SetMenu(popupMenu *menu.Menu) (err error) { - return NotImplementedSysTray -} - -func (p *Systray) Stop() error { - return NotImplementedSysTray -} - -func (p *Systray) OnLeftClick(fn func()) { - -} - -func (p *Systray) OnRightClick(fn func()) { - -} - -func (p *Systray) OnLeftDoubleClick(fn func()) { - -} - -func (p *Systray) OnRightDoubleClick(fn func()) { - -} - -func (p *Systray) OnMenuClose(fn func()) { - -} - -func (p *Systray) OnMenuOpen(fn func()) { - -} - -func (p *Systray) SetTooltip(tooltip string) error { - return NotImplementedSysTray -} - -func (p *Systray) ShowMessage(title, msg string, bigIcon bool) error { - return NotImplementedSysTray -} - -func (p *Systray) Show() error { - return p.setVisible(true) -} - -func (p *Systray) Hide() error { - return p.setVisible(false) -} - -func (p *Systray) setVisible(visible bool) error { - return NotImplementedSysTray -} - -func (p *Systray) SetIcons(lightModeIcon, darkModeIcon *options.SystemTrayIcon) error { - return NotImplementedSysTray -} - -func (p *Systray) Run() error { - return NotImplementedSysTray -} diff --git a/v2/internal/platform/systray/systray_windows.go b/v2/internal/platform/systray/systray_windows.go deleted file mode 100644 index 8e7b7dfe..00000000 --- a/v2/internal/platform/systray/systray_windows.go +++ /dev/null @@ -1,432 +0,0 @@ -//go:build windows - -/* - * Based on code originally from https://github.com/tadvi/systray. Copyright (C) 2019 The Systray Authors. All Rights Reserved. - */ - -package systray - -import ( - "errors" - "github.com/samber/lo" - "github.com/wailsapp/wails/v2/internal/platform/win32" - "github.com/wailsapp/wails/v2/pkg/menu" - "github.com/wailsapp/wails/v2/pkg/options" - "syscall" - "unsafe" -) - -var ( - user32 = syscall.MustLoadDLL("user32.dll") - - DefWindowProc = user32.MustFindProc("DefWindowProcW") - RegisterClassEx = user32.MustFindProc("RegisterClassExW") - CreateWindowEx = user32.MustFindProc("CreateWindowExW") - - windowClasses = map[string]win32.HINSTANCE{} -) - -type Systray struct { - id uint32 - mhwnd win32.HWND // main window handle - hwnd win32.HWND - hinst win32.HINSTANCE - lclick func() - rclick func() - ldblclick func() - rdblclick func() - onMenuClose func() - onMenuOpen func() - - appIcon win32.HICON - lightModeIcon win32.HICON - darkModeIcon win32.HICON - currentIcon win32.HICON - - menu *PopupMenu - - quit chan struct{} - icon *options.SystemTrayIcon -} - -func (p *Systray) Close() { - err := p.Stop() - if err != nil { - println(err.Error()) - } -} - -func (p *Systray) Update() error { - // Delete old menu - if p.menu != nil { - p.menu.Destroy() - } - - return p.menu.Update() -} - -// SetTitle is unused on Windows -func (p *Systray) SetTitle(_ string) {} - -func New() (*Systray, error) { - ni := &Systray{} - - ni.lclick = func() { - if ni.menu != nil { - _ = ni.menu.ShowAtCursor() - } - } - ni.rclick = func() { - if ni.menu != nil { - _ = ni.menu.ShowAtCursor() - } - } - - MainClassName := "WailsSystray" - ni.hinst, _ = RegisterWindow(MainClassName, ni.WinProc) - - ni.mhwnd = win32.CreateWindowEx( - win32.WS_EX_CONTROLPARENT, - win32.MustStringToUTF16Ptr(MainClassName), - win32.MustStringToUTF16Ptr(""), - win32.WS_OVERLAPPEDWINDOW|win32.WS_CLIPSIBLINGS, - win32.CW_USEDEFAULT, - win32.CW_USEDEFAULT, - win32.CW_USEDEFAULT, - win32.CW_USEDEFAULT, - 0, - 0, - 0, - unsafe.Pointer(nil)) - - if ni.mhwnd == 0 { - return nil, errors.New("create main win failed") - } - - NotifyIconClassName := "NotifyIconForm" - _, err := RegisterWindow(NotifyIconClassName, ni.WinProc) - if err != nil { - return nil, err - } - - hwnd, _, _ := CreateWindowEx.Call( - 0, - uintptr(unsafe.Pointer(win32.MustStringToUTF16Ptr(NotifyIconClassName))), - 0, - 0, - 0, - 0, - 0, - 0, - uintptr(win32.HWND_MESSAGE), - 0, - 0, - 0) - if hwnd == 0 { - return nil, errors.New("create notify win failed") - } - - ni.hwnd = win32.HWND(hwnd) // Important to keep this inside struct. - - nid := win32.NOTIFYICONDATA{ - HWnd: win32.HWND(hwnd), - UFlags: win32.NIF_MESSAGE | win32.NIF_STATE, - DwState: win32.NIS_HIDDEN, - DwStateMask: win32.NIS_HIDDEN, - UCallbackMessage: win32.NotifyIconMessageId, - } - nid.CbSize = uint32(unsafe.Sizeof(nid)) - - if !win32.ShellNotifyIcon(win32.NIM_ADD, &nid) { - return nil, errors.New("shell notify create failed") - } - - nid.UVersion = win32.NOTIFYICON_VERSION - - if !win32.ShellNotifyIcon(win32.NIM_SETVERSION, &nid) { - return nil, errors.New("shell notify version failed") - } - - ni.appIcon = win32.LoadIconWithResourceID(0, uintptr(win32.IDI_APPLICATION)) - ni.lightModeIcon = ni.appIcon - ni.darkModeIcon = ni.appIcon - ni.id = nid.UID - return ni, nil -} - -func (p *Systray) HWND() win32.HWND { - return p.hwnd -} - -func (p *Systray) SetMenu(popupMenu *menu.Menu) (err error) { - p.menu, err = NewPopupMenu(p.hwnd, popupMenu) - p.menu.OnMenuClose(p.onMenuClose) - p.menu.OnMenuOpen(p.onMenuOpen) - return -} - -func (p *Systray) Stop() error { - nid := p.newNotifyIconData() - win32.PostQuitMessage(0) - if !win32.ShellNotifyIcon(win32.NIM_DELETE, &nid) { - return errors.New("shell notify delete failed") - } - return nil -} - -func (p *Systray) OnLeftClick(fn func()) { - if fn != nil { - p.lclick = fn - } -} - -func (p *Systray) OnRightClick(fn func()) { - if fn != nil { - p.rclick = fn - } -} - -func (p *Systray) OnLeftDoubleClick(fn func()) { - if fn != nil { - p.ldblclick = fn - } -} - -func (p *Systray) OnRightDoubleClick(fn func()) { - if fn != nil { - p.rdblclick = fn - } -} - -func (p *Systray) OnMenuClose(fn func()) { - if fn != nil { - p.onMenuClose = fn - } -} - -func (p *Systray) OnMenuOpen(fn func()) { - if fn != nil { - p.onMenuOpen = fn - } -} - -func (p *Systray) SetTooltip(tooltip string) error { - nid := p.newNotifyIconData() - nid.UFlags = win32.NIF_TIP - copy(nid.SzTip[:], win32.MustUTF16FromString(tooltip)) - - if !win32.ShellNotifyIcon(win32.NIM_MODIFY, &nid) { - return errors.New("shell notify tooltip failed") - } - return nil -} - -func (p *Systray) ShowMessage(title, msg string, bigIcon bool) error { - nid := p.newNotifyIconData() - if bigIcon == true { - nid.DwInfoFlags = win32.NIIF_USER - } - - nid.CbSize = uint32(unsafe.Sizeof(nid)) - - nid.UFlags = win32.NIF_INFO - copy(nid.SzInfoTitle[:], win32.MustUTF16FromString(title)) - copy(nid.SzInfo[:], win32.MustUTF16FromString(msg)) - - if !win32.ShellNotifyIcon(win32.NIM_MODIFY, &nid) { - return errors.New("shell notify tooltip failed") - } - return nil -} - -func (p *Systray) newNotifyIconData() win32.NOTIFYICONDATA { - nid := win32.NOTIFYICONDATA{ - UID: p.id, - HWnd: p.hwnd, - } - nid.CbSize = uint32(unsafe.Sizeof(nid)) - return nid -} - -func (p *Systray) Show() error { - return p.setVisible(true) -} - -func (p *Systray) Hide() error { - return p.setVisible(false) -} - -func (p *Systray) setVisible(visible bool) error { - nid := p.newNotifyIconData() - nid.UFlags = win32.NIF_STATE - nid.DwStateMask = win32.NIS_HIDDEN - if !visible { - nid.DwState = win32.NIS_HIDDEN - } - - if !win32.ShellNotifyIcon(win32.NIM_MODIFY, &nid) { - return errors.New("shell notify tooltip failed") - } - return nil -} - -func (p *Systray) SetIcons(lightModeIcon, darkModeIcon *options.SystemTrayIcon) error { - var newLightModeIcon, newDarkModeIcon win32.HICON - if lightModeIcon != nil && lightModeIcon.Data != nil { - newLightModeIcon = p.getIcon(lightModeIcon.Data) - } - if darkModeIcon != nil && darkModeIcon.Data != nil { - newDarkModeIcon = p.getIcon(darkModeIcon.Data) - } - p.lightModeIcon, _ = lo.Coalesce(newLightModeIcon, newDarkModeIcon, p.appIcon) - p.darkModeIcon, _ = lo.Coalesce(newDarkModeIcon, newLightModeIcon, p.appIcon) - return p.updateIcon() -} - -func (p *Systray) getIcon(icon []byte) win32.HICON { - result, err := win32.CreateHIconFromPNG(icon) - if err != nil { - result = p.appIcon - } - return result -} - -func (p *Systray) setIcon(hicon win32.HICON) error { - nid := p.newNotifyIconData() - nid.UFlags = win32.NIF_ICON - if hicon == 0 { - nid.HIcon = 0 - } else { - nid.HIcon = hicon - } - - if !win32.ShellNotifyIcon(win32.NIM_MODIFY, &nid) { - return errors.New("shell notify icon failed") - } - return nil -} - -func (p *Systray) WinProc(hwnd win32.HWND, msg uint32, wparam, lparam uintptr) uintptr { - switch msg { - case win32.NotifyIconMessageId: - switch lparam { - case win32.WM_LBUTTONUP: - if p.lclick != nil { - println("left click") - p.lclick() - } - case win32.WM_RBUTTONUP: - if p.rclick != nil { - println("right click") - p.rclick() - } - case win32.WM_LBUTTONDBLCLK: - if p.ldblclick != nil { - p.ldblclick() - } - case win32.WM_RBUTTONDBLCLK: - if p.rdblclick != nil { - p.rdblclick() - } - default: - //println(win32.WMMessageToString(lparam)) - } - case win32.WM_SETTINGCHANGE: - settingChanged := win32.UTF16PtrToString(lparam) - if settingChanged == "ImmersiveColorSet" { - err := p.updateIcon() - if err != nil { - println("update icon failed", err.Error()) - } - } - return 0 - case win32.WM_COMMAND: - cmdMsgID := int(wparam & 0xffff) - switch cmdMsgID { - default: - p.menu.ProcessCommand(cmdMsgID) - } - default: - //msg := int(wparam & 0xffff) - //println(win32.WMMessageToString(uintptr(msg))) - } - - result, _, _ := DefWindowProc.Call(uintptr(hwnd), uintptr(msg), wparam, lparam) - return result -} - -func (p *Systray) Run() error { - var msg win32.MSG - for { - rt := win32.GetMessage(&msg) - switch int(rt) { - case 0: - return nil - case -1: - return errors.New("run failed") - } - - if win32.IsDialogMessage(p.hwnd, &msg) == 0 { - win32.TranslateMessage(&msg) - win32.DispatchMessage(&msg) - } - } -} - -func (p *Systray) updateIcon() error { - - var newIcon win32.HICON - if win32.IsCurrentlyDarkMode() { - newIcon = p.darkModeIcon - } else { - newIcon = p.lightModeIcon - } - if p.currentIcon == newIcon { - return nil - } - p.currentIcon = newIcon - return p.setIcon(newIcon) -} - -func (p *Systray) updateTheme() { - //win32.SetTheme(p.hwnd, win32.IsCurrentlyDarkMode()) -} - -func RegisterWindow(name string, proc win32.WindowProc) (win32.HINSTANCE, error) { - instance, exists := windowClasses[name] - if exists { - return instance, nil - } - hinst := win32.GetModuleHandle(0) - if hinst == 0 { - return 0, errors.New("get module handle failed") - } - hicon := win32.LoadIconWithResourceID(0, uintptr(win32.IDI_APPLICATION)) - if hicon == 0 { - return 0, errors.New("load icon failed") - } - hcursor := win32.LoadCursorWithResourceID(0, uintptr(win32.IDC_ARROW)) - if hcursor == 0 { - return 0, errors.New("load cursor failed") - } - - hi := win32.HINSTANCE(hinst) - - var wc win32.WNDCLASSEX - wc.CbSize = uint32(unsafe.Sizeof(wc)) - wc.LpfnWndProc = syscall.NewCallback(proc) - wc.HInstance = win32.HINSTANCE(hinst) - wc.HIcon = hicon - wc.HCursor = hcursor - wc.HbrBackground = win32.COLOR_BTNFACE + 1 - wc.LpszClassName = win32.MustStringToUTF16Ptr(name) - - atom, _, e := RegisterClassEx.Call(uintptr(unsafe.Pointer(&wc))) - if atom == 0 { - println(e.Error()) - return 0, errors.New("register class failed") - } - - windowClasses[name] = hi - return hi, nil -} diff --git a/v2/pkg/application/application.go b/v2/pkg/application/application.go index 03d98ebd..8d8d72ef 100644 --- a/v2/pkg/application/application.go +++ b/v2/pkg/application/application.go @@ -14,9 +14,6 @@ type Application struct { application *app.App options *options.App - // System Trays - systemTrays []*SystemTray - // running flag running bool @@ -52,11 +49,6 @@ func (a *Application) SetApplicationMenu(appMenu *menu.Menu) { // Run starts the application func (a *Application) Run() error { - - for _, systemtray := range a.systemTrays { - go systemtray.run() - } - err := applicationInit() if err != nil { return err @@ -78,16 +70,12 @@ func (a *Application) Run() error { a.running = true err = a.application.Run() - a.Quit() return err } // Quit will shut down the application func (a *Application) Quit() { a.shutdown.Do(func() { - for _, systray := range a.systemTrays { - systray.Close() - } a.application.Shutdown() }) } @@ -112,9 +100,3 @@ func (a *Application) On(eventType EventType, callback func()) { a.options.OnDomReady = c } } - -func (a *Application) NewSystemTray(options *options.SystemTray) *SystemTray { - systemTray := newSystemTray(options) - a.systemTrays = append(a.systemTrays, systemTray) - return systemTray -} diff --git a/v2/pkg/application/systray.go b/v2/pkg/application/systray.go deleted file mode 100644 index 9798ef5f..00000000 --- a/v2/pkg/application/systray.go +++ /dev/null @@ -1,151 +0,0 @@ -package application - -import ( - "github.com/wailsapp/wails/v2/internal/platform" - "github.com/wailsapp/wails/v2/pkg/menu" - "github.com/wailsapp/wails/v2/pkg/options" -) - -// SystemTray defines a system tray! -type SystemTray struct { - title string - hidden bool - lightModeIcon *options.SystemTrayIcon - darkModeIcon *options.SystemTrayIcon - tooltip string - startHidden bool - menu *menu.Menu - onLeftClick func() - onRightClick func() - onLeftDoubleClick func() - onRightDoubleClick func() - onMenuClose func() - onMenuOpen func() - - // The platform specific implementation - impl platform.SysTray -} - -func newSystemTray(options *options.SystemTray) *SystemTray { - return &SystemTray{ - title: options.Title, - lightModeIcon: options.LightModeIcon, - darkModeIcon: options.DarkModeIcon, - tooltip: options.Tooltip, - startHidden: options.StartHidden, - menu: options.Menu, - onLeftClick: options.OnLeftClick, - onRightClick: options.OnRightClick, - onLeftDoubleClick: options.OnLeftDoubleClick, - onRightDoubleClick: options.OnRightDoubleClick, - onMenuOpen: options.OnMenuOpen, - onMenuClose: options.OnMenuClose, - } -} - -func (t *SystemTray) run() { - t.impl = platform.NewSysTray() - t.impl.SetTitle(t.title) - t.impl.SetIcons(t.lightModeIcon, t.darkModeIcon) - t.impl.SetTooltip(t.tooltip) - t.impl.OnLeftClick(t.onLeftClick) - t.impl.OnRightClick(t.onRightClick) - t.impl.OnLeftDoubleClick(t.onLeftDoubleClick) - t.impl.OnRightDoubleClick(t.onRightDoubleClick) - t.impl.OnMenuOpen(t.onMenuOpen) - t.impl.OnMenuClose(t.onMenuClose) - if !t.startHidden { - t.impl.Show() - } - t.impl.SetMenu(t.menu) - t.impl.Run() -} - -func (t *SystemTray) SetTitle(title string) { - if t.impl != nil { - t.impl.SetTitle(title) - } else { - t.title = title - } -} - -func (t *SystemTray) Run() error { - t.run() - return nil -} - -func (t *SystemTray) Close() { - if t.impl != nil { - t.impl.Close() - t.impl = nil - } -} - -func (t *SystemTray) SetMenu(items *menu.Menu) { - if t.impl != nil { - t.impl.SetMenu(t.menu) - } else { - t.menu = items - } -} - -func (t *SystemTray) Update() error { - if t.impl != nil { - return t.impl.Update() - } - return nil -} - -func (t *SystemTray) SetTooltip(s string) { - if t.impl != nil { - t.impl.SetTooltip(s) - } else { - t.tooltip = s - } -} - -func (t *SystemTray) SetIcons(lightModeIcon *options.SystemTrayIcon, darkModeIcon *options.SystemTrayIcon) { - if t.impl != nil { - t.impl.SetIcons(lightModeIcon, darkModeIcon) - } else { - t.lightModeIcon = lightModeIcon - t.darkModeIcon = darkModeIcon - } - -} - -func (t *SystemTray) OnLeftClick(fn func()) { - if t.impl != nil { - t.impl.OnLeftClick(fn) - } -} - -func (t *SystemTray) OnRightClick(fn func()) { - if t.impl != nil { - t.impl.OnRightClick(fn) - } -} - -func (t *SystemTray) OnLeftDoubleClick(fn func()) { - if t.impl != nil { - t.impl.OnLeftDoubleClick(fn) - } -} - -func (t *SystemTray) OnRightDoubleClick(fn func()) { - if t.impl != nil { - t.impl.OnRightDoubleClick(fn) - } -} - -func (t *SystemTray) OnMenuOpen(fn func()) { - if t.impl != nil { - t.impl.OnMenuOpen(fn) - } -} - -func (t *SystemTray) OnMenuClose(fn func()) { - if t.impl != nil { - t.impl.OnMenuClose(fn) - } -}