chrome-devtools-frontend 1.0.1019968 → 1.0.1020516
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/front_end/core/i18n/locales/en-US.json +0 -3
 - package/front_end/core/i18n/locales/en-XL.json +0 -3
 - package/front_end/panels/elements/ComputedStyleWidget.ts +2 -0
 - package/front_end/panels/elements/ElementsTreeOutline.ts +7 -41
 - package/front_end/panels/elements/TopLayerContainer.ts +1 -9
 - package/front_end/panels/elements/components/AdornerManager.ts +0 -7
 - package/front_end/panels/elements/computedStyleSidebarPane.css +4 -0
 - package/front_end/panels/elements/elementsTreeOutline.css +0 -4
 - package/front_end/panels/lighthouse/LighthousePanel.ts +2 -0
 - package/front_end/panels/lighthouse/LighthouseStartView.ts +1 -0
 - package/front_end/panels/network/RequestHeadersView.ts +1 -36
 - package/front_end/panels/network/requestHeadersTree.css +1 -9
 - package/front_end/panels/sources/CSSPlugin.ts +2 -2
 - package/front_end/panels/sources/DebuggerPlugin.ts +12 -12
 - package/package.json +1 -1
 
| 
         @@ -7511,9 +7511,6 @@ 
     | 
|
| 
       7511 
7511 
     | 
    
         
             
              "panels/network/RequestHeadersView.ts | provisionalHeadersAreShownS": {
         
     | 
| 
       7512 
7512 
     | 
    
         
             
                "message": "Provisional headers are shown. Disable cache to see full headers."
         
     | 
| 
       7513 
7513 
     | 
    
         
             
              },
         
     | 
| 
       7514 
     | 
    
         
            -
              "panels/network/RequestHeadersView.ts | recordedAttribution": {
         
     | 
| 
       7515 
     | 
    
         
            -
                "message": "Recorded attribution with trigger-data: {PH1}"
         
     | 
| 
       7516 
     | 
    
         
            -
              },
         
     | 
| 
       7517 
7514 
     | 
    
         
             
              "panels/network/RequestHeadersView.ts | referrerPolicy": {
         
     | 
| 
       7518 
7515 
     | 
    
         
             
                "message": "Referrer Policy"
         
     | 
| 
       7519 
7516 
     | 
    
         
             
              },
         
     | 
| 
         @@ -7511,9 +7511,6 @@ 
     | 
|
| 
       7511 
7511 
     | 
    
         
             
              "panels/network/RequestHeadersView.ts | provisionalHeadersAreShownS": {
         
     | 
| 
       7512 
7512 
     | 
    
         
             
                "message": "P̂ŕôv́îśîón̂ál̂ h́êád̂ér̂ś âŕê śĥóŵń. D̂íŝáb̂ĺê ćâćĥé t̂ó ŝéê f́ûĺl̂ h́êád̂ér̂ś."
         
     | 
| 
       7513 
7513 
     | 
    
         
             
              },
         
     | 
| 
       7514 
     | 
    
         
            -
              "panels/network/RequestHeadersView.ts | recordedAttribution": {
         
     | 
| 
       7515 
     | 
    
         
            -
                "message": "R̂éĉór̂d́êd́ ât́t̂ŕîb́ût́îón̂ ẃît́ĥ trigger-data: {PH1}"
         
     | 
| 
       7516 
     | 
    
         
            -
              },
         
     | 
| 
       7517 
7514 
     | 
    
         
             
              "panels/network/RequestHeadersView.ts | referrerPolicy": {
         
     | 
| 
       7518 
7515 
     | 
    
         
             
                "message": "R̂éf̂ér̂ŕêŕ P̂ól̂íĉý"
         
     | 
| 
       7519 
7516 
     | 
    
         
             
              },
         
     | 
