chrome-devtools-frontend 1.0.995629 → 1.0.996044
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/af.json +96 -42
- package/front_end/core/i18n/locales/am.json +97 -43
- package/front_end/core/i18n/locales/ar.json +95 -41
- package/front_end/core/i18n/locales/as.json +95 -41
- package/front_end/core/i18n/locales/az.json +96 -42
- package/front_end/core/i18n/locales/be.json +124 -70
- package/front_end/core/i18n/locales/bg.json +96 -42
- package/front_end/core/i18n/locales/bn.json +95 -41
- package/front_end/core/i18n/locales/bs.json +95 -41
- package/front_end/core/i18n/locales/ca.json +96 -42
- package/front_end/core/i18n/locales/cs.json +95 -41
- package/front_end/core/i18n/locales/cy.json +95 -41
- package/front_end/core/i18n/locales/da.json +97 -43
- package/front_end/core/i18n/locales/de.json +96 -42
- package/front_end/core/i18n/locales/el.json +95 -41
- package/front_end/core/i18n/locales/en-GB.json +95 -41
- package/front_end/core/i18n/locales/en-US.json +23 -5
- package/front_end/core/i18n/locales/en-XL.json +23 -5
- package/front_end/core/i18n/locales/es-419.json +95 -41
- package/front_end/core/i18n/locales/es.json +101 -47
- package/front_end/core/i18n/locales/et.json +95 -41
- package/front_end/core/i18n/locales/eu.json +100 -46
- package/front_end/core/i18n/locales/fa.json +104 -50
- package/front_end/core/i18n/locales/fi.json +95 -41
- package/front_end/core/i18n/locales/fil.json +95 -41
- package/front_end/core/i18n/locales/fr-CA.json +96 -42
- package/front_end/core/i18n/locales/fr.json +95 -41
- package/front_end/core/i18n/locales/gl.json +104 -50
- package/front_end/core/i18n/locales/gu.json +95 -41
- package/front_end/core/i18n/locales/he.json +95 -41
- package/front_end/core/i18n/locales/hi.json +98 -44
- package/front_end/core/i18n/locales/hr.json +96 -42
- package/front_end/core/i18n/locales/hu.json +96 -42
- package/front_end/core/i18n/locales/hy.json +95 -41
- package/front_end/core/i18n/locales/id.json +97 -43
- package/front_end/core/i18n/locales/is.json +95 -41
- package/front_end/core/i18n/locales/it.json +96 -42
- package/front_end/core/i18n/locales/ja.json +95 -41
- package/front_end/core/i18n/locales/ka.json +95 -41
- package/front_end/core/i18n/locales/kk.json +98 -44
- package/front_end/core/i18n/locales/km.json +95 -41
- package/front_end/core/i18n/locales/kn.json +96 -42
- package/front_end/core/i18n/locales/ko.json +96 -42
- package/front_end/core/i18n/locales/ky.json +97 -43
- package/front_end/core/i18n/locales/lo.json +96 -42
- package/front_end/core/i18n/locales/lt.json +95 -41
- package/front_end/core/i18n/locales/lv.json +95 -41
- package/front_end/core/i18n/locales/mk.json +98 -44
- package/front_end/core/i18n/locales/ml.json +96 -42
- package/front_end/core/i18n/locales/mn.json +96 -42
- package/front_end/core/i18n/locales/mr.json +95 -41
- package/front_end/core/i18n/locales/ms.json +95 -41
- package/front_end/core/i18n/locales/my.json +95 -41
- package/front_end/core/i18n/locales/ne.json +100 -46
- package/front_end/core/i18n/locales/nl.json +99 -45
- package/front_end/core/i18n/locales/no.json +95 -41
- package/front_end/core/i18n/locales/or.json +98 -44
- package/front_end/core/i18n/locales/pa.json +95 -41
- package/front_end/core/i18n/locales/pl.json +95 -41
- package/front_end/core/i18n/locales/pt-PT.json +95 -41
- package/front_end/core/i18n/locales/pt.json +98 -44
- package/front_end/core/i18n/locales/ro.json +96 -42
- package/front_end/core/i18n/locales/ru.json +115 -61
- package/front_end/core/i18n/locales/si.json +96 -42
- package/front_end/core/i18n/locales/sk.json +95 -41
- package/front_end/core/i18n/locales/sl.json +95 -41
- package/front_end/core/i18n/locales/sq.json +96 -42
- package/front_end/core/i18n/locales/sr-Latn.json +96 -42
- package/front_end/core/i18n/locales/sr.json +96 -42
- package/front_end/core/i18n/locales/sv.json +96 -42
- package/front_end/core/i18n/locales/sw.json +97 -43
- package/front_end/core/i18n/locales/ta.json +96 -42
- package/front_end/core/i18n/locales/te.json +108 -54
- package/front_end/core/i18n/locales/th.json +95 -41
- package/front_end/core/i18n/locales/tr.json +95 -41
- package/front_end/core/i18n/locales/uk.json +95 -41
- package/front_end/core/i18n/locales/ur.json +95 -41
- package/front_end/core/i18n/locales/uz.json +95 -41
- package/front_end/core/i18n/locales/vi.json +104 -50
- package/front_end/core/i18n/locales/zh-HK.json +96 -42
- package/front_end/core/i18n/locales/zh-TW.json +97 -43
- package/front_end/core/i18n/locales/zh.json +99 -45
- package/front_end/core/i18n/locales/zu.json +95 -41
- package/front_end/models/issues_manager/DeprecationIssue.ts +1 -1
- package/front_end/panels/lighthouse/LighthouseController.ts +38 -7
- package/front_end/panels/lighthouse/LighthousePanel.ts +1 -1
- package/front_end/panels/lighthouse/LighthouseStartView.ts +15 -7
- package/front_end/panels/lighthouse/LighthouseStartViewFR.ts +77 -21
- package/front_end/panels/lighthouse/RadioSetting.ts +12 -6
- package/front_end/panels/lighthouse/lighthouseStartView.css +49 -2
- package/front_end/panels/security/SecurityPanel.ts +2 -2
- package/package.json +2 -1
@@ -1352,6 +1352,12 @@
|
|
1352
1352
|
"models/issues_manager/CrossOriginEmbedderPolicyIssue.ts | samesiteAndSameorigin": {
|
1353
1353
|
"message": "Indawo efanayo kanye Nomthombo ofanayo"
|
1354
1354
|
},
|
1355
|
+
"models/issues_manager/DeprecationIssue.ts | deprecationExample": {
|
1356
|
+
"message": "Lesi yisibonelo somlayezo ohunyushiwe wenkinga yokuhoxisa."
|
1357
|
+
},
|
1358
|
+
"models/issues_manager/DeprecationIssue.ts | title": {
|
1359
|
+
"message": "Isici Esihoxisiwe Esisetshenzisiwe"
|
1360
|
+
},
|
1355
1361
|
"models/issues_manager/FederatedAuthRequestIssue.ts | fedCm": {
|
1356
1362
|
"message": "I-Federated Credential Management API"
|
1357
1363
|
},
|
@@ -3032,6 +3038,12 @@
|
|
3032
3038
|
"panels/application/components/BackForwardCacheStrings.ts | enteredBackForwardCacheBeforeServiceWorkerHostAdded": {
|
3033
3039
|
"message": "Isisebenzi sesevisi senziwe sasebenza ngenkathi ikhasi likwinqolobane yasemuva/phambili."
|
3034
3040
|
},
|
3041
|
+
"panels/application/components/BackForwardCacheStrings.ts | errorDocument": {
|
3042
|
+
"message": "Inqolobane yasemuva/phambili ivaliwe ngenxa yephutha ledokhumenti."
|
3043
|
+
},
|
3044
|
+
"panels/application/components/BackForwardCacheStrings.ts | fencedFramesEmbedder": {
|
3045
|
+
"message": "Amakhasi asebenzisa i-FencedFrames awakwazi ukugcinwa ku-bfcache."
|
3046
|
+
},
|
3035
3047
|
"panels/application/components/BackForwardCacheStrings.ts | foregroundCacheLimit": {
|
3036
3048
|
"message": "Ikhasi likhishiwe kunqolobane ukuze kuvunyelwe elinye ikhasi ukuthi libe kwinqolobane."
|
3037
3049
|
},
|
@@ -3245,6 +3257,15 @@
|
|
3245
3257
|
"panels/application/components/BackForwardCacheView.ts | circumstantialExplanation": {
|
3246
3258
|
"message": "Lezi zizathu azikwazi ukusebenza okungukuthi ukugcinwa enqolobaneni kwesikhashana kuvinjwe okuthile okungaphandle kokulawula okuqondile kwekhasi."
|
3247
3259
|
},
|
3260
|
+
"panels/application/components/BackForwardCacheView.ts | framesPerIssue": {
|
3261
|
+
"message": "{n,plural, =1{Uhlaka olu-#}one{Izinhlaka ezingu-#}other{Izinhlaka ezingu-#}}"
|
3262
|
+
},
|
3263
|
+
"panels/application/components/BackForwardCacheView.ts | framesTitle": {
|
3264
|
+
"message": "Izinhlaka"
|
3265
|
+
},
|
3266
|
+
"panels/application/components/BackForwardCacheView.ts | issuesInFrames": {
|
3267
|
+
"message": "{x,plural, =1{inkinga #}one{izinkinga #}other{izinkinga #}} zitholwe ku-{y,plural, =1{uhlaka #}one{izinhlaka #}other{izinhlaka #}}."
|
3268
|
+
},
|
3248
3269
|
"panels/application/components/BackForwardCacheView.ts | learnMore": {
|
3249
3270
|
"message": "Funda kabanzi: ukufaneleka kwenqolobane yokuya emuva/phambili"
|
3250
3271
|
},
|
@@ -3677,6 +3698,12 @@
|
|
3677
3698
|
"panels/changes/ChangesView.ts | binaryData": {
|
3678
3699
|
"message": "Idatha yenambambili"
|
3679
3700
|
},
|
3701
|
+
"panels/changes/ChangesView.ts | copy": {
|
3702
|
+
"message": "Kopisha"
|
3703
|
+
},
|
3704
|
+
"panels/changes/ChangesView.ts | copyAllChangesFromCurrentFile": {
|
3705
|
+
"message": "Kopisha zonke izinguquko kwifayela lamanje"
|
3706
|
+
},
|
3680
3707
|
"panels/changes/ChangesView.ts | noChanges": {
|
3681
3708
|
"message": "Azikho izinguquko"
|
3682
3709
|
},
|
@@ -3755,6 +3782,9 @@
|
|
3755
3782
|
"panels/console/ConsoleView.ts | allLevels": {
|
3756
3783
|
"message": "Wonke amaleveli"
|
3757
3784
|
},
|
3785
|
+
"panels/console/ConsoleView.ts | autocompleteFromHistory": {
|
3786
|
+
"message": "Qedela ngokuzenzakalela kusukela kumlando"
|
3787
|
+
},
|
3758
3788
|
"panels/console/ConsoleView.ts | consoleCleared": {
|
3759
3789
|
"message": "I-console isuliwe"
|
3760
3790
|
},
|
@@ -3836,6 +3866,9 @@
|
|
3836
3866
|
"panels/console/ConsoleView.ts | logLevels": {
|
3837
3867
|
"message": "Amaleveli elogu"
|
3838
3868
|
},
|
3869
|
+
"panels/console/ConsoleView.ts | logXMLHttpRequests": {
|
3870
|
+
"message": "Ilogu ye-XMLHttpRequests"
|
3871
|
+
},
|
3839
3872
|
"panels/console/ConsoleView.ts | onlyShowMessagesFromTheCurrentContext": {
|
3840
3873
|
"message": "Bonisa kuphela imilayezo evela kungqikithi yamanje (top, iframe, worker, isandiso)"
|
3841
3874
|
},
|
@@ -3869,6 +3902,9 @@
|
|
3869
3902
|
"panels/console/ConsoleView.ts | showCorsErrorsInConsole": {
|
3870
3903
|
"message": "Bonisa amaphutha e-CORS ku-console"
|
3871
3904
|
},
|
3905
|
+
"panels/console/ConsoleView.ts | treatEvaluationAsUserActivation": {
|
3906
|
+
"message": "Thatha ukuhlolwa njengokwenziwe kwasebenza umsebenzisi"
|
3907
|
+
},
|
3872
3908
|
"panels/console/ConsoleView.ts | verbose": {
|
3873
3909
|
"message": "I-Verbose"
|
3874
3910
|
},
|
@@ -4667,6 +4703,48 @@
|
|
4667
4703
|
"panels/elements/PropertiesWidget.ts | showAllTooltip": {
|
4668
4704
|
"message": "Uma kususwe ukumaka, izakhiwo kuphela inani lazo okuyiqada noma ezingachaziwe ezizoboniswa"
|
4669
4705
|
},
|
4706
|
+
"panels/elements/StylePropertiesSection.ts | constructedStylesheet": {
|
4707
|
+
"message": "i-stylesheet eyakhiwe"
|
4708
|
+
},
|
4709
|
+
"panels/elements/StylePropertiesSection.ts | copyAllCSSChanges": {
|
4710
|
+
"message": "Kopisha zonke izinguquko ze-CSS"
|
4711
|
+
},
|
4712
|
+
"panels/elements/StylePropertiesSection.ts | copyAllDeclarations": {
|
4713
|
+
"message": "Kopisha zonke izimemezelo"
|
4714
|
+
},
|
4715
|
+
"panels/elements/StylePropertiesSection.ts | copyRule": {
|
4716
|
+
"message": "Kopisha umthetho"
|
4717
|
+
},
|
4718
|
+
"panels/elements/StylePropertiesSection.ts | copySelector": {
|
4719
|
+
"message": "Kopisha selector"
|
4720
|
+
},
|
4721
|
+
"panels/elements/StylePropertiesSection.ts | cssSelector": {
|
4722
|
+
"message": "Isikhethi se-CSS"
|
4723
|
+
},
|
4724
|
+
"panels/elements/StylePropertiesSection.ts | injectedStylesheet": {
|
4725
|
+
"message": "ijove isitayela seshidi"
|
4726
|
+
},
|
4727
|
+
"panels/elements/StylePropertiesSection.ts | insertStyleRuleBelow": {
|
4728
|
+
"message": "Faka Umthetho Wesitayela Ngezansi"
|
4729
|
+
},
|
4730
|
+
"panels/elements/StylePropertiesSection.ts | sattributesStyle": {
|
4731
|
+
"message": "{PH1}[Isitayela Sezibaluli]"
|
4732
|
+
},
|
4733
|
+
"panels/elements/StylePropertiesSection.ts | showAllPropertiesSMore": {
|
4734
|
+
"message": "Bonisa Zonke Izakhiwo ({PH1} okuningi)"
|
4735
|
+
},
|
4736
|
+
"panels/elements/StylePropertiesSection.ts | styleAttribute": {
|
4737
|
+
"message": "Isibaluli se-style"
|
4738
|
+
},
|
4739
|
+
"panels/elements/StylePropertiesSection.ts | userAgentStylesheet": {
|
4740
|
+
"message": "isitayela seshidi lethuluzi lomsebenzisi"
|
4741
|
+
},
|
4742
|
+
"panels/elements/StylePropertiesSection.ts | viaInspector": {
|
4743
|
+
"message": "ngesihloli"
|
4744
|
+
},
|
4745
|
+
"panels/elements/StylePropertyTreeElement.ts | copyAllCSSChanges": {
|
4746
|
+
"message": "Kopisha zonke izinguquko ze-CSS"
|
4747
|
+
},
|
4670
4748
|
"panels/elements/StylePropertyTreeElement.ts | copyAllCssDeclarationsAsJs": {
|
4671
4749
|
"message": "Kopisha zonke izimemezelo njenge-JS"
|
4672
4750
|
},
|
@@ -4712,36 +4790,18 @@
|
|
4712
4790
|
"panels/elements/StylePropertyTreeElement.ts | viewComputedValue": {
|
4713
4791
|
"message": "Buka inani lekhompyutha"
|
4714
4792
|
},
|
4793
|
+
"panels/elements/StylesSidebarPane.ts | automaticDarkMode": {
|
4794
|
+
"message": "Imodi emnyama ngokuzenzekelayo"
|
4795
|
+
},
|
4715
4796
|
"panels/elements/StylesSidebarPane.ts | clickToRevealLayer": {
|
4716
4797
|
"message": "Chofoza ukuze wembule isendlalelo esihlahleni sesendlalelo"
|
4717
4798
|
},
|
4718
|
-
"panels/elements/StylesSidebarPane.ts | constructedStylesheet": {
|
4719
|
-
"message": "i-stylesheet eyakhiwe"
|
4720
|
-
},
|
4721
|
-
"panels/elements/StylesSidebarPane.ts | copiedToClipboard": {
|
4722
|
-
"message": "Kukopishelwe kubhodi lokunamathisela"
|
4723
|
-
},
|
4724
|
-
"panels/elements/StylesSidebarPane.ts | copyAllCSSChanges": {
|
4725
|
-
"message": "Kopisha zonke izinguquko ze-CSS"
|
4726
|
-
},
|
4727
|
-
"panels/elements/StylesSidebarPane.ts | copyAllDeclarations": {
|
4728
|
-
"message": "Kopisha zonke izimemezelo"
|
4729
|
-
},
|
4730
|
-
"panels/elements/StylesSidebarPane.ts | copyRule": {
|
4731
|
-
"message": "Kopisha umthetho"
|
4732
|
-
},
|
4733
|
-
"panels/elements/StylesSidebarPane.ts | copySelector": {
|
4734
|
-
"message": "Kopisha selector"
|
4735
|
-
},
|
4736
4799
|
"panels/elements/StylesSidebarPane.ts | cssPropertyName": {
|
4737
4800
|
"message": "CSS igama lempahla: {PH1}"
|
4738
4801
|
},
|
4739
4802
|
"panels/elements/StylesSidebarPane.ts | cssPropertyValue": {
|
4740
4803
|
"message": "CSS inani lempahla: {PH1}"
|
4741
4804
|
},
|
4742
|
-
"panels/elements/StylesSidebarPane.ts | cssSelector": {
|
4743
|
-
"message": "Isikhethi se-CSS"
|
4744
|
-
},
|
4745
4805
|
"panels/elements/StylesSidebarPane.ts | filter": {
|
4746
4806
|
"message": "Hlunga"
|
4747
4807
|
},
|
@@ -4754,15 +4814,12 @@
|
|
4754
4814
|
"panels/elements/StylesSidebarPane.ts | incrementdecrementWithMousewheelOne": {
|
4755
4815
|
"message": "Ukunyuka/ukwehla ngesondo legudwane noma ngokhiye waphezulu/waphansi. {PH1}: R ±1, Shift: G ±1, Alt: B ±1"
|
4756
4816
|
},
|
4817
|
+
"panels/elements/StylesSidebarPane.ts | inheritedFromSPseudoOf": {
|
4818
|
+
"message": "Kuzuzwe kusukela ::{PH1} i-pseudo ye "
|
4819
|
+
},
|
4757
4820
|
"panels/elements/StylesSidebarPane.ts | inheritedFroms": {
|
4758
4821
|
"message": "Kuzuzwe njengefa lokuthi "
|
4759
4822
|
},
|
4760
|
-
"panels/elements/StylesSidebarPane.ts | injectedStylesheet": {
|
4761
|
-
"message": "ijove isitayela seshidi"
|
4762
|
-
},
|
4763
|
-
"panels/elements/StylesSidebarPane.ts | insertStyleRuleBelow": {
|
4764
|
-
"message": "Faka Umthetho Wesitayela Ngezansi"
|
4765
|
-
},
|
4766
4823
|
"panels/elements/StylesSidebarPane.ts | invalidPropertyValue": {
|
4767
4824
|
"message": "Inani lesakhiwo elingavumelekile"
|
4768
4825
|
},
|
@@ -4781,24 +4838,12 @@
|
|
4781
4838
|
"panels/elements/StylesSidebarPane.ts | pseudoSElement": {
|
4782
4839
|
"message": "I-Pseudo ::{PH1} i-element"
|
4783
4840
|
},
|
4784
|
-
"panels/elements/StylesSidebarPane.ts |
|
4785
|
-
"message": "
|
4786
|
-
},
|
4787
|
-
"panels/elements/StylesSidebarPane.ts | showAllPropertiesSMore": {
|
4788
|
-
"message": "Bonisa Zonke Izakhiwo ({PH1} okuningi)"
|
4789
|
-
},
|
4790
|
-
"panels/elements/StylesSidebarPane.ts | styleAttribute": {
|
4791
|
-
"message": "Isibaluli se-style"
|
4841
|
+
"panels/elements/StylesSidebarPane.ts | toggleRenderingEmulations": {
|
4842
|
+
"message": "Guqula ama-emulation afanayo okunikezela"
|
4792
4843
|
},
|
4793
4844
|
"panels/elements/StylesSidebarPane.ts | unknownPropertyName": {
|
4794
4845
|
"message": "Igama lempahla engaziwa"
|
4795
4846
|
},
|
4796
|
-
"panels/elements/StylesSidebarPane.ts | userAgentStylesheet": {
|
4797
|
-
"message": "isitayela seshidi lethuluzi lomsebenzisi"
|
4798
|
-
},
|
4799
|
-
"panels/elements/StylesSidebarPane.ts | viaInspector": {
|
4800
|
-
"message": "ngesihloli"
|
4801
|
-
},
|
4802
4847
|
"panels/elements/components/AccessibilityTreeNode.ts | ignored": {
|
4803
4848
|
"message": "Izitshiwe"
|
4804
4849
|
},
|
@@ -5345,6 +5390,9 @@
|
|
5345
5390
|
"panels/issues/CSPViolationsView.ts | filter": {
|
5346
5391
|
"message": "Hlunga"
|
5347
5392
|
},
|
5393
|
+
"panels/issues/ComboBoxOfCheckBoxes.ts | genericMenuLabel": {
|
5394
|
+
"message": "Imenyu"
|
5395
|
+
},
|
5348
5396
|
"panels/issues/CorsIssueDetailsView.ts | allowCredentialsValueFromHeader": {
|
5349
5397
|
"message": "Access-Control-Allow-Credentials Inani lonhlokwana"
|
5350
5398
|
},
|
@@ -6425,6 +6473,9 @@
|
|
6425
6473
|
"panels/network/NetworkConfigView.ts | enterACustomUserAgent": {
|
6426
6474
|
"message": "Faka umenzeli womsebenzisi"
|
6427
6475
|
},
|
6476
|
+
"panels/network/NetworkConfigView.ts | networkConditionsPanelShown": {
|
6477
|
+
"message": "Izimo zenethiwekhi zibonisiwe"
|
6478
|
+
},
|
6428
6479
|
"panels/network/NetworkConfigView.ts | networkThrottling": {
|
6429
6480
|
"message": "I-throttling yenethiwekhi"
|
6430
6481
|
},
|
@@ -7040,6 +7091,9 @@
|
|
7040
7091
|
"panels/network/RequestHeadersView.ts | general": {
|
7041
7092
|
"message": "Okuvamile"
|
7042
7093
|
},
|
7094
|
+
"panels/network/RequestHeadersView.ts | headerOverrides": {
|
7095
|
+
"message": "Ukukhipha unhlokweni"
|
7096
|
+
},
|
7043
7097
|
"panels/network/RequestHeadersView.ts | learnMore": {
|
7044
7098
|
"message": "Funda kabanzi"
|
7045
7099
|
},
|
@@ -110,7 +110,7 @@ const UIStrings = {
|
|
110
110
|
obsoleteWebRtcCipherSuite:
|
111
111
|
'Your partner is negotiating an obsolete (D)TLS version. Please check with your partner to have this fixed.',
|
112
112
|
/**
|
113
|
-
*@description
|
113
|
+
*@description This issue indicates that a `<source>` element with a `<picture>` parent was using an `src` attribute, which is not valid and is ignored by the browser. The `srcset` attribute should be used instead.
|
114
114
|
*/
|
115
115
|
pictureSourceSrc:
|
116
116
|
'`<source src>` with a `<picture>` parent is invalid and therefore ignored. Please use `<source srcset>` instead.',
|
@@ -113,17 +113,29 @@ const UIStrings = {
|
|
113
113
|
*/
|
114
114
|
runLighthouseInMode: 'Run Lighthouse in navigation, timespan, or snapshot mode',
|
115
115
|
/**
|
116
|
-
* @description Label of a radio option for a Lighthouse mode that audits a page navigation.
|
116
|
+
* @description Label of a radio option for a Lighthouse mode that audits a page navigation. This should be marked as the default radio option.
|
117
117
|
*/
|
118
|
-
navigation: 'Navigation',
|
118
|
+
navigation: 'Navigation (Default)',
|
119
|
+
/**
|
120
|
+
* @description Tooltip description of a radio option for a Lighthouse mode that audits a page navigation.
|
121
|
+
*/
|
122
|
+
navigationTooltip: 'Navigation mode analyzes a page load, exactly like the original Lighthouse reports.',
|
119
123
|
/**
|
120
124
|
* @description Label of a radio option for a Lighthouse mode that audits user interactions over a period of time.
|
121
125
|
*/
|
122
126
|
timespan: 'Timespan',
|
127
|
+
/**
|
128
|
+
* @description Tooltip description of a radio option for a Lighthouse mode that audits user interactions over a period of time.
|
129
|
+
*/
|
130
|
+
timespanTooltip: 'Timespan mode analyzes an arbitrary period of time, typically containing user interactions.',
|
123
131
|
/**
|
124
132
|
* @description Label of a radio option for a Lighthouse mode that audits the current page state.
|
125
133
|
*/
|
126
134
|
snapshot: 'Snapshot',
|
135
|
+
/**
|
136
|
+
* @description Tooltip description of a radio option for a Lighthouse mode that audits the current page state.
|
137
|
+
*/
|
138
|
+
snapshotTooltip: 'Snapshot mode analyzes the page in a particular state, typically after user interactions.',
|
127
139
|
/**
|
128
140
|
*@description Text for the mobile platform, as opposed to desktop
|
129
141
|
*/
|
@@ -364,6 +376,9 @@ export class LighthouseController extends Common.ObjectWrapper.ObjectWrapper<Eve
|
|
364
376
|
this.dispatchEventToListeners(Events.PageAuditabilityChanged, {helpText});
|
365
377
|
|
366
378
|
void this.hasImportantResourcesNotCleared().then(warning => {
|
379
|
+
if (this.getFlags().mode !== 'navigation') {
|
380
|
+
warning = '';
|
381
|
+
}
|
367
382
|
this.dispatchEventToListeners(Events.PageWarningsChanged, {warning});
|
368
383
|
});
|
369
384
|
}
|
@@ -456,11 +471,23 @@ export const RuntimeSettings: RuntimeSetting[] = [
|
|
456
471
|
flags.mode = value;
|
457
472
|
},
|
458
473
|
options: [
|
459
|
-
{
|
460
|
-
|
461
|
-
|
474
|
+
{
|
475
|
+
label: i18nLazyString(UIStrings.navigation),
|
476
|
+
tooltip: i18nLazyString(UIStrings.navigationTooltip),
|
477
|
+
value: 'navigation',
|
478
|
+
},
|
479
|
+
{
|
480
|
+
label: i18nLazyString(UIStrings.timespan),
|
481
|
+
tooltip: i18nLazyString(UIStrings.timespanTooltip),
|
482
|
+
value: 'timespan',
|
483
|
+
},
|
484
|
+
{
|
485
|
+
label: i18nLazyString(UIStrings.snapshot),
|
486
|
+
tooltip: i18nLazyString(UIStrings.snapshotTooltip),
|
487
|
+
value: 'snapshot',
|
488
|
+
},
|
462
489
|
],
|
463
|
-
learnMore:
|
490
|
+
learnMore: 'https://web.dev/lighthouse-user-flows/',
|
464
491
|
},
|
465
492
|
{
|
466
493
|
// This setting is disabled, but we keep it around to show in the UI.
|
@@ -545,7 +572,11 @@ export interface RuntimeSetting {
|
|
545
572
|
setting: Common.Settings.Setting<string|boolean>;
|
546
573
|
description: () => Common.UIString.LocalizedString;
|
547
574
|
setFlags: (flags: Flags, value: string|boolean) => void;
|
548
|
-
options?: {
|
575
|
+
options?: {
|
576
|
+
label: () => Common.UIString.LocalizedString,
|
577
|
+
value: string,
|
578
|
+
tooltip?: () => Common.UIString.LocalizedString,
|
579
|
+
}[];
|
549
580
|
title?: () => Common.UIString.LocalizedString;
|
550
581
|
learnMore?: string;
|
551
582
|
}
|
@@ -174,7 +174,7 @@ export class LighthousePanel extends UI.Panel.Panel {
|
|
174
174
|
return;
|
175
175
|
}
|
176
176
|
|
177
|
-
this.startView.
|
177
|
+
this.startView.updateMode();
|
178
178
|
|
179
179
|
this.unauditableExplanation = evt.data.helpText;
|
180
180
|
this.startView.setUnauditableExplanation(evt.data.helpText);
|
@@ -44,8 +44,8 @@ export class StartView extends UI.Widget.Widget {
|
|
44
44
|
protected controller: LighthouseController;
|
45
45
|
private readonly settingsToolbarInternal: UI.Toolbar.Toolbar;
|
46
46
|
protected startButton!: HTMLButtonElement;
|
47
|
-
|
48
|
-
|
47
|
+
protected helpText?: Element;
|
48
|
+
protected warningText?: Element;
|
49
49
|
private shouldConfirm?: boolean;
|
50
50
|
|
51
51
|
constructor(controller: LighthouseController) {
|
@@ -66,6 +66,17 @@ export class StartView extends UI.Widget.Widget {
|
|
66
66
|
throw new Error(`${settingName} is not a setting with options`);
|
67
67
|
}
|
68
68
|
|
69
|
+
const labelEl = document.createElement('div');
|
70
|
+
labelEl.classList.add('lighthouse-form-section-label');
|
71
|
+
labelEl.textContent = label;
|
72
|
+
|
73
|
+
if (runtimeSetting.learnMore) {
|
74
|
+
const link =
|
75
|
+
UI.XLink.XLink.create(runtimeSetting.learnMore, i18nString(UIStrings.learnMore), 'lighthouse-learn-more');
|
76
|
+
labelEl.append(link);
|
77
|
+
}
|
78
|
+
parentElement.appendChild(labelEl);
|
79
|
+
|
69
80
|
const control = new RadioSetting(
|
70
81
|
runtimeSetting.options, runtimeSetting.setting as Common.Settings.Setting<string>,
|
71
82
|
runtimeSetting.description());
|
@@ -91,7 +102,7 @@ export class StartView extends UI.Widget.Widget {
|
|
91
102
|
}
|
92
103
|
}
|
93
104
|
|
94
|
-
|
105
|
+
protected populateFormControls(fragment: UI.Fragment.Fragment): void {
|
95
106
|
// Populate the device type
|
96
107
|
const deviceTypeFormElements = fragment.$('device-type-form-elements');
|
97
108
|
this.populateRuntimeSettingAsRadio('lighthouse.device_type', i18nString(UIStrings.device), deviceTypeFormElements);
|
@@ -157,9 +168,6 @@ export class StartView extends UI.Widget.Widget {
|
|
157
168
|
</div>
|
158
169
|
</div>
|
159
170
|
<div class="lighthouse-form-section">
|
160
|
-
<div class="lighthouse-form-section-label">
|
161
|
-
${i18nString(UIStrings.device)}
|
162
|
-
</div>
|
163
171
|
<div class="lighthouse-form-elements" $="device-type-form-elements"></div>
|
164
172
|
</div>
|
165
173
|
</form>
|
@@ -173,7 +181,7 @@ export class StartView extends UI.Widget.Widget {
|
|
173
181
|
this.contentElement.style.overflow = 'auto';
|
174
182
|
}
|
175
183
|
|
176
|
-
|
184
|
+
updateMode(): void {
|
177
185
|
// Do nothing in default case.
|
178
186
|
}
|
179
187
|
|
@@ -10,20 +10,32 @@ import {StartView} from './LighthouseStartView.js';
|
|
10
10
|
import {Events} from './LighthouseController.js';
|
11
11
|
|
12
12
|
const UIStrings = {
|
13
|
+
/**
|
14
|
+
* @description Text displayed as the title of a panel that can be used to audit a web page with Lighthouse.
|
15
|
+
*/
|
16
|
+
generateLighthouseReport: 'Generate a Lighthouse report',
|
13
17
|
/**
|
14
18
|
* @description Text that refers to the Lighthouse mode
|
15
19
|
*/
|
16
20
|
mode: 'Mode',
|
21
|
+
/**
|
22
|
+
* @description Title in the Lighthouse Start View for list of categories to run during audit
|
23
|
+
*/
|
24
|
+
categories: 'Categories',
|
25
|
+
/**
|
26
|
+
* @description Title in the Lighthouse Start View for list of available start plugins
|
27
|
+
*/
|
28
|
+
plugins: 'Plugins',
|
17
29
|
/**
|
18
30
|
* @description Label for a button to start analyzing a page navigation with Lighthouse
|
19
31
|
*/
|
20
|
-
analyzeNavigation: 'Analyze
|
32
|
+
analyzeNavigation: 'Analyze page load',
|
21
33
|
/**
|
22
34
|
* @description Label for a button to start analyzing the current page state with Lighthouse
|
23
35
|
*/
|
24
|
-
analyzeSnapshot: 'Analyze
|
36
|
+
analyzeSnapshot: 'Analyze page state',
|
25
37
|
/**
|
26
|
-
* @description Label for a button that
|
38
|
+
* @description Label for a button that starts a Lighthouse mode that analyzes user interactions over a period of time.
|
27
39
|
*/
|
28
40
|
startTimespan: 'Start timespan',
|
29
41
|
};
|
@@ -35,31 +47,75 @@ export class StartViewFR extends StartView {
|
|
35
47
|
protected render(): void {
|
36
48
|
super.render();
|
37
49
|
const fragment = UI.Fragment.Fragment.build`
|
38
|
-
|
39
|
-
<
|
40
|
-
|
41
|
-
|
42
|
-
|
50
|
+
<form class="lighthouse-start-view-fr">
|
51
|
+
<header class="hbox">
|
52
|
+
<div class="lighthouse-logo"></div>
|
53
|
+
<div class="lighthouse-title">${i18nString(UIStrings.generateLighthouseReport)}</div>
|
54
|
+
<div class="lighthouse-start-button-container">${this.startButton}</div>
|
55
|
+
</header>
|
56
|
+
<div $="help-text" class="lighthouse-help-text hidden"></div>
|
57
|
+
<div class="lighthouse-options hbox">
|
58
|
+
<div class="lighthouse-form-section">
|
59
|
+
<div class="lighthouse-form-elements" $="mode-form-elements"></div>
|
60
|
+
</div>
|
61
|
+
<div class="lighthouse-form-section">
|
62
|
+
<div class="lighthouse-form-elements" $="device-type-form-elements"></div>
|
63
|
+
</div>
|
64
|
+
<div class="lighthouse-form-categories">
|
65
|
+
<div class="lighthouse-form-section">
|
66
|
+
<div class="lighthouse-form-section-label">${i18nString(UIStrings.categories)}</div>
|
67
|
+
<div class="lighthouse-form-elements" $="categories-form-elements"></div>
|
68
|
+
</div>
|
69
|
+
<div class="lighthouse-form-section">
|
70
|
+
<div class="lighthouse-form-section-label">
|
71
|
+
<div class="lighthouse-icon-label">${i18nString(UIStrings.plugins)}</div>
|
72
|
+
</div>
|
73
|
+
<div class="lighthouse-form-elements" $="plugins-form-elements"></div>
|
74
|
+
</div>
|
75
|
+
</div>
|
43
76
|
</div>
|
77
|
+
<div $="warning-text" class="lighthouse-warning-text hidden"></div>
|
78
|
+
</form>
|
44
79
|
`;
|
45
80
|
|
81
|
+
this.helpText = fragment.$('help-text');
|
82
|
+
this.warningText = fragment.$('warning-text');
|
83
|
+
|
84
|
+
// The previous radios are removed later and don't exist on the new fragment yet.
|
85
|
+
this.populateFormControls(fragment);
|
86
|
+
|
46
87
|
// Populate the Lighthouse mode
|
47
88
|
const modeFormElements = fragment.$('mode-form-elements');
|
48
89
|
this.populateRuntimeSettingAsRadio('lighthouse.mode', i18nString(UIStrings.mode), modeFormElements);
|
49
90
|
|
50
|
-
|
51
|
-
|
52
|
-
this.
|
91
|
+
this.contentElement.textContent = '';
|
92
|
+
this.contentElement.append(fragment.element());
|
93
|
+
this.updateMode();
|
94
|
+
}
|
95
|
+
|
96
|
+
onResize(): void {
|
97
|
+
const useNarrowLayout = this.contentElement.offsetWidth < 500;
|
98
|
+
const useWideLayout = this.contentElement.offsetWidth > 800;
|
99
|
+
const headerEl = this.contentElement.querySelector('.lighthouse-start-view-fr header');
|
100
|
+
const optionsEl = this.contentElement.querySelector('.lighthouse-options');
|
101
|
+
if (headerEl) {
|
102
|
+
headerEl.classList.toggle('hbox', !useNarrowLayout);
|
103
|
+
headerEl.classList.toggle('vbox', useNarrowLayout);
|
104
|
+
}
|
105
|
+
if (optionsEl) {
|
106
|
+
optionsEl.classList.toggle('wide', useWideLayout);
|
107
|
+
optionsEl.classList.toggle('narrow', useNarrowLayout);
|
108
|
+
}
|
53
109
|
}
|
54
110
|
|
55
|
-
|
111
|
+
updateMode(): void {
|
56
112
|
const {mode} = this.controller.getFlags();
|
57
113
|
|
58
|
-
let
|
114
|
+
let buttonLabel: Platform.UIString.LocalizedString;
|
59
115
|
let callback: () => void;
|
60
116
|
|
61
117
|
if (mode === 'timespan') {
|
62
|
-
|
118
|
+
buttonLabel = i18nString(UIStrings.startTimespan);
|
63
119
|
callback = (): void => {
|
64
120
|
this.controller.dispatchEventToListeners(
|
65
121
|
Events.RequestLighthouseTimespanStart,
|
@@ -67,7 +123,7 @@ export class StartViewFR extends StartView {
|
|
67
123
|
);
|
68
124
|
};
|
69
125
|
} else if (mode === 'snapshot') {
|
70
|
-
|
126
|
+
buttonLabel = i18nString(UIStrings.analyzeSnapshot);
|
71
127
|
callback = (): void => {
|
72
128
|
this.controller.dispatchEventToListeners(
|
73
129
|
Events.RequestLighthouseStart,
|
@@ -75,7 +131,7 @@ export class StartViewFR extends StartView {
|
|
75
131
|
);
|
76
132
|
};
|
77
133
|
} else {
|
78
|
-
|
134
|
+
buttonLabel = i18nString(UIStrings.analyzeNavigation);
|
79
135
|
callback = (): void => {
|
80
136
|
this.controller.dispatchEventToListeners(
|
81
137
|
Events.RequestLighthouseStart,
|
@@ -85,16 +141,16 @@ export class StartViewFR extends StartView {
|
|
85
141
|
}
|
86
142
|
|
87
143
|
this.startButton = UI.UIUtils.createTextButton(
|
88
|
-
|
144
|
+
buttonLabel,
|
89
145
|
callback,
|
90
146
|
/* className */ '',
|
91
147
|
/* primary */ true,
|
92
148
|
);
|
93
149
|
|
94
|
-
const
|
95
|
-
if (
|
96
|
-
|
97
|
-
|
150
|
+
const startButtonContainerEl = this.contentElement.querySelector('.lighthouse-start-button-container');
|
151
|
+
if (startButtonContainerEl) {
|
152
|
+
startButtonContainerEl.textContent = '';
|
153
|
+
startButtonContainerEl.appendChild(this.startButton);
|
98
154
|
}
|
99
155
|
}
|
100
156
|
}
|
@@ -5,16 +5,20 @@
|
|
5
5
|
import type * as Common from '../../core/common/common.js';
|
6
6
|
import * as UI from '../../ui/legacy/legacy.js';
|
7
7
|
|
8
|
+
interface RadioOption {
|
9
|
+
value: string;
|
10
|
+
label: () => Common.UIString.LocalizedString;
|
11
|
+
tooltip?: () => Common.UIString.LocalizedString;
|
12
|
+
}
|
13
|
+
|
8
14
|
export class RadioSetting {
|
9
15
|
private readonly setting: Common.Settings.Setting<string>;
|
10
|
-
private options:
|
16
|
+
private options: RadioOption[];
|
11
17
|
element: HTMLDivElement;
|
12
18
|
private radioElements: HTMLInputElement[];
|
13
19
|
private ignoreChangeEvents: boolean;
|
14
20
|
private selectedIndex: number;
|
15
|
-
constructor(
|
16
|
-
options: {value: string, label: () => Common.UIString.LocalizedString}[],
|
17
|
-
setting: Common.Settings.Setting<string>, description: string) {
|
21
|
+
constructor(options: RadioOption[], setting: Common.Settings.Setting<string>, description: string) {
|
18
22
|
this.setting = setting;
|
19
23
|
this.options = options;
|
20
24
|
|
@@ -32,9 +36,11 @@ export class RadioSetting {
|
|
32
36
|
`;
|
33
37
|
|
34
38
|
this.element.appendChild(fragment.element());
|
39
|
+
|
40
|
+
const tooltip = option.tooltip?.() || description;
|
35
41
|
if (description) {
|
36
|
-
UI.Tooltip.Tooltip.install(fragment.$('input') as HTMLElement,
|
37
|
-
UI.Tooltip.Tooltip.install(fragment.$('span') as HTMLElement,
|
42
|
+
UI.Tooltip.Tooltip.install(fragment.$('input') as HTMLElement, tooltip);
|
43
|
+
UI.Tooltip.Tooltip.install(fragment.$('span') as HTMLElement, tooltip);
|
38
44
|
}
|
39
45
|
const radioElement = fragment.$('input') as HTMLInputElement;
|
40
46
|
radioElement.addEventListener('change', this.valueChanged.bind(this));
|