JSFiddle buttons

Hide sidebar, maximize views

  1. // ==UserScript==
  2. // @name JSFiddle buttons
  3. // @description Hide sidebar, maximize views
  4. // @version 1.0.0
  5. // @namespace BP
  6. // @author Benjamin Philipp <dev [at - please don't spam] benjamin-philipp.com>
  7. // @include https://jsfiddle.net/*
  8. // @require http://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js
  9. // @require https://greasyfork.org/scripts/447081-bp-funcs/code/BP%20Funcs.js
  10. // @run-at document-body
  11. // @noframes
  12. // @grant GM_addStyle
  13. // @connect *
  14. // ==/UserScript==
  15.  
  16. /* jshint loopfunc: true, -W027 */
  17. /* eslint-disable curly, no-redeclare */
  18. /* eslint no-trailing-spaces: off */
  19. /* globals $, GM_info, GM_setValue, GM_getValue, GM_xmlhttpRequest, GM_addStyle, escape, uneval, unsafeWindow, BPLogger_default, log, getParam, waitFor */
  20.  
  21. var logger = BPLogger_default();
  22.  
  23. function main(){
  24. GM_addStyle(`
  25. #sidebar{
  26. position: relative;
  27. }
  28. .sidebar-hidden #sidebar{
  29. width: 0;
  30. }
  31. .sidebar-hidden #sidebar section{
  32. display: none;
  33. }
  34. #layout-container.sidebar-hidden{
  35. grid-template-columns: 0px 1fr;
  36. }
  37. .bp-toggle{
  38. position: absolute;
  39. right: 0;
  40. top: 0;
  41. padding: 10px 3px;
  42. z-index: 100;
  43. font-weight: 900;
  44. background: #1f2227;
  45. border: 1px solid #2c2f34;
  46. border-right: none;
  47. border-radius: 5px 0 0 5px;
  48. cursor: pointer;
  49. opacity: 0.5;
  50. }
  51. .sidebar-hidden #sidebar .bp-toggle{
  52. right: unset;
  53. left: 100%;
  54. border: 1px solid #2c2f34;
  55. border-left: none;
  56. border-radius: 0 5px 5px 0;
  57. }
  58. .bp-toggle:hover{
  59. opacity: 1;
  60. }
  61. #sidebar .bp-toggle::before{
  62. content: "<<";
  63. }
  64. .sidebar-hidden #sidebar .bp-toggle::before{
  65. content: ">>";
  66. }
  67. #editor.hasMax .panel{
  68. display: none;
  69. }
  70. #editor.hasMax .panel-v{
  71. display: none;
  72. width: 0%;
  73. }
  74. #editor.hasMax .panel-v.max{
  75. display: block;
  76. width: calc(100% - 1px) !important;
  77. position: absolute;
  78. }
  79. #editor.hasMax .panel.max{
  80. display: block;
  81. height: calc(100% - 1px) !important;
  82. width: calc(100% - 1px);
  83. position: absolute;
  84. }
  85. .panel .bp-toggle{
  86. bottom: 0px;
  87. top: unset;
  88. padding: 5px;
  89. color: #fff;
  90. border: 1px solid #2c2f34;
  91. border-bottom: none;
  92. border-right: none;
  93. border-radius: 5px 0 0;
  94. }
  95. .panel .bp-toggle::before{
  96. content: "\\26F6";
  97. }
  98. `);
  99. waitFor("#sidebar", function(o){
  100. log("got sidebar");
  101. $("<div class='bp-toggle' title='Toggle Sidebar'></div>").appendTo(o).click(function(){
  102. log("clicked toggle");
  103. $("#layout-container").toggleClass("sidebar-hidden");
  104. });
  105. });
  106. waitFor({
  107. sel: "#editor .panel",
  108. cb: function(o){
  109. log("got panels", o);
  110. $("<div class='bp-toggle' title='Toggle Panel Maximize'></div>").appendTo(o).click(function(){
  111. var p = $(this).parent();
  112. p.toggleClass("max");
  113. p.parent().toggleClass("max");
  114. $("#editor").toggleClass("hasMax");
  115. $("body").resize();
  116. // log("clicked toggle", t, p);
  117. });
  118. },
  119. maxTries: -1
  120. });
  121. }
  122.  
  123. setTimeout(main, 0);