diff --git a/dirty.coffee b/dirty.coffee new file mode 100644 index 0000000..fa9de96 --- /dev/null +++ b/dirty.coffee @@ -0,0 +1,29 @@ +module.exports = (I, self) -> + # TODO: May want to not stash this on I, possibly have a volatileAccessor? + self.attrAccessor "savedCommand" + + self.extend + dirty: -> + self.savedCommand() != self.lastCommand() + lastCommand: -> + self.history().last() + markClean: -> + self.savedCommand self.lastCommand() + + self.markClean() + + # HACK: This assumes we're the only app in the page + # NOTE: Track `prompted` so in an iframe it's less likely to trigger twice + prompted = false + window.addEventListener "beforeunload", (e) -> + unless prompted + if self.dirty() + e.returnValue = "Your changes haven't yet been saved. If you leave now you will lose your work." + prompted = true + + setTimeout -> + prompted = false + + return e.returnValue + + return self diff --git a/dirty.coffee.md b/dirty.coffee.md deleted file mode 100644 index b19eeda..0000000 --- a/dirty.coffee.md +++ /dev/null @@ -1,34 +0,0 @@ -Dirty -===== - -Handle dirty tracking and onbeforeunload event for editors. - - module.exports = (I, self) -> - # TODO: May want to not stash this on I, possibly have a volatileAccessor? - self.attrAccessor "savedCommand" - - self.extend - dirty: -> - self.savedCommand() != self.lastCommand() - lastCommand: -> - self.history().last() - markClean: -> - self.savedCommand self.lastCommand() - - self.markClean() - - # HACK: This assumes we're the only app in the page - # NOTE: Track `prompted` so in an iframe it won't trigger twice - prompted = false - window.addEventListener "beforeunload", (e) -> - unless prompted - if self.dirty() - e.returnValue = "Your changes haven't yet been saved. If you leave now you will lose your work." - prompted = true - - setTimeout -> - prompted = false - - return e.returnValue - - return self diff --git a/download.md b/download.md index 0b56ec0..73eb595 100644 --- a/download.md +++ b/download.md @@ -50,4 +50,4 @@ Pixi Paint is [open source software](https://github.com/STRd6/pixel-editor). > $(".content").eq(0).empty() > .append($ "