chrome-devtools-frontend 1.0.1515796 → 1.0.1516909

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.
Files changed (163) hide show
  1. package/docs/contributing/infrastructure.md +131 -82
  2. package/front_end/Tests.js +3 -29
  3. package/front_end/core/common/Progress.ts +73 -55
  4. package/front_end/core/host/GdpClient.ts +1 -1
  5. package/front_end/core/host/UserMetrics.ts +5 -2
  6. package/front_end/core/protocol_client/InspectorBackend.ts +2 -0
  7. package/front_end/core/root/Runtime.ts +0 -1
  8. package/front_end/core/sdk/CSSMatchedStyles.ts +12 -10
  9. package/front_end/core/sdk/CSSModel.ts +1 -31
  10. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +27 -7
  11. package/front_end/core/sdk/DebuggerModel.ts +1 -31
  12. package/front_end/core/sdk/EnhancedTracesParser.ts +81 -50
  13. package/front_end/core/sdk/NetworkManager.ts +1 -31
  14. package/front_end/core/sdk/NetworkRequest.ts +1 -31
  15. package/front_end/core/sdk/RehydratingConnection.snapshot.txt +1003 -0
  16. package/front_end/core/sdk/RehydratingConnection.ts +13 -18
  17. package/front_end/core/sdk/RehydratingObject.ts +8 -31
  18. package/front_end/core/sdk/RemoteObject.ts +1 -31
  19. package/front_end/core/sdk/ResourceTreeModel.ts +1 -31
  20. package/front_end/core/sdk/RuntimeModel.ts +1 -31
  21. package/front_end/core/sdk/ServiceWorkerManager.ts +1 -31
  22. package/front_end/core/sdk/SourceMap.ts +1 -31
  23. package/front_end/core/sdk/TraceObject.ts +8 -3
  24. package/front_end/entrypoints/main/MainImpl.ts +1 -3
  25. package/front_end/models/ai_assistance/AiHistoryStorage.ts +1 -3
  26. package/front_end/models/ai_assistance/ConversationHandler.ts +4 -6
  27. package/front_end/models/ai_assistance/agents/AiAgent.ts +4 -1
  28. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +110 -76
  29. package/front_end/models/ai_assistance/agents/PerformanceAnnotationsAgent.ts +2 -2
  30. package/front_end/models/ai_assistance/agents/StylingAgent.ts +2 -2
  31. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +178 -85
  32. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +308 -218
  33. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +100 -100
  34. package/front_end/models/ai_assistance/data_formatters/UnitFormatters.ts +10 -1
  35. package/front_end/models/ai_assistance/performance/AIContext.ts +19 -21
  36. package/front_end/models/ai_code_completion/AiCodeCompletion.ts +24 -8
  37. package/front_end/models/badges/UserBadges.ts +38 -3
  38. package/front_end/models/bindings/ContentProviderBasedProject.ts +6 -4
  39. package/front_end/models/breakpoints/BreakpointManager.ts +3 -3
  40. package/front_end/models/formatter/FormatterWorkerPool.ts +3 -3
  41. package/front_end/models/har/Writer.ts +11 -11
  42. package/front_end/models/persistence/FileSystemWorkspaceBinding.ts +3 -3
  43. package/front_end/models/persistence/IsolatedFileSystem.ts +4 -4
  44. package/front_end/models/persistence/IsolatedFileSystemManager.ts +7 -7
  45. package/front_end/models/persistence/PersistenceImpl.ts +8 -8
  46. package/front_end/models/persistence/PlatformFileSystem.ts +1 -1
  47. package/front_end/models/trace/ModelImpl.ts +2 -16
  48. package/front_end/models/trace/Processor.ts +15 -9
  49. package/front_end/models/trace/handlers/AuctionWorkletsHandler.ts +4 -4
  50. package/front_end/models/trace/handlers/FramesHandler.ts +2 -2
  51. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +7 -10
  52. package/front_end/models/trace/handlers/MetaHandler.ts +11 -9
  53. package/front_end/models/trace/handlers/ScreenshotsHandler.ts +1 -1
  54. package/front_end/models/trace/handlers/ScriptsHandler.ts +5 -5
  55. package/front_end/models/trace/handlers/UserInteractionsHandler.ts +2 -14
  56. package/front_end/models/trace/handlers/UserTimingsHandler.ts +3 -4
  57. package/front_end/models/trace/insights/CLSCulprits.ts +1 -1
  58. package/front_end/models/trace/insights/DocumentLatency.ts +3 -4
  59. package/front_end/models/trace/insights/DuplicatedJavaScript.ts +1 -1
  60. package/front_end/models/trace/insights/INPBreakdown.ts +1 -1
  61. package/front_end/models/trace/insights/ImageDelivery.ts +1 -1
  62. package/front_end/models/trace/insights/LCPBreakdown.ts +1 -1
  63. package/front_end/models/trace/insights/LCPDiscovery.ts +1 -1
  64. package/front_end/models/trace/insights/ModernHTTP.ts +1 -1
  65. package/front_end/models/trace/insights/NetworkDependencyTree.ts +1 -1
  66. package/front_end/models/trace/insights/RenderBlocking.ts +1 -1
  67. package/front_end/models/trace/insights/types.ts +2 -0
  68. package/front_end/models/trace/types/TraceEvents.ts +41 -64
  69. package/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.ts +1 -1
  70. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +21 -99
  71. package/front_end/panels/application/ServiceWorkersView.ts +0 -1
  72. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +2 -3
  73. package/front_end/panels/common/BadgeNotification.ts +46 -10
  74. package/front_end/panels/common/GdpSignUpDialog.ts +6 -3
  75. package/front_end/panels/console/ConsoleView.ts +23 -28
  76. package/front_end/panels/console/ConsoleViewport.ts +2 -2
  77. package/front_end/panels/console/consoleView.css +11 -1
  78. package/front_end/panels/coverage/CoverageView.ts +2 -2
  79. package/front_end/panels/elements/ComputedStyleWidget.ts +1 -2
  80. package/front_end/panels/elements/ElementsTreeOutline.ts +2 -2
  81. package/front_end/panels/elements/LayoutPane.ts +1 -1
  82. package/front_end/panels/elements/StyleEditorWidget.ts +8 -19
  83. package/front_end/panels/elements/StylePropertyTreeElement.ts +39 -25
  84. package/front_end/panels/elements/StylesSidebarPane.ts +2 -2
  85. package/front_end/panels/elements/stylePropertiesTreeOutline.css +4 -3
  86. package/front_end/panels/layer_viewer/Layers3DView.ts +2 -2
  87. package/front_end/panels/layers/LayerTreeModel.ts +3 -3
  88. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +4 -4
  89. package/front_end/panels/network/NetworkLogView.ts +6 -2
  90. package/front_end/panels/network/NetworkLogViewColumns.ts +3 -3
  91. package/front_end/panels/network/NetworkSearchScope.ts +6 -6
  92. package/front_end/panels/search/SearchResultsPane.ts +32 -47
  93. package/front_end/panels/search/SearchView.ts +58 -80
  94. package/front_end/panels/settings/components/SyncSection.ts +7 -2
  95. package/front_end/panels/sources/OutlineQuickOpen.ts +3 -1
  96. package/front_end/panels/sources/SourcesSearchScope.ts +4 -4
  97. package/front_end/panels/sources/TabbedEditorContainer.ts +5 -5
  98. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +10 -5
  99. package/front_end/panels/timeline/TimelineFlameChartView.ts +18 -15
  100. package/front_end/panels/timeline/TimelinePanel.ts +41 -22
  101. package/front_end/panels/timeline/TimelineUIUtils.ts +13 -8
  102. package/front_end/panels/timeline/TracingLayerTree.ts +4 -5
  103. package/front_end/panels/timeline/components/ExportTraceOptions.ts +37 -22
  104. package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +17 -7
  105. package/front_end/third_party/axe-core/README.chromium +1 -0
  106. package/front_end/third_party/codemirror/README.chromium +1 -0
  107. package/front_end/third_party/codemirror.next/README.chromium +1 -0
  108. package/front_end/third_party/csp_evaluator/README.chromium +1 -0
  109. package/front_end/third_party/diff/README.chromium +1 -0
  110. package/front_end/third_party/i18n/README.chromium +1 -0
  111. package/front_end/third_party/intl-messageformat/README.chromium +1 -0
  112. package/front_end/third_party/json5/README.chromium +1 -0
  113. package/front_end/third_party/legacy-javascript/README.chromium +1 -0
  114. package/front_end/third_party/lighthouse/README.chromium +1 -0
  115. package/front_end/third_party/lit/README.chromium +1 -0
  116. package/front_end/third_party/marked/README.chromium +1 -0
  117. package/front_end/third_party/puppeteer/README.chromium +2 -2
  118. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.d.ts +2 -2
  119. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +0 -20
  120. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
  121. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
  122. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +1 -1
  123. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
  124. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +1 -1
  125. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +1 -1
  126. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  127. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  128. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +2 -23
  129. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +0 -20
  130. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
  131. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
  132. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +1 -1
  133. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +1 -1
  134. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +1 -1
  135. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  136. package/front_end/third_party/puppeteer/package/package.json +1 -1
  137. package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +1 -21
  138. package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
  139. package/front_end/third_party/puppeteer/package/src/revisions.ts +1 -1
  140. package/front_end/third_party/puppeteer-replay/README.chromium +1 -0
  141. package/front_end/third_party/third-party-web/README.chromium +1 -0
  142. package/front_end/third_party/vscode.web-custom-data/README.chromium +1 -0
  143. package/front_end/third_party/wasmparser/README.chromium +1 -0
  144. package/front_end/third_party/web-vitals/README.chromium +1 -0
  145. package/front_end/ui/components/text_editor/config.ts +30 -1
  146. package/front_end/ui/components/tooltips/Tooltip.ts +18 -4
  147. package/front_end/ui/legacy/ContextMenu.ts +2 -2
  148. package/front_end/ui/legacy/GlassPane.ts +7 -3
  149. package/front_end/ui/legacy/ProgressIndicator.ts +29 -16
  150. package/front_end/ui/legacy/TabbedPane.ts +2 -2
  151. package/front_end/ui/legacy/Treeoutline.ts +10 -5
  152. package/front_end/ui/legacy/UIUtils.ts +42 -10
  153. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +14 -14
  154. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +6 -6
  155. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +3 -29
  156. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +14 -14
  157. package/front_end/ui/visual_logging/KnownContextValues.ts +7 -0
  158. package/inspector_overlay/highlight_common.ts +1 -27
  159. package/inspector_overlay/highlight_grid_common.ts +1 -27
  160. package/inspector_overlay/tool_highlight.ts +1 -27
  161. package/inspector_overlay/tool_persistent.ts +1 -27
  162. package/inspector_overlay/tool_source_order.ts +1 -27
  163. package/package.json +1 -1
