/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ @import url(chrome://devtools/skin/breadcrumbs.css); .theme-dark { --table-splitter-color: rgba(255,255,255,0.15); --table-zebra-background: rgba(255,255,255,0.05); --sidemenu-selected-arrow: url(images/item-arrow-dark-ltr.svg); --sidemenu-selected-arrow-rtl: url(images/item-arrow-dark-rtl.svg); } .theme-light { --table-splitter-color: rgba(0,0,0,0.15); --table-zebra-background: rgba(0,0,0,0.05); --sidemenu-selected-arrow: url(images/item-arrow-ltr.svg); --sidemenu-selected-arrow-rtl: url(images/item-arrow-rtl.svg); } /* Generic pane helpers */ .generic-toggled-pane { margin-inline-start: 0 !important; /* Unfortunately, transitions don't work properly with locale-aware properties, so both the left and right margins are set via js, while the start margin is always overridden here. */ } .generic-toggled-pane[animated] { transition: margin 0.25s ease-in-out; } /* Responsive container */ .devtools-responsive-container { min-width: 0; min-height: 0; flex-direction: row; } .devtools-main-content { min-width: 50px; } .devtools-main-content, .devtools-sidebar-tabs { /* Prevent some children that should be hidden from remaining visible as this is shrunk (Bug 971959) */ position: relative; } @media (min-width: 701px) { .devtools-responsive-container .generic-toggled-pane { /* To hide generic-toggled-pane, negative margins are applied dynamically. * In the default horizontal layout, the pane is on the side and should be * hidden using negative margin-inline-end only. */ margin-top: 0 !important; margin-bottom: 0 !important; } } @media (max-width: 700px) { .devtools-responsive-container { flex-direction: column; } .devtools-responsive-container > .devtools-side-splitter { /* This is a normally vertical splitter, but we have turned it horizontal due to the smaller resolution */ min-height: calc(var(--devtools-splitter-top-width) + var(--devtools-splitter-bottom-width) + 1px); border-top-width: var(--devtools-splitter-top-width); border-bottom-width: var(--devtools-splitter-bottom-width); margin-top: calc(-1 * var(--devtools-splitter-top-width) - 1px); margin-bottom: calc(-1 * var(--devtools-splitter-bottom-width)); /* Reset the vertical splitter styles */ min-width: 0; border-inline-end-width: 0; border-inline-start-width: 0; margin-inline-end: 0; margin-inline-start: 0; /* In some edge case the cursor is not changed to ns-resize */ cursor: ns-resize; } .devtools-responsive-container > .devtools-sidebar-tabs:not(.pane-collapsed) { /* When the panel is collapsed min/max height should not be applied because collapsing relies on negative margins, which implies constant height. */ min-height: 35vh; max-height: 75vh; } .devtools-responsive-container .generic-toggled-pane { /* To hide generic-toggled-pane, negative margins are applied dynamically. * If a vertical layout, the pane is on the bottom and should be hidden * using negative bottom margin only. */ margin-inline-end: 0 !important; } } /* VariablesView */ .variables-view-container { /* Hack: force hardware acceleration */ transform: translateZ(1px); & > scrollbox { overflow: auto; } } .variables-view-empty-notice { padding: 2px; } .variables-view-empty-notice { color: var(--theme-text-color-alt); } .variables-view-scope:focus > .title, .variable-or-property:focus > .title { background-color: var(--theme-selection-background); color: var(--theme-selection-color); } .variables-view-scope > .title { border-top-width: 1px; border-top-style: solid; margin-top: -1px; } .variables-view-scope > .title:-moz-locale-dir(rtl) { direction: rtl; } /* Custom scope stylings */ .variables-view-watch-expressions .title > .name { max-width: 14em; } /* Generic variables traits */ .variables-view-variable:not(:last-child) { border-bottom: 1px solid var(--theme-splitter-color); } .variables-view-variable > .title > .name { font-weight: 600; } /* Generic variables *and* properties traits */ .variable-or-property:focus > .title > label { color: inherit !important; } .variables-view-container .theme-twisty { margin: 2px; } .variable-or-property > .title > .theme-twisty { margin-inline-start: 5px; } .variables-view-container .variables-view-element-details .theme-twisty:not([open]):-moz-locale-dir(rtl) { transform: rotate(-90deg); } .variable-or-property:not([untitled]) > .variables-view-element-details { margin-inline-start: 7px; } /* Traits applied when variables or properties are changed or overridden */ .variable-or-property:not([overridden]) { transition: background 1s ease-in-out; } .variable-or-property:not([overridden])[changed] { transition-duration: .4s; } .variable-or-property[overridden] { background: rgba(128,128,128,0.05); } .variable-or-property[overridden] .title > label { /* Cross out the title for this variable and all child properties. */ font-style: italic; text-decoration: line-through; border-bottom: none !important; color: rgba(128,128,128,0.9); opacity: 0.7; } /* Traits applied when variables or properties are editable */ .variable-or-property[editable] > .title > .value { cursor: text; } .variable-or-property[overridden] .title > .value { /* Disallow editing this variable and all child properties. */ pointer-events: none; } /* Custom configurable/enumerable/writable or frozen/sealed/extensible * variables and properties */ .variable-or-property[non-enumerable]:not([self], [pseudo-item]) > .title > .name { opacity: 0.6; } .variable-or-property-non-writable-icon { background: url("chrome://devtools/skin/images/vview-lock.svg") no-repeat; background-size: cover; width: 16px; height: 16px; -moz-context-properties: fill; fill: var(--theme-icon-dimmed-color); } .variable-or-property-frozen-label, .variable-or-property-sealed-label, .variable-or-property-non-extensible-label { height: 16px; padding-inline-end: 4px; } .variable-or-property:not(:focus) > .title > .variable-or-property-frozen-label, .variable-or-property:not(:focus) > .title > .variable-or-property-sealed-label, .variable-or-property:not(:focus) > .title > .variable-or-property-non-extensible-label { color: #666; } /* Aligned values */ .variables-view-container[aligned-values] .title > .separator { flex: 1; } .variables-view-container[aligned-values] .title > .value { flex: none; width: 70vw; } .variables-view-container[aligned-values] .title > .element-value-input { width: calc(70vw - 10px); } /* Actions first */ .variables-view-open-inspector { order: 1; } .variables-view-edit, .variables-view-add-property { order: 2; } .variable-or-property-frozen-label, .variable-or-property-sealed-label, .variable-or-property-non-extensible-label, .variable-or-property-non-writable-icon { order: 3; } .variables-view-delete { order: 4; } .variables-view-container[actions-first] .variables-view-delete, .variables-view-container[actions-first] .variables-view-add-property, .variables-view-container[actions-first] .variables-view-open-inspector { order: 0; } .variables-view-container[actions-first] [invisible] { visibility: hidden; } /* Variables and properties tooltips */ .variable-or-property > tooltip > label { margin: 0 2px 0 2px; } .variable-or-property[non-enumerable] > tooltip > label.enumerable, .variable-or-property[non-configurable] > tooltip > label.configurable, .variable-or-property[non-writable] > tooltip > label.writable, .variable-or-property[non-extensible] > tooltip > label.extensible { color: #800; text-decoration: line-through; } .variable-or-property[overridden] > tooltip > label.overridden { padding-inline-start: 4px; border-inline-start: 1px dotted #000; } .variable-or-property[safe-getter] > tooltip > label.WebIDL { padding-inline-start: 4px; border-inline-start: 1px dotted #000; color: #080; } /* Variables and properties editing */ .variables-view-delete, .variables-view-edit, .variables-view-open-inspector { width: 16px; height: 16px; background-size: cover; background-repeat: no-repeat; cursor: pointer; -moz-context-properties: fill; fill: var(--theme-icon-dimmed-color); } .variables-view-open-inspector { background-size: 15px; } .variables-view-delete:hover, .variables-view-edit:hover, .variables-view-open-inspector:hover { fill: var(--theme-icon-color); } .variables-view-delete:active, .variables-view-edit:active, .variables-view-open-inspector:active { fill: var(--theme-icon-checked-color); } .variables-view-delete { background-image: url("chrome://devtools/skin/images/vview-delete.svg"); } .variables-view-edit { background-image: url("chrome://devtools/skin/images/vview-edit.svg"); } .variables-view-open-inspector { background-image: url("chrome://devtools/skin/images/open-inspector.svg"); } /* Variables and properties input boxes */ .variable-or-property > .title > .separator + .element-value-input { margin-inline-start: -2px !important; margin-inline-end: 2px !important; } .variable-or-property > .title > .separator[hidden=true] + .element-value-input { margin-inline-start: 4px !important; margin-inline-end: 2px !important; } .element-name-input { margin-inline-start: -2px !important; margin-inline-end: 2px !important; font-weight: 600; } .element-value-input, .element-name-input { border: 1px solid rgba(128, 128, 128, .5) !important; border-radius: 0; color: inherit; } /* Variables and properties searching */ .variable-or-property[unmatched] { border: none; margin: 0; } /* Table Widget */ /* Table body */ .table-widget-body > .devtools-side-splitter { background-color: transparent; } .table-widget-body { width: 100%; height: 100%; overflow: auto; contain: size; display: flex; align-items: start; } .table-widget-body > splitter { align-self: stretch; } .table-widget-body[empty="empty"] { display: none; } /* Column Headers */ .table-widget-column-header, .table-widget-cell { display: block; border-inline-end: 1px solid var(--table-splitter-color) !important; line-height: unset !important; } .table-widget-column:not([hidden]) { display: block; } /* Table widget column header colors are taken from netmonitor.inc.css to match the look of both the tables. */ .table-widget-column-header { position: sticky; top: 0; width: 100%; margin: 0; padding: 5px 4px 0 !important; color: inherit; text-align: start; font-weight: inherit !important; border-image: linear-gradient(transparent 15%, var(--theme-splitter-color) 15%, var(--theme-splitter-color) 85%, transparent 85%, transparent calc(100% - 1px), var(--theme-splitter-color) calc(100% - 1px)) 1 1; background-repeat: no-repeat; } .table-widget-column-header:not([sorted]):hover { background-image: linear-gradient(rgba(0,0,0,0.1),rgba(0,0,0,0.1)); } .table-widget-column-header[sorted] { background-color: var(--theme-selection-background); color: var(--theme-selection-color); border-image: linear-gradient(var(--theme-splitter-color), var(--theme-splitter-color)) 1 1; box-shadow: -0.5px -0.5px 0 0.5px var(--theme-splitter-color); background-position: right 6px center; } .table-widget-column-header[sorted]:-moz-locale-dir(rtl) { background-position: 6px center; } .table-widget-column-header[sorted=ascending] { background-image: url("chrome://devtools/skin/images/sort-ascending-arrow.svg"); } .table-widget-column-header[sorted=descending] { background-image: url("chrome://devtools/skin/images/sort-descending-arrow.svg"); } .theme-dark .table-widget-column[readonly] { background-color: rgba(255,255,255,0.1); } .theme-light .table-widget-column[readonly] { background-color: rgba(0,0,0,0.1); } .table-widget-body .devtools-side-splitter:last-of-type { display: none; } /* Cells */ .table-widget-cell { width: 100%; padding: 3px 4px; min-width: 100px; -moz-user-focus: normal; } .table-widget-cell[hidden] { display: none; } .table-widget-cell.even:not(.theme-selected) { background-color: var(--table-zebra-background); } :root:not(.no-animate) .table-widget-cell.flash-out { animation: flash-out 0.5s ease-in; } @keyframes flash-out { to { background: var(--theme-contrast-background); } } /* Empty text and initial text */ .table-widget-empty-text { display: none; font-size: large; } .table-widget-body:empty + .table-widget-empty-text:not([value=""]), .table-widget-body[empty] + .table-widget-empty-text:not([value=""]) { display: block; } /* Tree Widget */ .tree-widget-container { padding: 0; margin: 0; width: 100%; list-style: none; } .tree-widget-container:-moz-focusring, .tree-widget-container *:-moz-focusring { outline-style: none; } .tree-widget-empty-text { padding: 10px 20px; font-size: medium; background: transparent; pointer-events: none; } /* Tree Item */ .tree-widget-container .tree-widget-item { padding: 4px 0px; /* OSX has line-height 14px by default, which causes weird alignment issues * because of 20px high icons. thus making line-height consistent with that of * windows. */ line-height: 16px; display: inline-block; width: 100%; word-break: keep-all; /* To prevent long urls like http://foo.com/bar from breaking in multiple lines */ } .tree-widget-container .tree-widget-children { margin: 0; padding: 0; list-style: none; } .tree-widget-item[level="1"] { font-weight: 700; } /* Twisties */ .tree-widget-item::before { content: ""; width: 16px; height: 16px; float: inline-start; margin: 0 1px; background-image: url("chrome://devtools/skin/images/arrow.svg"); background-position: 50% 50%; background-repeat: no-repeat; background-size: 10px; -moz-context-properties: fill; fill: var(--theme-icon-dimmed-color); cursor: pointer; transition: transform 125ms ease; transform: rotate(-90deg); } .tree-widget-item:-moz-locale-dir(rtl)::before { transform: rotate(90deg); } .tree-widget-item[empty]::before { background: transparent; } .tree-widget-item[expanded]::before { transform: none; } .tree-widget-item.theme-selected::before { fill: currentColor; } .tree-widget-item + ul { overflow: hidden; animation: collapse-tree-item 0.2s; max-height: 0; } .tree-widget-item[expanded] + ul { animation: expand-tree-item 0.3s; max-height: unset; } @keyframes collapse-tree-item { from { max-height: 300px; } to { max-height: 0; } } @keyframes expand-tree-item { from { max-height: 0; } to { max-height: 500px; } } /* Indentation of child items in the tree */ /* For level > 6 */ .tree-widget-item[level] + ul > li > .tree-widget-item { padding-inline-start: 98px; } /* First level */ .tree-widget-item[level="1"] + ul > li > .tree-widget-item { padding-inline-start: 14px; } /* Second level */ .tree-widget-item[level="2"] + ul > li > .tree-widget-item { padding-inline-start: 28px; } /* Third level */ .tree-widget-item[level="3"] + ul > li > .tree-widget-item { padding-inline-start: 42px; } /* Fourth level */ .tree-widget-item[level="4"] + ul > li > .tree-widget-item { padding-inline-start: 56px; } /* Fifth level */ .tree-widget-item[level="5"] + ul > li > .tree-widget-item { padding-inline-start: 70px; } /* Sixth level */ .tree-widget-item[level="6"] + ul > li > .tree-widget-item { padding-inline-start: 84px; } /* Custom icons for certain tree items indicating the type of the item */ .tree-widget-item[type]::after { content: ""; float: inline-start; width: 16px; height: 16px; margin-inline-end: 4px; background-repeat: no-repeat; background-size: contain; -moz-context-properties: fill; fill: currentColor; } .tree-widget-item[type="dir"]::after { background-image: url(chrome://devtools/skin/images/folder.svg); } .tree-widget-item[type="url"]::after { background-image: url(chrome://devtools/skin/images/globe.svg); } .tree-widget-item[type="store"]::after { background-image: url(chrome://devtools/skin/images/datastore.svg); }