| 
         @@ -206,6 +206,8 @@ export class ComputedStyleWidget extends UI.ThrottledWidget.ThrottledWidget { 
     | 
|
| 
       206 
206 
     | 
    
         
             
              constructor() {
         
     | 
| 
       207 
207 
     | 
    
         
             
                super(true);
         
     | 
| 
       208 
208 
     | 
    
         | 
| 
      
 209 
     | 
    
         
            +
                this.contentElement.classList.add('styles-sidebar-computed-style-widget');
         
     | 
| 
      
 210 
     | 
    
         
            +
             
     | 
| 
       209 
211 
     | 
    
         
             
                this.computedStyleModel = new ComputedStyleModel();
         
     | 
| 
       210 
212 
     | 
    
         
             
                this.computedStyleModel.addEventListener(Events.ComputedStyleChanged, this.update, this);
         
     | 
| 
       211 
213 
     | 
    
         | 
| 
         @@ -35,12 +35,10 @@ 
     | 
|
| 
       35 
35 
     | 
    
         
             
            import * as Common from '../../core/common/common.js';
         
     | 
| 
       36 
36 
     | 
    
         
             
            import * as i18n from '../../core/i18n/i18n.js';
         
     | 
| 
       37 
37 
     | 
    
         
             
            import * as SDK from '../../core/sdk/sdk.js';
         
     | 
| 
       38 
     | 
    
         
            -
            import * as Adorners from '../../ui/components/adorners/adorners.js';
         
     | 
| 
       39 
38 
     | 
    
         
             
            import * as CodeHighlighter from '../../ui/components/code_highlighter/code_highlighter.js';
         
     | 
| 
       40 
     | 
    
         
            -
            import * as IconButton from '../../ui/components/icon_button/icon_button.js';
         
     | 
| 
       41 
39 
     | 
    
         
             
            import * as UI from '../../ui/legacy/legacy.js';
         
     | 
| 
       42 
40 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
            import  
     | 
| 
      
 41 
     | 
    
         
            +
            import {linkifyDeferredNodeReference} from './DOMLinkifier.js';
         
     | 
| 
       44 
42 
     | 
    
         
             
            import {ElementsPanel} from './ElementsPanel.js';
         
     | 
| 
       45 
43 
     | 
    
         
             
            import {ElementsTreeElement, InitialChildrenLimit} from './ElementsTreeElement.js';
         
     | 
| 
       46 
44 
     | 
    
         
             
            import elementsTreeOutlineStyles from './elementsTreeOutline.css.js';
         
     | 
| 
         @@ -1631,45 +1629,13 @@ export class ShortcutTreeElement extends UI.TreeOutline.TreeElement { 
     | 
|
| 
       1631 
1629 
     | 
    
         
             
                  text = '<' + text + '>';
         
     | 
| 
       1632 
1630 
     | 
    
         
             
                }
         
     | 
| 
       1633 
1631 
     | 
    
         
             
                title.textContent = '\u21AA ' + text;
         
     | 
| 
      
 1632 
     | 
    
         
            +
             
     | 
| 
      
 1633 
     | 
    
         
            +
                const link = (linkifyDeferredNodeReference(nodeShortcut.deferredNode) as Element);
         
     | 
| 
      
 1634 
     | 
    
         
            +
                UI.UIUtils.createTextChild(this.listItemElement, ' ');
         
     | 
| 
      
 1635 
     | 
    
         
            +
                link.classList.add('elements-tree-shortcut-link');
         
     | 
| 
      
 1636 
     | 
    
         
            +
                link.textContent = i18nString(UIStrings.reveal);
         
     | 
| 
      
 1637 
     | 
    
         
            +
                this.listItemElement.appendChild(link);
         
     | 
| 
       1634 
1638 
     | 
    
         
             
                this.nodeShortcut = nodeShortcut;
         
     | 
| 
       1635 
     | 
    
         
            -
                this.addRevealAdorner();
         
     | 
| 
       1636 
     | 
    
         
            -
              }
         
     | 
| 
       1637 
     | 
    
         
            -
             
     | 
| 
       1638 
     | 
    
         
            -
              addRevealAdorner(): void {
         
     | 
| 
       1639 
     | 
    
         
            -
                const adorner = new Adorners.Adorner.Adorner();
         
     | 
| 
       1640 
     | 
    
         
            -
                adorner.classList.add('adorner-reveal');
         
     | 
| 
       1641 
     | 
    
         
            -
                const config = ElementsComponents.AdornerManager.getRegisteredAdorner(
         
     | 
| 
       1642 
     | 
    
         
            -
                    ElementsComponents.AdornerManager.RegisteredAdorners.REVEAL);
         
     | 
| 
       1643 
     | 
    
         
            -
                const name = config.name;
         
     | 
| 
       1644 
     | 
    
         
            -
                const adornerContent = document.createElement('span');
         
     | 
| 
       1645 
     | 
    
         
            -
                const linkIcon = new IconButton.Icon.Icon();
         
     | 
| 
       1646 
     | 
    
         
            -
                linkIcon
         
     | 
| 
       1647 
     | 
    
         
            -
                    .data = {iconName: 'ic_show_node_16x16', color: 'var(--color-text-disabled)', width: '12px', height: '12px'};
         
     | 
| 
       1648 
     | 
    
         
            -
                const slotText = document.createElement('span');
         
     | 
| 
       1649 
     | 
    
         
            -
                slotText.textContent = name;
         
     | 
| 
       1650 
     | 
    
         
            -
                adornerContent.append(linkIcon);
         
     | 
| 
       1651 
     | 
    
         
            -
                adornerContent.append(slotText);
         
     | 
| 
       1652 
     | 
    
         
            -
                adornerContent.classList.add('adorner-with-icon');
         
     | 
| 
       1653 
     | 
    
         
            -
                adorner.data = {
         
     | 
| 
       1654 
     | 
    
         
            -
                  name,
         
     | 
| 
       1655 
     | 
    
         
            -
                  content: adornerContent,
         
     | 
| 
       1656 
     | 
    
         
            -
                };
         
     | 
| 
       1657 
     | 
    
         
            -
                this.listItemElement.appendChild(adorner);
         
     | 
| 
       1658 
     | 
    
         
            -
                const onClick = (((): void => {
         
     | 
| 
       1659 
     | 
    
         
            -
                                   this.nodeShortcut.deferredNode.resolve(
         
     | 
| 
       1660 
     | 
    
         
            -
                                       node => {
         
     | 
| 
       1661 
     | 
    
         
            -
                                         void Common.Revealer.reveal(node);
         
     | 
| 
       1662 
     | 
    
         
            -
                                       },
         
     | 
| 
       1663 
     | 
    
         
            -
                                   );
         
     | 
| 
       1664 
     | 
    
         
            -
                                 }) as EventListener);
         
     | 
| 
       1665 
     | 
    
         
            -
                adorner.addInteraction(onClick, {
         
     | 
| 
       1666 
     | 
    
         
            -
                  isToggle: false,
         
     | 
| 
       1667 
     | 
    
         
            -
                  shouldPropagateOnKeydown: false,
         
     | 
| 
       1668 
     | 
    
         
            -
                  ariaLabelDefault: i18nString(UIStrings.reveal),
         
     | 
| 
       1669 
     | 
    
         
            -
                  ariaLabelActive: i18nString(UIStrings.reveal),
         
     | 
| 
       1670 
     | 
    
         
            -
                });
         
     | 
| 
       1671 
     | 
    
         
            -
                adorner.addEventListener('mousedown', e => e.consume(), false);
         
     | 
| 
       1672 
     | 
    
         
            -
                ElementsPanel.instance().registerAdorner(adorner);
         
     | 
| 
       1673 
1639 
     | 
    
         
             
              }
         
     | 
| 
       1674 
1640 
     | 
    
         | 
| 
       1675 
1641 
     | 
    
         
             
              get hovered(): boolean {
         
     | 
| 
         @@ -3,7 +3,6 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            // found in the LICENSE file.
         
     | 
| 
       4 
4 
     | 
    
         
             
            import * as i18n from '../../core/i18n/i18n.js';
         
     | 
| 
       5 
5 
     | 
    
         
             
            import * as SDK from '../../core/sdk/sdk.js';
         
     | 
| 
       6 
     | 
    
         
            -
            import * as IconButton from '../../ui/components/icon_button/icon_button.js';
         
     | 
| 
       7 
6 
     | 
    
         
             
            import * as UI from '../../ui/legacy/legacy.js';
         
     | 
| 
       8 
7 
     | 
    
         | 
| 
       9 
8 
     | 
    
         
             
            import * as ElementsComponents from './components/components.js';
         
     | 
| 
         @@ -80,14 +79,7 @@ export class TopLayerContainer extends UI.TreeOutline.TreeElement { 
     | 
|
| 
       80 
79 
     | 
    
         
             
                const config = ElementsComponents.AdornerManager.getRegisteredAdorner(
         
     | 
| 
       81 
80 
     | 
    
         
             
                    ElementsComponents.AdornerManager.RegisteredAdorners.TOP_LAYER);
         
     | 
| 
       82 
81 
     | 
    
         
             
                const adornerContent = document.createElement('span');
         
     | 
| 
       83 
     | 
    
         
            -
                adornerContent. 
     | 
| 
       84 
     | 
    
         
            -
                const linkIcon = new IconButton.Icon.Icon();
         
     | 
| 
       85 
     | 
    
         
            -
                linkIcon
         
     | 
| 
       86 
     | 
    
         
            -
                    .data = {iconName: 'ic_show_node_16x16', color: 'var(--color-text-disabled)', width: '12px', height: '12px'};
         
     | 
| 
       87 
     | 
    
         
            -
                const adornerText = document.createElement('span');
         
     | 
| 
       88 
     | 
    
         
            -
                adornerText.textContent = ` top-layer (${topLayerElementIndex}) `;
         
     | 
| 
       89 
     | 
    
         
            -
                adornerContent.append(linkIcon);
         
     | 
| 
       90 
     | 
    
         
            -
                adornerContent.append(adornerText);
         
     | 
| 
      
 82 
     | 
    
         
            +
                adornerContent.textContent = ` top-layer (${topLayerElementIndex}) `;
         
     | 
| 
       91 
83 
     | 
    
         
             
                const adorner = element?.adorn(config, adornerContent);
         
     | 
| 
       92 
84 
     | 
    
         
             
                if (adorner) {
         
     | 
| 
       93 
85 
     | 
    
         
             
                  const onClick = (((): void => {
         
     | 
| 
         @@ -31,7 +31,6 @@ export enum RegisteredAdorners { 
     | 
|
| 
       31 
31 
     | 
    
         
             
              CONTAINER = 'container',
         
     | 
| 
       32 
32 
     | 
    
         
             
              SLOT = 'slot',
         
     | 
| 
       33 
33 
     | 
    
         
             
              TOP_LAYER = 'top-layer',
         
     | 
| 
       34 
     | 
    
         
            -
              REVEAL = 'reveal',
         
     | 
| 
       35 
34 
     | 
    
         
             
            }
         
     | 
| 
       36 
35 
     | 
    
         | 
| 
       37 
36 
     | 
    
         
             
            // This enum-like const object serves as the authoritative registry for all the
         
     | 
| 
         @@ -80,12 +79,6 @@ export function getRegisteredAdorner(which: RegisteredAdorners): RegisteredAdorn 
     | 
|
| 
       80 
79 
     | 
    
         
             
                    category: AdornerCategories.LAYOUT,
         
     | 
| 
       81 
80 
     | 
    
         
             
                    enabledByDefault: true,
         
     | 
| 
       82 
81 
     | 
    
         
             
                  };
         
     | 
| 
       83 
     | 
    
         
            -
                case RegisteredAdorners.REVEAL:
         
     | 
| 
       84 
     | 
    
         
            -
                  return {
         
     | 
| 
       85 
     | 
    
         
            -
                    name: 'reveal',
         
     | 
| 
       86 
     | 
    
         
            -
                    category: AdornerCategories.DEFAULT,
         
     | 
| 
       87 
     | 
    
         
            -
                    enabledByDefault: true,
         
     | 
| 
       88 
     | 
    
         
            -
                  };
         
     | 
| 
       89 
82 
     | 
    
         
             
              }
         
     | 
| 
       90 
83 
     | 
    
         
             
            }
         
     | 
| 
       91 
84 
     | 
    
         | 
| 
         @@ -302,6 +302,8 @@ export class LighthousePanel extends UI.Panel.Panel { 
     | 
|
| 
       302 
302 
     | 
    
         
             
                }
         
     | 
| 
       303 
303 
     | 
    
         | 
| 
       304 
304 
     | 
    
         
             
                const reportContainer = this.auditResultsElement.createChild('div', 'lh-vars lh-root lh-devtools');
         
     | 
| 
      
 305 
     | 
    
         
            +
                // @ts-ignore Expose LHR on DOM for e2e tests
         
     | 
| 
      
 306 
     | 
    
         
            +
                reportContainer._lighthouseResultForTesting = lighthouseResult;
         
     | 
| 
       305 
307 
     | 
    
         | 
| 
       306 
308 
     | 
    
         
             
                const dom = new LighthouseReport.DOM(this.auditResultsElement.ownerDocument as Document, reportContainer);
         
     | 
| 
       307 
309 
     | 
    
         
             
                const renderer = new LighthouseReportRenderer(dom) as LighthouseReport.ReportRenderer;
         
     | 
| 
         @@ -143,6 +143,7 @@ export class StartView extends UI.Widget.Widget { 
     | 
|
| 
       143 
143 
     | 
    
         
             
                  const checkbox = new UI.Toolbar.ToolbarSettingCheckbox(preset.setting, preset.description());
         
     | 
| 
       144 
144 
     | 
    
         
             
                  const row = formElements.createChild('div', 'vbox lighthouse-launcher-row');
         
     | 
| 
       145 
145 
     | 
    
         
             
                  row.appendChild(checkbox.element);
         
     | 
| 
      
 146 
     | 
    
         
            +
                  checkbox.element.setAttribute('data-lh-category', preset.configID);
         
     | 
| 
       146 
147 
     | 
    
         
             
                  this.checkboxes.push({preset, checkbox});
         
     | 
| 
       147 
148 
     | 
    
         
             
                  if (mode && !preset.supportedModes.includes(mode)) {
         
     | 
| 
       148 
149 
     | 
    
         
             
                    checkbox.setEnabled(false);
         
     | 
| 
         @@ -195,13 +195,6 @@ const UIStrings = { 
     | 
|
| 
       195 
195 
     | 
    
         
             
              */
         
     | 
| 
       196 
196 
     | 
    
         
             
              toUseThisResourceFromADifferentOrigin:
         
     | 
| 
       197 
197 
     | 
    
         
             
                  'To use this resource from a different origin, the server may relax the cross-origin resource policy response header:',
         
     | 
| 
       198 
     | 
    
         
            -
              /**
         
     | 
| 
       199 
     | 
    
         
            -
               * @description Shown in the network panel for network requests that meet special criteria.
         
     | 
| 
       200 
     | 
    
         
            -
               * 'Attribution' is a term used by the "Attribution Reporting API" and refers to an event, e.g.
         
     | 
| 
       201 
     | 
    
         
            -
               * buying an item in an online store after an ad was clicked.
         
     | 
| 
       202 
     | 
    
         
            -
               * @example {foo} PH1
         
     | 
| 
       203 
     | 
    
         
            -
               */
         
     | 
| 
       204 
     | 
    
         
            -
              recordedAttribution: 'Recorded attribution with `trigger-data`: {PH1}',
         
     | 
| 
       205 
198 
     | 
    
         
             
              /**
         
     | 
| 
       206 
199 
     | 
    
         
             
              *@description Label for a link from the network panel's headers view to the file in which
         
     | 
| 
       207 
200 
     | 
    
         
             
              * header overrides are defined in the sources panel.
         
     | 
| 
         @@ -322,22 +315,7 @@ export class RequestHeadersView extends UI.Widget.VBox { 
     | 
|
| 
       322 
315 
     | 
    
         
             
              private formatHeaderObject(header: BlockedReasonDetailDescriptor): DocumentFragment {
         
     | 
| 
       323 
316 
     | 
    
         
             
                const fragment = document.createDocumentFragment();
         
     | 
| 
       324 
317 
     | 
    
         
             
                if (header.headerNotSet) {
         
     | 
| 
       325 
     | 
    
         
            -
                  fragment.createChild('div', 'header-badge header-badge- 
     | 
| 
       326 
     | 
    
         
            -
                }
         
     | 
| 
       327 
     | 
    
         
            -
                // Highlight successful Attribution Reporting API redirects. If the request was
         
     | 
| 
       328 
     | 
    
         
            -
                // not canceled, then something went wrong.
         
     | 
| 
       329 
     | 
    
         
            -
                if (header.name.toLowerCase() === 'location' && this.request.canceled) {
         
     | 
| 
       330 
     | 
    
         
            -
                  const url = new URL(header.value?.toString() || '', this.request.parsedURL.securityOrigin());
         
     | 
| 
       331 
     | 
    
         
            -
                  const triggerData = getTriggerDataFromAttributionRedirect(url);
         
     | 
| 
       332 
     | 
    
         
            -
                  if (triggerData) {
         
     | 
| 
       333 
     | 
    
         
            -
                    fragment.createChild('div', 'header-badge header-badge-success header-badge-text').textContent =
         
     | 
| 
       334 
     | 
    
         
            -
                        'Attribution Reporting API';
         
     | 
| 
       335 
     | 
    
         
            -
                    header.details = {
         
     | 
| 
       336 
     | 
    
         
            -
                      explanation: (): string => i18nString(UIStrings.recordedAttribution, {PH1: triggerData}),
         
     | 
| 
       337 
     | 
    
         
            -
                      examples: [],
         
     | 
| 
       338 
     | 
    
         
            -
                      link: null,
         
     | 
| 
       339 
     | 
    
         
            -
                    };
         
     | 
| 
       340 
     | 
    
         
            -
                  }
         
     | 
| 
      
 318 
     | 
    
         
            +
                  fragment.createChild('div', 'header-badge header-badge-text').textContent = 'not-set';
         
     | 
| 
       341 
319 
     | 
    
         
             
                }
         
     | 
| 
       342 
320 
     | 
    
         
             
                const colon = header.value ? ': ' : '';
         
     | 
| 
       343 
321 
     | 
    
         
             
                fragment.createChild('div', 'header-name').textContent = header.name + colon;
         
     | 
| 
         @@ -817,19 +795,6 @@ export class Category extends UI.TreeOutline.TreeElement { 
     | 
|
| 
       817 
795 
     | 
    
         
             
              }
         
     | 
| 
       818 
796 
     | 
    
         
             
            }
         
     | 
| 
       819 
797 
     | 
    
         | 
| 
       820 
     | 
    
         
            -
            /**
         
     | 
| 
       821 
     | 
    
         
            -
             * Returns the value for the `trigger-data` search parameter iff the provided
         
     | 
| 
       822 
     | 
    
         
            -
             * url is a valid attribution redirect as specified by the Attribution
         
     | 
| 
       823 
     | 
    
         
            -
             * Reporting API.
         
     | 
| 
       824 
     | 
    
         
            -
             */
         
     | 
| 
       825 
     | 
    
         
            -
            function getTriggerDataFromAttributionRedirect(url: URL): string|null {
         
     | 
| 
       826 
     | 
    
         
            -
              if (url.pathname === '/.well-known/attribution-reporting/trigger-attribution' &&
         
     | 
| 
       827 
     | 
    
         
            -
                  url.searchParams.has('trigger-data')) {
         
     | 
| 
       828 
     | 
    
         
            -
                return url.searchParams.get('trigger-data');
         
     | 
| 
       829 
     | 
    
         
            -
              }
         
     | 
| 
       830 
     | 
    
         
            -
              return null;
         
     | 
| 
       831 
     | 
    
         
            -
            }
         
     | 
| 
       832 
     | 
    
         
            -
             
     | 
| 
       833 
798 
     | 
    
         
             
            interface BlockedReasonDetailDescriptor {
         
     | 
| 
       834 
799 
     | 
    
         
             
              name: string;
         
     | 
| 
       835 
800 
     | 
    
         
             
              value: Object|null;
         
     | 
| 
         @@ -112,21 +112,13 @@ 
     | 
|
| 
       112 
112 
     | 
    
         
             
            .tree-outline .header-badge {
         
     | 
| 
       113 
113 
     | 
    
         
             
              display: inline;
         
     | 
| 
       114 
114 
     | 
    
         
             
              margin-right: 0.75em;
         
     | 
| 
      
 115 
     | 
    
         
            +
              background-color: var(--override-error-background-color);
         
     | 
| 
       115 
116 
     | 
    
         
             
              color: var(--override-error-text-color);
         
     | 
| 
       116 
117 
     | 
    
         
             
              border-radius: 100vh;
         
     | 
| 
       117 
118 
     | 
    
         
             
              padding-left: 6px;
         
     | 
| 
       118 
119 
     | 
    
         
             
              padding-right: 6px;
         
     | 
| 
       119 
120 
     | 
    
         
             
            }
         
     | 
| 
       120 
121 
     | 
    
         | 
| 
       121 
     | 
    
         
            -
            .tree-outline .header-badge-error {
         
     | 
| 
       122 
     | 
    
         
            -
              background-color: var(--override-error-background-color);
         
     | 
| 
       123 
     | 
    
         
            -
            }
         
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
            .tree-outline .header-badge-success {
         
     | 
| 
       126 
     | 
    
         
            -
              background-color: var(--color-accent-green);
         
     | 
| 
       127 
     | 
    
         
            -
              text-transform: uppercase;
         
     | 
| 
       128 
     | 
    
         
            -
            }
         
     | 
| 
       129 
     | 
    
         
            -
             
     | 
| 
       130 
122 
     | 
    
         
             
            .tree-outline .header-value {
         
     | 
| 
       131 
123 
     | 
    
         
             
              display: inline;
         
     | 
| 
       132 
124 
     | 
    
         
             
              margin-right: 1em;
         
     | 
| 
         @@ -121,11 +121,11 @@ function findColorsAndCurves( 
     | 
|
| 
       121 
121 
     | 
    
         
             
                  if (content) {
         
     | 
| 
       122 
122 
     | 
    
         
             
                    const parsedColor = Common.Color.Color.parse(content);
         
     | 
| 
       123 
123 
     | 
    
         
             
                    if (parsedColor) {
         
     | 
| 
       124 
     | 
    
         
            -
                      onColor(from, parsedColor, content);
         
     | 
| 
      
 124 
     | 
    
         
            +
                      onColor(node.from, parsedColor, content);
         
     | 
| 
       125 
125 
     | 
    
         
             
                    } else {
         
     | 
| 
       126 
126 
     | 
    
         
             
                      const parsedCurve = UI.Geometry.CubicBezier.parse(content);
         
     | 
| 
       127 
127 
     | 
    
         
             
                      if (parsedCurve) {
         
     | 
| 
       128 
     | 
    
         
            -
                        onCurve(from, parsedCurve, content);
         
     | 
| 
      
 128 
     | 
    
         
            +
                        onCurve(node.from, parsedCurve, content);
         
     | 
| 
       129 
129 
     | 
    
         
             
                      }
         
     | 
| 
       130 
130 
     | 
    
         
             
                    }
         
     | 
| 
       131 
131 
     | 
    
         
             
                  }
         
     | 
| 
         @@ -179,7 +179,7 @@ export class DebuggerPlugin extends Plugin { 
     | 
|
| 
       179 
179 
     | 
    
         
             
              private readonly breakpointManager: Bindings.BreakpointManager.BreakpointManager;
         
     | 
| 
       180 
180 
     | 
    
         
             
              // Manages pop-overs shown when the debugger is active and the user
         
     | 
| 
       181 
181 
     | 
    
         
             
              // hovers over an expression
         
     | 
| 
       182 
     | 
    
         
            -
              private  
     | 
| 
      
 182 
     | 
    
         
            +
              private popoverHelper: UI.PopoverHelper.PopoverHelper|null = null;
         
     | 
| 
       183 
183 
     | 
    
         
             
              private scriptFileForDebuggerModel:
         
     | 
| 
       184 
184 
     | 
    
         
             
                  Map<SDK.DebuggerModel.DebuggerModel, Bindings.ResourceScriptMapping.ResourceScriptFile>;
         
     | 
| 
       185 
185 
     | 
    
         
             
              // The current set of breakpoints for this file. The locations in
         
     | 
| 
         @@ -214,12 +214,6 @@ export class DebuggerPlugin extends Plugin { 
     | 
|
| 
       214 
214 
     | 
    
         
             
                this.scriptsPanel = SourcesPanel.instance();
         
     | 
| 
       215 
215 
     | 
    
         
             
                this.breakpointManager = Bindings.BreakpointManager.BreakpointManager.instance();
         
     | 
| 
       216 
216 
     | 
    
         | 
| 
       217 
     | 
    
         
            -
                this.popoverHelper =
         
     | 
| 
       218 
     | 
    
         
            -
                    new UI.PopoverHelper.PopoverHelper(this.scriptsPanel.element, this.getPopoverRequest.bind(this));
         
     | 
| 
       219 
     | 
    
         
            -
                this.popoverHelper.setDisableOnClick(true);
         
     | 
| 
       220 
     | 
    
         
            -
                this.popoverHelper.setTimeout(250, 250);
         
     | 
| 
       221 
     | 
    
         
            -
                this.popoverHelper.setHasPadding(true);
         
     | 
| 
       222 
     | 
    
         
            -
             
     | 
| 
       223 
217 
     | 
    
         
             
                this.breakpointManager.addEventListener(
         
     | 
| 
       224 
218 
     | 
    
         
             
                    Bindings.BreakpointManager.Events.BreakpointAdded, this.breakpointChange, this);
         
     | 
| 
       225 
219 
     | 
    
         
             
                this.breakpointManager.addEventListener(
         
     | 
| 
         @@ -349,6 +343,12 @@ export class DebuggerPlugin extends Plugin { 
     | 
|
| 
       349 
343 
     | 
    
         
             
                  void this.refreshBreakpoints();
         
     | 
| 
       350 
344 
     | 
    
         
             
                }
         
     | 
| 
       351 
345 
     | 
    
         
             
                void this.callFrameChanged();
         
     | 
| 
      
 346 
     | 
    
         
            +
             
     | 
| 
      
 347 
     | 
    
         
            +
                this.popoverHelper?.dispose();
         
     | 
| 
      
 348 
     | 
    
         
            +
                this.popoverHelper = new UI.PopoverHelper.PopoverHelper(editor, this.getPopoverRequest.bind(this));
         
     | 
| 
      
 349 
     | 
    
         
            +
                this.popoverHelper.setDisableOnClick(true);
         
     | 
| 
      
 350 
     | 
    
         
            +
                this.popoverHelper.setTimeout(250, 250);
         
     | 
| 
      
 351 
     | 
    
         
            +
                this.popoverHelper.setHasPadding(true);
         
     | 
| 
       352 
352 
     | 
    
         
             
              }
         
     | 
| 
       353 
353 
     | 
    
         | 
| 
       354 
354 
     | 
    
         
             
              static accepts(uiSourceCode: Workspace.UISourceCode.UISourceCode): boolean {
         
     | 
| 
         @@ -422,7 +422,7 @@ export class DebuggerPlugin extends Plugin { 
     | 
|
| 
       422 
422 
     | 
    
         
             
              }
         
     | 
| 
       423 
423 
     | 
    
         | 
| 
       424 
424 
     | 
    
         
             
              willHide(): void {
         
     | 
| 
       425 
     | 
    
         
            -
                this.popoverHelper 
     | 
| 
      
 425 
     | 
    
         
            +
                this.popoverHelper?.hidePopover();
         
     | 
| 
       426 
426 
     | 
    
         
             
              }
         
     | 
| 
       427 
427 
     | 
    
         | 
| 
       428 
428 
     | 
    
         
             
              populateLineGutterContextMenu(contextMenu: UI.ContextMenu.ContextMenu, editorLineNumber: number): void {
         
     | 
| 
         @@ -739,7 +739,7 @@ export class DebuggerPlugin extends Plugin { 
     | 
|
| 
       739 
739 
     | 
    
         
             
                  this.setControlDown(false);
         
     | 
| 
       740 
740 
     | 
    
         
             
                }
         
     | 
| 
       741 
741 
     | 
    
         
             
                if (event.key === Platform.KeyboardUtilities.ESCAPE_KEY) {
         
     | 
| 
       742 
     | 
    
         
            -
                  if (this.popoverHelper.isPopoverVisible()) {
         
     | 
| 
      
 742 
     | 
    
         
            +
                  if (this.popoverHelper && this.popoverHelper.isPopoverVisible()) {
         
     | 
| 
       743 
743 
     | 
    
         
             
                    this.popoverHelper.hidePopover();
         
     | 
| 
       744 
744 
     | 
    
         
             
                    event.consume();
         
     | 
| 
       745 
745 
     | 
    
         
             
                    return true;
         
     | 
| 
         @@ -1000,7 +1000,7 @@ export class DebuggerPlugin extends Plugin { 
     | 
|
| 
       1000 
1000 
     | 
    
         
             
              // Highlight the locations the debugger can continue to (when
         
     | 
| 
       1001 
1001 
     | 
    
         
             
              // Control is held)
         
     | 
| 
       1002 
1002 
     | 
    
         
             
              private async showContinueToLocations(): Promise<void> {
         
     | 
| 
       1003 
     | 
    
         
            -
                this.popoverHelper 
     | 
| 
      
 1003 
     | 
    
         
            +
                this.popoverHelper?.hidePopover();
         
     | 
| 
       1004 
1004 
     | 
    
         
             
                const executionContext = UI.Context.Context.instance().flavor(SDK.RuntimeModel.ExecutionContext);
         
     | 
| 
       1005 
1005 
     | 
    
         
             
                if (!executionContext || !this.editor) {
         
     | 
| 
       1006 
1006 
     | 
    
         
             
                  return;
         
     | 
| 
         @@ -1581,8 +1581,8 @@ export class DebuggerPlugin extends Plugin { 
     | 
|
| 
       1581 
1581 
     | 
    
         
             
                }
         
     | 
| 
       1582 
1582 
     | 
    
         
             
                this.scriptFileForDebuggerModel.clear();
         
     | 
| 
       1583 
1583 
     | 
    
         | 
| 
       1584 
     | 
    
         
            -
                this.popoverHelper 
     | 
| 
       1585 
     | 
    
         
            -
                this.popoverHelper 
     | 
| 
      
 1584 
     | 
    
         
            +
                this.popoverHelper?.hidePopover();
         
     | 
| 
      
 1585 
     | 
    
         
            +
                this.popoverHelper?.dispose();
         
     | 
| 
       1586 
1586 
     | 
    
         | 
| 
       1587 
1587 
     | 
    
         
             
                this.breakpointManager.removeEventListener(
         
     | 
| 
       1588 
1588 
     | 
    
         
             
                    Bindings.BreakpointManager.Events.BreakpointAdded, this.breakpointChange, this);
         
     | 
    
        package/package.json
    CHANGED