This commit is contained in:
		
							parent
							
								
									2d23458483
								
							
						
					
					
						commit
						986ab4d463
					
				|  | @ -0,0 +1,3 @@ | |||
| build/bin | ||||
| node_modules | ||||
| frontend/dist | ||||
|  | @ -0,0 +1,19 @@ | |||
| # README | ||||
| 
 | ||||
| ## About | ||||
| 
 | ||||
| This is the official Wails Vue-TS template. | ||||
| 
 | ||||
| You can configure the project by editing `wails.json`. More information about the project settings can be found | ||||
| here: https://wails.io/docs/reference/project-config | ||||
| 
 | ||||
| ## Live Development | ||||
| 
 | ||||
| To run in live development mode, run `wails dev` in the project directory. This will run a Vite development | ||||
| server that will provide very fast hot reload of your frontend changes. If you want to develop in a browser | ||||
| and have access to your Go methods, there is also a dev server that runs on http://localhost:34115. Connect | ||||
| to this in your browser, and you can call your Go code from devtools. | ||||
| 
 | ||||
| ## Building | ||||
| 
 | ||||
| To build a redistributable, production mode package, use `wails build`. | ||||
|  | @ -0,0 +1,27 @@ | |||
| package main | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| // App struct
 | ||||
| type App struct { | ||||
| 	ctx context.Context | ||||
| } | ||||
| 
 | ||||
| // NewApp creates a new App application struct
 | ||||
| func NewApp() *App { | ||||
| 	return &App{} | ||||
| } | ||||
| 
 | ||||
| // startup is called when the app starts. The context is saved
 | ||||
| // so we can call the runtime methods
 | ||||
| func (a *App) startup(ctx context.Context) { | ||||
| 	a.ctx = ctx | ||||
| } | ||||
| 
 | ||||
| // Greet returns a greeting for the given name
 | ||||
| func (a *App) Greet(name string) string { | ||||
| 	return fmt.Sprintf("Hello %s, It's show time!", name) | ||||
| } | ||||
|  | @ -0,0 +1,35 @@ | |||
| # Build Directory | ||||
| 
 | ||||
| The build directory is used to house all the build files and assets for your application.  | ||||
| 
 | ||||
| The structure is: | ||||
| 
 | ||||
| * bin - Output directory | ||||
| * darwin - macOS specific files | ||||
| * windows - Windows specific files | ||||
| 
 | ||||
| ## Mac | ||||
| 
 | ||||
| The `darwin` directory holds files specific to Mac builds. | ||||
| These may be customised and used as part of the build. To return these files to the default state, simply delete them | ||||
| and | ||||
| build with `wails build`. | ||||
| 
 | ||||
| The directory contains the following files: | ||||
| 
 | ||||
| - `Info.plist` - the main plist file used for Mac builds. It is used when building using `wails build`. | ||||
| - `Info.dev.plist` - same as the main plist file but used when building using `wails dev`. | ||||
| 
 | ||||
| ## Windows | ||||
| 
 | ||||
| The `windows` directory contains the manifest and rc files used when building with `wails build`. | ||||
| These may be customised for your application. To return these files to the default state, simply delete them and | ||||
| build with `wails build`. | ||||
| 
 | ||||
| - `icon.ico` - The icon used for the application. This is used when building using `wails build`. If you wish to | ||||
|   use a different icon, simply replace this file with your own. If it is missing, a new `icon.ico` file | ||||
|   will be created using the `appicon.png` file in the build directory. | ||||
| - `installer/*` - The files used to create the Windows installer. These are used when building using `wails build`. | ||||
| - `info.json` - Application details used for Windows builds. The data here will be used by the Windows installer, | ||||
|   as well as the application itself (right click the exe -> properties -> details) | ||||
| - `wails.exe.manifest` - The main application manifest file. | ||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 130 KiB | 
|  | @ -0,0 +1,68 @@ | |||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
|     <dict> | ||||
|         <key>CFBundlePackageType</key> | ||||
|         <string>APPL</string> | ||||
|         <key>CFBundleName</key> | ||||
|         <string>{{.Info.ProductName}}</string> | ||||
|         <key>CFBundleExecutable</key> | ||||
|         <string>{{.OutputFilename}}</string> | ||||
|         <key>CFBundleIdentifier</key> | ||||
|         <string>com.wails.{{.Name}}</string> | ||||
|         <key>CFBundleVersion</key> | ||||
|         <string>{{.Info.ProductVersion}}</string> | ||||
|         <key>CFBundleGetInfoString</key> | ||||
|         <string>{{.Info.Comments}}</string> | ||||
|         <key>CFBundleShortVersionString</key> | ||||
|         <string>{{.Info.ProductVersion}}</string> | ||||
|         <key>CFBundleIconFile</key> | ||||
|         <string>iconfile</string> | ||||
|         <key>LSMinimumSystemVersion</key> | ||||
|         <string>10.13.0</string> | ||||
|         <key>NSHighResolutionCapable</key> | ||||
|         <string>true</string> | ||||
|         <key>NSHumanReadableCopyright</key> | ||||
|         <string>{{.Info.Copyright}}</string> | ||||
|         {{if .Info.FileAssociations}} | ||||
|         <key>CFBundleDocumentTypes</key> | ||||
|         <array> | ||||
|           {{range .Info.FileAssociations}} | ||||
|           <dict> | ||||
|             <key>CFBundleTypeExtensions</key> | ||||
|             <array> | ||||
|               <string>{{.Ext}}</string> | ||||
|             </array> | ||||
|             <key>CFBundleTypeName</key> | ||||
|             <string>{{.Name}}</string> | ||||
|             <key>CFBundleTypeRole</key> | ||||
|             <string>{{.Role}}</string> | ||||
|             <key>CFBundleTypeIconFile</key> | ||||
|             <string>{{.IconName}}</string> | ||||
|           </dict> | ||||
|           {{end}} | ||||
|         </array> | ||||
|         {{end}} | ||||
|         {{if .Info.Protocols}} | ||||
|         <key>CFBundleURLTypes</key> | ||||
|         <array> | ||||
|           {{range .Info.Protocols}} | ||||
|             <dict> | ||||
|                 <key>CFBundleURLName</key> | ||||
|                 <string>com.wails.{{.Scheme}}</string> | ||||
|                 <key>CFBundleURLSchemes</key> | ||||
|                 <array> | ||||
|                     <string>{{.Scheme}}</string> | ||||
|                 </array> | ||||
|                 <key>CFBundleTypeRole</key> | ||||
|                 <string>{{.Role}}</string> | ||||
|             </dict> | ||||
|           {{end}} | ||||
|         </array> | ||||
|         {{end}} | ||||
|         <key>NSAppTransportSecurity</key> | ||||
|         <dict> | ||||
|             <key>NSAllowsLocalNetworking</key> | ||||
|             <true/> | ||||
|         </dict> | ||||
|     </dict> | ||||
| </plist> | ||||
|  | @ -0,0 +1,63 @@ | |||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
|     <dict> | ||||
|         <key>CFBundlePackageType</key> | ||||
|         <string>APPL</string> | ||||
|         <key>CFBundleName</key> | ||||
|         <string>{{.Info.ProductName}}</string> | ||||
|         <key>CFBundleExecutable</key> | ||||
|         <string>{{.OutputFilename}}</string> | ||||
|         <key>CFBundleIdentifier</key> | ||||
|         <string>com.wails.{{.Name}}</string> | ||||
|         <key>CFBundleVersion</key> | ||||
|         <string>{{.Info.ProductVersion}}</string> | ||||
|         <key>CFBundleGetInfoString</key> | ||||
|         <string>{{.Info.Comments}}</string> | ||||
|         <key>CFBundleShortVersionString</key> | ||||
|         <string>{{.Info.ProductVersion}}</string> | ||||
|         <key>CFBundleIconFile</key> | ||||
|         <string>iconfile</string> | ||||
|         <key>LSMinimumSystemVersion</key> | ||||
|         <string>10.13.0</string> | ||||
|         <key>NSHighResolutionCapable</key> | ||||
|         <string>true</string> | ||||
|         <key>NSHumanReadableCopyright</key> | ||||
|         <string>{{.Info.Copyright}}</string> | ||||
|         {{if .Info.FileAssociations}} | ||||
|         <key>CFBundleDocumentTypes</key> | ||||
|         <array> | ||||
|           {{range .Info.FileAssociations}} | ||||
|           <dict> | ||||
|             <key>CFBundleTypeExtensions</key> | ||||
|             <array> | ||||
|               <string>{{.Ext}}</string> | ||||
|             </array> | ||||
|             <key>CFBundleTypeName</key> | ||||
|             <string>{{.Name}}</string> | ||||
|             <key>CFBundleTypeRole</key> | ||||
|             <string>{{.Role}}</string> | ||||
|             <key>CFBundleTypeIconFile</key> | ||||
|             <string>{{.IconName}}</string> | ||||
|           </dict> | ||||
|           {{end}} | ||||
|         </array> | ||||
|         {{end}} | ||||
|         {{if .Info.Protocols}} | ||||
|         <key>CFBundleURLTypes</key> | ||||
|         <array> | ||||
|           {{range .Info.Protocols}} | ||||
|             <dict> | ||||
|                 <key>CFBundleURLName</key> | ||||
|                 <string>com.wails.{{.Scheme}}</string> | ||||
|                 <key>CFBundleURLSchemes</key> | ||||
|                 <array> | ||||
|                     <string>{{.Scheme}}</string> | ||||
|                 </array> | ||||
|                 <key>CFBundleTypeRole</key> | ||||
|                 <string>{{.Role}}</string> | ||||
|             </dict> | ||||
|           {{end}} | ||||
|         </array> | ||||
|         {{end}} | ||||
|     </dict> | ||||
| </plist> | ||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 20 KiB | 
|  | @ -0,0 +1,15 @@ | |||
| { | ||||
| 	"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}}" | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | @ -0,0 +1,114 @@ | |||
| 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}" | ||||
| 
 | ||||
| # Enable HiDPI support. https://nsis.sourceforge.io/Reference/ManifestDPIAware | ||||
| ManifestDPIAware true | ||||
| 
 | ||||
