diff --git a/app.go b/app.go
index ba2eaab..a6e066e 100644
--- a/app.go
+++ b/app.go
@@ -31,11 +31,11 @@ func (a *App) Greet(name string) string {
return fmt.Sprintf("Hello %s, It's show time!", name)
}
-func (a *App) Load(name string) *data.StackistFile {
- return &data.StackistFile{}
+func (a *App) Load(name string) *data.StackistFileV1 {
+ return &data.StackistFileV1{}
}
-func (a *App) Save(name string, file *data.StackistFile) error {
+func (a *App) Save(name string, file *data.StackistFileV1) error {
b, err := json.Marshal(file)
if err != nil {
return err
diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index 6408852..2a82cac 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -26,8 +26,10 @@
let showImport: boolean = false
let importValid: boolean = false
let importImage: HTMLImageElement = null
- let importFile: data.StackistFile = null
+ let importFile: data.StackistFileV1 = null
let importFilepath: string = ''
+
+ let showPreview: boolean = false
let refresh = {}
@@ -53,7 +55,7 @@
-
-
-
+ {#if showPreview}
+
+
+
+ {/if}
@@ -111,6 +120,15 @@
display: grid;
grid-template-rows: auto minmax(0, 1fr);
}
+ menu {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ }
+ :global(menu > button) {
+ width: 4rem !important;
+ color: var(--cds-text-02, #c6c6c6);
+ }
.content {
display: grid;
grid-template-columns: 1fr 4fr;
diff --git a/frontend/src/components/FloatingPanel.svelte b/frontend/src/components/FloatingPanel.svelte
index b9ead46..e6ebc26 100644
--- a/frontend/src/components/FloatingPanel.svelte
+++ b/frontend/src/components/FloatingPanel.svelte
@@ -5,18 +5,62 @@
ModalFooter,
} from "carbon-components-svelte"
+ import {
+ Close
+ } from 'carbon-icons-svelte'
+
export let title: string = "Untitled"
export let label: string = "Untitled"
export let noPadding: boolean = false
+
+ export let open: boolean = false
+
+ function drag(node) {
+ let dragging: boolean = false
+ let x: number = 0
+ let y: number = 0
+ node.addEventListener('mousedown', start)
+ window.addEventListener('mouseup', stop)
+ window.addEventListener('mouseleave', stop)
+ window.addEventListener('mousemove', move)
+
+ function start(e: MouseEvent) {
+ dragging = true
+ x = e.clientX
+ y = e.clientY
+ node.style.cursor = 'grabbing'
+ document.body.style.cursor = 'grabbing'
+ document.body.style.userSelect = 'none'
+ }
+ function stop(e: MouseEvent) {
+ dragging = false
+ node.style.cursor = 'auto'
+ document.body.style.cursor = 'auto'
+ document.body.style.userSelect = 'auto'
+ }
+ function move(e: MouseEvent) {
+ if (!dragging) return
+ let dx = e.clientX - x
+ let dy = e.clientY - y
+ x = e.clientX
+ y = e.clientY
+ node.style.left = parseInt(node.style.left) + dx + 'px'
+ node.style.top = parseInt(node.style.top) + dy + 'px'
+ }
+
+ }
-