@@ -33,44 +33,57 @@ export class ProgressIndicator extends HTMLElement implements Common.Progress.Pr
33
33
  // using the 'no-stop-button' attribute on the element.
34
34
  if (!this.hasAttribute('no-stop-button')) {
35
35
  this.#stopButton = this.#contentElement.createChild('button', 'progress-indicator-shadow-stop-button');
36
- this.#stopButton.addEventListener('click', this.cancel.bind(this));
36
+ this.#stopButton.addEventListener('click', () => {
37
+ this.canceled = true;
38
+ });
37
39
  }
38
40
  }
39
41
 
40
- done(): void {
41
- if (this.#isDone) {
42
+ set done(done: boolean) {
43
+ if (this.#isDone === done) {
42
44
  return;
43
45
  }
44
- this.#isDone = true;
45
- this.remove();
46
+ this.#isDone = done;
47
+ if (done) {
48
+ this.remove();
49
+ }
50
+ }
51
+
52
+ get done(): boolean {
53
+ return this.#isDone;
46
54
  }
47
55
 
48
- cancel(): void {
49
- this.#isCanceled = true;
56
+ set canceled(value: boolean) {
57
+ this.#isCanceled = value;
50
58
  }
51
59
 
52
- isCanceled(): boolean {
60
+ get canceled(): boolean {
53
61
  return this.#isCanceled;
54
62
  }
55
63
 
56
- setTitle(title: string): void {
64
+ override set title(title: string) {
57
65
  this.#labelElement.textContent = title;
58
66
  }
59
67
 
60
- setTotalWork(totalWork: number): void {
68
+ override get title(): string {
69
+ return this.#labelElement.textContent ?? '';
70
+ }
71
+
72
+ set totalWork(totalWork: number) {
61
73
  this.#progressElement.max = totalWork;
62
74
  }
63
75
 
64
- setWorked(worked: number, title?: string): void {
76
+ get totalWork(): number {
77
+ return this.#progressElement.max;
78
+ }
79
+
80
+ set worked(worked: number) {
65
81
  this.#worked = worked;
66
82
  this.#progressElement.value = worked;
67
- if (title) {
68
- this.setTitle(title);
69
- }
70
83
  }
71
84
 
72
- incrementWorked(worked?: number): void {
73
- this.setWorked(this.#worked + (worked || 1));
85
+ get worked(): number {
86
+ return this.#worked;
74
87
  }
75
88
  }
76
89
 
@@ -242,7 +242,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
242
242
 
243
243
  const focused = this.hasFocus();
244
244
  for (let i = 0; i < ids.length; ++i) {
245
- this.innerCloseTab(ids[i], userGesture);
245
+ this.#closeTab(ids[i], userGesture);
246
246
  }
247
247
  this.requestUpdate();
248
248
  if (this.tabsHistory.length) {
@@ -253,7 +253,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
253
253
  }
254
254
  }
255
255
 
256
- private innerCloseTab(id: string, userGesture?: boolean): true|undefined {
256
+ #closeTab(id: string, userGesture?: boolean): true|undefined {
257
257
  const tab = this.tabsById.get(id);
258
258
  if (!tab) {
259
259
  return;
@@ -1618,8 +1618,8 @@ function getTreeNodes(nodeList: NodeList|Node[]): HTMLLIElement[] {
1618
1618
 
1619
1619
  /**
1620
1620
  * A tree element that can be used as progressive enhancement over a <ul> element. A `template` IDL attribute allows
1621
- * additionally to insert the <ul> into a <template>, avoiding rendering anything into light DOM. The <ul> itself will
1622
- * be cloned into shadow DOM and rendered there.
1621
+ * additionally to insert the <ul> into a <template>, avoiding rendering anything into light DOM, which is recommended.
1622
+ * The <ul> itself will be cloned into shadow DOM and rendered there.
1623
1623
  *
1624
1624
  * ## Usage ##
1625
1625
  *
@@ -1663,12 +1663,17 @@ function getTreeNodes(nodeList: NodeList|Node[]): HTMLLIElement[] {
1663
1663
  *
1664
1664
  * ## Event Handling ##
1665
1665
  *
1666
+ * This section is only relevant if NOT using the `template`.
1667
+ *
1666
1668
  * Since config elements are cloned into the shadow DOM, it's not possible to directly attach event listeners to the
1667
- * children of config elements. Instead, the `HTMLElementWithLightDOMTemplate.on` directive should be used as a wrapper:
1669
+ * children of config elements. Instead, the `UI.UIUtils.InterceptBindingDirective` directive needs to be used as a
1670
+ * wrapper:
1668
1671
  * ```
1669
- * <li role="treeitem">
1672
+ * const on = Lit.Directive.directive(UI.UIUtils.InterceptBindingDirective);
1673
+ *
1674
+ * html`<li role="treeitem">
1670
1675
  * <button @click=${on(clickHandler)}>click me</button>
1671
- * </li>
1676
+ * </li>`
1672
1677
  * ```
1673
1678
  *
1674
1679
  * @property template Define the tree contents
@@ -2181,17 +2181,15 @@ export function bindToAction(actionName: string): ReturnType<typeof Directives.r
2181
2181
  });
2182
2182
  }
2183
2183
 
2184
- class InterceptBindingDirective extends Lit.Directive.Directive {
2185
- static readonly #interceptedBindings = new WeakMap<Element, Map<string, (e: Event) => void>>();
2184
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
2185
+ type BindingEventListener = (arg: any) => any;
2186
+ export class InterceptBindingDirective extends Lit.Directive.Directive {
2187
+ static readonly #interceptedBindings = new WeakMap<Element, Map<string, BindingEventListener>>();
2186
2188
 
2187
- constructor(part: Lit.Directive.PartInfo) {
2188
- super(part);
2189
+ override update(part: Lit.Directive.Part, [listener]: [BindingEventListener]): unknown {
2189
2190
  if (part.type !== Lit.Directive.PartType.EVENT) {
2190
- throw new Error('This directive is for event bindings only');
2191
+ return listener;
2191
2192
  }
2192
- }
2193
-
2194
- override update(part: Lit.Directive.EventPart, [listener]: [(e: Event) => void]): undefined {
2195
2193
  let eventListeners = InterceptBindingDirective.#interceptedBindings.get(part.element);
2196
2194
  if (!eventListeners) {
2197
2195
  eventListeners = new Map();
@@ -2202,7 +2200,8 @@ class InterceptBindingDirective extends Lit.Directive.Directive {
2202
2200
  return this.render(listener);
2203
2201
  }
2204
2202
 
2205
- render(_listener: (e: Event) => void): undefined {
2203
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-function-type */
2204
+ render(_listener: Function): undefined {
2206
2205
  return undefined;
2207
2206
  }
2208
2207
 
@@ -2218,7 +2217,6 @@ class InterceptBindingDirective extends Lit.Directive.Directive {
2218
2217
  }
2219
2218
 
2220
2219
  export class HTMLElementWithLightDOMTemplate extends HTMLElement {
2221
- static readonly on = Lit.Directive.directive(InterceptBindingDirective);
2222
2220
  readonly #mutationObserver = new MutationObserver(this.#onChange.bind(this));
2223
2221
  #contentTemplate: HTMLTemplateElement|null = null;
2224
2222
 
@@ -2238,6 +2236,39 @@ export class HTMLElementWithLightDOMTemplate extends HTMLElement {
2238
2236
  return clone;
2239
2237
  }
2240
2238
 
2239
+ private static patchLitTemplate(template: Lit.LitTemplate): void {
2240
+ const wrapper = Lit.Directive.directive(InterceptBindingDirective);
2241
+ if (template === Lit.nothing) {
2242
+ return;
2243
+ }
2244
+ template.values = template.values.map(patchValue);
2245
+
2246
+ function isLitTemplate(value: unknown): value is Lit.TemplateResult<1> {
2247
+ return Boolean(
2248
+ typeof value === 'object' && value && '_$litType$' in value && 'strings' in value && 'values' in value &&
2249
+ value['_$litType$'] === 1);
2250
+ }
2251
+
2252
+ function patchValue(value: unknown): unknown {
2253
+ if (typeof value === 'function') {
2254
+ try {
2255
+ return wrapper(value);
2256
+ } catch {
2257
+ return value;
2258
+ }
2259
+ }
2260
+ if (isLitTemplate(value)) {
2261
+ HTMLElementWithLightDOMTemplate.patchLitTemplate(value);
2262
+ return value;
2263
+ }
2264
+ if (Array.isArray(value)) {
2265
+ return value.map(patchValue);
2266
+ }
2267
+
2268
+ return value;
2269
+ }
2270
+ }
2271
+
2241
2272
  set template(template: Lit.LitTemplate) {
2242
2273
  if (!this.#contentTemplate) {
2243
2274
  this.removeChildren();
@@ -2246,6 +2277,7 @@ export class HTMLElementWithLightDOMTemplate extends HTMLElement {
2246
2277
  this.#mutationObserver.observe(
2247
2278
  this.#contentTemplate.content, {childList: true, attributes: true, subtree: true, characterData: true});
2248
2279
  }
2280
+ HTMLElementWithLightDOMTemplate.patchLitTemplate(template);
2249
2281
  // eslint-disable-next-line rulesdir/no-lit-render-outside-of-view
2250
2282
  render(template, this.#contentTemplate.content);
2251
2283
  }
@@ -493,7 +493,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
493
493
  const positionFraction = (sliderPosition - hueAlphaLeft) / this.hueAlphaWidth;
494
494
  const newHue = 1 - positionFraction;
495
495
  hsva[0] = Platform.NumberUtilities.clamp(newHue, 0, 1);
496
- this.innerSetColor(hsva, '', undefined /* colorName */, undefined, ChangeSource.Other);
496
+ this.#setColor(hsva, '', undefined /* colorName */, undefined, ChangeSource.Other);
497
497
  const color = getColorFromHsva(this.gamut, hsva);
498
498
  const colorValues = color.as(Common.Color.Format.HSL).canonicalHSLA();
499
499
  UI.ARIAUtils.setValueNow(this.hueElement, colorValues[0]);
@@ -506,7 +506,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
506
506
  const positionFraction = (sliderPosition - hueAlphaLeft) / this.hueAlphaWidth;
507
507
  const newAlpha = Math.round(positionFraction * 100) / 100;
508
508
  hsva[3] = Platform.NumberUtilities.clamp(newAlpha, 0, 1);
509
- this.innerSetColor(hsva, '', undefined /* colorName */, undefined, ChangeSource.Other);
509
+ this.#setColor(hsva, '', undefined /* colorName */, undefined, ChangeSource.Other);
510
510
  const color = getColorFromHsva(this.gamut, hsva);
511
511
  const colorValues = color.as(Common.Color.Format.HSL).canonicalHSLA();
512
512
  UI.ARIAUtils.setValueText(this.alphaElement, colorValues[3]);
@@ -518,7 +518,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
518
518
  this.colorOffset = this.colorElement.getBoundingClientRect();
519
519
  hsva[1] = Platform.NumberUtilities.clamp((colorPosition.x - this.colorOffset.left) / this.dragWidth, 0, 1);
520
520
  hsva[2] = Platform.NumberUtilities.clamp(1 - (colorPosition.y - this.colorOffset.top) / this.dragHeight, 0, 1);
521
- this.innerSetColor(hsva, '', undefined /* colorName */, undefined, ChangeSource.Other);
521
+ this.#setColor(hsva, '', undefined /* colorName */, undefined, ChangeSource.Other);
522
522
  }
523
523
 
524
524
  function getUpdatedColorPosition(dragElement: Element, event: Event): {
@@ -959,7 +959,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
959
959
  const colorName = palette.colorNames[colorIndex];
960
960
  const color = Common.Color.parse(colorText);
961
961
  if (color) {
962
- this.innerSetColor(
962
+ this.#setColor(
963
963
  color, colorText, colorName, palette.matchUserFormat ? this.colorFormat : color.format(),
964
964
  ChangeSource.Other);
965
965
  }
@@ -991,7 +991,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
991
991
  if (event instanceof MouseEvent || Platform.KeyboardUtilities.isEnterOrSpaceKey(event)) {
992
992
  const color = Common.Color.parse(shade);
993
993
  if (color) {
994
- this.innerSetColor(color, shade, shade, color.format(), ChangeSource.Other);
994
+ this.#setColor(color, shade, shade, color.format(), ChangeSource.Other);
995
995
  }
996
996
  // Continue bubbling so that the color picker will close and submit the selected color.
997
997
  return;
@@ -1063,14 +1063,14 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
1063
1063
  }
1064
1064
 
1065
1065
  setColor(color: Common.Color.Color): void {
1066
- this.innerSetColor(color, '', undefined /* colorName */, color.format(), ChangeSource.Model);
1066
+ this.#setColor(color, '', undefined /* colorName */, color.format(), ChangeSource.Model);
1067
1067
  const colorValues = color.as(Common.Color.Format.HSL).canonicalHSLA();
1068
1068
  UI.ARIAUtils.setValueNow(this.hueElement, colorValues[0]);
1069
1069
  UI.ARIAUtils.setValueText(this.alphaElement, colorValues[3]);
1070
1070
  }
1071
1071
 
1072
1072
  private colorSelected(color: Common.Color.Legacy): void {
1073
- this.innerSetColor(color, '', undefined /* colorName */, undefined /* colorFormat */, ChangeSource.Other);
1073
+ this.#setColor(color, '', undefined /* colorName */, undefined /* colorFormat */, ChangeSource.Other);
1074
1074
  }
1075
1075
 
1076
1076
  get color(): Common.Color.Color {
@@ -1081,7 +1081,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
1081
1081
  return getColorFromHsva(this.gamut, this.hsv);
1082
1082
  }
1083
1083
 
1084
- private innerSetColor(
1084
+ #setColor(
1085
1085
  colorOrHsv: Common.Color.Color|Common.ColorUtils.Color4D|undefined, colorString: string|undefined,
1086
1086
  colorName: string|undefined, colorFormat: Common.Color.Format|undefined, changeSource: string): void {
1087
1087
  // It is important to do `undefined` check here since we want to update the
@@ -1289,7 +1289,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
1289
1289
  const contextMenu = new FormatPickerContextMenu(this.color);
1290
1290
  this.isFormatPickerShown = true;
1291
1291
  await contextMenu.show(event, newColor => {
1292
- this.innerSetColor(newColor, undefined, undefined, newColor.format(), ChangeSource.Other);
1292
+ this.#setColor(newColor, undefined, undefined, newColor.format(), ChangeSource.Other);
1293
1293
  });
1294
1294
  this.isFormatPickerShown = false;
1295
1295
  }
@@ -1306,7 +1306,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
1306
1306
  if (!color) {
1307
1307
  return;
1308
1308
  }
1309
- this.innerSetColor(color, text, undefined /* colorName */, undefined /* colorFormat */, ChangeSource.Other);
1309
+ this.#setColor(color, text, undefined /* colorName */, undefined /* colorFormat */, ChangeSource.Other);
1310
1310
  event.preventDefault();
1311
1311
  }
1312
1312
 
@@ -1360,7 +1360,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
1360
1360
  return;
1361
1361
  }
1362
1362
 
1363
- this.innerSetColor(color, undefined, undefined /* colorName */, colorFormat, ChangeSource.Input);
1363
+ this.#setColor(color, undefined, undefined /* colorName */, colorFormat, ChangeSource.Input);
1364
1364
  }
1365
1365
 
1366
1366
  override wasShown(): void {
@@ -1369,7 +1369,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
1369
1369
  this.dragWidth = this.colorElement.offsetWidth;
1370
1370
  this.dragHeight = this.colorElement.offsetHeight;
1371
1371
  this.colorDragElementHeight = this.colorDragElement.offsetHeight / 2;
1372
- this.innerSetColor(undefined, undefined, undefined /* colorName */, undefined, ChangeSource.Model);
1372
+ this.#setColor(undefined, undefined, undefined /* colorName */, undefined, ChangeSource.Model);
1373
1373
  // When flag is turned on, eye dropper is not turned on by default.
1374
1374
  // This is because the global change of the cursor into a dropper will disturb the user.
1375
1375
  if (!IS_NATIVE_EYE_DROPPER_AVAILABLE) {
@@ -1426,7 +1426,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
1426
1426
  const hexColor = await eyeDropper.open({signal: this.eyeDropperAbortController.signal});
1427
1427
  const color = Common.Color.parse(hexColor.sRGBHex);
1428
1428
 
1429
- this.innerSetColor(color ?? undefined, '', undefined /* colorName */, undefined, ChangeSource.Other);
1429
+ this.#setColor(color ?? undefined, '', undefined /* colorName */, undefined, ChangeSource.Other);
1430
1430
  } catch (error) {
1431
1431
  if (error.name !== 'AbortError') {
1432
1432
  console.error(error);
@@ -1445,7 +1445,7 @@ export class Spectrum extends Common.ObjectWrapper.eventMixin<EventTypes, typeof
1445
1445
  }: Common.EventTarget.EventTargetEvent<Host.InspectorFrontendHostAPI.EyeDropperPickedColorEvent>): void {
1446
1446
  const rgba = [rgbColor.r, rgbColor.g, rgbColor.b, (rgbColor.a / 2.55 | 0) / 100];
1447
1447
  const color = Common.Color.Legacy.fromRGBA(rgba);
1448
- this.innerSetColor(color, '', undefined /* colorName */, undefined, ChangeSource.Other);
1448
+ this.#setColor(color, '', undefined /* colorName */, undefined, ChangeSource.Other);
1449
1449
  Host.InspectorFrontendHost.InspectorFrontendHostInstance.bringToFront();
1450
1450
  }
1451
1451
  }
@@ -212,7 +212,7 @@ export class DataGridImpl<T> extends Common.ObjectWrapper.ObjectWrapper<EventTyp
212
212
  this.columns = {};
213
213
  this.visibleColumnsArray = columnsArray;
214
214
 
215
- columnsArray.forEach(column => this.innerAddColumn(column));
215
+ columnsArray.forEach(column => this.#addColumn(column));
216
216
 
217
217
  this.cellClass = null;
218
218
 
@@ -409,12 +409,12 @@ export class DataGridImpl<T> extends Common.ObjectWrapper.ObjectWrapper<EventTyp
409
409
  UI.ARIAUtils.LiveAnnouncer.alert(accessibleText);
410
410
  }
411
411
 
412
- private innerAddColumn(column: ColumnDescriptor, position?: number): void {
412
+ #addColumn(column: ColumnDescriptor, position?: number): void {
413
413
  column.defaultWeight = column.weight;
414
414
 
415
415
  const columnId = column.id;
416
416
  if (columnId in this.columns) {
417
- this.innerRemoveColumn(columnId);
417
+ this.#removeColumn(columnId);
418
418
  }
419
419
 
420
420
  if (position === undefined) {
@@ -472,10 +472,10 @@ export class DataGridImpl<T> extends Common.ObjectWrapper.ObjectWrapper<EventTyp
472
472
  }
473
473
 
474
474
  addColumn(column: ColumnDescriptor, position?: number): void {
475
- this.innerAddColumn(column, position);
475
+ this.#addColumn(column, position);
476
476
  }
477
477
 
478
- private innerRemoveColumn(columnId: string): void {
478
+ #removeColumn(columnId: string): void {
479
479
  const column = this.columns[columnId];
480
480
  if (!column) {
481
481
  return;
@@ -491,7 +491,7 @@ export class DataGridImpl<T> extends Common.ObjectWrapper.ObjectWrapper<EventTyp
491
491
  }
492
492
 
493
493
  removeColumn(columnId: string): void {
494
- this.innerRemoveColumn(columnId);
494
+ this.#removeColumn(columnId);
495
495
  }
496
496
 
497
497
  setCellClass(cellClass: string): void {
@@ -1,32 +1,6 @@
1
- /**
2
- * Copyright (C) 2013 Google Inc. All rights reserved.
3
- *
4
- * Redistribution and use in source and binary forms, with or without
5
- * modification, are permitted provided that the following conditions are
6
- * met:
7
- *
8
- * * Redistributions of source code must retain the above copyright
9
- * notice, this list of conditions and the following disclaimer.
10
- * * Redistributions in binary form must reproduce the above
11
- * copyright notice, this list of conditions and the following disclaimer
12
- * in the documentation and/or other materials provided with the
13
- * distribution.
14
- * * Neither the name of Google Inc. nor the names of its
15
- * contributors may be used to endorse or promote products derived from
16
- * this software without specific prior written permission.
17
- *
18
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
- */
1
+ // Copyright 2013 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
30
4
 
31
5
  /* eslint-disable rulesdir/no-imperative-dom-api */
32
6
 
@@ -526,11 +526,11 @@ export class SourceFrameImpl extends Common.ObjectWrapper.eventMixin<EventTypes,
526
526
  protected async setContentDataOrError(contentDataPromise: Promise<TextUtils.ContentData.ContentDataOrError>):
527
527
  Promise<void> {
528
528
  const progressIndicator = document.createElement('devtools-progress');
529
- progressIndicator.setTitle(i18nString(UIStrings.loading));
530
- progressIndicator.setTotalWork(100);
529
+ progressIndicator.title = i18nString(UIStrings.loading);
530
+ progressIndicator.totalWork = 100;
531
531
  this.progressToolbarItem.element.appendChild(progressIndicator);
532
532
 
533
- progressIndicator.setWorked(1);
533
+ progressIndicator.worked = 1;
534
534
  const contentData = await contentDataPromise;
535
535
 
536
536
  let error: string|undefined;
@@ -557,8 +557,8 @@ export class SourceFrameImpl extends Common.ObjectWrapper.eventMixin<EventTypes,
557
557
  this.wasmDisassemblyInternal = null;
558
558
  }
559
559
 
560
- progressIndicator.setWorked(100);
561
- progressIndicator.done();
560
+ progressIndicator.worked = 100;
561
+ progressIndicator.done = true;
562
562
 
563
563
  if (this.rawContent === content && error === undefined) {
564
564
  return;
@@ -599,10 +599,10 @@ export class SourceFrameImpl extends Common.ObjectWrapper.eventMixin<EventTypes,
599
599
  } else {
600
600
  this.positionToReveal = {...position, shouldHighlight};
601
601
  }
602
- this.innerRevealPositionIfNeeded();
602
+ this.#revealPositionIfNeeded();
603
603
  }
604
604
 
605
- private innerRevealPositionIfNeeded(): void {
605
+ #revealPositionIfNeeded(): void {
606
606
  if (!this.positionToReveal) {
607
607
  return;
608
608
  }
@@ -627,10 +627,10 @@ export class SourceFrameImpl extends Common.ObjectWrapper.eventMixin<EventTypes,
627
627
  scrollToLine(line: number): void {
628
628
  this.clearPositionToReveal();
629
629
  this.lineToScrollTo = line;
630
- this.innerScrollToLineIfNeeded();
630
+ this.#scrollToLineIfNeeded();
631
631
  }
632
632
 
633
- private innerScrollToLineIfNeeded(): void {
633
+ #scrollToLineIfNeeded(): void {
634
634
  if (this.lineToScrollTo !== null) {
635
635
  if (this.loaded && this.isShowing()) {
636
636
  const {textEditor} = this;
@@ -643,10 +643,10 @@ export class SourceFrameImpl extends Common.ObjectWrapper.eventMixin<EventTypes,
643
643
 
644
644
  setSelection(textRange: TextUtils.TextRange.TextRange): void {
645
645
  this.selectionToSet = textRange;
646
- this.innerSetSelectionIfNeeded();
646
+ this.#setSelectionIfNeeded();
647
647
  }
648
648
 
649
- private innerSetSelectionIfNeeded(): void {
649
+ #setSelectionIfNeeded(): void {
650
650
  const sel = this.selectionToSet;
651
651
  if (sel && this.loaded && this.isShowing()) {
652
652
  const {textEditor} = this;
@@ -660,9 +660,9 @@ export class SourceFrameImpl extends Common.ObjectWrapper.eventMixin<EventTypes,
660
660
  }
661
661
 
662
662
  private wasShownOrLoaded(): void {
663
- this.innerRevealPositionIfNeeded();
664
- this.innerSetSelectionIfNeeded();
665
- this.innerScrollToLineIfNeeded();
663
+ this.#revealPositionIfNeeded();
664
+ this.#setSelectionIfNeeded();
665
+ this.#scrollToLineIfNeeded();
666
666
  this.textEditor.shadowRoot?.querySelector('.cm-lineNumbers')
667
667
  ?.setAttribute('jslog', `${VisualLogging.gutter('line-numbers').track({click: true})}`);
668
668
  this.textEditor.shadowRoot?.querySelector('.cm-foldGutter')
@@ -1598,6 +1598,7 @@ export const knownContextValues = new Set([
1598
1598
  'font-family',
1599
1599
  'font-feature-settings',
1600
1600
  'font-kerning',
1601
+ 'font-language-override',
1601
1602
  'font-optical-sizing',
1602
1603
  'font-palette',
1603
1604
  'font-size',
@@ -1906,6 +1907,8 @@ export const knownContextValues = new Set([
1906
1907
  'interactions',
1907
1908
  'interactivity',
1908
1909
  'interest-delay',
1910
+ 'interest-delay-end',
1911
+ 'interest-delay-start',
1909
1912
  'interest-groups',
1910
1913
  'interest-hide-delay',
1911
1914
  'interest-show-delay',
@@ -3546,6 +3549,9 @@ export const knownContextValues = new Set([
3546
3549
  'start-time',
3547
3550
  'start-url',
3548
3551
  'start-view',
3552
+ 'starter-badge-dismissed',
3553
+ 'starter-badge-last-snoozed-timestamp',
3554
+ 'starter-badge-snooze-count',
3549
3555
  'static-global-setting',
3550
3556
  'static-synced-setting',
3551
3557
  'status',
@@ -3771,6 +3777,7 @@ export const knownContextValues = new Set([
3771
3777
  'timeline.export-trace-options',
3772
3778
  'timeline.export-trace-options.annotations-checkbox',
3773
3779
  'timeline.export-trace-options.script-content-checkbox',
3780
+ 'timeline.export-trace-options.should-compress-checkbox',
3774
3781
  'timeline.export-trace-options.source-maps-checkbox',
3775
3782
  'timeline.extension',
3776
3783
  'timeline.field-data.configure',
@@ -1,33 +1,7 @@
1
- // Copyright 2020 The Chromium Authors
1
+ // Copyright 2012 The Chromium Authors
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- // Copyright (C) 2012 Google Inc. All rights reserved.
6
-
7
- // Redistribution and use in source and binary forms, with or without
8
- // modification, are permitted provided that the following conditions
9
- // are met:
10
-
11
- // 1. Redistributions of source code must retain the above copyright
12
- // notice, this list of conditions and the following disclaimer.
13
- // 2. Redistributions in binary form must reproduce the above copyright
14
- // notice, this list of conditions and the following disclaimer in the
15
- // documentation and/or other materials provided with the distribution.
16
- // 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
17
- // its contributors may be used to endorse or promote products derived
18
- // from this software without specific prior written permission.
19
-
20
- // THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
21
- // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
- // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
- // DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
24
- // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
- // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
- // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27
- // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29
- // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
-
31
5
  import {
32
6
  type Color4D,
33
7
  rgbaToHsla,
@@ -1,33 +1,7 @@
1
- // Copyright 2020 The Chromium Authors
1
+ // Copyright 2012 The Chromium Authors
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- // Copyright (C) 2012 Google Inc. All rights reserved.
6
-
7
- // Redistribution and use in source and binary forms, with or without
8
- // modification, are permitted provided that the following conditions
9
- // are met:
10
-
11
- // 1. Redistributions of source code must retain the above copyright
12
- // notice, this list of conditions and the following disclaimer.
13
- // 2. Redistributions in binary form must reproduce the above copyright
14
- // notice, this list of conditions and the following disclaimer in the
15
- // documentation and/or other materials provided with the distribution.
16
- // 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
17
- // its contributors may be used to endorse or promote products derived
18
- // from this software without specific prior written permission.
19
-
20
- // THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
21
- // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
- // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
- // DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
24
- // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
- // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
- // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27
- // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29
- // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
-
31
5
  import type {AreaBounds, Bounds} from './common.js';
32
6
  import {drawGridLabels, type GridLabelState, isHorizontalWritingMode} from './css_grid_label_helpers.js';
33
7
  import {applyMatrixToPoint, buildPath, emptyBounds, hatchFillPath} from './highlight_common.js';
@@ -1,33 +1,7 @@
1
- // Copyright 2020 The Chromium Authors
1
+ // Copyright 2012 The Chromium Authors
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- // Copyright (C) 2012 Google Inc. All rights reserved.
6
-
7
- // Redistribution and use in source and binary forms, with or without
8
- // modification, are permitted provided that the following conditions
9
- // are met:
10
-
11
- // 1. Redistributions of source code must retain the above copyright
12
- // notice, this list of conditions and the following disclaimer.
13
- // 2. Redistributions in binary form must reproduce the above copyright
14
- // notice, this list of conditions and the following disclaimer in the
15
- // documentation and/or other materials provided with the distribution.
16
- // 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
17
- // its contributors may be used to endorse or promote products derived
18
- // from this software without specific prior written permission.
19
-
20
- // THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
21
- // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
- // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
- // DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
24
- // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
- // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
- // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27
- // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29
- // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
-
31
5
  import {
32
6
  contrastRatio,
33
7
  contrastRatioAPCA,