| !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.setShellContext | ||||
| 
 | ||||
|     !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.associateFiles | ||||
|     !insertmacro wails.associateCustomProtocols | ||||
| 
 | ||||
|     !insertmacro wails.writeUninstaller | ||||
| SectionEnd | ||||
| 
 | ||||
| Section "uninstall" | ||||
|     !insertmacro wails.setShellContext | ||||
| 
 | ||||
|     RMDir /r "$AppData\${PRODUCT_EXECUTABLE}" # Remove the WebView2 DataPath | ||||
| 
 | ||||
|     RMDir /r $INSTDIR | ||||
| 
 | ||||
|     Delete "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" | ||||
|     Delete "$DESKTOP\${INFO_PRODUCTNAME}.lnk" | ||||
| 
 | ||||
|     !insertmacro wails.unassociateFiles | ||||
|     !insertmacro wails.unassociateCustomProtocols | ||||
| 
 | ||||
|     !insertmacro wails.deleteUninstaller | ||||
| SectionEnd | ||||
|  | @ -0,0 +1,249 @@ | |||
| # 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 | ||||
| 
 | ||||
| !macro wails.setShellContext | ||||
|     ${If} ${REQUEST_EXECUTION_LEVEL} == "admin" | ||||
|         SetShellVarContext all | ||||
|     ${else} | ||||
|         SetShellVarContext current | ||||
|     ${EndIf} | ||||
| !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 | ||||
| 
 | ||||
| # Copy of APP_ASSOCIATE and APP_UNASSOCIATE macros from here https://gist.github.com/nikku/281d0ef126dbc215dd58bfd5b3a5cd5b | ||||
| !macro APP_ASSOCIATE EXT FILECLASS DESCRIPTION ICON COMMANDTEXT COMMAND | ||||
|   ; Backup the previously associated file class | ||||
|   ReadRegStr $R0 SHELL_CONTEXT "Software\Classes\.${EXT}" "" | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\.${EXT}" "${FILECLASS}_backup" "$R0" | ||||
| 
 | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\.${EXT}" "" "${FILECLASS}" | ||||
| 
 | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}" "" `${DESCRIPTION}` | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\DefaultIcon" "" `${ICON}` | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\shell" "" "open" | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\shell\open" "" `${COMMANDTEXT}` | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\shell\open\command" "" `${COMMAND}` | ||||
| !macroend | ||||
| 
 | ||||
| !macro APP_UNASSOCIATE EXT FILECLASS | ||||
|   ; Backup the previously associated file class | ||||
|   ReadRegStr $R0 SHELL_CONTEXT "Software\Classes\.${EXT}" `${FILECLASS}_backup` | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\.${EXT}" "" "$R0" | ||||
| 
 | ||||
|   DeleteRegKey SHELL_CONTEXT `Software\Classes\${FILECLASS}` | ||||
| !macroend | ||||
| 
 | ||||
| !macro wails.associateFiles | ||||
|     ; Create file associations | ||||
|     {{range .Info.FileAssociations}} | ||||
|       !insertmacro APP_ASSOCIATE "{{.Ext}}" "{{.Name}}" "{{.Description}}" "$INSTDIR\{{.IconName}}.ico" "Open with ${INFO_PRODUCTNAME}" "$INSTDIR\${PRODUCT_EXECUTABLE} $\"%1$\"" | ||||
| 
 | ||||
|       File "..\{{.IconName}}.ico" | ||||
|     {{end}} | ||||
| !macroend | ||||
| 
 | ||||
| !macro wails.unassociateFiles | ||||
|     ; Delete app associations | ||||
|     {{range .Info.FileAssociations}} | ||||
|       !insertmacro APP_UNASSOCIATE "{{.Ext}}" "{{.Name}}" | ||||
| 
 | ||||
|       Delete "$INSTDIR\{{.IconName}}.ico" | ||||
|     {{end}} | ||||
| !macroend | ||||
| 
 | ||||
| !macro CUSTOM_PROTOCOL_ASSOCIATE PROTOCOL DESCRIPTION ICON COMMAND | ||||
|   DeleteRegKey SHELL_CONTEXT "Software\Classes\${PROTOCOL}" | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}" "" "${DESCRIPTION}" | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}" "URL Protocol" "" | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}\DefaultIcon" "" "${ICON}" | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}\shell" "" "" | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}\shell\open" "" "" | ||||
|   WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}\shell\open\command" "" "${COMMAND}" | ||||
| !macroend | ||||
| 
 | ||||
| !macro CUSTOM_PROTOCOL_UNASSOCIATE PROTOCOL | ||||
|   DeleteRegKey SHELL_CONTEXT "Software\Classes\${PROTOCOL}" | ||||
| !macroend | ||||
| 
 | ||||
| !macro wails.associateCustomProtocols | ||||
|     ; Create custom protocols associations | ||||
|     {{range .Info.Protocols}} | ||||
|       !insertmacro CUSTOM_PROTOCOL_ASSOCIATE "{{.Scheme}}" "{{.Description}}" "$INSTDIR\${PRODUCT_EXECUTABLE},0" "$INSTDIR\${PRODUCT_EXECUTABLE} $\"%1$\"" | ||||
| 
 | ||||
|     {{end}} | ||||
| !macroend | ||||
| 
 | ||||
| !macro wails.unassociateCustomProtocols | ||||
|     ; Delete app custom protocol associations | ||||
|     {{range .Info.Protocols}} | ||||
|       !insertmacro CUSTOM_PROTOCOL_UNASSOCIATE "{{.Scheme}}" | ||||
|     {{end}} | ||||
| !macroend | ||||
|  | @ -0,0 +1,15 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||||
| <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> | ||||
|     <assemblyIdentity type="win32" name="com.wails.{{.Name}}" version="{{.Info.ProductVersion}}.0" processorArchitecture="*"/> | ||||
|     <dependency> | ||||
|         <dependentAssembly> | ||||
|             <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/> | ||||
|         </dependentAssembly> | ||||
|     </dependency> | ||||
|     <asmv3:application> | ||||
|         <asmv3:windowsSettings> | ||||
|             <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware> <!-- fallback for Windows 7 and 8 --> | ||||
|             <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness> <!-- falls back to per-monitor if per-monitor v2 is not supported --> | ||||
|         </asmv3:windowsSettings> | ||||
|     </asmv3:application> | ||||
| </assembly> | ||||
|  | @ -0,0 +1,23 @@ | |||
| # Vue 3 + TypeScript + Vite | ||||
| 
 | ||||
| This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue | ||||
| 3 `<script setup>` SFCs, check out | ||||
| the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more. | ||||
| 
 | ||||
| ## Recommended IDE Setup | ||||
| 
 | ||||
| - [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) | ||||
| 
 | ||||
| ## Type Support For `.vue` Imports in TS | ||||
| 
 | ||||
| Since TypeScript cannot handle type information for `.vue` imports, they are shimmed to be a generic Vue component type | ||||
| by default. In most cases this is fine if you don't really care about component prop types outside of templates. | ||||
| However, if you wish to get actual prop types in `.vue` imports (for example to get props validation when using | ||||
| manual `h(...)` calls), you can enable Volar's Take Over mode by following these steps: | ||||
| 
 | ||||
| 1. Run `Extensions: Show Built-in Extensions` from VS Code's command palette, look | ||||
|    for `TypeScript and JavaScript Language Features`, then right click and select `Disable (Workspace)`. By default, | ||||
|    Take Over mode will enable itself if the default TypeScript extension is disabled. | ||||
| 2. Reload the VS Code window by running `Developer: Reload Window` from the command palette. | ||||
| 
 | ||||
