diff --git a/composer.json b/composer.json index 06b5c756..b8945e3b 100644 --- a/composer.json +++ b/composer.json @@ -1,14 +1,27 @@ { - "name": "filp/whoops", + "name": "leafs/exception", "license": "MIT", - "description": "php error handling for cool kids", - "keywords": ["library", "error", "handling", "exception", "whoops", "throwable"], - "homepage": "https://filp.github.io/whoops/", + "description": "Error handler for leaf (fork of whoops)", + "keywords": [ + "library", + "error", + "handling", + "exception", + "whoops", + "throwable" + ], + "homepage": "https://github.com/leafsphp/exception", "authors": [ { "name": "Filipe Dobreira", "homepage": "https://github.com/filp", "role": "Developer" + }, + { + "name": "Michael Darko", + "email": "mickdd22@gmail.com", + "homepage": "https://mychi.netlify.app", + "role": "Developer" } ], "scripts": { @@ -29,17 +42,12 @@ }, "autoload": { "psr-4": { - "Whoops\\": "src/Whoops/" + "Leaf\\": "src" } }, "autoload-dev": { "psr-4": { - "Whoops\\": "tests/Whoops/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" + "Leaf\\": "tests/Whoops/" } } } diff --git a/src/Whoops/Handler/CallbackHandler.php b/src/Exception/Handler/CallbackHandler.php similarity index 97% rename from src/Whoops/Handler/CallbackHandler.php rename to src/Exception/Handler/CallbackHandler.php index cc46e700..b295d4d2 100644 --- a/src/Whoops/Handler/CallbackHandler.php +++ b/src/Exception/Handler/CallbackHandler.php @@ -4,7 +4,7 @@ * @author Filipe Dobreira */ -namespace Whoops\Handler; +namespace Leaf\Exception\Handler; use InvalidArgumentException; diff --git a/src/Whoops/Handler/Handler.php b/src/Exception/Handler/Handler.php similarity index 94% rename from src/Whoops/Handler/Handler.php rename to src/Exception/Handler/Handler.php index cf1f7087..067b24ba 100644 --- a/src/Whoops/Handler/Handler.php +++ b/src/Exception/Handler/Handler.php @@ -4,10 +4,10 @@ * @author Filipe Dobreira */ -namespace Whoops\Handler; +namespace Leaf\Exception\Handler; -use Whoops\Exception\Inspector; -use Whoops\RunInterface; +use Leaf\Exceptions\Inspector; +use Leaf\Exception\RunInterface; /** * Abstract implementation of a Handler. diff --git a/src/Whoops/Handler/HandlerInterface.php b/src/Exception/Handler/HandlerInterface.php similarity index 86% rename from src/Whoops/Handler/HandlerInterface.php rename to src/Exception/Handler/HandlerInterface.php index 0265a85b..2e0b6982 100644 --- a/src/Whoops/Handler/HandlerInterface.php +++ b/src/Exception/Handler/HandlerInterface.php @@ -4,10 +4,10 @@ * @author Filipe Dobreira */ -namespace Whoops\Handler; +namespace Leaf\Exception\Handler; -use Whoops\Exception\Inspector; -use Whoops\RunInterface; +use Leaf\Exceptions\Inspector; +use Leaf\Exception\RunInterface; interface HandlerInterface { diff --git a/src/Whoops/Handler/JsonResponseHandler.php b/src/Exception/Handler/JsonResponseHandler.php similarity index 96% rename from src/Whoops/Handler/JsonResponseHandler.php rename to src/Exception/Handler/JsonResponseHandler.php index 2966d385..47165699 100644 --- a/src/Whoops/Handler/JsonResponseHandler.php +++ b/src/Exception/Handler/JsonResponseHandler.php @@ -4,9 +4,9 @@ * @author Filipe Dobreira */ -namespace Whoops\Handler; +namespace Leaf\Exception\Handler; -use Whoops\Exception\Formatter; +use Leaf\Exceptions\Formatter; /** * Catches an exception and converts it to a JSON diff --git a/src/Whoops/Handler/PlainTextHandler.php b/src/Exception/Handler/PlainTextHandler.php similarity index 98% rename from src/Whoops/Handler/PlainTextHandler.php rename to src/Exception/Handler/PlainTextHandler.php index 6c148aa9..7521d50d 100644 --- a/src/Whoops/Handler/PlainTextHandler.php +++ b/src/Exception/Handler/PlainTextHandler.php @@ -6,11 +6,11 @@ * @author Pierre-Yves Landuré */ -namespace Whoops\Handler; +namespace Leaf\Exception\Handler; use InvalidArgumentException; use Psr\Log\LoggerInterface; -use Whoops\Exception\Frame; +use Leaf\Exceptions\Frame; /** * Handler outputing plaintext error messages. Can be used @@ -226,7 +226,7 @@ private function canOutput() /** * Get the frame args var_dump. - * @param \Whoops\Exception\Frame $frame [description] + * @param \Leaf\Exceptions\Frame $frame [description] * @param integer $line [description] * @return string */ diff --git a/src/Whoops/Handler/PrettyPageHandler.php b/src/Exception/Handler/PrettyPageHandler.php similarity index 98% rename from src/Whoops/Handler/PrettyPageHandler.php rename to src/Exception/Handler/PrettyPageHandler.php index e5a2560a..d0c2a4aa 100644 --- a/src/Whoops/Handler/PrettyPageHandler.php +++ b/src/Exception/Handler/PrettyPageHandler.php @@ -4,16 +4,16 @@ * @author Filipe Dobreira */ -namespace Whoops\Handler; +namespace Leaf\Exception\Handler; use InvalidArgumentException; use RuntimeException; use Symfony\Component\VarDumper\Cloner\AbstractCloner; use Symfony\Component\VarDumper\Cloner\VarCloner; use UnexpectedValueException; -use Whoops\Exception\Formatter; -use Whoops\Util\Misc; -use Whoops\Util\TemplateHelper; +use Leaf\Exceptions\Formatter; +use Leaf\Exception\Util\Misc; +use Leaf\Exception\Util\TemplateHelper; class PrettyPageHandler extends Handler { @@ -300,7 +300,7 @@ public function handle() /** * Get the stack trace frames of the exception currently being handled. * - * @return \Whoops\Exception\FrameCollection + * @return mixed */ protected function getExceptionFrames() { @@ -383,7 +383,7 @@ public function addDataTableCallback($label, /* callable */ $callback) throw new InvalidArgumentException('Expecting callback argument to be callable'); } - $this->extraTables[$label] = function (\Whoops\Exception\Inspector $inspector = null) use ($callback) { + $this->extraTables[$label] = function (\Leaf\Exceptions\Inspector $inspector = null) use ($callback) { try { $result = call_user_func($callback, $inspector); diff --git a/src/Whoops/Handler/XmlResponseHandler.php b/src/Exception/Handler/XmlResponseHandler.php similarity index 97% rename from src/Whoops/Handler/XmlResponseHandler.php rename to src/Exception/Handler/XmlResponseHandler.php index d695750a..94e30112 100644 --- a/src/Whoops/Handler/XmlResponseHandler.php +++ b/src/Exception/Handler/XmlResponseHandler.php @@ -4,10 +4,10 @@ * @author Filipe Dobreira */ -namespace Whoops\Handler; +namespace Leaf\Exception\Handler; use SimpleXMLElement; -use Whoops\Exception\Formatter; +use Leaf\Exceptions\Formatter; /** * Catches an exception and converts it to an XML diff --git a/src/Whoops/Resources/css/prism.css b/src/Exception/Resources/css/prism.css similarity index 60% rename from src/Whoops/Resources/css/prism.css rename to src/Exception/Resources/css/prism.css index 5faf2b88..38c1cb02 100644 --- a/src/Whoops/Resources/css/prism.css +++ b/src/Exception/Resources/css/prism.css @@ -6,11 +6,13 @@ https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+markup- * @author Rose Pritchard */ -code[class*="language-"], -pre[class*="language-"] { +@import url('https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap'); + +code[class*='language-'], +pre[class*='language-'] { color: #ccc; background: none; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-family: DM Mono, monospace; font-size: 1em; text-align: left; white-space: pre; @@ -27,25 +29,24 @@ pre[class*="language-"] { -moz-hyphens: none; -ms-hyphens: none; hyphens: none; - } /* Code blocks */ -pre[class*="language-"] { +pre[class*='language-'] { padding: 1em; - margin: .5em 0; + margin: 0.5em 0; overflow: auto; } -:not(pre) > code[class*="language-"], -pre[class*="language-"] { +:not(pre) > code[class*='language-'], +pre[class*='language-'] { background: #2d2d2d; } /* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; +:not(pre) > code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; white-space: normal; } @@ -65,7 +66,7 @@ pre[class*="language-"] { .token.attr-name, .token.namespace, .token.deleted { - color: #e2777a; + color: #fff; } .token.function-name { @@ -75,36 +76,41 @@ pre[class*="language-"] { .token.boolean, .token.number, .token.function { - color: #f08d49; + color: #22D3EE; } .token.property, .token.class-name, .token.constant, .token.symbol { - color: #f8c555; + color: #fff; } .token.selector, .token.important, .token.atrule, -.token.keyword, .token.builtin { - color: #cc99cd; + color: color #E879F9; +} + +.token.keyword { + color: #e879f9; + font-style: italic !important; } .token.string, .token.char, .token.attr-value, -.token.regex, +.token.regex { + color: #BEF264; +} + .token.variable { - color: #7ec699; + color: #fff; } -.token.operator, -.token.entity, -.token.url { - color: #67cdcc; +.token.punctuation, .token.operator, .token.entity, .token.url { + color: rgb(146, 153, 166); } .token.important, @@ -135,8 +141,12 @@ pre[data-line] { padding: inherit 0; margin-top: 1em; /* Same as .prism’s padding-top */ - background: hsla(24, 20%, 50%,.08); - background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); + background: hsla(193, 96.3%, 20%, 0.08); + background: linear-gradient( + to right, + hsla(193, 96.3%, 20%, 0.1) 70%, + hsla(193, 96.3%, 20%, 0) + ); pointer-events: none; @@ -155,29 +165,29 @@ pre[data-line] { } } - .line-highlight:before, - .line-highlight[data-end]:after { - content: attr(data-start); - position: absolute; - top: .4em; - left: .6em; - min-width: 1em; - padding: 0 .5em; - background-color: hsla(24, 20%, 50%,.4); - color: hsl(24, 20%, 95%); - font: bold 65%/1.5 sans-serif; - text-align: center; - vertical-align: .3em; - border-radius: 999px; - text-shadow: none; - box-shadow: 0 1px white; - } - - .line-highlight[data-end]:after { - content: attr(data-end); - top: auto; - bottom: .4em; - } +.line-highlight:before, +.line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + top: 0.4em; + left: 0.6em; + min-width: 1em; + padding: 0 0.5em; + background-color: hsla(24, 20%, 50%, 0.4); + color: hsl(24, 20%, 95%); + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: 0.3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; +} + +.line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: 0.4em; +} .line-numbers .line-highlight:before, .line-numbers .line-highlight:after { @@ -191,16 +201,16 @@ pre[id].linkable-line-numbers span.line-numbers-rows > span:before { cursor: pointer; } pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before { - background-color: rgba(128, 128, 128, .2); + background-color: rgba(128, 128, 128, 0.2); } -pre[class*="language-"].line-numbers { +pre[class*='language-'].line-numbers { position: relative; padding-left: 3.8em; counter-reset: linenumber; } -pre[class*="language-"].line-numbers > code { +pre[class*='language-'].line-numbers > code { position: relative; white-space: inherit; } @@ -210,28 +220,25 @@ pre[class*="language-"].line-numbers > code { pointer-events: none; top: 0; font-size: 100%; - left: -3.8em; - width: 3em; /* works for line-numbers below 1000 lines */ + left: -3.7em; + width: 3.1em; /* works for line-numbers below 1000 lines */ letter-spacing: -1px; - border-right: 1px solid #999; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; - } - .line-numbers-rows > span { - display: block; - counter-increment: linenumber; - } - - .line-numbers-rows > span:before { - content: counter(linenumber); - color: #999; - display: block; - padding-right: 0.8em; - text-align: right; - } +.line-numbers-rows > span { + display: block; + counter-increment: linenumber; +} +.line-numbers-rows > span:before { + content: counter(linenumber); + color: rgba(128, 128, 128, 0.3); + display: block; + padding-right: 0.8em; + text-align: right; +} diff --git a/src/Exception/Resources/css/whoops.base.css b/src/Exception/Resources/css/whoops.base.css new file mode 100644 index 00000000..2b33756c --- /dev/null +++ b/src/Exception/Resources/css/whoops.base.css @@ -0,0 +1,574 @@ +@import url('https://fonts.googleapis.com/css?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700;display=swap'); + +body { + font: 12px 'DM Sans', sans-serif;; + color: #131313; + background: #eeeeee; + padding: 0; + margin: 0; + max-height: 100%; + + text-rendering: optimizeLegibility; +} +a { + text-decoration: none; +} + +.Whoops.container { + position: relative; + z-index: 9999999999; +} + +.panel { + overflow-y: scroll; + height: 100%; + position: fixed; + margin: 0; + left: 0; + top: 0; +} + +.branding { + position: absolute; + top: 10px; + right: 20px; + color: #777777; + font-size: 10px; + z-index: 100; +} +.branding a { + color: #e95353; +} + +header { + color: white; + box-sizing: border-box; + background-color: rgb(0, 30, 38); + padding: 35px 40px; + max-height: 180px; + overflow: hidden; + transition: 0.5s; +} + +header.header-expand { + max-height: 1000px; +} + +.exc-title { + margin: 0; + color: #bebebe; + font-size: 14px; +} +.exc-title-primary, +.exc-title-secondary { + color: #3eaf7c; +} + +.exc-message { + font-size: 20px; + word-wrap: break-word; + margin: 4px 0 0 0; + color: white; +} +.exc-message span { + display: block; +} +.exc-message-empty-notice { + color: #a29d9d; + font-weight: 300; +} + +.prev-exc-title { + margin: 10px 0; +} + +.prev-exc-title + ul { + margin: 0; + padding: 0 0 0 20px; + line-height: 12px; +} + +.prev-exc-title + ul li { + font: 12px 'Helvetica Neue', helvetica, arial, sans-serif; +} + +.prev-exc-title + ul li .prev-exc-code { + display: inline-block; + color: #bebebe; +} + +.details-container { + left: 30%; + width: 70%; + background: #012a35; +} +.details { + padding: 5px; + background: #012a35; + color: white; +} + +.details-heading { + color: #3eaf7c; + padding-bottom: 10px; + margin-bottom: 30px; + border-bottom: 1px solid #3eaf7c; +} + +.details pre.sf-dump { + white-space: pre; + word-wrap: inherit; +} + +.details pre.sf-dump, +.details pre.sf-dump .sf-dump-num, +.details pre.sf-dump .sf-dump-const, +.details pre.sf-dump .sf-dump-str, +.details pre.sf-dump .sf-dump-note, +.details pre.sf-dump .sf-dump-ref, +.details pre.sf-dump .sf-dump-public, +.details pre.sf-dump .sf-dump-protected, +.details pre.sf-dump .sf-dump-private, +.details pre.sf-dump .sf-dump-meta, +.details pre.sf-dump .sf-dump-key, +.details pre.sf-dump .sf-dump-index { + color: #463c54; +} + +.left-panel { + width: 30%; + background: #001e26; + color: white; +} + +.frames-description { + background: #001318; + padding: 8px 15px; + color: #a29d9d; + font-size: 11px; +} + +.frames-description.frames-description-application { + text-align: center; + font-size: 12px; +} +.frames-container.frames-container-application .frame:not(.frame-application) { + display: none; +} + +.frames-tab { + color: #a29d9d; + display: inline-block; + padding: 4px 8px; + margin: 0 2px; + border-radius: 3px; +} + +.frames-tab.frames-tab-active { + background-color: #2a2a2a; + color: #bebebe; +} + +.frame { + padding: 14px; + cursor: pointer; + transition: all 0.1s ease; + background: #001e26; + color: white; +} +.frame:not(:last-child) { + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +.frame.active { + box-shadow: inset -5px 0 0 0 #3eaf7c; + color: #3eaf7c; + background: #001318; +} + +.frame:not(.active):hover { + background: #001318; +} + +.frame-method-info { + margin-bottom: 10px; +} + +.frame-class, +.frame-function, +.frame-index { + font-size: 14px; +} + +.frame-index { + float: left; +} + +.frame-method-info { + margin-left: 24px; +} + +.frame-index { + font-size: 11px; + color: #a29d9d; + background-color: rgba(0, 0, 0, 0.05); + height: 18px; + width: 18px; + line-height: 18px; + border-radius: 5px; + padding: 0 1px 0 1px; + text-align: center; + display: inline-block; +} + +.frame-application .frame-index { + background-color: #2a2a2a; + color: #bebebe; +} + +.frame-file { + font-family: 'Inconsolata', 'Fira Mono', 'Source Code Pro', Monaco, Consolas, + 'Lucida Console', monospace; + color: #a29d9d; +} + +.frame-file .editor-link { + color: #a29d9d; +} + +.frame-line { + font-weight: bold; +} + +.frame-line:before { + content: ':'; +} + +.frame-code { + padding: 5px; + background: #012a35; + display: none; +} + +.frame-code.active { + display: block; +} + +.frame-code .frame-file { + color: #a29d9d; + padding: 12px 6px; + + border-bottom: none; +} + +pre[class*='language-'].code-block { + background: #001e26; +} + +.code-block { + padding: 10px; + margin: 0; + border-radius: 6px; + box-shadow: 0 3px 0 rgba(0, 0, 0, 0.05), 0 10px 30px rgba(0, 0, 0, 0.05), + inset 0 0 1px 0 rgba(255, 255, 255, 0.07); + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; +} + +.linenums { + margin: 0; + margin-left: 10px; +} + +.frame-comments { + border-top: none; + margin-top: 15px; + + font-size: 12px; +} + +.frame-comments.empty { +} + +.frame-comments.empty:before { + content: 'No comments for this stack frame.'; + font-weight: 300; + color: #a29d9d; +} + +.frame-comment { + padding: 10px; + color: #e3e3e3; + border-radius: 6px; + background-color: rgba(255, 255, 255, 0.05); +} +.frame-comment a { + font-weight: bold; + text-decoration: none; +} +.frame-comment a:hover { + color: #4bb1b1; +} + +.frame-comment:not(:last-child) { + border-bottom: 1px dotted rgba(0, 0, 0, 0.3); +} + +.frame-comment-context { + font-size: 10px; + color: white; +} + +.delimiter { + display: inline-block; +} + +.data-table-container label { + font-size: 16px; + color: #3eaf7c; + font-weight: bold; + margin: 10px 0; + + display: block; + + margin-bottom: 5px; + padding-bottom: 5px; +} +.data-table { + width: 100%; + margin-bottom: 30px; +} + +.data-table tbody { + font: 13px 'Inconsolata', 'Fira Mono', 'Source Code Pro', Monaco, Consolas, + 'Lucida Console', monospace; +} + +.data-table thead { + display: none; +} + +.data-table tr { + padding: 5px 0; +} + +.data-table td:first-child { + width: 20%; + min-width: 130px; + overflow: hidden; + font-weight: 700; + color: #b4c5d6; + padding-right: 5px; +} + +.data-table td:last-child { + width: 80%; + -ms-word-break: break-all; + word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; +} + +.data-table span.empty { + color: #cacaca; + font-weight: 300; +} +.data-table label.empty { + display: inline; +} + +.handler { + padding: 4px 0; + font: 14px 'Inconsolata', 'Fira Mono', 'Source Code Pro', Monaco, Consolas, + 'Lucida Console', monospace; +} + +#plain-exception { + display: none; +} + +.rightButton { + cursor: pointer; + border: 0; + opacity: 0.8; + background: none; + + color: rgba(255, 255, 255, 0.1); + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.1); + + border-radius: 3px; + + outline: none !important; +} + +.rightButton:hover { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.3); + color: rgba(255, 255, 255, 0.3); +} + +/* inspired by githubs kbd styles */ +kbd { + -moz-border-bottom-colors: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + background-color: #fcfcfc; + border-color: #ccc #ccc #bbb; + border-image: none; + border-style: solid; + border-width: 1px; + color: #555; + display: inline-block; + font-size: 11px; + line-height: 10px; + padding: 3px 5px; + vertical-align: middle; +} + +/* == Media queries */ + +/* Expand the spacing in the details section */ +@media (min-width: 1000px) { + .details, + .frame-code { + padding: 20px 40px; + } + + .details-container { + left: 32%; + width: 68%; + } + + .frames-container { + margin: 5px; + } + + .left-panel { + width: 32%; + } +} + +/* Stack panels */ +@media (max-width: 600px) { + .panel { + position: static; + width: 100%; + } +} + +/* Stack details tables */ +@media (max-width: 400px) { + .data-table, + .data-table tbody, + .data-table tbody tr, + .data-table tbody td { + display: block; + width: 100%; + } + + .data-table tbody tr:first-child { + padding-top: 0; + } + + .data-table tbody td:first-child, + .data-table tbody td:last-child { + padding-left: 0; + padding-right: 0; + } + + .data-table tbody td:last-child { + padding-top: 3px; + } +} + +.tooltipped { + position: relative; +} +.tooltipped:after { + position: absolute; + z-index: 1000000; + display: none; + padding: 5px 8px; + color: #fff; + text-align: center; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-wrap: break-word; + white-space: pre; + pointer-events: none; + content: attr(aria-label); + background: rgba(0, 0, 0, 0.8); + border-radius: 3px; + -webkit-font-smoothing: subpixel-antialiased; +} +.tooltipped:before { + position: absolute; + z-index: 1000001; + display: none; + width: 0; + height: 0; + color: rgba(0, 0, 0, 0.8); + pointer-events: none; + content: ''; + border: 5px solid transparent; +} +.tooltipped:hover:before, +.tooltipped:hover:after, +.tooltipped:active:before, +.tooltipped:active:after, +.tooltipped:focus:before, +.tooltipped:focus:after { + display: inline-block; + text-decoration: none; +} +.tooltipped-s:after { + top: 100%; + right: 50%; + margin-top: 5px; +} +.tooltipped-s:before { + top: auto; + right: 50%; + bottom: -5px; + margin-right: -5px; + border-bottom-color: rgba(0, 0, 0, 0.8); +} + +pre.sf-dump { + padding: 0px !important; + margin: 0px !important; +} + +.search-for-help { + width: 85%; + padding: 0; + margin: 10px 0; + list-style-type: none; + display: inline-block; +} +.search-for-help li { + display: inline-block; + margin-right: 5px; +} +.search-for-help li:last-child { + margin-right: 0; +} +.search-for-help li a { +} +.search-for-help li a i { + width: 16px; + height: 16px; + overflow: hidden; + display: block; +} +.search-for-help li a svg { + fill: #fff; +} +.search-for-help li a svg path { + background-size: contain; +} diff --git a/src/Whoops/Resources/js/clipboard.min.js b/src/Exception/Resources/js/clipboard.min.js similarity index 100% rename from src/Whoops/Resources/js/clipboard.min.js rename to src/Exception/Resources/js/clipboard.min.js diff --git a/src/Whoops/Resources/js/prism.js b/src/Exception/Resources/js/prism.js similarity index 100% rename from src/Whoops/Resources/js/prism.js rename to src/Exception/Resources/js/prism.js diff --git a/src/Whoops/Resources/js/whoops.base.js b/src/Exception/Resources/js/whoops.base.js similarity index 100% rename from src/Whoops/Resources/js/whoops.base.js rename to src/Exception/Resources/js/whoops.base.js diff --git a/src/Whoops/Resources/js/zepto.min.js b/src/Exception/Resources/js/zepto.min.js similarity index 100% rename from src/Whoops/Resources/js/zepto.min.js rename to src/Exception/Resources/js/zepto.min.js diff --git a/src/Whoops/Resources/views/env_details.html.php b/src/Exception/Resources/views/env_details.html.php similarity index 100% rename from src/Whoops/Resources/views/env_details.html.php rename to src/Exception/Resources/views/env_details.html.php diff --git a/src/Whoops/Resources/views/frame_code.html.php b/src/Exception/Resources/views/frame_code.html.php similarity index 100% rename from src/Whoops/Resources/views/frame_code.html.php rename to src/Exception/Resources/views/frame_code.html.php diff --git a/src/Whoops/Resources/views/frame_list.html.php b/src/Exception/Resources/views/frame_list.html.php similarity index 100% rename from src/Whoops/Resources/views/frame_list.html.php rename to src/Exception/Resources/views/frame_list.html.php diff --git a/src/Whoops/Resources/views/frames_container.html.php b/src/Exception/Resources/views/frames_container.html.php similarity index 100% rename from src/Whoops/Resources/views/frames_container.html.php rename to src/Exception/Resources/views/frames_container.html.php diff --git a/src/Whoops/Resources/views/frames_description.html.php b/src/Exception/Resources/views/frames_description.html.php similarity index 100% rename from src/Whoops/Resources/views/frames_description.html.php rename to src/Exception/Resources/views/frames_description.html.php diff --git a/src/Whoops/Resources/views/header.html.php b/src/Exception/Resources/views/header.html.php similarity index 100% rename from src/Whoops/Resources/views/header.html.php rename to src/Exception/Resources/views/header.html.php diff --git a/src/Whoops/Resources/views/header_outer.html.php b/src/Exception/Resources/views/header_outer.html.php similarity index 100% rename from src/Whoops/Resources/views/header_outer.html.php rename to src/Exception/Resources/views/header_outer.html.php diff --git a/src/Whoops/Resources/views/layout.html.php b/src/Exception/Resources/views/layout.html.php similarity index 100% rename from src/Whoops/Resources/views/layout.html.php rename to src/Exception/Resources/views/layout.html.php diff --git a/src/Whoops/Resources/views/panel_details.html.php b/src/Exception/Resources/views/panel_details.html.php similarity index 100% rename from src/Whoops/Resources/views/panel_details.html.php rename to src/Exception/Resources/views/panel_details.html.php diff --git a/src/Whoops/Resources/views/panel_details_outer.html.php b/src/Exception/Resources/views/panel_details_outer.html.php similarity index 100% rename from src/Whoops/Resources/views/panel_details_outer.html.php rename to src/Exception/Resources/views/panel_details_outer.html.php diff --git a/src/Whoops/Resources/views/panel_left.html.php b/src/Exception/Resources/views/panel_left.html.php similarity index 100% rename from src/Whoops/Resources/views/panel_left.html.php rename to src/Exception/Resources/views/panel_left.html.php diff --git a/src/Whoops/Resources/views/panel_left_outer.html.php b/src/Exception/Resources/views/panel_left_outer.html.php similarity index 100% rename from src/Whoops/Resources/views/panel_left_outer.html.php rename to src/Exception/Resources/views/panel_left_outer.html.php diff --git a/src/Whoops/Run.php b/src/Exception/Run.php similarity index 96% rename from src/Whoops/Run.php rename to src/Exception/Run.php index 52486d0d..b2b96740 100644 --- a/src/Whoops/Run.php +++ b/src/Exception/Run.php @@ -4,17 +4,17 @@ * @author Filipe Dobreira */ -namespace Whoops; +namespace Leaf\Exception; use InvalidArgumentException; use Throwable; -use Whoops\Exception\ErrorException; -use Whoops\Exception\Inspector; -use Whoops\Handler\CallbackHandler; -use Whoops\Handler\Handler; -use Whoops\Handler\HandlerInterface; -use Whoops\Util\Misc; -use Whoops\Util\SystemFacade; +use Leaf\Exceptions\ErrorException; +use Leaf\Exceptions\Inspector; +use Leaf\Exception\Handler\CallbackHandler; +use Leaf\Exception\Handler\Handler; +use Leaf\Exception\Handler\HandlerInterface; +use Leaf\Exception\Util\Misc; +use Leaf\Exception\Util\SystemFacade; final class Run implements RunInterface { @@ -175,10 +175,10 @@ public function register() if (!$this->isRegistered) { // Workaround PHP bug 42098 // https://bugs.php.net/bug.php?id=42098 - class_exists("\\Whoops\\Exception\\ErrorException"); - class_exists("\\Whoops\\Exception\\FrameCollection"); - class_exists("\\Whoops\\Exception\\Frame"); - class_exists("\\Whoops\\Exception\\Inspector"); + class_exists("\\Leaf\Exception\\Exception\\ErrorException"); + class_exists("\\Leaf\Exception\\Exception\\FrameCollection"); + class_exists("\\Leaf\Exception\\Exception\\Frame"); + class_exists("\\Leaf\Exception\\Exception\\Inspector"); $this->system->setErrorHandler([$this, self::ERROR_HANDLER]); $this->system->setExceptionHandler([$this, self::EXCEPTION_HANDLER]); diff --git a/src/Whoops/RunInterface.php b/src/Exception/RunInterface.php similarity index 96% rename from src/Whoops/RunInterface.php rename to src/Exception/RunInterface.php index 8162fe4d..cab33035 100644 --- a/src/Whoops/RunInterface.php +++ b/src/Exception/RunInterface.php @@ -4,11 +4,11 @@ * @author Filipe Dobreira */ -namespace Whoops; +namespace Leaf\Exception; use InvalidArgumentException; -use Whoops\Exception\ErrorException; -use Whoops\Handler\HandlerInterface; +use Leaf\Exceptions\ErrorException; +use Leaf\Exception\Handler\HandlerInterface; interface RunInterface { @@ -76,7 +76,7 @@ public function allowQuit($exit = null); * * @param array|string $patterns List or a single regex pattern to match * @param int $levels Defaults to E_STRICT | E_DEPRECATED - * @return \Whoops\Run + * @return \Leaf\Exception\Run */ public function silenceErrorsInPaths($patterns, $levels = 10240); diff --git a/src/Whoops/Util/HtmlDumperOutput.php b/src/Exception/Util/HtmlDumperOutput.php similarity index 95% rename from src/Whoops/Util/HtmlDumperOutput.php rename to src/Exception/Util/HtmlDumperOutput.php index 8c828fd9..24fda4f3 100644 --- a/src/Whoops/Util/HtmlDumperOutput.php +++ b/src/Exception/Util/HtmlDumperOutput.php @@ -4,7 +4,7 @@ * @author Filipe Dobreira */ -namespace Whoops\Util; +namespace Leaf\Exception\Util; /** * Used as output callable for Symfony\Component\VarDumper\Dumper\HtmlDumper::dump() diff --git a/src/Whoops/Util/Misc.php b/src/Exception/Util/Misc.php similarity index 98% rename from src/Whoops/Util/Misc.php rename to src/Exception/Util/Misc.php index 001a6879..305c91cd 100644 --- a/src/Whoops/Util/Misc.php +++ b/src/Exception/Util/Misc.php @@ -4,7 +4,7 @@ * @author Filipe Dobreira */ -namespace Whoops\Util; +namespace Leaf\Exception\Util; class Misc { @@ -57,7 +57,7 @@ public static function translateErrorCode($error_code) } return "E_UNKNOWN"; } - + /** * Determine if an error level is fatal (halts execution) * diff --git a/src/Whoops/Util/SystemFacade.php b/src/Exception/Util/SystemFacade.php similarity index 98% rename from src/Whoops/Util/SystemFacade.php rename to src/Exception/Util/SystemFacade.php index 9eb0acfa..5a6525fa 100644 --- a/src/Whoops/Util/SystemFacade.php +++ b/src/Exception/Util/SystemFacade.php @@ -4,7 +4,7 @@ * @author Filipe Dobreira */ -namespace Whoops\Util; +namespace Leaf\Exception\Util; class SystemFacade { diff --git a/src/Whoops/Util/TemplateHelper.php b/src/Exception/Util/TemplateHelper.php similarity index 99% rename from src/Whoops/Util/TemplateHelper.php rename to src/Exception/Util/TemplateHelper.php index 9c7cec23..a3054d89 100644 --- a/src/Whoops/Util/TemplateHelper.php +++ b/src/Exception/Util/TemplateHelper.php @@ -4,13 +4,13 @@ * @author Filipe Dobreira */ -namespace Whoops\Util; +namespace Leaf\Exception\Util; use Symfony\Component\VarDumper\Caster\Caster; use Symfony\Component\VarDumper\Cloner\AbstractCloner; use Symfony\Component\VarDumper\Cloner\VarCloner; use Symfony\Component\VarDumper\Dumper\HtmlDumper; -use Whoops\Exception\Frame; +use Leaf\Exceptions\Frame; /** * Exposes useful tools for working with/in templates diff --git a/src/Whoops/Exception/ErrorException.php b/src/Exceptions/ErrorException.php similarity index 92% rename from src/Whoops/Exception/ErrorException.php rename to src/Exceptions/ErrorException.php index d74e8231..f7a1aa2b 100644 --- a/src/Whoops/Exception/ErrorException.php +++ b/src/Exceptions/ErrorException.php @@ -4,7 +4,7 @@ * @author Filipe Dobreira */ -namespace Whoops\Exception; +namespace Leaf\Exceptions; use ErrorException as BaseErrorException; diff --git a/src/Whoops/Exception/Formatter.php b/src/Exceptions/Formatter.php similarity index 98% rename from src/Whoops/Exception/Formatter.php rename to src/Exceptions/Formatter.php index 573dda0b..624ba3c3 100644 --- a/src/Whoops/Exception/Formatter.php +++ b/src/Exceptions/Formatter.php @@ -4,7 +4,7 @@ * @author Filipe Dobreira */ -namespace Whoops\Exception; +namespace Leaf\Exceptions; class Formatter { diff --git a/src/Whoops/Exception/Frame.php b/src/Exceptions/Frame.php similarity index 99% rename from src/Whoops/Exception/Frame.php rename to src/Exceptions/Frame.php index 2d7297b9..87e1d5b6 100644 --- a/src/Whoops/Exception/Frame.php +++ b/src/Exceptions/Frame.php @@ -4,7 +4,7 @@ * @author Filipe Dobreira */ -namespace Whoops\Exception; +namespace Leaf\Exceptions; use InvalidArgumentException; use Serializable; diff --git a/src/Whoops/Exception/FrameCollection.php b/src/Exceptions/FrameCollection.php similarity index 93% rename from src/Whoops/Exception/FrameCollection.php rename to src/Exceptions/FrameCollection.php index 723b475e..abe02bd9 100644 --- a/src/Whoops/Exception/FrameCollection.php +++ b/src/Exceptions/FrameCollection.php @@ -4,7 +4,7 @@ * @author Filipe Dobreira */ -namespace Whoops\Exception; +namespace Leaf\Exceptions; use ArrayAccess; use ArrayIterator; @@ -18,7 +18,7 @@ * Exposes a fluent interface for dealing with an ordered list * of stack-trace frames. */ -class FrameCollection implements ArrayAccess, IteratorAggregate, Serializable, Countable +class FrameCollection { /** * @var array[] @@ -90,7 +90,6 @@ public function getArray() * @see IteratorAggregate::getIterator * @return ArrayIterator */ - #[ReturnTypeWillChange] public function getIterator() { return new ArrayIterator($this->frames); @@ -100,7 +99,6 @@ public function getIterator() * @see ArrayAccess::offsetExists * @param int $offset */ - #[ReturnTypeWillChange] public function offsetExists($offset) { return isset($this->frames[$offset]); @@ -110,7 +108,6 @@ public function offsetExists($offset) * @see ArrayAccess::offsetGet * @param int $offset */ - #[ReturnTypeWillChange] public function offsetGet($offset) { return $this->frames[$offset]; @@ -120,7 +117,6 @@ public function offsetGet($offset) * @see ArrayAccess::offsetSet * @param int $offset */ - #[ReturnTypeWillChange] public function offsetSet($offset, $value) { throw new \Exception(__CLASS__ . ' is read only'); @@ -130,7 +126,6 @@ public function offsetSet($offset, $value) * @see ArrayAccess::offsetUnset * @param int $offset */ - #[ReturnTypeWillChange] public function offsetUnset($offset) { throw new \Exception(__CLASS__ . ' is read only'); @@ -140,7 +135,6 @@ public function offsetUnset($offset) * @see Countable::count * @return int */ - #[ReturnTypeWillChange] public function count() { return count($this->frames); @@ -162,7 +156,6 @@ public function countIsApplication() * @see Serializable::serialize * @return string */ - #[ReturnTypeWillChange] public function serialize() { return serialize($this->frames); @@ -172,7 +165,6 @@ public function serialize() * @see Serializable::unserialize * @param string $serializedFrames */ - #[ReturnTypeWillChange] public function unserialize($serializedFrames) { $this->frames = unserialize($serializedFrames); diff --git a/src/Whoops/Exception/Inspector.php b/src/Exceptions/Inspector.php similarity index 97% rename from src/Whoops/Exception/Inspector.php rename to src/Exceptions/Inspector.php index 85709593..88de4f32 100644 --- a/src/Whoops/Exception/Inspector.php +++ b/src/Exceptions/Inspector.php @@ -4,9 +4,9 @@ * @author Filipe Dobreira */ -namespace Whoops\Exception; +namespace Leaf\Exceptions; -use Whoops\Util\Misc; +use Leaf\Exception\Util\Misc; class Inspector { @@ -16,12 +16,12 @@ class Inspector private $exception; /** - * @var \Whoops\Exception\FrameCollection + * @var \Leaf\Exceptions\FrameCollection */ private $frames; /** - * @var \Whoops\Exception\Inspector + * @var \Leaf\Exceptions\Inspector */ private $previousExceptionInspector; @@ -167,7 +167,7 @@ public function getPreviousExceptions() /** * Returns an iterator for the inspected exception's * frames. - * @return \Whoops\Exception\FrameCollection + * @return mixed */ public function getFrames() { diff --git a/src/Whoops/Resources/css/whoops.base.css b/src/Whoops/Resources/css/whoops.base.css deleted file mode 100644 index 4400caad..00000000 --- a/src/Whoops/Resources/css/whoops.base.css +++ /dev/null @@ -1,561 +0,0 @@ -body { - font: 12px "Helvetica Neue", helvetica, arial, sans-serif; - color: #131313; - background: #eeeeee; - padding:0; - margin: 0; - max-height: 100%; - - text-rendering: optimizeLegibility; -} - a { - text-decoration: none; - } - -.Whoops.container { - position: relative; - z-index: 9999999999; -} - -.panel { - overflow-y: scroll; - height: 100%; - position: fixed; - margin: 0; - left: 0; - top: 0; -} - -.branding { - position: absolute; - top: 10px; - right: 20px; - color: #777777; - font-size: 10px; - z-index: 100; -} - .branding a { - color: #e95353; - } - -header { - color: white; - box-sizing: border-box; - background-color: #2a2a2a; - padding: 35px 40px; - max-height: 180px; - overflow: hidden; - transition: 0.5s; -} - - header.header-expand { - max-height: 1000px; - } - - .exc-title { - margin: 0; - color: #bebebe; - font-size: 14px; - } - .exc-title-primary, .exc-title-secondary { - color: #e95353; - } - - .exc-message { - font-size: 20px; - word-wrap: break-word; - margin: 4px 0 0 0; - color: white; - } - .exc-message span { - display: block; - } - .exc-message-empty-notice { - color: #a29d9d; - font-weight: 300; - } - -.prev-exc-title { - margin: 10px 0; -} - -.prev-exc-title + ul { - margin: 0; - padding: 0 0 0 20px; - line-height: 12px; -} - -.prev-exc-title + ul li { - font: 12px "Helvetica Neue", helvetica, arial, sans-serif; -} - -.prev-exc-title + ul li .prev-exc-code { - display: inline-block; - color: #bebebe; -} - -.details-container { - left: 30%; - width: 70%; - background: #fafafa; -} - .details { - padding: 5px; - } - - .details-heading { - color: #4288CE; - font-weight: 300; - padding-bottom: 10px; - margin-bottom: 10px; - border-bottom: 1px solid rgba(0, 0, 0, .1); - } - - .details pre.sf-dump { - white-space: pre; - word-wrap: inherit; - } - - .details pre.sf-dump, - .details pre.sf-dump .sf-dump-num, - .details pre.sf-dump .sf-dump-const, - .details pre.sf-dump .sf-dump-str, - .details pre.sf-dump .sf-dump-note, - .details pre.sf-dump .sf-dump-ref, - .details pre.sf-dump .sf-dump-public, - .details pre.sf-dump .sf-dump-protected, - .details pre.sf-dump .sf-dump-private, - .details pre.sf-dump .sf-dump-meta, - .details pre.sf-dump .sf-dump-key, - .details pre.sf-dump .sf-dump-index { - color: #463C54; - } - -.left-panel { - width: 30%; - background: #ded8d8; -} - - .frames-description { - background: rgba(0, 0, 0, .05); - padding: 8px 15px; - color: #a29d9d; - font-size: 11px; - } - - .frames-description.frames-description-application { - text-align: center; - font-size: 12px; - } - .frames-container.frames-container-application .frame:not(.frame-application) { - display: none; - } - - .frames-tab { - color: #a29d9d; - display: inline-block; - padding: 4px 8px; - margin: 0 2px; - border-radius: 3px; - } - - .frames-tab.frames-tab-active { - background-color: #2a2a2a; - color: #bebebe; - } - - .frame { - padding: 14px; - cursor: pointer; - transition: all 0.1s ease; - background: #eeeeee; - } - .frame:not(:last-child) { - border-bottom: 1px solid rgba(0, 0, 0, .05); - } - - .frame.active { - box-shadow: inset -5px 0 0 0 #4288CE; - color: #4288CE; - } - - .frame:not(.active):hover { - background: #BEE9EA; - } - - .frame-method-info { - margin-bottom: 10px; - } - - .frame-class, .frame-function, .frame-index { - font-size: 14px; - } - - .frame-index { - float: left; - } - - .frame-method-info { - margin-left: 24px; - } - - .frame-index { - font-size: 11px; - color: #a29d9d; - background-color: rgba(0, 0, 0, .05); - height: 18px; - width: 18px; - line-height: 18px; - border-radius: 5px; - padding: 0 1px 0 1px; - text-align: center; - display: inline-block; - } - - .frame-application .frame-index { - background-color: #2a2a2a; - color: #bebebe; - } - - .frame-file { - font-family: "Inconsolata", "Fira Mono", "Source Code Pro", Monaco, Consolas, "Lucida Console", monospace; - color: #a29d9d; - } - - .frame-file .editor-link { - color: #a29d9d; - } - - .frame-line { - font-weight: bold; - } - - .frame-line:before { - content: ":"; - } - - .frame-code { - padding: 5px; - background: #303030; - display: none; - } - - .frame-code.active { - display: block; - } - - .frame-code .frame-file { - color: #a29d9d; - padding: 12px 6px; - - border-bottom: none; - } - - .code-block { - padding: 10px; - margin: 0; - border-radius: 6px; - box-shadow: 0 3px 0 rgba(0, 0, 0, .05), - 0 10px 30px rgba(0, 0, 0, .05), - inset 0 0 1px 0 rgba(255, 255, 255, .07); - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - } - - .linenums { - margin: 0; - margin-left: 10px; - } - - .frame-comments { - border-top: none; - margin-top: 15px; - - font-size: 12px; - } - - .frame-comments.empty { - } - - .frame-comments.empty:before { - content: "No comments for this stack frame."; - font-weight: 300; - color: #a29d9d; - } - - .frame-comment { - padding: 10px; - color: #e3e3e3; - border-radius: 6px; - background-color: rgba(255, 255, 255, .05); - } - .frame-comment a { - font-weight: bold; - text-decoration: none; - } - .frame-comment a:hover { - color: #4bb1b1; - } - - .frame-comment:not(:last-child) { - border-bottom: 1px dotted rgba(0, 0, 0, .3); - } - - .frame-comment-context { - font-size: 10px; - color: white; - } - -.delimiter { - display: inline-block; -} - -.data-table-container label { - font-size: 16px; - color: #303030; - font-weight: bold; - margin: 10px 0; - - display: block; - - margin-bottom: 5px; - padding-bottom: 5px; -} - .data-table { - width: 100%; - margin-bottom: 10px; - } - - .data-table tbody { - font: 13px "Inconsolata", "Fira Mono", "Source Code Pro", Monaco, Consolas, "Lucida Console", monospace; - } - - .data-table thead { - display: none; - } - - .data-table tr { - padding: 5px 0; - } - - .data-table td:first-child { - width: 20%; - min-width: 130px; - overflow: hidden; - font-weight: bold; - color: #463C54; - padding-right: 5px; - - } - - .data-table td:last-child { - width: 80%; - -ms-word-break: break-all; - word-break: break-all; - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - hyphens: auto; - } - - .data-table span.empty { - color: rgba(0, 0, 0, .3); - font-weight: 300; - } - .data-table label.empty { - display: inline; - } - -.handler { - padding: 4px 0; - font: 14px "Inconsolata", "Fira Mono", "Source Code Pro", Monaco, Consolas, "Lucida Console", monospace; -} - -#plain-exception { - display: none; -} - -.rightButton { - cursor: pointer; - border: 0; - opacity: .8; - background: none; - - color: rgba(255, 255, 255, 0.1); - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.1); - - border-radius: 3px; - - outline: none !important; -} - - .rightButton:hover { - box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.3); - color: rgba(255, 255, 255, 0.3); - } - -/* inspired by githubs kbd styles */ -kbd { - -moz-border-bottom-colors: none; - -moz-border-left-colors: none; - -moz-border-right-colors: none; - -moz-border-top-colors: none; - background-color: #fcfcfc; - border-color: #ccc #ccc #bbb; - border-image: none; - border-style: solid; - border-width: 1px; - color: #555; - display: inline-block; - font-size: 11px; - line-height: 10px; - padding: 3px 5px; - vertical-align: middle; -} - - -/* == Media queries */ - -/* Expand the spacing in the details section */ -@media (min-width: 1000px) { - .details, .frame-code { - padding: 20px 40px; - } - - .details-container { - left: 32%; - width: 68%; - } - - .frames-container { - margin: 5px; - } - - .left-panel { - width: 32%; - } -} - -/* Stack panels */ -@media (max-width: 600px) { - .panel { - position: static; - width: 100%; - } -} - -/* Stack details tables */ -@media (max-width: 400px) { - .data-table, - .data-table tbody, - .data-table tbody tr, - .data-table tbody td { - display: block; - width: 100%; - } - - .data-table tbody tr:first-child { - padding-top: 0; - } - - .data-table tbody td:first-child, - .data-table tbody td:last-child { - padding-left: 0; - padding-right: 0; - } - - .data-table tbody td:last-child { - padding-top: 3px; - } -} - -.tooltipped { - position: relative -} -.tooltipped:after { - position: absolute; - z-index: 1000000; - display: none; - padding: 5px 8px; - color: #fff; - text-align: center; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-wrap: break-word; - white-space: pre; - pointer-events: none; - content: attr(aria-label); - background: rgba(0, 0, 0, 0.8); - border-radius: 3px; - -webkit-font-smoothing: subpixel-antialiased -} -.tooltipped:before { - position: absolute; - z-index: 1000001; - display: none; - width: 0; - height: 0; - color: rgba(0, 0, 0, 0.8); - pointer-events: none; - content: ""; - border: 5px solid transparent -} -.tooltipped:hover:before, -.tooltipped:hover:after, -.tooltipped:active:before, -.tooltipped:active:after, -.tooltipped:focus:before, -.tooltipped:focus:after { - display: inline-block; - text-decoration: none -} -.tooltipped-s:after { - top: 100%; - right: 50%; - margin-top: 5px -} -.tooltipped-s:before { - top: auto; - right: 50%; - bottom: -5px; - margin-right: -5px; - border-bottom-color: rgba(0, 0, 0, 0.8) -} - -pre.sf-dump { - padding: 0px !important; - margin: 0px !important; -} - -.search-for-help { - width: 85%; - padding: 0; - margin: 10px 0; - list-style-type: none; - display: inline-block; -} - .search-for-help li { - display: inline-block; - margin-right: 5px; - } - .search-for-help li:last-child { - margin-right: 0; - } - .search-for-help li a { - - } - .search-for-help li a i { - width: 16px; - height: 16px; - overflow: hidden; - display: block; - } - .search-for-help li a svg { - fill: #fff; - } - .search-for-help li a svg path { - background-size: contain; - }