//
//  AppDelegate.swift
//  Catalog-macOS
//
//  Created by Matt Gallagher on 4/1/19. 
//  Copyright © 2019 Matt Gallagher ( https://www.cocoawithlove.com ).  All rights reserved. 
//
//  Permission to use, copy, modify, and/or distribute this software for any purpose with or without
//  fee is hereby granted, provided that the above copyright notice and this permission notice
//  appear in all copies. 
//
//  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
//  SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL THE
//  AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
//  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
//  NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
//  OF THIS SOFTWARE. 
//

import CwlViews

private let windowVar = Var(WindowState())

#if DEBUG
	let viewLog = windowVar.logJson(prefix: "View-state changed: ")
#endif

applicationMain {
	Application(
		.mainMenu -- mainMenu(),
		.lifetimes <-- windowVar.map {[
			window($0).nsWindow()
		]},
		.willEncodeRestorableState -- windowVar.storeToArchive(),
		.didDecodeRestorableState -- windowVar.loadFromArchive(),
		.shouldTerminateAfterLastWindowClosed() -- true
	)
}
