Compare commits

..

49 Commits

Author SHA1 Message Date
Travis McLane 3fc572eea0 always specify '-H windowsgui' for windows 2020-09-14 21:42:47 -05:00
Ilgıt Yıldırım fe2c5e8611 handle Set error on Update method 2020-09-13 18:50:41 +10:00
Lea Anthony 422ee22d0c Updated contributors 2020-09-11 06:40:36 +10:00
Lea Anthony 22f94cfdb6 Merge branch 'artooro-angular-routing-fix' into develop 2020-09-11 06:39:15 +10:00
Arthur Wiebe 5d754f40de resolve angular routing broken when app is built 2020-09-09 22:06:14 -04:00
Lea Anthony c9b26c6352 Merge branch 'develop' 2020-09-10 06:55:39 +10:00
Lea Anthony 6f0696631f v1.8.0 2020-09-10 06:45:42 +10:00
Lea Anthony fefb54de12 v1.7.2-pre12 2020-09-10 06:40:13 +10:00
Lea Anthony b4224066f7 css fix for vanilla 2020-09-10 06:39:36 +10:00
Lea Anthony 3d9ef75488 v1.7.2-pre11 2020-09-10 06:19:07 +10:00
Lea Anthony 79ecb0704e test fix 2020-09-10 06:17:17 +10:00
Lea Anthony 8154887824 v1.7.2-pre10 2020-09-09 06:58:30 +10:00
Lea Anthony 39ae91a250 Simplify Subscribe() 2020-09-09 06:27:57 +10:00
Lea Anthony 861f5f2a1c v1.7.2-pre9 2020-09-08 07:06:27 +10:00
Lea Anthony 89ed00d6ed Fix svelte for Windows 2020-09-08 07:04:01 +10:00
Lea Anthony 1e1834158b fix vanilla template for windows 2020-09-07 20:45:20 +10:00
Lea Anthony 214fcf03b9 v1.7.2-pre8 2020-09-07 20:28:29 +10:00
Tim Kipp 82ac4f1358 chore: removed Svelte TypeScript support for now 2020-09-07 17:35:12 +10:00
Tim Kipp 8b7cd03428 chore: removed Svelte template link 2020-09-07 17:35:12 +10:00
Tim Kipp 4d2b4fec45 feat: added Svelte template 2020-09-07 17:35:12 +10:00
Lea Anthony bc0478b2b2 Update README.md 2020-09-06 15:45:37 +10:00
Lea Anthony d59849b952 v1.7.2-pre7 2020-09-05 07:11:28 +10:00
Lea Anthony 806821ad49 v1.7.2-pre6 2020-09-05 07:01:15 +10:00
Lea Anthony a4cc95351f Updated runtime package version 2020-09-05 06:52:39 +10:00
Lea Anthony f851b89350 v1.7.2-pre5 2020-09-04 20:23:26 +10:00
Lea Anthony 7f72189231 updates 2020-09-04 20:20:21 +10:00
Lea Anthony ef79dd95cf Merge branch 'sync-store' into develop 2020-09-04 20:19:20 +10:00
Lea Anthony d49b146eaa Add mutex to store 2020-09-04 20:08:31 +10:00
Lea Anthony 0474f15c05 Simplify Store type conversions 2020-09-01 20:36:18 +10:00
Lea Anthony ba0af0c16d Lint fix! 2020-08-31 21:17:04 +10:00
Lea Anthony c9f1247284 Updated to use specialised update fuctions 2020-08-31 21:10:32 +10:00
Lea Anthony baa661532d Now using reflection
Update() can now take specialised functions
2020-08-31 21:10:20 +10:00
Lea Anthony 43a5f410d9 Major updates
Automatic type conversion
Support struct data
Custom error handler
2020-08-31 20:00:39 +10:00
Lea Anthony 0ab6a93e0c Update runtime defs
Use runtime.Store instead of wails.Store
2020-08-30 16:07:53 +10:00
Lea Anthony 485df87560 Update vanilla template 2020-08-30 15:49:37 +10:00
Lea Anthony 176c447e87 Update to latest assets 2020-08-30 15:49:29 +10:00
Lea Anthony aa9cb5e58e Add store to js runtime 2020-08-30 15:49:12 +10:00
Lea Anthony 9a7be38462 Update WailsInit checker 2020-08-30 15:47:32 +10:00
Lea Anthony 678c2194db Add Sync Store 2020-08-30 15:46:50 +10:00
Lea Anthony 9f9c9e27de Move runtime out to package 2020-08-30 15:46:31 +10:00
Lea Anthony f86996705b v1.7.1 2020-07-03 20:07:02 +10:00
Lea Anthony 254aa664d7 Fix contributors 2020-07-03 20:07:02 +10:00
Lea Anthony c8371ee824 v1.7.0-pre2 2020-07-03 20:07:02 +10:00
Lea Anthony 02e0250555 fix: vanilla template for windows 2020-07-03 20:07:02 +10:00
Lea Anthony e1b025cab6 fix: windows icon name 2020-07-03 20:07:02 +10:00
Lea Anthony 626854f1b7 free filter memory 2020-07-03 20:07:02 +10:00
Lea Anthony 98468d1c4d v1.7.0-pre1 2020-07-03 20:07:02 +10:00
Lea Anthony 1062aeb136 Add ldflags option to build 2020-07-03 20:07:02 +10:00
Lea Anthony aa93e5d8d2 Merge branch 'develop' 2020-06-19 09:42:15 +10:00
40 changed files with 2355 additions and 264 deletions
+2
View File
@@ -33,3 +33,5 @@ Wails is what it is because of the time and effort given by these great people.
* [artem](https://github.com/Unix4ever)
* [Tim Kipp](https://github.com/timkippdev)
* [Dmitry Gomzyakov](https://github.com/kyoto44)
* [Arthur Wiebe](https://github.com/artooro)
* [Ilgıt Yıldırım](https://github.com/ilgityildirim)
-1
View File
@@ -12,7 +12,6 @@
<a href="https://houndci.com"><img src="https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg"/></a>
<a href="https://github.com/avelino/awesome-go" rel="nofollow"><img src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" alt="Awesome"></a>
<a href="https://github.com/wailsapp/wails/workflows/release/badge.svg?branch=master" rel="nofollow"><img src="https://github.com/wailsapp/wails/workflows/release/badge.svg?branch=master" alt="Release Pipelines"></a>
<a href="https://github.com/wailsapp/wails/workflows/latest-pre/badge.svg?branch=masterr" rel="nofollow"><img src="https://github.com/wailsapp/wails/workflows/latest-pre/badge.svg?branch=master" alt="Pre-Release Pipelines"></a>
</p>
The traditional method of providing web interfaces to Go programs is via a built-in web server. Wails offers a different approach: it provides the ability to wrap both Go code and a web frontend into a single binary. Tools are provided to make this easy for you by handling project creation, compilation and bundling. All you have to do is get creative!
+12 -1
View File
@@ -13,6 +13,7 @@ import (
"github.com/wailsapp/wails/lib/ipc"
"github.com/wailsapp/wails/lib/logger"
"github.com/wailsapp/wails/lib/renderer"
wailsruntime "github.com/wailsapp/wails/runtime"
)
// -------------------------------- Compile time Flags ------------------------------
@@ -20,6 +21,16 @@ import (
// BuildMode indicates what mode we are in
var BuildMode = cmd.BuildModeProd
// Runtime is the Go Runtime struct
type Runtime = wailsruntime.Runtime
// Store is a state store used for syncing with
// the front end
type Store = wailsruntime.Store
// CustomLogger is a specialised logger
type CustomLogger = logger.CustomLogger
// ----------------------------------------------------------------------------------
// App defines the main application struct
@@ -125,7 +136,7 @@ func (a *App) start() error {
a.ipc.Start(a.eventManager, a.bindingManager)
// Create the runtime
a.runtime = NewRuntime(a.eventManager, a.renderer)
a.runtime = wailsruntime.NewRuntime(a.eventManager, a.renderer)
// Start binding manager and give it our renderer
err = a.bindingManager.Start(a.renderer, a.runtime)
+1 -1
View File
@@ -557,7 +557,7 @@ func ldFlags(po *ProjectOptions, buildMode string) string {
}
// Add windows flags
if po.Platform == "windows" && buildMode == BuildModeProd {
if po.Platform == "windows" {
ldflags += "-H windowsgui "
}
@@ -5,7 +5,7 @@ const routes: Routes = [];
@NgModule({
imports: [
RouterModule.forRoot(routes)
RouterModule.forRoot(routes,{useHash:true})
],
exports: [RouterModule]
})
+4
View File
@@ -0,0 +1,4 @@
/node_modules/
/public/build/
.DS_Store
+90
View File
@@ -0,0 +1,90 @@
*Looking for a shareable component template? Go here --> [sveltejs/component-template](https://github.com/sveltejs/component-template)*
---
# svelte app
This is a project template for [Svelte](https://svelte.dev) apps. It lives at https://github.com/sveltejs/template.
To create a new project based on this template using [degit](https://github.com/Rich-Harris/degit):
```bash
npx degit sveltejs/template svelte-app
cd svelte-app
```
*Note that you will need to have [Node.js](https://nodejs.org) installed.*
## Get started
Install the dependencies...
```bash
cd svelte-app
npm install
```
...then start [Rollup](https://rollupjs.org):
```bash
npm run dev
```
Navigate to [localhost:5000](http://localhost:5000). You should see your app running. Edit a component file in `src`, save it, and reload the page to see your changes.
By default, the server will only respond to requests from localhost. To allow connections from other computers, edit the `sirv` commands in package.json to include the option `--host 0.0.0.0`.
## Building and running in production mode
To create an optimised version of the app:
```bash
npm run build
```
You can run the newly built app with `npm run start`. This uses [sirv](https://github.com/lukeed/sirv), which is included in your package.json's `dependencies` so that the app will work when you deploy to platforms like [Heroku](https://heroku.com).
## Single-page app mode
By default, sirv will only respond to requests that match files in `public`. This is to maximise compatibility with static fileservers, allowing you to deploy your app anywhere.
If you're building a single-page app (SPA) with multiple routes, sirv needs to be able to respond to requests for *any* path. You can make it so by editing the `"start"` command in package.json:
```js
"start": "sirv public --single"
```
## Deploying to the web
### With [Vercel](https://vercel.com)
Install `vercel` if you haven't already:
```bash
npm install -g vercel
```
Then, from within your project folder:
```bash
cd public
vercel deploy --name my-project
```
### With [surge](https://surge.sh/)
Install `surge` if you haven't already:
```bash
npm install -g surge
```
Then, from within your project folder:
```bash
npm run build
surge public my-project.surge.sh
```
@@ -0,0 +1,31 @@
{
"name": "{{.NPMProjectName}}",
"author": "{{.Author.Name}}<{{.Author.Email}}>",
"scripts": {
"build": "rollup -c",
"dev": "rollup -c -w",
"start": "sirv public"
},
"devDependencies": {
"@babel/core": "^7.11.6",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-transform-runtime": "^7.11.5",
"@babel/preset-env": "^7.11.5",
"@rollup/plugin-commonjs": "^14.0.0",
"@rollup/plugin-image": "^2.0.5",
"@rollup/plugin-node-resolve": "^8.0.0",
"core-js": "^3.6.5",
"rollup": "^2.3.4",
"rollup-plugin-babel": "^4.4.0",
"rollup-plugin-livereload": "^2.0.0",
"rollup-plugin-polyfill": "^3.0.0",
"rollup-plugin-svelte": "^6.0.0",
"rollup-plugin-terser": "^7.0.0",
"svelte": "^3.0.0"
},
"dependencies": {
"sirv-cli": "^1.0.0",
"@wailsapp/runtime": "^1.0.10",
"svelte-simple-modal": "^0.6.0"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width,initial-scale=1'>
<title>Svelte app</title>
<link rel='icon' type='image/png' href='/favicon.png'>
<link rel='stylesheet' href='/build/bundle.css'>
<script defer src='/build/bundle.js'></script>
</head>
<body>
</body>
</html>
@@ -0,0 +1,110 @@
import svelte from 'rollup-plugin-svelte';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import livereload from 'rollup-plugin-livereload';
import { terser } from 'rollup-plugin-terser';
import image from '@rollup/plugin-image';
import babel from 'rollup-plugin-babel';
import polyfill from 'rollup-plugin-polyfill';
const production = !process.env.ROLLUP_WATCH;
function serve() {
let server;
function toExit() {
if (server) server.kill(0);
}
return {
writeBundle() {
if (server) return;
server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], {
stdio: ['ignore', 'inherit', 'inherit'],
shell: true
});
process.on('SIGTERM', toExit);
process.on('exit', toExit);
}
};
}
export default {
input: 'src/main.js',
output: {
sourcemap: true,
format: 'iife',
name: 'app',
file: 'public/build/bundle.js'
},
plugins: [
image(),
svelte({
// enable run-time checks when not in production
dev: !production,
// we'll extract any component CSS out into
// a separate file - better for performance
css: css => {
css.write('bundle.css');
}
}),
// If you have external dependencies installed from
// npm, you'll most likely need these plugins. In
// some cases you'll need additional configuration -
// consult the documentation for details:
// https://github.com/rollup/plugins/tree/master/packages/commonjs
resolve({
browser: true,
dedupe: ['svelte', 'svelte/transition', 'svelte/internal']
}),
commonjs(),
// In dev mode, call `npm run start` once
// the bundle has been generated
!production && serve(),
// Watch the `public` directory and refresh the
// browser on changes when not in production
!production && livereload('public'),
// Credit: https://blog.az.sg/posts/svelte-and-ie11/
babel({
extensions: [ '.js', '.jsx', '.es6', '.es', '.mjs', '.svelte', '.html' ],
runtimeHelpers: true,
exclude: [ 'node_modules/@babel/**', 'node_modules/core-js/**' ],
presets: [
[
'@babel/preset-env',
{
targets: '> 0.25%, not dead, IE 11',
modules: false,
spec: true,
useBuiltIns: 'usage',
forceAllTransforms: true,
corejs: 3,
},
]
],
plugins: [
'@babel/plugin-syntax-dynamic-import',
[
'@babel/plugin-transform-runtime',
{
useESModules: true
}
]
]
}),
polyfill(['@webcomponents/webcomponentsjs']),
// If we're building for production (npm run build
// instead of npm run dev), minify
production && terser()
],
watch: {
clearScreen: false
}
};
@@ -0,0 +1,69 @@
<script>
import Modal from 'svelte-simple-modal';
import HelloWorld from './components/HelloWorld.svelte'
import logo from './logo.png';
</script>
<main>
<div class="App">
<header class="App-header">
<Modal>
<img src={logo} class="App-logo" alt="logo" />
<p>Welcome to your new <code>wails/svelte</code> project.</p>
<HelloWorld/>
</Modal>
</header>
</div>
</main>
<style>
:global(body) {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
}
.App {
text-align: center;
}
.App-logo {
height: 40vmin;
pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
.App-logo {
animation: App-logo-spin infinite 20s linear;
}
}
.App-header {
background-color: #282c34;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
</style>
@@ -0,0 +1,18 @@
<script>
import { getContext } from 'svelte';
import ModalContent from './ModalContent.svelte'
const { open } = getContext('simple-modal');
const handleOpenModal = () => {
window.backend.basic().then((result) => {
open(ModalContent, { message: result });
});
};
</script>
<main>
<p><button on:click={handleOpenModal}>Hello</button></p>
</main>
<style></style>
@@ -0,0 +1,7 @@
<script>
export let message;
</script>
<p>
{message}
</p>
Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

+13
View File
@@ -0,0 +1,13 @@
import App from './App.svelte';
import * as Wails from '@wailsapp/runtime';
let app;
Wails.Init(() => {
app = new App({
target: document.body,
});
});
export default app;
+5
View File
@@ -0,0 +1,5 @@
module {{.BinaryName}}
require (
github.com/wailsapp/wails {{.WailsVersion}}
)
+27
View File
@@ -0,0 +1,27 @@
package main
import (
"github.com/leaanthony/mewn"
"github.com/wailsapp/wails"
)
func basic() string {
return "World!"
}
func main() {
js := mewn.String("./frontend/public/build/bundle.js")
css := mewn.String("./frontend/public/build/bundle.css")
app := wails.CreateApp(&wails.AppConfig{
Width: 1024,
Height: 768,
Title: "{{.Name}}",
JS: js,
CSS: css,
Colour: "#131313",
})
app.Bind(basic)
app.Run()
}
+14
View File
@@ -0,0 +1,14 @@
{
"name": "Svelte",
"version": "1.0.0",
"shortdescription": "A basic Svelte template",
"description": "A basic Svelte template",
"install": "npm install",
"build": "npm run build",
"author": "Tim Kipp <timkipp.22.developer@gmail.com>",
"created": "2020-09-06 13:06:10.469848 -0700 PDT m=+213.578828559",
"frontenddir": "frontend",
"serve": "npm run dev",
"bridge": "src",
"wailsdir": ""
}
+46
View File
@@ -0,0 +1,46 @@
package main
import (
"math/rand"
"github.com/wailsapp/wails"
)
// Counter is what we use for counting
type Counter struct {
r *wails.Runtime
store *wails.Store
}
// WailsInit is called when the component is being initialised
func (c *Counter) WailsInit(runtime *wails.Runtime) error {
c.r = runtime
c.store = runtime.Store.New("Counter", 0)
return nil
}
// RandomValue sets the counter to a random value
func (c *Counter) RandomValue() {
c.store.Set(rand.Intn(1000))
}
// Increment will increment the counter
func (c *Counter) Increment() {
increment := func(data int) int {
return data + 1
}
// Update the store using the increment function
c.store.Update(increment)
}
// Decrement will decrement the counter
func (c *Counter) Decrement() {
decrement := func(data int) int {
return data - 1
}
// Update the store using the decrement function
c.store.Update(decrement)
}

Some files were not shown because too many files have changed in this diff Show More