Right now, the current functionality is to give you a blank slate every time. Instead, the user should be able to save different groups of layers in different boards that are then stored locally. Upon returning to the page, the user should see be able to open saved boards.
[ ] 0. Add localForage to the converter worker (and change the name of the worker)
[ ] 1. Store every layer and display them all when opening the app, call them "unsaved"
Will need to store gerber file as well as state model
[ ] 2. Add mechanism to remove all "unsaved" layers from storage (and state)
[ ] 3. Create concept of "boards" in the state, allow layers to be "saved" to boards, store the boards
[ ] 4. Build board drawer component with controls to create, delete, and open saved boards
[ ] 5. Build more controls that I haven't thought of yet
[ ] 6. Loop back and figure out what to do about Safari, where local storage mechanisms won't work in a web worker
Option 1: put the entire worker in a pseudo worker and hope Safari is good enough to handle it
Option 2: Have worker detect support and trigger app to load localForage in the main thread, where the worker can pass it stuff to store
Could go either way. Option 1 would make conversion more disruptive. Option 2 would impose so overhead (with entire Gerber files being passed between threads)
Right now, the current functionality is to give you a blank slate every time. Instead, the user should be able to save different groups of layers in different boards that are then stored locally. Upon returning to the page, the user should see be able to open saved boards.
Will probably need localForage at the very least, and maybe pseudo worker for Safari.
Building it will look something like