From fdff2e53aff288feea4092f1afba568ad3008739 Mon Sep 17 00:00:00 2001 From: Peter Date: Sun, 21 Dec 2014 02:36:50 -0800 Subject: [PATCH 1/7] Added support for hotkey feature. --- css/style.less | 4 +- index.html | 2 +- js/background.js | 126 ++++++++++++++++++++++++++++- js/display.js | 29 +------ js/main.js | 2 + manifest.json | 37 ++++++++- public/style.css | 2 +- public/tabResize.js | 31 +------ public/tabResize.min.js | 2 +- public/tabResize_background.js | 126 ++++++++++++++++++++++++++++- public/tabResize_background.min.js | 2 +- 11 files changed, 298 insertions(+), 65 deletions(-) diff --git a/css/style.less b/css/style.less index e673269..1c8d14d 100644 --- a/css/style.less +++ b/css/style.less @@ -461,10 +461,10 @@ button.disabled { padding-right: 5px; } - .rate-it { + .rate-it, .keyboard-shortcuts { border-left: 1px solid silver; padding-left: 5px; - padding-right: 0px; + padding-right: 5px; } } diff --git a/index.html b/index.html index 912a2c0..8e03677 100644 --- a/index.html +++ b/index.html @@ -42,7 +42,7 @@
- +
diff --git a/js/background.js b/js/background.js index 8c7a480..1601015 100644 --- a/js/background.js +++ b/js/background.js @@ -177,5 +177,129 @@ var util = { localStorage.setItem('lastTab',JSON.stringify(currentLastTab)); chrome.runtime.sendMessage('enable-undo'); } + }, + + //format the displayInfo + displayInfoFormatter: function(displayInfo,currentWindowInfo){ + var index = 0, + length = displayInfo.length, + info, + displayJSON = { //may need to check for some mirroring property, currently only one monitor is display when mirroring + displays: [], + primaryIndex: 0 + }; + + for(;index info.workArea.left && currentWindowInfo.left < info.workArea.left + info.workArea.width && currentWindowInfo.top > info.workArea.top && currentWindowInfo.top < info.workArea.top + info.workArea.height){ + displayJSON.primaryIndex = index; + } + + } + return displayJSON; + } + +}; + +function getResizeParams(command){ + var _command = command.split('-'); + return { + rows: Number(_command[2]), + cols: Number(_command[3]) + }; +} + +/** +* resizes tabs to the right of selected tab +* @param {number} rows number of rows in resize layout +* @param {number} cols number of columns in resize layout +*/ +function resizeTabs(displayInfo,rows,cols) { + + var resize = {}; + + resize.numRows = rows; + resize.numCols = cols; + + /* + * split width of screen equally depending on number of cells + * create new window unable to take non integers for width and height + */ + + var data = displayInfo; + + if(!$.isEmptyObject(data)){ + resize.width = Math.round(data.width/resize.numCols); + resize.height = Math.round(data.height/resize.numRows); + resize.offsetX = data.left; + resize.offsetY = data.top; + resize.fullWidth = data.width; + resize.fullHeight = data.height; + } else { + resize.width = Math.round(window.screen.availWidth/resize.numCols); + resize.height = Math.round(window.screen.availHeight/resize.numRows); + resize.offsetX = 0; + resize.offsetY = 0; + resize.fullWidth = window.screen.availWidth; + resize.fullHeight = window.screen.availHeight; } -}; \ No newline at end of file + + var that = this; + window.chrome.tabs.query({currentWindow: true}, + function (tabs) { + resize.tabsArray = tabs; + window.chrome.tabs.query({currentWindow: true, highlighted: true}, + function (tab) { + resize.currentTab = tab[0]; + var index = resize.currentTab.index; + if(tab.length > 1){ + resize.tabsArray = tab; + index = 0; + } + + var cb = function(){ + return util.processTabs(resize, resize.tabsArray, index, resize.currentTab.windowId, resize.singleTab, resize.currentTab.incognito); + }; + if(resize.singleTab){ + util.setUndoStorage(resize,resize.currentTab.index,resize.currentTab.windowId, resize.tabsArray.slice(index,index + 1), cb); + } else { + util.setUndoStorage(resize,resize.currentTab.index,resize.currentTab.windowId, resize.tabsArray.slice(index), cb); + } + + } + ); + } + ); +} + +chrome.commands.onCommand.addListener(function callback(command) { + + if(command.indexOf('tab-resize') === -1){ + return; + } + + if(chrome.system && chrome.system.display){ + chrome.system.display.getInfo(function(displayInfo){ + chrome.windows.getCurrent(function(windowInfo){ + + var currentWindowInfo = { + left: windowInfo.left + windowInfo.width - 100, + top: windowInfo.top + 100 + }; + + var displayJSON = util.displayInfoFormatter(displayInfo,currentWindowInfo), + resizeParams = getResizeParams(command); + + resizeTabs(displayJSON.displays[displayJSON.primaryIndex].workArea,resizeParams.rows,resizeParams.cols); + }); + }); + } +}); + diff --git a/js/display.js b/js/display.js index 3880c97..c7cd63f 100644 --- a/js/display.js +++ b/js/display.js @@ -43,7 +43,7 @@ top: windowInfo.top + 100 }; - var displayJSON = processInfo(displayInfo,currentWindowInfo), + var displayJSON = backJs.util.displayInfoFormatter(displayInfo,currentWindowInfo), template, currentDisplay; @@ -134,33 +134,6 @@ $displayLayer.height(scale*height); } - //format the displayInfo - function processInfo(displayInfo,currentWindowInfo){ - var index = 0, - length = displayInfo.length, - info, - displayJSON = { //may need to check for some mirroring property, currently only one monitor is display when mirroring - displays: [], - primaryIndex: 0 - }; - - for(;index info.workArea.left && currentWindowInfo.left < info.workArea.left + info.workArea.width && currentWindowInfo.top > info.workArea.top && currentWindowInfo.top < info.workArea.top + info.workArea.height){ - displayJSON.primaryIndex = index; - } - - } - return displayJSON; - } - function renderDisplayTemplate(info, id, isPrimary){ var $template = $('
'); $template.css({ diff --git a/js/main.js b/js/main.js index 1e7bd54..31001eb 100644 --- a/js/main.js +++ b/js/main.js @@ -140,6 +140,8 @@ } else { sendTracking('info-links','author'); } + }).on('click','a.keyboard-shortcuts', function(){ + chrome.tabs.create({url:'chrome://extensions/configureCommands'}); }); })(); \ No newline at end of file diff --git a/manifest.json b/manifest.json index 8c5ac00..2082c90 100644 --- a/manifest.json +++ b/manifest.json @@ -18,5 +18,40 @@ }, "offline_enabled": true, "content_security_policy": "script-src 'self' https://www.google-analytics.com; object-src 'self'", - "options_page": "options.html" + "options_page": "options.html", + "commands": { + "tab-resize-1-1": { + "suggested_key": { + "default": "Ctrl+Shift+1" + }, + "description": "Resize 1x1 layout" + }, + "tab-resize-1-2": { + "suggested_key": { + "default": "Ctrl+Shift+2" + }, + "description": "Resize 1x2 layout" + }, + "tab-resize-2-1": { + "suggested_key": { + "default": "Ctrl+Shift+3" + }, + "description": "Resize 2x1 layout" + }, + "tab-resize-2-2": { + "suggested_key": { + "default": "Ctrl+Shift+4" + }, + "description": "Resize 2x2 layout" + }, + "tab-resize-1-3": { + "description": "Resize 1x3 layout" + }, + "tab-resize-3-1": { + "description": "Resize 3x1 layout" + }, + "tab-resize-1-3": { + "description": "Resize 1x3 layout" + } + } } \ No newline at end of file diff --git a/public/style.css b/public/style.css index 3a22cd3..7c6dced 100644 --- a/public/style.css +++ b/public/style.css @@ -1 +1 @@ -html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}[type=checkbox]:not(:checked),[type=checkbox]:checked{position:absolute;left:-9999px}[type=checkbox]:not(:checked)+span,[type=checkbox]:checked+span{position:relative;padding-left:25px;cursor:pointer}[type=checkbox]:not(:checked)+span:before,[type=checkbox]:checked+span:before{content:'';position:absolute;left:0;top:0;width:17px;height:17px;border:1px solid #aaa;background:#f8f8f8;border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,.3)}[type=checkbox]:not(:checked)+span:after,[type=checkbox]:checked+span:after{content:'\2713';position:absolute;top:-8px;left:1px;font-size:25px;color:#000}[type=checkbox]:not(:checked)+span:after{opacity:0;transform:scale(0)}[type=checkbox]:checked+span:after{opacity:1;transform:scale(1)}[type=checkbox]:disabled:not(:checked)+span:before,[type=checkbox]:disabled:checked+span:before{box-shadow:none;border-color:#bbb;background-color:#ddd}[type=checkbox]:disabled:checked+span:after{color:#999}[type=checkbox]:disabled+span{color:#aaa}.switch-toggle a,.switch-light span span{display:none}.switch-toggle{display:block;height:30px;position:relative;padding:0!important}.switch-toggle *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.switch-toggle a{display:block;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;transition:all .3s ease-out}.switch-toggle label,.switch-toggle>span{line-height:30px;vertical-align:middle}.switch-toggle input{position:absolute;opacity:0}.switch-toggle input+label{position:relative;top:static;right:static;left:static;display:inherit;width:50%;z-index:2;float:left;height:100%;margin:0;text-align:center;cursor:pointer}.switch-toggle input+label:hover{background:#b4e2f6;box-shadow:inset 0 0 0 3px #28a2d5;-webkit-box-shadow:inset 0 0 0 3px #28a2d5}.switch-toggle a{position:absolute;top:0;right:static;left:0;display:inherit;width:50%;z-index:1;padding:0;height:100%}.switch-toggle input:last-of-type:checked~a{left:50%}.switch-candy{background-color:#fff;border:none;border-radius:6px;color:#fff;text-align:center;border:2px solid gray}.switch-candy label{color:#000}.switch-candy input:checked+label{color:#000;cursor:default}.switch-candy input:checked+label:hover{background:0 0;box-shadow:inset 0 0 0 3px transparent;-webkit-box-shadow:inset 0 0 0 3px transparent}.switch-candy a{background-color:#eee;border:1px solid gray;border-radius:3px;background-image:-webkit-linear-gradient(top,rgba(255,255,255,.2),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(255,255,255,.2),rgba(0,0,0,0))}.switch-candy>span{color:gray;text-shadow:none}.switch-candy span{color:#fff}html,body{background:#fff;min-width:630px}.hidden{display:none}.inactive{opacity:.2;pointer-events:none}.active{display:block}strong,.bold{font-weight:700}a{text-decoration:none}a:hover{text-decoration:underline}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;font-size:18px;box-sizing:border-box}.glyphicon.glyphicon-refresh:before{content:"\e031";box-sizing:border-box}.glyphicon.glyphicon-plus{top:-1px}.glyphicon.glyphicon-plus:before{content:"\2b";box-sizing:border-box}.glyphicon.glyphicon-chevron-down:before{content:"\e114"}.icon{height:18px;width:18px;position:relative;overflow:hidden;display:inline-block}.icon.icon-screen{width:32px;height:25px}.icon .screen{width:28px;height:16px;border:2px solid #333;background:#eee}.icon .screen:before{position:absolute;content:'';width:10px;height:3px;background:#333;bottom:2px;left:11px}.icon .screen:after{position:absolute;content:'';width:22px;height:2px;background:#333;bottom:0;left:5px}input{font-family:Verdana,Geneva,sans-serif;font-size:14px}button{outline:0;color:#000;padding:5px 10px;font-size:13px;border-radius:3px;font-family:Verdana,Geneva,sans-serif;background:-webkit-linear-gradient(top,#fff 0,#f1f1f1 50%,#f6f6f6 100%);border:1px solid #707070}button:hover{background:-webkit-linear-gradient(top,#eee 0,#ccc 100%);cursor:pointer;box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070}button.primary{border:1px solid #707070;color:#fff;border:1px solid #333;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%)}button.primary:hover{box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 100%,#1c1c1c 100%,#2b2b2b 100%,#111 100%,#2c2c2c 100%,#000 100%,#131313 100%)}button.disabled{opacity:.5;pointer-events:none}.modal-box{font-family:Verdana,Geneva,sans-serif;background:#fff;border:4px solid #7C7C7C;box-shadow:0 0 4px #7c7c7c inset;-webkit-box-shadow:0 0 4px #7c7c7c inset;border-radius:8px;position:absolute;top:50%;left:50%}.modal-box .modal-body{border-radius:4px 4px 0 0;padding:2px 10px 0 10px;width:400px;height:144px}.modal-box .modal-footer{border-radius:0 0 4px 4px;padding:0 10px;border-top:1px solid silver;overflow:hidden;background:#E7F3FD}.modal-box .modal-footer .button{float:right;margin:6px 10px 6px 0}.display-setting-indicator{display:none;width:0;height:0;position:absolute;z-index:2;bottom:0;left:80px;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid silver}.main-view.display-selected .display-setting-indicator{display:block}.main-view.display-selected .resize-footer{border-bottom-width:7px}.main-view.display-selected #display-setting-layer{display:block}.main-view.display-selected #display-setting{background:#dcf0f6}.main-view.display-selected #display-setting:hover,.main-view.display-selected #display-setting:focus{background:#b4e2f6}.main-view.display-selected .glyphicon-chevron-down:before{content:"\e113"}.main-view{padding-top:4px;overflow:hidden}.main-view .resize-container{padding:0 5px;height:156px;overflow-y:auto}.main-view .resize-container .resize-selector-container{width:127px;height:127px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:1px solid transparent;border-radius:4px;padding:0 0 15px 15px;float:right}.main-view .resize-container .resize-selector-container .close-button{width:18px;height:18px;border-radius:10px;cursor:pointer;background:url(../images/sprites/close.png);position:absolute;top:2px;right:2px;display:none}.main-view .resize-container .resize-selector-container .layout-title{position:absolute;font-weight:700;font-size:16px;font-family:Verdana,Geneva,sans-serif}.main-view .resize-container .resize-selector-container .resize-selector{width:100px;height:100px;position:absolute;top:21px;border-radius:4px;border:5px solid #7C7C7C}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer{position:relative;display:inline-block;float:left;top:0;left:0}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer .fav-icon{position:absolute;background-repeat:no-repeat;background-size:27px 27px;width:27px;height:27px;background-image:url(../images/icons/defaultFavIcon.png)}.main-view .resize-container .resize-selector-container:hover{cursor:pointer;border:1px solid #D3E3F7;background:-webkit-gradient(linear,left top,left bottom,from(#dcf0f6),to(#f4f8fe));-webkit-transition:all 200ms ease-in}.main-view .resize-container .resize-selector-container:hover .layout-1x1{background:url(../images/sprites/layouts.png) 0 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x2{background:url(../images/sprites/layouts.png) -100px 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x3{background:url(../images/sprites/layouts.png) -200px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x1{background:url(../images/sprites/layouts.png) -300px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x2{background:url(../images/sprites/layouts.png) -400px 100px}.main-view .resize-container .resize-selector-container:hover .layout-3x1{background:url(../images/sprites/layouts.png) -500px 100px}.main-view .resize-container .resize-selector-container:hover .layout-default{background:url(../images/sprites/layouts.png) -600px 100px}.main-view .resize-container .resize-selector-container:hover .close-button{display:block}.main-view .resize-container .resize-selector-container:hover .close-button:hover{background:url(../images/sprites/close_hover.png)}.main-view .resize-footer{border:3px solid silver;overflow:hidden;background:#dcf0f6;clear:right;font-family:Verdana,Geneva,sans-serif}.main-view .resize-footer .footer-wrap{display:inline-block;overflow:hidden}.main-view .resize-footer .footer-wrap.button-wrap{padding:3px 0 0 2px}.main-view .resize-footer .footer-wrap.monitor-wrap{float:left;padding:6px 12px 5px 8px;border-right:3px solid silver;cursor:pointer;background:#fff;position:relative}.main-view .resize-footer .footer-wrap.monitor-wrap:hover,.main-view .resize-footer .footer-wrap.monitor-wrap:focus{background:#b4e2f6}.main-view .resize-footer .footer-wrap.monitor-wrap .display-setting-title{vertical-align:top;font-size:15px;position:relative;top:5px;padding:0 13px 0 8px;border-right:1px solid silver}.main-view .resize-footer .footer-wrap.monitor-wrap .glyphicon{top:-3px;left:3px}.main-view .resize-footer .resize-undo{margin-left:12px}.main-view .resize-footer #custom-layout{padding:4px 15px 1px 15px;float:left}.main-view .resize-footer #default-configuration{padding:3px 15px 2px 15px;float:left}.main-view .resize-footer .checkbox-container{font-family:Verdana,Geneva,sans-serif;overflow:hidden;display:inline-block;border-left:3px solid silver;float:right;background:#fff}.main-view .resize-footer .checkbox-container label{font-size:14px;display:block;padding:11px 7px 13px 10px;cursor:pointer}.main-view .resize-footer .checkbox-container label.selected{background:#dcf0f6}.main-view .resize-footer .checkbox-container label:hover{background:#b4e2f6}.main-view .resize-footer .checkbox-container label input{border-radius:3px;-webkit-border-radius:3px;vertical-align:top;width:18px;height:18px}.main-view .resize-footer .checkbox-container label span{position:relative;top:1px;left:-2px}#display-setting-layer{display:none;position:relative;bottom:0;margin:100px 50px 25px 50px;font-family:Verdana,Geneva,sans-serif}#display-setting-layer .signature{position:absolute;bottom:-22px;font-size:13px;right:-45px;font-weight:700}#display-setting-layer .signature a{color:#005579;padding-right:5px}#display-setting-layer .signature .rate-it{border-left:1px solid silver;padding-left:5px;padding-right:0}#display-setting-layer .switch-toggle{top:-80px;left:0;width:100%}#display-setting-layer .switch-toggle.right-align a{border-left-width:2px}#display-setting-layer .switch-toggle.left-align a{border-right-width:2px}#display-setting-layer .display-settings-divider{width:630px;height:1px;position:absolute;top:-22px;left:-50px;background:#000;background:-webkit-gradient(linear,0 0,100% 0,from(#fff),to(#fff),color-stop(50%,#000))}#display-setting-layer .display-entry{position:absolute;border:1px solid grey;border-radius:3px;-webkit-border-radius:3px;box-shadow:inset 0 0 0 2px gray;-webkit-box-shadow:inset 0 0 0 2px gray;background:#fff;cursor:pointer;z-index:1}#display-setting-layer .display-entry.selected{z-index:2;background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray;cursor:default}#display-setting-layer .display-entry.selected:hover{background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray}#display-setting-layer .display-entry:hover{z-index:3;background:#b4e2f6;border-color:#28a2d5;box-shadow:inset 0 0 0 4px #28a2d5;-webkit-box-shadow:inset 0 0 0 4px #28a2d5}#display-setting-layer .display-entry .display-meta{position:relative;top:10px;left:10px}.custom-view .table-container{display:inline-block;position:relative;width:145px;height:145px;left:15px}.custom-view .table-container .table-label-top{position:absolute;left:48px;top:3px}.custom-view .table-container .table-label-left{position:absolute;top:69px;left:-7px;-webkit-transform:rotate(-90deg) translate3d(0,0,0)}.custom-view .table-container .table-cell-container{border:7px solid #7C7C7C;border-radius:4px;width:100px;height:100px;position:absolute;top:25px;left:25px}.custom-view .table-container .table-cell-container canvas{background:#B4E2F6}.custom-view .input-container{display:inline-block;position:relative;top:-25px;left:34px}.custom-view .input-container .label-container{margin-bottom:10px;overflow:hidden}.custom-view .input-container .label-container label{height:26px;float:left;margin-right:11px;line-height:26px}.custom-view .input-container .label-container .custom-value{float:right;text-align:center;border-radius:2px;border:1px solid #7C7C7C;width:90px;outline:0;padding:4px}.custom-view .input-container .label-container .custom-value:focus{border:1px solid #599EFF;box-shadow:#599EFF 0 0 2px 1px inset}.confirmation-modal .modal-body{height:75px;padding-top:35px}.confirmation-modal .modal-body .warning-sprite{width:40px;height:40px;background:url(../images/sprites/warning.png);display:inline-block;float:left;margin-left:20px;margin-right:10px}.confirmation-modal .modal-body .message{width:304px;display:inline-block;float:left}.info-modal.modal-box{display:none;z-index:5}.info-modal.modal-box .modal-body{width:550px;height:400px}.info-modal.modal-box .modal-body .header-title-wrap{margin:15px auto;text-align:center}.info-modal.modal-box .modal-body .header-title-wrap .icon-48{background:url(../images/icons/icon48.png);width:48px;height:48px;display:inline-block}.info-modal.modal-box .modal-body .header-title-wrap .header-title{display:inline-block;vertical-align:top;font-size:20px;margin:16px 16px 16px 10px}.info-modal.modal-box .modal-body .update-list-header{margin:0 0 10px 25px;font-style:italic;font-size:15px}.info-modal.modal-box .modal-body ul.update-list{margin:0 28px 0 45px;font-size:15px}.info-modal.modal-box .modal-body ul.update-list li.update-entry{list-style:disc;margin-bottom:10px;line-height:18px}.info-modal.modal-box .modal-body .update-list-footer{margin:14px 20px 0 25px;font-size:15px;line-height:16px}.info-modal.modal-box .modal-body .additional-message{font-size:15px;margin:10px 20px 5px 25px;line-height:16px}.info-modal.modal-box .modal-body a{color:#0181eb}.info-modal.modal-box .modal-body a:visited{color:#0181eb}.info-modal.modal-box .modal-footer{padding:0 36px;border:none;background:#fff}.info-modal.modal-box .modal-footer button{width:100%;margin:12px auto;float:none;height:40px;font-size:20px;padding-bottom:10px;background:-webkit-linear-gradient(top,#4096ee 0,#4096ee 100%)}#promo-modal .modal-body .header-title-wrap .icon-48{background:url(../images/icons/promo/icon48.png)}body.update #update-modal{display:block}body.update .main-view{min-height:500px}body.promo #promo-modal{display:block}body.promo .main-view{min-height:500px}body.warning #warning-modal{display:block}body.warning .main-view{min-height:500px}body.align-right .tab-layer{float:right!important}body.empty-tab-not-selected .tab-layer{background:#fff}body.empty-tab-not-selected .tab-layer .fav-icon{visibility:hidden}body.empty-tab-not-selected .tab-layer.valid-tab{background:0 0}body.empty-tab-not-selected .tab-layer.valid-tab .fav-icon{visibility:visible}body.single-tab-selected .tab-layer{background:#fff!important}body.single-tab-selected .tab-layer .fav-icon{visibility:hidden!important}body.single-tab-selected .tab-layer.tab-layer-1{background:transparent!important}body.single-tab-selected .tab-layer.tab-layer-1 .fav-icon{visibility:visible!important}.layout-1x1{background:url(../images/sprites/layouts.png) 0 0}.layout-1x1 .tab-layer{width:100%;height:100%}.layout-1x1 .tab-layer .fav-icon{left:35px;top:35px}.layout-1x2{background:url(../images/sprites/layouts.png) -100px 0}.layout-1x2 .tab-layer{width:50%;height:100%}.layout-1x2 .tab-layer .fav-icon{left:11px;top:35px}.layout-1x3{background:url(../images/sprites/layouts.png) -200px 0}.layout-1x3 .tab-layer{width:33.3%;height:100%}.layout-1x3 .tab-layer .fav-icon{left:8px;top:39px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-2x1{background:url(../images/sprites/layouts.png) -300px 0}.layout-2x1 .tab-layer{width:100%;height:50%}.layout-2x1 .tab-layer .fav-icon{left:35px;top:16px}.layout-2x2{background:url(../images/sprites/layouts.png) -400px 0}.layout-2x2 .tab-layer{width:50%;height:50%}.layout-2x2 .tab-layer .fav-icon{top:16px;left:11px}.layout-3x1{background:url(../images/sprites/layouts.png) -500px 0}.layout-3x1 .tab-layer{width:100%;height:33.3%}.layout-3x1 .tab-layer .fav-icon{top:12px;left:42px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-default{background:url(../images/sprites/layouts.png) -600px 0}.layout-default .tab-layer{display:none!important}.sortable-placeholder{width:113px;height:113px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:7px dashed darkgrey;border-radius:4px;padding:0 0 15px 15px;float:right}#update-modal.partial-update .update-entry{display:none}#update-modal.partial-update .update-entry.latest{display:block;margin-bottom:50px}#update-modal.partial-update .update-list-footer{display:none}#update-modal.partial-update .modal-body{height:350px}#warning-modal{z-index:10}#warning-modal .header-title{border-bottom:2px solid grey;padding-bottom:10px;margin-bottom:0}#warning-modal .update-entry{list-style:none;line-height:22px;font-size:16px;margin-bottom:20px} \ No newline at end of file +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}[type=checkbox]:not(:checked),[type=checkbox]:checked{position:absolute;left:-9999px}[type=checkbox]:not(:checked)+span,[type=checkbox]:checked+span{position:relative;padding-left:25px;cursor:pointer}[type=checkbox]:not(:checked)+span:before,[type=checkbox]:checked+span:before{content:'';position:absolute;left:0;top:0;width:17px;height:17px;border:1px solid #aaa;background:#f8f8f8;border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,.3)}[type=checkbox]:not(:checked)+span:after,[type=checkbox]:checked+span:after{content:'\2713';position:absolute;top:-8px;left:1px;font-size:25px;color:#000}[type=checkbox]:not(:checked)+span:after{opacity:0;transform:scale(0)}[type=checkbox]:checked+span:after{opacity:1;transform:scale(1)}[type=checkbox]:disabled:not(:checked)+span:before,[type=checkbox]:disabled:checked+span:before{box-shadow:none;border-color:#bbb;background-color:#ddd}[type=checkbox]:disabled:checked+span:after{color:#999}[type=checkbox]:disabled+span{color:#aaa}.switch-toggle a,.switch-light span span{display:none}.switch-toggle{display:block;height:30px;position:relative;padding:0!important}.switch-toggle *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.switch-toggle a{display:block;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;transition:all .3s ease-out}.switch-toggle label,.switch-toggle>span{line-height:30px;vertical-align:middle}.switch-toggle input{position:absolute;opacity:0}.switch-toggle input+label{position:relative;top:static;right:static;left:static;display:inherit;width:50%;z-index:2;float:left;height:100%;margin:0;text-align:center;cursor:pointer}.switch-toggle input+label:hover{background:#b4e2f6;box-shadow:inset 0 0 0 3px #28a2d5;-webkit-box-shadow:inset 0 0 0 3px #28a2d5}.switch-toggle a{position:absolute;top:0;right:static;left:0;display:inherit;width:50%;z-index:1;padding:0;height:100%}.switch-toggle input:last-of-type:checked~a{left:50%}.switch-candy{background-color:#fff;border:none;border-radius:6px;color:#fff;text-align:center;border:2px solid gray}.switch-candy label{color:#000}.switch-candy input:checked+label{color:#000;cursor:default}.switch-candy input:checked+label:hover{background:0 0;box-shadow:inset 0 0 0 3px transparent;-webkit-box-shadow:inset 0 0 0 3px transparent}.switch-candy a{background-color:#eee;border:1px solid gray;border-radius:3px;background-image:-webkit-linear-gradient(top,rgba(255,255,255,.2),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(255,255,255,.2),rgba(0,0,0,0))}.switch-candy>span{color:gray;text-shadow:none}.switch-candy span{color:#fff}html,body{background:#fff;min-width:630px}.hidden{display:none}.inactive{opacity:.2;pointer-events:none}.active{display:block}strong,.bold{font-weight:700}a{text-decoration:none}a:hover{text-decoration:underline}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;font-size:18px;box-sizing:border-box}.glyphicon.glyphicon-refresh:before{content:"\e031";box-sizing:border-box}.glyphicon.glyphicon-plus{top:-1px}.glyphicon.glyphicon-plus:before{content:"\2b";box-sizing:border-box}.glyphicon.glyphicon-chevron-down:before{content:"\e114"}.icon{height:18px;width:18px;position:relative;overflow:hidden;display:inline-block}.icon.icon-screen{width:32px;height:25px}.icon .screen{width:28px;height:16px;border:2px solid #333;background:#eee}.icon .screen:before{position:absolute;content:'';width:10px;height:3px;background:#333;bottom:2px;left:11px}.icon .screen:after{position:absolute;content:'';width:22px;height:2px;background:#333;bottom:0;left:5px}input{font-family:Verdana,Geneva,sans-serif;font-size:14px}button{outline:0;color:#000;padding:5px 10px;font-size:13px;border-radius:3px;font-family:Verdana,Geneva,sans-serif;background:-webkit-linear-gradient(top,#fff 0,#f1f1f1 50%,#f6f6f6 100%);border:1px solid #707070}button:hover{background:-webkit-linear-gradient(top,#eee 0,#ccc 100%);cursor:pointer;box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070}button.primary{border:1px solid #707070;color:#fff;border:1px solid #333;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%)}button.primary:hover{box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 100%,#1c1c1c 100%,#2b2b2b 100%,#111 100%,#2c2c2c 100%,#000 100%,#131313 100%)}button.disabled{opacity:.5;pointer-events:none}.modal-box{font-family:Verdana,Geneva,sans-serif;background:#fff;border:4px solid #7C7C7C;box-shadow:0 0 4px #7c7c7c inset;-webkit-box-shadow:0 0 4px #7c7c7c inset;border-radius:8px;position:absolute;top:50%;left:50%}.modal-box .modal-body{border-radius:4px 4px 0 0;padding:2px 10px 0 10px;width:400px;height:144px}.modal-box .modal-footer{border-radius:0 0 4px 4px;padding:0 10px;border-top:1px solid silver;overflow:hidden;background:#E7F3FD}.modal-box .modal-footer .button{float:right;margin:6px 10px 6px 0}.display-setting-indicator{display:none;width:0;height:0;position:absolute;z-index:2;bottom:0;left:80px;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid silver}.main-view.display-selected .display-setting-indicator{display:block}.main-view.display-selected .resize-footer{border-bottom-width:7px}.main-view.display-selected #display-setting-layer{display:block}.main-view.display-selected #display-setting{background:#dcf0f6}.main-view.display-selected #display-setting:hover,.main-view.display-selected #display-setting:focus{background:#b4e2f6}.main-view.display-selected .glyphicon-chevron-down:before{content:"\e113"}.main-view{padding-top:4px;overflow:hidden}.main-view .resize-container{padding:0 5px;height:156px;overflow-y:auto}.main-view .resize-container .resize-selector-container{width:127px;height:127px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:1px solid transparent;border-radius:4px;padding:0 0 15px 15px;float:right}.main-view .resize-container .resize-selector-container .close-button{width:18px;height:18px;border-radius:10px;cursor:pointer;background:url(../images/sprites/close.png);position:absolute;top:2px;right:2px;display:none}.main-view .resize-container .resize-selector-container .layout-title{position:absolute;font-weight:700;font-size:16px;font-family:Verdana,Geneva,sans-serif}.main-view .resize-container .resize-selector-container .resize-selector{width:100px;height:100px;position:absolute;top:21px;border-radius:4px;border:5px solid #7C7C7C}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer{position:relative;display:inline-block;float:left;top:0;left:0}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer .fav-icon{position:absolute;background-repeat:no-repeat;background-size:27px 27px;width:27px;height:27px;background-image:url(../images/icons/defaultFavIcon.png)}.main-view .resize-container .resize-selector-container:hover{cursor:pointer;border:1px solid #D3E3F7;background:-webkit-gradient(linear,left top,left bottom,from(#dcf0f6),to(#f4f8fe));-webkit-transition:all 200ms ease-in}.main-view .resize-container .resize-selector-container:hover .layout-1x1{background:url(../images/sprites/layouts.png) 0 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x2{background:url(../images/sprites/layouts.png) -100px 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x3{background:url(../images/sprites/layouts.png) -200px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x1{background:url(../images/sprites/layouts.png) -300px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x2{background:url(../images/sprites/layouts.png) -400px 100px}.main-view .resize-container .resize-selector-container:hover .layout-3x1{background:url(../images/sprites/layouts.png) -500px 100px}.main-view .resize-container .resize-selector-container:hover .layout-default{background:url(../images/sprites/layouts.png) -600px 100px}.main-view .resize-container .resize-selector-container:hover .close-button{display:block}.main-view .resize-container .resize-selector-container:hover .close-button:hover{background:url(../images/sprites/close_hover.png)}.main-view .resize-footer{border:3px solid silver;overflow:hidden;background:#dcf0f6;clear:right;font-family:Verdana,Geneva,sans-serif}.main-view .resize-footer .footer-wrap{display:inline-block;overflow:hidden}.main-view .resize-footer .footer-wrap.button-wrap{padding:3px 0 0 2px}.main-view .resize-footer .footer-wrap.monitor-wrap{float:left;padding:6px 12px 5px 8px;border-right:3px solid silver;cursor:pointer;background:#fff;position:relative}.main-view .resize-footer .footer-wrap.monitor-wrap:hover,.main-view .resize-footer .footer-wrap.monitor-wrap:focus{background:#b4e2f6}.main-view .resize-footer .footer-wrap.monitor-wrap .display-setting-title{vertical-align:top;font-size:15px;position:relative;top:5px;padding:0 13px 0 8px;border-right:1px solid silver}.main-view .resize-footer .footer-wrap.monitor-wrap .glyphicon{top:-3px;left:3px}.main-view .resize-footer .resize-undo{margin-left:12px}.main-view .resize-footer #custom-layout{padding:4px 15px 1px 15px;float:left}.main-view .resize-footer #default-configuration{padding:3px 15px 2px 15px;float:left}.main-view .resize-footer .checkbox-container{font-family:Verdana,Geneva,sans-serif;overflow:hidden;display:inline-block;border-left:3px solid silver;float:right;background:#fff}.main-view .resize-footer .checkbox-container label{font-size:14px;display:block;padding:11px 7px 13px 10px;cursor:pointer}.main-view .resize-footer .checkbox-container label.selected{background:#dcf0f6}.main-view .resize-footer .checkbox-container label:hover{background:#b4e2f6}.main-view .resize-footer .checkbox-container label input{border-radius:3px;-webkit-border-radius:3px;vertical-align:top;width:18px;height:18px}.main-view .resize-footer .checkbox-container label span{position:relative;top:1px;left:-2px}#display-setting-layer{display:none;position:relative;bottom:0;margin:100px 50px 25px 50px;font-family:Verdana,Geneva,sans-serif}#display-setting-layer .signature{position:absolute;bottom:-22px;font-size:13px;right:-45px;font-weight:700}#display-setting-layer .signature a{color:#005579;padding-right:5px}#display-setting-layer .signature .rate-it,#display-setting-layer .signature .keyboard-shortcuts{border-left:1px solid silver;padding-left:5px;padding-right:5px}#display-setting-layer .switch-toggle{top:-80px;left:0;width:100%}#display-setting-layer .switch-toggle.right-align a{border-left-width:2px}#display-setting-layer .switch-toggle.left-align a{border-right-width:2px}#display-setting-layer .display-settings-divider{width:630px;height:1px;position:absolute;top:-22px;left:-50px;background:#000;background:-webkit-gradient(linear,0 0,100% 0,from(#fff),to(#fff),color-stop(50%,#000))}#display-setting-layer .display-entry{position:absolute;border:1px solid grey;border-radius:3px;-webkit-border-radius:3px;box-shadow:inset 0 0 0 2px gray;-webkit-box-shadow:inset 0 0 0 2px gray;background:#fff;cursor:pointer;z-index:1}#display-setting-layer .display-entry.selected{z-index:2;background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray;cursor:default}#display-setting-layer .display-entry.selected:hover{background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray}#display-setting-layer .display-entry:hover{z-index:3;background:#b4e2f6;border-color:#28a2d5;box-shadow:inset 0 0 0 4px #28a2d5;-webkit-box-shadow:inset 0 0 0 4px #28a2d5}#display-setting-layer .display-entry .display-meta{position:relative;top:10px;left:10px}.custom-view .table-container{display:inline-block;position:relative;width:145px;height:145px;left:15px}.custom-view .table-container .table-label-top{position:absolute;left:48px;top:3px}.custom-view .table-container .table-label-left{position:absolute;top:69px;left:-7px;-webkit-transform:rotate(-90deg) translate3d(0,0,0)}.custom-view .table-container .table-cell-container{border:7px solid #7C7C7C;border-radius:4px;width:100px;height:100px;position:absolute;top:25px;left:25px}.custom-view .table-container .table-cell-container canvas{background:#B4E2F6}.custom-view .input-container{display:inline-block;position:relative;top:-25px;left:34px}.custom-view .input-container .label-container{margin-bottom:10px;overflow:hidden}.custom-view .input-container .label-container label{height:26px;float:left;margin-right:11px;line-height:26px}.custom-view .input-container .label-container .custom-value{float:right;text-align:center;border-radius:2px;border:1px solid #7C7C7C;width:90px;outline:0;padding:4px}.custom-view .input-container .label-container .custom-value:focus{border:1px solid #599EFF;box-shadow:#599EFF 0 0 2px 1px inset}.confirmation-modal .modal-body{height:75px;padding-top:35px}.confirmation-modal .modal-body .warning-sprite{width:40px;height:40px;background:url(../images/sprites/warning.png);display:inline-block;float:left;margin-left:20px;margin-right:10px}.confirmation-modal .modal-body .message{width:304px;display:inline-block;float:left}.info-modal.modal-box{display:none;z-index:5}.info-modal.modal-box .modal-body{width:550px;height:400px}.info-modal.modal-box .modal-body .header-title-wrap{margin:15px auto;text-align:center}.info-modal.modal-box .modal-body .header-title-wrap .icon-48{background:url(../images/icons/icon48.png);width:48px;height:48px;display:inline-block}.info-modal.modal-box .modal-body .header-title-wrap .header-title{display:inline-block;vertical-align:top;font-size:20px;margin:16px 16px 16px 10px}.info-modal.modal-box .modal-body .update-list-header{margin:0 0 10px 25px;font-style:italic;font-size:15px}.info-modal.modal-box .modal-body ul.update-list{margin:0 28px 0 45px;font-size:15px}.info-modal.modal-box .modal-body ul.update-list li.update-entry{list-style:disc;margin-bottom:10px;line-height:18px}.info-modal.modal-box .modal-body .update-list-footer{margin:14px 20px 0 25px;font-size:15px;line-height:16px}.info-modal.modal-box .modal-body .additional-message{font-size:15px;margin:10px 20px 5px 25px;line-height:16px}.info-modal.modal-box .modal-body a{color:#0181eb}.info-modal.modal-box .modal-body a:visited{color:#0181eb}.info-modal.modal-box .modal-footer{padding:0 36px;border:none;background:#fff}.info-modal.modal-box .modal-footer button{width:100%;margin:12px auto;float:none;height:40px;font-size:20px;padding-bottom:10px;background:-webkit-linear-gradient(top,#4096ee 0,#4096ee 100%)}#promo-modal .modal-body .header-title-wrap .icon-48{background:url(../images/icons/promo/icon48.png)}body.update #update-modal{display:block}body.update .main-view{min-height:500px}body.promo #promo-modal{display:block}body.promo .main-view{min-height:500px}body.warning #warning-modal{display:block}body.warning .main-view{min-height:500px}body.align-right .tab-layer{float:right!important}body.empty-tab-not-selected .tab-layer{background:#fff}body.empty-tab-not-selected .tab-layer .fav-icon{visibility:hidden}body.empty-tab-not-selected .tab-layer.valid-tab{background:0 0}body.empty-tab-not-selected .tab-layer.valid-tab .fav-icon{visibility:visible}body.single-tab-selected .tab-layer{background:#fff!important}body.single-tab-selected .tab-layer .fav-icon{visibility:hidden!important}body.single-tab-selected .tab-layer.tab-layer-1{background:transparent!important}body.single-tab-selected .tab-layer.tab-layer-1 .fav-icon{visibility:visible!important}.layout-1x1{background:url(../images/sprites/layouts.png) 0 0}.layout-1x1 .tab-layer{width:100%;height:100%}.layout-1x1 .tab-layer .fav-icon{left:35px;top:35px}.layout-1x2{background:url(../images/sprites/layouts.png) -100px 0}.layout-1x2 .tab-layer{width:50%;height:100%}.layout-1x2 .tab-layer .fav-icon{left:11px;top:35px}.layout-1x3{background:url(../images/sprites/layouts.png) -200px 0}.layout-1x3 .tab-layer{width:33.3%;height:100%}.layout-1x3 .tab-layer .fav-icon{left:8px;top:39px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-2x1{background:url(../images/sprites/layouts.png) -300px 0}.layout-2x1 .tab-layer{width:100%;height:50%}.layout-2x1 .tab-layer .fav-icon{left:35px;top:16px}.layout-2x2{background:url(../images/sprites/layouts.png) -400px 0}.layout-2x2 .tab-layer{width:50%;height:50%}.layout-2x2 .tab-layer .fav-icon{top:16px;left:11px}.layout-3x1{background:url(../images/sprites/layouts.png) -500px 0}.layout-3x1 .tab-layer{width:100%;height:33.3%}.layout-3x1 .tab-layer .fav-icon{top:12px;left:42px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-default{background:url(../images/sprites/layouts.png) -600px 0}.layout-default .tab-layer{display:none!important}.sortable-placeholder{width:113px;height:113px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:7px dashed darkgrey;border-radius:4px;padding:0 0 15px 15px;float:right}#update-modal.partial-update .update-entry{display:none}#update-modal.partial-update .update-entry.latest{display:block;margin-bottom:50px}#update-modal.partial-update .update-list-footer{display:none}#update-modal.partial-update .modal-body{height:350px}#warning-modal{z-index:10}#warning-modal .header-title{border-bottom:2px solid grey;padding-bottom:10px;margin-bottom:0}#warning-modal .update-entry{list-style:none;line-height:22px;font-size:16px;margin-bottom:20px} \ No newline at end of file diff --git a/public/tabResize.js b/public/tabResize.js index fc12c48..3d67819 100644 --- a/public/tabResize.js +++ b/public/tabResize.js @@ -858,7 +858,7 @@ if(!deferTracking) { top: windowInfo.top + 100 }; - var displayJSON = processInfo(displayInfo,currentWindowInfo), + var displayJSON = backJs.util.displayInfoFormatter(displayInfo,currentWindowInfo), template, currentDisplay; @@ -949,33 +949,6 @@ if(!deferTracking) { $displayLayer.height(scale*height); } - //format the displayInfo - function processInfo(displayInfo,currentWindowInfo){ - var index = 0, - length = displayInfo.length, - info, - displayJSON = { //may need to check for some mirroring property, currently only one monitor is display when mirroring - displays: [], - primaryIndex: 0 - }; - - for(;index info.workArea.left && currentWindowInfo.left < info.workArea.left + info.workArea.width && currentWindowInfo.top > info.workArea.top && currentWindowInfo.top < info.workArea.top + info.workArea.height){ - displayJSON.primaryIndex = index; - } - - } - return displayJSON; - } - function renderDisplayTemplate(info, id, isPrimary){ var $template = $('
'); $template.css({ @@ -1137,6 +1110,8 @@ if(!deferTracking) { } else { sendTracking('info-links','author'); } + }).on('click','a.keyboard-shortcuts', function(){ + chrome.tabs.create({url:'chrome://extensions/configureCommands'}); }); })(); \ No newline at end of file diff --git a/public/tabResize.min.js b/public/tabResize.min.js index 7dff6af..c0df442 100644 --- a/public/tabResize.min.js +++ b/public/tabResize.min.js @@ -1 +1 @@ -function sendTracking(a,b){!deferTracking&&ga&&ga("send","event",a,"clicked",b||"na")}var optOut=localStorage.getItem("tracking-opt-out"),deferTracking=!1;optOut&&"true"===optOut&&(deferTracking=!0),deferTracking||(!function(a,b,c,d,e,f,g){a.GoogleAnalyticsObject=e,a[e]=a[e]||function(){(a[e].q=a[e].q||[]).push(arguments)},a[e].l=1*new Date,f=b.createElement(c),g=b.getElementsByTagName(c)[0],f.async=1,f.src=d,g.parentNode.insertBefore(f,g)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-34217520-2","auto"),ga("set","checkProtocolTask",function(){}),ga("require","displayfeatures"),ga("send","pageview","/index.html")),function(){var a={tabsArray:[],currentTab:null,numRows:0,numCols:0,width:0,height:0,canvasHeight:100,canvasWidth:100,currentLayouts:null,defaultLayouts:{layoutItems:["1x1","1x2","2x1","2x2"]},layoutSprites:{layoutItems:["1x1","1x2","2x1","2x2","1x3","3x1"]},maxSelectorsPerLine:5,maxSelectorContainerWidth:156,maxSelectorContainerHeight:156,singleTab:!1,main_view:{},custom_view:{},options:{},util:{},badgeLimit:7,isMac:-1!==navigator.platform.toUpperCase().indexOf("MAC")};window.resize=a}(),function(){var a=window.resize,b={initialize:function(){a.currentLayouts=JSON.parse(localStorage.getItem("layoutItems")),a.currentLayouts||(localStorage.setItem("layoutItems",JSON.stringify(a.defaultLayouts)),a.currentLayouts=$.extend(!0,{},a.defaultLayouts)),this.populateMainView();var b=localStorage.getItem("singleTab");b&&"true"===b&&($("#checkbox-single-tab").attr("checked",!0),$("label.single-tab").addClass("selected"),$("body").addClass("single-tab-selected"),a.singleTab=!0);var c=localStorage.getItem("emptyTab");c&&"true"!==c?$("body").addClass("empty-tab-not-selected"):($("#checkbox-empty-tab").attr("checked",!0),$("label.empty-tab").addClass("selected"),a.emptyTab=!0);var d=localStorage.getItem("displayLayer");d&&"true"!==d||($(".main-view").addClass("display-selected"),a.displayLayer=!0);var e=localStorage.getItem("alignment");e?(a.alignment=e,"left"!==a.alignment&&$("body").addClass("align-right")):a.alignment="left",$("#"+a.alignment).trigger("click",["defer-tracking"]),a.displayUtil.initialize(),localStorage.getItem("lastTab")&&$("#undo-layout").removeClass("disabled"),window.backJs=chrome.extension.getBackgroundPage(),chrome.runtime.onMessage.addListener(function(b){"enable-undo"===b&&a.options.enableUndoButton()});var f=Number(localStorage.getItem("updateBadge"));f||(localStorage.setItem("updateBadge",0),chrome.browserAction.setBadgeText({text:"NEW"}),chrome.browserAction.setBadgeBackgroundColor({color:[221,129,39,255]})),fg&&""!==g,i=$("body");(!localStorage.getItem("update-seen")||h)&&(i.addClass("update"),h?localStorage.removeItem("update-seen"):localStorage.getItem("warning-seen")||(i.addClass("warning"),a.options.showWarningModal()),a.options.showUpdateModal(h?"partial-update":"")),localStorage.getItem("update-seen")&&f===a.badgeLimit&&!localStorage.getItem("promo-seen")&&(i.addClass("promo"),a.options.showPromoModal()),$(function(){a.util.initSortable()})},populateMainView:function(){for(var b=0;b=5&&0===c&&($("body").height($("body").height()-a.maxSelectorContainerHeight),$("html").height($("html").height()-a.maxSelectorContainerHeight))},resizeTabs:function(b,c){a.numRows=b,a.numCols=c;var d=$(".display-entry.selected").data();$.isEmptyObject(d)?(a.width=Math.round(window.screen.availWidth/a.numCols),a.height=Math.round(window.screen.availHeight/a.numRows),a.offsetX=0,a.offsetY=0,a.fullWidth=window.screen.availWidth,a.fullHeight=window.screen.availHeight):(a.width=Math.round(d.width/a.numCols),a.height=Math.round(d.height/a.numRows),a.offsetX=d.left,a.offsetY=d.top,a.fullWidth=d.width,a.fullHeight=d.height);window.chrome.tabs.query({currentWindow:!0},function(b){a.tabsArray=b,window.chrome.tabs.query({currentWindow:!0,highlighted:!0},function(b){a.currentTab=b[0];var c=a.currentTab.index;b.length>1&&(a.tabsArray=b,c=0);var d=function(){return backJs.util.processTabs(a,a.tabsArray,c,a.currentTab.windowId,a.singleTab,a.currentTab.incognito)};a.singleTab?backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c,c+1),d):backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c),d)})})}};window.resize.main_view=b}(),function(){var a=window.resize,b={hideCustomMenu:function(){$(".custom-view").addClass("hidden"),$(".main-view").removeClass("inactive"),a.util.clearCanvas()},showCustomMenu:function(){this.clearCustomValues(),$(".main-view").addClass("inactive"),$(".custom-view").removeClass("hidden").trigger("show"),$(".custom-view input.row").focus()},clearCustomValues:function(){$("#numRows").val(""),$("#numCols").val(""),$("#input-save").addClass("disabled")},handleCustomSave:function(){var b=$("#numRows").val(),c=$("#numCols").val();if(this.clearCustomValues(),!Number(b)||!Number(c)||Number(b)<1||Number(c)<1);else{var d=b+"x"+c;a.layout.addLayout(d),a.layout.processTabInfo($(".layout-"+d)),this.hideCustomMenu()}}};window.resize.custom_view=b}(),function(){var a=window.resize,b={processSingleTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("singleTab",c),a.singleTab=c,$("label.single-tab").toggleClass("selected"),$("body").toggleClass("single-tab-selected")},processEmptyTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("emptyTab",c),a.emptyTab=c,$("label.empty-tab").toggleClass("selected"),$("body").toggleClass("empty-tab-not-selected")},processDisplayLayerSelection:function(b){var c=b?!0:!1;localStorage.setItem("displayLayer",c),a.displayLayer=c},processAlignmentSelection:function(b){localStorage.setItem("alignment",b),a.alignment=b,"right"===b?$("body").addClass("align-right"):$("body").removeClass("align-right")},undoResize:function(){var b=this;a.lastTab=JSON.parse(localStorage.getItem("lastTab"));var c=a.lastTab.lastTabIndex,d=a.lastTab.lastWindowId,e=a.lastTab.lastTabsArray;window.chrome.windows.get(d,{},function(f){f?b.recombineTabs(c,d,e):chrome.tabs.query({status:"complete"},function(c){for(var d={},f=[],g=0;gd;b++,d++){a=c[b];var e=$(".resize-container").find(".tab-layer-"+d);e.addClass("valid-tab");for(var f=0;fd;d++)e.push(a.eq(d).attr("data-selector-type"));b.currentLayouts.layoutItems=e,localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts))},addLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);-1!==d&&(c.splice(d,1),this._removeLayoutMarkup(a)),b.currentLayouts.layoutItems.unshift(a),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this.addLayoutMarkup(a,!0),b.util.resetSortable()},addLayoutMarkup:function(a,c){var d="layout-default";(-1!==b.layoutSprites.layoutItems.indexOf(a)||"1x1"===a)&&(d="layout-"+a);var e=$(".resize-container"),f='
  • '+a+'
  • ';c?e.prepend(f):e.append(f)},removeLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);c.splice(d,1),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this._removeLayoutMarkup(a)},_removeLayoutMarkup:function(a){var b='[data-selector-type="'+a+'"]';$(b).parent().remove()},resetLayout:function(){this._removeAllLayouts(),localStorage.setItem("layoutItems",JSON.stringify(b.defaultLayouts)),b.currentLayouts=$.extend(!0,{},b.defaultLayouts),b.main_view.populateMainView(),this.processTabInfo(),b.util.resetSortable()},_removeAllLayouts:function(){$(".resize-container").children().remove()},processTabInfo:function(c){var d,e,f,g,h,i,j,k=b.currentWindowTabs,l=c||$(".resize-container").find(".resize-selector-container .resize-selector"),m=0,n=0;if(l=l.filter(function(){return!$(this).hasClass("layout-default")}),m=l.length,k&&k.length>0){for(;m>n;n++){h="",d=l.eq(n),e=d.attr("data-selector-type").split("x"),f=e[0],g=e[1],j=1;for(var o=0;f>o;o++)for(var p=0;g>p;p++)h+='
    ';d.html(h)}for(n=0;nh;h++)e.moveTo(0,g*h),e.lineTo(b,g*h);for(var i=1;d>i;i++)e.moveTo(f*i,0),e.lineTo(f*i,a);e.closePath(),e.stroke()},clearCanvas:function(){var a=$("canvas")[0],b=a.getContext("2d");b.clearRect(0,0,b.canvas.width,b.canvas.height)},initSortable:function(){$(".sortable").sortable().on("sortupdate",function(){resize.layout.updateLayoutStore(),sendTracking("dnd-event","dnd-label")}),b=!0},resetSortable:function(){if(b){var a=$(".sortable");a.sortable("destroy"),a.sortable()}}},b=!1;window.resize.util=a}(),function(a){function b(a){for(var b,e,f,g,h,l=a.displays,m=null,n=null,o=null,p=null,q=0,r=l.length;r>q;q++)h=l[q].workArea,(null===m||m>h.left)&&(m=h.left),(null===n||nh.top)&&(o=h.top),(null===p||pf?f:g,j=0!==m?-1*m*i:0,k=0!==o?-1*o*i:0,d(i,e)}function c(){a("#display-setting-layer");return{width:l,height:m}}function d(b,c){var d=a("#display-setting-layer");d.height(b*c)}function e(a,b){for(var c,d=0,e=a.length,f={displays:[],primaryIndex:0};e>d;d++)c=a[d],c.id=String(d),f.displays.push({workArea:c.workArea,isEnabled:c.isEnabled,id:c.id}),b.left>c.workArea.left&&b.leftc.workArea.top&&b.top
    ');return e.css({top:b.top*i+k,left:b.left*i+j,width:b.width*i,height:b.height*i}).data(a.extend({id:c},b)),e.find(".display-meta").text(b.width+"x"+b.height),d&&e.addClass("selected"),e}var g,h=window.resize,i=.15,j=0,k=0,l=530,m=250,n={initialize:function(){chrome.system&&chrome.system.display&&(h.display=chrome.system.display,g=a("#display-setting-layer"),g.on("click",".display-entry",function(){var b=a(this),c={},d=b.data("id"),e=b.find(".display-meta").text();c[d]=!0,g.find(".display-entry").removeClass("selected"),b.addClass("selected"),sendTracking("display-select",e)}),h.display.getInfo(function(a){chrome.windows.getCurrent({populate:!0},function(c){var d,i,j={left:c.left+c.width-100,top:c.top+100},k=e(a,j);b(k);for(var l=0;l1?a:c.tabs,h.layout.processTabInfo()})})}))}};h.displayUtil=n}(window.jQuery),function(){var a=window.resize,b=a.main_view,c=a.custom_view,d=a.util,e=a.layout,f=a.options,g=(a.displayUtil,$(document));g.ready(function(){b.initialize()}).on("click",".resize-selector-container",function(){var a=$(this).children(".resize-selector"),c=a.attr("data-selector-type"),d=c.split("x");b.resizeTabs(Number(d[0]),Number(d[1])),sendTracking("resize",c)}).on("show",".modal-box",function(a){a.stopPropagation(),d.centerModal($(this))}).on("click",".modal-box",function(a){a.stopPropagation()}).on("click",".close-button",function(a){a.stopPropagation();var b=$(this).siblings(".resize-selector").attr("data-selector-type");e.removeLayout(b),sendTracking("resize-delete",b)}).on("click","#undo-layout",function(){f.undoResize(),sendTracking("undo","undo")}).on("click","#custom-layout",function(a){a.stopPropagation(),c.showCustomMenu(),sendTracking("custom-layout","open")}).on("click","#default-configuration",function(a){a.stopPropagation(),f.showConfirmationModal(),sendTracking("default-layout","open")}).on("click","#confirmation-cancel",function(){f.hideConfirmationModal(),sendTracking("default-layout","cancel")}).on("click","#confirmation-apply",function(){e.resetLayout(),f.hideConfirmationModal(),sendTracking("default-layout","apply")}).on("click","#input-cancel,.main-view",function(){$(".custom-view").hasClass("hidden")||(c.clearCustomValues(),c.hideCustomMenu(),sendTracking("custom-layout","cancel"))}).on("click","#input-save",function(){c.handleCustomSave(),sendTracking("custom-layout","apply")}).on("click","body",function(){$(".custom-view").hasClass("hidden")||(d.clearCanvas(),c.hideCustomMenu(),sendTracking("custom-layout","cancel-layer")),$(".confirmation-modal").hasClass("hidden")||(f.hideConfirmationModal(),sendTracking("default-layout","cancel-layer"))}).on("keyup","#numRows, #numCols",function(b){b.stopPropagation();var c=document.getElementById("myCanvas"),e=c.getContext("2d"),f=Number($("#numRows").attr("value")),g=Number($("#numCols").attr("value"));if(d.clearCanvas(),f&&f>0&&g&&g>0)f>a.canvasHeight/4&&(f=a.canvasHeight/4),g>a.canvasWidth/4&&(g=a.canvasWidth/4),d.drawTable(a.canvasWidth,a.canvasHeight,f,g,e),$("#input-save").removeClass("disabled");else{var h=$(this),i=Number(h.attr("value"));(0===i||isNaN(i))&&(h.attr("value",""),$("#input-save").addClass("disabled"))}}).on("change","#checkbox-single-tab",function(){var a=$(this).attr("checked");f.processSingleTabSelection(a),sendTracking("single-tab",a?"checked":"unchecked")}).on("change","#checkbox-empty-tab",function(){var a=$(this).attr("checked");f.processEmptyTabSelection(a),sendTracking("empty-tab",a?"checked":"unchecked")}).on("click","#display-setting",function(){var a,b=$(".main-view");b.toggleClass("display-selected"),a=b.hasClass("display-selected"),f.processDisplayLayerSelection(a),sendTracking("display-settings",a?"opened":"closed")}).on("click","#display-setting-layer .switch-toggle input",function(a,b){var c=$(this).attr("id");$(".switch-toggle").removeClass("right-align left-align").addClass(c+"-align"),f.processAlignmentSelection(c),b||sendTracking("alignment",c)}).on("click","#update-apply",function(){f.hideUpdateModal()}).on("click","#promo-apply",function(){f.hidePromoModal()}).on("click","#warning-apply",function(){f.hideWarningModal()}).on("click",".signature a",function(){$(this).hasClass("rate-it")?sendTracking("info-links","rate-it"):sendTracking("info-links","author")})}(); \ No newline at end of file +function sendTracking(a,b){!deferTracking&&ga&&ga("send","event",a,"clicked",b||"na")}var optOut=localStorage.getItem("tracking-opt-out"),deferTracking=!1;optOut&&"true"===optOut&&(deferTracking=!0),deferTracking||(!function(a,b,c,d,e,f,g){a.GoogleAnalyticsObject=e,a[e]=a[e]||function(){(a[e].q=a[e].q||[]).push(arguments)},a[e].l=1*new Date,f=b.createElement(c),g=b.getElementsByTagName(c)[0],f.async=1,f.src=d,g.parentNode.insertBefore(f,g)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-34217520-2","auto"),ga("set","checkProtocolTask",function(){}),ga("require","displayfeatures"),ga("send","pageview","/index.html")),function(){var a={tabsArray:[],currentTab:null,numRows:0,numCols:0,width:0,height:0,canvasHeight:100,canvasWidth:100,currentLayouts:null,defaultLayouts:{layoutItems:["1x1","1x2","2x1","2x2"]},layoutSprites:{layoutItems:["1x1","1x2","2x1","2x2","1x3","3x1"]},maxSelectorsPerLine:5,maxSelectorContainerWidth:156,maxSelectorContainerHeight:156,singleTab:!1,main_view:{},custom_view:{},options:{},util:{},badgeLimit:7,isMac:-1!==navigator.platform.toUpperCase().indexOf("MAC")};window.resize=a}(),function(){var a=window.resize,b={initialize:function(){a.currentLayouts=JSON.parse(localStorage.getItem("layoutItems")),a.currentLayouts||(localStorage.setItem("layoutItems",JSON.stringify(a.defaultLayouts)),a.currentLayouts=$.extend(!0,{},a.defaultLayouts)),this.populateMainView();var b=localStorage.getItem("singleTab");b&&"true"===b&&($("#checkbox-single-tab").attr("checked",!0),$("label.single-tab").addClass("selected"),$("body").addClass("single-tab-selected"),a.singleTab=!0);var c=localStorage.getItem("emptyTab");c&&"true"!==c?$("body").addClass("empty-tab-not-selected"):($("#checkbox-empty-tab").attr("checked",!0),$("label.empty-tab").addClass("selected"),a.emptyTab=!0);var d=localStorage.getItem("displayLayer");d&&"true"!==d||($(".main-view").addClass("display-selected"),a.displayLayer=!0);var e=localStorage.getItem("alignment");e?(a.alignment=e,"left"!==a.alignment&&$("body").addClass("align-right")):a.alignment="left",$("#"+a.alignment).trigger("click",["defer-tracking"]),a.displayUtil.initialize(),localStorage.getItem("lastTab")&&$("#undo-layout").removeClass("disabled"),window.backJs=chrome.extension.getBackgroundPage(),chrome.runtime.onMessage.addListener(function(b){"enable-undo"===b&&a.options.enableUndoButton()});var f=Number(localStorage.getItem("updateBadge"));f||(localStorage.setItem("updateBadge",0),chrome.browserAction.setBadgeText({text:"NEW"}),chrome.browserAction.setBadgeBackgroundColor({color:[221,129,39,255]})),fg&&""!==g,i=$("body");(!localStorage.getItem("update-seen")||h)&&(i.addClass("update"),h?localStorage.removeItem("update-seen"):localStorage.getItem("warning-seen")||(i.addClass("warning"),a.options.showWarningModal()),a.options.showUpdateModal(h?"partial-update":"")),localStorage.getItem("update-seen")&&f===a.badgeLimit&&!localStorage.getItem("promo-seen")&&(i.addClass("promo"),a.options.showPromoModal()),$(function(){a.util.initSortable()})},populateMainView:function(){for(var b=0;b=5&&0===c&&($("body").height($("body").height()-a.maxSelectorContainerHeight),$("html").height($("html").height()-a.maxSelectorContainerHeight))},resizeTabs:function(b,c){a.numRows=b,a.numCols=c;var d=$(".display-entry.selected").data();$.isEmptyObject(d)?(a.width=Math.round(window.screen.availWidth/a.numCols),a.height=Math.round(window.screen.availHeight/a.numRows),a.offsetX=0,a.offsetY=0,a.fullWidth=window.screen.availWidth,a.fullHeight=window.screen.availHeight):(a.width=Math.round(d.width/a.numCols),a.height=Math.round(d.height/a.numRows),a.offsetX=d.left,a.offsetY=d.top,a.fullWidth=d.width,a.fullHeight=d.height);window.chrome.tabs.query({currentWindow:!0},function(b){a.tabsArray=b,window.chrome.tabs.query({currentWindow:!0,highlighted:!0},function(b){a.currentTab=b[0];var c=a.currentTab.index;b.length>1&&(a.tabsArray=b,c=0);var d=function(){return backJs.util.processTabs(a,a.tabsArray,c,a.currentTab.windowId,a.singleTab,a.currentTab.incognito)};a.singleTab?backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c,c+1),d):backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c),d)})})}};window.resize.main_view=b}(),function(){var a=window.resize,b={hideCustomMenu:function(){$(".custom-view").addClass("hidden"),$(".main-view").removeClass("inactive"),a.util.clearCanvas()},showCustomMenu:function(){this.clearCustomValues(),$(".main-view").addClass("inactive"),$(".custom-view").removeClass("hidden").trigger("show"),$(".custom-view input.row").focus()},clearCustomValues:function(){$("#numRows").val(""),$("#numCols").val(""),$("#input-save").addClass("disabled")},handleCustomSave:function(){var b=$("#numRows").val(),c=$("#numCols").val();if(this.clearCustomValues(),!Number(b)||!Number(c)||Number(b)<1||Number(c)<1);else{var d=b+"x"+c;a.layout.addLayout(d),a.layout.processTabInfo($(".layout-"+d)),this.hideCustomMenu()}}};window.resize.custom_view=b}(),function(){var a=window.resize,b={processSingleTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("singleTab",c),a.singleTab=c,$("label.single-tab").toggleClass("selected"),$("body").toggleClass("single-tab-selected")},processEmptyTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("emptyTab",c),a.emptyTab=c,$("label.empty-tab").toggleClass("selected"),$("body").toggleClass("empty-tab-not-selected")},processDisplayLayerSelection:function(b){var c=b?!0:!1;localStorage.setItem("displayLayer",c),a.displayLayer=c},processAlignmentSelection:function(b){localStorage.setItem("alignment",b),a.alignment=b,"right"===b?$("body").addClass("align-right"):$("body").removeClass("align-right")},undoResize:function(){var b=this;a.lastTab=JSON.parse(localStorage.getItem("lastTab"));var c=a.lastTab.lastTabIndex,d=a.lastTab.lastWindowId,e=a.lastTab.lastTabsArray;window.chrome.windows.get(d,{},function(f){f?b.recombineTabs(c,d,e):chrome.tabs.query({status:"complete"},function(c){for(var d={},f=[],g=0;gd;b++,d++){a=c[b];var e=$(".resize-container").find(".tab-layer-"+d);e.addClass("valid-tab");for(var f=0;fd;d++)e.push(a.eq(d).attr("data-selector-type"));b.currentLayouts.layoutItems=e,localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts))},addLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);-1!==d&&(c.splice(d,1),this._removeLayoutMarkup(a)),b.currentLayouts.layoutItems.unshift(a),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this.addLayoutMarkup(a,!0),b.util.resetSortable()},addLayoutMarkup:function(a,c){var d="layout-default";(-1!==b.layoutSprites.layoutItems.indexOf(a)||"1x1"===a)&&(d="layout-"+a);var e=$(".resize-container"),f='
  • '+a+'
  • ';c?e.prepend(f):e.append(f)},removeLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);c.splice(d,1),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this._removeLayoutMarkup(a)},_removeLayoutMarkup:function(a){var b='[data-selector-type="'+a+'"]';$(b).parent().remove()},resetLayout:function(){this._removeAllLayouts(),localStorage.setItem("layoutItems",JSON.stringify(b.defaultLayouts)),b.currentLayouts=$.extend(!0,{},b.defaultLayouts),b.main_view.populateMainView(),this.processTabInfo(),b.util.resetSortable()},_removeAllLayouts:function(){$(".resize-container").children().remove()},processTabInfo:function(c){var d,e,f,g,h,i,j,k=b.currentWindowTabs,l=c||$(".resize-container").find(".resize-selector-container .resize-selector"),m=0,n=0;if(l=l.filter(function(){return!$(this).hasClass("layout-default")}),m=l.length,k&&k.length>0){for(;m>n;n++){h="",d=l.eq(n),e=d.attr("data-selector-type").split("x"),f=e[0],g=e[1],j=1;for(var o=0;f>o;o++)for(var p=0;g>p;p++)h+='
    ';d.html(h)}for(n=0;nh;h++)e.moveTo(0,g*h),e.lineTo(b,g*h);for(var i=1;d>i;i++)e.moveTo(f*i,0),e.lineTo(f*i,a);e.closePath(),e.stroke()},clearCanvas:function(){var a=$("canvas")[0],b=a.getContext("2d");b.clearRect(0,0,b.canvas.width,b.canvas.height)},initSortable:function(){$(".sortable").sortable().on("sortupdate",function(){resize.layout.updateLayoutStore(),sendTracking("dnd-event","dnd-label")}),b=!0},resetSortable:function(){if(b){var a=$(".sortable");a.sortable("destroy"),a.sortable()}}},b=!1;window.resize.util=a}(),function(a){function b(a){for(var b,e,f,g,k,l=a.displays,m=null,n=null,o=null,p=null,q=0,r=l.length;r>q;q++)k=l[q].workArea,(null===m||m>k.left)&&(m=k.left),(null===n||nk.top)&&(o=k.top),(null===p||pf?f:g,i=0!==m?-1*m*h:0,j=0!==o?-1*o*h:0,d(h,e)}function c(){a("#display-setting-layer");return{width:k,height:l}}function d(b,c){var d=a("#display-setting-layer");d.height(b*c)}function e(b,c,d){var e=a('
    ');return e.css({top:b.top*h+j,left:b.left*h+i,width:b.width*h,height:b.height*h}).data(a.extend({id:c},b)),e.find(".display-meta").text(b.width+"x"+b.height),d&&e.addClass("selected"),e}var f,g=window.resize,h=.15,i=0,j=0,k=530,l=250,m={initialize:function(){chrome.system&&chrome.system.display&&(g.display=chrome.system.display,f=a("#display-setting-layer"),f.on("click",".display-entry",function(){var b=a(this),c={},d=b.data("id"),e=b.find(".display-meta").text();c[d]=!0,f.find(".display-entry").removeClass("selected"),b.addClass("selected"),sendTracking("display-select",e)}),g.display.getInfo(function(a){chrome.windows.getCurrent({populate:!0},function(c){var d,h,i={left:c.left+c.width-100,top:c.top+100},j=backJs.util.displayInfoFormatter(a,i);b(j);for(var k=0;k1?a:c.tabs,g.layout.processTabInfo()})})}))}};g.displayUtil=m}(window.jQuery),function(){var a=window.resize,b=a.main_view,c=a.custom_view,d=a.util,e=a.layout,f=a.options,g=(a.displayUtil,$(document));g.ready(function(){b.initialize()}).on("click",".resize-selector-container",function(){var a=$(this).children(".resize-selector"),c=a.attr("data-selector-type"),d=c.split("x");b.resizeTabs(Number(d[0]),Number(d[1])),sendTracking("resize",c)}).on("show",".modal-box",function(a){a.stopPropagation(),d.centerModal($(this))}).on("click",".modal-box",function(a){a.stopPropagation()}).on("click",".close-button",function(a){a.stopPropagation();var b=$(this).siblings(".resize-selector").attr("data-selector-type");e.removeLayout(b),sendTracking("resize-delete",b)}).on("click","#undo-layout",function(){f.undoResize(),sendTracking("undo","undo")}).on("click","#custom-layout",function(a){a.stopPropagation(),c.showCustomMenu(),sendTracking("custom-layout","open")}).on("click","#default-configuration",function(a){a.stopPropagation(),f.showConfirmationModal(),sendTracking("default-layout","open")}).on("click","#confirmation-cancel",function(){f.hideConfirmationModal(),sendTracking("default-layout","cancel")}).on("click","#confirmation-apply",function(){e.resetLayout(),f.hideConfirmationModal(),sendTracking("default-layout","apply")}).on("click","#input-cancel,.main-view",function(){$(".custom-view").hasClass("hidden")||(c.clearCustomValues(),c.hideCustomMenu(),sendTracking("custom-layout","cancel"))}).on("click","#input-save",function(){c.handleCustomSave(),sendTracking("custom-layout","apply")}).on("click","body",function(){$(".custom-view").hasClass("hidden")||(d.clearCanvas(),c.hideCustomMenu(),sendTracking("custom-layout","cancel-layer")),$(".confirmation-modal").hasClass("hidden")||(f.hideConfirmationModal(),sendTracking("default-layout","cancel-layer"))}).on("keyup","#numRows, #numCols",function(b){b.stopPropagation();var c=document.getElementById("myCanvas"),e=c.getContext("2d"),f=Number($("#numRows").attr("value")),g=Number($("#numCols").attr("value"));if(d.clearCanvas(),f&&f>0&&g&&g>0)f>a.canvasHeight/4&&(f=a.canvasHeight/4),g>a.canvasWidth/4&&(g=a.canvasWidth/4),d.drawTable(a.canvasWidth,a.canvasHeight,f,g,e),$("#input-save").removeClass("disabled");else{var h=$(this),i=Number(h.attr("value"));(0===i||isNaN(i))&&(h.attr("value",""),$("#input-save").addClass("disabled"))}}).on("change","#checkbox-single-tab",function(){var a=$(this).attr("checked");f.processSingleTabSelection(a),sendTracking("single-tab",a?"checked":"unchecked")}).on("change","#checkbox-empty-tab",function(){var a=$(this).attr("checked");f.processEmptyTabSelection(a),sendTracking("empty-tab",a?"checked":"unchecked")}).on("click","#display-setting",function(){var a,b=$(".main-view");b.toggleClass("display-selected"),a=b.hasClass("display-selected"),f.processDisplayLayerSelection(a),sendTracking("display-settings",a?"opened":"closed")}).on("click","#display-setting-layer .switch-toggle input",function(a,b){var c=$(this).attr("id");$(".switch-toggle").removeClass("right-align left-align").addClass(c+"-align"),f.processAlignmentSelection(c),b||sendTracking("alignment",c)}).on("click","#update-apply",function(){f.hideUpdateModal()}).on("click","#promo-apply",function(){f.hidePromoModal()}).on("click","#warning-apply",function(){f.hideWarningModal()}).on("click",".signature a",function(){$(this).hasClass("rate-it")?sendTracking("info-links","rate-it"):sendTracking("info-links","author")}).on("click","a.keyboard-shortcuts",function(){chrome.tabs.create({url:"chrome://extensions/configureCommands"})})}(); \ No newline at end of file diff --git a/public/tabResize_background.js b/public/tabResize_background.js index 8c7a480..1601015 100644 --- a/public/tabResize_background.js +++ b/public/tabResize_background.js @@ -177,5 +177,129 @@ var util = { localStorage.setItem('lastTab',JSON.stringify(currentLastTab)); chrome.runtime.sendMessage('enable-undo'); } + }, + + //format the displayInfo + displayInfoFormatter: function(displayInfo,currentWindowInfo){ + var index = 0, + length = displayInfo.length, + info, + displayJSON = { //may need to check for some mirroring property, currently only one monitor is display when mirroring + displays: [], + primaryIndex: 0 + }; + + for(;index info.workArea.left && currentWindowInfo.left < info.workArea.left + info.workArea.width && currentWindowInfo.top > info.workArea.top && currentWindowInfo.top < info.workArea.top + info.workArea.height){ + displayJSON.primaryIndex = index; + } + + } + return displayJSON; + } + +}; + +function getResizeParams(command){ + var _command = command.split('-'); + return { + rows: Number(_command[2]), + cols: Number(_command[3]) + }; +} + +/** +* resizes tabs to the right of selected tab +* @param {number} rows number of rows in resize layout +* @param {number} cols number of columns in resize layout +*/ +function resizeTabs(displayInfo,rows,cols) { + + var resize = {}; + + resize.numRows = rows; + resize.numCols = cols; + + /* + * split width of screen equally depending on number of cells + * create new window unable to take non integers for width and height + */ + + var data = displayInfo; + + if(!$.isEmptyObject(data)){ + resize.width = Math.round(data.width/resize.numCols); + resize.height = Math.round(data.height/resize.numRows); + resize.offsetX = data.left; + resize.offsetY = data.top; + resize.fullWidth = data.width; + resize.fullHeight = data.height; + } else { + resize.width = Math.round(window.screen.availWidth/resize.numCols); + resize.height = Math.round(window.screen.availHeight/resize.numRows); + resize.offsetX = 0; + resize.offsetY = 0; + resize.fullWidth = window.screen.availWidth; + resize.fullHeight = window.screen.availHeight; } -}; \ No newline at end of file + + var that = this; + window.chrome.tabs.query({currentWindow: true}, + function (tabs) { + resize.tabsArray = tabs; + window.chrome.tabs.query({currentWindow: true, highlighted: true}, + function (tab) { + resize.currentTab = tab[0]; + var index = resize.currentTab.index; + if(tab.length > 1){ + resize.tabsArray = tab; + index = 0; + } + + var cb = function(){ + return util.processTabs(resize, resize.tabsArray, index, resize.currentTab.windowId, resize.singleTab, resize.currentTab.incognito); + }; + if(resize.singleTab){ + util.setUndoStorage(resize,resize.currentTab.index,resize.currentTab.windowId, resize.tabsArray.slice(index,index + 1), cb); + } else { + util.setUndoStorage(resize,resize.currentTab.index,resize.currentTab.windowId, resize.tabsArray.slice(index), cb); + } + + } + ); + } + ); +} + +chrome.commands.onCommand.addListener(function callback(command) { + + if(command.indexOf('tab-resize') === -1){ + return; + } + + if(chrome.system && chrome.system.display){ + chrome.system.display.getInfo(function(displayInfo){ + chrome.windows.getCurrent(function(windowInfo){ + + var currentWindowInfo = { + left: windowInfo.left + windowInfo.width - 100, + top: windowInfo.top + 100 + }; + + var displayJSON = util.displayInfoFormatter(displayInfo,currentWindowInfo), + resizeParams = getResizeParams(command); + + resizeTabs(displayJSON.displays[displayJSON.primaryIndex].workArea,resizeParams.rows,resizeParams.cols); + }); + }); + } +}); + diff --git a/public/tabResize_background.min.js b/public/tabResize_background.min.js index a7be203..c505f16 100644 --- a/public/tabResize_background.min.js +++ b/public/tabResize_background.min.js @@ -1 +1 @@ -localStorage.getItem("updateBadge")||(localStorage.setItem("updateBadge",0),chrome.browserAction.setBadgeText({text:"NEW"}),chrome.browserAction.setBadgeBackgroundColor({color:[221,129,39,255]})),localStorage.getItem("version")||localStorage.setItem("version","2.1.1");var util={createNewWindow:function(a,b,c,d,e,f,g){var h={left:b,top:c,width:d,height:e,incognito:f};a&&(h.tabId=$.isArray(a)?a[0]:a),window.chrome.windows.create(h,function(b){g(b,a)})},processTabs:function(a,b,c,d,e,f){for(var g,h,i,j=b.slice(c),k=0,l=0,m=j.length,n=a.numRows*a.numCols-m,o=this,p=function(b,c){!c&&a.emptyTab?(j.push(b.tabs[0]),l++,n===l&&o.updateUndoStorage(a,j)):c&&$.isArray(c)&&chrome.tabs.move(c.slice(1),{windowId:b.id,index:1})},q=0;q1){g=[];for(var s=k;m>s;s++)g.push(j[s].id)}o.createNewWindow(g,h,i,a.width,a.height,f,p)}k++}},setUndoStorage:function(a,b,c,d,e){window.chrome.windows.get(c,{},function(a){var f={left:a.left,top:a.top,width:a.width,height:a.height,focused:!0,state:"normal",incognito:a.incognito},g={};g.lastWindowInfo=f,g.lastTabIndex=b,g.lastWindowId=c;for(var h=[],i=0;i1&&(d.tabsArray=a,b=0);var c=function(){return util.processTabs(d,d.tabsArray,b,d.currentTab.windowId,d.singleTab,d.currentTab.incognito)};d.singleTab?util.setUndoStorage(d,d.currentTab.index,d.currentTab.windowId,d.tabsArray.slice(b,b+1),c):util.setUndoStorage(d,d.currentTab.index,d.currentTab.windowId,d.tabsArray.slice(b),c)})})}localStorage.getItem("updateBadge")||(localStorage.setItem("updateBadge",0),chrome.browserAction.setBadgeText({text:"NEW"}),chrome.browserAction.setBadgeBackgroundColor({color:[221,129,39,255]})),localStorage.getItem("version")||localStorage.setItem("version","2.1.1");var util={createNewWindow:function(a,b,c,d,e,f,g){var h={left:b,top:c,width:d,height:e,incognito:f};a&&(h.tabId=$.isArray(a)?a[0]:a),window.chrome.windows.create(h,function(b){g(b,a)})},processTabs:function(a,b,c,d,e,f){for(var g,h,i,j=b.slice(c),k=0,l=0,m=j.length,n=a.numRows*a.numCols-m,o=this,p=function(b,c){!c&&a.emptyTab?(j.push(b.tabs[0]),l++,n===l&&o.updateUndoStorage(a,j)):c&&$.isArray(c)&&chrome.tabs.move(c.slice(1),{windowId:b.id,index:1})},q=0;q1){g=[];for(var s=k;m>s;s++)g.push(j[s].id)}o.createNewWindow(g,h,i,a.width,a.height,f,p)}k++}},setUndoStorage:function(a,b,c,d,e){window.chrome.windows.get(c,{},function(a){var f={left:a.left,top:a.top,width:a.width,height:a.height,focused:!0,state:"normal",incognito:a.incognito},g={};g.lastWindowInfo=f,g.lastTabIndex=b,g.lastWindowId=c;for(var h=[],i=0;id;d++)c=a[d],c.id=String(d),f.displays.push({workArea:c.workArea,isEnabled:c.isEnabled,id:c.id}),b.left>c.workArea.left&&b.leftc.workArea.top&&b.top Date: Sun, 21 Dec 2014 22:00:37 -0800 Subject: [PATCH 2/7] Adding markup for scaled custom layout modal. --- css/style.less | 77 ++++++++++++++++++++++++++++++ index.html | 20 +++++++- js/custom_view.js | 49 +++++++++++++++---- js/main.js | 28 ++++++++++- js/utility.js | 25 ++++++++++ public/style.css | 2 +- public/tabResize.js | 102 ++++++++++++++++++++++++++++++++++++---- public/tabResize.min.js | 2 +- 8 files changed, 282 insertions(+), 23 deletions(-) diff --git a/css/style.less b/css/style.less index 1c8d14d..2657c37 100644 --- a/css/style.less +++ b/css/style.less @@ -532,6 +532,83 @@ button.disabled { .custom-view { + .modal-body, .modal-footer { + position: relative; + } + + .scaled-layout-orientation { + display: none; + position: absolute; + right: 21px; + top: 12px; + width: 200px; + height: 30px; + } + + .layout-option { + position: absolute; + left: 20px; + top: 6px; + width: 180px; + height: 25px; + + label { + font-size: 14px; + line-height: 25px; + } + } + + .scaled-input-container { + display: none; + position: absolute; + right: -3px; + top: 60px; + + .scaled-input { + display: inline-block; + width: 70px; + height: 70px; + border-radius: 3px; + margin-right: 35px; + border: 2px solid grey; + text-align: center; + font-size: 19px; + cursor: pointer; + line-height: 70px; + + &.selected { + background: #eee; + } + } + } + + &.scaled { + .scaled-layout-orientation { + display: block; + } + + .input-container { + visibility: hidden; + } + + .table-container { + .table-label-top, .table-label-left { + visibility: hidden; + } + } + + .scaled-input-container { + display: block; + } + + .modal-footer { + button.disabled { + pointer-events: auto; + opacity: 1; + } + } + } + .table-container { display: inline-block; position: relative; diff --git a/index.html b/index.html index 8e03677..1849b5d 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Resize - +
    @@ -55,6 +55,13 @@
    diff --git a/js/custom_view.js b/js/custom_view.js index 4fd756d..cd84352 100644 --- a/js/custom_view.js +++ b/js/custom_view.js @@ -22,6 +22,7 @@ */ showCustomMenu: function() { this.clearCustomValues(); + $('.layout-option #fixed').trigger('click'); $('.main-view').addClass('inactive'); $('.custom-view').removeClass('hidden').trigger('show'); $('.custom-view input.row').focus(); @@ -40,23 +41,53 @@ * performs save of new layout */ handleCustomSave: function(){ - var customRows = $('#numRows').val(), - customCols = $('#numCols').val(); + var option = $('.custom-view').hasClass('scaled') ? 'scaled' : 'fixed'; - this.clearCustomValues(); + if(option === 'fixed'){ + var customRows = $('#numRows').val(), + customCols = $('#numCols').val(); + + this.clearCustomValues(); - if(!Number(customRows) || !Number(customCols) || Number(customRows) < 1 || Number(customCols) < 1){ - //window.alert('Please enter valid input values.'); + if(!Number(customRows) || !Number(customCols) || Number(customRows) < 1 || Number(customCols) < 1){ + //window.alert('Please enter valid input values.'); + } else { + var layoutType = customRows + 'x' + customCols; + resize.layout.addLayout(layoutType); + resize.layout.processTabInfo($('.layout-' + layoutType)); + this.hideCustomMenu(); + } } else { - var layoutType = customRows + 'x' + customCols; - resize.layout.addLayout(layoutType); - resize.layout.processTabInfo($('.layout-' + layoutType)); - this.hideCustomMenu(); + var orientation = getScaledOrientation(), + option = getScaledOption(); } + + }, + + /** + * shows the scaled menu view + */ + showScaledMenu: function(){ + var orientation = getScaledOrientation(), + option = getScaledOption(), + canvas=document.getElementById("myCanvas"), + context=canvas.getContext("2d"); + + resize.util.clearCanvas(); + + resize.util.drawScaledTable(resize.canvasWidth, resize.canvasHeight, option[0], orientation, context); } }; + function getScaledOrientation(){ + return $('#horizontal-scaled').attr('checked') ? 'horizontal' : 'vertical'; + } + + function getScaledOption(){ + return $('.scaled-input.selected').text().split(':'); + } + window.resize.custom_view = custom_view; })(); \ No newline at end of file diff --git a/js/main.js b/js/main.js index 31001eb..8293f87 100644 --- a/js/main.js +++ b/js/main.js @@ -123,7 +123,7 @@ sendTracking('display-settings',isDisplayed ? "opened" : "closed"); }).on('click','#display-setting-layer .switch-toggle input',function(evt,deferTracking){ var alignment = $(this).attr('id'); - $('.switch-toggle').removeClass('right-align left-align').addClass(alignment + '-align'); + $('#display-setting-layer .switch-toggle').removeClass('right-align left-align').addClass(alignment + '-align'); options.processAlignmentSelection(alignment); if(!deferTracking){ sendTracking('alignment',alignment); @@ -142,6 +142,32 @@ } }).on('click','a.keyboard-shortcuts', function(){ chrome.tabs.create({url:'chrome://extensions/configureCommands'}); + }).on('click','.custom-view .switch-toggle.layout-option input', function(){ + var option = $(this).attr('id'), + changed = false, + $customView = $('.custom-view'); + + if(option === 'scaled' && !$customView.hasClass('scaled') || option !== 'scaled' && $customView.hasClass('scaled')){ + changed = true; + } + + $customView[(option === 'scaled') ? 'addClass' : 'removeClass']('scaled'); + + if(changed){ + util.clearCanvas(); + custom_view.clearCustomValues(); + if(option === 'scaled'){ + custom_view.showScaledMenu(); + } + } + + }).on('click', '.custom-view .scaled-input', function(){ + var $this = $(this); + $('.custom-view .scaled-input').removeClass('selected'); + $this.addClass('selected'); + custom_view.showScaledMenu(); + }).on('click','.custom-view .switch-toggle.scaled-layout-orientation input', function(){ + custom_view.showScaledMenu(); }); })(); \ No newline at end of file diff --git a/js/utility.js b/js/utility.js index 1e21e7a..e4fc841 100644 --- a/js/utility.js +++ b/js/utility.js @@ -45,6 +45,31 @@ context.stroke(); }, + /** + * draws a scaled table using canvas + * @param {Number} width - width of table + * @param {Number} height - height of table + * @param {Number} scale - percentage of first col/row + * @param {String} orientation - "vertical" or "horizontal" + * @param {CanvasRenderingContext2D} context - 2D context of canvas object + */ + drawScaledTable: function(width, height, scale, orientation, context) { + + context.beginPath(); + + var offSet = width*(0.1)*scale; + + if(orientation === 'horizontal'){ + context.moveTo(offSet,0); + context.lineTo(offSet,width); + } else { + context.moveTo(0,offSet); + context.lineTo(height,offSet); + } + + context.closePath(); + context.stroke(); + }, /** * clears the canvas of previous drawing diff --git a/public/style.css b/public/style.css index 7c6dced..979f718 100644 --- a/public/style.css +++ b/public/style.css @@ -1 +1 @@ -html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}[type=checkbox]:not(:checked),[type=checkbox]:checked{position:absolute;left:-9999px}[type=checkbox]:not(:checked)+span,[type=checkbox]:checked+span{position:relative;padding-left:25px;cursor:pointer}[type=checkbox]:not(:checked)+span:before,[type=checkbox]:checked+span:before{content:'';position:absolute;left:0;top:0;width:17px;height:17px;border:1px solid #aaa;background:#f8f8f8;border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,.3)}[type=checkbox]:not(:checked)+span:after,[type=checkbox]:checked+span:after{content:'\2713';position:absolute;top:-8px;left:1px;font-size:25px;color:#000}[type=checkbox]:not(:checked)+span:after{opacity:0;transform:scale(0)}[type=checkbox]:checked+span:after{opacity:1;transform:scale(1)}[type=checkbox]:disabled:not(:checked)+span:before,[type=checkbox]:disabled:checked+span:before{box-shadow:none;border-color:#bbb;background-color:#ddd}[type=checkbox]:disabled:checked+span:after{color:#999}[type=checkbox]:disabled+span{color:#aaa}.switch-toggle a,.switch-light span span{display:none}.switch-toggle{display:block;height:30px;position:relative;padding:0!important}.switch-toggle *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.switch-toggle a{display:block;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;transition:all .3s ease-out}.switch-toggle label,.switch-toggle>span{line-height:30px;vertical-align:middle}.switch-toggle input{position:absolute;opacity:0}.switch-toggle input+label{position:relative;top:static;right:static;left:static;display:inherit;width:50%;z-index:2;float:left;height:100%;margin:0;text-align:center;cursor:pointer}.switch-toggle input+label:hover{background:#b4e2f6;box-shadow:inset 0 0 0 3px #28a2d5;-webkit-box-shadow:inset 0 0 0 3px #28a2d5}.switch-toggle a{position:absolute;top:0;right:static;left:0;display:inherit;width:50%;z-index:1;padding:0;height:100%}.switch-toggle input:last-of-type:checked~a{left:50%}.switch-candy{background-color:#fff;border:none;border-radius:6px;color:#fff;text-align:center;border:2px solid gray}.switch-candy label{color:#000}.switch-candy input:checked+label{color:#000;cursor:default}.switch-candy input:checked+label:hover{background:0 0;box-shadow:inset 0 0 0 3px transparent;-webkit-box-shadow:inset 0 0 0 3px transparent}.switch-candy a{background-color:#eee;border:1px solid gray;border-radius:3px;background-image:-webkit-linear-gradient(top,rgba(255,255,255,.2),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(255,255,255,.2),rgba(0,0,0,0))}.switch-candy>span{color:gray;text-shadow:none}.switch-candy span{color:#fff}html,body{background:#fff;min-width:630px}.hidden{display:none}.inactive{opacity:.2;pointer-events:none}.active{display:block}strong,.bold{font-weight:700}a{text-decoration:none}a:hover{text-decoration:underline}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;font-size:18px;box-sizing:border-box}.glyphicon.glyphicon-refresh:before{content:"\e031";box-sizing:border-box}.glyphicon.glyphicon-plus{top:-1px}.glyphicon.glyphicon-plus:before{content:"\2b";box-sizing:border-box}.glyphicon.glyphicon-chevron-down:before{content:"\e114"}.icon{height:18px;width:18px;position:relative;overflow:hidden;display:inline-block}.icon.icon-screen{width:32px;height:25px}.icon .screen{width:28px;height:16px;border:2px solid #333;background:#eee}.icon .screen:before{position:absolute;content:'';width:10px;height:3px;background:#333;bottom:2px;left:11px}.icon .screen:after{position:absolute;content:'';width:22px;height:2px;background:#333;bottom:0;left:5px}input{font-family:Verdana,Geneva,sans-serif;font-size:14px}button{outline:0;color:#000;padding:5px 10px;font-size:13px;border-radius:3px;font-family:Verdana,Geneva,sans-serif;background:-webkit-linear-gradient(top,#fff 0,#f1f1f1 50%,#f6f6f6 100%);border:1px solid #707070}button:hover{background:-webkit-linear-gradient(top,#eee 0,#ccc 100%);cursor:pointer;box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070}button.primary{border:1px solid #707070;color:#fff;border:1px solid #333;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%)}button.primary:hover{box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 100%,#1c1c1c 100%,#2b2b2b 100%,#111 100%,#2c2c2c 100%,#000 100%,#131313 100%)}button.disabled{opacity:.5;pointer-events:none}.modal-box{font-family:Verdana,Geneva,sans-serif;background:#fff;border:4px solid #7C7C7C;box-shadow:0 0 4px #7c7c7c inset;-webkit-box-shadow:0 0 4px #7c7c7c inset;border-radius:8px;position:absolute;top:50%;left:50%}.modal-box .modal-body{border-radius:4px 4px 0 0;padding:2px 10px 0 10px;width:400px;height:144px}.modal-box .modal-footer{border-radius:0 0 4px 4px;padding:0 10px;border-top:1px solid silver;overflow:hidden;background:#E7F3FD}.modal-box .modal-footer .button{float:right;margin:6px 10px 6px 0}.display-setting-indicator{display:none;width:0;height:0;position:absolute;z-index:2;bottom:0;left:80px;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid silver}.main-view.display-selected .display-setting-indicator{display:block}.main-view.display-selected .resize-footer{border-bottom-width:7px}.main-view.display-selected #display-setting-layer{display:block}.main-view.display-selected #display-setting{background:#dcf0f6}.main-view.display-selected #display-setting:hover,.main-view.display-selected #display-setting:focus{background:#b4e2f6}.main-view.display-selected .glyphicon-chevron-down:before{content:"\e113"}.main-view{padding-top:4px;overflow:hidden}.main-view .resize-container{padding:0 5px;height:156px;overflow-y:auto}.main-view .resize-container .resize-selector-container{width:127px;height:127px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:1px solid transparent;border-radius:4px;padding:0 0 15px 15px;float:right}.main-view .resize-container .resize-selector-container .close-button{width:18px;height:18px;border-radius:10px;cursor:pointer;background:url(../images/sprites/close.png);position:absolute;top:2px;right:2px;display:none}.main-view .resize-container .resize-selector-container .layout-title{position:absolute;font-weight:700;font-size:16px;font-family:Verdana,Geneva,sans-serif}.main-view .resize-container .resize-selector-container .resize-selector{width:100px;height:100px;position:absolute;top:21px;border-radius:4px;border:5px solid #7C7C7C}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer{position:relative;display:inline-block;float:left;top:0;left:0}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer .fav-icon{position:absolute;background-repeat:no-repeat;background-size:27px 27px;width:27px;height:27px;background-image:url(../images/icons/defaultFavIcon.png)}.main-view .resize-container .resize-selector-container:hover{cursor:pointer;border:1px solid #D3E3F7;background:-webkit-gradient(linear,left top,left bottom,from(#dcf0f6),to(#f4f8fe));-webkit-transition:all 200ms ease-in}.main-view .resize-container .resize-selector-container:hover .layout-1x1{background:url(../images/sprites/layouts.png) 0 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x2{background:url(../images/sprites/layouts.png) -100px 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x3{background:url(../images/sprites/layouts.png) -200px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x1{background:url(../images/sprites/layouts.png) -300px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x2{background:url(../images/sprites/layouts.png) -400px 100px}.main-view .resize-container .resize-selector-container:hover .layout-3x1{background:url(../images/sprites/layouts.png) -500px 100px}.main-view .resize-container .resize-selector-container:hover .layout-default{background:url(../images/sprites/layouts.png) -600px 100px}.main-view .resize-container .resize-selector-container:hover .close-button{display:block}.main-view .resize-container .resize-selector-container:hover .close-button:hover{background:url(../images/sprites/close_hover.png)}.main-view .resize-footer{border:3px solid silver;overflow:hidden;background:#dcf0f6;clear:right;font-family:Verdana,Geneva,sans-serif}.main-view .resize-footer .footer-wrap{display:inline-block;overflow:hidden}.main-view .resize-footer .footer-wrap.button-wrap{padding:3px 0 0 2px}.main-view .resize-footer .footer-wrap.monitor-wrap{float:left;padding:6px 12px 5px 8px;border-right:3px solid silver;cursor:pointer;background:#fff;position:relative}.main-view .resize-footer .footer-wrap.monitor-wrap:hover,.main-view .resize-footer .footer-wrap.monitor-wrap:focus{background:#b4e2f6}.main-view .resize-footer .footer-wrap.monitor-wrap .display-setting-title{vertical-align:top;font-size:15px;position:relative;top:5px;padding:0 13px 0 8px;border-right:1px solid silver}.main-view .resize-footer .footer-wrap.monitor-wrap .glyphicon{top:-3px;left:3px}.main-view .resize-footer .resize-undo{margin-left:12px}.main-view .resize-footer #custom-layout{padding:4px 15px 1px 15px;float:left}.main-view .resize-footer #default-configuration{padding:3px 15px 2px 15px;float:left}.main-view .resize-footer .checkbox-container{font-family:Verdana,Geneva,sans-serif;overflow:hidden;display:inline-block;border-left:3px solid silver;float:right;background:#fff}.main-view .resize-footer .checkbox-container label{font-size:14px;display:block;padding:11px 7px 13px 10px;cursor:pointer}.main-view .resize-footer .checkbox-container label.selected{background:#dcf0f6}.main-view .resize-footer .checkbox-container label:hover{background:#b4e2f6}.main-view .resize-footer .checkbox-container label input{border-radius:3px;-webkit-border-radius:3px;vertical-align:top;width:18px;height:18px}.main-view .resize-footer .checkbox-container label span{position:relative;top:1px;left:-2px}#display-setting-layer{display:none;position:relative;bottom:0;margin:100px 50px 25px 50px;font-family:Verdana,Geneva,sans-serif}#display-setting-layer .signature{position:absolute;bottom:-22px;font-size:13px;right:-45px;font-weight:700}#display-setting-layer .signature a{color:#005579;padding-right:5px}#display-setting-layer .signature .rate-it,#display-setting-layer .signature .keyboard-shortcuts{border-left:1px solid silver;padding-left:5px;padding-right:5px}#display-setting-layer .switch-toggle{top:-80px;left:0;width:100%}#display-setting-layer .switch-toggle.right-align a{border-left-width:2px}#display-setting-layer .switch-toggle.left-align a{border-right-width:2px}#display-setting-layer .display-settings-divider{width:630px;height:1px;position:absolute;top:-22px;left:-50px;background:#000;background:-webkit-gradient(linear,0 0,100% 0,from(#fff),to(#fff),color-stop(50%,#000))}#display-setting-layer .display-entry{position:absolute;border:1px solid grey;border-radius:3px;-webkit-border-radius:3px;box-shadow:inset 0 0 0 2px gray;-webkit-box-shadow:inset 0 0 0 2px gray;background:#fff;cursor:pointer;z-index:1}#display-setting-layer .display-entry.selected{z-index:2;background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray;cursor:default}#display-setting-layer .display-entry.selected:hover{background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray}#display-setting-layer .display-entry:hover{z-index:3;background:#b4e2f6;border-color:#28a2d5;box-shadow:inset 0 0 0 4px #28a2d5;-webkit-box-shadow:inset 0 0 0 4px #28a2d5}#display-setting-layer .display-entry .display-meta{position:relative;top:10px;left:10px}.custom-view .table-container{display:inline-block;position:relative;width:145px;height:145px;left:15px}.custom-view .table-container .table-label-top{position:absolute;left:48px;top:3px}.custom-view .table-container .table-label-left{position:absolute;top:69px;left:-7px;-webkit-transform:rotate(-90deg) translate3d(0,0,0)}.custom-view .table-container .table-cell-container{border:7px solid #7C7C7C;border-radius:4px;width:100px;height:100px;position:absolute;top:25px;left:25px}.custom-view .table-container .table-cell-container canvas{background:#B4E2F6}.custom-view .input-container{display:inline-block;position:relative;top:-25px;left:34px}.custom-view .input-container .label-container{margin-bottom:10px;overflow:hidden}.custom-view .input-container .label-container label{height:26px;float:left;margin-right:11px;line-height:26px}.custom-view .input-container .label-container .custom-value{float:right;text-align:center;border-radius:2px;border:1px solid #7C7C7C;width:90px;outline:0;padding:4px}.custom-view .input-container .label-container .custom-value:focus{border:1px solid #599EFF;box-shadow:#599EFF 0 0 2px 1px inset}.confirmation-modal .modal-body{height:75px;padding-top:35px}.confirmation-modal .modal-body .warning-sprite{width:40px;height:40px;background:url(../images/sprites/warning.png);display:inline-block;float:left;margin-left:20px;margin-right:10px}.confirmation-modal .modal-body .message{width:304px;display:inline-block;float:left}.info-modal.modal-box{display:none;z-index:5}.info-modal.modal-box .modal-body{width:550px;height:400px}.info-modal.modal-box .modal-body .header-title-wrap{margin:15px auto;text-align:center}.info-modal.modal-box .modal-body .header-title-wrap .icon-48{background:url(../images/icons/icon48.png);width:48px;height:48px;display:inline-block}.info-modal.modal-box .modal-body .header-title-wrap .header-title{display:inline-block;vertical-align:top;font-size:20px;margin:16px 16px 16px 10px}.info-modal.modal-box .modal-body .update-list-header{margin:0 0 10px 25px;font-style:italic;font-size:15px}.info-modal.modal-box .modal-body ul.update-list{margin:0 28px 0 45px;font-size:15px}.info-modal.modal-box .modal-body ul.update-list li.update-entry{list-style:disc;margin-bottom:10px;line-height:18px}.info-modal.modal-box .modal-body .update-list-footer{margin:14px 20px 0 25px;font-size:15px;line-height:16px}.info-modal.modal-box .modal-body .additional-message{font-size:15px;margin:10px 20px 5px 25px;line-height:16px}.info-modal.modal-box .modal-body a{color:#0181eb}.info-modal.modal-box .modal-body a:visited{color:#0181eb}.info-modal.modal-box .modal-footer{padding:0 36px;border:none;background:#fff}.info-modal.modal-box .modal-footer button{width:100%;margin:12px auto;float:none;height:40px;font-size:20px;padding-bottom:10px;background:-webkit-linear-gradient(top,#4096ee 0,#4096ee 100%)}#promo-modal .modal-body .header-title-wrap .icon-48{background:url(../images/icons/promo/icon48.png)}body.update #update-modal{display:block}body.update .main-view{min-height:500px}body.promo #promo-modal{display:block}body.promo .main-view{min-height:500px}body.warning #warning-modal{display:block}body.warning .main-view{min-height:500px}body.align-right .tab-layer{float:right!important}body.empty-tab-not-selected .tab-layer{background:#fff}body.empty-tab-not-selected .tab-layer .fav-icon{visibility:hidden}body.empty-tab-not-selected .tab-layer.valid-tab{background:0 0}body.empty-tab-not-selected .tab-layer.valid-tab .fav-icon{visibility:visible}body.single-tab-selected .tab-layer{background:#fff!important}body.single-tab-selected .tab-layer .fav-icon{visibility:hidden!important}body.single-tab-selected .tab-layer.tab-layer-1{background:transparent!important}body.single-tab-selected .tab-layer.tab-layer-1 .fav-icon{visibility:visible!important}.layout-1x1{background:url(../images/sprites/layouts.png) 0 0}.layout-1x1 .tab-layer{width:100%;height:100%}.layout-1x1 .tab-layer .fav-icon{left:35px;top:35px}.layout-1x2{background:url(../images/sprites/layouts.png) -100px 0}.layout-1x2 .tab-layer{width:50%;height:100%}.layout-1x2 .tab-layer .fav-icon{left:11px;top:35px}.layout-1x3{background:url(../images/sprites/layouts.png) -200px 0}.layout-1x3 .tab-layer{width:33.3%;height:100%}.layout-1x3 .tab-layer .fav-icon{left:8px;top:39px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-2x1{background:url(../images/sprites/layouts.png) -300px 0}.layout-2x1 .tab-layer{width:100%;height:50%}.layout-2x1 .tab-layer .fav-icon{left:35px;top:16px}.layout-2x2{background:url(../images/sprites/layouts.png) -400px 0}.layout-2x2 .tab-layer{width:50%;height:50%}.layout-2x2 .tab-layer .fav-icon{top:16px;left:11px}.layout-3x1{background:url(../images/sprites/layouts.png) -500px 0}.layout-3x1 .tab-layer{width:100%;height:33.3%}.layout-3x1 .tab-layer .fav-icon{top:12px;left:42px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-default{background:url(../images/sprites/layouts.png) -600px 0}.layout-default .tab-layer{display:none!important}.sortable-placeholder{width:113px;height:113px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:7px dashed darkgrey;border-radius:4px;padding:0 0 15px 15px;float:right}#update-modal.partial-update .update-entry{display:none}#update-modal.partial-update .update-entry.latest{display:block;margin-bottom:50px}#update-modal.partial-update .update-list-footer{display:none}#update-modal.partial-update .modal-body{height:350px}#warning-modal{z-index:10}#warning-modal .header-title{border-bottom:2px solid grey;padding-bottom:10px;margin-bottom:0}#warning-modal .update-entry{list-style:none;line-height:22px;font-size:16px;margin-bottom:20px} \ No newline at end of file +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}[type=checkbox]:not(:checked),[type=checkbox]:checked{position:absolute;left:-9999px}[type=checkbox]:not(:checked)+span,[type=checkbox]:checked+span{position:relative;padding-left:25px;cursor:pointer}[type=checkbox]:not(:checked)+span:before,[type=checkbox]:checked+span:before{content:'';position:absolute;left:0;top:0;width:17px;height:17px;border:1px solid #aaa;background:#f8f8f8;border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,.3)}[type=checkbox]:not(:checked)+span:after,[type=checkbox]:checked+span:after{content:'\2713';position:absolute;top:-8px;left:1px;font-size:25px;color:#000}[type=checkbox]:not(:checked)+span:after{opacity:0;transform:scale(0)}[type=checkbox]:checked+span:after{opacity:1;transform:scale(1)}[type=checkbox]:disabled:not(:checked)+span:before,[type=checkbox]:disabled:checked+span:before{box-shadow:none;border-color:#bbb;background-color:#ddd}[type=checkbox]:disabled:checked+span:after{color:#999}[type=checkbox]:disabled+span{color:#aaa}.switch-toggle a,.switch-light span span{display:none}.switch-toggle{display:block;height:30px;position:relative;padding:0!important}.switch-toggle *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.switch-toggle a{display:block;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;transition:all .3s ease-out}.switch-toggle label,.switch-toggle>span{line-height:30px;vertical-align:middle}.switch-toggle input{position:absolute;opacity:0}.switch-toggle input+label{position:relative;top:static;right:static;left:static;display:inherit;width:50%;z-index:2;float:left;height:100%;margin:0;text-align:center;cursor:pointer}.switch-toggle input+label:hover{background:#b4e2f6;box-shadow:inset 0 0 0 3px #28a2d5;-webkit-box-shadow:inset 0 0 0 3px #28a2d5}.switch-toggle a{position:absolute;top:0;right:static;left:0;display:inherit;width:50%;z-index:1;padding:0;height:100%}.switch-toggle input:last-of-type:checked~a{left:50%}.switch-candy{background-color:#fff;border:none;border-radius:6px;color:#fff;text-align:center;border:2px solid gray}.switch-candy label{color:#000}.switch-candy input:checked+label{color:#000;cursor:default}.switch-candy input:checked+label:hover{background:0 0;box-shadow:inset 0 0 0 3px transparent;-webkit-box-shadow:inset 0 0 0 3px transparent}.switch-candy a{background-color:#eee;border:1px solid gray;border-radius:3px;background-image:-webkit-linear-gradient(top,rgba(255,255,255,.2),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(255,255,255,.2),rgba(0,0,0,0))}.switch-candy>span{color:gray;text-shadow:none}.switch-candy span{color:#fff}html,body{background:#fff;min-width:630px}.hidden{display:none}.inactive{opacity:.2;pointer-events:none}.active{display:block}strong,.bold{font-weight:700}a{text-decoration:none}a:hover{text-decoration:underline}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;font-size:18px;box-sizing:border-box}.glyphicon.glyphicon-refresh:before{content:"\e031";box-sizing:border-box}.glyphicon.glyphicon-plus{top:-1px}.glyphicon.glyphicon-plus:before{content:"\2b";box-sizing:border-box}.glyphicon.glyphicon-chevron-down:before{content:"\e114"}.icon{height:18px;width:18px;position:relative;overflow:hidden;display:inline-block}.icon.icon-screen{width:32px;height:25px}.icon .screen{width:28px;height:16px;border:2px solid #333;background:#eee}.icon .screen:before{position:absolute;content:'';width:10px;height:3px;background:#333;bottom:2px;left:11px}.icon .screen:after{position:absolute;content:'';width:22px;height:2px;background:#333;bottom:0;left:5px}input{font-family:Verdana,Geneva,sans-serif;font-size:14px}button{outline:0;color:#000;padding:5px 10px;font-size:13px;border-radius:3px;font-family:Verdana,Geneva,sans-serif;background:-webkit-linear-gradient(top,#fff 0,#f1f1f1 50%,#f6f6f6 100%);border:1px solid #707070}button:hover{background:-webkit-linear-gradient(top,#eee 0,#ccc 100%);cursor:pointer;box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070}button.primary{border:1px solid #707070;color:#fff;border:1px solid #333;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%)}button.primary:hover{box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 100%,#1c1c1c 100%,#2b2b2b 100%,#111 100%,#2c2c2c 100%,#000 100%,#131313 100%)}button.disabled{opacity:.5;pointer-events:none}.modal-box{font-family:Verdana,Geneva,sans-serif;background:#fff;border:4px solid #7C7C7C;box-shadow:0 0 4px #7c7c7c inset;-webkit-box-shadow:0 0 4px #7c7c7c inset;border-radius:8px;position:absolute;top:50%;left:50%}.modal-box .modal-body{border-radius:4px 4px 0 0;padding:2px 10px 0 10px;width:400px;height:144px}.modal-box .modal-footer{border-radius:0 0 4px 4px;padding:0 10px;border-top:1px solid silver;overflow:hidden;background:#E7F3FD}.modal-box .modal-footer .button{float:right;margin:6px 10px 6px 0}.display-setting-indicator{display:none;width:0;height:0;position:absolute;z-index:2;bottom:0;left:80px;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid silver}.main-view.display-selected .display-setting-indicator{display:block}.main-view.display-selected .resize-footer{border-bottom-width:7px}.main-view.display-selected #display-setting-layer{display:block}.main-view.display-selected #display-setting{background:#dcf0f6}.main-view.display-selected #display-setting:hover,.main-view.display-selected #display-setting:focus{background:#b4e2f6}.main-view.display-selected .glyphicon-chevron-down:before{content:"\e113"}.main-view{padding-top:4px;overflow:hidden}.main-view .resize-container{padding:0 5px;height:156px;overflow-y:auto}.main-view .resize-container .resize-selector-container{width:127px;height:127px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:1px solid transparent;border-radius:4px;padding:0 0 15px 15px;float:right}.main-view .resize-container .resize-selector-container .close-button{width:18px;height:18px;border-radius:10px;cursor:pointer;background:url(../images/sprites/close.png);position:absolute;top:2px;right:2px;display:none}.main-view .resize-container .resize-selector-container .layout-title{position:absolute;font-weight:700;font-size:16px;font-family:Verdana,Geneva,sans-serif}.main-view .resize-container .resize-selector-container .resize-selector{width:100px;height:100px;position:absolute;top:21px;border-radius:4px;border:5px solid #7C7C7C}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer{position:relative;display:inline-block;float:left;top:0;left:0}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer .fav-icon{position:absolute;background-repeat:no-repeat;background-size:27px 27px;width:27px;height:27px;background-image:url(../images/icons/defaultFavIcon.png)}.main-view .resize-container .resize-selector-container:hover{cursor:pointer;border:1px solid #D3E3F7;background:-webkit-gradient(linear,left top,left bottom,from(#dcf0f6),to(#f4f8fe));-webkit-transition:all 200ms ease-in}.main-view .resize-container .resize-selector-container:hover .layout-1x1{background:url(../images/sprites/layouts.png) 0 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x2{background:url(../images/sprites/layouts.png) -100px 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x3{background:url(../images/sprites/layouts.png) -200px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x1{background:url(../images/sprites/layouts.png) -300px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x2{background:url(../images/sprites/layouts.png) -400px 100px}.main-view .resize-container .resize-selector-container:hover .layout-3x1{background:url(../images/sprites/layouts.png) -500px 100px}.main-view .resize-container .resize-selector-container:hover .layout-default{background:url(../images/sprites/layouts.png) -600px 100px}.main-view .resize-container .resize-selector-container:hover .close-button{display:block}.main-view .resize-container .resize-selector-container:hover .close-button:hover{background:url(../images/sprites/close_hover.png)}.main-view .resize-footer{border:3px solid silver;overflow:hidden;background:#dcf0f6;clear:right;font-family:Verdana,Geneva,sans-serif}.main-view .resize-footer .footer-wrap{display:inline-block;overflow:hidden}.main-view .resize-footer .footer-wrap.button-wrap{padding:3px 0 0 2px}.main-view .resize-footer .footer-wrap.monitor-wrap{float:left;padding:6px 12px 5px 8px;border-right:3px solid silver;cursor:pointer;background:#fff;position:relative}.main-view .resize-footer .footer-wrap.monitor-wrap:hover,.main-view .resize-footer .footer-wrap.monitor-wrap:focus{background:#b4e2f6}.main-view .resize-footer .footer-wrap.monitor-wrap .display-setting-title{vertical-align:top;font-size:15px;position:relative;top:5px;padding:0 13px 0 8px;border-right:1px solid silver}.main-view .resize-footer .footer-wrap.monitor-wrap .glyphicon{top:-3px;left:3px}.main-view .resize-footer .resize-undo{margin-left:12px}.main-view .resize-footer #custom-layout{padding:4px 15px 1px 15px;float:left}.main-view .resize-footer #default-configuration{padding:3px 15px 2px 15px;float:left}.main-view .resize-footer .checkbox-container{font-family:Verdana,Geneva,sans-serif;overflow:hidden;display:inline-block;border-left:3px solid silver;float:right;background:#fff}.main-view .resize-footer .checkbox-container label{font-size:14px;display:block;padding:11px 7px 13px 10px;cursor:pointer}.main-view .resize-footer .checkbox-container label.selected{background:#dcf0f6}.main-view .resize-footer .checkbox-container label:hover{background:#b4e2f6}.main-view .resize-footer .checkbox-container label input{border-radius:3px;-webkit-border-radius:3px;vertical-align:top;width:18px;height:18px}.main-view .resize-footer .checkbox-container label span{position:relative;top:1px;left:-2px}#display-setting-layer{display:none;position:relative;bottom:0;margin:100px 50px 25px 50px;font-family:Verdana,Geneva,sans-serif}#display-setting-layer .signature{position:absolute;bottom:-22px;font-size:13px;right:-45px;font-weight:700}#display-setting-layer .signature a{color:#005579;padding-right:5px}#display-setting-layer .signature .rate-it,#display-setting-layer .signature .keyboard-shortcuts{border-left:1px solid silver;padding-left:5px;padding-right:5px}#display-setting-layer .switch-toggle{top:-80px;left:0;width:100%}#display-setting-layer .switch-toggle.right-align a{border-left-width:2px}#display-setting-layer .switch-toggle.left-align a{border-right-width:2px}#display-setting-layer .display-settings-divider{width:630px;height:1px;position:absolute;top:-22px;left:-50px;background:#000;background:-webkit-gradient(linear,0 0,100% 0,from(#fff),to(#fff),color-stop(50%,#000))}#display-setting-layer .display-entry{position:absolute;border:1px solid grey;border-radius:3px;-webkit-border-radius:3px;box-shadow:inset 0 0 0 2px gray;-webkit-box-shadow:inset 0 0 0 2px gray;background:#fff;cursor:pointer;z-index:1}#display-setting-layer .display-entry.selected{z-index:2;background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray;cursor:default}#display-setting-layer .display-entry.selected:hover{background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray}#display-setting-layer .display-entry:hover{z-index:3;background:#b4e2f6;border-color:#28a2d5;box-shadow:inset 0 0 0 4px #28a2d5;-webkit-box-shadow:inset 0 0 0 4px #28a2d5}#display-setting-layer .display-entry .display-meta{position:relative;top:10px;left:10px}.custom-view .modal-body,.custom-view .modal-footer{position:relative}.custom-view .scaled-layout-orientation{display:none;position:absolute;right:21px;top:12px;width:200px;height:30px}.custom-view .layout-option{position:absolute;left:20px;top:6px;width:180px;height:25px}.custom-view .layout-option label{font-size:14px;line-height:25px}.custom-view .scaled-input-container{display:none;position:absolute;right:-3px;top:60px}.custom-view .scaled-input-container .scaled-input{display:inline-block;width:70px;height:70px;border-radius:3px;margin-right:35px;border:2px solid grey;text-align:center;font-size:19px;cursor:pointer;line-height:70px}.custom-view .scaled-input-container .scaled-input.selected{background:#eee}.custom-view.scaled .scaled-layout-orientation{display:block}.custom-view.scaled .input-container{visibility:hidden}.custom-view.scaled .table-container .table-label-top,.custom-view.scaled .table-container .table-label-left{visibility:hidden}.custom-view.scaled .scaled-input-container{display:block}.custom-view.scaled .modal-footer button.disabled{pointer-events:auto;opacity:1}.custom-view .table-container{display:inline-block;position:relative;width:145px;height:145px;left:15px}.custom-view .table-container .table-label-top{position:absolute;left:48px;top:3px}.custom-view .table-container .table-label-left{position:absolute;top:69px;left:-7px;-webkit-transform:rotate(-90deg) translate3d(0,0,0)}.custom-view .table-container .table-cell-container{border:7px solid #7C7C7C;border-radius:4px;width:100px;height:100px;position:absolute;top:25px;left:25px}.custom-view .table-container .table-cell-container canvas{background:#B4E2F6}.custom-view .input-container{display:inline-block;position:relative;top:-25px;left:34px}.custom-view .input-container .label-container{margin-bottom:10px;overflow:hidden}.custom-view .input-container .label-container label{height:26px;float:left;margin-right:11px;line-height:26px}.custom-view .input-container .label-container .custom-value{float:right;text-align:center;border-radius:2px;border:1px solid #7C7C7C;width:90px;outline:0;padding:4px}.custom-view .input-container .label-container .custom-value:focus{border:1px solid #599EFF;box-shadow:#599EFF 0 0 2px 1px inset}.confirmation-modal .modal-body{height:75px;padding-top:35px}.confirmation-modal .modal-body .warning-sprite{width:40px;height:40px;background:url(../images/sprites/warning.png);display:inline-block;float:left;margin-left:20px;margin-right:10px}.confirmation-modal .modal-body .message{width:304px;display:inline-block;float:left}.info-modal.modal-box{display:none;z-index:5}.info-modal.modal-box .modal-body{width:550px;height:400px}.info-modal.modal-box .modal-body .header-title-wrap{margin:15px auto;text-align:center}.info-modal.modal-box .modal-body .header-title-wrap .icon-48{background:url(../images/icons/icon48.png);width:48px;height:48px;display:inline-block}.info-modal.modal-box .modal-body .header-title-wrap .header-title{display:inline-block;vertical-align:top;font-size:20px;margin:16px 16px 16px 10px}.info-modal.modal-box .modal-body .update-list-header{margin:0 0 10px 25px;font-style:italic;font-size:15px}.info-modal.modal-box .modal-body ul.update-list{margin:0 28px 0 45px;font-size:15px}.info-modal.modal-box .modal-body ul.update-list li.update-entry{list-style:disc;margin-bottom:10px;line-height:18px}.info-modal.modal-box .modal-body .update-list-footer{margin:14px 20px 0 25px;font-size:15px;line-height:16px}.info-modal.modal-box .modal-body .additional-message{font-size:15px;margin:10px 20px 5px 25px;line-height:16px}.info-modal.modal-box .modal-body a{color:#0181eb}.info-modal.modal-box .modal-body a:visited{color:#0181eb}.info-modal.modal-box .modal-footer{padding:0 36px;border:none;background:#fff}.info-modal.modal-box .modal-footer button{width:100%;margin:12px auto;float:none;height:40px;font-size:20px;padding-bottom:10px;background:-webkit-linear-gradient(top,#4096ee 0,#4096ee 100%)}#promo-modal .modal-body .header-title-wrap .icon-48{background:url(../images/icons/promo/icon48.png)}body.update #update-modal{display:block}body.update .main-view{min-height:500px}body.promo #promo-modal{display:block}body.promo .main-view{min-height:500px}body.warning #warning-modal{display:block}body.warning .main-view{min-height:500px}body.align-right .tab-layer{float:right!important}body.empty-tab-not-selected .tab-layer{background:#fff}body.empty-tab-not-selected .tab-layer .fav-icon{visibility:hidden}body.empty-tab-not-selected .tab-layer.valid-tab{background:0 0}body.empty-tab-not-selected .tab-layer.valid-tab .fav-icon{visibility:visible}body.single-tab-selected .tab-layer{background:#fff!important}body.single-tab-selected .tab-layer .fav-icon{visibility:hidden!important}body.single-tab-selected .tab-layer.tab-layer-1{background:transparent!important}body.single-tab-selected .tab-layer.tab-layer-1 .fav-icon{visibility:visible!important}.layout-1x1{background:url(../images/sprites/layouts.png) 0 0}.layout-1x1 .tab-layer{width:100%;height:100%}.layout-1x1 .tab-layer .fav-icon{left:35px;top:35px}.layout-1x2{background:url(../images/sprites/layouts.png) -100px 0}.layout-1x2 .tab-layer{width:50%;height:100%}.layout-1x2 .tab-layer .fav-icon{left:11px;top:35px}.layout-1x3{background:url(../images/sprites/layouts.png) -200px 0}.layout-1x3 .tab-layer{width:33.3%;height:100%}.layout-1x3 .tab-layer .fav-icon{left:8px;top:39px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-2x1{background:url(../images/sprites/layouts.png) -300px 0}.layout-2x1 .tab-layer{width:100%;height:50%}.layout-2x1 .tab-layer .fav-icon{left:35px;top:16px}.layout-2x2{background:url(../images/sprites/layouts.png) -400px 0}.layout-2x2 .tab-layer{width:50%;height:50%}.layout-2x2 .tab-layer .fav-icon{top:16px;left:11px}.layout-3x1{background:url(../images/sprites/layouts.png) -500px 0}.layout-3x1 .tab-layer{width:100%;height:33.3%}.layout-3x1 .tab-layer .fav-icon{top:12px;left:42px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-default{background:url(../images/sprites/layouts.png) -600px 0}.layout-default .tab-layer{display:none!important}.sortable-placeholder{width:113px;height:113px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:7px dashed darkgrey;border-radius:4px;padding:0 0 15px 15px;float:right}#update-modal.partial-update .update-entry{display:none}#update-modal.partial-update .update-entry.latest{display:block;margin-bottom:50px}#update-modal.partial-update .update-list-footer{display:none}#update-modal.partial-update .modal-body{height:350px}#warning-modal{z-index:10}#warning-modal .header-title{border-bottom:2px solid grey;padding-bottom:10px;margin-bottom:0}#warning-modal .update-entry{list-style:none;line-height:22px;font-size:16px;margin-bottom:20px} \ No newline at end of file diff --git a/public/tabResize.js b/public/tabResize.js index 3d67819..1de40b7 100644 --- a/public/tabResize.js +++ b/public/tabResize.js @@ -299,6 +299,7 @@ if(!deferTracking) { */ showCustomMenu: function() { this.clearCustomValues(); + $('.layout-option #fixed').trigger('click'); $('.main-view').addClass('inactive'); $('.custom-view').removeClass('hidden').trigger('show'); $('.custom-view input.row').focus(); @@ -317,23 +318,53 @@ if(!deferTracking) { * performs save of new layout */ handleCustomSave: function(){ - var customRows = $('#numRows').val(), - customCols = $('#numCols').val(); + var option = $('.custom-view').hasClass('scaled') ? 'scaled' : 'fixed'; - this.clearCustomValues(); + if(option === 'fixed'){ + var customRows = $('#numRows').val(), + customCols = $('#numCols').val(); + + this.clearCustomValues(); - if(!Number(customRows) || !Number(customCols) || Number(customRows) < 1 || Number(customCols) < 1){ - //window.alert('Please enter valid input values.'); + if(!Number(customRows) || !Number(customCols) || Number(customRows) < 1 || Number(customCols) < 1){ + //window.alert('Please enter valid input values.'); + } else { + var layoutType = customRows + 'x' + customCols; + resize.layout.addLayout(layoutType); + resize.layout.processTabInfo($('.layout-' + layoutType)); + this.hideCustomMenu(); + } } else { - var layoutType = customRows + 'x' + customCols; - resize.layout.addLayout(layoutType); - resize.layout.processTabInfo($('.layout-' + layoutType)); - this.hideCustomMenu(); + } + + + }, + + /** + * shows the scaled menu view + */ + showScaledMenu: function(){ + var orientation = getScaledOrientation(), + option = getScaledOption(), + canvas=document.getElementById("myCanvas"), + context=canvas.getContext("2d"); + + resize.util.clearCanvas(); + + resize.util.drawScaledTable(resize.canvasWidth, resize.canvasHeight, option[0], orientation, context); } }; + function getScaledOrientation(){ + return $('#horizontal-scaled').attr('checked') ? 'horizontal' : 'vertical'; + } + + function getScaledOption(){ + return $('.scaled-input.selected').text().split(':'); + } + window.resize.custom_view = custom_view; })(); @@ -779,6 +810,31 @@ if(!deferTracking) { context.stroke(); }, + /** + * draws a scaled table using canvas + * @param {Number} width - width of table + * @param {Number} height - height of table + * @param {Number} scale - percentage of first col/row + * @param {String} orientation - "vertical" or "horizontal" + * @param {CanvasRenderingContext2D} context - 2D context of canvas object + */ + drawScaledTable: function(width, height, scale, orientation, context) { + + context.beginPath(); + + var offSet = width*(0.1)*scale; + + if(orientation === 'horizontal'){ + context.moveTo(offSet,0); + context.lineTo(offSet,width); + } else { + context.moveTo(0,offSet); + context.lineTo(height,offSet); + } + + context.closePath(); + context.stroke(); + }, /** * clears the canvas of previous drawing @@ -1093,7 +1149,7 @@ if(!deferTracking) { sendTracking('display-settings',isDisplayed ? "opened" : "closed"); }).on('click','#display-setting-layer .switch-toggle input',function(evt,deferTracking){ var alignment = $(this).attr('id'); - $('.switch-toggle').removeClass('right-align left-align').addClass(alignment + '-align'); + $('#display-setting-layer .switch-toggle').removeClass('right-align left-align').addClass(alignment + '-align'); options.processAlignmentSelection(alignment); if(!deferTracking){ sendTracking('alignment',alignment); @@ -1112,6 +1168,32 @@ if(!deferTracking) { } }).on('click','a.keyboard-shortcuts', function(){ chrome.tabs.create({url:'chrome://extensions/configureCommands'}); + }).on('click','.custom-view .switch-toggle.layout-option input', function(){ + var option = $(this).attr('id'), + changed = false, + $customView = $('.custom-view'); + + if(option === 'scaled' && !$customView.hasClass('scaled') || option !== 'scaled' && $customView.hasClass('scaled')){ + changed = true; + } + + $customView[(option === 'scaled') ? 'addClass' : 'removeClass']('scaled'); + + if(changed){ + util.clearCanvas(); + custom_view.clearCustomValues(); + if(option === 'scaled'){ + custom_view.showScaledMenu(); + } + } + + }).on('click', '.custom-view .scaled-input', function(){ + var $this = $(this); + $('.custom-view .scaled-input').removeClass('selected'); + $this.addClass('selected'); + custom_view.showScaledMenu(); + }).on('click','.custom-view .switch-toggle.scaled-layout-orientation input', function(){ + custom_view.showScaledMenu(); }); })(); \ No newline at end of file diff --git a/public/tabResize.min.js b/public/tabResize.min.js index c0df442..5f4789f 100644 --- a/public/tabResize.min.js +++ b/public/tabResize.min.js @@ -1 +1 @@ -function sendTracking(a,b){!deferTracking&&ga&&ga("send","event",a,"clicked",b||"na")}var optOut=localStorage.getItem("tracking-opt-out"),deferTracking=!1;optOut&&"true"===optOut&&(deferTracking=!0),deferTracking||(!function(a,b,c,d,e,f,g){a.GoogleAnalyticsObject=e,a[e]=a[e]||function(){(a[e].q=a[e].q||[]).push(arguments)},a[e].l=1*new Date,f=b.createElement(c),g=b.getElementsByTagName(c)[0],f.async=1,f.src=d,g.parentNode.insertBefore(f,g)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-34217520-2","auto"),ga("set","checkProtocolTask",function(){}),ga("require","displayfeatures"),ga("send","pageview","/index.html")),function(){var a={tabsArray:[],currentTab:null,numRows:0,numCols:0,width:0,height:0,canvasHeight:100,canvasWidth:100,currentLayouts:null,defaultLayouts:{layoutItems:["1x1","1x2","2x1","2x2"]},layoutSprites:{layoutItems:["1x1","1x2","2x1","2x2","1x3","3x1"]},maxSelectorsPerLine:5,maxSelectorContainerWidth:156,maxSelectorContainerHeight:156,singleTab:!1,main_view:{},custom_view:{},options:{},util:{},badgeLimit:7,isMac:-1!==navigator.platform.toUpperCase().indexOf("MAC")};window.resize=a}(),function(){var a=window.resize,b={initialize:function(){a.currentLayouts=JSON.parse(localStorage.getItem("layoutItems")),a.currentLayouts||(localStorage.setItem("layoutItems",JSON.stringify(a.defaultLayouts)),a.currentLayouts=$.extend(!0,{},a.defaultLayouts)),this.populateMainView();var b=localStorage.getItem("singleTab");b&&"true"===b&&($("#checkbox-single-tab").attr("checked",!0),$("label.single-tab").addClass("selected"),$("body").addClass("single-tab-selected"),a.singleTab=!0);var c=localStorage.getItem("emptyTab");c&&"true"!==c?$("body").addClass("empty-tab-not-selected"):($("#checkbox-empty-tab").attr("checked",!0),$("label.empty-tab").addClass("selected"),a.emptyTab=!0);var d=localStorage.getItem("displayLayer");d&&"true"!==d||($(".main-view").addClass("display-selected"),a.displayLayer=!0);var e=localStorage.getItem("alignment");e?(a.alignment=e,"left"!==a.alignment&&$("body").addClass("align-right")):a.alignment="left",$("#"+a.alignment).trigger("click",["defer-tracking"]),a.displayUtil.initialize(),localStorage.getItem("lastTab")&&$("#undo-layout").removeClass("disabled"),window.backJs=chrome.extension.getBackgroundPage(),chrome.runtime.onMessage.addListener(function(b){"enable-undo"===b&&a.options.enableUndoButton()});var f=Number(localStorage.getItem("updateBadge"));f||(localStorage.setItem("updateBadge",0),chrome.browserAction.setBadgeText({text:"NEW"}),chrome.browserAction.setBadgeBackgroundColor({color:[221,129,39,255]})),fg&&""!==g,i=$("body");(!localStorage.getItem("update-seen")||h)&&(i.addClass("update"),h?localStorage.removeItem("update-seen"):localStorage.getItem("warning-seen")||(i.addClass("warning"),a.options.showWarningModal()),a.options.showUpdateModal(h?"partial-update":"")),localStorage.getItem("update-seen")&&f===a.badgeLimit&&!localStorage.getItem("promo-seen")&&(i.addClass("promo"),a.options.showPromoModal()),$(function(){a.util.initSortable()})},populateMainView:function(){for(var b=0;b=5&&0===c&&($("body").height($("body").height()-a.maxSelectorContainerHeight),$("html").height($("html").height()-a.maxSelectorContainerHeight))},resizeTabs:function(b,c){a.numRows=b,a.numCols=c;var d=$(".display-entry.selected").data();$.isEmptyObject(d)?(a.width=Math.round(window.screen.availWidth/a.numCols),a.height=Math.round(window.screen.availHeight/a.numRows),a.offsetX=0,a.offsetY=0,a.fullWidth=window.screen.availWidth,a.fullHeight=window.screen.availHeight):(a.width=Math.round(d.width/a.numCols),a.height=Math.round(d.height/a.numRows),a.offsetX=d.left,a.offsetY=d.top,a.fullWidth=d.width,a.fullHeight=d.height);window.chrome.tabs.query({currentWindow:!0},function(b){a.tabsArray=b,window.chrome.tabs.query({currentWindow:!0,highlighted:!0},function(b){a.currentTab=b[0];var c=a.currentTab.index;b.length>1&&(a.tabsArray=b,c=0);var d=function(){return backJs.util.processTabs(a,a.tabsArray,c,a.currentTab.windowId,a.singleTab,a.currentTab.incognito)};a.singleTab?backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c,c+1),d):backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c),d)})})}};window.resize.main_view=b}(),function(){var a=window.resize,b={hideCustomMenu:function(){$(".custom-view").addClass("hidden"),$(".main-view").removeClass("inactive"),a.util.clearCanvas()},showCustomMenu:function(){this.clearCustomValues(),$(".main-view").addClass("inactive"),$(".custom-view").removeClass("hidden").trigger("show"),$(".custom-view input.row").focus()},clearCustomValues:function(){$("#numRows").val(""),$("#numCols").val(""),$("#input-save").addClass("disabled")},handleCustomSave:function(){var b=$("#numRows").val(),c=$("#numCols").val();if(this.clearCustomValues(),!Number(b)||!Number(c)||Number(b)<1||Number(c)<1);else{var d=b+"x"+c;a.layout.addLayout(d),a.layout.processTabInfo($(".layout-"+d)),this.hideCustomMenu()}}};window.resize.custom_view=b}(),function(){var a=window.resize,b={processSingleTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("singleTab",c),a.singleTab=c,$("label.single-tab").toggleClass("selected"),$("body").toggleClass("single-tab-selected")},processEmptyTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("emptyTab",c),a.emptyTab=c,$("label.empty-tab").toggleClass("selected"),$("body").toggleClass("empty-tab-not-selected")},processDisplayLayerSelection:function(b){var c=b?!0:!1;localStorage.setItem("displayLayer",c),a.displayLayer=c},processAlignmentSelection:function(b){localStorage.setItem("alignment",b),a.alignment=b,"right"===b?$("body").addClass("align-right"):$("body").removeClass("align-right")},undoResize:function(){var b=this;a.lastTab=JSON.parse(localStorage.getItem("lastTab"));var c=a.lastTab.lastTabIndex,d=a.lastTab.lastWindowId,e=a.lastTab.lastTabsArray;window.chrome.windows.get(d,{},function(f){f?b.recombineTabs(c,d,e):chrome.tabs.query({status:"complete"},function(c){for(var d={},f=[],g=0;gd;b++,d++){a=c[b];var e=$(".resize-container").find(".tab-layer-"+d);e.addClass("valid-tab");for(var f=0;fd;d++)e.push(a.eq(d).attr("data-selector-type"));b.currentLayouts.layoutItems=e,localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts))},addLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);-1!==d&&(c.splice(d,1),this._removeLayoutMarkup(a)),b.currentLayouts.layoutItems.unshift(a),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this.addLayoutMarkup(a,!0),b.util.resetSortable()},addLayoutMarkup:function(a,c){var d="layout-default";(-1!==b.layoutSprites.layoutItems.indexOf(a)||"1x1"===a)&&(d="layout-"+a);var e=$(".resize-container"),f='
  • '+a+'
  • ';c?e.prepend(f):e.append(f)},removeLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);c.splice(d,1),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this._removeLayoutMarkup(a)},_removeLayoutMarkup:function(a){var b='[data-selector-type="'+a+'"]';$(b).parent().remove()},resetLayout:function(){this._removeAllLayouts(),localStorage.setItem("layoutItems",JSON.stringify(b.defaultLayouts)),b.currentLayouts=$.extend(!0,{},b.defaultLayouts),b.main_view.populateMainView(),this.processTabInfo(),b.util.resetSortable()},_removeAllLayouts:function(){$(".resize-container").children().remove()},processTabInfo:function(c){var d,e,f,g,h,i,j,k=b.currentWindowTabs,l=c||$(".resize-container").find(".resize-selector-container .resize-selector"),m=0,n=0;if(l=l.filter(function(){return!$(this).hasClass("layout-default")}),m=l.length,k&&k.length>0){for(;m>n;n++){h="",d=l.eq(n),e=d.attr("data-selector-type").split("x"),f=e[0],g=e[1],j=1;for(var o=0;f>o;o++)for(var p=0;g>p;p++)h+='
    ';d.html(h)}for(n=0;nh;h++)e.moveTo(0,g*h),e.lineTo(b,g*h);for(var i=1;d>i;i++)e.moveTo(f*i,0),e.lineTo(f*i,a);e.closePath(),e.stroke()},clearCanvas:function(){var a=$("canvas")[0],b=a.getContext("2d");b.clearRect(0,0,b.canvas.width,b.canvas.height)},initSortable:function(){$(".sortable").sortable().on("sortupdate",function(){resize.layout.updateLayoutStore(),sendTracking("dnd-event","dnd-label")}),b=!0},resetSortable:function(){if(b){var a=$(".sortable");a.sortable("destroy"),a.sortable()}}},b=!1;window.resize.util=a}(),function(a){function b(a){for(var b,e,f,g,k,l=a.displays,m=null,n=null,o=null,p=null,q=0,r=l.length;r>q;q++)k=l[q].workArea,(null===m||m>k.left)&&(m=k.left),(null===n||nk.top)&&(o=k.top),(null===p||pf?f:g,i=0!==m?-1*m*h:0,j=0!==o?-1*o*h:0,d(h,e)}function c(){a("#display-setting-layer");return{width:k,height:l}}function d(b,c){var d=a("#display-setting-layer");d.height(b*c)}function e(b,c,d){var e=a('
    ');return e.css({top:b.top*h+j,left:b.left*h+i,width:b.width*h,height:b.height*h}).data(a.extend({id:c},b)),e.find(".display-meta").text(b.width+"x"+b.height),d&&e.addClass("selected"),e}var f,g=window.resize,h=.15,i=0,j=0,k=530,l=250,m={initialize:function(){chrome.system&&chrome.system.display&&(g.display=chrome.system.display,f=a("#display-setting-layer"),f.on("click",".display-entry",function(){var b=a(this),c={},d=b.data("id"),e=b.find(".display-meta").text();c[d]=!0,f.find(".display-entry").removeClass("selected"),b.addClass("selected"),sendTracking("display-select",e)}),g.display.getInfo(function(a){chrome.windows.getCurrent({populate:!0},function(c){var d,h,i={left:c.left+c.width-100,top:c.top+100},j=backJs.util.displayInfoFormatter(a,i);b(j);for(var k=0;k1?a:c.tabs,g.layout.processTabInfo()})})}))}};g.displayUtil=m}(window.jQuery),function(){var a=window.resize,b=a.main_view,c=a.custom_view,d=a.util,e=a.layout,f=a.options,g=(a.displayUtil,$(document));g.ready(function(){b.initialize()}).on("click",".resize-selector-container",function(){var a=$(this).children(".resize-selector"),c=a.attr("data-selector-type"),d=c.split("x");b.resizeTabs(Number(d[0]),Number(d[1])),sendTracking("resize",c)}).on("show",".modal-box",function(a){a.stopPropagation(),d.centerModal($(this))}).on("click",".modal-box",function(a){a.stopPropagation()}).on("click",".close-button",function(a){a.stopPropagation();var b=$(this).siblings(".resize-selector").attr("data-selector-type");e.removeLayout(b),sendTracking("resize-delete",b)}).on("click","#undo-layout",function(){f.undoResize(),sendTracking("undo","undo")}).on("click","#custom-layout",function(a){a.stopPropagation(),c.showCustomMenu(),sendTracking("custom-layout","open")}).on("click","#default-configuration",function(a){a.stopPropagation(),f.showConfirmationModal(),sendTracking("default-layout","open")}).on("click","#confirmation-cancel",function(){f.hideConfirmationModal(),sendTracking("default-layout","cancel")}).on("click","#confirmation-apply",function(){e.resetLayout(),f.hideConfirmationModal(),sendTracking("default-layout","apply")}).on("click","#input-cancel,.main-view",function(){$(".custom-view").hasClass("hidden")||(c.clearCustomValues(),c.hideCustomMenu(),sendTracking("custom-layout","cancel"))}).on("click","#input-save",function(){c.handleCustomSave(),sendTracking("custom-layout","apply")}).on("click","body",function(){$(".custom-view").hasClass("hidden")||(d.clearCanvas(),c.hideCustomMenu(),sendTracking("custom-layout","cancel-layer")),$(".confirmation-modal").hasClass("hidden")||(f.hideConfirmationModal(),sendTracking("default-layout","cancel-layer"))}).on("keyup","#numRows, #numCols",function(b){b.stopPropagation();var c=document.getElementById("myCanvas"),e=c.getContext("2d"),f=Number($("#numRows").attr("value")),g=Number($("#numCols").attr("value"));if(d.clearCanvas(),f&&f>0&&g&&g>0)f>a.canvasHeight/4&&(f=a.canvasHeight/4),g>a.canvasWidth/4&&(g=a.canvasWidth/4),d.drawTable(a.canvasWidth,a.canvasHeight,f,g,e),$("#input-save").removeClass("disabled");else{var h=$(this),i=Number(h.attr("value"));(0===i||isNaN(i))&&(h.attr("value",""),$("#input-save").addClass("disabled"))}}).on("change","#checkbox-single-tab",function(){var a=$(this).attr("checked");f.processSingleTabSelection(a),sendTracking("single-tab",a?"checked":"unchecked")}).on("change","#checkbox-empty-tab",function(){var a=$(this).attr("checked");f.processEmptyTabSelection(a),sendTracking("empty-tab",a?"checked":"unchecked")}).on("click","#display-setting",function(){var a,b=$(".main-view");b.toggleClass("display-selected"),a=b.hasClass("display-selected"),f.processDisplayLayerSelection(a),sendTracking("display-settings",a?"opened":"closed")}).on("click","#display-setting-layer .switch-toggle input",function(a,b){var c=$(this).attr("id");$(".switch-toggle").removeClass("right-align left-align").addClass(c+"-align"),f.processAlignmentSelection(c),b||sendTracking("alignment",c)}).on("click","#update-apply",function(){f.hideUpdateModal()}).on("click","#promo-apply",function(){f.hidePromoModal()}).on("click","#warning-apply",function(){f.hideWarningModal()}).on("click",".signature a",function(){$(this).hasClass("rate-it")?sendTracking("info-links","rate-it"):sendTracking("info-links","author")}).on("click","a.keyboard-shortcuts",function(){chrome.tabs.create({url:"chrome://extensions/configureCommands"})})}(); \ No newline at end of file +function sendTracking(a,b){!deferTracking&&ga&&ga("send","event",a,"clicked",b||"na")}var optOut=localStorage.getItem("tracking-opt-out"),deferTracking=!1;optOut&&"true"===optOut&&(deferTracking=!0),deferTracking||(!function(a,b,c,d,e,f,g){a.GoogleAnalyticsObject=e,a[e]=a[e]||function(){(a[e].q=a[e].q||[]).push(arguments)},a[e].l=1*new Date,f=b.createElement(c),g=b.getElementsByTagName(c)[0],f.async=1,f.src=d,g.parentNode.insertBefore(f,g)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-34217520-2","auto"),ga("set","checkProtocolTask",function(){}),ga("require","displayfeatures"),ga("send","pageview","/index.html")),function(){var a={tabsArray:[],currentTab:null,numRows:0,numCols:0,width:0,height:0,canvasHeight:100,canvasWidth:100,currentLayouts:null,defaultLayouts:{layoutItems:["1x1","1x2","2x1","2x2"]},layoutSprites:{layoutItems:["1x1","1x2","2x1","2x2","1x3","3x1"]},maxSelectorsPerLine:5,maxSelectorContainerWidth:156,maxSelectorContainerHeight:156,singleTab:!1,main_view:{},custom_view:{},options:{},util:{},badgeLimit:7,isMac:-1!==navigator.platform.toUpperCase().indexOf("MAC")};window.resize=a}(),function(){var a=window.resize,b={initialize:function(){a.currentLayouts=JSON.parse(localStorage.getItem("layoutItems")),a.currentLayouts||(localStorage.setItem("layoutItems",JSON.stringify(a.defaultLayouts)),a.currentLayouts=$.extend(!0,{},a.defaultLayouts)),this.populateMainView();var b=localStorage.getItem("singleTab");b&&"true"===b&&($("#checkbox-single-tab").attr("checked",!0),$("label.single-tab").addClass("selected"),$("body").addClass("single-tab-selected"),a.singleTab=!0);var c=localStorage.getItem("emptyTab");c&&"true"!==c?$("body").addClass("empty-tab-not-selected"):($("#checkbox-empty-tab").attr("checked",!0),$("label.empty-tab").addClass("selected"),a.emptyTab=!0);var d=localStorage.getItem("displayLayer");d&&"true"!==d||($(".main-view").addClass("display-selected"),a.displayLayer=!0);var e=localStorage.getItem("alignment");e?(a.alignment=e,"left"!==a.alignment&&$("body").addClass("align-right")):a.alignment="left",$("#"+a.alignment).trigger("click",["defer-tracking"]),a.displayUtil.initialize(),localStorage.getItem("lastTab")&&$("#undo-layout").removeClass("disabled"),window.backJs=chrome.extension.getBackgroundPage(),chrome.runtime.onMessage.addListener(function(b){"enable-undo"===b&&a.options.enableUndoButton()});var f=Number(localStorage.getItem("updateBadge"));f||(localStorage.setItem("updateBadge",0),chrome.browserAction.setBadgeText({text:"NEW"}),chrome.browserAction.setBadgeBackgroundColor({color:[221,129,39,255]})),fg&&""!==g,i=$("body");(!localStorage.getItem("update-seen")||h)&&(i.addClass("update"),h?localStorage.removeItem("update-seen"):localStorage.getItem("warning-seen")||(i.addClass("warning"),a.options.showWarningModal()),a.options.showUpdateModal(h?"partial-update":"")),localStorage.getItem("update-seen")&&f===a.badgeLimit&&!localStorage.getItem("promo-seen")&&(i.addClass("promo"),a.options.showPromoModal()),$(function(){a.util.initSortable()})},populateMainView:function(){for(var b=0;b=5&&0===c&&($("body").height($("body").height()-a.maxSelectorContainerHeight),$("html").height($("html").height()-a.maxSelectorContainerHeight))},resizeTabs:function(b,c){a.numRows=b,a.numCols=c;var d=$(".display-entry.selected").data();$.isEmptyObject(d)?(a.width=Math.round(window.screen.availWidth/a.numCols),a.height=Math.round(window.screen.availHeight/a.numRows),a.offsetX=0,a.offsetY=0,a.fullWidth=window.screen.availWidth,a.fullHeight=window.screen.availHeight):(a.width=Math.round(d.width/a.numCols),a.height=Math.round(d.height/a.numRows),a.offsetX=d.left,a.offsetY=d.top,a.fullWidth=d.width,a.fullHeight=d.height);window.chrome.tabs.query({currentWindow:!0},function(b){a.tabsArray=b,window.chrome.tabs.query({currentWindow:!0,highlighted:!0},function(b){a.currentTab=b[0];var c=a.currentTab.index;b.length>1&&(a.tabsArray=b,c=0);var d=function(){return backJs.util.processTabs(a,a.tabsArray,c,a.currentTab.windowId,a.singleTab,a.currentTab.incognito)};a.singleTab?backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c,c+1),d):backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c),d)})})}};window.resize.main_view=b}(),function(){function a(){return $("#horizontal-scaled").attr("checked")?"horizontal":"vertical"}function b(){return $(".scaled-input.selected").text().split(":")}var c=window.resize,d={hideCustomMenu:function(){$(".custom-view").addClass("hidden"),$(".main-view").removeClass("inactive"),c.util.clearCanvas()},showCustomMenu:function(){this.clearCustomValues(),$(".layout-option #fixed").trigger("click"),$(".main-view").addClass("inactive"),$(".custom-view").removeClass("hidden").trigger("show"),$(".custom-view input.row").focus()},clearCustomValues:function(){$("#numRows").val(""),$("#numCols").val(""),$("#input-save").addClass("disabled")},handleCustomSave:function(){var a=$(".custom-view").hasClass("scaled")?"scaled":"fixed";if("fixed"===a){var b=$("#numRows").val(),d=$("#numCols").val();if(this.clearCustomValues(),!Number(b)||!Number(d)||Number(b)<1||Number(d)<1);else{var e=b+"x"+d;c.layout.addLayout(e),c.layout.processTabInfo($(".layout-"+e)),this.hideCustomMenu()}}},showScaledMenu:function(){var d=a(),e=b(),f=document.getElementById("myCanvas"),g=f.getContext("2d");c.util.clearCanvas(),c.util.drawScaledTable(c.canvasWidth,c.canvasHeight,e[0],d,g)}};window.resize.custom_view=d}(),function(){var a=window.resize,b={processSingleTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("singleTab",c),a.singleTab=c,$("label.single-tab").toggleClass("selected"),$("body").toggleClass("single-tab-selected")},processEmptyTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("emptyTab",c),a.emptyTab=c,$("label.empty-tab").toggleClass("selected"),$("body").toggleClass("empty-tab-not-selected")},processDisplayLayerSelection:function(b){var c=b?!0:!1;localStorage.setItem("displayLayer",c),a.displayLayer=c},processAlignmentSelection:function(b){localStorage.setItem("alignment",b),a.alignment=b,"right"===b?$("body").addClass("align-right"):$("body").removeClass("align-right")},undoResize:function(){var b=this;a.lastTab=JSON.parse(localStorage.getItem("lastTab"));var c=a.lastTab.lastTabIndex,d=a.lastTab.lastWindowId,e=a.lastTab.lastTabsArray;window.chrome.windows.get(d,{},function(f){f?b.recombineTabs(c,d,e):chrome.tabs.query({status:"complete"},function(c){for(var d={},f=[],g=0;gd;b++,d++){a=c[b];var e=$(".resize-container").find(".tab-layer-"+d);e.addClass("valid-tab");for(var f=0;fd;d++)e.push(a.eq(d).attr("data-selector-type"));b.currentLayouts.layoutItems=e,localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts))},addLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);-1!==d&&(c.splice(d,1),this._removeLayoutMarkup(a)),b.currentLayouts.layoutItems.unshift(a),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this.addLayoutMarkup(a,!0),b.util.resetSortable()},addLayoutMarkup:function(a,c){var d="layout-default";(-1!==b.layoutSprites.layoutItems.indexOf(a)||"1x1"===a)&&(d="layout-"+a);var e=$(".resize-container"),f='
  • '+a+'
  • ';c?e.prepend(f):e.append(f)},removeLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);c.splice(d,1),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this._removeLayoutMarkup(a)},_removeLayoutMarkup:function(a){var b='[data-selector-type="'+a+'"]';$(b).parent().remove()},resetLayout:function(){this._removeAllLayouts(),localStorage.setItem("layoutItems",JSON.stringify(b.defaultLayouts)),b.currentLayouts=$.extend(!0,{},b.defaultLayouts),b.main_view.populateMainView(),this.processTabInfo(),b.util.resetSortable()},_removeAllLayouts:function(){$(".resize-container").children().remove()},processTabInfo:function(c){var d,e,f,g,h,i,j,k=b.currentWindowTabs,l=c||$(".resize-container").find(".resize-selector-container .resize-selector"),m=0,n=0;if(l=l.filter(function(){return!$(this).hasClass("layout-default")}),m=l.length,k&&k.length>0){for(;m>n;n++){h="",d=l.eq(n),e=d.attr("data-selector-type").split("x"),f=e[0],g=e[1],j=1;for(var o=0;f>o;o++)for(var p=0;g>p;p++)h+='
    ';d.html(h)}for(n=0;nh;h++)e.moveTo(0,g*h),e.lineTo(b,g*h);for(var i=1;d>i;i++)e.moveTo(f*i,0),e.lineTo(f*i,a);e.closePath(),e.stroke()},drawScaledTable:function(a,b,c,d,e){e.beginPath();var f=.1*a*c;"horizontal"===d?(e.moveTo(f,0),e.lineTo(f,a)):(e.moveTo(0,f),e.lineTo(b,f)),e.closePath(),e.stroke()},clearCanvas:function(){var a=$("canvas")[0],b=a.getContext("2d");b.clearRect(0,0,b.canvas.width,b.canvas.height)},initSortable:function(){$(".sortable").sortable().on("sortupdate",function(){resize.layout.updateLayoutStore(),sendTracking("dnd-event","dnd-label")}),b=!0},resetSortable:function(){if(b){var a=$(".sortable");a.sortable("destroy"),a.sortable()}}},b=!1;window.resize.util=a}(),function(a){function b(a){for(var b,e,f,g,k,l=a.displays,m=null,n=null,o=null,p=null,q=0,r=l.length;r>q;q++)k=l[q].workArea,(null===m||m>k.left)&&(m=k.left),(null===n||nk.top)&&(o=k.top),(null===p||pf?f:g,i=0!==m?-1*m*h:0,j=0!==o?-1*o*h:0,d(h,e)}function c(){a("#display-setting-layer");return{width:k,height:l}}function d(b,c){var d=a("#display-setting-layer");d.height(b*c)}function e(b,c,d){var e=a('
    ');return e.css({top:b.top*h+j,left:b.left*h+i,width:b.width*h,height:b.height*h}).data(a.extend({id:c},b)),e.find(".display-meta").text(b.width+"x"+b.height),d&&e.addClass("selected"),e}var f,g=window.resize,h=.15,i=0,j=0,k=530,l=250,m={initialize:function(){chrome.system&&chrome.system.display&&(g.display=chrome.system.display,f=a("#display-setting-layer"),f.on("click",".display-entry",function(){var b=a(this),c={},d=b.data("id"),e=b.find(".display-meta").text();c[d]=!0,f.find(".display-entry").removeClass("selected"),b.addClass("selected"),sendTracking("display-select",e)}),g.display.getInfo(function(a){chrome.windows.getCurrent({populate:!0},function(c){var d,h,i={left:c.left+c.width-100,top:c.top+100},j=backJs.util.displayInfoFormatter(a,i);b(j);for(var k=0;k1?a:c.tabs,g.layout.processTabInfo()})})}))}};g.displayUtil=m}(window.jQuery),function(){var a=window.resize,b=a.main_view,c=a.custom_view,d=a.util,e=a.layout,f=a.options,g=(a.displayUtil,$(document));g.ready(function(){b.initialize()}).on("click",".resize-selector-container",function(){var a=$(this).children(".resize-selector"),c=a.attr("data-selector-type"),d=c.split("x");b.resizeTabs(Number(d[0]),Number(d[1])),sendTracking("resize",c)}).on("show",".modal-box",function(a){a.stopPropagation(),d.centerModal($(this))}).on("click",".modal-box",function(a){a.stopPropagation()}).on("click",".close-button",function(a){a.stopPropagation();var b=$(this).siblings(".resize-selector").attr("data-selector-type");e.removeLayout(b),sendTracking("resize-delete",b)}).on("click","#undo-layout",function(){f.undoResize(),sendTracking("undo","undo")}).on("click","#custom-layout",function(a){a.stopPropagation(),c.showCustomMenu(),sendTracking("custom-layout","open")}).on("click","#default-configuration",function(a){a.stopPropagation(),f.showConfirmationModal(),sendTracking("default-layout","open")}).on("click","#confirmation-cancel",function(){f.hideConfirmationModal(),sendTracking("default-layout","cancel")}).on("click","#confirmation-apply",function(){e.resetLayout(),f.hideConfirmationModal(),sendTracking("default-layout","apply")}).on("click","#input-cancel,.main-view",function(){$(".custom-view").hasClass("hidden")||(c.clearCustomValues(),c.hideCustomMenu(),sendTracking("custom-layout","cancel"))}).on("click","#input-save",function(){c.handleCustomSave(),sendTracking("custom-layout","apply")}).on("click","body",function(){$(".custom-view").hasClass("hidden")||(d.clearCanvas(),c.hideCustomMenu(),sendTracking("custom-layout","cancel-layer")),$(".confirmation-modal").hasClass("hidden")||(f.hideConfirmationModal(),sendTracking("default-layout","cancel-layer"))}).on("keyup","#numRows, #numCols",function(b){b.stopPropagation();var c=document.getElementById("myCanvas"),e=c.getContext("2d"),f=Number($("#numRows").attr("value")),g=Number($("#numCols").attr("value"));if(d.clearCanvas(),f&&f>0&&g&&g>0)f>a.canvasHeight/4&&(f=a.canvasHeight/4),g>a.canvasWidth/4&&(g=a.canvasWidth/4),d.drawTable(a.canvasWidth,a.canvasHeight,f,g,e),$("#input-save").removeClass("disabled");else{var h=$(this),i=Number(h.attr("value"));(0===i||isNaN(i))&&(h.attr("value",""),$("#input-save").addClass("disabled"))}}).on("change","#checkbox-single-tab",function(){var a=$(this).attr("checked");f.processSingleTabSelection(a),sendTracking("single-tab",a?"checked":"unchecked")}).on("change","#checkbox-empty-tab",function(){var a=$(this).attr("checked");f.processEmptyTabSelection(a),sendTracking("empty-tab",a?"checked":"unchecked")}).on("click","#display-setting",function(){var a,b=$(".main-view");b.toggleClass("display-selected"),a=b.hasClass("display-selected"),f.processDisplayLayerSelection(a),sendTracking("display-settings",a?"opened":"closed")}).on("click","#display-setting-layer .switch-toggle input",function(a,b){var c=$(this).attr("id");$("#display-setting-layer .switch-toggle").removeClass("right-align left-align").addClass(c+"-align"),f.processAlignmentSelection(c),b||sendTracking("alignment",c)}).on("click","#update-apply",function(){f.hideUpdateModal()}).on("click","#promo-apply",function(){f.hidePromoModal()}).on("click","#warning-apply",function(){f.hideWarningModal()}).on("click",".signature a",function(){$(this).hasClass("rate-it")?sendTracking("info-links","rate-it"):sendTracking("info-links","author")}).on("click","a.keyboard-shortcuts",function(){chrome.tabs.create({url:"chrome://extensions/configureCommands"})}).on("click",".custom-view .switch-toggle.layout-option input",function(){var a=$(this).attr("id"),b=!1,e=$(".custom-view");("scaled"===a&&!e.hasClass("scaled")||"scaled"!==a&&e.hasClass("scaled"))&&(b=!0),e["scaled"===a?"addClass":"removeClass"]("scaled"),b&&(d.clearCanvas(),c.clearCustomValues(),"scaled"===a&&c.showScaledMenu())}).on("click",".custom-view .scaled-input",function(){var a=$(this);$(".custom-view .scaled-input").removeClass("selected"),a.addClass("selected"),c.showScaledMenu()}).on("click",".custom-view .switch-toggle.scaled-layout-orientation input",function(){c.showScaledMenu()})}(); \ No newline at end of file From 48fc69e4ef074b271459a0e15fc796776782bac9 Mon Sep 17 00:00:00 2001 From: Peter Shin Date: Mon, 22 Dec 2014 07:06:45 -0800 Subject: [PATCH 3/7] added scaled sprite assets --- .../2ba46641a3448bef48bdce18d76d2b6f.png | Bin 0 -> 5181 bytes .../sprites/deprecated/layout_scale_6x4.png | Bin 0 -> 1043 bytes .../deprecated/layout_scale_6x4_hover.png | Bin 0 -> 1029 bytes .../deprecated/layout_scale_6x4_rev.png | Bin 0 -> 1068 bytes .../deprecated/layout_scale_6x4_rev_hover.png | Bin 0 -> 1054 bytes .../deprecated/layout_scale_6x4_vert.png | Bin 0 -> 1062 bytes .../layout_scale_6x4_vert_hover.png | Bin 0 -> 1051 bytes .../sprites/deprecated/layout_scale_7x3.png | Bin 0 -> 983 bytes .../deprecated/layout_scale_7x3_hover.png | Bin 0 -> 972 bytes .../deprecated/layout_scale_7x3_rev.png | Bin 0 -> 1054 bytes .../deprecated/layout_scale_7x3_rev_hover.png | Bin 0 -> 1042 bytes .../deprecated/layout_scale_7x3_vert.png | Bin 0 -> 1090 bytes .../layout_scale_7x3_vert_hover.png | Bin 0 -> 1070 bytes images/sprites/layouts.png | Bin 4385 -> 24701 bytes 14 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/icons/2ba46641a3448bef48bdce18d76d2b6f.png create mode 100644 images/sprites/deprecated/layout_scale_6x4.png create mode 100644 images/sprites/deprecated/layout_scale_6x4_hover.png create mode 100644 images/sprites/deprecated/layout_scale_6x4_rev.png create mode 100644 images/sprites/deprecated/layout_scale_6x4_rev_hover.png create mode 100644 images/sprites/deprecated/layout_scale_6x4_vert.png create mode 100644 images/sprites/deprecated/layout_scale_6x4_vert_hover.png create mode 100644 images/sprites/deprecated/layout_scale_7x3.png create mode 100644 images/sprites/deprecated/layout_scale_7x3_hover.png create mode 100644 images/sprites/deprecated/layout_scale_7x3_rev.png create mode 100644 images/sprites/deprecated/layout_scale_7x3_rev_hover.png create mode 100644 images/sprites/deprecated/layout_scale_7x3_vert.png create mode 100644 images/sprites/deprecated/layout_scale_7x3_vert_hover.png diff --git a/images/icons/2ba46641a3448bef48bdce18d76d2b6f.png b/images/icons/2ba46641a3448bef48bdce18d76d2b6f.png new file mode 100644 index 0000000000000000000000000000000000000000..42d6ce01a7f82b76fb21a6b08c120a60d4b9a37d GIT binary patch literal 5181 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 L^>bP0l+XkK-8#da literal 0 HcmV?d00001 diff --git a/images/sprites/deprecated/layout_scale_6x4_hover.png b/images/sprites/deprecated/layout_scale_6x4_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..dc66afe82390a89e00707706ff82828042c35ac3 GIT binary patch literal 1029 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 literal 0 HcmV?d00001 diff --git a/images/sprites/deprecated/layout_scale_6x4_vert.png b/images/sprites/deprecated/layout_scale_6x4_vert.png new file mode 100644 index 0000000000000000000000000000000000000000..1c603bbcd50944db3b1017205b437b978315c03e GIT binary patch literal 1062 zcmeAS@N?(olHy`uVBq!ia0vp^DIm!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J=4@yqf`b4<|Upk zjv*CsZ|8V=D+h|WeLkHWB6CqeqeF>LL&;6#%%RGNn|fc^cN8ctiquG3JX@mpcD41& zYd>DiTp08|x`w^4M12`k=^Dj_uhNQk-kI-z-%eEO+`oTyFJHf2o$BW9zBFj1hw;^{ zui^La-+#T|ch}Oe)sZvKJb9Axcj5mjr&A@Rq$V9a=(wJlnYpOAIJjQ)<+K|L;^N|) zHf&IM{``5IxtUo?cJ}GG&tJZ%golSu)YsSlW|2AfhJv@Z_omI8ANPE?x_Gg&q_p(p z{(k<-y1Kq^?XQ65)n+aU{bKP+`2^4vJpBBpZ{D0~?6f&JIJl^~I(z-xxpRA)UKEw? z_lPQhM|4jhC;b+N$nb#L7$0+N$vDw7R62X>K^Fknm3`rL;8k)6YG%ua=#(u(#J= zzI^$)uWxxb?cblzy<`9W>Bo<|&uZZ3=ijtxlhW+jv(J^j;|({T( zeLcsK>3~9l0fz(+6I*k`L9&@Ynkw>dBu=>ZfP2woLkX4C8plP|JhA>p9{C9Z1`;eh zY>bD+kEG2t@YwaE=|%=Go2PiZzcc} zHWkONzL(758_&jg`S(>$-}pSmgj-^Zp6^@u%=zN`TanZHwx3JeEc%z9clo<@7FjYJ zeNya4_+G73kTI2Oy8$BE(gpgY_}h&++sA&20_Q;_+V4i01boFyt=akR{03_Jj<^TWy literal 0 HcmV?d00001 diff --git a/images/sprites/deprecated/layout_scale_6x4_vert_hover.png b/images/sprites/deprecated/layout_scale_6x4_vert_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..b0077af98e6b1cfd7fb3858b22c5fcd5be1e8882 GIT binary patch literal 1051 zcmeAS@N?(olHy`uVBq!ia0vp^DIm!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J=4@yqf`b4=9!)@ zjv*CsZ|8V>D?5s`em93z+xGYaeg@#~`jZ$5*T?Z%(AkS=sk< zm$)Z?H9fy>vjw}|MU~jbUu#yqTlV@HSL>nk<#qd&Rpj>W-FxZs<=~UNyu6+}W2XJu zvu|JB>C>mZzh3s)y)r~gP0ifQEUflr{k(bemPF`y)z|O$j*p*z=gysw{-j&Jt0r`J zbI+VTd-CVc#nZQLHNAP~&X(kN@83Ut^-AmE$B!4|(xv=YO=xXpy?O5*pVyBQ7cWla z;pabn`}S-b8yl6+3yTU00&;sZO?LIw2!8tWM~9i2xu~p6Y)ZiSBS%{9+`D&ctss?~Edb())-<6F<1KY#k# zwXhAJon_?YZf!Ygyzbj#^`QAJckbTpoX2Kv6?=8YtXZ2T9^E27_f@e~es53DjryJI zWP5dED?H4%*-p*?a>t8MSy81Fltl5=hr!R-q)z#frY@Y3S+rrMy z@7C&zZ#sgbY}dK1d7sNZHOa{-f6|+obLK1&P|;xF;bMFotq2T7BRjji@ViTl&zw7V z>gCJK4f|sifB*h{?LdEgy$5?_RMe!eU%w{I-|bXZUjFu*`-;FzR=3u#UcLID-SP<> z0UQz{Ol++Uj*1E7Gv^7EALeTZhR+ zZKD_#)$FwCsPH4d$gNQk3*9_lzqncv^;0OkW7Fo%%H7@FOPX_Xa#(&x6aA~~T$L5~Y3 zX|*gp_E<#&M5-c@PrC)CN%cz$FS6gV$IQF;|KhvveU(dY2K2AnTc*D{OvvWS&9e(~ zH(aTBtpX0@jhfv~1rX=k&MasJN<9DQ)w}zA>c%S-x_huXpwCI^ z0cW7N$Rxvg0`Cla7{H-f;k2X8r9l}KOU+IPU;zPR_DpLnm|s!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J=4@yqf`b4=1@-; z$B>G+w{y>W8wJX={yly+<^KFJ-znA5| zvc6He=4^%Ad1m&Mv_0R?RhG<&eEIQb&E&gx@Aj`hVfK7=`^4+7WoLe~6x@G*{WXPo z1r|Do9|nj?_PS|*{`u3=_SRh=HQ`PdrR=wkYaKg3st9$yT=xIV?^@1QCm|lTTwxBD zCAZ)D-G7=VP!*x|T~zP`REzkb~^Yjtw;S~{uj{Oi}N@7%q6_Vd4g>$dM^ZIPSC zbuw*p(8`dW$t^o%DH!duH|~1!ipc?wS6sigB3;(>+peTtp|L%}wlkh>b>j}4 zygf=+_OeQSr_|z`Ip>bge!71CmeM1gaz4kSCi^Yl-#Vi#FIu2#fq=ILi;f7BSUAVY zr$v)|)V}IIRD1H_L%^-K+djt3eRVL8cbk)*p57M*e}Df^pFTbMWn*uD`sK@&BHgZ! ze_CBUyvpWnx+@@`sz+i8Y`%>(o zAu`Etd9qEy>?U9&Kl=Pr?bXq3$6tS4x3_)n+_@j^k3N5yw$)lP5SR%WJYD@<);T3K F0RTKgpGW`z literal 0 HcmV?d00001 diff --git a/images/sprites/deprecated/layout_scale_7x3_hover.png b/images/sprites/deprecated/layout_scale_7x3_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..b20b01b1ee8e678e3e4aaa15d4c2f8359d5989a8 GIT binary patch literal 972 zcmeAS@N?(olHy`uVBq!ia0vp^DIm!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J=4@yqf`b4W-m_{ z$B>G+w|CEaYX!<2`}nU=HeTYi3MY@!#5fNpACXT@E1&M@68p-&CFA1VEgmJ0_j2E_ z+g=>>K4JMvv&Y6~iytsQJUw&f{p&vAxe?P$yN@Q-$9c}!doEF^(?xCB?>_?l$FEwR zIQHz>vK}|($k@pzp9DYtSn=;g!up#zYSGcr*>jt%*hSNl)6>)IF8?=`;5o7_*Hdls zJfY4O8ylN5^F`mZ8np8_-??+gV`0FAyzQ@7hG=;%4Z3)~va)jG?%lhW*6m-P&wt8k z#^H9yzP`RCVXGzi-(Abwt~%H6bcxl}xb@p>>_cXqeO9wQL8rxX#qs^zMlyV=Q@uJL zTO4a%f9vkusmG7I|Go3~@874LD{8O)P6`k^B-7)Vm!JQ&ZCUdyk#5(&T0yV>{fpz{ zmirOpZ^Iq-lyHy?QBOe<6(~$jg z;oTB}(hsj+XP+&Z@IIhACN@_0d-RWY+PSiSW;DOtn71?Loo>g=a~m9IFgNco;E-Tr z6z))1zI^$lvuR)556xGYf8KlfWy84D@x>pk*v~6WpFX{+Ie!2De-i5I>Op$bd#}H~ zF0<#{L1T}-ao6L2`_5*Yx@+0y&Bl+v{xW4>Uz{Ky&KAkc#&}pEL4t*+xgk-&fQPBg z@c`JO!7cd0(P$=5vyK8wC)sVCeU=`@yGt=Ew^($mtQ{S+wArC z;+m^j$6kNU=8Jp&K++b`dj0-0{wZSTTs&1%5}5NC NJYD@<);T3K0RXD-p%4H7 literal 0 HcmV?d00001 diff --git a/images/sprites/deprecated/layout_scale_7x3_rev.png b/images/sprites/deprecated/layout_scale_7x3_rev.png new file mode 100644 index 0000000000000000000000000000000000000000..1c8baf82d929b51eed4438c6dc0980420810a870 GIT binary patch literal 1054 zcmeAS@N?(olHy`uVBq!ia0vp^DIm!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J=4@yqf`b4<~g1& zjv*CsZ|C}YKMoLS`+fYeyZ2SCt_2ERKO9}Vx>#d>1a4h-r1c+zxSq=z?xT5D(z(@X z=aydPoH=<(mRe=|KK?xcd3kx~_WJMfy{lqwWp(SD&3aoiGquQ+nwprps|)7Wv-I;u zUvbUL%JRB*|Guin?z??wj~{nm|NZ*Qvfb-u=wv%MTz8Cpl9rxc?OUH=Hakd1Y-xao zi`xA2r|;g4eZOY?VyC7hvCK@b4v7?%ma48^y}GEfQgWu(Ql;wZ>UVRdPZ!_0bLY$F zZ{MEX%HO1_@>WWKLv+)=eR@~3uEsFbXKkG|#Y^>NiPfiHzi!>ARGt-@b)Sn?C(_WnEp_+d`Jslt7SKTeq6tyno+ZJ@4t4FIRFU?^oX95!*o+A(*$y6e ztX#M(ZEQ;ZS9x&B=2utW21zW*c2LNY)lgy9VBz6nY<4=ZK)_(=F?;?yoj7x*=cb?H zz9pJ2_m}5w4erp-!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J=4@yqf`b4<_VrI zjv*CsZ|{10O9x6E`&jew<0JvoF2?|lt_nv%Lq$g23?GwqM_TI`#P!}BYh5(^M(fT! zZ>v2nC;mzkdR+2Mvy$(R!?BYyji1l&+bA7;`SRu5^Pg`S8yin*xp_14=T^4AzifZ( z^<1nQ#Ldn9>ElPmgBSC*w`XmQ+PnF<{N23kx@sp)6?pEl=T3}@i+d;g%lO{Cdn&Wf zdZ|t3oa(py>A!#bzOVY&&c@ld<9dU^mR89pzkWrTnVUa-^-Al?!-or}c&UD$_56AI z&b@ozR@c^+9(R`vn*dVE#&+}Gy=h)clkytk*M?1w(Nmx6=N=aq_v^e<=-ROA&Ajpu zb!QaLrUgHH_H4<;j2Y4bTQ+S{;^*gox3$%2;eJW0^>*U!l2!ZaRW`D#{Bu^#p*|Qy;sPccxke}o}SEWH+$#jE3Uu(`_pZ1 zd1-0slj8P^mTOFFzQxA~ZE59Bsx|hLI$~v)DZ#?i+>j_>;N1M??ORW~`Q`G*_hls~ zJL~D|pMBlJ+F8WQap;?($%&gcXU=|b`@8(a8+Y$cUA$QNb5wJa%U(8?#NPr^Po6wE z^7neP=}U`}ea+3x2&n@KoCyL3JWOql2MjnQ*ccBhB*5$&)PkSmSt6sNjQWi`{O34+ zdA~CHxa1M_a|$m@ZrPkuuq$M{xPME&Y`VbwsI_W4W6sSfk@?lUJ80#M>rx^ruS^v< zZns}hc=h8)L|IvxQlO65+3XcQYRPipf$JC@Z`kqh3QgajFquW|!~*wgOMoG7;K=q@ z&L}fxLXMesuiIf8MLj8%m!=9A#5B);-nC27bJna`uOg1C_dc(@J6~Fwon_%wlR3cr O%i!ti=d#Wzp$PzKSGVc_ literal 0 HcmV?d00001 diff --git a/images/sprites/deprecated/layout_scale_7x3_vert.png b/images/sprites/deprecated/layout_scale_7x3_vert.png new file mode 100644 index 0000000000000000000000000000000000000000..fe10e9e1541941decbd23df67678296e7500766d GIT binary patch literal 1090 zcmeAS@N?(olHy`uVBq!ia0vp^DIm!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&os5wD3yVM`GBX3 zV@O5Z+qs_J%7G$opHKHP_bsq!)OggOv}n-+?&pcAyD!K;IMmv)E1+cYY>DFAzdb^; zYf2}FXnnPN@%})gnWyc;x$C@K*H*QjJ9o}LeqX(&$(-2O*dQG-?bgOdM$M^SLEbxK z*1bM{-2Lm-C81hVySRfTTMyVQ}`1y0^ znRDk(-Ml&T<*Qe#a&mHZbef@v9K7IS9R$E(JR8{q=H{kV)7c1`Exw9j8`Lbn? z6s*?CiF-b-XpV`A+0pscci;J^PgA#>Yler18`;{*{{Hdfg`9ft#ryaFTc5adXHHID zUX}X&=LZiqTIYQ1SzY?Y<(2z{+qa`HUVh-lA3kyN@~Y`YcYlBX+B9zJYLd+_(~UL8HXQ@3u-DnEBt!P?sT-En!9=#seb zu&_PF=M)$d1Pmltc-R=59S=~IxuI#s^_9jR)f<{#@II7KNnfMzajj{MzmZ2Z%$mbo zkMceqSNNI4T39|Mc|y&`rWx&PUWje*{Qh*o%PanmJ{8yt*FYHROW zUtjf8>`X#{(wyB|y5GV@4kT#p3$`+g+F1m!?PVTIKET?(VsN!NV(ur$#5b^GC)c zs@udQvQIdo0A%rWI_@~+C$R@aS|F2ktPi=Y6AK-`Fn6xgYTkCpFQugGZS}gy%~IND zEiRf()9cu05yg4j{N~ve$thb8o%^35bL6|q*?2a_$&Lqrk@1=hsQ+g6+6~G7jtOM8 z%Erz-_Ps(1tov)&4a4RS{7-K+e{C<~5n|Bh(7(aS@Lj-QjY4vAGS4LQFoC#MX$CgN z!(2vocIOl-lUW}|hA{-OKV-FjdvRC7ahtcHl?VO4MTx(eQO$Ao{w^R94z{<%vEm?K opI%3t%A);NOCIWqbwAy|+ON6GyGH#xFuyZ+y85}Sb4q9e0EBb&5C8xG literal 0 HcmV?d00001 diff --git a/images/sprites/deprecated/layout_scale_7x3_vert_hover.png b/images/sprites/deprecated/layout_scale_7x3_vert_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..85461b2125d3b3f4aed0a1d072034ad4393ddb14 GIT binary patch literal 1070 zcmeAS@N?(olHy`uVBq!ia0vp^DIm!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&os5wD3yVMd5x!w zV@O5Z+qvG}%8nv#pHKJln`midu>>Ar@9JP4*7*gM8aFpL+uQ&6+o=3dLQ1OWX3n;0lJfH9Pm6Av zx^0ch^;{aXa{sK0*;lemMJLakHEWgqSN(hU?%jFuVuiG%q@kpoT-o>U-@k5_*y|Ro zc>VhIyvoX(v9Yl;bMo_dJ1t!B+{WI1_wC!aXI#G?UOVq%or&nCUAta=`~H2ekX>^$!L@W+oG^Lj7lohW@WdqU94C&!K*yYuwv(r_nbV`JlY4<9<7 zkBx}vX!VGb6qkJ49)9BN*p#}!ouc-=i`wV?PG8#_CznQYswV_eUiKc9U*>5G`rmGqQ5v*ygX z^1oVBMnrq+@22}}I#<}Vje(O}`>VqCm*LT@jxxvlNm^1CXM z)223S>#KM)DbW7k2UXR(%5QgV-TE}Q zn2VF4wZTy_A%H_dgo%xs%r?~{G0XiF{~i=ll0FpZaVo;;(OT0QcFiUBFuM{tFY5l& zP>I!1+_hMybxF7C5t&VkbQ5YlJ-?s0Td_Izw~ykXg9jUG$*awV}OXp{>iaeG9j_s>WZ8oEB0lDIuY8npucXa^03geLRtCHVE5AB(fXK z;!13tYj81yL;Fn&=X!y#8=T^Cia<%dJx&pc>M=FKhq$a0om)@vc7{xKT)jb9(060) zaVyo8F?XMIp4%9p`03FKp+0bYsDvgyuU8R!WbJXO-RZyr0Rs(|o@pRMD%WsXKQnJz zv*EHlkhM(UU%)#12>U6ECon`f?MP5(c%zsQ;gpu1uBno%qZrdF&A`QYSjfoS++8s< zne(BJHbX4;!=}0a5_E4EF5k-}{zj#LYr^q2iYm2H-vlP(hpQKfE|C##)> f=H-}0|K%2luyl%=w>}1#w;4QL{an^LB{Ts50xrp6 literal 0 HcmV?d00001 diff --git a/images/sprites/layouts.png b/images/sprites/layouts.png index 857cab6191a34e8138d0550d75a6307014f525f7..2ce7eea22927529c531c80d9b3a16dabbee19cf3 100644 GIT binary patch literal 24701 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 literal 4385 zcmYkAc|26#|HlWBCA(3UA)h`(^D%=KK86pes7P9bWRQ^1keHh-jb$u@_7QE8r7)vp zzly<(WJ$%uaLu43%t8zy-_hs$`2K$Pk9*JieO~YLe4l&X_dL$yrnxvf$jfTV!eB7@ zLkIUChrz@_QM+AQLUgx2NXr&Iyj+}49*B>RudJ-h%*=fJ`0=aJg@lBJl$4Zf*RC}+ zHLb0!-Me?MsHo`Hty^EeeoahFOiN2^Y;0UvSt+MbYHMq6-?_7}u+Y`j#pQBYEEc1^ zz2NE7vJc~7J;NMA9p^nAR10|ff8CCeK43(@S**CPXdF}!!uEN zCYz+#Y;99HjIGI%Ro&Xu8T;IOMF{)W{-OOmYGhT>=a|Drf^fG|_|tCLm)`^{8H-hf zan9n}V%vL(EiZS}09^|>llX)ozhM_7OyOF3!16Tg{FeUop?!T?XAitJRm>_=!$ufR z#bj-oCNzo|8qUp@x+>`&cQuCr8LCU8vtLZo1f(_R#Kv> zCp2l6jn1Cf*pyLr=Z{k>IFS3i`Xy|&?mdGgBpxZ?iNLy7xMAL|eFk6mw_7_^5TLOo zv8IYs`YorGV^(ayMjid|YSG-nLn>R=2)?D$hi!2hYcfCyIVH zmEPLeZXH5M-!8SNGd^w-@$1T8w9?_&#^*|4fi#rrk>b`6Pl4*;|F!V1A+KkWJVS!{ zS@qEe<-#XFw(vak5B5O@qcNRj6}>xFq-n4ViqSOd*%EgP#cVPKpUs(GHpLdB@)kYt zI#ix%0nNUYzwM!}k4Arou>Hwdft6Z55bKuMN1@8YIvXdcYk+nphm^nQg>{ivR7}d@V`G9 zJo>%dvl$7sz3VH0f z_Nxrc8T`JW`~5FX9r#7*k_Q9up26i`I*`DLHt|1S#$Zqma*%nOoaL2-EIehH6{B{E zbzK+AmE_58x!HmGewhE-6#7AQG>1K#KKnu))O{<5u3#T78k@=udeSpmN+MD7b_V*^D zBT;ai+VBqnFN5`Y|E@Pt_+A+wB}Zu>n43Wcs|FWEby@NZ-U%?1FO5%8*qNDbdPPvH z{J4()s{0KMY~;XaYBcMRNUnnIKQbiRklNw;Xy_7=jE-i_-}Y+Ol0#1!T-+)&`5}7> zr0i`ih>Vz7NLB}X`7bYyN?lUiSH`A${z%P^X3c$ybmP-o-qojRwOem`K|oOV?x&i^ z_G|^VjrtF-BU9X)Gnp3Jqx03bdfGSOoWQcY+G|5CO2}HlsTgguZ}Q%FNt`TLX&!F= zWx^?LVakAOn{5a$BRZDKDb!7c_8gm*#dahN!I5MQD#p*kds-HHlv)$J z8>Dkc)6bo=w*duX{-0aDe(LN*{`G>OfvaM;T#S;$od!4M)!tcO=nu$KP0H5$Lrt#d z4ddx@=u2m_&Mw&nekR8tZ+Xr6W%dN?N{Y4e@Wi^ctBg6LeVPQh-}r#|2>7 z+WA~9R~Flx$K-r~Da9U-szd^kxB#N#h=A6b)4V>TB-!qkLb+tsAWLIF5}i+&2n&Kq z+ZbVXY!@k`-pnIl0aivV_jRiX=rMKJnVIo$vi%4*Ci40cPdDCxjkYKJ0?rxentlm7NB2jiVHeI()%3g(JGyuPxsXf$ORbDWQ zVn^%6v?)_0w#m?MhwwE&42pTTyh)%2P_54LUpCco+H!8nWA_m-uc}0D^f_u%aBFf+ zL;rF3DgsTr9rC+RHkf$z8a>A_tHMp2V`;~3EHZP0yZP7KOmed}`yQ^AqUtpxh6Y9R zGBrrwIE+l1l1`{;cxDWrIP&nKvqN}~+it5pK2C2%x^e`6_ln#PyM^bl$Q1{0xajT? zdg*a43uoGWNFFdPI+w`2-mkEz`Abri_m?n4J3w9Li0L7xRwo~=J?;LIu-WhM9zZ^5 zCgH!Ykw4W$V?FvUXaIR$2QP;mi$o@bpqQLQd=a#ooXIcJm%Bc3XlEtnHlFc{_Qp1O z1X*eSTR|j87JA{lcG4UHFBLVO7w<}7bDp;bM;~;SNyleFDSQg7>?c@S_ z{emc;nIvV%b!_<5U$!S_)*dp?x_xq^OY^Kt+q5p2)o;f(c->Hi`o`o{ZNQeDiN@)C z6)5Nz2I9O9cI?|}F9Pb<0)d0Wllkf!MO9By#s&urBIsXCXbs1~=mr^t0t3V3nxKfi zel3RuPe^Z5#%3l4;Cb)LbGRU~EyLtbtt{q6yp>4s0AC0cXropKxq299?>QA{_gH2~ z?T_FF#&m96=GtRDFqomm44X8Ma%EWV?)QwWk)k!61;gdZ@qRUR$5uUg{5z92AxOGb zUszDyaIe~H#<9!mifcs2U>Nq@&K7HX-k6~!#|sVRq&U8*j#>1>@7gzOb;ihg&Q8{) zyE%8ac+|Jr6i3hL-1@H+p&*yc|DT^b21%Qb zCq$+$8*VtC2@>LWWM-Hjt$cQXw~XQ>tFg65``Nq4pKdb)2ZYT11#i4)az;&mx0W{t z9}IIy&Zx0S#r4_TnXfBe@36IO{k<`modo0blPs(!6DQ@b6)hqg(0G%d{e{jzM+831cVGj zTI*(9@(V|R=fP>!j#m>8u610wu6OO+L{=9Np5o~3=$K#XwO-uG zO71O%9|w~%OyminY ztQBt;9p=L(_qJmuw@sTtnWKf8C~Kw>CN2N8CcVKGJTeQjwJk0?kuh(ErRVMVuF6|F z1~HM)bAMluv{~5-N(k)0_SrSA>_E~pWOZ;OZ}&%Q@TvtWqG~fzoh+nz?u4?-h6_(KF=Kso&1|WPSDyC6NVB2=vlN?DSNxvIDmqK3%xjudzP9Z_v9J?}%$ zPv2y_*W~<`6`gCy+uq7`L~1G;MyOO#3p^lrAh7}zO#^l1eLm$zje`KVAu*+yr(A2d z1iulpn7$~!)dG2gU6yJ?WRyBPFmq1r4OOnGk_PWJzKyjMNIuRRS1z?EEdjuvmpn09 zBSTxzV~q;G%62J3QzlsYGLmGzgJf<&5@ri%`Dt=v^4-<^qN8G0p0V!Z From 2dad89d9e9a58dd0228f6d84f8dc8a524c6be163 Mon Sep 17 00:00:00 2001 From: Peter Date: Mon, 22 Dec 2014 01:48:01 -0800 Subject: [PATCH 4/7] Integrated adding custom layout for scaled layouts. --- css/style.less | 156 ++++++++++++++++++++++++++++++++++++++++ js/custom_view.js | 12 +++- js/layout.js | 34 ++++++--- js/resize.js | 2 +- manifest.json | 24 +++---- public/style.css | 2 +- public/tabResize.js | 48 +++++++++---- public/tabResize.min.js | 2 +- 8 files changed, 236 insertions(+), 44 deletions(-) diff --git a/css/style.less b/css/style.less index 2657c37..cd4cc57 100644 --- a/css/style.less +++ b/css/style.less @@ -336,6 +336,22 @@ button.disabled { .selector-url(-600px,100px); } + .layout-6x4-scale-horizontal { + .selector-url(-700px,100px); + } + + .layout-7x3-scale-horizontal { + .selector-url(-900px,100px); + } + + .layout-6x4-scale-vertical { + .selector-url(-1100px,100px); + } + + .layout-7x3-scale-vertical { + .selector-url(-1200px,100px); + } + .close-button { display: block; @@ -822,6 +838,42 @@ body { .tab-layer { float: right !important; } + + .layout-6x4-scale-horizontal { + .selector-url(-800px,0px); + } + + .layout-7x3-scale-horizontal { + .selector-url(-1000px,0px); + } + + .layout-6x4-scale-vertical { + .selector-url(-1100px,0px); + } + + .layout-7x3-scale-vertical { + .selector-url(-1200px,0px); + } + + .main-view .resize-container .resize-selector-container { + &:hover { + .layout-6x4-scale-horizontal { + .selector-url(-800px,100px); + } + + .layout-7x3-scale-horizontal { + .selector-url(-1000px,100px); + } + + .layout-6x4-scale-vertical { + .selector-url(-1100px,100px); + } + + .layout-7x3-scale-vertical { + .selector-url(-1200px,100px); + } + } + } } &.empty-tab-not-selected { @@ -965,6 +1017,110 @@ body { } } +.layout-6x4-scale-horizontal { + .selector-url(-700px,0px); + + .tab-layer-1 { + width: 60%; + height: 100%; + + .fav-icon { + top: 35px; + left: 17px; + } + } + + .tab-layer-2 { + width: 40%; + height: 100%; + + .fav-icon { + top: 35px; + left: 7px; + } + } +} + +.layout-7x3-scale-horizontal { + .selector-url(-900px,0px); + + .tab-layer-1 { + width: 67%; + height: 100%; + + .fav-icon { + top: 35px; + left: 20px; + } + } + + .tab-layer-2 { + width: 33%; + height: 100%; + + .fav-icon { + top: 35px; + left: 3px; + } + } +} + +.layout-6x4-scale-vertical { + .selector-url(-1100px,0px); + + .tab-layer-1 { + width: 100%; + height: 60%; + + .fav-icon { + top: 21px; + left: 35px; + } + } + + .tab-layer-2 { + width: 100%; + height: 40%; + + .fav-icon { + top: 15px; + left: 42px; + width: 18px !important; + height: 18px !important; + background-size: 18px 18px !important; + } + } +} + +.layout-7x3-scale-vertical { + .selector-url(-1200px,0px); + + .tab-layer-1 { + width: 100%; + height: 67%; + + .fav-icon { + top: 24px; + left: 35px; + } + } + + .tab-layer-2 { + width: 100%; + height: 33%; + + .fav-icon { + top: 12px; + left: 42px; + width: 18px !important; + height: 18px !important; + background-size: 18px 18px !important; + } + } +} + + + //sortable styles .sortable-placeholder { width: 113px; diff --git a/js/custom_view.js b/js/custom_view.js index cd84352..4e0a9d3 100644 --- a/js/custom_view.js +++ b/js/custom_view.js @@ -41,7 +41,8 @@ * performs save of new layout */ handleCustomSave: function(){ - var option = $('.custom-view').hasClass('scaled') ? 'scaled' : 'fixed'; + var option = $('.custom-view').hasClass('scaled') ? 'scaled' : 'fixed', + layoutType; if(option === 'fixed'){ var customRows = $('#numRows').val(), @@ -52,14 +53,19 @@ if(!Number(customRows) || !Number(customCols) || Number(customRows) < 1 || Number(customCols) < 1){ //window.alert('Please enter valid input values.'); } else { - var layoutType = customRows + 'x' + customCols; + layoutType = customRows + 'x' + customCols; resize.layout.addLayout(layoutType); resize.layout.processTabInfo($('.layout-' + layoutType)); this.hideCustomMenu(); } } else { var orientation = getScaledOrientation(), - option = getScaledOption(); + scaledOption = getScaledOption(); + + layoutType = scaledOption[0] + 'x' + scaledOption[1] + '-scale-' + orientation; + resize.layout.addLayout(layoutType); + resize.layout.processTabInfo($('.layout-' + layoutType)); + this.hideCustomMenu(); } }, diff --git a/js/layout.js b/js/layout.js index 43111aa..f11f484 100644 --- a/js/layout.js +++ b/js/layout.js @@ -45,17 +45,23 @@ * adds layout markup to popup * @param {string} layoutType Type of layout (ROWxCOL). * @param {boolean} prepend Prepend layout to layout container if true, appends if false + * @param {string} layoutText Label Text for layout - default takes layoutType */ addLayoutMarkup: function(layoutType, prepend) { - var defaultSprite = "layout-default"; + var defaultSprite = "layout-default", + layoutText = ''; if(resize.layoutSprites.layoutItems.indexOf(layoutType) !== -1 || layoutType === '1x1'){ defaultSprite = "layout-" + layoutType; } + if(layoutType.indexOf('scale') !== -1){ + layoutText = layoutType.split('-')[0].split('x').join(':'); + } + var container = $('.resize-container'); - var selectorTemplate = '
  • ' + layoutType + '
  • '; + var selectorTemplate = '
  • ' + (layoutText || layoutType) + '
  • '; if(prepend){ container.prepend(selectorTemplate); @@ -129,16 +135,22 @@ for(;index
    '; - } + + if($curLayout.attr('data-selector-type').indexOf('scale') === -1){ + layoutType = $curLayout.attr('data-selector-type').split('x'); + rows = layoutType[0]; + cols = layoutType[1]; + tabNumber = 1; + for(var y=0; y
    '; + } + } + } else { + innerHtml += '
    ' + '
    '; } + $curLayout.html(innerHtml); } diff --git a/js/resize.js b/js/resize.js index d3bae0e..381d2d3 100644 --- a/js/resize.js +++ b/js/resize.js @@ -19,7 +19,7 @@ canvasWidth: 100, currentLayouts: null, defaultLayouts: {'layoutItems':["1x1","1x2","2x1","2x2"]}, - layoutSprites: {'layoutItems':["1x1","1x2","2x1","2x2","1x3","3x1"]}, + layoutSprites: {'layoutItems':["1x1","1x2","2x1","2x2","1x3","3x1","6x4-scale-horizontal","7x3-scale-horizontal", "6x4-scale-vertical", "7x3-scale-vertical"]}, maxSelectorsPerLine: 5, maxSelectorContainerWidth: 156, maxSelectorContainerHeight: 156, diff --git a/manifest.json b/manifest.json index 2082c90..5669a4f 100644 --- a/manifest.json +++ b/manifest.json @@ -21,27 +21,15 @@ "options_page": "options.html", "commands": { "tab-resize-1-1": { - "suggested_key": { - "default": "Ctrl+Shift+1" - }, "description": "Resize 1x1 layout" }, "tab-resize-1-2": { - "suggested_key": { - "default": "Ctrl+Shift+2" - }, "description": "Resize 1x2 layout" }, "tab-resize-2-1": { - "suggested_key": { - "default": "Ctrl+Shift+3" - }, "description": "Resize 2x1 layout" }, "tab-resize-2-2": { - "suggested_key": { - "default": "Ctrl+Shift+4" - }, "description": "Resize 2x2 layout" }, "tab-resize-1-3": { @@ -52,6 +40,18 @@ }, "tab-resize-1-3": { "description": "Resize 1x3 layout" + }, + "tab-resize-6-4-scale": { + "description": "Resize 6:4 layout" + }, + "tab-resize-6-4-scale-vertical": { + "description": "Resize 6:4 vertical layout" + }, + "tab-resize-7-3-scale": { + "description": "Resize 7:3 layout" + }, + "tab-resize-7-3-scale-vertical": { + "description": "Resize 7:3 vertical layout" } } } \ No newline at end of file diff --git a/public/style.css b/public/style.css index 979f718..236c760 100644 --- a/public/style.css +++ b/public/style.css @@ -1 +1 @@ -html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}[type=checkbox]:not(:checked),[type=checkbox]:checked{position:absolute;left:-9999px}[type=checkbox]:not(:checked)+span,[type=checkbox]:checked+span{position:relative;padding-left:25px;cursor:pointer}[type=checkbox]:not(:checked)+span:before,[type=checkbox]:checked+span:before{content:'';position:absolute;left:0;top:0;width:17px;height:17px;border:1px solid #aaa;background:#f8f8f8;border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,.3)}[type=checkbox]:not(:checked)+span:after,[type=checkbox]:checked+span:after{content:'\2713';position:absolute;top:-8px;left:1px;font-size:25px;color:#000}[type=checkbox]:not(:checked)+span:after{opacity:0;transform:scale(0)}[type=checkbox]:checked+span:after{opacity:1;transform:scale(1)}[type=checkbox]:disabled:not(:checked)+span:before,[type=checkbox]:disabled:checked+span:before{box-shadow:none;border-color:#bbb;background-color:#ddd}[type=checkbox]:disabled:checked+span:after{color:#999}[type=checkbox]:disabled+span{color:#aaa}.switch-toggle a,.switch-light span span{display:none}.switch-toggle{display:block;height:30px;position:relative;padding:0!important}.switch-toggle *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.switch-toggle a{display:block;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;transition:all .3s ease-out}.switch-toggle label,.switch-toggle>span{line-height:30px;vertical-align:middle}.switch-toggle input{position:absolute;opacity:0}.switch-toggle input+label{position:relative;top:static;right:static;left:static;display:inherit;width:50%;z-index:2;float:left;height:100%;margin:0;text-align:center;cursor:pointer}.switch-toggle input+label:hover{background:#b4e2f6;box-shadow:inset 0 0 0 3px #28a2d5;-webkit-box-shadow:inset 0 0 0 3px #28a2d5}.switch-toggle a{position:absolute;top:0;right:static;left:0;display:inherit;width:50%;z-index:1;padding:0;height:100%}.switch-toggle input:last-of-type:checked~a{left:50%}.switch-candy{background-color:#fff;border:none;border-radius:6px;color:#fff;text-align:center;border:2px solid gray}.switch-candy label{color:#000}.switch-candy input:checked+label{color:#000;cursor:default}.switch-candy input:checked+label:hover{background:0 0;box-shadow:inset 0 0 0 3px transparent;-webkit-box-shadow:inset 0 0 0 3px transparent}.switch-candy a{background-color:#eee;border:1px solid gray;border-radius:3px;background-image:-webkit-linear-gradient(top,rgba(255,255,255,.2),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(255,255,255,.2),rgba(0,0,0,0))}.switch-candy>span{color:gray;text-shadow:none}.switch-candy span{color:#fff}html,body{background:#fff;min-width:630px}.hidden{display:none}.inactive{opacity:.2;pointer-events:none}.active{display:block}strong,.bold{font-weight:700}a{text-decoration:none}a:hover{text-decoration:underline}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;font-size:18px;box-sizing:border-box}.glyphicon.glyphicon-refresh:before{content:"\e031";box-sizing:border-box}.glyphicon.glyphicon-plus{top:-1px}.glyphicon.glyphicon-plus:before{content:"\2b";box-sizing:border-box}.glyphicon.glyphicon-chevron-down:before{content:"\e114"}.icon{height:18px;width:18px;position:relative;overflow:hidden;display:inline-block}.icon.icon-screen{width:32px;height:25px}.icon .screen{width:28px;height:16px;border:2px solid #333;background:#eee}.icon .screen:before{position:absolute;content:'';width:10px;height:3px;background:#333;bottom:2px;left:11px}.icon .screen:after{position:absolute;content:'';width:22px;height:2px;background:#333;bottom:0;left:5px}input{font-family:Verdana,Geneva,sans-serif;font-size:14px}button{outline:0;color:#000;padding:5px 10px;font-size:13px;border-radius:3px;font-family:Verdana,Geneva,sans-serif;background:-webkit-linear-gradient(top,#fff 0,#f1f1f1 50%,#f6f6f6 100%);border:1px solid #707070}button:hover{background:-webkit-linear-gradient(top,#eee 0,#ccc 100%);cursor:pointer;box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070}button.primary{border:1px solid #707070;color:#fff;border:1px solid #333;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%)}button.primary:hover{box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 100%,#1c1c1c 100%,#2b2b2b 100%,#111 100%,#2c2c2c 100%,#000 100%,#131313 100%)}button.disabled{opacity:.5;pointer-events:none}.modal-box{font-family:Verdana,Geneva,sans-serif;background:#fff;border:4px solid #7C7C7C;box-shadow:0 0 4px #7c7c7c inset;-webkit-box-shadow:0 0 4px #7c7c7c inset;border-radius:8px;position:absolute;top:50%;left:50%}.modal-box .modal-body{border-radius:4px 4px 0 0;padding:2px 10px 0 10px;width:400px;height:144px}.modal-box .modal-footer{border-radius:0 0 4px 4px;padding:0 10px;border-top:1px solid silver;overflow:hidden;background:#E7F3FD}.modal-box .modal-footer .button{float:right;margin:6px 10px 6px 0}.display-setting-indicator{display:none;width:0;height:0;position:absolute;z-index:2;bottom:0;left:80px;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid silver}.main-view.display-selected .display-setting-indicator{display:block}.main-view.display-selected .resize-footer{border-bottom-width:7px}.main-view.display-selected #display-setting-layer{display:block}.main-view.display-selected #display-setting{background:#dcf0f6}.main-view.display-selected #display-setting:hover,.main-view.display-selected #display-setting:focus{background:#b4e2f6}.main-view.display-selected .glyphicon-chevron-down:before{content:"\e113"}.main-view{padding-top:4px;overflow:hidden}.main-view .resize-container{padding:0 5px;height:156px;overflow-y:auto}.main-view .resize-container .resize-selector-container{width:127px;height:127px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:1px solid transparent;border-radius:4px;padding:0 0 15px 15px;float:right}.main-view .resize-container .resize-selector-container .close-button{width:18px;height:18px;border-radius:10px;cursor:pointer;background:url(../images/sprites/close.png);position:absolute;top:2px;right:2px;display:none}.main-view .resize-container .resize-selector-container .layout-title{position:absolute;font-weight:700;font-size:16px;font-family:Verdana,Geneva,sans-serif}.main-view .resize-container .resize-selector-container .resize-selector{width:100px;height:100px;position:absolute;top:21px;border-radius:4px;border:5px solid #7C7C7C}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer{position:relative;display:inline-block;float:left;top:0;left:0}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer .fav-icon{position:absolute;background-repeat:no-repeat;background-size:27px 27px;width:27px;height:27px;background-image:url(../images/icons/defaultFavIcon.png)}.main-view .resize-container .resize-selector-container:hover{cursor:pointer;border:1px solid #D3E3F7;background:-webkit-gradient(linear,left top,left bottom,from(#dcf0f6),to(#f4f8fe));-webkit-transition:all 200ms ease-in}.main-view .resize-container .resize-selector-container:hover .layout-1x1{background:url(../images/sprites/layouts.png) 0 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x2{background:url(../images/sprites/layouts.png) -100px 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x3{background:url(../images/sprites/layouts.png) -200px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x1{background:url(../images/sprites/layouts.png) -300px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x2{background:url(../images/sprites/layouts.png) -400px 100px}.main-view .resize-container .resize-selector-container:hover .layout-3x1{background:url(../images/sprites/layouts.png) -500px 100px}.main-view .resize-container .resize-selector-container:hover .layout-default{background:url(../images/sprites/layouts.png) -600px 100px}.main-view .resize-container .resize-selector-container:hover .close-button{display:block}.main-view .resize-container .resize-selector-container:hover .close-button:hover{background:url(../images/sprites/close_hover.png)}.main-view .resize-footer{border:3px solid silver;overflow:hidden;background:#dcf0f6;clear:right;font-family:Verdana,Geneva,sans-serif}.main-view .resize-footer .footer-wrap{display:inline-block;overflow:hidden}.main-view .resize-footer .footer-wrap.button-wrap{padding:3px 0 0 2px}.main-view .resize-footer .footer-wrap.monitor-wrap{float:left;padding:6px 12px 5px 8px;border-right:3px solid silver;cursor:pointer;background:#fff;position:relative}.main-view .resize-footer .footer-wrap.monitor-wrap:hover,.main-view .resize-footer .footer-wrap.monitor-wrap:focus{background:#b4e2f6}.main-view .resize-footer .footer-wrap.monitor-wrap .display-setting-title{vertical-align:top;font-size:15px;position:relative;top:5px;padding:0 13px 0 8px;border-right:1px solid silver}.main-view .resize-footer .footer-wrap.monitor-wrap .glyphicon{top:-3px;left:3px}.main-view .resize-footer .resize-undo{margin-left:12px}.main-view .resize-footer #custom-layout{padding:4px 15px 1px 15px;float:left}.main-view .resize-footer #default-configuration{padding:3px 15px 2px 15px;float:left}.main-view .resize-footer .checkbox-container{font-family:Verdana,Geneva,sans-serif;overflow:hidden;display:inline-block;border-left:3px solid silver;float:right;background:#fff}.main-view .resize-footer .checkbox-container label{font-size:14px;display:block;padding:11px 7px 13px 10px;cursor:pointer}.main-view .resize-footer .checkbox-container label.selected{background:#dcf0f6}.main-view .resize-footer .checkbox-container label:hover{background:#b4e2f6}.main-view .resize-footer .checkbox-container label input{border-radius:3px;-webkit-border-radius:3px;vertical-align:top;width:18px;height:18px}.main-view .resize-footer .checkbox-container label span{position:relative;top:1px;left:-2px}#display-setting-layer{display:none;position:relative;bottom:0;margin:100px 50px 25px 50px;font-family:Verdana,Geneva,sans-serif}#display-setting-layer .signature{position:absolute;bottom:-22px;font-size:13px;right:-45px;font-weight:700}#display-setting-layer .signature a{color:#005579;padding-right:5px}#display-setting-layer .signature .rate-it,#display-setting-layer .signature .keyboard-shortcuts{border-left:1px solid silver;padding-left:5px;padding-right:5px}#display-setting-layer .switch-toggle{top:-80px;left:0;width:100%}#display-setting-layer .switch-toggle.right-align a{border-left-width:2px}#display-setting-layer .switch-toggle.left-align a{border-right-width:2px}#display-setting-layer .display-settings-divider{width:630px;height:1px;position:absolute;top:-22px;left:-50px;background:#000;background:-webkit-gradient(linear,0 0,100% 0,from(#fff),to(#fff),color-stop(50%,#000))}#display-setting-layer .display-entry{position:absolute;border:1px solid grey;border-radius:3px;-webkit-border-radius:3px;box-shadow:inset 0 0 0 2px gray;-webkit-box-shadow:inset 0 0 0 2px gray;background:#fff;cursor:pointer;z-index:1}#display-setting-layer .display-entry.selected{z-index:2;background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray;cursor:default}#display-setting-layer .display-entry.selected:hover{background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray}#display-setting-layer .display-entry:hover{z-index:3;background:#b4e2f6;border-color:#28a2d5;box-shadow:inset 0 0 0 4px #28a2d5;-webkit-box-shadow:inset 0 0 0 4px #28a2d5}#display-setting-layer .display-entry .display-meta{position:relative;top:10px;left:10px}.custom-view .modal-body,.custom-view .modal-footer{position:relative}.custom-view .scaled-layout-orientation{display:none;position:absolute;right:21px;top:12px;width:200px;height:30px}.custom-view .layout-option{position:absolute;left:20px;top:6px;width:180px;height:25px}.custom-view .layout-option label{font-size:14px;line-height:25px}.custom-view .scaled-input-container{display:none;position:absolute;right:-3px;top:60px}.custom-view .scaled-input-container .scaled-input{display:inline-block;width:70px;height:70px;border-radius:3px;margin-right:35px;border:2px solid grey;text-align:center;font-size:19px;cursor:pointer;line-height:70px}.custom-view .scaled-input-container .scaled-input.selected{background:#eee}.custom-view.scaled .scaled-layout-orientation{display:block}.custom-view.scaled .input-container{visibility:hidden}.custom-view.scaled .table-container .table-label-top,.custom-view.scaled .table-container .table-label-left{visibility:hidden}.custom-view.scaled .scaled-input-container{display:block}.custom-view.scaled .modal-footer button.disabled{pointer-events:auto;opacity:1}.custom-view .table-container{display:inline-block;position:relative;width:145px;height:145px;left:15px}.custom-view .table-container .table-label-top{position:absolute;left:48px;top:3px}.custom-view .table-container .table-label-left{position:absolute;top:69px;left:-7px;-webkit-transform:rotate(-90deg) translate3d(0,0,0)}.custom-view .table-container .table-cell-container{border:7px solid #7C7C7C;border-radius:4px;width:100px;height:100px;position:absolute;top:25px;left:25px}.custom-view .table-container .table-cell-container canvas{background:#B4E2F6}.custom-view .input-container{display:inline-block;position:relative;top:-25px;left:34px}.custom-view .input-container .label-container{margin-bottom:10px;overflow:hidden}.custom-view .input-container .label-container label{height:26px;float:left;margin-right:11px;line-height:26px}.custom-view .input-container .label-container .custom-value{float:right;text-align:center;border-radius:2px;border:1px solid #7C7C7C;width:90px;outline:0;padding:4px}.custom-view .input-container .label-container .custom-value:focus{border:1px solid #599EFF;box-shadow:#599EFF 0 0 2px 1px inset}.confirmation-modal .modal-body{height:75px;padding-top:35px}.confirmation-modal .modal-body .warning-sprite{width:40px;height:40px;background:url(../images/sprites/warning.png);display:inline-block;float:left;margin-left:20px;margin-right:10px}.confirmation-modal .modal-body .message{width:304px;display:inline-block;float:left}.info-modal.modal-box{display:none;z-index:5}.info-modal.modal-box .modal-body{width:550px;height:400px}.info-modal.modal-box .modal-body .header-title-wrap{margin:15px auto;text-align:center}.info-modal.modal-box .modal-body .header-title-wrap .icon-48{background:url(../images/icons/icon48.png);width:48px;height:48px;display:inline-block}.info-modal.modal-box .modal-body .header-title-wrap .header-title{display:inline-block;vertical-align:top;font-size:20px;margin:16px 16px 16px 10px}.info-modal.modal-box .modal-body .update-list-header{margin:0 0 10px 25px;font-style:italic;font-size:15px}.info-modal.modal-box .modal-body ul.update-list{margin:0 28px 0 45px;font-size:15px}.info-modal.modal-box .modal-body ul.update-list li.update-entry{list-style:disc;margin-bottom:10px;line-height:18px}.info-modal.modal-box .modal-body .update-list-footer{margin:14px 20px 0 25px;font-size:15px;line-height:16px}.info-modal.modal-box .modal-body .additional-message{font-size:15px;margin:10px 20px 5px 25px;line-height:16px}.info-modal.modal-box .modal-body a{color:#0181eb}.info-modal.modal-box .modal-body a:visited{color:#0181eb}.info-modal.modal-box .modal-footer{padding:0 36px;border:none;background:#fff}.info-modal.modal-box .modal-footer button{width:100%;margin:12px auto;float:none;height:40px;font-size:20px;padding-bottom:10px;background:-webkit-linear-gradient(top,#4096ee 0,#4096ee 100%)}#promo-modal .modal-body .header-title-wrap .icon-48{background:url(../images/icons/promo/icon48.png)}body.update #update-modal{display:block}body.update .main-view{min-height:500px}body.promo #promo-modal{display:block}body.promo .main-view{min-height:500px}body.warning #warning-modal{display:block}body.warning .main-view{min-height:500px}body.align-right .tab-layer{float:right!important}body.empty-tab-not-selected .tab-layer{background:#fff}body.empty-tab-not-selected .tab-layer .fav-icon{visibility:hidden}body.empty-tab-not-selected .tab-layer.valid-tab{background:0 0}body.empty-tab-not-selected .tab-layer.valid-tab .fav-icon{visibility:visible}body.single-tab-selected .tab-layer{background:#fff!important}body.single-tab-selected .tab-layer .fav-icon{visibility:hidden!important}body.single-tab-selected .tab-layer.tab-layer-1{background:transparent!important}body.single-tab-selected .tab-layer.tab-layer-1 .fav-icon{visibility:visible!important}.layout-1x1{background:url(../images/sprites/layouts.png) 0 0}.layout-1x1 .tab-layer{width:100%;height:100%}.layout-1x1 .tab-layer .fav-icon{left:35px;top:35px}.layout-1x2{background:url(../images/sprites/layouts.png) -100px 0}.layout-1x2 .tab-layer{width:50%;height:100%}.layout-1x2 .tab-layer .fav-icon{left:11px;top:35px}.layout-1x3{background:url(../images/sprites/layouts.png) -200px 0}.layout-1x3 .tab-layer{width:33.3%;height:100%}.layout-1x3 .tab-layer .fav-icon{left:8px;top:39px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-2x1{background:url(../images/sprites/layouts.png) -300px 0}.layout-2x1 .tab-layer{width:100%;height:50%}.layout-2x1 .tab-layer .fav-icon{left:35px;top:16px}.layout-2x2{background:url(../images/sprites/layouts.png) -400px 0}.layout-2x2 .tab-layer{width:50%;height:50%}.layout-2x2 .tab-layer .fav-icon{top:16px;left:11px}.layout-3x1{background:url(../images/sprites/layouts.png) -500px 0}.layout-3x1 .tab-layer{width:100%;height:33.3%}.layout-3x1 .tab-layer .fav-icon{top:12px;left:42px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-default{background:url(../images/sprites/layouts.png) -600px 0}.layout-default .tab-layer{display:none!important}.sortable-placeholder{width:113px;height:113px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:7px dashed darkgrey;border-radius:4px;padding:0 0 15px 15px;float:right}#update-modal.partial-update .update-entry{display:none}#update-modal.partial-update .update-entry.latest{display:block;margin-bottom:50px}#update-modal.partial-update .update-list-footer{display:none}#update-modal.partial-update .modal-body{height:350px}#warning-modal{z-index:10}#warning-modal .header-title{border-bottom:2px solid grey;padding-bottom:10px;margin-bottom:0}#warning-modal .update-entry{list-style:none;line-height:22px;font-size:16px;margin-bottom:20px} \ No newline at end of file +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}[type=checkbox]:not(:checked),[type=checkbox]:checked{position:absolute;left:-9999px}[type=checkbox]:not(:checked)+span,[type=checkbox]:checked+span{position:relative;padding-left:25px;cursor:pointer}[type=checkbox]:not(:checked)+span:before,[type=checkbox]:checked+span:before{content:'';position:absolute;left:0;top:0;width:17px;height:17px;border:1px solid #aaa;background:#f8f8f8;border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,.3)}[type=checkbox]:not(:checked)+span:after,[type=checkbox]:checked+span:after{content:'\2713';position:absolute;top:-8px;left:1px;font-size:25px;color:#000}[type=checkbox]:not(:checked)+span:after{opacity:0;transform:scale(0)}[type=checkbox]:checked+span:after{opacity:1;transform:scale(1)}[type=checkbox]:disabled:not(:checked)+span:before,[type=checkbox]:disabled:checked+span:before{box-shadow:none;border-color:#bbb;background-color:#ddd}[type=checkbox]:disabled:checked+span:after{color:#999}[type=checkbox]:disabled+span{color:#aaa}.switch-toggle a,.switch-light span span{display:none}.switch-toggle{display:block;height:30px;position:relative;padding:0!important}.switch-toggle *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.switch-toggle a{display:block;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;transition:all .3s ease-out}.switch-toggle label,.switch-toggle>span{line-height:30px;vertical-align:middle}.switch-toggle input{position:absolute;opacity:0}.switch-toggle input+label{position:relative;top:static;right:static;left:static;display:inherit;width:50%;z-index:2;float:left;height:100%;margin:0;text-align:center;cursor:pointer}.switch-toggle input+label:hover{background:#b4e2f6;box-shadow:inset 0 0 0 3px #28a2d5;-webkit-box-shadow:inset 0 0 0 3px #28a2d5}.switch-toggle a{position:absolute;top:0;right:static;left:0;display:inherit;width:50%;z-index:1;padding:0;height:100%}.switch-toggle input:last-of-type:checked~a{left:50%}.switch-candy{background-color:#fff;border:none;border-radius:6px;color:#fff;text-align:center;border:2px solid gray}.switch-candy label{color:#000}.switch-candy input:checked+label{color:#000;cursor:default}.switch-candy input:checked+label:hover{background:0 0;box-shadow:inset 0 0 0 3px transparent;-webkit-box-shadow:inset 0 0 0 3px transparent}.switch-candy a{background-color:#eee;border:1px solid gray;border-radius:3px;background-image:-webkit-linear-gradient(top,rgba(255,255,255,.2),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(255,255,255,.2),rgba(0,0,0,0))}.switch-candy>span{color:gray;text-shadow:none}.switch-candy span{color:#fff}html,body{background:#fff;min-width:630px}.hidden{display:none}.inactive{opacity:.2;pointer-events:none}.active{display:block}strong,.bold{font-weight:700}a{text-decoration:none}a:hover{text-decoration:underline}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;font-size:18px;box-sizing:border-box}.glyphicon.glyphicon-refresh:before{content:"\e031";box-sizing:border-box}.glyphicon.glyphicon-plus{top:-1px}.glyphicon.glyphicon-plus:before{content:"\2b";box-sizing:border-box}.glyphicon.glyphicon-chevron-down:before{content:"\e114"}.icon{height:18px;width:18px;position:relative;overflow:hidden;display:inline-block}.icon.icon-screen{width:32px;height:25px}.icon .screen{width:28px;height:16px;border:2px solid #333;background:#eee}.icon .screen:before{position:absolute;content:'';width:10px;height:3px;background:#333;bottom:2px;left:11px}.icon .screen:after{position:absolute;content:'';width:22px;height:2px;background:#333;bottom:0;left:5px}input{font-family:Verdana,Geneva,sans-serif;font-size:14px}button{outline:0;color:#000;padding:5px 10px;font-size:13px;border-radius:3px;font-family:Verdana,Geneva,sans-serif;background:-webkit-linear-gradient(top,#fff 0,#f1f1f1 50%,#f6f6f6 100%);border:1px solid #707070}button:hover{background:-webkit-linear-gradient(top,#eee 0,#ccc 100%);cursor:pointer;box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070}button.primary{border:1px solid #707070;color:#fff;border:1px solid #333;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%)}button.primary:hover{box-shadow:0 0 3px #707070;-webkit-box-shadow:0 0 3px #707070;background:-webkit-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 100%,#1c1c1c 100%,#2b2b2b 100%,#111 100%,#2c2c2c 100%,#000 100%,#131313 100%)}button.disabled{opacity:.5;pointer-events:none}.modal-box{font-family:Verdana,Geneva,sans-serif;background:#fff;border:4px solid #7C7C7C;box-shadow:0 0 4px #7c7c7c inset;-webkit-box-shadow:0 0 4px #7c7c7c inset;border-radius:8px;position:absolute;top:50%;left:50%}.modal-box .modal-body{border-radius:4px 4px 0 0;padding:2px 10px 0 10px;width:400px;height:144px}.modal-box .modal-footer{border-radius:0 0 4px 4px;padding:0 10px;border-top:1px solid silver;overflow:hidden;background:#E7F3FD}.modal-box .modal-footer .button{float:right;margin:6px 10px 6px 0}.display-setting-indicator{display:none;width:0;height:0;position:absolute;z-index:2;bottom:0;left:80px;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid silver}.main-view.display-selected .display-setting-indicator{display:block}.main-view.display-selected .resize-footer{border-bottom-width:7px}.main-view.display-selected #display-setting-layer{display:block}.main-view.display-selected #display-setting{background:#dcf0f6}.main-view.display-selected #display-setting:hover,.main-view.display-selected #display-setting:focus{background:#b4e2f6}.main-view.display-selected .glyphicon-chevron-down:before{content:"\e113"}.main-view{padding-top:4px;overflow:hidden}.main-view .resize-container{padding:0 5px;height:156px;overflow-y:auto}.main-view .resize-container .resize-selector-container{width:127px;height:127px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:1px solid transparent;border-radius:4px;padding:0 0 15px 15px;float:right}.main-view .resize-container .resize-selector-container .close-button{width:18px;height:18px;border-radius:10px;cursor:pointer;background:url(../images/sprites/close.png);position:absolute;top:2px;right:2px;display:none}.main-view .resize-container .resize-selector-container .layout-title{position:absolute;font-weight:700;font-size:16px;font-family:Verdana,Geneva,sans-serif}.main-view .resize-container .resize-selector-container .resize-selector{width:100px;height:100px;position:absolute;top:21px;border-radius:4px;border:5px solid #7C7C7C}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer{position:relative;display:inline-block;float:left;top:0;left:0}.main-view .resize-container .resize-selector-container .resize-selector .tab-layer .fav-icon{position:absolute;background-repeat:no-repeat;background-size:27px 27px;width:27px;height:27px;background-image:url(../images/icons/defaultFavIcon.png)}.main-view .resize-container .resize-selector-container:hover{cursor:pointer;border:1px solid #D3E3F7;background:-webkit-gradient(linear,left top,left bottom,from(#dcf0f6),to(#f4f8fe));-webkit-transition:all 200ms ease-in}.main-view .resize-container .resize-selector-container:hover .layout-1x1{background:url(../images/sprites/layouts.png) 0 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x2{background:url(../images/sprites/layouts.png) -100px 100px}.main-view .resize-container .resize-selector-container:hover .layout-1x3{background:url(../images/sprites/layouts.png) -200px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x1{background:url(../images/sprites/layouts.png) -300px 100px}.main-view .resize-container .resize-selector-container:hover .layout-2x2{background:url(../images/sprites/layouts.png) -400px 100px}.main-view .resize-container .resize-selector-container:hover .layout-3x1{background:url(../images/sprites/layouts.png) -500px 100px}.main-view .resize-container .resize-selector-container:hover .layout-default{background:url(../images/sprites/layouts.png) -600px 100px}.main-view .resize-container .resize-selector-container:hover .layout-6x4-scale-horizontal{background:url(../images/sprites/layouts.png) -700px 100px}.main-view .resize-container .resize-selector-container:hover .layout-7x3-scale-horizontal{background:url(../images/sprites/layouts.png) -900px 100px}.main-view .resize-container .resize-selector-container:hover .layout-6x4-scale-vertical{background:url(../images/sprites/layouts.png) -1100px 100px}.main-view .resize-container .resize-selector-container:hover .layout-7x3-scale-vertical{background:url(../images/sprites/layouts.png) -1200px 100px}.main-view .resize-container .resize-selector-container:hover .close-button{display:block}.main-view .resize-container .resize-selector-container:hover .close-button:hover{background:url(../images/sprites/close_hover.png)}.main-view .resize-footer{border:3px solid silver;overflow:hidden;background:#dcf0f6;clear:right;font-family:Verdana,Geneva,sans-serif}.main-view .resize-footer .footer-wrap{display:inline-block;overflow:hidden}.main-view .resize-footer .footer-wrap.button-wrap{padding:3px 0 0 2px}.main-view .resize-footer .footer-wrap.monitor-wrap{float:left;padding:6px 12px 5px 8px;border-right:3px solid silver;cursor:pointer;background:#fff;position:relative}.main-view .resize-footer .footer-wrap.monitor-wrap:hover,.main-view .resize-footer .footer-wrap.monitor-wrap:focus{background:#b4e2f6}.main-view .resize-footer .footer-wrap.monitor-wrap .display-setting-title{vertical-align:top;font-size:15px;position:relative;top:5px;padding:0 13px 0 8px;border-right:1px solid silver}.main-view .resize-footer .footer-wrap.monitor-wrap .glyphicon{top:-3px;left:3px}.main-view .resize-footer .resize-undo{margin-left:12px}.main-view .resize-footer #custom-layout{padding:4px 15px 1px 15px;float:left}.main-view .resize-footer #default-configuration{padding:3px 15px 2px 15px;float:left}.main-view .resize-footer .checkbox-container{font-family:Verdana,Geneva,sans-serif;overflow:hidden;display:inline-block;border-left:3px solid silver;float:right;background:#fff}.main-view .resize-footer .checkbox-container label{font-size:14px;display:block;padding:11px 7px 13px 10px;cursor:pointer}.main-view .resize-footer .checkbox-container label.selected{background:#dcf0f6}.main-view .resize-footer .checkbox-container label:hover{background:#b4e2f6}.main-view .resize-footer .checkbox-container label input{border-radius:3px;-webkit-border-radius:3px;vertical-align:top;width:18px;height:18px}.main-view .resize-footer .checkbox-container label span{position:relative;top:1px;left:-2px}#display-setting-layer{display:none;position:relative;bottom:0;margin:100px 50px 25px 50px;font-family:Verdana,Geneva,sans-serif}#display-setting-layer .signature{position:absolute;bottom:-22px;font-size:13px;right:-45px;font-weight:700}#display-setting-layer .signature a{color:#005579;padding-right:5px}#display-setting-layer .signature .rate-it,#display-setting-layer .signature .keyboard-shortcuts{border-left:1px solid silver;padding-left:5px;padding-right:5px}#display-setting-layer .switch-toggle{top:-80px;left:0;width:100%}#display-setting-layer .switch-toggle.right-align a{border-left-width:2px}#display-setting-layer .switch-toggle.left-align a{border-right-width:2px}#display-setting-layer .display-settings-divider{width:630px;height:1px;position:absolute;top:-22px;left:-50px;background:#000;background:-webkit-gradient(linear,0 0,100% 0,from(#fff),to(#fff),color-stop(50%,#000))}#display-setting-layer .display-entry{position:absolute;border:1px solid grey;border-radius:3px;-webkit-border-radius:3px;box-shadow:inset 0 0 0 2px gray;-webkit-box-shadow:inset 0 0 0 2px gray;background:#fff;cursor:pointer;z-index:1}#display-setting-layer .display-entry.selected{z-index:2;background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray;cursor:default}#display-setting-layer .display-entry.selected:hover{background:#eee;border-color:gray;box-shadow:inset 0 0 0 4px gray;-webkit-box-shadow:inset 0 0 0 4px gray}#display-setting-layer .display-entry:hover{z-index:3;background:#b4e2f6;border-color:#28a2d5;box-shadow:inset 0 0 0 4px #28a2d5;-webkit-box-shadow:inset 0 0 0 4px #28a2d5}#display-setting-layer .display-entry .display-meta{position:relative;top:10px;left:10px}.custom-view .modal-body,.custom-view .modal-footer{position:relative}.custom-view .scaled-layout-orientation{display:none;position:absolute;right:21px;top:12px;width:200px;height:30px}.custom-view .layout-option{position:absolute;left:20px;top:6px;width:180px;height:25px}.custom-view .layout-option label{font-size:14px;line-height:25px}.custom-view .scaled-input-container{display:none;position:absolute;right:-3px;top:60px}.custom-view .scaled-input-container .scaled-input{display:inline-block;width:70px;height:70px;border-radius:3px;margin-right:35px;border:2px solid grey;text-align:center;font-size:19px;cursor:pointer;line-height:70px}.custom-view .scaled-input-container .scaled-input.selected{background:#eee}.custom-view.scaled .scaled-layout-orientation{display:block}.custom-view.scaled .input-container{visibility:hidden}.custom-view.scaled .table-container .table-label-top,.custom-view.scaled .table-container .table-label-left{visibility:hidden}.custom-view.scaled .scaled-input-container{display:block}.custom-view.scaled .modal-footer button.disabled{pointer-events:auto;opacity:1}.custom-view .table-container{display:inline-block;position:relative;width:145px;height:145px;left:15px}.custom-view .table-container .table-label-top{position:absolute;left:48px;top:3px}.custom-view .table-container .table-label-left{position:absolute;top:69px;left:-7px;-webkit-transform:rotate(-90deg) translate3d(0,0,0)}.custom-view .table-container .table-cell-container{border:7px solid #7C7C7C;border-radius:4px;width:100px;height:100px;position:absolute;top:25px;left:25px}.custom-view .table-container .table-cell-container canvas{background:#B4E2F6}.custom-view .input-container{display:inline-block;position:relative;top:-25px;left:34px}.custom-view .input-container .label-container{margin-bottom:10px;overflow:hidden}.custom-view .input-container .label-container label{height:26px;float:left;margin-right:11px;line-height:26px}.custom-view .input-container .label-container .custom-value{float:right;text-align:center;border-radius:2px;border:1px solid #7C7C7C;width:90px;outline:0;padding:4px}.custom-view .input-container .label-container .custom-value:focus{border:1px solid #599EFF;box-shadow:#599EFF 0 0 2px 1px inset}.confirmation-modal .modal-body{height:75px;padding-top:35px}.confirmation-modal .modal-body .warning-sprite{width:40px;height:40px;background:url(../images/sprites/warning.png);display:inline-block;float:left;margin-left:20px;margin-right:10px}.confirmation-modal .modal-body .message{width:304px;display:inline-block;float:left}.info-modal.modal-box{display:none;z-index:5}.info-modal.modal-box .modal-body{width:550px;height:400px}.info-modal.modal-box .modal-body .header-title-wrap{margin:15px auto;text-align:center}.info-modal.modal-box .modal-body .header-title-wrap .icon-48{background:url(../images/icons/icon48.png);width:48px;height:48px;display:inline-block}.info-modal.modal-box .modal-body .header-title-wrap .header-title{display:inline-block;vertical-align:top;font-size:20px;margin:16px 16px 16px 10px}.info-modal.modal-box .modal-body .update-list-header{margin:0 0 10px 25px;font-style:italic;font-size:15px}.info-modal.modal-box .modal-body ul.update-list{margin:0 28px 0 45px;font-size:15px}.info-modal.modal-box .modal-body ul.update-list li.update-entry{list-style:disc;margin-bottom:10px;line-height:18px}.info-modal.modal-box .modal-body .update-list-footer{margin:14px 20px 0 25px;font-size:15px;line-height:16px}.info-modal.modal-box .modal-body .additional-message{font-size:15px;margin:10px 20px 5px 25px;line-height:16px}.info-modal.modal-box .modal-body a{color:#0181eb}.info-modal.modal-box .modal-body a:visited{color:#0181eb}.info-modal.modal-box .modal-footer{padding:0 36px;border:none;background:#fff}.info-modal.modal-box .modal-footer button{width:100%;margin:12px auto;float:none;height:40px;font-size:20px;padding-bottom:10px;background:-webkit-linear-gradient(top,#4096ee 0,#4096ee 100%)}#promo-modal .modal-body .header-title-wrap .icon-48{background:url(../images/icons/promo/icon48.png)}body.update #update-modal{display:block}body.update .main-view{min-height:500px}body.promo #promo-modal{display:block}body.promo .main-view{min-height:500px}body.warning #warning-modal{display:block}body.warning .main-view{min-height:500px}body.align-right .tab-layer{float:right!important}body.align-right .layout-6x4-scale-horizontal{background:url(../images/sprites/layouts.png) -800px 0}body.align-right .layout-7x3-scale-horizontal{background:url(../images/sprites/layouts.png) -1000px 0}body.align-right .layout-6x4-scale-vertical{background:url(../images/sprites/layouts.png) -1100px 0}body.align-right .layout-7x3-scale-vertical{background:url(../images/sprites/layouts.png) -1200px 0}body.align-right .main-view .resize-container .resize-selector-container:hover .layout-6x4-scale-horizontal{background:url(../images/sprites/layouts.png) -800px 100px}body.align-right .main-view .resize-container .resize-selector-container:hover .layout-7x3-scale-horizontal{background:url(../images/sprites/layouts.png) -1000px 100px}body.align-right .main-view .resize-container .resize-selector-container:hover .layout-6x4-scale-vertical{background:url(../images/sprites/layouts.png) -1100px 100px}body.align-right .main-view .resize-container .resize-selector-container:hover .layout-7x3-scale-vertical{background:url(../images/sprites/layouts.png) -1200px 100px}body.empty-tab-not-selected .tab-layer{background:#fff}body.empty-tab-not-selected .tab-layer .fav-icon{visibility:hidden}body.empty-tab-not-selected .tab-layer.valid-tab{background:0 0}body.empty-tab-not-selected .tab-layer.valid-tab .fav-icon{visibility:visible}body.single-tab-selected .tab-layer{background:#fff!important}body.single-tab-selected .tab-layer .fav-icon{visibility:hidden!important}body.single-tab-selected .tab-layer.tab-layer-1{background:transparent!important}body.single-tab-selected .tab-layer.tab-layer-1 .fav-icon{visibility:visible!important}.layout-1x1{background:url(../images/sprites/layouts.png) 0 0}.layout-1x1 .tab-layer{width:100%;height:100%}.layout-1x1 .tab-layer .fav-icon{left:35px;top:35px}.layout-1x2{background:url(../images/sprites/layouts.png) -100px 0}.layout-1x2 .tab-layer{width:50%;height:100%}.layout-1x2 .tab-layer .fav-icon{left:11px;top:35px}.layout-1x3{background:url(../images/sprites/layouts.png) -200px 0}.layout-1x3 .tab-layer{width:33.3%;height:100%}.layout-1x3 .tab-layer .fav-icon{left:8px;top:39px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-2x1{background:url(../images/sprites/layouts.png) -300px 0}.layout-2x1 .tab-layer{width:100%;height:50%}.layout-2x1 .tab-layer .fav-icon{left:35px;top:16px}.layout-2x2{background:url(../images/sprites/layouts.png) -400px 0}.layout-2x2 .tab-layer{width:50%;height:50%}.layout-2x2 .tab-layer .fav-icon{top:16px;left:11px}.layout-3x1{background:url(../images/sprites/layouts.png) -500px 0}.layout-3x1 .tab-layer{width:100%;height:33.3%}.layout-3x1 .tab-layer .fav-icon{top:12px;left:42px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-default{background:url(../images/sprites/layouts.png) -600px 0}.layout-default .tab-layer{display:none!important}.layout-6x4-scale-horizontal{background:url(../images/sprites/layouts.png) -700px 0}.layout-6x4-scale-horizontal .tab-layer-1{width:60%;height:100%}.layout-6x4-scale-horizontal .tab-layer-1 .fav-icon{top:35px;left:17px}.layout-6x4-scale-horizontal .tab-layer-2{width:40%;height:100%}.layout-6x4-scale-horizontal .tab-layer-2 .fav-icon{top:35px;left:7px}.layout-7x3-scale-horizontal{background:url(../images/sprites/layouts.png) -900px 0}.layout-7x3-scale-horizontal .tab-layer-1{width:67%;height:100%}.layout-7x3-scale-horizontal .tab-layer-1 .fav-icon{top:35px;left:20px}.layout-7x3-scale-horizontal .tab-layer-2{width:33%;height:100%}.layout-7x3-scale-horizontal .tab-layer-2 .fav-icon{top:35px;left:3px}.layout-6x4-scale-vertical{background:url(../images/sprites/layouts.png) -1100px 0}.layout-6x4-scale-vertical .tab-layer-1{width:100%;height:60%}.layout-6x4-scale-vertical .tab-layer-1 .fav-icon{top:21px;left:35px}.layout-6x4-scale-vertical .tab-layer-2{width:100%;height:40%}.layout-6x4-scale-vertical .tab-layer-2 .fav-icon{top:15px;left:42px;width:18px!important;height:18px!important;background-size:18px 18px!important}.layout-7x3-scale-vertical{background:url(../images/sprites/layouts.png) -1200px 0}.layout-7x3-scale-vertical .tab-layer-1{width:100%;height:67%}.layout-7x3-scale-vertical .tab-layer-1 .fav-icon{top:24px;left:35px}.layout-7x3-scale-vertical .tab-layer-2{width:100%;height:33%}.layout-7x3-scale-vertical .tab-layer-2 .fav-icon{top:12px;left:42px;width:18px!important;height:18px!important;background-size:18px 18px!important}.sortable-placeholder{width:113px;height:113px;margin:2px 4px 10px 2px;display:inline-block;position:relative;border:7px dashed darkgrey;border-radius:4px;padding:0 0 15px 15px;float:right}#update-modal.partial-update .update-entry{display:none}#update-modal.partial-update .update-entry.latest{display:block;margin-bottom:50px}#update-modal.partial-update .update-list-footer{display:none}#update-modal.partial-update .modal-body{height:350px}#warning-modal{z-index:10}#warning-modal .header-title{border-bottom:2px solid grey;padding-bottom:10px;margin-bottom:0}#warning-modal .update-entry{list-style:none;line-height:22px;font-size:16px;margin-bottom:20px} \ No newline at end of file diff --git a/public/tabResize.js b/public/tabResize.js index 1de40b7..7f8a938 100644 --- a/public/tabResize.js +++ b/public/tabResize.js @@ -45,7 +45,7 @@ if(!deferTracking) { canvasWidth: 100, currentLayouts: null, defaultLayouts: {'layoutItems':["1x1","1x2","2x1","2x2"]}, - layoutSprites: {'layoutItems':["1x1","1x2","2x1","2x2","1x3","3x1"]}, + layoutSprites: {'layoutItems':["1x1","1x2","2x1","2x2","1x3","3x1","6x4-scale-horizontal","7x3-scale-horizontal", "6x4-scale-vertical", "7x3-scale-vertical"]}, maxSelectorsPerLine: 5, maxSelectorContainerWidth: 156, maxSelectorContainerHeight: 156, @@ -318,7 +318,8 @@ if(!deferTracking) { * performs save of new layout */ handleCustomSave: function(){ - var option = $('.custom-view').hasClass('scaled') ? 'scaled' : 'fixed'; + var option = $('.custom-view').hasClass('scaled') ? 'scaled' : 'fixed', + layoutType; if(option === 'fixed'){ var customRows = $('#numRows').val(), @@ -329,16 +330,21 @@ if(!deferTracking) { if(!Number(customRows) || !Number(customCols) || Number(customRows) < 1 || Number(customCols) < 1){ //window.alert('Please enter valid input values.'); } else { - var layoutType = customRows + 'x' + customCols; + layoutType = customRows + 'x' + customCols; resize.layout.addLayout(layoutType); resize.layout.processTabInfo($('.layout-' + layoutType)); this.hideCustomMenu(); } } else { + var orientation = getScaledOrientation(), + scaledOption = getScaledOption(); + layoutType = scaledOption[0] + 'x' + scaledOption[1] + '-scale-' + orientation; + resize.layout.addLayout(layoutType); + resize.layout.processTabInfo($('.layout-' + layoutType)); + this.hideCustomMenu(); } - }, /** @@ -637,17 +643,23 @@ if(!deferTracking) { * adds layout markup to popup * @param {string} layoutType Type of layout (ROWxCOL). * @param {boolean} prepend Prepend layout to layout container if true, appends if false + * @param {string} layoutText Label Text for layout - default takes layoutType */ addLayoutMarkup: function(layoutType, prepend) { - var defaultSprite = "layout-default"; + var defaultSprite = "layout-default", + layoutText = ''; if(resize.layoutSprites.layoutItems.indexOf(layoutType) !== -1 || layoutType === '1x1'){ defaultSprite = "layout-" + layoutType; } + if(layoutType.indexOf('scale') !== -1){ + layoutText = layoutType.split('-')[0].split('x').join(':'); + } + var container = $('.resize-container'); - var selectorTemplate = '
  • ' + layoutType + '
  • '; + var selectorTemplate = '
  • ' + (layoutText || layoutType) + '
  • '; if(prepend){ container.prepend(selectorTemplate); @@ -721,16 +733,22 @@ if(!deferTracking) { for(;index
    '; - } + + if($curLayout.attr('data-selector-type').indexOf('scale') === -1){ + layoutType = $curLayout.attr('data-selector-type').split('x'); + rows = layoutType[0]; + cols = layoutType[1]; + tabNumber = 1; + for(var y=0; y
    '; + } + } + } else { + innerHtml += '
    ' + '
    '; } + $curLayout.html(innerHtml); } diff --git a/public/tabResize.min.js b/public/tabResize.min.js index 5f4789f..1c43e9c 100644 --- a/public/tabResize.min.js +++ b/public/tabResize.min.js @@ -1 +1 @@ -function sendTracking(a,b){!deferTracking&&ga&&ga("send","event",a,"clicked",b||"na")}var optOut=localStorage.getItem("tracking-opt-out"),deferTracking=!1;optOut&&"true"===optOut&&(deferTracking=!0),deferTracking||(!function(a,b,c,d,e,f,g){a.GoogleAnalyticsObject=e,a[e]=a[e]||function(){(a[e].q=a[e].q||[]).push(arguments)},a[e].l=1*new Date,f=b.createElement(c),g=b.getElementsByTagName(c)[0],f.async=1,f.src=d,g.parentNode.insertBefore(f,g)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-34217520-2","auto"),ga("set","checkProtocolTask",function(){}),ga("require","displayfeatures"),ga("send","pageview","/index.html")),function(){var a={tabsArray:[],currentTab:null,numRows:0,numCols:0,width:0,height:0,canvasHeight:100,canvasWidth:100,currentLayouts:null,defaultLayouts:{layoutItems:["1x1","1x2","2x1","2x2"]},layoutSprites:{layoutItems:["1x1","1x2","2x1","2x2","1x3","3x1"]},maxSelectorsPerLine:5,maxSelectorContainerWidth:156,maxSelectorContainerHeight:156,singleTab:!1,main_view:{},custom_view:{},options:{},util:{},badgeLimit:7,isMac:-1!==navigator.platform.toUpperCase().indexOf("MAC")};window.resize=a}(),function(){var a=window.resize,b={initialize:function(){a.currentLayouts=JSON.parse(localStorage.getItem("layoutItems")),a.currentLayouts||(localStorage.setItem("layoutItems",JSON.stringify(a.defaultLayouts)),a.currentLayouts=$.extend(!0,{},a.defaultLayouts)),this.populateMainView();var b=localStorage.getItem("singleTab");b&&"true"===b&&($("#checkbox-single-tab").attr("checked",!0),$("label.single-tab").addClass("selected"),$("body").addClass("single-tab-selected"),a.singleTab=!0);var c=localStorage.getItem("emptyTab");c&&"true"!==c?$("body").addClass("empty-tab-not-selected"):($("#checkbox-empty-tab").attr("checked",!0),$("label.empty-tab").addClass("selected"),a.emptyTab=!0);var d=localStorage.getItem("displayLayer");d&&"true"!==d||($(".main-view").addClass("display-selected"),a.displayLayer=!0);var e=localStorage.getItem("alignment");e?(a.alignment=e,"left"!==a.alignment&&$("body").addClass("align-right")):a.alignment="left",$("#"+a.alignment).trigger("click",["defer-tracking"]),a.displayUtil.initialize(),localStorage.getItem("lastTab")&&$("#undo-layout").removeClass("disabled"),window.backJs=chrome.extension.getBackgroundPage(),chrome.runtime.onMessage.addListener(function(b){"enable-undo"===b&&a.options.enableUndoButton()});var f=Number(localStorage.getItem("updateBadge"));f||(localStorage.setItem("updateBadge",0),chrome.browserAction.setBadgeText({text:"NEW"}),chrome.browserAction.setBadgeBackgroundColor({color:[221,129,39,255]})),fg&&""!==g,i=$("body");(!localStorage.getItem("update-seen")||h)&&(i.addClass("update"),h?localStorage.removeItem("update-seen"):localStorage.getItem("warning-seen")||(i.addClass("warning"),a.options.showWarningModal()),a.options.showUpdateModal(h?"partial-update":"")),localStorage.getItem("update-seen")&&f===a.badgeLimit&&!localStorage.getItem("promo-seen")&&(i.addClass("promo"),a.options.showPromoModal()),$(function(){a.util.initSortable()})},populateMainView:function(){for(var b=0;b=5&&0===c&&($("body").height($("body").height()-a.maxSelectorContainerHeight),$("html").height($("html").height()-a.maxSelectorContainerHeight))},resizeTabs:function(b,c){a.numRows=b,a.numCols=c;var d=$(".display-entry.selected").data();$.isEmptyObject(d)?(a.width=Math.round(window.screen.availWidth/a.numCols),a.height=Math.round(window.screen.availHeight/a.numRows),a.offsetX=0,a.offsetY=0,a.fullWidth=window.screen.availWidth,a.fullHeight=window.screen.availHeight):(a.width=Math.round(d.width/a.numCols),a.height=Math.round(d.height/a.numRows),a.offsetX=d.left,a.offsetY=d.top,a.fullWidth=d.width,a.fullHeight=d.height);window.chrome.tabs.query({currentWindow:!0},function(b){a.tabsArray=b,window.chrome.tabs.query({currentWindow:!0,highlighted:!0},function(b){a.currentTab=b[0];var c=a.currentTab.index;b.length>1&&(a.tabsArray=b,c=0);var d=function(){return backJs.util.processTabs(a,a.tabsArray,c,a.currentTab.windowId,a.singleTab,a.currentTab.incognito)};a.singleTab?backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c,c+1),d):backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c),d)})})}};window.resize.main_view=b}(),function(){function a(){return $("#horizontal-scaled").attr("checked")?"horizontal":"vertical"}function b(){return $(".scaled-input.selected").text().split(":")}var c=window.resize,d={hideCustomMenu:function(){$(".custom-view").addClass("hidden"),$(".main-view").removeClass("inactive"),c.util.clearCanvas()},showCustomMenu:function(){this.clearCustomValues(),$(".layout-option #fixed").trigger("click"),$(".main-view").addClass("inactive"),$(".custom-view").removeClass("hidden").trigger("show"),$(".custom-view input.row").focus()},clearCustomValues:function(){$("#numRows").val(""),$("#numCols").val(""),$("#input-save").addClass("disabled")},handleCustomSave:function(){var a=$(".custom-view").hasClass("scaled")?"scaled":"fixed";if("fixed"===a){var b=$("#numRows").val(),d=$("#numCols").val();if(this.clearCustomValues(),!Number(b)||!Number(d)||Number(b)<1||Number(d)<1);else{var e=b+"x"+d;c.layout.addLayout(e),c.layout.processTabInfo($(".layout-"+e)),this.hideCustomMenu()}}},showScaledMenu:function(){var d=a(),e=b(),f=document.getElementById("myCanvas"),g=f.getContext("2d");c.util.clearCanvas(),c.util.drawScaledTable(c.canvasWidth,c.canvasHeight,e[0],d,g)}};window.resize.custom_view=d}(),function(){var a=window.resize,b={processSingleTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("singleTab",c),a.singleTab=c,$("label.single-tab").toggleClass("selected"),$("body").toggleClass("single-tab-selected")},processEmptyTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("emptyTab",c),a.emptyTab=c,$("label.empty-tab").toggleClass("selected"),$("body").toggleClass("empty-tab-not-selected")},processDisplayLayerSelection:function(b){var c=b?!0:!1;localStorage.setItem("displayLayer",c),a.displayLayer=c},processAlignmentSelection:function(b){localStorage.setItem("alignment",b),a.alignment=b,"right"===b?$("body").addClass("align-right"):$("body").removeClass("align-right")},undoResize:function(){var b=this;a.lastTab=JSON.parse(localStorage.getItem("lastTab"));var c=a.lastTab.lastTabIndex,d=a.lastTab.lastWindowId,e=a.lastTab.lastTabsArray;window.chrome.windows.get(d,{},function(f){f?b.recombineTabs(c,d,e):chrome.tabs.query({status:"complete"},function(c){for(var d={},f=[],g=0;gd;b++,d++){a=c[b];var e=$(".resize-container").find(".tab-layer-"+d);e.addClass("valid-tab");for(var f=0;fd;d++)e.push(a.eq(d).attr("data-selector-type"));b.currentLayouts.layoutItems=e,localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts))},addLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);-1!==d&&(c.splice(d,1),this._removeLayoutMarkup(a)),b.currentLayouts.layoutItems.unshift(a),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this.addLayoutMarkup(a,!0),b.util.resetSortable()},addLayoutMarkup:function(a,c){var d="layout-default";(-1!==b.layoutSprites.layoutItems.indexOf(a)||"1x1"===a)&&(d="layout-"+a);var e=$(".resize-container"),f='
  • '+a+'
  • ';c?e.prepend(f):e.append(f)},removeLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);c.splice(d,1),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this._removeLayoutMarkup(a)},_removeLayoutMarkup:function(a){var b='[data-selector-type="'+a+'"]';$(b).parent().remove()},resetLayout:function(){this._removeAllLayouts(),localStorage.setItem("layoutItems",JSON.stringify(b.defaultLayouts)),b.currentLayouts=$.extend(!0,{},b.defaultLayouts),b.main_view.populateMainView(),this.processTabInfo(),b.util.resetSortable()},_removeAllLayouts:function(){$(".resize-container").children().remove()},processTabInfo:function(c){var d,e,f,g,h,i,j,k=b.currentWindowTabs,l=c||$(".resize-container").find(".resize-selector-container .resize-selector"),m=0,n=0;if(l=l.filter(function(){return!$(this).hasClass("layout-default")}),m=l.length,k&&k.length>0){for(;m>n;n++){h="",d=l.eq(n),e=d.attr("data-selector-type").split("x"),f=e[0],g=e[1],j=1;for(var o=0;f>o;o++)for(var p=0;g>p;p++)h+='
    ';d.html(h)}for(n=0;nh;h++)e.moveTo(0,g*h),e.lineTo(b,g*h);for(var i=1;d>i;i++)e.moveTo(f*i,0),e.lineTo(f*i,a);e.closePath(),e.stroke()},drawScaledTable:function(a,b,c,d,e){e.beginPath();var f=.1*a*c;"horizontal"===d?(e.moveTo(f,0),e.lineTo(f,a)):(e.moveTo(0,f),e.lineTo(b,f)),e.closePath(),e.stroke()},clearCanvas:function(){var a=$("canvas")[0],b=a.getContext("2d");b.clearRect(0,0,b.canvas.width,b.canvas.height)},initSortable:function(){$(".sortable").sortable().on("sortupdate",function(){resize.layout.updateLayoutStore(),sendTracking("dnd-event","dnd-label")}),b=!0},resetSortable:function(){if(b){var a=$(".sortable");a.sortable("destroy"),a.sortable()}}},b=!1;window.resize.util=a}(),function(a){function b(a){for(var b,e,f,g,k,l=a.displays,m=null,n=null,o=null,p=null,q=0,r=l.length;r>q;q++)k=l[q].workArea,(null===m||m>k.left)&&(m=k.left),(null===n||nk.top)&&(o=k.top),(null===p||pf?f:g,i=0!==m?-1*m*h:0,j=0!==o?-1*o*h:0,d(h,e)}function c(){a("#display-setting-layer");return{width:k,height:l}}function d(b,c){var d=a("#display-setting-layer");d.height(b*c)}function e(b,c,d){var e=a('
    ');return e.css({top:b.top*h+j,left:b.left*h+i,width:b.width*h,height:b.height*h}).data(a.extend({id:c},b)),e.find(".display-meta").text(b.width+"x"+b.height),d&&e.addClass("selected"),e}var f,g=window.resize,h=.15,i=0,j=0,k=530,l=250,m={initialize:function(){chrome.system&&chrome.system.display&&(g.display=chrome.system.display,f=a("#display-setting-layer"),f.on("click",".display-entry",function(){var b=a(this),c={},d=b.data("id"),e=b.find(".display-meta").text();c[d]=!0,f.find(".display-entry").removeClass("selected"),b.addClass("selected"),sendTracking("display-select",e)}),g.display.getInfo(function(a){chrome.windows.getCurrent({populate:!0},function(c){var d,h,i={left:c.left+c.width-100,top:c.top+100},j=backJs.util.displayInfoFormatter(a,i);b(j);for(var k=0;k1?a:c.tabs,g.layout.processTabInfo()})})}))}};g.displayUtil=m}(window.jQuery),function(){var a=window.resize,b=a.main_view,c=a.custom_view,d=a.util,e=a.layout,f=a.options,g=(a.displayUtil,$(document));g.ready(function(){b.initialize()}).on("click",".resize-selector-container",function(){var a=$(this).children(".resize-selector"),c=a.attr("data-selector-type"),d=c.split("x");b.resizeTabs(Number(d[0]),Number(d[1])),sendTracking("resize",c)}).on("show",".modal-box",function(a){a.stopPropagation(),d.centerModal($(this))}).on("click",".modal-box",function(a){a.stopPropagation()}).on("click",".close-button",function(a){a.stopPropagation();var b=$(this).siblings(".resize-selector").attr("data-selector-type");e.removeLayout(b),sendTracking("resize-delete",b)}).on("click","#undo-layout",function(){f.undoResize(),sendTracking("undo","undo")}).on("click","#custom-layout",function(a){a.stopPropagation(),c.showCustomMenu(),sendTracking("custom-layout","open")}).on("click","#default-configuration",function(a){a.stopPropagation(),f.showConfirmationModal(),sendTracking("default-layout","open")}).on("click","#confirmation-cancel",function(){f.hideConfirmationModal(),sendTracking("default-layout","cancel")}).on("click","#confirmation-apply",function(){e.resetLayout(),f.hideConfirmationModal(),sendTracking("default-layout","apply")}).on("click","#input-cancel,.main-view",function(){$(".custom-view").hasClass("hidden")||(c.clearCustomValues(),c.hideCustomMenu(),sendTracking("custom-layout","cancel"))}).on("click","#input-save",function(){c.handleCustomSave(),sendTracking("custom-layout","apply")}).on("click","body",function(){$(".custom-view").hasClass("hidden")||(d.clearCanvas(),c.hideCustomMenu(),sendTracking("custom-layout","cancel-layer")),$(".confirmation-modal").hasClass("hidden")||(f.hideConfirmationModal(),sendTracking("default-layout","cancel-layer"))}).on("keyup","#numRows, #numCols",function(b){b.stopPropagation();var c=document.getElementById("myCanvas"),e=c.getContext("2d"),f=Number($("#numRows").attr("value")),g=Number($("#numCols").attr("value"));if(d.clearCanvas(),f&&f>0&&g&&g>0)f>a.canvasHeight/4&&(f=a.canvasHeight/4),g>a.canvasWidth/4&&(g=a.canvasWidth/4),d.drawTable(a.canvasWidth,a.canvasHeight,f,g,e),$("#input-save").removeClass("disabled");else{var h=$(this),i=Number(h.attr("value"));(0===i||isNaN(i))&&(h.attr("value",""),$("#input-save").addClass("disabled"))}}).on("change","#checkbox-single-tab",function(){var a=$(this).attr("checked");f.processSingleTabSelection(a),sendTracking("single-tab",a?"checked":"unchecked")}).on("change","#checkbox-empty-tab",function(){var a=$(this).attr("checked");f.processEmptyTabSelection(a),sendTracking("empty-tab",a?"checked":"unchecked")}).on("click","#display-setting",function(){var a,b=$(".main-view");b.toggleClass("display-selected"),a=b.hasClass("display-selected"),f.processDisplayLayerSelection(a),sendTracking("display-settings",a?"opened":"closed")}).on("click","#display-setting-layer .switch-toggle input",function(a,b){var c=$(this).attr("id");$("#display-setting-layer .switch-toggle").removeClass("right-align left-align").addClass(c+"-align"),f.processAlignmentSelection(c),b||sendTracking("alignment",c)}).on("click","#update-apply",function(){f.hideUpdateModal()}).on("click","#promo-apply",function(){f.hidePromoModal()}).on("click","#warning-apply",function(){f.hideWarningModal()}).on("click",".signature a",function(){$(this).hasClass("rate-it")?sendTracking("info-links","rate-it"):sendTracking("info-links","author")}).on("click","a.keyboard-shortcuts",function(){chrome.tabs.create({url:"chrome://extensions/configureCommands"})}).on("click",".custom-view .switch-toggle.layout-option input",function(){var a=$(this).attr("id"),b=!1,e=$(".custom-view");("scaled"===a&&!e.hasClass("scaled")||"scaled"!==a&&e.hasClass("scaled"))&&(b=!0),e["scaled"===a?"addClass":"removeClass"]("scaled"),b&&(d.clearCanvas(),c.clearCustomValues(),"scaled"===a&&c.showScaledMenu())}).on("click",".custom-view .scaled-input",function(){var a=$(this);$(".custom-view .scaled-input").removeClass("selected"),a.addClass("selected"),c.showScaledMenu()}).on("click",".custom-view .switch-toggle.scaled-layout-orientation input",function(){c.showScaledMenu()})}(); \ No newline at end of file +function sendTracking(a,b){!deferTracking&&ga&&ga("send","event",a,"clicked",b||"na")}var optOut=localStorage.getItem("tracking-opt-out"),deferTracking=!1;optOut&&"true"===optOut&&(deferTracking=!0),deferTracking||(!function(a,b,c,d,e,f,g){a.GoogleAnalyticsObject=e,a[e]=a[e]||function(){(a[e].q=a[e].q||[]).push(arguments)},a[e].l=1*new Date,f=b.createElement(c),g=b.getElementsByTagName(c)[0],f.async=1,f.src=d,g.parentNode.insertBefore(f,g)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-34217520-2","auto"),ga("set","checkProtocolTask",function(){}),ga("require","displayfeatures"),ga("send","pageview","/index.html")),function(){var a={tabsArray:[],currentTab:null,numRows:0,numCols:0,width:0,height:0,canvasHeight:100,canvasWidth:100,currentLayouts:null,defaultLayouts:{layoutItems:["1x1","1x2","2x1","2x2"]},layoutSprites:{layoutItems:["1x1","1x2","2x1","2x2","1x3","3x1","6x4-scale-horizontal","7x3-scale-horizontal","6x4-scale-vertical","7x3-scale-vertical"]},maxSelectorsPerLine:5,maxSelectorContainerWidth:156,maxSelectorContainerHeight:156,singleTab:!1,main_view:{},custom_view:{},options:{},util:{},badgeLimit:7,isMac:-1!==navigator.platform.toUpperCase().indexOf("MAC")};window.resize=a}(),function(){var a=window.resize,b={initialize:function(){a.currentLayouts=JSON.parse(localStorage.getItem("layoutItems")),a.currentLayouts||(localStorage.setItem("layoutItems",JSON.stringify(a.defaultLayouts)),a.currentLayouts=$.extend(!0,{},a.defaultLayouts)),this.populateMainView();var b=localStorage.getItem("singleTab");b&&"true"===b&&($("#checkbox-single-tab").attr("checked",!0),$("label.single-tab").addClass("selected"),$("body").addClass("single-tab-selected"),a.singleTab=!0);var c=localStorage.getItem("emptyTab");c&&"true"!==c?$("body").addClass("empty-tab-not-selected"):($("#checkbox-empty-tab").attr("checked",!0),$("label.empty-tab").addClass("selected"),a.emptyTab=!0);var d=localStorage.getItem("displayLayer");d&&"true"!==d||($(".main-view").addClass("display-selected"),a.displayLayer=!0);var e=localStorage.getItem("alignment");e?(a.alignment=e,"left"!==a.alignment&&$("body").addClass("align-right")):a.alignment="left",$("#"+a.alignment).trigger("click",["defer-tracking"]),a.displayUtil.initialize(),localStorage.getItem("lastTab")&&$("#undo-layout").removeClass("disabled"),window.backJs=chrome.extension.getBackgroundPage(),chrome.runtime.onMessage.addListener(function(b){"enable-undo"===b&&a.options.enableUndoButton()});var f=Number(localStorage.getItem("updateBadge"));f||(localStorage.setItem("updateBadge",0),chrome.browserAction.setBadgeText({text:"NEW"}),chrome.browserAction.setBadgeBackgroundColor({color:[221,129,39,255]})),fg&&""!==g,i=$("body");(!localStorage.getItem("update-seen")||h)&&(i.addClass("update"),h?localStorage.removeItem("update-seen"):localStorage.getItem("warning-seen")||(i.addClass("warning"),a.options.showWarningModal()),a.options.showUpdateModal(h?"partial-update":"")),localStorage.getItem("update-seen")&&f===a.badgeLimit&&!localStorage.getItem("promo-seen")&&(i.addClass("promo"),a.options.showPromoModal()),$(function(){a.util.initSortable()})},populateMainView:function(){for(var b=0;b=5&&0===c&&($("body").height($("body").height()-a.maxSelectorContainerHeight),$("html").height($("html").height()-a.maxSelectorContainerHeight))},resizeTabs:function(b,c){a.numRows=b,a.numCols=c;var d=$(".display-entry.selected").data();$.isEmptyObject(d)?(a.width=Math.round(window.screen.availWidth/a.numCols),a.height=Math.round(window.screen.availHeight/a.numRows),a.offsetX=0,a.offsetY=0,a.fullWidth=window.screen.availWidth,a.fullHeight=window.screen.availHeight):(a.width=Math.round(d.width/a.numCols),a.height=Math.round(d.height/a.numRows),a.offsetX=d.left,a.offsetY=d.top,a.fullWidth=d.width,a.fullHeight=d.height);window.chrome.tabs.query({currentWindow:!0},function(b){a.tabsArray=b,window.chrome.tabs.query({currentWindow:!0,highlighted:!0},function(b){a.currentTab=b[0];var c=a.currentTab.index;b.length>1&&(a.tabsArray=b,c=0);var d=function(){return backJs.util.processTabs(a,a.tabsArray,c,a.currentTab.windowId,a.singleTab,a.currentTab.incognito)};a.singleTab?backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c,c+1),d):backJs.util.setUndoStorage(a,a.currentTab.index,a.currentTab.windowId,a.tabsArray.slice(c),d)})})}};window.resize.main_view=b}(),function(){function a(){return $("#horizontal-scaled").attr("checked")?"horizontal":"vertical"}function b(){return $(".scaled-input.selected").text().split(":")}var c=window.resize,d={hideCustomMenu:function(){$(".custom-view").addClass("hidden"),$(".main-view").removeClass("inactive"),c.util.clearCanvas()},showCustomMenu:function(){this.clearCustomValues(),$(".layout-option #fixed").trigger("click"),$(".main-view").addClass("inactive"),$(".custom-view").removeClass("hidden").trigger("show"),$(".custom-view input.row").focus()},clearCustomValues:function(){$("#numRows").val(""),$("#numCols").val(""),$("#input-save").addClass("disabled")},handleCustomSave:function(){var d,e=$(".custom-view").hasClass("scaled")?"scaled":"fixed";if("fixed"===e){var f=$("#numRows").val(),g=$("#numCols").val();this.clearCustomValues(),!Number(f)||!Number(g)||Number(f)<1||Number(g)<1||(d=f+"x"+g,c.layout.addLayout(d),c.layout.processTabInfo($(".layout-"+d)),this.hideCustomMenu())}else{var h=a(),i=b();d=i[0]+"x"+i[1]+"-scale-"+h,c.layout.addLayout(d),c.layout.processTabInfo($(".layout-"+d)),this.hideCustomMenu()}},showScaledMenu:function(){var d=a(),e=b(),f=document.getElementById("myCanvas"),g=f.getContext("2d");c.util.clearCanvas(),c.util.drawScaledTable(c.canvasWidth,c.canvasHeight,e[0],d,g)}};window.resize.custom_view=d}(),function(){var a=window.resize,b={processSingleTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("singleTab",c),a.singleTab=c,$("label.single-tab").toggleClass("selected"),$("body").toggleClass("single-tab-selected")},processEmptyTabSelection:function(b){var c=b?!0:!1;localStorage.setItem("emptyTab",c),a.emptyTab=c,$("label.empty-tab").toggleClass("selected"),$("body").toggleClass("empty-tab-not-selected")},processDisplayLayerSelection:function(b){var c=b?!0:!1;localStorage.setItem("displayLayer",c),a.displayLayer=c},processAlignmentSelection:function(b){localStorage.setItem("alignment",b),a.alignment=b,"right"===b?$("body").addClass("align-right"):$("body").removeClass("align-right")},undoResize:function(){var b=this;a.lastTab=JSON.parse(localStorage.getItem("lastTab"));var c=a.lastTab.lastTabIndex,d=a.lastTab.lastWindowId,e=a.lastTab.lastTabsArray;window.chrome.windows.get(d,{},function(f){f?b.recombineTabs(c,d,e):chrome.tabs.query({status:"complete"},function(c){for(var d={},f=[],g=0;gd;b++,d++){a=c[b];var e=$(".resize-container").find(".tab-layer-"+d);e.addClass("valid-tab");for(var f=0;fd;d++)e.push(a.eq(d).attr("data-selector-type"));b.currentLayouts.layoutItems=e,localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts))},addLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);-1!==d&&(c.splice(d,1),this._removeLayoutMarkup(a)),b.currentLayouts.layoutItems.unshift(a),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this.addLayoutMarkup(a,!0),b.util.resetSortable()},addLayoutMarkup:function(a,c){var d="layout-default",e="";(-1!==b.layoutSprites.layoutItems.indexOf(a)||"1x1"===a)&&(d="layout-"+a),-1!==a.indexOf("scale")&&(e=a.split("-")[0].split("x").join(":"));var f=$(".resize-container"),g='
  • '+(e||a)+'
  • ';c?f.prepend(g):f.append(g)},removeLayout:function(a){var c=b.currentLayouts.layoutItems,d=c.indexOf(a);c.splice(d,1),localStorage.setItem("layoutItems",JSON.stringify(b.currentLayouts)),this._removeLayoutMarkup(a)},_removeLayoutMarkup:function(a){var b='[data-selector-type="'+a+'"]';$(b).parent().remove()},resetLayout:function(){this._removeAllLayouts(),localStorage.setItem("layoutItems",JSON.stringify(b.defaultLayouts)),b.currentLayouts=$.extend(!0,{},b.defaultLayouts),b.main_view.populateMainView(),this.processTabInfo(),b.util.resetSortable()},_removeAllLayouts:function(){$(".resize-container").children().remove()},processTabInfo:function(c){var d,e,f,g,h,i,j,k=b.currentWindowTabs,l=c||$(".resize-container").find(".resize-selector-container .resize-selector"),m=0,n=0;if(l=l.filter(function(){return!$(this).hasClass("layout-default")}),m=l.length,k&&k.length>0){for(;m>n;n++){if(h="",d=l.eq(n),-1===d.attr("data-selector-type").indexOf("scale")){e=d.attr("data-selector-type").split("x"),f=e[0],g=e[1],j=1;for(var o=0;f>o;o++)for(var p=0;g>p;p++)h+='
    '}else h+='
    ';d.html(h)}for(n=0;nh;h++)e.moveTo(0,g*h),e.lineTo(b,g*h);for(var i=1;d>i;i++)e.moveTo(f*i,0),e.lineTo(f*i,a);e.closePath(),e.stroke()},drawScaledTable:function(a,b,c,d,e){e.beginPath();var f=.1*a*c;"horizontal"===d?(e.moveTo(f,0),e.lineTo(f,a)):(e.moveTo(0,f),e.lineTo(b,f)),e.closePath(),e.stroke()},clearCanvas:function(){var a=$("canvas")[0],b=a.getContext("2d");b.clearRect(0,0,b.canvas.width,b.canvas.height)},initSortable:function(){$(".sortable").sortable().on("sortupdate",function(){resize.layout.updateLayoutStore(),sendTracking("dnd-event","dnd-label")}),b=!0},resetSortable:function(){if(b){var a=$(".sortable");a.sortable("destroy"),a.sortable()}}},b=!1;window.resize.util=a}(),function(a){function b(a){for(var b,e,f,g,k,l=a.displays,m=null,n=null,o=null,p=null,q=0,r=l.length;r>q;q++)k=l[q].workArea,(null===m||m>k.left)&&(m=k.left),(null===n||nk.top)&&(o=k.top),(null===p||pf?f:g,i=0!==m?-1*m*h:0,j=0!==o?-1*o*h:0,d(h,e)}function c(){a("#display-setting-layer");return{width:k,height:l}}function d(b,c){var d=a("#display-setting-layer");d.height(b*c)}function e(b,c,d){var e=a('
    ');return e.css({top:b.top*h+j,left:b.left*h+i,width:b.width*h,height:b.height*h}).data(a.extend({id:c},b)),e.find(".display-meta").text(b.width+"x"+b.height),d&&e.addClass("selected"),e}var f,g=window.resize,h=.15,i=0,j=0,k=530,l=250,m={initialize:function(){chrome.system&&chrome.system.display&&(g.display=chrome.system.display,f=a("#display-setting-layer"),f.on("click",".display-entry",function(){var b=a(this),c={},d=b.data("id"),e=b.find(".display-meta").text();c[d]=!0,f.find(".display-entry").removeClass("selected"),b.addClass("selected"),sendTracking("display-select",e)}),g.display.getInfo(function(a){chrome.windows.getCurrent({populate:!0},function(c){var d,h,i={left:c.left+c.width-100,top:c.top+100},j=backJs.util.displayInfoFormatter(a,i);b(j);for(var k=0;k1?a:c.tabs,g.layout.processTabInfo()})})}))}};g.displayUtil=m}(window.jQuery),function(){var a=window.resize,b=a.main_view,c=a.custom_view,d=a.util,e=a.layout,f=a.options,g=(a.displayUtil,$(document));g.ready(function(){b.initialize()}).on("click",".resize-selector-container",function(){var a=$(this).children(".resize-selector"),c=a.attr("data-selector-type"),d=c.split("x");b.resizeTabs(Number(d[0]),Number(d[1])),sendTracking("resize",c)}).on("show",".modal-box",function(a){a.stopPropagation(),d.centerModal($(this))}).on("click",".modal-box",function(a){a.stopPropagation()}).on("click",".close-button",function(a){a.stopPropagation();var b=$(this).siblings(".resize-selector").attr("data-selector-type");e.removeLayout(b),sendTracking("resize-delete",b)}).on("click","#undo-layout",function(){f.undoResize(),sendTracking("undo","undo")}).on("click","#custom-layout",function(a){a.stopPropagation(),c.showCustomMenu(),sendTracking("custom-layout","open")}).on("click","#default-configuration",function(a){a.stopPropagation(),f.showConfirmationModal(),sendTracking("default-layout","open")}).on("click","#confirmation-cancel",function(){f.hideConfirmationModal(),sendTracking("default-layout","cancel")}).on("click","#confirmation-apply",function(){e.resetLayout(),f.hideConfirmationModal(),sendTracking("default-layout","apply")}).on("click","#input-cancel,.main-view",function(){$(".custom-view").hasClass("hidden")||(c.clearCustomValues(),c.hideCustomMenu(),sendTracking("custom-layout","cancel"))}).on("click","#input-save",function(){c.handleCustomSave(),sendTracking("custom-layout","apply")}).on("click","body",function(){$(".custom-view").hasClass("hidden")||(d.clearCanvas(),c.hideCustomMenu(),sendTracking("custom-layout","cancel-layer")),$(".confirmation-modal").hasClass("hidden")||(f.hideConfirmationModal(),sendTracking("default-layout","cancel-layer"))}).on("keyup","#numRows, #numCols",function(b){b.stopPropagation();var c=document.getElementById("myCanvas"),e=c.getContext("2d"),f=Number($("#numRows").attr("value")),g=Number($("#numCols").attr("value"));if(d.clearCanvas(),f&&f>0&&g&&g>0)f>a.canvasHeight/4&&(f=a.canvasHeight/4),g>a.canvasWidth/4&&(g=a.canvasWidth/4),d.drawTable(a.canvasWidth,a.canvasHeight,f,g,e),$("#input-save").removeClass("disabled");else{var h=$(this),i=Number(h.attr("value"));(0===i||isNaN(i))&&(h.attr("value",""),$("#input-save").addClass("disabled"))}}).on("change","#checkbox-single-tab",function(){var a=$(this).attr("checked");f.processSingleTabSelection(a),sendTracking("single-tab",a?"checked":"unchecked")}).on("change","#checkbox-empty-tab",function(){var a=$(this).attr("checked");f.processEmptyTabSelection(a),sendTracking("empty-tab",a?"checked":"unchecked")}).on("click","#display-setting",function(){var a,b=$(".main-view");b.toggleClass("display-selected"),a=b.hasClass("display-selected"),f.processDisplayLayerSelection(a),sendTracking("display-settings",a?"opened":"closed")}).on("click","#display-setting-layer .switch-toggle input",function(a,b){var c=$(this).attr("id");$("#display-setting-layer .switch-toggle").removeClass("right-align left-align").addClass(c+"-align"),f.processAlignmentSelection(c),b||sendTracking("alignment",c)}).on("click","#update-apply",function(){f.hideUpdateModal()}).on("click","#promo-apply",function(){f.hidePromoModal()}).on("click","#warning-apply",function(){f.hideWarningModal()}).on("click",".signature a",function(){$(this).hasClass("rate-it")?sendTracking("info-links","rate-it"):sendTracking("info-links","author")}).on("click","a.keyboard-shortcuts",function(){chrome.tabs.create({url:"chrome://extensions/configureCommands"})}).on("click",".custom-view .switch-toggle.layout-option input",function(){var a=$(this).attr("id"),b=!1,e=$(".custom-view");("scaled"===a&&!e.hasClass("scaled")||"scaled"!==a&&e.hasClass("scaled"))&&(b=!0),e["scaled"===a?"addClass":"removeClass"]("scaled"),b&&(d.clearCanvas(),c.clearCustomValues(),"scaled"===a&&c.showScaledMenu())}).on("click",".custom-view .scaled-input",function(){var a=$(this);$(".custom-view .scaled-input").removeClass("selected"),a.addClass("selected"),c.showScaledMenu()}).on("click",".custom-view .switch-toggle.scaled-layout-orientation input",function(){c.showScaledMenu()})}(); \ No newline at end of file From 279dfe87c018bdf55b531e17f0db290dca12fdef Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 23 Dec 2014 01:40:08 -0800 Subject: [PATCH 5/7] Complete integration of shortcut keys and scaled layouts. --- css/style.less | 18 ---- index.html | 25 +++-- js/background.js | 130 +++++++++++++++++++++----- js/main.js | 10 +- js/main_view.js | 126 ++++++++++++++++--------- js/{opt_out.js => option_page.js} | 2 + js/options.js | 6 +- manifest.json | 6 +- options.html | 35 ++++++- public/style.css | 2 +- public/tabResize.js | 142 +++++++++++++++++++---------- public/tabResize.min.js | 2 +- public/tabResize_background.js | 130 +++++++++++++++++++++----- public/tabResize_background.min.js | 2 +- 14 files changed, 455 insertions(+), 181 deletions(-) rename js/{opt_out.js => option_page.js} (74%) diff --git a/css/style.less b/css/style.less index cd4cc57..89cd03f 100644 --- a/css/style.less +++ b/css/style.less @@ -1134,24 +1134,6 @@ body { float: right; } -#update-modal.partial-update { - .update-entry { - display: none; - &.latest { - display: block; - margin-bottom: 50px; - } - } - - .update-list-footer { - display: none; - } - - .modal-body { - height: 350px; - } -} - #warning-modal { z-index: 10; .header-title { diff --git a/index.html b/index.html index 1849b5d..414c042 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Resize - +
    @@ -135,30 +135,27 @@
    - Tab Resize 2.1.1 Updates + Tab Resize 2.2.0 Updates
    What's New:
    + +
    + -- Past change log details -- +
    + +
    If you like the extension and find it useful please show your support by rating it in the web store. Thanks! -Peter