From c301dcfbb1b5187d4608fdb52a393c196f849aad Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Fri, 13 Mar 2015 13:11:24 -0700 Subject: [PATCH] feat(mode-switch): New layout designed for small form factors Summary: feat(mode-switch): almost working Remove SheetStore in favor of bigger WorkspaceStore Back button for mode switching Test Plan: Tests WIP Reviewers: evan Reviewed By: evan Differential Revision: https://review.inboxapp.com/D1292 --- .../stylesheets/account-sidebar.less | 2 +- internal_packages/message-list/lib/main.cjsx | 22 +++++- .../lib/message-toolbar-items.cjsx | 2 +- .../stylesheets/message-list.less | 2 - internal_packages/mode-switch/lib/main.coffee | 9 +++ .../mode-switch/lib/mode-switch.cjsx | 62 +++++++++++++++ internal_packages/mode-switch/package.json | 8 ++ .../mode-switch/stylesheets/mode-switch.less | 10 +++ .../thread-list/stylesheets/thread-list.less | 3 +- keymaps/base.cson | 5 +- src/atom.coffee | 3 + src/component-registry.coffee | 7 +- src/components/retina-img.cjsx | 25 +++++- src/flux/actions.coffee | 4 +- src/flux/stores/workspace-store.coffee | 44 +++++++++++ src/sheet-container.cjsx | 72 +++++++++++------- src/sheet-store.cjsx | 26 ------- src/sheet.cjsx | 37 ++++++--- static/images/sheets/sheet-back@2x.png | Bin 0 -> 235356 bytes static/images/splitpane/modeslider-bg@1x.png | Bin 0 -> 377 bytes static/images/splitpane/modeslider-bg@2x.png | Bin 0 -> 693 bytes .../images/splitpane/modeslider-knob@1x.png | Bin 0 -> 465 bytes .../images/splitpane/modeslider-knob@2x.png | Bin 0 -> 1028 bytes .../toolbar-icon-listmode-active@1x.png | Bin 0 -> 279 bytes .../toolbar-icon-listmode-active@2x.png | Bin 0 -> 499 bytes .../splitpane/toolbar-icon-listmode@1x.png | Bin 0 -> 356 bytes .../splitpane/toolbar-icon-listmode@2x.png | Bin 0 -> 565 bytes .../toolbar-icon-splitpanes-active@1x.png | Bin 0 -> 353 bytes .../toolbar-icon-splitpanes-active@2x.png | Bin 0 -> 495 bytes .../splitpane/toolbar-icon-splitpanes@1x.png | Bin 0 -> 279 bytes .../splitpane/toolbar-icon-splitpanes@2x.png | Bin 0 -> 610 bytes static/workspace.less | 42 ++++++++++ 32 files changed, 308 insertions(+), 77 deletions(-) create mode 100644 internal_packages/mode-switch/lib/main.coffee create mode 100644 internal_packages/mode-switch/lib/mode-switch.cjsx create mode 100644 internal_packages/mode-switch/package.json create mode 100644 internal_packages/mode-switch/stylesheets/mode-switch.less delete mode 100644 src/sheet-store.cjsx create mode 100644 static/images/sheets/sheet-back@2x.png create mode 100644 static/images/splitpane/modeslider-bg@1x.png create mode 100644 static/images/splitpane/modeslider-bg@2x.png create mode 100644 static/images/splitpane/modeslider-knob@1x.png create mode 100644 static/images/splitpane/modeslider-knob@2x.png create mode 100644 static/images/splitpane/toolbar-icon-listmode-active@1x.png create mode 100644 static/images/splitpane/toolbar-icon-listmode-active@2x.png create mode 100644 static/images/splitpane/toolbar-icon-listmode@1x.png create mode 100644 static/images/splitpane/toolbar-icon-listmode@2x.png create mode 100644 static/images/splitpane/toolbar-icon-splitpanes-active@1x.png create mode 100644 static/images/splitpane/toolbar-icon-splitpanes-active@2x.png create mode 100644 static/images/splitpane/toolbar-icon-splitpanes@1x.png create mode 100644 static/images/splitpane/toolbar-icon-splitpanes@2x.png diff --git a/internal_packages/account-sidebar/stylesheets/account-sidebar.less b/internal_packages/account-sidebar/stylesheets/account-sidebar.less index 0c86aeb81..7e2a3b493 100644 --- a/internal_packages/account-sidebar/stylesheets/account-sidebar.less +++ b/internal_packages/account-sidebar/stylesheets/account-sidebar.less @@ -7,7 +7,6 @@ overflow: auto; background-color: @source-list-bg; - box-shadow: inset -1px -2px 5px rgba(0, 0, 0, 0.22); -webkit-user-select: none; .item { @@ -27,6 +26,7 @@ .item-tag { .unread { float: right; + font-weight: @font-weight-medium; color: @source-list-active-bg; background: @source-list-bg; } diff --git a/internal_packages/message-list/lib/main.cjsx b/internal_packages/message-list/lib/main.cjsx index 1380c78a8..faafc87ea 100644 --- a/internal_packages/message-list/lib/main.cjsx +++ b/internal_packages/message-list/lib/main.cjsx @@ -9,17 +9,33 @@ module.exports = activate: (@state={}) -> # Register Message List Actions we provide globally ComponentRegistry.register - name: 'MessageToolbarItems' - role: 'MessageList:Toolbar' + name: 'MessageListSplit' + role: 'Root:Right' + mode: 'split' + view: MessageList + + ComponentRegistry.register + name: 'MessageToolbarItemsSplit' + role: 'Root:Right:Toolbar' + mode: 'split' view: MessageToolbarItems ComponentRegistry.register name: 'MessageList' - role: 'Root:Right' + role: 'Thread:Center' + mode: 'list' view: MessageList + ComponentRegistry.register + name: 'MessageToolbarItems' + role: 'Thread:Center:Toolbar' + mode: 'list' + view: MessageToolbarItems + + deactivate: -> ComponentRegistry.unregister 'MessageToolbarItems' + ComponentRegistry.unregister 'MessageListSplit' ComponentRegistry.unregister 'MessageList' serialize: -> @state diff --git a/internal_packages/message-list/lib/message-toolbar-items.cjsx b/internal_packages/message-list/lib/message-toolbar-items.cjsx index 58ab6e654..5547d8067 100644 --- a/internal_packages/message-list/lib/message-toolbar-items.cjsx +++ b/internal_packages/message-list/lib/message-toolbar-items.cjsx @@ -62,7 +62,7 @@ ArchiveButton = React.createClass module.exports = React.createClass getInitialState: -> - threadIsSelected: false + threadIsSelected: ThreadStore.selectedId()? render: -> classes = React.addons.classSet diff --git a/internal_packages/message-list/stylesheets/message-list.less b/internal_packages/message-list/stylesheets/message-list.less index f5b694608..96fa30371 100644 --- a/internal_packages/message-list/stylesheets/message-list.less +++ b/internal_packages/message-list/stylesheets/message-list.less @@ -12,7 +12,6 @@ text-align: center; position: absolute; pointer-events: none; - transition: opacity .25s ease-in-out; .message-toolbar-items-inner { margin: auto; @@ -22,7 +21,6 @@ } } -// .message-toolbar-items also fades in and out when you select / deselect .message-toolbar-items.hidden { opacity: 0; } diff --git a/internal_packages/mode-switch/lib/main.coffee b/internal_packages/mode-switch/lib/main.coffee new file mode 100644 index 000000000..ebea562ad --- /dev/null +++ b/internal_packages/mode-switch/lib/main.coffee @@ -0,0 +1,9 @@ +{ComponentRegistry} = require 'inbox-exports' +ModeSwitch = require './mode-switch' + +module.exports = + activate: (state) -> + ComponentRegistry.register + name: 'ModeSwitch' + view: ModeSwitch + role: 'Root:Toolbar' diff --git a/internal_packages/mode-switch/lib/mode-switch.cjsx b/internal_packages/mode-switch/lib/mode-switch.cjsx new file mode 100644 index 000000000..b60355e70 --- /dev/null +++ b/internal_packages/mode-switch/lib/mode-switch.cjsx @@ -0,0 +1,62 @@ +{ComponentRegistry, + WorkspaceStore, + Actions} = require "inbox-exports" +{RetinaImg} = require 'ui-components' +React = require "react" +_ = require "underscore-plus" + +module.exports = +ModeSwitch = React.createClass + displayName: 'ModeSwitch' + + getInitialState: -> + mode: WorkspaceStore.selectedLayoutMode() + + componentDidMount: -> + @unsubscribe = WorkspaceStore.listen(@_onStateChanged, @) + + componentWillUnmount: -> + @unsubscribe?() + + render: -> + knobX = if @state.mode is 'list' then 25 else 41 + + # Currently ModeSwitch is an opaque control that is not intended + # to be styled, hence the fixed margins and positions. If we + # turn this into a standard component one day, change! +
+ + + + +
+ + _onStateChanged: -> + @setState + mode: WorkspaceStore.selectedLayoutMode() + + _onToggleMode: -> + if @state.mode is 'list' + Actions.selectLayoutMode('split') + else + Actions.selectLayoutMode('list') + + _onSetMode: (event) -> + Actions.selectLayoutMode(event.target.dataset.mode) + event.stopPropagation() diff --git a/internal_packages/mode-switch/package.json b/internal_packages/mode-switch/package.json new file mode 100644 index 000000000..6f2dc4ca0 --- /dev/null +++ b/internal_packages/mode-switch/package.json @@ -0,0 +1,8 @@ +{ + "name": "mode-switch", + "version": "0.0.1", + "description": "Mode switch", + "main": "./lib/main", + "license": "Proprietary", + "private": true +} diff --git a/internal_packages/mode-switch/stylesheets/mode-switch.less b/internal_packages/mode-switch/stylesheets/mode-switch.less new file mode 100644 index 000000000..8fa915ac2 --- /dev/null +++ b/internal_packages/mode-switch/stylesheets/mode-switch.less @@ -0,0 +1,10 @@ + +.mode-switch { + z-index: 1000; + position: relative; + + .handle { + position:absolute; + transition: left .2s ease-out; + } +} diff --git a/internal_packages/thread-list/stylesheets/thread-list.less b/internal_packages/thread-list/stylesheets/thread-list.less index 958d1c414..e9eacd6b7 100644 --- a/internal_packages/thread-list/stylesheets/thread-list.less +++ b/internal_packages/thread-list/stylesheets/thread-list.less @@ -20,7 +20,7 @@ } .participants { - font-size: @font-size-large; + font-size: @font-size-base; font-weight: @font-weight-semi-bold; text-overflow: ellipsis; overflow: hidden; @@ -43,7 +43,6 @@ height: 99%; width: 5px; top: 0; - left: 1px; background: @unread-color; } diff --git a/keymaps/base.cson b/keymaps/base.cson index 2ebcc24b9..50143d825 100644 --- a/keymaps/base.cson +++ b/keymaps/base.cson @@ -22,11 +22,12 @@ 'a' : 'application:reply-all' # Gmail 'f' : 'application:forward' # Gmail -# Default cross-platform core behaviors + 'escape': 'application:pop-sheet' + + # Default cross-platform core behaviors 'left': 'core:move-left' 'right': 'core:move-right' 'enter': 'core:confirm' - 'escape': 'core:cancel' 'shift-up': 'core:select-up' 'shift-down': 'core:select-down' 'shift-left': 'core:select-left' diff --git a/src/atom.coffee b/src/atom.coffee index 3da2bf343..b58308f10 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -582,6 +582,9 @@ class Atom extends Model 'atom-workspace:logout': => @logout() if @isLoggedIn() + # Make sure we can't be made so small that the interface looks like crap + @getCurrentWindow().setMinimumSize(875, 500) + ipc.on 'onboarding-complete', => maximize = dimensions?.maximized and process.platform isnt 'darwin' @displayWindow({maximize}) diff --git a/src/component-registry.coffee b/src/component-registry.coffee index dcb7f785e..2e4570e2c 100644 --- a/src/component-registry.coffee +++ b/src/component-registry.coffee @@ -22,7 +22,10 @@ Mixin = componentDidMount: -> @_componentUnlistener = ComponentRegistry.listen => - @setState(getViewsByName(@components)) + if @isMounted() is false + console.log('WARNING: ComponentRegistry firing on unmounted component.') + return + @setState getViewsByName(@components) componentWillUnmount: -> @_componentUnlistener() @@ -33,7 +36,7 @@ class Component # Don't shit the bed if the user forgets `new` return new Component(attributes) unless @ instanceof Component - ['name', 'model', 'view', 'role'].map (key) => + ['name', 'model', 'view', 'role', 'mode'].map (key) => @[key] = attributes[key] if attributes[key] unless @name? diff --git a/src/components/retina-img.cjsx b/src/components/retina-img.cjsx index 5be1350cb..0d1511afc 100644 --- a/src/components/retina-img.cjsx +++ b/src/components/retina-img.cjsx @@ -1,13 +1,28 @@ +_ = require 'underscore-plus' React = require 'react' {Utils} = require "inbox-exports" +StylesImpactedByZoom = [ + 'top', + 'left', + 'right', + 'bottom', + 'paddingTop', + 'paddingLeft', + 'paddingRight', + 'paddingBottom', + 'marginTop', + 'marginBottom', + 'marginLeft', + 'marginRight' +] + module.exports = RetinaImg = React.createClass displayName: 'RetinaImg' propTypes: name: React.PropTypes.string style: React.PropTypes.object - className: React.PropTypes.string # Optional additional properties which adjust the provided # name. Makes it easy to write parent components when images @@ -23,7 +38,13 @@ RetinaImg = React.createClass style = @props.style ? {} style.zoom = if pathIsRetina then 0.5 else 1 - + for key, val of style + val = "#{val}" + if key in StylesImpactedByZoom and val.indexOf('%') is -1 + style[key] = val.replace('px','') / style.zoom + + otherProps = _.omit(@props, _.keys(@constructor.propTypes)) + _pathFor: (name) -> [basename, ext] = name.split('.') diff --git a/src/flux/actions.coffee b/src/flux/actions.coffee index 024fc4e34..943e9c748 100644 --- a/src/flux/actions.coffee +++ b/src/flux/actions.coffee @@ -59,6 +59,7 @@ windowActions = [ "selectThreadId", "selectTagId", "selectView", + "selectLayoutMode", # Actions for composer "composeReply", @@ -102,7 +103,8 @@ windowActions = [ "abortDownload", "fileDownloaded", - "popSheet" + "popSheet", + "pushSheet" ] allActions = [].concat(windowActions).concat(globalActions).concat(mainWindowActions) diff --git a/src/flux/stores/workspace-store.coffee b/src/flux/stores/workspace-store.coffee index 987e0c4af..abf2fc532 100644 --- a/src/flux/stores/workspace-store.coffee +++ b/src/flux/stores/workspace-store.coffee @@ -5,10 +5,20 @@ Actions = require '../actions' WorkspaceStore = Reflux.createStore init: -> @_resetInstanceVars() + @listenTo Actions.selectView, @_onSelectView + @listenTo Actions.selectLayoutMode, @_onSelectLayoutMode + + @listenTo Actions.popSheet, @popSheet + @listenTo Actions.searchQueryCommitted, @popToRootSheet + @listenTo Actions.selectThreadId, @pushThreadSheet + atom.commands.add 'body', + 'application:pop-sheet': => @popSheet() _resetInstanceVars: -> + @_sheetStack = ["Root"] @_view = 'threads' + @_layoutMode = 'list' # Inbound Events @@ -16,9 +26,43 @@ WorkspaceStore = Reflux.createStore @_view = view @trigger(@) + _onSelectLayoutMode: (mode) -> + @_layoutMode = mode + @trigger(@) + # Accessing Data selectedView: -> @_view + selectedLayoutMode: -> + @_layoutMode + + sheet: -> + @_sheetStack[@_sheetStack.length - 1] + + sheetStack: -> + @_sheetStack + + # Managing Sheets + + pushSheet: (type) -> + @_sheetStack.push(type) + @trigger() + + pushThreadSheet: (threadId) -> + if @selectedLayoutMode() is 'list' and threadId and @sheet() isnt "Thread" + @pushSheet("Thread") + + popSheet: -> + if @_sheetStack.length > 1 + @_sheetStack.pop() + @trigger() + + popToRootSheet: -> + if @_sheetStack.length > 1 + @_sheetStack = ["Root"] + @trigger() + + module.exports = WorkspaceStore diff --git a/src/sheet-container.cjsx b/src/sheet-container.cjsx index e759769fb..0da610b76 100644 --- a/src/sheet-container.cjsx +++ b/src/sheet-container.cjsx @@ -1,10 +1,11 @@ React = require 'react' -SheetStore = require './sheet-store' Sheet = require './sheet' -{Actions,ComponentRegistry} = require "inbox-exports" Flexbox = require './components/flexbox.cjsx' ReactCSSTransitionGroup = React.addons.CSSTransitionGroup +{Actions, + ComponentRegistry, + WorkspaceStore} = require "inbox-exports" ToolbarSpacer = React.createClass className: 'ToolbarSpacer' @@ -21,15 +22,23 @@ Toolbar = React.createClass type: React.PropTypes.string getInitialState: -> - @_getComponentRegistryState() + @_getStateFromStores() componentDidMount: -> - @unlistener = ComponentRegistry.listen (event) => - @setState(@_getComponentRegistryState()) + @unlisteners = [] + @unlisteners.push WorkspaceStore.listen (event) => + @setState(@_getStateFromStores()) + @unlisteners.push ComponentRegistry.listen (event) => + @setState(@_getStateFromStores()) + window.addEventListener "resize", (event) => + @recomputeLayout() componentWillUnmount: -> @unlistener() if @unlistener + componentWillReceiveProps: (props) -> + @setState(@_getStateFromStores(props)) + componentDidUpdate: -> # Wait for other components that are dirty (the actual columns in the sheet) # to update as well. @@ -43,34 +52,34 @@ Toolbar = React.createClass # Column toolbars contain items with roles attaching them to items # in the sheet. Ex: MessageList:Toolbar items appear in the column # toolbar for the column containing . - columnToolbars = @state.itemsForViews.map ({column, name, items}) => -
+
{@_flexboxForItems(items)}
-
+ {mainToolbar} {columnToolbars} -
+ _flexboxForItems: (items) -> components = items.map ({view, name}) => - + {components} - + recomputeLayout: -> return unless @isMounted() # Find our item containers that are tied to specific columns - columnToolbarEls = this.getDOMNode().querySelectorAll('[data-column]') + columnToolbarEls = @getDOMNode().querySelectorAll('[data-column]') # Find the top sheet in the stack sheet = document.querySelector("[name='Sheet']:last-child") @@ -81,22 +90,33 @@ Toolbar = React.createClass column = columnToolbarEl.dataset.column columnEl = sheet.querySelector("[data-column='#{column}']") continue unless columnEl + + columnToolbarEl.style.display = 'inherit' columnToolbarEl.style.left = "#{columnEl.offsetLeft}px" columnToolbarEl.style.width = "#{columnEl.offsetWidth}px" - _getComponentRegistryState: -> - items = [] - items.push(ComponentRegistry.findAllByRole("Global:Toolbar")...) - items.push(ComponentRegistry.findAllByRole("#{@props.type}:Toolbar")...) + _getStateFromStores: (props) -> + props ?= @props + state = + mode: WorkspaceStore.selectedLayoutMode() + items: [] + itemsForColumns: [] - itemsForViews = [] - for column in ['Left', 'Right', 'Center'] - for {view, name} in ComponentRegistry.findAllByRole("#{@props.type}:#{column}") - itemsForView = ComponentRegistry.findAllByRole("#{name}:Toolbar") - if itemsForView.length > 0 - itemsForViews.push({column, name, items: itemsForView}) + for role in ["Global:Toolbar", "#{props.type}:Toolbar"] + for entry in ComponentRegistry.findAllByRole(role) + continue if entry.mode? and entry.mode != state.mode + state.items.push(entry) + + for column in ["Left", "Center", "Right"] + role = "#{props.type}:#{column}:Toolbar" + items = [] + for entry in ComponentRegistry.findAllByRole(role) + continue if entry.mode? and entry.mode != state.mode + items.push(entry) + if items.length > 0 + state.itemsForColumns.push({column, name, items}) - {items, itemsForViews} + state FlexboxForRoles = React.createClass @@ -128,6 +148,7 @@ FlexboxForRoles = React.createClass items = items.concat(ComponentRegistry.findAllByRole(role)) {items} + module.exports = SheetContainer = React.createClass className: 'SheetContainer' @@ -136,7 +157,7 @@ SheetContainer = React.createClass @_getStateFromStores() componentDidMount: -> - @unsubscribe = SheetStore.listen @_onStoreChange + @unsubscribe = WorkspaceStore.listen @_onStoreChange # It's important that every React class explicitly stops listening to # atom events before it unmounts. Thank you event-kit @@ -146,7 +167,6 @@ SheetContainer = React.createClass render: -> topSheetType = @state.stack[@state.stack.length - 1] -
@@ -180,5 +200,5 @@ SheetContainer = React.createClass @setState @_getStateFromStores() _getStateFromStores: -> - stack: SheetStore.stack() + stack: WorkspaceStore.sheetStack() diff --git a/src/sheet-store.cjsx b/src/sheet-store.cjsx deleted file mode 100644 index f5b01198c..000000000 --- a/src/sheet-store.cjsx +++ /dev/null @@ -1,26 +0,0 @@ -React = require "react" -Reflux = require 'reflux' -Actions = require './flux/actions' - -SheetStore = Reflux.createStore - init: -> - @_stack = ["Root"] - @listenTo Actions.popSheet, @popSheet - - # Exposed Data - - pushSheet: (type) -> - @_stack.push(type) - @trigger() - - popSheet: -> - @_stack.pop() - @trigger() - - topSheetType: -> - @_stack[@_stack.length - 1] - - stack: -> - @_stack - -module.exports = SheetStore diff --git a/src/sheet.cjsx b/src/sheet.cjsx index ed6cff6c3..ab4f84f8a 100644 --- a/src/sheet.cjsx +++ b/src/sheet.cjsx @@ -1,6 +1,7 @@ React = require 'react' _ = require 'underscore-plus' -{Actions,ComponentRegistry} = require "inbox-exports" +{Actions,ComponentRegistry, WorkspaceStore} = require "inbox-exports" +RetinaImg = require './components/retina-img.cjsx' Flexbox = require './components/flexbox.cjsx' ResizableRegion = require './components/resizable-region.cjsx' @@ -18,14 +19,17 @@ Sheet = React.createClass columns: ['Left', 'Center', 'Right'] getInitialState: -> - @_getComponentRegistryState() + @_getStateFromStores() componentDidMount: -> - @unlistener = ComponentRegistry.listen (event) => - @setState(@_getComponentRegistryState()) + @unlisteners ?= [] + @unlisteners.push ComponentRegistry.listen (event) => + @setState(@_getStateFromStores()) + @unlisteners.push WorkspaceStore.listen (event) => + @setState(@_getStateFromStores()) componentWillUnmount: -> - @unlistener() if @unlistener + unlisten() for unlisten in @unlisteners render: -> style = @@ -33,6 +37,13 @@ Sheet = React.createClass backgroundColor:'white' width:'100%' height:'100%' + zIndex: 1 + + # Note - setting the z-index of the sheet is important, even though it's + # always 1. Assigning a z-index creates a "stacking context" in the browser, + # so z-indexes inside the sheet are relative to each other, but something in + # one sheet cannot be on top of something in another sheet. + # http://philipwalton.com/articles/what-no-one-told-you-about-z-index/
return [] if @props.depth is 0 -
- Back +
+
+
_columnFlexboxComponents: -> @@ -83,10 +95,17 @@ Sheet = React.createClass {components} - _getComponentRegistryState: -> + _getStateFromStores: -> state = {} + state.mode = WorkspaceStore.selectedLayoutMode() + for column in @props.columns - state["#{column}"] = ComponentRegistry.findAllByRole("#{@props.type}:#{column}") + views = [] + for entry in ComponentRegistry.findAllByRole("#{@props.type}:#{column}") + continue if entry.mode? and entry.mode != state.mode + views.push(entry) + state["#{column}"] = views + state _pop: -> diff --git a/static/images/sheets/sheet-back@2x.png b/static/images/sheets/sheet-back@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5882180b7a0f75a11a212bd9d3f5ef5362986d2d GIT binary patch literal 235356 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%0A%nZeJr5N7}CK$Xr)i!p+s-1 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 KMNUMnLSTY{bc2=v literal 0 HcmV?d00001 diff --git a/static/images/splitpane/modeslider-bg@1x.png b/static/images/splitpane/modeslider-bg@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..a653608aed95a34bad85a236d7856eb98a2ebe28 GIT binary patch literal 377 zcmV-<0fzpGP)Px$Gf6~2R45gllEF%ZP!xu}iVCB|U^6i8lUlfN(I$dgv#C~G+P2-H z{h=jE(n{C$d)u}z!!UefjI9}DERN&-G)*6|F_&doz<0>ipCcTAQ!!|j^d~+%ZnsQ&htEPx%Z%IT!R7efQmOpF~VHn20!#g;*0~1n+(Z$7>h7h962BIVoT!cw5Y;KOO-He+Z z9N3&-H*qk8p$TQ{KA@lA^IUpFuw5+l-sIu?fA8;mzvKN*5+_(T zo86FQ`H>_^cQL#P=_gD(OV>{jL|cRHPK%MX*5JM#Jb!`W=MjsD2;*qYjg z&*yvGZnt0j{rm;6VzKzdvaBscO8EVLp(u*LBEj}54UrPqynrt;nM?%RIH9MlR%^@k zbHS~YN~QazX+8&#q-omPpy-bq<%R*{1b|?Gyp>9&-VFwWH=N_+PrY8(0ks_n1f*av zxbg_m$7x1L`lRpic>JuYwthyeWly&K5)PgMnC=;MK7V; zU6X+NdelWc&SSH2T{e^r|F7p-|W-6TyBUkG!u|s~^1ra{ZD4EFZ|^fT41b z$z=A*lYuOdAtSL)kT(v|*sWA5SMl=QY&M(9Xf!$(He>`*tJSPrF2^I> zg$~K&+|B?~(82ssg6-BnKI2;OG73f}_g~MTiOd!(fw7~oQD-ww?O0S@o z5W%eZX9M7P9}(^jbQ|J#SPTk5GBlry`dQ4zVhiGt@H=b(?Hr3xPU>24#;X7mEl_K!2bv5z;w1{8&O+pjBP-|=il?Fdke bPx$i%CR5R45gFlg~;5Q542U$H{2^6%!=rqLr(NHeu8&xOP!b6ohXe_yW>mTto

HcI4QOG$5;AA?M}T;64^ z*=&Yz-{1+%!5_AUiMRYU#D2fuuUeK>f+8=gQV^8}gTcKJ$lmw;HpFKT zrdP#Btyb$=ZkF?Iw_AniL>vwrw9G-e`tlTEXCF#1N3D8_M|L7dE}L{X#!LGUVy>-=am^00wCnuXY*&qkwhw@x75yROTg zSmap*2jH^P>9pky5joEHK~>c&^yNTS#e=tneqOKF16|j{LZPr{nx;XK=Xt|gt>#uL zm0P6G=z9ZGin!b@U;_v6%IyPg0*&7^0*~MwL?98uCo^)%Cg67KfI008d;kjQ`HgeV zNE0(_i1|lQv^wJyIpH7+uoObXiE-J<*}{t&514-i1thT_QaSdw`itWm00000NkvXX Hu0mjfR`Aq& literal 0 HcmV?d00001 diff --git a/static/images/splitpane/modeslider-knob@2x.png b/static/images/splitpane/modeslider-knob@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a327b2a9d78a9b96e27ef38ef3a0ddec89a8b5 GIT binary patch literal 1028 zcmV+f1pE7mP)Px&zDYzuR7ef2mP=1lQ51z+XnCpy95lojW1Jw7kq;yx=m7i=GGxMx$ZyaeK%x`E z1VbVu#)%A=KpZ%M07|TpiRFz%Vx*Q9sFl|B-E`kv3$@y^lht$fIeV{l_j%k~zwh6y zLSdJLu;9;2$;#gqwuDUH+zB^7*&ASUH)?BZ>xYJh?zFeJcQrOPUazUCX(aII=x9&2 zJUcu4c5rZT?(pz1so{?~5+3BA4Y3B{&hYT?qwVeO)mSW+jmP6ziDc91v;+E#F-Hus zTtP$}G9TwHv`lV>uSVp{Gz zvE+~oM~hlu~Z{>Vq)Tn1Um|enpk~HOUr}Z-Q5`bQ>u{*2V4@YKTVWl z9~5p)PEI~8r#gE`IK=f#oVRn_X!!V{IzYd^wYBxWj=j3&864ueCzd+F)p1lcfM75b z3RQE@s;a8wmS=Fl1*e!;Jv3ZpgwJ<%b%iS`Dk}YcXO8)j4Gy^A6v=tPsnRN>4JaT` zvOzCSr1FpP$r$T$H(|#En8+&tB6~YCl;MH*6owXWl60Qgj z=jZ3&mvi~ag#)e}C){XMvZSc<;RI~n*Z%(g=UV^x{{Ft)|Fc9Q!QRE;Q07+wPUFw= zWx&`_#PL%*J3CFQtE-=TdU|f^3s6;E&D||-`ZoHK$z)<+U|?uwW@b|vp9BsBr=OFW zK>#s>iS8{gFV`(BEJQjxJFiNxfr}gnoPJGHsT4xKt*x!KzP`R^Q&UqL;(R9@2uH$C zflA#9)ptcr{JZX@e`I82N$&FY1&&s)6drfVqt*x!0ySw{xb93_r`93Xue0q9%GZKl!Nag{ehydF&XBp)a z=a?m$PsPx#(Md!>R5%f1WN7&x%)r1f3y6h)m|XCI;U7af1JJM+K-@~MDPVoA|LcKfyaXBc zpCW@`nt|r9z}O6{{xdV&VgQ=XAPg5HhVh@lnW2_(A4n;}urS8I3=RL~fMRUKm;qM9 z!SJ7{mebDFD#pPPZxrePx$tw}^dR9Fe^mpx0wKoExCjZryKZ2ZDPQMAw>pdbh$$o(H1@q;sRifG~guodh? zY(>z<;tGpHP*5zC6ZO11$9Ixkm$iuJMI{5--OPT>!|qHnYoL;saX8q8Aj`LmuWNo$ zp~+)>U>P}cq2>*?WfV1>vfZPKUm!1}n#HO)cS*WVpa9Il1XfHT5kOD+;Np(9J9vWI ztg{Y_c^^iwkQkT(c;+5e^!hBo97K#m%1&S5;wtP&uJX)7XuJ&@=yt6no@ieHZXNW^ zjtsqh$&_rXM8oY!7q_^;T^+PdY=~atb4&7c{#?|0>T}T|{J1nntahSzPPf{V5wv6A zNBPQlXCU0#Y(&H9XwST{ENU|;`2sEth}Z$q+LYrIdbUNPk5vO=Pli!Ozhz!y)HPJF zW^QbYMZ@XnMf1wCsLiCr4wwERcqTFb5NSZ90TC;r|7*&W2E?BY2+cx+9KMRlSWex@ zNqRjDq|AKsQQ?mKcY{N0%2e3d{K}KD@ZPGnPqZ*h$A_pqW4lhR`Xr@9su^B-E*);) pHCixDnteV`2~s^1>Yxs$9H0A$n3tn?wATOt002ovPDHLkV1lPr=J@~s literal 0 HcmV?d00001 diff --git a/static/images/splitpane/toolbar-icon-listmode@1x.png b/static/images/splitpane/toolbar-icon-listmode@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..0e60f1a7985b4b4c8f0d35972c9a4a028cc93523 GIT binary patch literal 356 zcmV-q0h|7bP)Px$9!W$&R5%f1Z0+dw{{Nq80Rsbr2oRG87#TkN`};4Q1!&L|28REuYAQ>z$uo(8 zp|!oYo{5QRG7|$Mg8(xFb2qsLf%H{Z7B>PZF&3C1GiT0Zef{psTOgkoCPoDP|L;Er z=lbg6{UEh)!_w2!e|L9xOMd;z!b*f8P$kU&8XEFG!PLVIYiMX-`tgS;kD2u!J4})w z&GheoLwo10&%7u78XSH(T0!;Zcm!DL5s* zFap6k7EvLd_*ZYg><8viX`E^aNH8+|fA#yv=Xn5)T!lS%ukB9&0000Px$?@2^KR9Fe^SIR#Y5Yawn;Yg`kutwj_4Y@SoVWu-n^OjzK@xGyE6g^)kfo; zG>HZxWT~5CUj*oZfCGb2s1(+ZnP0f>&f7kiCfVZ=2nwS7C5&7smDY}w0rTlrm_(c@ z7W1v3h^O{xy_Hc(c}YAkQ5u)ptfa+TVqyfd9F;KU*Lvg1@8AU6ghfOY5(SQOPk}n+ zHcDunzaH?9Y;NwRl}(J+n#R&M!fkUN>rbV+eaCUywmgC2>h=0q*Qk~NGi3`LhQDVN zRNd|B$HICgC?CCZR@^ma4GJ+}G2 zXKY7>yTs90To4a02m$coUu>rkkhJjxZYvjr=XtMxbi|}Ba2S5o$6mRdJGbQu6vvZu zx!iAR&e)C$R&ntkBJ3X`E{M1wLYDLYd1Q(U;yD+Dq-)pB8Qw=T8}hv#S{Pps2gy2G zuYHps#6COdbnvBC^WG1Q>4Ax~>rD^ttt18xIb8XWplg=DLUslc*sQtR?2iC=%h?uv zljn}qA6CEmAm_;5qvtz2Bf?MmLVOm+%$G_VC#>NwlRVnihS|W#00000NkvXXu0mjf D= literal 0 HcmV?d00001 diff --git a/static/images/splitpane/toolbar-icon-splitpanes-active@1x.png b/static/images/splitpane/toolbar-icon-splitpanes-active@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..1d9869d76acb5399bbaee8a0c63643c06477deb5 GIT binary patch literal 353 zcmV-n0iOPeP)Px$8%ab#R5%gElCeqyK@>&rOE!^!5=do!#nw+qN`Js6*h$c0iVZ0QKfq3~%P$1d z<}(5oN<_qnAPc+CI|*zivpcYClYs|&FZZ3DnKy!12LPT}JyzZI!NzM4_RgAAqQv@D znzQ|}zFC--2FlD3%x1}n@*bmYL|9XIb8q)ye|CX;S$cj!IxtD_sC{g3a**mE#jX4t zcmd(SxXWMMpy|O9D5m<1v8)1&+}^{03=M+RJEm}FDcuTd4>OW6Zz}WzBMxjkfKMh* zy|hAbi91<%enC1g4&Xu0d2cN*mBGly^Gc-y;{g6JDhvQe96$>DU=5F1cK}B1Jtu;R z&Ula^MV0YOAZPtqgfm>>8*_?2tL}Q`>wNhKVb)sJPx$sYygZR9Fe^m%mQKFc8K+S49Y^{F^{9AO-|N>5!A+IA{Cr7vI^59VlhlfZ$AP+j@;tm4UR>=M@}w zvF~nO59(T#QyIWmE*lEBRn(U94^#(>@Z7W2JF)IW>N;iy9n7lDmtV(wvVbCzv^ zT+k3Qd{6@`sX_S$6Be8hGEkJMptq9$;JF9?o@Eg-lo(1|JYib^ZTASZ6X;^kHABV! zYn-uuIh9F_;Zb8=k9D=t&_#6AZ|LtD8;te@(QUTBr2TCxJ*^!|hQ*U*-O=U;j{a_J z;Un#ZV}sG5=iarfv6_Vp0Lzo#3`lgsimuBfBI$l(?NBoL&t(ZM%*A5sqKyN`&q-=x zgVFqsd(*PUY8Da=mhb#_Jo4nX=OtPjonv|O+p}ip*ogo3Px#(Md!>R5%f1Y-#TeW?*EP#qgg&h=E+d$nXKEKZAvZnPu*uKfkBeRFzZ{GOMMd z_kB%8u^_s-*7n|7CT8ZjOn?6V;U~r*bOVt2)s@A~fB*jFW`PMdG&HcWu=73y@+Dwm zQ2OsbhX3Yul_h7<#4)(YhW!G{N@A!WL4b(_wFH$SyKK~(qp^vUV33mr<%yPuhnu0L zy=Nwp1tc?D+Il;=xHuUYZ{E85cKgoVLSMdoCD{;|25v4c26s27PYnP6|MvvqXFyB| dcnQ=T2mq{xpgGWN`mX>0002ovPDHLkV1l33diMYT literal 0 HcmV?d00001 diff --git a/static/images/splitpane/toolbar-icon-splitpanes@2x.png b/static/images/splitpane/toolbar-icon-splitpanes@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..02f4b2633de75c2631bcc76d75a94286faaf974a GIT binary patch literal 610 zcmV-o0-gPdP)Px%97#k$R9Fe^m(NSwKorMk#_R@vY}X%$76t7dN{e{+Pzr7FAMn^q>Azq=gSdyG zG`4AV{|52mt@baFLg}G*dk{RVg?h2Nx+;Jm#DJ7Dhu8T_*Bv$@<9EygOahK?3Y`MRAEgC#9Ry{^+{h5y zfJrE&dhkZhTicYwZE6VvG8wwWQcAFu`*ikJy}R2FZQDL>)&6%ar~t0(mI`KR$1tNt zJM$tkn$G*>w^Xcu)krW5rWn)OG|4*MuL<*4CQFHBfl^kOS$=S(cVZO2pY{)j1jBp) zb`F<1uCo|df#uClRYcpc(EJ6;L8mF6?mLz&B{qMpRvT-2{JsvPRX0L)QLS3|I!SGi zU>M!9tTVXOah=7`g5^(sO*!)B*Bp#i*7jK5{F*Z(d+e_N?a80~R5kBx^NV7!7y~aZ zE{#*KRWA*wk=KKDQC#Mo%`S7G(Jb%W91_#y=>@jTo0kcdwWS|{E w&Pl;J-@*mVFECU6XoYy449vX_a}t>@0ika$A>LusRsaA107*qoM6N<$f?S3i0{{R3 literal 0 HcmV?d00001 diff --git a/static/workspace.less b/static/workspace.less index 9b3bd227e..db16a6a53 100644 --- a/static/workspace.less +++ b/static/workspace.less @@ -75,6 +75,48 @@ atom-workspace { } } +.sheet-toolbar-enter { + opacity:0; + transition: opacity .20s ease-out; +} + +.sheet-toolbar-enter.sheet-toolbar-enter-active { + opacity:1; +} + +.sheet-toolbar-leave { + opacity:1; + transition: opacity .20s ease-in; +} + +.sheet-toolbar-leave.sheet-toolbar-leave-active { + opacity:0; +} + +.sheet-edge { + height:100%; + z-index: @zindex-popover; + position: absolute; + + .x { + position: absolute; + top: @spacing-standard * 1.5; + left: @spacing-standard * 1.5; + } + .gradient { + width:9px; + height:100%; + background-color: #f4f4f4; + background-image: -webkit-gradient(linear, left center, right center, from(rgb(244, 244, 244)), to(rgb(209, 209, 209))); + background-image: -webkit-linear-gradient(left, rgb(244, 244, 244), rgb(209, 209, 209)); + background-image: -moz-linear-gradient(left, rgb(244, 244, 244), rgb(209, 209, 209)); + background-image: -o-linear-gradient(left, rgb(244, 244, 244), rgb(209, 209, 209)); + background-image: -ms-linear-gradient(left, rgb(244, 244, 244), rgb(209, 209, 209)); + background-image: linear-gradient(left, rgb(244, 244, 244), rgb(209, 209, 209)); + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,StartColorStr='#f4f4f4', EndColorStr='#d1d1d1'); + } +} + .flexbox-handle-horizontal { width: 6px; top: 0;