| You can learn more about Take Over mode [here](https://github.com/johnsoncodehk/volar/discussions/471). | ||||
|  | @ -0,0 +1,13 @@ | |||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"/> | ||||
|     <meta content="width=device-width, initial-scale=1.0" name="viewport"/> | ||||
|     <title>myproject</title> | ||||
| </head> | ||||
| <body> | ||||
| <div id="app"></div> | ||||
| <script src="./src/main.ts" type="module"></script> | ||||
| </body> | ||||
| </html> | ||||
| 
 | ||||
|  | @ -0,0 +1,988 @@ | |||
| { | ||||
|   "name": "frontend", | ||||
|   "version": "0.0.0", | ||||
|   "lockfileVersion": 3, | ||||
|   "requires": true, | ||||
|   "packages": { | ||||
|     "": { | ||||
|       "name": "frontend", | ||||
|       "version": "0.0.0", | ||||
|       "dependencies": { | ||||
|         "vue": "^3.2.37" | ||||
|       }, | ||||
|       "devDependencies": { | ||||
|         "@babel/types": "^7.18.10", | ||||
|         "@vitejs/plugin-vue": "^3.0.3", | ||||
|         "typescript": "^4.6.4", | ||||
|         "vite": "^3.0.7", | ||||
|         "vue-tsc": "^1.8.27" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@babel/helper-string-parser": { | ||||
|       "version": "7.27.1", | ||||
|       "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", | ||||
|       "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", | ||||
|       "engines": { | ||||
|         "node": ">=6.9.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@babel/helper-validator-identifier": { | ||||
|       "version": "7.27.1", | ||||
|       "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", | ||||
|       "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", | ||||
|       "engines": { | ||||
|         "node": ">=6.9.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@babel/parser": { | ||||
|       "version": "7.27.5", | ||||
|       "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", | ||||
|       "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", | ||||
|       "dependencies": { | ||||
|         "@babel/types": "^7.27.3" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "parser": "bin/babel-parser.js" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=6.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@babel/types": { | ||||
|       "version": "7.27.6", | ||||
|       "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", | ||||
|       "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", | ||||
|       "dependencies": { | ||||
|         "@babel/helper-string-parser": "^7.27.1", | ||||
|         "@babel/helper-validator-identifier": "^7.27.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=6.9.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@esbuild/android-arm": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", | ||||
|       "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", | ||||
|       "cpu": [ | ||||
|         "arm" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "android" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@esbuild/linux-loong64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", | ||||
|       "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", | ||||
|       "cpu": [ | ||||
|         "loong64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "linux" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@jridgewell/sourcemap-codec": { | ||||
|       "version": "1.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", | ||||
|       "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" | ||||
|     }, | ||||
|     "node_modules/@vitejs/plugin-vue": { | ||||
|       "version": "3.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz", | ||||
|       "integrity": "sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==", | ||||
|       "dev": true, | ||||
|       "engines": { | ||||
|         "node": "^14.18.0 || >=16.0.0" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "vite": "^3.0.0", | ||||
|         "vue": "^3.2.25" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@volar/language-core": { | ||||
|       "version": "1.11.1", | ||||
|       "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", | ||||
|       "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "@volar/source-map": "1.11.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@volar/source-map": { | ||||
|       "version": "1.11.1", | ||||
|       "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz", | ||||
|       "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "muggle-string": "^0.3.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@volar/typescript": { | ||||
|       "version": "1.11.1", | ||||
|       "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz", | ||||
|       "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "@volar/language-core": "1.11.1", | ||||
|         "path-browserify": "^1.0.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vue/compiler-core": { | ||||
|       "version": "3.5.16", | ||||
|       "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.16.tgz", | ||||
|       "integrity": "sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==", | ||||
|       "dependencies": { | ||||
|         "@babel/parser": "^7.27.2", | ||||
|         "@vue/shared": "3.5.16", | ||||
|         "entities": "^4.5.0", | ||||
|         "estree-walker": "^2.0.2", | ||||
|         "source-map-js": "^1.2.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vue/compiler-dom": { | ||||
|       "version": "3.5.16", | ||||
|       "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.16.tgz", | ||||
|       "integrity": "sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==", | ||||
|       "dependencies": { | ||||
|         "@vue/compiler-core": "3.5.16", | ||||
|         "@vue/shared": "3.5.16" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vue/compiler-sfc": { | ||||
|       "version": "3.5.16", | ||||
|       "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.16.tgz", | ||||
|       "integrity": "sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==", | ||||
|       "dependencies": { | ||||
|         "@babel/parser": "^7.27.2", | ||||
|         "@vue/compiler-core": "3.5.16", | ||||
|         "@vue/compiler-dom": "3.5.16", | ||||
|         "@vue/compiler-ssr": "3.5.16", | ||||
|         "@vue/shared": "3.5.16", | ||||
|         "estree-walker": "^2.0.2", | ||||
|         "magic-string": "^0.30.17", | ||||
|         "postcss": "^8.5.3", | ||||
|         "source-map-js": "^1.2.1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vue/compiler-ssr": { | ||||
|       "version": "3.5.16", | ||||
|       "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.16.tgz", | ||||
|       "integrity": "sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==", | ||||
|       "dependencies": { | ||||
|         "@vue/compiler-dom": "3.5.16", | ||||
|         "@vue/shared": "3.5.16" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vue/language-core": { | ||||
|       "version": "1.8.27", | ||||
|       "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz", | ||||
|       "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "@volar/language-core": "~1.11.1", | ||||
|         "@volar/source-map": "~1.11.1", | ||||
|         "@vue/compiler-dom": "^3.3.0", | ||||
|         "@vue/shared": "^3.3.0", | ||||
|         "computeds": "^0.0.1", | ||||
|         "minimatch": "^9.0.3", | ||||
|         "muggle-string": "^0.3.1", | ||||
|         "path-browserify": "^1.0.1", | ||||
|         "vue-template-compiler": "^2.7.14" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "typescript": "*" | ||||
|       }, | ||||
|       "peerDependenciesMeta": { | ||||
|         "typescript": { | ||||
|           "optional": true | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vue/reactivity": { | ||||
|       "version": "3.5.16", | ||||
|       "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.16.tgz", | ||||
|       "integrity": "sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==", | ||||
|       "dependencies": { | ||||
|         "@vue/shared": "3.5.16" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vue/runtime-core": { | ||||
|       "version": "3.5.16", | ||||
|       "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.16.tgz", | ||||
|       "integrity": "sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==", | ||||
|       "dependencies": { | ||||
|         "@vue/reactivity": "3.5.16", | ||||
|         "@vue/shared": "3.5.16" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vue/runtime-dom": { | ||||
|       "version": "3.5.16", | ||||
|       "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.16.tgz", | ||||
|       "integrity": "sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==", | ||||
|       "dependencies": { | ||||
|         "@vue/reactivity": "3.5.16", | ||||
|         "@vue/runtime-core": "3.5.16", | ||||
|         "@vue/shared": "3.5.16", | ||||
|         "csstype": "^3.1.3" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vue/server-renderer": { | ||||
|       "version": "3.5.16", | ||||
|       "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.16.tgz", | ||||
|       "integrity": "sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==", | ||||
|       "dependencies": { | ||||
|         "@vue/compiler-ssr": "3.5.16", | ||||
|         "@vue/shared": "3.5.16" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "vue": "3.5.16" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@vue/shared": { | ||||
|       "version": "3.5.16", | ||||
|       "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.16.tgz", | ||||
|       "integrity": "sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==" | ||||
|     }, | ||||
|     "node_modules/balanced-match": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||||
|       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/brace-expansion": { | ||||
|       "version": "2.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", | ||||
|       "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "balanced-match": "^1.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/computeds": { | ||||
|       "version": "0.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", | ||||
|       "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/csstype": { | ||||
|       "version": "3.1.3", | ||||
|       "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", | ||||
|       "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" | ||||
|     }, | ||||
|     "node_modules/de-indent": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", | ||||
|       "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/entities": { | ||||
|       "version": "4.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", | ||||
|       "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", | ||||
|       "engines": { | ||||
|         "node": ">=0.12" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/fb55/entities?sponsor=1" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", | ||||
|       "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", | ||||
|       "dev": true, | ||||
|       "hasInstallScript": true, | ||||
|       "bin": { | ||||
|         "esbuild": "bin/esbuild" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       }, | ||||
|       "optionalDependencies": { | ||||
|         "@esbuild/android-arm": "0.15.18", | ||||
|         "@esbuild/linux-loong64": "0.15.18", | ||||
|         "esbuild-android-64": "0.15.18", | ||||
|         "esbuild-android-arm64": "0.15.18", | ||||
|         "esbuild-darwin-64": "0.15.18", | ||||
|         "esbuild-darwin-arm64": "0.15.18", | ||||
|         "esbuild-freebsd-64": "0.15.18", | ||||
|         "esbuild-freebsd-arm64": "0.15.18", | ||||
|         "esbuild-linux-32": "0.15.18", | ||||
|         "esbuild-linux-64": "0.15.18", | ||||
|         "esbuild-linux-arm": "0.15.18", | ||||
|         "esbuild-linux-arm64": "0.15.18", | ||||
|         "esbuild-linux-mips64le": "0.15.18", | ||||
|         "esbuild-linux-ppc64le": "0.15.18", | ||||
|         "esbuild-linux-riscv64": "0.15.18", | ||||
|         "esbuild-linux-s390x": "0.15.18", | ||||
|         "esbuild-netbsd-64": "0.15.18", | ||||
|         "esbuild-openbsd-64": "0.15.18", | ||||
|         "esbuild-sunos-64": "0.15.18", | ||||
|         "esbuild-windows-32": "0.15.18", | ||||
|         "esbuild-windows-64": "0.15.18", | ||||
|         "esbuild-windows-arm64": "0.15.18" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-android-64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", | ||||
|       "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", | ||||
|       "cpu": [ | ||||
|         "x64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "android" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-android-arm64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", | ||||
|       "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", | ||||
|       "cpu": [ | ||||
|         "arm64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "android" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-darwin-64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", | ||||
|       "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", | ||||
|       "cpu": [ | ||||
|         "x64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "darwin" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-darwin-arm64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", | ||||
|       "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", | ||||
|       "cpu": [ | ||||
|         "arm64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "darwin" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-freebsd-64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", | ||||
|       "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", | ||||
|       "cpu": [ | ||||
|         "x64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "freebsd" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-freebsd-arm64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", | ||||
|       "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", | ||||
|       "cpu": [ | ||||
|         "arm64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "freebsd" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-linux-32": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", | ||||
|       "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", | ||||
|       "cpu": [ | ||||
|         "ia32" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "linux" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-linux-64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", | ||||
|       "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", | ||||
|       "cpu": [ | ||||
|         "x64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "linux" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-linux-arm": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", | ||||
|       "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", | ||||
|       "cpu": [ | ||||
|         "arm" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "linux" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-linux-arm64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", | ||||
|       "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", | ||||
|       "cpu": [ | ||||
|         "arm64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "linux" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-linux-mips64le": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", | ||||
|       "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", | ||||
|       "cpu": [ | ||||
|         "mips64el" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "linux" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-linux-ppc64le": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", | ||||
|       "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", | ||||
|       "cpu": [ | ||||
|         "ppc64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "linux" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-linux-riscv64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", | ||||
|       "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", | ||||
|       "cpu": [ | ||||
|         "riscv64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "linux" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-linux-s390x": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", | ||||
|       "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", | ||||
|       "cpu": [ | ||||
|         "s390x" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "linux" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-netbsd-64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", | ||||
|       "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", | ||||
|       "cpu": [ | ||||
|         "x64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "netbsd" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-openbsd-64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", | ||||
|       "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", | ||||
|       "cpu": [ | ||||
|         "x64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "openbsd" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-sunos-64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", | ||||
|       "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", | ||||
|       "cpu": [ | ||||
|         "x64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "sunos" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-windows-32": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", | ||||
|       "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", | ||||
|       "cpu": [ | ||||
|         "ia32" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "win32" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-windows-64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", | ||||
|       "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", | ||||
|       "cpu": [ | ||||
|         "x64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "win32" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/esbuild-windows-arm64": { | ||||
|       "version": "0.15.18", | ||||
|       "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", | ||||
|       "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", | ||||
|       "cpu": [ | ||||
|         "arm64" | ||||
|       ], | ||||
|       "dev": true, | ||||
|       "optional": true, | ||||
|       "os": [ | ||||
|         "win32" | ||||
|       ], | ||||
|       "engines": { | ||||
|         "node": ">=12" | ||||
|       } | ||||
|     }, | ||||
|     "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==" | ||||
|     }, | ||||
|     "node_modules/fsevents": { | ||||
|       "version": "2.3.3", | ||||
|       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", | ||||
|       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", | ||||
|       "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.2", | ||||
|       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", | ||||
|       "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", | ||||
|       "dev": true, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/ljharb" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/hasown": { | ||||
|       "version": "2.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", | ||||
|       "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "function-bind": "^1.1.2" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/he": { | ||||
|       "version": "1.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", | ||||
|       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", | ||||
|       "dev": true, | ||||
|       "bin": { | ||||
|         "he": "bin/he" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/is-core-module": { | ||||
|       "version": "2.16.1", | ||||
|       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", | ||||
|       "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "hasown": "^2.0.2" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/ljharb" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/magic-string": { | ||||
|       "version": "0.30.17", | ||||
|       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", | ||||
|       "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", | ||||
|       "dependencies": { | ||||
|         "@jridgewell/sourcemap-codec": "^1.5.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/minimatch": { | ||||
|       "version": "9.0.5", | ||||
|       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", | ||||
|       "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "brace-expansion": "^2.0.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=16 || 14 >=14.17" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/isaacs" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/muggle-string": { | ||||
|       "version": "0.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", | ||||
|       "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/nanoid": { | ||||
|       "version": "3.3.11", | ||||
|       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", | ||||
|       "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", | ||||
|       "funding": [ | ||||
|         { | ||||
|           "type": "github", | ||||
|           "url": "https://github.com/sponsors/ai" | ||||
|         } | ||||
|       ], | ||||
|       "bin": { | ||||
|         "nanoid": "bin/nanoid.cjs" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.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==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "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.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", | ||||
|       "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" | ||||
|     }, | ||||
|     "node_modules/postcss": { | ||||
|       "version": "8.5.4", | ||||
|       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", | ||||
|       "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", | ||||
|       "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" | ||||
|         } | ||||
|       ], | ||||
|       "dependencies": { | ||||
|         "nanoid": "^3.3.11", | ||||
|         "picocolors": "^1.1.1", | ||||
|         "source-map-js": "^1.2.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^10 || ^12 || >=14" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/resolve": { | ||||
|       "version": "1.22.10", | ||||
|       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", | ||||
|       "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "is-core-module": "^2.16.0", | ||||
|         "path-parse": "^1.0.7", | ||||
|         "supports-preserve-symlinks-flag": "^1.0.0" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "resolve": "bin/resolve" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.4" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://github.com/sponsors/ljharb" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/rollup": { | ||||
|       "version": "2.79.2", | ||||
|       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", | ||||
|       "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", | ||||
|       "dev": true, | ||||
|       "bin": { | ||||
|         "rollup": "dist/bin/rollup" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=10.0.0" | ||||
|       }, | ||||
|       "optionalDependencies": { | ||||
|         "fsevents": "~2.3.2" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/semver": { | ||||
|       "version": "7.7.2", | ||||
|       "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", | ||||
|       "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", | ||||
|       "dev": true, | ||||
|       "bin": { | ||||
|         "semver": "bin/semver.js" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=10" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/source-map-js": { | ||||
|       "version": "1.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", | ||||
|       "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", | ||||
|       "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/typescript": { | ||||
|       "version": "4.9.5", | ||||
|       "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", | ||||
|       "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", | ||||
|       "devOptional": true, | ||||
|       "bin": { | ||||
|         "tsc": "bin/tsc", | ||||
|         "tsserver": "bin/tsserver" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=4.2.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/vite": { | ||||
|       "version": "3.2.11", | ||||
|       "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.11.tgz", | ||||
|       "integrity": "sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "esbuild": "^0.15.9", | ||||
|         "postcss": "^8.4.18", | ||||
|         "resolve": "^1.22.1", | ||||
|         "rollup": "^2.79.1" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "vite": "bin/vite.js" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": "^14.18.0 || >=16.0.0" | ||||
|       }, | ||||
|       "optionalDependencies": { | ||||
|         "fsevents": "~2.3.2" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "@types/node": ">= 14", | ||||
|         "less": "*", | ||||
|         "sass": "*", | ||||
|         "stylus": "*", | ||||
|         "sugarss": "*", | ||||
|         "terser": "^5.4.0" | ||||
|       }, | ||||
|       "peerDependenciesMeta": { | ||||
|         "@types/node": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "less": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "sass": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "stylus": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "sugarss": { | ||||
|           "optional": true | ||||
|         }, | ||||
|         "terser": { | ||||
|           "optional": true | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/vue": { | ||||
|       "version": "3.5.16", | ||||
|       "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.16.tgz", | ||||
|       "integrity": "sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==", | ||||
|       "dependencies": { | ||||
|         "@vue/compiler-dom": "3.5.16", | ||||
|         "@vue/compiler-sfc": "3.5.16", | ||||
|         "@vue/runtime-dom": "3.5.16", | ||||
|         "@vue/server-renderer": "3.5.16", | ||||
|         "@vue/shared": "3.5.16" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "typescript": "*" | ||||
|       }, | ||||
|       "peerDependenciesMeta": { | ||||
|         "typescript": { | ||||
|           "optional": true | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/vue-template-compiler": { | ||||
|       "version": "2.7.16", | ||||
|       "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", | ||||
|       "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "de-indent": "^1.0.2", | ||||
|         "he": "^1.2.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/vue-tsc": { | ||||
|       "version": "1.8.27", | ||||
|       "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz", | ||||
|       "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "@volar/typescript": "~1.11.1", | ||||
|         "@vue/language-core": "1.8.27", | ||||
|         "semver": "^7.5.4" | ||||
|       }, | ||||
|       "bin": { | ||||
|         "vue-tsc": "bin/vue-tsc.js" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "typescript": "*" | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,21 @@ | |||
| { | ||||
|   "name": "frontend", | ||||
|   "private": true, | ||||
|   "version": "0.0.0", | ||||
|   "type": "module", | ||||
|   "scripts": { | ||||
|     "dev": "vite", | ||||
|     "build": "vue-tsc --noEmit && vite build", | ||||
|     "preview": "vite preview" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "vue": "^3.2.37" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@vitejs/plugin-vue": "^3.0.3", | ||||
|     "typescript": "^4.6.4", | ||||
|     "vite": "^3.0.7", | ||||
|     "vue-tsc": "^1.8.27", | ||||
|     "@babel/types": "^7.18.10" | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1 @@ | |||
| bb7ffb87329c9ad4990374471d4ce9a4 | ||||
|  | @ -0,0 +1,22 @@ | |||
| <script lang="ts" setup> | ||||
| import HelloWorld from "./components/HelloWorld.vue"; | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|   <img id="logo" alt="Wails logo" src="./assets/images/logo-universal.png" /> | ||||
|   <HelloWorld /> | ||||
| </template> | ||||
| 
 | ||||
| <style> | ||||
| #logo { | ||||
|   display: block; | ||||
|   width: 50%; | ||||
|   height: 50%; | ||||
|   margin: auto; | ||||
|   padding: 10% 0 0; | ||||
|   background-position: center; | ||||
|   background-repeat: no-repeat; | ||||
|   background-size: 100% 100%; | ||||
|   background-origin: content-box; | ||||
| } | ||||
| </style> | ||||
|  | @ -0,0 +1,93 @@ | |||
| Copyright 2016 The Nunito Project Authors (contact@sansoxygen.com), | ||||
| 
 | ||||
| This Font Software is licensed under the SIL Open Font License, Version 1.1. | ||||
| This license is copied below, and is also available with a FAQ at: | ||||
| http://scripts.sil.org/OFL | ||||
| 
 | ||||
| 
 | ||||
| ----------------------------------------------------------- | ||||
| SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 | ||||
| ----------------------------------------------------------- | ||||
| 
 | ||||
| PREAMBLE | ||||
| The goals of the Open Font License (OFL) are to stimulate worldwide | ||||
| development of collaborative font projects, to support the font creation | ||||
| efforts of academic and linguistic communities, and to provide a free and | ||||
| open framework in which fonts may be shared and improved in partnership | ||||
| with others. | ||||
| 
 | ||||
| The OFL allows the licensed fonts to be used, studied, modified and | ||||
| redistributed freely as long as they are not sold by themselves. The | ||||
| fonts, including any derivative works, can be bundled, embedded,  | ||||
| redistributed and/or sold with any software provided that any reserved | ||||
| names are not used by derivative works. The fonts and derivatives, | ||||
| however, cannot be released under any other type of license. The | ||||
| requirement for fonts to remain under this license does not apply | ||||
| to any document created using the fonts or their derivatives. | ||||
| 
 | ||||
| DEFINITIONS | ||||
| "Font Software" refers to the set of files released by the Copyright | ||||
| Holder(s) under this license and clearly marked as such. This may | ||||
| include source files, build scripts and documentation. | ||||
| 
 | ||||
| "Reserved Font Name" refers to any names specified as such after the | ||||
| copyright statement(s). | ||||
| 
 | ||||
| "Original Version" refers to the collection of Font Software components as | ||||
| distributed by the Copyright Holder(s). | ||||
| 
 | ||||
| "Modified Version" refers to any derivative made by adding to, deleting, | ||||
| or substituting -- in part or in whole -- any of the components of the | ||||
| Original Version, by changing formats or by porting the Font Software to a | ||||
| new environment. | ||||
| 
 | ||||
| "Author" refers to any designer, engineer, programmer, technical | ||||
| writer or other person who contributed to the Font Software. | ||||
| 
 | ||||
| PERMISSION & CONDITIONS | ||||
| Permission is hereby granted, free of charge, to any person obtaining | ||||
| a copy of the Font Software, to use, study, copy, merge, embed, modify, | ||||
| redistribute, and sell modified and unmodified copies of the Font | ||||
| Software, subject to the following conditions: | ||||
| 
 | ||||
| 1) Neither the Font Software nor any of its individual components, | ||||
| in Original or Modified Versions, may be sold by itself. | ||||
| 
 | ||||
| 2) Original or Modified Versions of the Font Software may be bundled, | ||||
| redistributed and/or sold with any software, provided that each copy | ||||
| contains the above copyright notice and this license. These can be | ||||
| included either as stand-alone text files, human-readable headers or | ||||
| in the appropriate machine-readable metadata fields within text or | ||||
| binary files as long as those fields can be easily viewed by the user. | ||||
| 
 | ||||
| 3) No Modified Version of the Font Software may use the Reserved Font | ||||
| Name(s) unless explicit written permission is granted by the corresponding | ||||
| Copyright Holder. This restriction only applies to the primary font name as | ||||
| presented to the users. | ||||
| 
 | ||||
| 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font | ||||
| Software shall not be used to promote, endorse or advertise any | ||||
| Modified Version, except to acknowledge the contribution(s) of the | ||||
| Copyright Holder(s) and the Author(s) or with their explicit written | ||||
| permission. | ||||
| 
 | ||||
| 5) The Font Software, modified or unmodified, in part or in whole, | ||||
| must be distributed entirely under this license, and must not be | ||||
| distributed under any other license. The requirement for fonts to | ||||
| remain under this license does not apply to any document created | ||||
| using the Font Software. | ||||
| 
 | ||||
| TERMINATION | ||||
| This license becomes null and void if any of the above conditions are | ||||
| not met. | ||||
| 
 | ||||
| DISCLAIMER | ||||
| THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF | ||||
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT | ||||
| OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE | ||||
| COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||||
| INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL | ||||
| DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||
| FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM | ||||
| OTHER DEALINGS IN THE FONT SOFTWARE. | ||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 136 KiB | 
|  | @ -0,0 +1,71 @@ | |||
| <script lang="ts" setup> | ||||
| import {reactive} from 'vue' | ||||
| import {Greet} from '../../wailsjs/go/main/App' | ||||
| 
 | ||||
| const data = reactive({ | ||||
|   name: "", | ||||
|   resultText: "Please enter your name below 👇", | ||||
| }) | ||||
| 
 | ||||
| function greet() { | ||||
|   Greet(data.name).then(result => { | ||||
|     data.resultText = result | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|   <main> | ||||
|     <div id="result" class="result">{{ data.resultText }}</div> | ||||
|     <div id="input" class="input-box"> | ||||
|       <input id="name" v-model="data.name" autocomplete="off" class="input" type="text"/> | ||||
|       <button class="btn" @click="greet">Greet</button> | ||||
|     </div> | ||||
|   </main> | ||||
| </template> | ||||
| 
 | ||||
| <style scoped> | ||||
| .result { | ||||
|   height: 20px; | ||||
|   line-height: 20px; | ||||
|   margin: 1.5rem auto; | ||||
| } | ||||
| 
 | ||||
| .input-box .btn { | ||||
|   width: 60px; | ||||
|   height: 30px; | ||||
|   line-height: 30px; | ||||
|   border-radius: 3px; | ||||
|   border: none; | ||||
|   margin: 0 0 0 20px; | ||||
|   padding: 0 8px; | ||||
|   cursor: pointer; | ||||
| } | ||||
| 
 | ||||
| .input-box .btn:hover { | ||||
|   background-image: linear-gradient(to top, #cfd9df 0%, #e2ebf0 100%); | ||||
|   color: #333333; | ||||
| } | ||||
| 
 | ||||
| .input-box .input { | ||||
|   border: none; | ||||
|   border-radius: 3px; | ||||
|   outline: none; | ||||
|   height: 30px; | ||||
|   line-height: 30px; | ||||
|   padding: 0 10px; | ||||
|   background-color: rgba(240, 240, 240, 1); | ||||
|   -webkit-font-smoothing: antialiased; | ||||
| } | ||||
| 
 | ||||
| .input-box .input:hover { | ||||
|   border: none; | ||||
|   background-color: rgba(255, 255, 255, 1); | ||||
| } | ||||
| 
 | ||||
| .input-box .input:focus { | ||||
|   border: none; | ||||
|   background-color: rgba(255, 255, 255, 1); | ||||
| } | ||||
| </style> | ||||
|  | @ -0,0 +1,5 @@ | |||
| import {createApp} from 'vue' | ||||
| import App from './App.vue' | ||||
| import './style.css'; | ||||
| 
 | ||||
| createApp(App).mount('#app') | ||||
|  | @ -0,0 +1,26 @@ | |||
| html { | ||||
|     background-color: rgba(27, 38, 54, 1); | ||||
|     text-align: center; | ||||
|     color: white; | ||||
| } | ||||
| 
 | ||||
| body { | ||||
|     margin: 0; | ||||
|     color: white; | ||||
|     font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", | ||||
|     "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", | ||||
|     sans-serif; | ||||
| } | ||||
| 
 | ||||
| @font-face { | ||||
|     font-family: "Nunito"; | ||||
|     font-style: normal; | ||||
|     font-weight: 400; | ||||
|     src: local(""), | ||||
|     url("assets/fonts/nunito-v16-latin-regular.woff2") format("woff2"); | ||||
| } | ||||
| 
 | ||||
| #app { | ||||
|     height: 100vh; | ||||
|     text-align: center; | ||||
| } | ||||
|  | @ -0,0 +1,7 @@ | |||
| /// <reference types="vite/client" />
 | ||||
| 
 | ||||
| declare module '*.vue' { | ||||
|     import type {DefineComponent} from 'vue' | ||||
|     const component: DefineComponent<{}, {}, any> | ||||
|     export default component | ||||
| } | ||||
|  | @ -0,0 +1,30 @@ | |||
| { | ||||
|   "compilerOptions": { | ||||
|     "target": "ESNext", | ||||
|     "useDefineForClassFields": true, | ||||
|     "module": "ESNext", | ||||
|     "moduleResolution": "Node", | ||||
|     "strict": true, | ||||
|     "jsx": "preserve", | ||||
|     "sourceMap": true, | ||||
|     "resolveJsonModule": true, | ||||
|     "isolatedModules": true, | ||||
|     "esModuleInterop": true, | ||||
|     "lib": [ | ||||
|       "ESNext", | ||||
|       "DOM" | ||||
|     ], | ||||
|     "skipLibCheck": true | ||||
|   }, | ||||
|   "include": [ | ||||
|     "src/**/*.ts", | ||||
|     "src/**/*.d.ts", | ||||
|     "src/**/*.tsx", | ||||
|     "src/**/*.vue" | ||||
|   ], | ||||
|   "references": [ | ||||
|     { | ||||
|       "path": "./tsconfig.node.json" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
|  | @ -0,0 +1,11 @@ | |||
| { | ||||
|   "compilerOptions": { | ||||
|     "composite": true, | ||||
|     "module": "ESNext", | ||||
|     "moduleResolution": "Node", | ||||
|     "allowSyntheticDefaultImports": true | ||||
|   }, | ||||
|   "include": [ | ||||
|     "vite.config.ts" | ||||
|   ] | ||||
| } | ||||
|  | @ -0,0 +1,7 @@ | |||
| import {defineConfig} from 'vite' | ||||
| import vue from '@vitejs/plugin-vue' | ||||
| 
 | ||||
| // https://vitejs.dev/config/
 | ||||
| export default defineConfig({ | ||||
|   plugins: [vue()] | ||||
| }) | ||||
|  | @ -0,0 +1,4 @@ | |||
| // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
 | ||||
| // This file is automatically generated. DO NOT EDIT
 | ||||
| 
 | ||||
| export function Greet(arg1:string):Promise<string>; | ||||
|  | @ -0,0 +1,7 @@ | |||
| // @ts-check
 | ||||
| // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
 | ||||
| // This file is automatically generated. DO NOT EDIT
 | ||||
| 
 | ||||
| export function Greet(arg1) { | ||||
|   return window['go']['main']['App']['Greet'](arg1); | ||||
| } | ||||
|  | @ -0,0 +1,24 @@ | |||
| { | ||||
|   "name": "@wailsapp/runtime", | ||||
|   "version": "2.0.0", | ||||
|   "description": "Wails Javascript runtime library", | ||||
|   "main": "runtime.js", | ||||
|   "types": "runtime.d.ts", | ||||
|   "scripts": { | ||||
|   }, | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "git+https://github.com/wailsapp/wails.git" | ||||
|   }, | ||||
|   "keywords": [ | ||||
|     "Wails", | ||||
|     "Javascript", | ||||
|     "Go" | ||||
|   ], | ||||
|   "author": "Lea Anthony <lea.anthony@gmail.com>", | ||||
|   "license": "MIT", | ||||
|   "bugs": { | ||||
|     "url": "https://github.com/wailsapp/wails/issues" | ||||
|   }, | ||||
|   "homepage": "https://github.com/wailsapp/wails#readme" | ||||
| } | ||||
|  | @ -0,0 +1,249 @@ | |||
| /* | ||||
|  _       __      _ __ | ||||
| | |     / /___ _(_) /____ | ||||
| | | /| / / __ `/ / / ___/
 | ||||
| | |/ |/ / /_/ / / (__  ) | ||||
| |__/|__/\__,_/_/_/____/ | ||||
| The electron alternative for Go | ||||
| (c) Lea Anthony 2019-present | ||||
| */ | ||||
| 
 | ||||
| export interface Position { | ||||
|     x: number; | ||||
|     y: number; | ||||
| } | ||||
| 
 | ||||
| export interface Size { | ||||
|     w: number; | ||||
|     h: number; | ||||
| } | ||||
| 
 | ||||
| export interface Screen { | ||||
|     isCurrent: boolean; | ||||
|     isPrimary: boolean; | ||||
|     width : number | ||||
|     height : number | ||||
| } | ||||
| 
 | ||||
| // Environment information such as platform, buildtype, ...
 | ||||
| export interface EnvironmentInfo { | ||||
|     buildType: string; | ||||
|     platform: string; | ||||
|     arch: string; | ||||
| } | ||||
| 
 | ||||
| // [EventsEmit](https://wails.io/docs/reference/runtime/events#eventsemit)
 | ||||
| // emits the given event. Optional data may be passed with the event.
 | ||||
| // This will trigger any event listeners.
 | ||||
| export function EventsEmit(eventName: string, ...data: any): void; | ||||
| 
 | ||||
| // [EventsOn](https://wails.io/docs/reference/runtime/events#eventson) sets up a listener for the given event name.
 | ||||
| export function EventsOn(eventName: string, callback: (...data: any) => void): () => void; | ||||
| 
 | ||||
| // [EventsOnMultiple](https://wails.io/docs/reference/runtime/events#eventsonmultiple)
 | ||||
| // sets up a listener for the given event name, but will only trigger a given number times.
 | ||||
| export function EventsOnMultiple(eventName: string, callback: (...data: any) => void, maxCallbacks: number): () => void; | ||||
| 
 | ||||
| // [EventsOnce](https://wails.io/docs/reference/runtime/events#eventsonce)
 | ||||
| // sets up a listener for the given event name, but will only trigger once.
 | ||||
| export function EventsOnce(eventName: string, callback: (...data: any) => void): () => void; | ||||
| 
 | ||||
| // [EventsOff](https://wails.io/docs/reference/runtime/events#eventsoff)
 | ||||
| // unregisters the listener for the given event name.
 | ||||
| export function EventsOff(eventName: string, ...additionalEventNames: string[]): void; | ||||
| 
 | ||||
| // [EventsOffAll](https://wails.io/docs/reference/runtime/events#eventsoffall)
 | ||||
| // unregisters all listeners.
 | ||||
| export function EventsOffAll(): void; | ||||
| 
 | ||||
| // [LogPrint](https://wails.io/docs/reference/runtime/log#logprint)
 | ||||
| // logs the given message as a raw message
 | ||||
| export function LogPrint(message: string): void; | ||||
| 
 | ||||
| // [LogTrace](https://wails.io/docs/reference/runtime/log#logtrace)
 | ||||
| // logs the given message at the `trace` log level.
 | ||||
| export function LogTrace(message: string): void; | ||||
| 
 | ||||
| // [LogDebug](https://wails.io/docs/reference/runtime/log#logdebug)
 | ||||
| // logs the given message at the `debug` log level.
 | ||||
| export function LogDebug(message: string): void; | ||||
| 
 | ||||
| // [LogError](https://wails.io/docs/reference/runtime/log#logerror)
 | ||||
| // logs the given message at the `error` log level.
 | ||||
| export function LogError(message: string): void; | ||||
| 
 | ||||
| // [LogFatal](https://wails.io/docs/reference/runtime/log#logfatal)
 | ||||
| // logs the given message at the `fatal` log level.
 | ||||
| // The application will quit after calling this method.
 | ||||
| export function LogFatal(message: string): void; | ||||
| 
 | ||||
| // [LogInfo](https://wails.io/docs/reference/runtime/log#loginfo)
 | ||||
| // logs the given message at the `info` log level.
 | ||||
| export function LogInfo(message: string): void; | ||||
| 
 | ||||
| // [LogWarning](https://wails.io/docs/reference/runtime/log#logwarning)
 | ||||
| // logs the given message at the `warning` log level.
 | ||||
| export function LogWarning(message: string): void; | ||||
| 
 | ||||
| // [WindowReload](https://wails.io/docs/reference/runtime/window#windowreload)
 | ||||
| // Forces a reload by the main application as well as connected browsers.
 | ||||
| export function WindowReload(): void; | ||||
| 
 | ||||
| // [WindowReloadApp](https://wails.io/docs/reference/runtime/window#windowreloadapp)
 | ||||
| // Reloads the application frontend.
 | ||||
| export function WindowReloadApp(): void; | ||||
| 
 | ||||
| // [WindowSetAlwaysOnTop](https://wails.io/docs/reference/runtime/window#windowsetalwaysontop)
 | ||||
| // Sets the window AlwaysOnTop or not on top.
 | ||||
| export function WindowSetAlwaysOnTop(b: boolean): void; | ||||
| 
 | ||||
| // [WindowSetSystemDefaultTheme](https://wails.io/docs/next/reference/runtime/window#windowsetsystemdefaulttheme)
 | ||||
| // *Windows only*
 | ||||
| // Sets window theme to system default (dark/light).
 | ||||
| export function WindowSetSystemDefaultTheme(): void; | ||||
| 
 | ||||
| // [WindowSetLightTheme](https://wails.io/docs/next/reference/runtime/window#windowsetlighttheme)
 | ||||
| // *Windows only*
 | ||||
| // Sets window to light theme.
 | ||||
| export function WindowSetLightTheme(): void; | ||||
| 
 | ||||
| // [WindowSetDarkTheme](https://wails.io/docs/next/reference/runtime/window#windowsetdarktheme)
 | ||||
| // *Windows only*
 | ||||
| // Sets window to dark theme.
 | ||||
| export function WindowSetDarkTheme(): void; | ||||
| 
 | ||||
| // [WindowCenter](https://wails.io/docs/reference/runtime/window#windowcenter)
 | ||||
| // Centers the window on the monitor the window is currently on.
 | ||||
| export function WindowCenter(): void; | ||||
| 
 | ||||
| // [WindowSetTitle](https://wails.io/docs/reference/runtime/window#windowsettitle)
 | ||||
| // Sets the text in the window title bar.
 | ||||
| export function WindowSetTitle(title: string): void; | ||||
| 
 | ||||
| // [WindowFullscreen](https://wails.io/docs/reference/runtime/window#windowfullscreen)
 | ||||
| // Makes the window full screen.
 | ||||
| export function WindowFullscreen(): void; | ||||
| 
 | ||||
| // [WindowUnfullscreen](https://wails.io/docs/reference/runtime/window#windowunfullscreen)
 | ||||
| // Restores the previous window dimensions and position prior to full screen.
 | ||||
| export function WindowUnfullscreen(): void; | ||||
| 
 | ||||
| // [WindowIsFullscreen](https://wails.io/docs/reference/runtime/window#windowisfullscreen)
 | ||||
| // Returns the state of the window, i.e. whether the window is in full screen mode or not.
 | ||||
| export function WindowIsFullscreen(): Promise<boolean>; | ||||
| 
 | ||||
| // [WindowSetSize](https://wails.io/docs/reference/runtime/window#windowsetsize)
 | ||||
| // Sets the width and height of the window.
 | ||||
| export function WindowSetSize(width: number, height: number): void; | ||||
| 
 | ||||
| // [WindowGetSize](https://wails.io/docs/reference/runtime/window#windowgetsize)
 | ||||
| // Gets the width and height of the window.
 | ||||
| export function WindowGetSize(): Promise<Size>; | ||||
| 
 | ||||
| // [WindowSetMaxSize](https://wails.io/docs/reference/runtime/window#windowsetmaxsize)
 | ||||
| // Sets the maximum window size. Will resize the window if the window is currently larger than the given dimensions.
 | ||||
| // Setting a size of 0,0 will disable this constraint.
 | ||||
| export function WindowSetMaxSize(width: number, height: number): void; | ||||
| 
 | ||||
| // [WindowSetMinSize](https://wails.io/docs/reference/runtime/window#windowsetminsize)
 | ||||
| // Sets the minimum window size. Will resize the window if the window is currently smaller than the given dimensions.
 | ||||
| // Setting a size of 0,0 will disable this constraint.
 | ||||
| export function WindowSetMinSize(width: number, height: number): void; | ||||
| 
 | ||||
| // [WindowSetPosition](https://wails.io/docs/reference/runtime/window#windowsetposition)
 | ||||
| // Sets the window position relative to the monitor the window is currently on.
 | ||||
| export function WindowSetPosition(x: number, y: number): void; | ||||
| 
 | ||||
| // [WindowGetPosition](https://wails.io/docs/reference/runtime/window#windowgetposition)
 | ||||
| // Gets the window position relative to the monitor the window is currently on.
 | ||||
| export function WindowGetPosition(): Promise<Position>; | ||||
| 
 | ||||
| // [WindowHide](https://wails.io/docs/reference/runtime/window#windowhide)
 | ||||
| // Hides the window.
 | ||||
| export function WindowHide(): void; | ||||
| 
 | ||||
| // [WindowShow](https://wails.io/docs/reference/runtime/window#windowshow)
 | ||||
| // Shows the window, if it is currently hidden.
 | ||||
| export function WindowShow(): void; | ||||
| 
 | ||||
| // [WindowMaximise](https://wails.io/docs/reference/runtime/window#windowmaximise)
 | ||||
| // Maximises the window to fill the screen.
 | ||||
| export function WindowMaximise(): void; | ||||
| 
 | ||||
| // [WindowToggleMaximise](https://wails.io/docs/reference/runtime/window#windowtogglemaximise)
 | ||||
| // Toggles between Maximised and UnMaximised.
 | ||||
| export function WindowToggleMaximise(): void; | ||||
| 
 | ||||
| // [WindowUnmaximise](https://wails.io/docs/reference/runtime/window#windowunmaximise)
 | ||||
| // Restores the window to the dimensions and position prior to maximising.
 | ||||
| export function WindowUnmaximise(): void; | ||||
| 
 | ||||
| // [WindowIsMaximised](https://wails.io/docs/reference/runtime/window#windowismaximised)
 | ||||
| // Returns the state of the window, i.e. whether the window is maximised or not.
 | ||||
| export function WindowIsMaximised(): Promise<boolean>; | ||||
| 
 | ||||
| // [WindowMinimise](https://wails.io/docs/reference/runtime/window#windowminimise)
 | ||||
| // Minimises the window.
 | ||||
| export function WindowMinimise(): void; | ||||
| 
 | ||||
| // [WindowUnminimise](https://wails.io/docs/reference/runtime/window#windowunminimise)
 | ||||
| // Restores the window to the dimensions and position prior to minimising.
 | ||||
| export function WindowUnminimise(): void; | ||||
| 
 | ||||
| // [WindowIsMinimised](https://wails.io/docs/reference/runtime/window#windowisminimised)
 | ||||
| // Returns the state of the window, i.e. whether the window is minimised or not.
 | ||||
| export function WindowIsMinimised(): Promise<boolean>; | ||||
| 
 | ||||
| // [WindowIsNormal](https://wails.io/docs/reference/runtime/window#windowisnormal)
 | ||||
| // Returns the state of the window, i.e. whether the window is normal or not.
 | ||||
| export function WindowIsNormal(): Promise<boolean>; | ||||
| 
 | ||||
| // [WindowSetBackgroundColour](https://wails.io/docs/reference/runtime/window#windowsetbackgroundcolour)
 | ||||
| // Sets the background colour of the window to the given RGBA colour definition. This colour will show through for all transparent pixels.
 | ||||
| export function WindowSetBackgroundColour(R: number, G: number, B: number, A: number): void; | ||||
| 
 | ||||
| // [ScreenGetAll](https://wails.io/docs/reference/runtime/window#screengetall)
 | ||||
| // Gets the all screens. Call this anew each time you want to refresh data from the underlying windowing system.
 | ||||
| export function ScreenGetAll(): Promise<Screen[]>; | ||||
| 
 | ||||
| // [BrowserOpenURL](https://wails.io/docs/reference/runtime/browser#browseropenurl)
 | ||||
| // Opens the given URL in the system browser.
 | ||||
| export function BrowserOpenURL(url: string): void; | ||||
| 
 | ||||
| // [Environment](https://wails.io/docs/reference/runtime/intro#environment)
 | ||||
| // Returns information about the environment
 | ||||
| export function Environment(): Promise<EnvironmentInfo>; | ||||
| 
 | ||||
| // [Quit](https://wails.io/docs/reference/runtime/intro#quit)
 | ||||
| // Quits the application.
 | ||||
| export function Quit(): void; | ||||
| 
 | ||||
| // [Hide](https://wails.io/docs/reference/runtime/intro#hide)
 | ||||
| // Hides the application.
 | ||||
| export function Hide(): void; | ||||
| 
 | ||||
| // [Show](https://wails.io/docs/reference/runtime/intro#show)
 | ||||
| // Shows the application.
 | ||||
| export function Show(): void; | ||||
| 
 | ||||
| // [ClipboardGetText](https://wails.io/docs/reference/runtime/clipboard#clipboardgettext)
 | ||||
| // Returns the current text stored on clipboard
 | ||||
| export function ClipboardGetText(): Promise<string>; | ||||
| 
 | ||||
| // [ClipboardSetText](https://wails.io/docs/reference/runtime/clipboard#clipboardsettext)
 | ||||
| // Sets a text on the clipboard
 | ||||
| export function ClipboardSetText(text: string): Promise<boolean>; | ||||
| 
 | ||||
| // [OnFileDrop](https://wails.io/docs/reference/runtime/draganddrop#onfiledrop)
 | ||||
| // OnFileDrop listens to drag and drop events and calls the callback with the coordinates of the drop and an array of path strings.
 | ||||
| export function OnFileDrop(callback: (x: number, y: number ,paths: string[]) => void, useDropTarget: boolean) :void | ||||
| 
 | ||||
| // [OnFileDropOff](https://wails.io/docs/reference/runtime/draganddrop#dragandddropoff)
 | ||||
| // OnFileDropOff removes the drag and drop listeners and handlers.
 | ||||
| export function OnFileDropOff() :void | ||||
| 
 | ||||
| // Check if the file path resolver is available
 | ||||
| export function CanResolveFilePaths(): boolean; | ||||
| 
 | ||||
| // Resolves file paths for an array of files
 | ||||
| export function ResolveFilePaths(files: File[]): void | ||||
|  | @ -0,0 +1,238 @@ | |||
| /* | ||||
|  _       __      _ __ | ||||
| | |     / /___ _(_) /____ | ||||
| | | /| / / __ `/ / / ___/
 | ||||
| | |/ |/ / /_/ / / (__  ) | ||||
| |__/|__/\__,_/_/_/____/ | ||||
| The electron alternative for Go | ||||
| (c) Lea Anthony 2019-present | ||||
| */ | ||||
| 
 | ||||
| export function LogPrint(message) { | ||||
|     window.runtime.LogPrint(message); | ||||
| } | ||||
| 
 | ||||
| export function LogTrace(message) { | ||||
|     window.runtime.LogTrace(message); | ||||
| } | ||||
| 
 | ||||
| export function LogDebug(message) { | ||||
|     window.runtime.LogDebug(message); | ||||
| } | ||||
| 
 | ||||
| export function LogInfo(message) { | ||||
|     window.runtime.LogInfo(message); | ||||
| } | ||||
| 
 | ||||
| export function LogWarning(message) { | ||||
|     window.runtime.LogWarning(message); | ||||
| } | ||||
| 
 | ||||
| export function LogError(message) { | ||||
|     window.runtime.LogError(message); | ||||
| } | ||||
| 
 | ||||
| export function LogFatal(message) { | ||||
|     window.runtime.LogFatal(message); | ||||
| } | ||||
| 
 | ||||
| export function EventsOnMultiple(eventName, callback, maxCallbacks) { | ||||
|     return window.runtime.EventsOnMultiple(eventName, callback, maxCallbacks); | ||||
| } | ||||
| 
 | ||||
| export function EventsOn(eventName, callback) { | ||||
|     return EventsOnMultiple(eventName, callback, -1); | ||||
| } | ||||
| 
 | ||||
| export function EventsOff(eventName, ...additionalEventNames) { | ||||
|     return window.runtime.EventsOff(eventName, ...additionalEventNames); | ||||
| } | ||||
| 
 | ||||
| export function EventsOnce(eventName, callback) { | ||||
|     return EventsOnMultiple(eventName, callback, 1); | ||||
| } | ||||
| 
 | ||||
| export function EventsEmit(eventName) { | ||||
|     let args = [eventName].slice.call(arguments); | ||||
|     return window.runtime.EventsEmit.apply(null, args); | ||||
| } | ||||
| 
 | ||||
| export function WindowReload() { | ||||
|     window.runtime.WindowReload(); | ||||
| } | ||||
| 
 | ||||
| export function WindowReloadApp() { | ||||
|     window.runtime.WindowReloadApp(); | ||||
| } | ||||
| 
 | ||||
| export function WindowSetAlwaysOnTop(b) { | ||||
|     window.runtime.WindowSetAlwaysOnTop(b); | ||||
| } | ||||
| 
 | ||||
| export function WindowSetSystemDefaultTheme() { | ||||
|     window.runtime.WindowSetSystemDefaultTheme(); | ||||
| } | ||||
| 
 | ||||
| export function WindowSetLightTheme() { | ||||
|     window.runtime.WindowSetLightTheme(); | ||||
| } | ||||
| 
 | ||||
| export function WindowSetDarkTheme() { | ||||
|     window.runtime.WindowSetDarkTheme(); | ||||
| } | ||||
| 
 | ||||
| export function WindowCenter() { | ||||
|     window.runtime.WindowCenter(); | ||||
| } | ||||
| 
 | ||||
| export function WindowSetTitle(title) { | ||||
|     window.runtime.WindowSetTitle(title); | ||||
| } | ||||
| 
 | ||||
| export function WindowFullscreen() { | ||||
|     window.runtime.WindowFullscreen(); | ||||
| } | ||||
| 
 | ||||
| export function WindowUnfullscreen() { | ||||
|     window.runtime.WindowUnfullscreen(); | ||||
| } | ||||
| 
 | ||||
| export function WindowIsFullscreen() { | ||||
|     return window.runtime.WindowIsFullscreen(); | ||||
| } | ||||
| 
 | ||||
| export function WindowGetSize() { | ||||
|     return window.runtime.WindowGetSize(); | ||||
| } | ||||
| 
 | ||||
| export function WindowSetSize(width, height) { | ||||
|     window.runtime.WindowSetSize(width, height); | ||||
| } | ||||
| 
 | ||||
| export function WindowSetMaxSize(width, height) { | ||||
|     window.runtime.WindowSetMaxSize(width, height); | ||||
| } | ||||
| 
 | ||||
| export function WindowSetMinSize(width, height) { | ||||
|     window.runtime.WindowSetMinSize(width, height); | ||||
| } | ||||
| 
 | ||||
| export function WindowSetPosition(x, y) { | ||||
|     window.runtime.WindowSetPosition(x, y); | ||||
| } | ||||
| 
 | ||||
| export function WindowGetPosition() { | ||||
|     return window.runtime.WindowGetPosition(); | ||||
| } | ||||
| 
 | ||||
| export function WindowHide() { | ||||
|     window.runtime.WindowHide(); | ||||
| } | ||||
| 
 | ||||
| export function WindowShow() { | ||||
|     window.runtime.WindowShow(); | ||||
| } | ||||
| 
 | ||||
| export function WindowMaximise() { | ||||
|     window.runtime.WindowMaximise(); | ||||
| } | ||||
| 
 | ||||
| export function WindowToggleMaximise() { | ||||
|     window.runtime.WindowToggleMaximise(); | ||||
| } | ||||
| 
 | ||||
| export function WindowUnmaximise() { | ||||
|     window.runtime.WindowUnmaximise(); | ||||
| } | ||||
| 
 | ||||
| export function WindowIsMaximised() { | ||||
|     return window.runtime.WindowIsMaximised(); | ||||
| } | ||||
| 
 | ||||
| export function WindowMinimise() { | ||||
|     window.runtime.WindowMinimise(); | ||||
| } | ||||
| 
 | ||||
| export function WindowUnminimise() { | ||||
|     window.runtime.WindowUnminimise(); | ||||
| } | ||||
| 
 | ||||
| export function WindowSetBackgroundColour(R, G, B, A) { | ||||
|     window.runtime.WindowSetBackgroundColour(R, G, B, A); | ||||
| } | ||||
| 
 | ||||
| export function ScreenGetAll() { | ||||
|     return window.runtime.ScreenGetAll(); | ||||
| } | ||||
| 
 | ||||
| export function WindowIsMinimised() { | ||||
|     return window.runtime.WindowIsMinimised(); | ||||
| } | ||||
| 
 | ||||
| export function WindowIsNormal() { | ||||
|     return window.runtime.WindowIsNormal(); | ||||
| } | ||||
| 
 | ||||
| export function BrowserOpenURL(url) { | ||||
|     window.runtime.BrowserOpenURL(url); | ||||
| } | ||||
| 
 | ||||
| export function Environment() { | ||||
|     return window.runtime.Environment(); | ||||
| } | ||||
| 
 | ||||
| export function Quit() { | ||||
|     window.runtime.Quit(); | ||||
| } | ||||
| 
 | ||||
| export function Hide() { | ||||
|     window.runtime.Hide(); | ||||
| } | ||||
| 
 | ||||
| export function Show() { | ||||
|     window.runtime.Show(); | ||||
| } | ||||
| 
 | ||||
| export function ClipboardGetText() { | ||||
|     return window.runtime.ClipboardGetText(); | ||||
| } | ||||
| 
 | ||||
| export function ClipboardSetText(text) { | ||||
|     return window.runtime.ClipboardSetText(text); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Callback for OnFileDrop returns a slice of file path strings when a drop is finished. | ||||
|  * | ||||
|  * @export | ||||
|  * @callback OnFileDropCallback | ||||
|  * @param {number} x - x coordinate of the drop | ||||
|  * @param {number} y - y coordinate of the drop | ||||
|  * @param {string[]} paths - A list of file paths. | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  * OnFileDrop listens to drag and drop events and calls the callback with the coordinates of the drop and an array of path strings. | ||||
|  * | ||||
|  * @export | ||||
|  * @param {OnFileDropCallback} callback - Callback for OnFileDrop returns a slice of file path strings when a drop is finished. | ||||
|  * @param {boolean} [useDropTarget=true] - Only call the callback when the drop finished on an element that has the drop target style. (--wails-drop-target) | ||||
|  */ | ||||
| export function OnFileDrop(callback, useDropTarget) { | ||||
|     return window.runtime.OnFileDrop(callback, useDropTarget); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * OnFileDropOff removes the drag and drop listeners and handlers. | ||||
|  */ | ||||
| export function OnFileDropOff() { | ||||
|     return window.runtime.OnFileDropOff(); | ||||
| } | ||||
| 
 | ||||
| export function CanResolveFilePaths() { | ||||
|     return window.runtime.CanResolveFilePaths(); | ||||
| } | ||||
| 
 | ||||
| export function ResolveFilePaths(files) { | ||||
|     return window.runtime.ResolveFilePaths(files); | ||||
| } | ||||
|  | @ -0,0 +1,36 @@ | |||
| module myproject | ||||
| 
 | ||||
| go 1.23 | ||||
| 
 | ||||
| require github.com/wailsapp/wails/v2 v2.10.1 | ||||
| 
 | ||||
| require ( | ||||
| 	github.com/bep/debounce v1.2.1 // indirect | ||||
| 	github.com/go-ole/go-ole v1.3.0 // indirect | ||||
| 	github.com/godbus/dbus/v5 v5.1.0 // indirect | ||||
| 	github.com/google/uuid v1.6.0 // indirect | ||||
| 	github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect | ||||
| 	github.com/labstack/echo/v4 v4.13.3 // indirect | ||||
| 	github.com/labstack/gommon v0.4.2 // indirect | ||||
| 	github.com/leaanthony/go-ansi-parser v1.6.1 // indirect | ||||
| 	github.com/leaanthony/gosod v1.0.4 // indirect | ||||
| 	github.com/leaanthony/slicer v1.6.0 // indirect | ||||
| 	github.com/leaanthony/u v1.1.1 // indirect | ||||
| 	github.com/mattn/go-colorable v0.1.13 // indirect | ||||
| 	github.com/mattn/go-isatty v0.0.20 // indirect | ||||
| 	github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/rivo/uniseg v0.4.7 // indirect | ||||
| 	github.com/samber/lo v1.49.1 // indirect | ||||
| 	github.com/tkrajina/go-reflector v0.5.8 // indirect | ||||
| 	github.com/valyala/bytebufferpool v1.0.0 // indirect | ||||
| 	github.com/valyala/fasttemplate v1.2.2 // indirect | ||||
| 	github.com/wailsapp/go-webview2 v1.0.19 // indirect | ||||
| 	github.com/wailsapp/mimetype v1.4.1 // indirect | ||||
| 	golang.org/x/crypto v0.33.0 // indirect | ||||
| 	golang.org/x/net v0.35.0 // indirect | ||||
| 	golang.org/x/sys v0.30.0 // indirect | ||||
| 	golang.org/x/text v0.22.0 // indirect | ||||
| ) | ||||
| 
 | ||||
| // replace github.com/wailsapp/wails/v2 v2.10.1 => /home/kirill/go/pkg/mod | ||||
|  | @ -0,0 +1,79 @@ | |||
| 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.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.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= | ||||
| github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= | ||||
| github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= | ||||
| github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= | ||||
| github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= | ||||
| github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| 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.13.3 h1:pwhpCPrTl5qry5HRdM5FwdXnhXSLSY+WE+YQSeCaafY= | ||||
| github.com/labstack/echo/v4 v4.13.3/go.mod h1:o90YNEeQWjDozo584l7AwhJMHN0bOC4tAfg+Xox9q5g= | ||||
| github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= | ||||
| github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= | ||||
| 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.6.1 h1:xd8bzARK3dErqkPFtoF9F3/HgN8UQk0ed1YDKpEz01A= | ||||
| github.com/leaanthony/go-ansi-parser v1.6.1/go.mod h1:+vva/2y4alzVmmIEpk9QDhA7vLC5zKDTRwfZGOp3IWU= | ||||
| github.com/leaanthony/gosod v1.0.4 h1:YLAbVyd591MRffDgxUOU1NwLhT9T1/YiwjKZpkNFeaI= | ||||
| github.com/leaanthony/gosod v1.0.4/go.mod h1:GKuIL0zzPj3O1SdWQOdgURSuhkF+Urizzxh26t9f1cw= | ||||
| github.com/leaanthony/slicer v1.6.0 h1:1RFP5uiPJvT93TAHi+ipd3NACobkW53yUiBqZheE/Js= | ||||
| github.com/leaanthony/slicer v1.6.0/go.mod h1:o/Iz29g7LN0GqH3aMjWAe90381nyZlDNquK+mtH2Fj8= | ||||
| github.com/leaanthony/u v1.1.1 h1:TUFjwDGlNX+WuwVEzDqQwC2lOv0P4uhTQw7CMFdiK7M= | ||||
| github.com/leaanthony/u v1.1.1/go.mod h1:9+o6hejoRljvZ3BzdYlVL0JYCwtnAsVuN9pVTQcaRfI= | ||||
| github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= | ||||
| github.com/matryer/is v1.4.1 h1:55ehd8zaGABKLXQUe2awZ99BD/PTc2ls+KV/dXphgEQ= | ||||
| github.com/matryer/is v1.4.1/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= | ||||
| github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= | ||||
| github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= | ||||
| github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= | ||||
| github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= | ||||
| github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= | ||||
| github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= | ||||
| github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= | ||||
| 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/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= | ||||
| github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= | ||||
| github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= | ||||
| github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew= | ||||
| github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o= | ||||
| github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= | ||||
| github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= | ||||
| github.com/tkrajina/go-reflector v0.5.8 h1:yPADHrwmUbMq4RGEyaOUpz2H90sRsETNVpjzo3DLVQQ= | ||||
| github.com/tkrajina/go-reflector v0.5.8/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.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= | ||||
| github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= | ||||
| github.com/wailsapp/go-webview2 v1.0.19 h1:7U3QcDj1PrBPaxJNCui2k1SkWml+Q5kvFUFyTImA6NU= | ||||
| github.com/wailsapp/go-webview2 v1.0.19/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc= | ||||
| github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= | ||||
| github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= | ||||
| github.com/wailsapp/wails/v2 v2.10.1 h1:QWHvWMXII2nI/nXz77gpPG8P3ehl6zKe+u4su5BWIns= | ||||
| github.com/wailsapp/wails/v2 v2.10.1/go.mod h1:zrebnFV6MQf9kx8HI4iAv63vsR5v67oS7GTEZ7Pz1TY= | ||||
| golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= | ||||
| golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= | ||||
| golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||||
| golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= | ||||
| golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= | ||||
| 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-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= | ||||
| golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= | ||||
| 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.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= | ||||
| golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||
| gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
|  | @ -0,0 +1,36 @@ | |||
| package main | ||||
| 
 | ||||
| import ( | ||||
| 	"embed" | ||||
| 
 | ||||
| 	"github.com/wailsapp/wails/v2" | ||||
| 	"github.com/wailsapp/wails/v2/pkg/options" | ||||
| 	"github.com/wailsapp/wails/v2/pkg/options/assetserver" | ||||
| ) | ||||
| 
 | ||||
| //go:embed all:frontend/dist
 | ||||
| var assets embed.FS | ||||
| 
 | ||||
| func main() { | ||||
| 	// Create an instance of the app structure
 | ||||
| 	app := NewApp() | ||||
| 
 | ||||
| 	// Create application with options
 | ||||
| 	err := wails.Run(&options.App{ | ||||
| 		Title:  "myproject", | ||||
| 		Width:  1024, | ||||
| 		Height: 768, | ||||
| 		AssetServer: &assetserver.Options{ | ||||
| 			Assets: assets, | ||||
| 		}, | ||||
| 		BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, | ||||
| 		OnStartup:        app.startup, | ||||
| 		Bind: []interface{}{ | ||||
| 			app, | ||||
| 		}, | ||||
| 	}) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		println("Error:", err.Error()) | ||||
| 	} | ||||
| } | ||||
|  | @ -0,0 +1,13 @@ | |||
| { | ||||
|   "$schema": "https://wails.io/schemas/config.v2.json", | ||||
|   "name": "myproject", | ||||
|   "outputfilename": "myproject", | ||||
|   "frontend:install": "npm install", | ||||
|   "frontend:build": "npm run build", | ||||
|   "frontend:dev:watcher": "npm run dev", | ||||
|   "frontend:dev:serverUrl": "auto", | ||||
|   "author": { | ||||
|     "name": "Kirill Khrychikov", | ||||
|     "email": "kkhrychikov@mbk-lab.ru" | ||||
|   } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue