Rift.IO OSM R1 Initial Submission
[osm/UI.git] / skyquake / plugins / composer / src / src / actions / PanelResizeAction.js
diff --git a/skyquake/plugins/composer/src/src/actions/PanelResizeAction.js b/skyquake/plugins/composer/src/src/actions/PanelResizeAction.js
new file mode 100644 (file)
index 0000000..d721391
--- /dev/null
@@ -0,0 +1,70 @@
+
+/*
+ * 
+ *   Copyright 2016 RIFT.IO Inc
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+/**
+ * Created by onvelocity on 8/11/15.
+ */
+import alt from '../alt';
+import changeCase from 'change-case'
+
+/*
+ This class manages Composer Layout State
+ */
+
+const cleanNameRegExp = /(-is-tray-open|panel-)/i;
+
+class PanelResizeAction {
+
+       resize(e) {
+
+               /* we expect two types of resize events:
+                * window resize - invoked by window
+                * resize-manager resize - invoked by ResizeManager
+                *
+                * normalize the data needed by the Composer Layout or ignore invalid ones
+                *
+                * */
+
+               if (!e) {
+                       return false;
+               }
+
+               if (e.detail && e.detail.side) {
+                       // a ResizeManager event
+                       this.dispatch(PanelResizeAction.buildResizeManagerInfo(e))
+               } else {
+                       // a window event
+                       this.dispatch(PanelResizeAction.buildWindowResizeInfo(e));
+               }
+
+       }
+
+       static buildWindowResizeInfo(e) {
+               return e;
+       }
+
+       static buildResizeManagerInfo(e) {
+               const info = Object.assign({originalEvent: e}, e.detail);
+               const name = changeCase.paramCase(info.target.className.replace(cleanNameRegExp, ''));
+               info.type = 'resize-manager.resize.' + name;
+               return info;
+       }
+
+}
+
+export default alt.createActions(PanelResizeAction);