This is an interim solution which enables atom/image-view#4 to correctly
deserialize when the path has been deleted both on atom master and in
atom/atom#1326.
settings-views launches apm via a NodeBufferedProcess so it still needs to
be available built against Atom's headers.
The version in apm/ is just for running via the CLI directly and is compiled
against node's headers.
Instead of creating representations for a class as soon as the class is
registered, we wait until all representation classes are registered and
call `::createRepresentations` on the Atom global to build everything in
a single bottom up traversal.
This is the first step in converting Pane into a telepath model. We skip
interaction with the deserializer for items and allow telepath to handle
everything. There's actually a preexisting replication error in moveItem
that I'm going to leave until we drop out a Pane model.
I initially ripped out Atom::getLoadSettings in favor of a mutable
property because window spec was making an assumption that such a
property existed anyway. Since load settings need to be available from
class methods, the instance method just delegates to the class method.
But that means there's no ::loadSettings property to mutate in that
spec. I replaced the former approach with a spy which has the added
advantage of not polluting windowSettings for subsequent specs.
Previously the display was changed to none via $.hide() which accidentally
affected the ability of package's to serialize DOM properties such as
scrollTop since the value would always be zero when the display was none.
The goal here is to just prevent a flicker when refreshing the
editor window and setting visibility to hidden still accomplishes this.
Addresses #1306
We still need to know why this is happening, so I left an exception in
non-release builds. Since the pane system is about to change a lot I
think this is good enough for now.