devtools-tracing 1.0.0

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 (397) hide show
  1. package/generate.ts +643 -0
  2. package/index.ts +16 -0
  3. package/lib/front_end/core/common/App.ts +7 -0
  4. package/lib/front_end/core/common/AppProvider.ts +32 -0
  5. package/lib/front_end/core/common/Base64.ts +47 -0
  6. package/lib/front_end/core/common/CharacterIdMap.ts +30 -0
  7. package/lib/front_end/core/common/Color.ts +2506 -0
  8. package/lib/front_end/core/common/ColorConverter.ts +402 -0
  9. package/lib/front_end/core/common/ColorUtils.ts +252 -0
  10. package/lib/front_end/core/common/Console.ts +114 -0
  11. package/lib/front_end/core/common/Debouncer.ts +15 -0
  12. package/lib/front_end/core/common/EventTarget.ts +52 -0
  13. package/lib/front_end/core/common/Gzip.ts +74 -0
  14. package/lib/front_end/core/common/JavaScriptMetaData.ts +29 -0
  15. package/lib/front_end/core/common/Lazy.ts +31 -0
  16. package/lib/front_end/core/common/Linkifier.ts +55 -0
  17. package/lib/front_end/core/common/MapWithDefault.ts +26 -0
  18. package/lib/front_end/core/common/Mutex.ts +55 -0
  19. package/lib/front_end/core/common/Object.ts +145 -0
  20. package/lib/front_end/core/common/ParsedURL.ts +554 -0
  21. package/lib/front_end/core/common/Progress.ts +180 -0
  22. package/lib/front_end/core/common/QueryParamHandler.ts +7 -0
  23. package/lib/front_end/core/common/ResolverBase.ts +85 -0
  24. package/lib/front_end/core/common/ResourceType.ts +588 -0
  25. package/lib/front_end/core/common/ReturnToPanel.ts +17 -0
  26. package/lib/front_end/core/common/Revealer.ts +192 -0
  27. package/lib/front_end/core/common/Runnable.ts +41 -0
  28. package/lib/front_end/core/common/SegmentedRange.ts +87 -0
  29. package/lib/front_end/core/common/SettingRegistration.ts +339 -0
  30. package/lib/front_end/core/common/Settings.ts +1497 -0
  31. package/lib/front_end/core/common/SimpleHistoryManager.ts +124 -0
  32. package/lib/front_end/core/common/StringOutputStream.ts +26 -0
  33. package/lib/front_end/core/common/TextDictionary.ts +48 -0
  34. package/lib/front_end/core/common/Throttler.ts +99 -0
  35. package/lib/front_end/core/common/Trie.ts +152 -0
  36. package/lib/front_end/core/common/Worker.ts +60 -0
  37. package/lib/front_end/core/common/common.ts +81 -0
  38. package/lib/front_end/core/host/AidaClient.ts +733 -0
  39. package/lib/front_end/core/host/GdpClient.ts +316 -0
  40. package/lib/front_end/core/host/InspectorFrontendHost.ts +648 -0
  41. package/lib/front_end/core/host/InspectorFrontendHostAPI.ts +551 -0
  42. package/lib/front_end/core/host/Platform.ts +76 -0
  43. package/lib/front_end/core/host/ResourceLoader.ts +282 -0
  44. package/lib/front_end/core/host/UserMetrics.ts +1230 -0
  45. package/lib/front_end/core/host/host.ts +23 -0
  46. package/lib/front_end/core/i18n/ByteUtilities.ts +82 -0
  47. package/lib/front_end/core/i18n/DevToolsLocale.ts +87 -0
  48. package/lib/front_end/core/i18n/NumberFormatter.ts +82 -0
  49. package/lib/front_end/core/i18n/i18n.ts +17 -0
  50. package/lib/front_end/core/i18n/i18nImpl.ts +204 -0
  51. package/lib/front_end/core/i18n/i18nTypes.ts +10 -0
  52. package/lib/front_end/core/i18n/locales.js +14 -0
  53. package/lib/front_end/core/i18n/time-utilities.ts +174 -0
  54. package/lib/front_end/core/platform/ArrayUtilities.ts +271 -0
  55. package/lib/front_end/core/platform/Brand.ts +23 -0
  56. package/lib/front_end/core/platform/Constructor.ts +10 -0
  57. package/lib/front_end/core/platform/DOMUtilities.ts +138 -0
  58. package/lib/front_end/core/platform/DateUtilities.ts +15 -0
  59. package/lib/front_end/core/platform/DevToolsPath.ts +53 -0
  60. package/lib/front_end/core/platform/KeyboardUtilities.ts +38 -0
  61. package/lib/front_end/core/platform/MapUtilities.ts +95 -0
  62. package/lib/front_end/core/platform/MimeType.ts +175 -0
  63. package/lib/front_end/core/platform/NumberUtilities.ts +80 -0
  64. package/lib/front_end/core/platform/StringUtilities.ts +588 -0
  65. package/lib/front_end/core/platform/Timing.ts +17 -0
  66. package/lib/front_end/core/platform/TypedArrayUtilities.ts +189 -0
  67. package/lib/front_end/core/platform/TypescriptUtilities.ts +86 -0
  68. package/lib/front_end/core/platform/UIString.ts +39 -0
  69. package/lib/front_end/core/platform/UserVisibleError.ts +28 -0
  70. package/lib/front_end/core/platform/platform.ts +45 -0
  71. package/lib/front_end/core/protocol_client/ConnectionTransport.ts +26 -0
  72. package/lib/front_end/core/protocol_client/InspectorBackend.ts +1050 -0
  73. package/lib/front_end/core/protocol_client/NodeURL.ts +42 -0
  74. package/lib/front_end/core/protocol_client/protocol_client.ts +13 -0
  75. package/lib/front_end/core/root/Runtime.ts +609 -0
  76. package/lib/front_end/core/root/root.ts +6 -0
  77. package/lib/front_end/core/sdk/AccessibilityModel.ts +353 -0
  78. package/lib/front_end/core/sdk/AnimationModel.ts +1041 -0
  79. package/lib/front_end/core/sdk/AutofillModel.ts +184 -0
  80. package/lib/front_end/core/sdk/CPUProfilerModel.ts +148 -0
  81. package/lib/front_end/core/sdk/CPUThrottlingManager.ts +282 -0
  82. package/lib/front_end/core/sdk/CSSContainerQuery.ts +139 -0
  83. package/lib/front_end/core/sdk/CSSFontFace.ts +40 -0
  84. package/lib/front_end/core/sdk/CSSLayer.ts +30 -0
  85. package/lib/front_end/core/sdk/CSSMatchedStyles.ts +1646 -0
  86. package/lib/front_end/core/sdk/CSSMedia.ts +121 -0
  87. package/lib/front_end/core/sdk/CSSMetadata.ts +1647 -0
  88. package/lib/front_end/core/sdk/CSSModel.ts +1128 -0
  89. package/lib/front_end/core/sdk/CSSProperty.ts +384 -0
  90. package/lib/front_end/core/sdk/CSSPropertyParser.ts +681 -0
  91. package/lib/front_end/core/sdk/CSSPropertyParserMatchers.ts +1395 -0
  92. package/lib/front_end/core/sdk/CSSQuery.ts +72 -0
  93. package/lib/front_end/core/sdk/CSSRule.ts +465 -0
  94. package/lib/front_end/core/sdk/CSSScope.ts +30 -0
  95. package/lib/front_end/core/sdk/CSSStartingStyle.ts +29 -0
  96. package/lib/front_end/core/sdk/CSSStyleDeclaration.ts +313 -0
  97. package/lib/front_end/core/sdk/CSSStyleSheetHeader.ts +196 -0
  98. package/lib/front_end/core/sdk/CSSSupports.ts +33 -0
  99. package/lib/front_end/core/sdk/CategorizedBreakpoint.ts +64 -0
  100. package/lib/front_end/core/sdk/ChildTargetManager.ts +314 -0
  101. package/lib/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +62 -0
  102. package/lib/front_end/core/sdk/Connections.ts +293 -0
  103. package/lib/front_end/core/sdk/ConsoleModel.ts +808 -0
  104. package/lib/front_end/core/sdk/ConsoleModelTypes.ts +15 -0
  105. package/lib/front_end/core/sdk/Cookie.ts +319 -0
  106. package/lib/front_end/core/sdk/CookieModel.ts +239 -0
  107. package/lib/front_end/core/sdk/CookieParser.ts +185 -0
  108. package/lib/front_end/core/sdk/DOMDebuggerModel.ts +787 -0
  109. package/lib/front_end/core/sdk/DOMModel.ts +1961 -0
  110. package/lib/front_end/core/sdk/DebuggerModel.ts +1605 -0
  111. package/lib/front_end/core/sdk/EmulationModel.ts +648 -0
  112. package/lib/front_end/core/sdk/EnhancedTracesParser.ts +515 -0
  113. package/lib/front_end/core/sdk/EventBreakpointsModel.ts +183 -0
  114. package/lib/front_end/core/sdk/FrameAssociated.ts +11 -0
  115. package/lib/front_end/core/sdk/FrameManager.ts +259 -0
  116. package/lib/front_end/core/sdk/HeapProfilerModel.ts +225 -0
  117. package/lib/front_end/core/sdk/HttpReasonPhraseStrings.ts +77 -0
  118. package/lib/front_end/core/sdk/IOModel.ts +91 -0
  119. package/lib/front_end/core/sdk/IsolateManager.ts +257 -0
  120. package/lib/front_end/core/sdk/IssuesModel.ts +70 -0
  121. package/lib/front_end/core/sdk/LayerTreeBase.ts +169 -0
  122. package/lib/front_end/core/sdk/LogModel.ts +56 -0
  123. package/lib/front_end/core/sdk/NetworkManager.ts +2823 -0
  124. package/lib/front_end/core/sdk/NetworkRequest.ts +2253 -0
  125. package/lib/front_end/core/sdk/OverlayColorGenerator.ts +52 -0
  126. package/lib/front_end/core/sdk/OverlayModel.ts +1011 -0
  127. package/lib/front_end/core/sdk/OverlayPersistentHighlighter.ts +522 -0
  128. package/lib/front_end/core/sdk/PageLoad.ts +35 -0
  129. package/lib/front_end/core/sdk/PageResourceLoader.ts +435 -0
  130. package/lib/front_end/core/sdk/PaintProfiler.ts +110 -0
  131. package/lib/front_end/core/sdk/PerformanceMetricsModel.ts +84 -0
  132. package/lib/front_end/core/sdk/PreloadingModel.ts +863 -0
  133. package/lib/front_end/core/sdk/RehydratingConnection.ts +386 -0
  134. package/lib/front_end/core/sdk/RehydratingObject.ts +66 -0
  135. package/lib/front_end/core/sdk/RemoteObject.ts +1160 -0
  136. package/lib/front_end/core/sdk/Resource.ts +232 -0
  137. package/lib/front_end/core/sdk/ResourceTreeModel.ts +1160 -0
  138. package/lib/front_end/core/sdk/RuntimeModel.ts +732 -0
  139. package/lib/front_end/core/sdk/SDKModel.ts +65 -0
  140. package/lib/front_end/core/sdk/ScopeTreeCache.ts +45 -0
  141. package/lib/front_end/core/sdk/ScreenCaptureModel.ts +255 -0
  142. package/lib/front_end/core/sdk/Script.ts +534 -0
  143. package/lib/front_end/core/sdk/SecurityOriginManager.ts +76 -0
  144. package/lib/front_end/core/sdk/ServerSentEvents.ts +80 -0
  145. package/lib/front_end/core/sdk/ServerSentEventsProtocol.ts +122 -0
  146. package/lib/front_end/core/sdk/ServerTiming.ts +260 -0
  147. package/lib/front_end/core/sdk/ServiceWorkerCacheModel.ts +377 -0
  148. package/lib/front_end/core/sdk/ServiceWorkerManager.ts +605 -0
  149. package/lib/front_end/core/sdk/SourceMap.ts +867 -0
  150. package/lib/front_end/core/sdk/SourceMapCache.ts +54 -0
  151. package/lib/front_end/core/sdk/SourceMapFunctionRanges.ts +156 -0
  152. package/lib/front_end/core/sdk/SourceMapManager.ts +239 -0
  153. package/lib/front_end/core/sdk/SourceMapScopeChainEntry.ts +189 -0
  154. package/lib/front_end/core/sdk/SourceMapScopesInfo.ts +508 -0
  155. package/lib/front_end/core/sdk/StorageBucketsModel.ts +204 -0
  156. package/lib/front_end/core/sdk/StorageKeyManager.ts +98 -0
  157. package/lib/front_end/core/sdk/Target.ts +332 -0
  158. package/lib/front_end/core/sdk/TargetManager.ts +453 -0
  159. package/lib/front_end/core/sdk/TraceObject.ts +61 -0
  160. package/lib/front_end/core/sdk/WebAuthnModel.ts +104 -0
  161. package/lib/front_end/core/sdk/sdk.ts +174 -0
  162. package/lib/front_end/entrypoints/formatter_worker/FormatterActions.ts +59 -0
  163. package/lib/front_end/generated/InspectorBackendCommands.js +1617 -0
  164. package/lib/front_end/generated/SupportedCSSProperties.js +7512 -0
  165. package/lib/front_end/generated/protocol-proxy-api.d.ts +5022 -0
  166. package/lib/front_end/generated/protocol.ts +22014 -0
  167. package/lib/front_end/models/cpu_profile/CPUProfileDataModel.ts +571 -0
  168. package/lib/front_end/models/cpu_profile/ProfileTreeModel.ts +103 -0
  169. package/lib/front_end/models/cpu_profile/cpu_profile.ts +11 -0
  170. package/lib/front_end/models/formatter/FormatterWorkerPool.ts +219 -0
  171. package/lib/front_end/models/formatter/ScriptFormatter.ts +112 -0
  172. package/lib/front_end/models/formatter/formatter.ts +8 -0
  173. package/lib/front_end/models/text_utils/CodeMirrorUtils.ts +37 -0
  174. package/lib/front_end/models/text_utils/ContentData.ts +199 -0
  175. package/lib/front_end/models/text_utils/ContentProvider.ts +68 -0
  176. package/lib/front_end/models/text_utils/StaticContentProvider.ts +49 -0
  177. package/lib/front_end/models/text_utils/StreamingContentData.ts +108 -0
  178. package/lib/front_end/models/text_utils/Text.ts +90 -0
  179. package/lib/front_end/models/text_utils/TextCursor.ts +44 -0
  180. package/lib/front_end/models/text_utils/TextRange.ts +266 -0
  181. package/lib/front_end/models/text_utils/TextUtils.ts +401 -0
  182. package/lib/front_end/models/text_utils/WasmDisassembly.ts +87 -0
  183. package/lib/front_end/models/text_utils/text_utils.ts +27 -0
  184. package/lib/front_end/models/trace/EntityMapper.ts +141 -0
  185. package/lib/front_end/models/trace/EventsSerializer.ts +101 -0
  186. package/lib/front_end/models/trace/LanternComputationData.ts +438 -0
  187. package/lib/front_end/models/trace/ModelImpl.ts +236 -0
  188. package/lib/front_end/models/trace/Name.ts +136 -0
  189. package/lib/front_end/models/trace/Processor.ts +652 -0
  190. package/lib/front_end/models/trace/Styles.ts +1138 -0
  191. package/lib/front_end/models/trace/extras/FilmStrip.ts +78 -0
  192. package/lib/front_end/models/trace/extras/MainThreadActivity.ts +86 -0
  193. package/lib/front_end/models/trace/extras/ScriptDuplication.ts +236 -0
  194. package/lib/front_end/models/trace/extras/StackTraceForEvent.ts +203 -0
  195. package/lib/front_end/models/trace/extras/ThirdParties.ts +164 -0
  196. package/lib/front_end/models/trace/extras/TraceFilter.ts +62 -0
  197. package/lib/front_end/models/trace/extras/TraceTree.ts +701 -0
  198. package/lib/front_end/models/trace/extras/extras.ts +11 -0
  199. package/lib/front_end/models/trace/handlers/AnimationFramesHandler.ts +128 -0
  200. package/lib/front_end/models/trace/handlers/AnimationHandler.ts +36 -0
  201. package/lib/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +239 -0
  202. package/lib/front_end/models/trace/handlers/AuctionWorkletsHandler.ts +183 -0
  203. package/lib/front_end/models/trace/handlers/DOMStatsHandler.ts +31 -0
  204. package/lib/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +306 -0
  205. package/lib/front_end/models/trace/handlers/FlowsHandler.ts +175 -0
  206. package/lib/front_end/models/trace/handlers/FramesHandler.ts +571 -0
  207. package/lib/front_end/models/trace/handlers/GPUHandler.ts +50 -0
  208. package/lib/front_end/models/trace/handlers/ImagePaintingHandler.ts +183 -0
  209. package/lib/front_end/models/trace/handlers/InitiatorsHandler.ts +193 -0
  210. package/lib/front_end/models/trace/handlers/InvalidationsHandler.ts +168 -0
  211. package/lib/front_end/models/trace/handlers/LargestImagePaintHandler.ts +109 -0
  212. package/lib/front_end/models/trace/handlers/LargestTextPaintHandler.ts +35 -0
  213. package/lib/front_end/models/trace/handlers/LayerTreeHandler.ts +123 -0
  214. package/lib/front_end/models/trace/handlers/LayoutShiftsHandler.ts +573 -0
  215. package/lib/front_end/models/trace/handlers/MemoryHandler.ts +31 -0
  216. package/lib/front_end/models/trace/handlers/MetaHandler.ts +525 -0
  217. package/lib/front_end/models/trace/handlers/ModelHandlers.ts +34 -0
  218. package/lib/front_end/models/trace/handlers/NetworkRequestsHandler.ts +672 -0
  219. package/lib/front_end/models/trace/handlers/PageFramesHandler.ts +52 -0
  220. package/lib/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +460 -0
  221. package/lib/front_end/models/trace/handlers/RendererHandler.ts +428 -0
  222. package/lib/front_end/models/trace/handlers/SamplesHandler.ts +271 -0
  223. package/lib/front_end/models/trace/handlers/ScreenshotsHandler.ts +122 -0
  224. package/lib/front_end/models/trace/handlers/ScriptsHandler.ts +336 -0
  225. package/lib/front_end/models/trace/handlers/SelectorStatsHandler.ts +110 -0
  226. package/lib/front_end/models/trace/handlers/Threads.ts +139 -0
  227. package/lib/front_end/models/trace/handlers/UserInteractionsHandler.ts +400 -0
  228. package/lib/front_end/models/trace/handlers/UserTimingsHandler.ts +233 -0
  229. package/lib/front_end/models/trace/handlers/WarningsHandler.ts +162 -0
  230. package/lib/front_end/models/trace/handlers/WorkersHandler.ts +45 -0
  231. package/lib/front_end/models/trace/handlers/handlers.ts +8 -0
  232. package/lib/front_end/models/trace/handlers/helpers.ts +196 -0
  233. package/lib/front_end/models/trace/handlers/types.ts +75 -0
  234. package/lib/front_end/models/trace/helpers/Extensions.ts +54 -0
  235. package/lib/front_end/models/trace/helpers/Network.ts +129 -0
  236. package/lib/front_end/models/trace/helpers/SamplesIntegrator.ts +544 -0
  237. package/lib/front_end/models/trace/helpers/SyntheticEvents.ts +87 -0
  238. package/lib/front_end/models/trace/helpers/Timing.ts +248 -0
  239. package/lib/front_end/models/trace/helpers/Trace.ts +928 -0
  240. package/lib/front_end/models/trace/helpers/TreeHelpers.ts +320 -0
  241. package/lib/front_end/models/trace/helpers/helpers.ts +11 -0
  242. package/lib/front_end/models/trace/insights/CLSCulprits.ts +668 -0
  243. package/lib/front_end/models/trace/insights/Cache.ts +269 -0
  244. package/lib/front_end/models/trace/insights/Common.ts +453 -0
  245. package/lib/front_end/models/trace/insights/DOMSize.ts +223 -0
  246. package/lib/front_end/models/trace/insights/DocumentLatency.ts +319 -0
  247. package/lib/front_end/models/trace/insights/DuplicatedJavaScript.ts +126 -0
  248. package/lib/front_end/models/trace/insights/FontDisplay.ts +119 -0
  249. package/lib/front_end/models/trace/insights/ForcedReflow.ts +220 -0
  250. package/lib/front_end/models/trace/insights/INPBreakdown.ts +171 -0
  251. package/lib/front_end/models/trace/insights/ImageDelivery.ts +348 -0
  252. package/lib/front_end/models/trace/insights/LCPBreakdown.ts +268 -0
  253. package/lib/front_end/models/trace/insights/LCPDiscovery.ts +237 -0
  254. package/lib/front_end/models/trace/insights/LegacyJavaScript.ts +138 -0
  255. package/lib/front_end/models/trace/insights/Models.ts +22 -0
  256. package/lib/front_end/models/trace/insights/ModernHTTP.ts +257 -0
  257. package/lib/front_end/models/trace/insights/NetworkDependencyTree.ts +726 -0
  258. package/lib/front_end/models/trace/insights/RenderBlocking.ts +257 -0
  259. package/lib/front_end/models/trace/insights/SlowCSSSelector.ts +175 -0
  260. package/lib/front_end/models/trace/insights/Statistics.ts +101 -0
  261. package/lib/front_end/models/trace/insights/ThirdParties.ts +130 -0
  262. package/lib/front_end/models/trace/insights/Viewport.ts +138 -0
  263. package/lib/front_end/models/trace/insights/insights.ts +10 -0
  264. package/lib/front_end/models/trace/insights/types.ts +157 -0
  265. package/lib/front_end/models/trace/lantern/core/LanternError.ts +7 -0
  266. package/lib/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +619 -0
  267. package/lib/front_end/models/trace/lantern/core/core.ts +6 -0
  268. package/lib/front_end/models/trace/lantern/graph/BaseNode.ts +345 -0
  269. package/lib/front_end/models/trace/lantern/graph/CPUNode.ts +80 -0
  270. package/lib/front_end/models/trace/lantern/graph/NetworkNode.ts +101 -0
  271. package/lib/front_end/models/trace/lantern/graph/PageDependencyGraph.ts +636 -0
  272. package/lib/front_end/models/trace/lantern/graph/graph.ts +8 -0
  273. package/lib/front_end/models/trace/lantern/lantern.ts +17 -0
  274. package/lib/front_end/models/trace/lantern/metrics/FirstContentfulPaint.ts +187 -0
  275. package/lib/front_end/models/trace/lantern/metrics/Interactive.ts +88 -0
  276. package/lib/front_end/models/trace/lantern/metrics/LargestContentfulPaint.ts +92 -0
  277. package/lib/front_end/models/trace/lantern/metrics/MaxPotentialFID.ts +72 -0
  278. package/lib/front_end/models/trace/lantern/metrics/Metric.ts +126 -0
  279. package/lib/front_end/models/trace/lantern/metrics/SpeedIndex.ts +126 -0
  280. package/lib/front_end/models/trace/lantern/metrics/TBTUtils.ts +82 -0
  281. package/lib/front_end/models/trace/lantern/metrics/TotalBlockingTime.ts +112 -0
  282. package/lib/front_end/models/trace/lantern/metrics/metrics.ts +12 -0
  283. package/lib/front_end/models/trace/lantern/simulation/ConnectionPool.ts +150 -0
  284. package/lib/front_end/models/trace/lantern/simulation/Constants.ts +46 -0
  285. package/lib/front_end/models/trace/lantern/simulation/DNSCache.ts +61 -0
  286. package/lib/front_end/models/trace/lantern/simulation/SimulationTimingMap.ts +196 -0
  287. package/lib/front_end/models/trace/lantern/simulation/Simulator.ts +556 -0
  288. package/lib/front_end/models/trace/lantern/simulation/TCPConnection.ts +192 -0
  289. package/lib/front_end/models/trace/lantern/simulation/simulation.ts +10 -0
  290. package/lib/front_end/models/trace/lantern/types/Lantern.ts +220 -0
  291. package/lib/front_end/models/trace/lantern/types/types.ts +5 -0
  292. package/lib/front_end/models/trace/trace.ts +33 -0
  293. package/lib/front_end/models/trace/types/Configuration.ts +110 -0
  294. package/lib/front_end/models/trace/types/Extensions.ts +136 -0
  295. package/lib/front_end/models/trace/types/File.ts +281 -0
  296. package/lib/front_end/models/trace/types/Overlays.ts +138 -0
  297. package/lib/front_end/models/trace/types/Timing.ts +30 -0
  298. package/lib/front_end/models/trace/types/TraceEvents.ts +3277 -0
  299. package/lib/front_end/models/trace/types/types.ts +10 -0
  300. package/lib/front_end/third_party/i18n/LICENSE +202 -0
  301. package/lib/front_end/third_party/i18n/README.chromium +15 -0
  302. package/lib/front_end/third_party/i18n/i18n-impl.ts +61 -0
  303. package/lib/front_end/third_party/i18n/i18n.ts +11 -0
  304. package/lib/front_end/third_party/i18n/localized-string-set.ts +129 -0
  305. package/lib/front_end/third_party/intl-messageformat/LICENSE +33 -0
  306. package/lib/front_end/third_party/intl-messageformat/README.chromium +24 -0
  307. package/lib/front_end/third_party/intl-messageformat/intl-messageformat-tsconfig.json +16 -0
  308. package/lib/front_end/third_party/intl-messageformat/intl-messageformat.ts +6 -0
  309. package/lib/front_end/third_party/intl-messageformat/package/LICENSE.md +33 -0
  310. package/lib/front_end/third_party/intl-messageformat/package/README.md +3 -0
  311. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts +6 -0
  312. package/lib/front_end/third_party/intl-messageformat/package/index.d.ts.map +1 -0
  313. package/lib/front_end/third_party/intl-messageformat/package/index.js +13 -0
  314. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.d.ts +5 -0
  315. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.js +1710 -0
  316. package/lib/front_end/third_party/intl-messageformat/package/intl-messageformat.iife.js +1815 -0
  317. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts +6 -0
  318. package/lib/front_end/third_party/intl-messageformat/package/lib/index.d.ts.map +1 -0
  319. package/lib/front_end/third_party/intl-messageformat/package/lib/index.js +10 -0
  320. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts +34 -0
  321. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.d.ts.map +1 -0
  322. package/lib/front_end/third_party/intl-messageformat/package/lib/src/core.js +229 -0
  323. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts +28 -0
  324. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.d.ts.map +1 -0
  325. package/lib/front_end/third_party/intl-messageformat/package/lib/src/error.js +48 -0
  326. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts +34 -0
  327. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.d.ts.map +1 -0
  328. package/lib/front_end/third_party/intl-messageformat/package/lib/src/formatters.js +179 -0
  329. package/lib/front_end/third_party/intl-messageformat/package/package.json +42 -0
  330. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts +34 -0
  331. package/lib/front_end/third_party/intl-messageformat/package/src/core.d.ts.map +1 -0
  332. package/lib/front_end/third_party/intl-messageformat/package/src/core.js +230 -0
  333. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts +28 -0
  334. package/lib/front_end/third_party/intl-messageformat/package/src/error.d.ts.map +1 -0
  335. package/lib/front_end/third_party/intl-messageformat/package/src/error.js +51 -0
  336. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts +34 -0
  337. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.d.ts.map +1 -0
  338. package/lib/front_end/third_party/intl-messageformat/package/src/formatters.js +182 -0
  339. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/error.d.ts +79 -0
  340. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/index.d.ts +15 -0
  341. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/parser.d.ts +153 -0
  342. package/lib/front_end/third_party/intl-messageformat/package/src/icu-messageformat-parser/types.d.ts +139 -0
  343. package/lib/front_end/third_party/legacy-javascript/LICENSE +202 -0
  344. package/lib/front_end/third_party/legacy-javascript/README.chromium +13 -0
  345. package/lib/front_end/third_party/legacy-javascript/legacy-javascript-tsconfig.json +8 -0
  346. package/lib/front_end/third_party/legacy-javascript/legacy-javascript.ts +3 -0
  347. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.d.ts +18 -0
  348. package/lib/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +943 -0
  349. package/lib/front_end/third_party/legacy-javascript/package.json +8 -0
  350. package/lib/front_end/third_party/legacy-javascript/rebuild.sh +9 -0
  351. package/lib/front_end/third_party/third-party-web/LICENSE +20 -0
  352. package/lib/front_end/third_party/third-party-web/README.chromium +13 -0
  353. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.d.ts +2 -0
  354. package/lib/front_end/third_party/third-party-web/lib/nostats-subset.js +149 -0
  355. package/lib/front_end/third_party/third-party-web/package/LICENSE +20 -0
  356. package/lib/front_end/third_party/third-party-web/package/README.md +929 -0
  357. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive-nostats.json +1 -0
  358. package/lib/front_end/third_party/third-party-web/package/dist/entities-httparchive.json +1 -0
  359. package/lib/front_end/third_party/third-party-web/package/dist/entities-nostats.json +1 -0
  360. package/lib/front_end/third_party/third-party-web/package/dist/entities.json +1 -0
  361. package/lib/front_end/third_party/third-party-web/package/facades.md +46 -0
  362. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.d.ts +1 -0
  363. package/lib/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +1 -0
  364. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.d.ts +1 -0
  365. package/lib/front_end/third_party/third-party-web/package/httparchive-subset.js +1 -0
  366. package/lib/front_end/third_party/third-party-web/package/lib/__snapshots__/index.test.js.snap +1006 -0
  367. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +139 -0
  368. package/lib/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +44 -0
  369. package/lib/front_end/third_party/third-party-web/package/lib/entities.test.js +27 -0
  370. package/lib/front_end/third_party/third-party-web/package/lib/index.d.ts +34 -0
  371. package/lib/front_end/third_party/third-party-web/package/lib/index.js +3 -0
  372. package/lib/front_end/third_party/third-party-web/package/lib/index.test.js +246 -0
  373. package/lib/front_end/third_party/third-party-web/package/lib/markdown/faqs.partial.md +36 -0
  374. package/lib/front_end/third_party/third-party-web/package/lib/markdown/goals.partial.md +9 -0
  375. package/lib/front_end/third_party/third-party-web/package/lib/markdown/methodology.partial.md +5 -0
  376. package/lib/front_end/third_party/third-party-web/package/lib/markdown/template.md +151 -0
  377. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-02-01.md +1 -0
  378. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-03-01.md +1 -0
  379. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-06.md +1 -0
  380. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2019-05-13.md +14 -0
  381. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2021-01-01.md +1 -0
  382. package/lib/front_end/third_party/third-party-web/package/lib/markdown/updates/2024-07-01.md +3 -0
  383. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.d.ts +1 -0
  384. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +3 -0
  385. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.d.ts +1 -0
  386. package/lib/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +3 -0
  387. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.d.ts +1 -0
  388. package/lib/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +3 -0
  389. package/lib/front_end/third_party/third-party-web/package/nostats-subset.d.ts +1 -0
  390. package/lib/front_end/third_party/third-party-web/package/nostats-subset.js +1 -0
  391. package/lib/front_end/third_party/third-party-web/package/package.json +46 -0
  392. package/lib/front_end/third_party/third-party-web/package.json +8 -0
  393. package/lib/front_end/third_party/third-party-web/rebuild.sh +13 -0
  394. package/lib/front_end/third_party/third-party-web/third-party-web-tsconfig.json +8 -0
  395. package/lib/front_end/third_party/third-party-web/third-party-web.ts +3 -0
  396. package/package.json +24 -0
  397. package/patches/chrome-devtools-frontend+1.0.1533544.patch +187 -0
@@ -0,0 +1,1647 @@
1
+ // Copyright 2021 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.
4
+
5
+ /*
6
+ * Copyright (C) 2010 Nikita Vasilyev. All rights reserved.
7
+ * Copyright (C) 2010 Joseph Pecoraro. All rights reserved.
8
+ * Copyright (C) 2010 Google Inc. All rights reserved.
9
+ *
10
+ * Redistribution and use in source and binary forms, with or without
11
+ * modification, are permitted provided that the following conditions are
12
+ * met:
13
+ *
14
+ * * Redistributions of source code must retain the above copyright
15
+ * notice, this list of conditions and the following disclaimer.
16
+ * * Redistributions in binary form must reproduce the above
17
+ * copyright notice, this list of conditions and the following disclaimer
18
+ * in the documentation and/or other materials provided with the
19
+ * distribution.
20
+ * * Neither the #name of Google Inc. nor the names of its
21
+ * contributors may be used to endorse or promote products derived from
22
+ * this software without specific prior written permission.
23
+ *
24
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
+ */
36
+
37
+ import * as Protocol from '../../generated/protocol.js';
38
+ import * as SupportedCSSProperties from '../../generated/SupportedCSSProperties.js';
39
+ import * as Common from '../common/common.js';
40
+
41
+ export class CSSMetadata {
42
+ readonly #values: string[] = [];
43
+ readonly #longhands = new Map<string, string[]>();
44
+ readonly #shorthands = new Map<string, string[]>();
45
+ readonly #inherited = new Set<string>();
46
+ readonly #svgProperties = new Set<string>();
47
+ readonly #propertyValues = new Map<string, string[]>();
48
+ readonly #aliasesFor = new Map<string, string>();
49
+ readonly #nameValuePresets: string[] = [];
50
+ readonly #nameValuePresetsIncludingSVG: string[] = [];
51
+ #valuesSet: Set<string>;
52
+
53
+ constructor(properties: CSSPropertyDefinition[], aliasesFor: Map<string, string>) {
54
+ this.#aliasesFor = aliasesFor;
55
+ for (let i = 0; i < properties.length; ++i) {
56
+ const property = properties[i];
57
+ const propertyName = property.name;
58
+ if (!CSS.supports(propertyName, 'initial')) {
59
+ continue;
60
+ }
61
+ this.#values.push(propertyName);
62
+
63
+ if (property.inherited) {
64
+ this.#inherited.add(propertyName);
65
+ }
66
+ if (property.svg) {
67
+ this.#svgProperties.add(propertyName);
68
+ }
69
+
70
+ const longhands = properties[i].longhands;
71
+ if (longhands) {
72
+ this.#longhands.set(propertyName, longhands);
73
+ for (let j = 0; j < longhands.length; ++j) {
74
+ const longhandName = longhands[j];
75
+ let shorthands = this.#shorthands.get(longhandName);
76
+ if (!shorthands) {
77
+ shorthands = [];
78
+ this.#shorthands.set(longhandName, shorthands);
79
+ }
80
+ shorthands.push(propertyName);
81
+ }
82
+ }
83
+ }
84
+ this.#values.sort(CSSMetadata.sortPrefixesAndCSSWideKeywordsToEnd);
85
+ this.#valuesSet = new Set(this.#values);
86
+
87
+ // Reads in auto-generated property names and #values from blink/public/renderer/core/css/css_properties.json5
88
+ // treats _generatedPropertyValues as basis
89
+ const propertyValueSets = new Map<string, Set<string>>();
90
+ for (const [propertyName, basisValueObj] of Object.entries(SupportedCSSProperties.generatedPropertyValues)) {
91
+ propertyValueSets.set(propertyName, new Set(basisValueObj.values));
92
+ }
93
+ // and add manually maintained map of extra prop-value pairs
94
+ for (const [propertyName, extraValues] of extraPropertyValues) {
95
+ const propertyValueSet = propertyValueSets.get(propertyName);
96
+ if (propertyValueSet) {
97
+ propertyValueSets.set(propertyName, propertyValueSet.union(extraValues));
98
+ } else {
99
+ propertyValueSets.set(propertyName, extraValues);
100
+ }
101
+ }
102
+ // finally add common keywords to value sets and convert property #values
103
+ // into arrays since callers expect arrays
104
+ for (const [propertyName, values] of propertyValueSets) {
105
+ for (const commonKeyword of CommonKeywords) {
106
+ if (!values.has(commonKeyword) && CSS.supports(propertyName, commonKeyword)) {
107
+ values.add(commonKeyword);
108
+ }
109
+ }
110
+
111
+ this.#propertyValues.set(propertyName, [...values]);
112
+ }
113
+
114
+ for (const name of this.#valuesSet) {
115
+ const values = this.specificPropertyValues(name)
116
+ .filter(value => CSS.supports(name, value))
117
+ .sort(CSSMetadata.sortPrefixesAndCSSWideKeywordsToEnd);
118
+ const presets = values.map(value => `${name}: ${value}`);
119
+ if (!this.isSVGProperty(name)) {
120
+ this.#nameValuePresets.push(...presets);
121
+ }
122
+ this.#nameValuePresetsIncludingSVG.push(...presets);
123
+ }
124
+ }
125
+
126
+ static isCSSWideKeyword(a: string): a is CSSWideKeyword {
127
+ return CSSWideKeywords.includes(a as CSSWideKeyword);
128
+ }
129
+
130
+ static isPositionTryOrderKeyword(a: string): a is PositionTryOrderKeyword {
131
+ return PositionTryOrderKeywords.includes(a as PositionTryOrderKeyword);
132
+ }
133
+
134
+ private static sortPrefixesAndCSSWideKeywordsToEnd(a: string, b: string): 1|- 1|0 {
135
+ const aIsCSSWideKeyword = CSSMetadata.isCSSWideKeyword(a);
136
+ const bIsCSSWideKeyword = CSSMetadata.isCSSWideKeyword(b);
137
+
138
+ if (aIsCSSWideKeyword && !bIsCSSWideKeyword) {
139
+ return 1;
140
+ }
141
+ if (!aIsCSSWideKeyword && bIsCSSWideKeyword) {
142
+ return -1;
143
+ }
144
+
145
+ const aIsPrefixed = a.startsWith('-webkit-');
146
+ const bIsPrefixed = b.startsWith('-webkit-');
147
+ if (aIsPrefixed && !bIsPrefixed) {
148
+ return 1;
149
+ }
150
+ if (!aIsPrefixed && bIsPrefixed) {
151
+ return -1;
152
+ }
153
+ return a < b ? -1 : (a > b ? 1 : 0);
154
+ }
155
+
156
+ allProperties(): string[] {
157
+ return this.#values;
158
+ }
159
+
160
+ aliasesFor(): Map<string, string> {
161
+ return this.#aliasesFor;
162
+ }
163
+
164
+ nameValuePresets(includeSVG?: boolean): string[] {
165
+ return includeSVG ? this.#nameValuePresetsIncludingSVG : this.#nameValuePresets;
166
+ }
167
+
168
+ isSVGProperty(name: string): boolean {
169
+ name = name.toLowerCase();
170
+ return this.#svgProperties.has(name);
171
+ }
172
+
173
+ getLonghands(shorthand: string): string[]|null {
174
+ return this.#longhands.get(shorthand) || null;
175
+ }
176
+
177
+ getShorthands(longhand: string): string[]|null {
178
+ return this.#shorthands.get(longhand) || null;
179
+ }
180
+
181
+ isColorAwareProperty(propertyName: string): boolean {
182
+ return colorAwareProperties.has(propertyName.toLowerCase()) || this.isCustomProperty(propertyName.toLowerCase());
183
+ }
184
+
185
+ isFontFamilyProperty(propertyName: string): boolean {
186
+ return propertyName.toLowerCase() === 'font-family';
187
+ }
188
+
189
+ isAngleAwareProperty(propertyName: string): boolean {
190
+ const lowerCasedName = propertyName.toLowerCase();
191
+ // TODO: @Yisi, parse hsl(), hsla(), hwb() and lch()
192
+ // See also https://drafts.csswg.org/css-color/#hue-syntax
193
+ return colorAwareProperties.has(lowerCasedName) || angleAwareProperties.has(lowerCasedName);
194
+ }
195
+
196
+ isGridAreaDefiningProperty(propertyName: string): boolean {
197
+ propertyName = propertyName.toLowerCase();
198
+ return propertyName === 'grid' || propertyName === 'grid-template' || propertyName === 'grid-template-areas';
199
+ }
200
+
201
+ isGridColumnNameAwareProperty(propertyName: string): boolean {
202
+ propertyName = propertyName.toLowerCase();
203
+ return ['grid-column', 'grid-column-start', 'grid-column-end'].includes(propertyName);
204
+ }
205
+
206
+ isGridRowNameAwareProperty(propertyName: string): boolean {
207
+ propertyName = propertyName.toLowerCase();
208
+ return ['grid-row', 'grid-row-start', 'grid-row-end'].includes(propertyName);
209
+ }
210
+
211
+ isGridAreaNameAwareProperty(propertyName: string): boolean {
212
+ propertyName = propertyName.toLowerCase();
213
+ return propertyName === 'grid-area';
214
+ }
215
+
216
+ isGridNameAwareProperty(propertyName: string): boolean {
217
+ return this.isGridAreaNameAwareProperty(propertyName) || this.isGridColumnNameAwareProperty(propertyName) ||
218
+ this.isGridRowNameAwareProperty(propertyName);
219
+ }
220
+
221
+ isLengthProperty(propertyName: string): boolean {
222
+ propertyName = propertyName.toLowerCase();
223
+ if (propertyName === 'line-height') {
224
+ return false;
225
+ }
226
+ return distanceProperties.has(propertyName) || propertyName.startsWith('margin') ||
227
+ propertyName.startsWith('padding') || propertyName.indexOf('width') !== -1 ||
228
+ propertyName.indexOf('height') !== -1;
229
+ }
230
+
231
+ isBezierAwareProperty(propertyName: string): boolean {
232
+ propertyName = propertyName.toLowerCase();
233
+ return bezierAwareProperties.has(propertyName) || this.isCustomProperty(propertyName);
234
+ }
235
+
236
+ isFontAwareProperty(propertyName: string): boolean {
237
+ propertyName = propertyName.toLowerCase();
238
+ return fontAwareProperties.has(propertyName) || this.isCustomProperty(propertyName);
239
+ }
240
+
241
+ isCustomProperty(propertyName: string): boolean {
242
+ return propertyName.startsWith('--');
243
+ }
244
+
245
+ isShadowProperty(propertyName: string): boolean {
246
+ propertyName = propertyName.toLowerCase();
247
+ return propertyName === 'box-shadow' || propertyName === 'text-shadow' || propertyName === '-webkit-box-shadow';
248
+ }
249
+
250
+ isStringProperty(propertyName: string): boolean {
251
+ propertyName = propertyName.toLowerCase();
252
+ // TODO(crbug.com/1033910): Generalize this to all CSS properties
253
+ // that accept <string> #values.
254
+ return propertyName === 'content';
255
+ }
256
+
257
+ canonicalPropertyName(name: string): string {
258
+ if (this.isCustomProperty(name)) {
259
+ return name;
260
+ }
261
+ name = name.toLowerCase();
262
+
263
+ const aliasFor = this.#aliasesFor.get(name);
264
+ if (aliasFor) {
265
+ return aliasFor;
266
+ }
267
+
268
+ if (!name || name.length < 9 || name.charAt(0) !== '-') {
269
+ return name;
270
+ }
271
+ const match = name.match(/(?:-webkit-)(.+)/);
272
+ if (!match || !this.#valuesSet.has(match[1])) {
273
+ return name;
274
+ }
275
+ return match[1];
276
+ }
277
+
278
+ isCSSPropertyName(propertyName: string): boolean {
279
+ propertyName = propertyName.toLowerCase();
280
+ if ((propertyName.startsWith('--') && propertyName.length > 2) || propertyName.startsWith('-moz-') ||
281
+ propertyName.startsWith('-ms-') || propertyName.startsWith('-o-') || propertyName.startsWith('-webkit-')) {
282
+ return true;
283
+ }
284
+ return this.#valuesSet.has(propertyName);
285
+ }
286
+
287
+ isPropertyInherited(propertyName: string): boolean {
288
+ propertyName = propertyName.toLowerCase();
289
+ return propertyName.startsWith('--') || this.#inherited.has(this.canonicalPropertyName(propertyName)) ||
290
+ this.#inherited.has(propertyName);
291
+ }
292
+
293
+ private specificPropertyValues(propertyName: string): string[] {
294
+ const unprefixedName = propertyName.replace(/^-webkit-/, '');
295
+ const propertyValues = this.#propertyValues;
296
+ // #propertyValues acts like cache; missing properties are added with possible common keywords
297
+ let keywords: (string[]|undefined) = propertyValues.get(propertyName) || propertyValues.get(unprefixedName);
298
+ if (!keywords) {
299
+ keywords = [];
300
+ for (const commonKeyword of CommonKeywords) {
301
+ if (CSS.supports(propertyName, commonKeyword)) {
302
+ keywords.push(commonKeyword);
303
+ }
304
+ }
305
+ propertyValues.set(propertyName, keywords);
306
+ }
307
+ return keywords;
308
+ }
309
+
310
+ getPropertyValues(propertyName: string): string[] {
311
+ propertyName = propertyName.toLowerCase();
312
+ // Add CSS-wide keywords to all properties.
313
+ const acceptedKeywords = [...this.specificPropertyValues(propertyName), ...CSSWideKeywords];
314
+
315
+ if (this.isColorAwareProperty(propertyName)) {
316
+ acceptedKeywords.push('currentColor');
317
+ for (const color of Common.Color.Nicknames.keys()) {
318
+ acceptedKeywords.push(color);
319
+ }
320
+ }
321
+ return acceptedKeywords.sort(CSSMetadata.sortPrefixesAndCSSWideKeywordsToEnd);
322
+ }
323
+
324
+ propertyUsageWeight(property: string): number {
325
+ return Weight.get(property) || Weight.get(this.canonicalPropertyName(property)) || 0;
326
+ }
327
+
328
+ getValuePreset(key: string, value: string): {
329
+ text: string,
330
+ startColumn: number,
331
+ endColumn: number,
332
+ }|null {
333
+ const values = valuePresets.get(key);
334
+ let text: string|(string | null | undefined) = values ? values.get(value) : null;
335
+ if (!text) {
336
+ return null;
337
+ }
338
+ let startColumn: number = text.length;
339
+ let endColumn: number = text.length;
340
+ if (text) {
341
+ startColumn = text.indexOf('|');
342
+ endColumn = text.lastIndexOf('|');
343
+ endColumn = startColumn === endColumn ? endColumn : endColumn - 1;
344
+ text = text.replace(/\|/g, '');
345
+ }
346
+ return {text, startColumn, endColumn};
347
+ }
348
+
349
+ isHighlightPseudoType(pseudoType: Protocol.DOM.PseudoType): boolean {
350
+ return (
351
+ pseudoType === Protocol.DOM.PseudoType.Highlight || pseudoType === Protocol.DOM.PseudoType.Selection ||
352
+ pseudoType === Protocol.DOM.PseudoType.TargetText || pseudoType === Protocol.DOM.PseudoType.GrammarError ||
353
+ pseudoType === Protocol.DOM.PseudoType.SpellingError);
354
+ }
355
+ }
356
+
357
+ export const CubicBezierKeywordValues = new Map([
358
+ ['linear', 'cubic-bezier(0, 0, 1, 1)'],
359
+ ['ease', 'cubic-bezier(0.25, 0.1, 0.25, 1)'],
360
+ ['ease-in', 'cubic-bezier(0.42, 0, 1, 1)'],
361
+ ['ease-in-out', 'cubic-bezier(0.42, 0, 0.58, 1)'],
362
+ ['ease-out', 'cubic-bezier(0, 0, 0.58, 1)'],
363
+ ]);
364
+
365
+ /** CSS-wide keywords. **/
366
+ export const enum CSSWideKeyword {
367
+ INHERIT = 'inherit',
368
+ INITIAL = 'initial',
369
+ REVERT = 'revert',
370
+ REVERT_LAYER = 'revert-layer',
371
+ UNSET = 'unset',
372
+ }
373
+ /**
374
+ * Spec: https://drafts.csswg.org/css-cascade/#defaulting-keywords
375
+ * https://drafts.csswg.org/css-cascade-5/#revert-layer
376
+ **/
377
+ export const CSSWideKeywords: CSSWideKeyword[] = [
378
+ CSSWideKeyword.INHERIT,
379
+ CSSWideKeyword.INITIAL,
380
+ CSSWideKeyword.REVERT,
381
+ CSSWideKeyword.REVERT_LAYER,
382
+ CSSWideKeyword.UNSET,
383
+ ];
384
+
385
+ /** https://www.w3.org/TR/css-anchor-position-1/#typedef-try-size **/
386
+ export const enum PositionTryOrderKeyword {
387
+ NORMAL = 'normal',
388
+ MOST_HEIGHT = 'most-height',
389
+ MOST_WIDTH = 'most-width',
390
+ MOST_BLOCK_SIZE = 'most-block-size',
391
+ MOST_INLINE_SIZE = 'most-inline-size',
392
+ }
393
+
394
+ export const PositionTryOrderKeywords: PositionTryOrderKeyword[] = [
395
+ PositionTryOrderKeyword.NORMAL,
396
+ PositionTryOrderKeyword.MOST_HEIGHT,
397
+ PositionTryOrderKeyword.MOST_WIDTH,
398
+ PositionTryOrderKeyword.MOST_BLOCK_SIZE,
399
+ PositionTryOrderKeyword.MOST_INLINE_SIZE,
400
+ ];
401
+
402
+ export const VariableNameRegex = /(\s*--.*?)/gs;
403
+ export const VariableRegex = /(var\(\s*--.*?\))/gs;
404
+ export const CustomVariableRegex = /(var\(*--[\w\d]+-([\w]+-[\w]+)\))/g;
405
+ export const URLRegex = /url\(\s*('.+?'|".+?"|[^)]+)\s*\)/g;
406
+
407
+ /**
408
+ * Matches an instance of a grid area 'row' definition.
409
+ * 'grid-template-areas', e.g.
410
+ * "a a ."
411
+ *
412
+ * 'grid', 'grid-template', e.g.
413
+ * [track-#name] "a a ." minmax(50px, auto) [track-#name]
414
+ */
415
+ export const GridAreaRowRegex = /((?:\[[\w\- ]+\]\s*)*(?:"[^"]+"|'[^']+'))[^'"\[]*\[?[^'"\[]*/;
416
+
417
+ let cssMetadataInstance: CSSMetadata|null = null;
418
+
419
+ export function cssMetadata(): CSSMetadata {
420
+ if (!cssMetadataInstance) {
421
+ const supportedProperties = (SupportedCSSProperties.generatedProperties as CSSPropertyDefinition[]);
422
+ cssMetadataInstance = new CSSMetadata(supportedProperties, SupportedCSSProperties.generatedAliasesFor);
423
+ }
424
+ return cssMetadataInstance;
425
+ }
426
+
427
+ /**
428
+ * The pipe character '|' indicates where text selection should be set.
429
+ */
430
+ const imageValuePresetMap = new Map([
431
+ ['linear-gradient', 'linear-gradient(|45deg, black, transparent|)'],
432
+ ['radial-gradient', 'radial-gradient(|black, transparent|)'],
433
+ ['repeating-linear-gradient', 'repeating-linear-gradient(|45deg, black, transparent 100px|)'],
434
+ ['repeating-radial-gradient', 'repeating-radial-gradient(|black, transparent 100px|)'],
435
+ ['url', 'url(||)'],
436
+ ]);
437
+
438
+ const filterValuePresetMap = new Map([
439
+ ['blur', 'blur(|1px|)'],
440
+ ['brightness', 'brightness(|0.5|)'],
441
+ ['contrast', 'contrast(|0.5|)'],
442
+ ['drop-shadow', 'drop-shadow(|2px 4px 6px black|)'],
443
+ ['grayscale', 'grayscale(|1|)'],
444
+ ['hue-rotate', 'hue-rotate(|45deg|)'],
445
+ ['invert', 'invert(|1|)'],
446
+ ['opacity', 'opacity(|0.5|)'],
447
+ ['saturate', 'saturate(|0.5|)'],
448
+ ['sepia', 'sepia(|1|)'],
449
+ ['url', 'url(||)'],
450
+ ]);
451
+
452
+ const cornerShapeValuePresetMap = new Map([
453
+ ['superellipse(0.5)', 'superellipse(|0.5|)'],
454
+ ['superellipse(infinity)', 'superellipse(|infinity|)'],
455
+ ]);
456
+
457
+ const valuePresets = new Map([
458
+ ['filter', filterValuePresetMap],
459
+ ['backdrop-filter', filterValuePresetMap],
460
+ ['background', imageValuePresetMap],
461
+ ['background-image', imageValuePresetMap],
462
+ ['-webkit-mask-image', imageValuePresetMap],
463
+ [
464
+ 'transform',
465
+ new Map([
466
+ ['scale', 'scale(|1.5|)'],
467
+ ['scaleX', 'scaleX(|1.5|)'],
468
+ ['scaleY', 'scaleY(|1.5|)'],
469
+ ['scale3d', 'scale3d(|1.5, 1.5, 1.5|)'],
470
+ ['rotate', 'rotate(|45deg|)'],
471
+ ['rotateX', 'rotateX(|45deg|)'],
472
+ ['rotateY', 'rotateY(|45deg|)'],
473
+ ['rotateZ', 'rotateZ(|45deg|)'],
474
+ ['rotate3d', 'rotate3d(|1, 1, 1, 45deg|)'],
475
+ ['skew', 'skew(|10deg, 10deg|)'],
476
+ ['skewX', 'skewX(|10deg|)'],
477
+ ['skewY', 'skewY(|10deg|)'],
478
+ ['translate', 'translate(|10px, 10px|)'],
479
+ ['translateX', 'translateX(|10px|)'],
480
+ ['translateY', 'translateY(|10px|)'],
481
+ ['translateZ', 'translateZ(|10px|)'],
482
+ ['translate3d', 'translate3d(|10px, 10px, 10px|)'],
483
+ ['matrix', 'matrix(|1, 0, 0, 1, 0, 0|)'],
484
+ ['matrix3d', 'matrix3d(|1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1|)'],
485
+ ['perspective', 'perspective(|10px|)'],
486
+ ]),
487
+ ],
488
+ ['corner-shape', cornerShapeValuePresetMap],
489
+ ]);
490
+
491
+ const distanceProperties = new Set<string>([
492
+ 'background-position',
493
+ 'border-spacing',
494
+ 'bottom',
495
+ 'font-size',
496
+ 'height',
497
+ 'left',
498
+ 'letter-spacing',
499
+ 'max-height',
500
+ 'max-width',
501
+ 'min-height',
502
+ 'min-width',
503
+ 'right',
504
+ 'text-indent',
505
+ 'top',
506
+ 'width',
507
+ 'word-spacing',
508
+ 'grid-row-gap',
509
+ 'grid-column-gap',
510
+ 'row-gap',
511
+ ]);
512
+
513
+ const bezierAwareProperties = new Set<string>([
514
+ 'animation',
515
+ 'animation-timing-function',
516
+ 'transition',
517
+ 'transition-timing-function',
518
+ '-webkit-animation',
519
+ '-webkit-animation-timing-function',
520
+ '-webkit-transition',
521
+ '-webkit-transition-timing-function',
522
+ ]);
523
+
524
+ const fontAwareProperties =
525
+ new Set<string>(['font-size', 'line-height', 'font-weight', 'font-family', 'letter-spacing']);
526
+
527
+ const colorAwareProperties = new Set<string>([
528
+ 'accent-color',
529
+ 'background',
530
+ 'background-color',
531
+ 'background-image',
532
+ 'border',
533
+ 'border-color',
534
+ 'border-image',
535
+ 'border-image-source',
536
+ 'border-bottom',
537
+ 'border-bottom-color',
538
+ 'border-left',
539
+ 'border-left-color',
540
+ 'border-right',
541
+ 'border-right-color',
542
+ 'border-top',
543
+ 'border-top-color',
544
+ 'border-block',
545
+ 'border-block-color',
546
+ 'border-block-end',
547
+ 'border-block-end-color',
548
+ 'border-block-start',
549
+ 'border-block-start-color',
550
+ 'border-inline',
551
+ 'border-inline-color',
552
+ 'border-inline-end',
553
+ 'border-inline-end-color',
554
+ 'border-inline-start',
555
+ 'border-inline-start-color',
556
+ 'box-shadow',
557
+ 'caret-color',
558
+ 'color',
559
+ 'column-rule',
560
+ 'column-rule-color',
561
+ 'content',
562
+ 'fill',
563
+ 'list-style-image',
564
+ 'mask',
565
+ 'mask-image',
566
+ 'mask-border',
567
+ 'mask-border-source',
568
+ 'outline',
569
+ 'outline-color',
570
+ 'scrollbar-color',
571
+ 'stop-color',
572
+ 'stroke',
573
+ 'text-decoration-color',
574
+ 'text-shadow',
575
+ 'text-emphasis',
576
+ 'text-emphasis-color',
577
+ '-webkit-border-after',
578
+ '-webkit-border-after-color',
579
+ '-webkit-border-before',
580
+ '-webkit-border-before-color',
581
+ '-webkit-border-end',
582
+ '-webkit-border-end-color',
583
+ '-webkit-border-start',
584
+ '-webkit-border-start-color',
585
+ '-webkit-box-reflect',
586
+ '-webkit-box-shadow',
587
+ '-webkit-column-rule-color',
588
+ '-webkit-mask',
589
+ '-webkit-mask-box-image',
590
+ '-webkit-mask-box-image-source',
591
+ '-webkit-mask-image',
592
+ '-webkit-tap-highlight-color',
593
+ '-webkit-text-emphasis',
594
+ '-webkit-text-emphasis-color',
595
+ '-webkit-text-fill-color',
596
+ '-webkit-text-stroke',
597
+ '-webkit-text-stroke-color',
598
+ // For SVG
599
+ 'flood-color',
600
+ 'lighting-color',
601
+ 'stop-color',
602
+ ]);
603
+
604
+ // In addition to `_colorAwareProperties`, the following properties contain CSS <angle> units.
605
+ const angleAwareProperties = new Set<string>([
606
+ '-webkit-border-image',
607
+ 'transform',
608
+ '-webkit-transform',
609
+ 'rotate',
610
+ 'filter',
611
+ '-webkit-filter',
612
+ 'backdrop-filter',
613
+ 'offset',
614
+ 'offset-rotate',
615
+ 'font-style',
616
+ ]);
617
+
618
+ const textEmphasisPosition = new Set([
619
+ 'over',
620
+ 'under',
621
+ 'over right', // Initial value
622
+ 'over left',
623
+ 'under right',
624
+ 'under left',
625
+ ]);
626
+
627
+ // https://drafts.csswg.org/css-text-decor/#text-emphasis-style-property
628
+ const textEmphasisStyle = new Set([
629
+ 'none', 'dot', 'circle', 'double-circle', 'triangle', 'sesame', 'filled', 'open', 'dot open', 'circle open',
630
+ 'double-circle open', 'triangle open', 'sesame open',
631
+ '"❤️"', // <string>
632
+ ]);
633
+
634
+ // manually maintained list of property #values to add into autocomplete list
635
+ const extraPropertyValues = new Map<string, Set<string>>([
636
+ ['background-repeat', new Set(['repeat', 'repeat-x', 'repeat-y', 'no-repeat', 'space', 'round'])],
637
+ ['content', new Set(['normal', 'close-quote', 'no-close-quote', 'no-open-quote', 'open-quote'])],
638
+ ['baseline-shift', new Set(['baseline'])],
639
+ ['max-height', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content'])],
640
+ ['color', new Set(['black'])],
641
+ ['background-color', new Set(['white'])],
642
+ ['box-shadow', new Set(['inset'])],
643
+ ['text-shadow', new Set(['0 0 black'])],
644
+ ['-webkit-writing-mode', new Set(['horizontal-tb', 'vertical-rl', 'vertical-lr'])],
645
+ ['writing-mode', new Set(['lr', 'rl', 'tb', 'lr-tb', 'rl-tb', 'tb-rl'])],
646
+ ['page-break-inside', new Set(['avoid'])],
647
+ ['cursor', new Set(['-webkit-zoom-in', '-webkit-zoom-out', '-webkit-grab', '-webkit-grabbing'])],
648
+ ['border-width', new Set(['medium', 'thick', 'thin'])],
649
+ ['border-style', new Set(['hidden', 'inset', 'groove', 'ridge', 'outset', 'dotted', 'dashed', 'solid', 'double'])],
650
+ ['size', new Set(['a3', 'a4', 'a5', 'b4', 'b5', 'landscape', 'ledger', 'legal', 'letter', 'portrait'])],
651
+ ['overflow', new Set(['hidden', 'visible', 'overlay', 'scroll', 'clip'])],
652
+ ['overscroll-behavior', new Set(['contain'])],
653
+ ['text-rendering', new Set(['optimizeSpeed', 'optimizeLegibility', 'geometricPrecision'])],
654
+ ['text-align', new Set(['-webkit-auto', '-webkit-match-parent'])],
655
+ ['clip-path', new Set(['circle', 'ellipse', 'inset', 'polygon', 'url'])],
656
+ ['color-interpolation', new Set(['sRGB', 'linearRGB'])],
657
+ ['word-wrap', new Set(['normal', 'break-word'])],
658
+ ['font-weight', new Set(['100', '200', '300', '400', '500', '600', '700', '800', '900'])],
659
+ ['text-emphasis', textEmphasisStyle],
660
+ ['-webkit-text-emphasis', textEmphasisStyle],
661
+ ['color-rendering', new Set(['optimizeSpeed', 'optimizeQuality'])],
662
+ ['-webkit-text-combine', new Set(['horizontal'])],
663
+ ['text-orientation', new Set(['sideways-right'])],
664
+ [
665
+ 'outline',
666
+ new Set(['inset', 'groove', 'ridge', 'outset', 'dotted', 'dashed', 'solid', 'double', 'medium', 'thick', 'thin']),
667
+ ],
668
+ [
669
+ 'font',
670
+ new Set([
671
+ 'caption',
672
+ 'icon',
673
+ 'menu',
674
+ 'message-box',
675
+ 'small-caption',
676
+ '-webkit-mini-control',
677
+ '-webkit-small-control',
678
+ '-webkit-control',
679
+ 'status-bar',
680
+ ]),
681
+ ],
682
+ ['dominant-baseline', new Set(['text-before-edge', 'text-after-edge', 'use-script', 'no-change', 'reset-size'])],
683
+ ['text-emphasis-position', textEmphasisPosition],
684
+ ['-webkit-text-emphasis-position', textEmphasisPosition],
685
+ ['alignment-baseline', new Set(['before-edge', 'after-edge', 'text-before-edge', 'text-after-edge', 'hanging'])],
686
+ ['page-break-before', new Set(['left', 'right', 'always', 'avoid'])],
687
+ ['border-image', new Set(['repeat', 'stretch', 'space', 'round'])],
688
+ [
689
+ 'text-decoration',
690
+ new Set(['blink', 'line-through', 'overline', 'underline', 'wavy', 'double', 'solid', 'dashed', 'dotted']),
691
+ ],
692
+ // List taken from https://drafts.csswg.org/css-fonts-4/#generic-font-families
693
+ [
694
+ 'font-family',
695
+ new Set([
696
+ 'serif',
697
+ 'sans-serif',
698
+ 'cursive',
699
+ 'fantasy',
700
+ 'monospace',
701
+ 'system-ui',
702
+ 'emoji',
703
+ 'math',
704
+ 'fangsong',
705
+ 'ui-serif',
706
+ 'ui-sans-serif',
707
+ 'ui-monospace',
708
+ 'ui-rounded',
709
+ '-webkit-body',
710
+ ]),
711
+ ],
712
+ ['zoom', new Set(['normal'])],
713
+ ['max-width', new Set(['min-content', 'max-content', '-webkit-fill-available', 'fit-content'])],
714
+ ['-webkit-font-smoothing', new Set(['antialiased', 'subpixel-antialiased'])],
715
+ [
716
+ 'border',
717
+ new Set([
718
+ 'hidden',
719
+ 'inset',
720
+ 'groove',
721
+ 'ridge',
722
+ 'outset',
723
+ 'dotted',
724
+ 'dashed',
725
+ 'solid',
726
+ 'double',
727
+ 'medium',
728
+ 'thick',
729
+ 'thin',
730
+ ]),
731
+ ],
732
+ [
733
+ 'font-variant',
734
+ new Set([
735
+ 'small-caps',
736
+ 'normal',
737
+ 'common-ligatures',
738
+ 'no-common-ligatures',
739
+ 'discretionary-ligatures',
740
+ 'no-discretionary-ligatures',
741
+ 'historical-ligatures',
742
+ 'no-historical-ligatures',
743
+ 'contextual',
744
+ 'no-contextual',
745
+ 'all-small-caps',
746
+ 'petite-caps',
747
+ 'all-petite-caps',
748
+ 'unicase',
749
+ 'titling-caps',
750
+ 'lining-nums',
751
+ 'oldstyle-nums',
752
+ 'proportional-nums',
753
+ 'tabular-nums',
754
+ 'diagonal-fractions',
755
+ 'stacked-fractions',
756
+ 'ordinal',
757
+ 'slashed-zero',
758
+ 'jis78',
759
+ 'jis83',
760
+ 'jis90',
761
+ 'jis04',
762
+ 'simplified',
763
+ 'traditional',
764
+ 'full-width',
765
+ 'proportional-width',
766
+ 'ruby',
767
+ ]),
768
+ ],
769
+ ['vertical-align', new Set(['top', 'bottom', '-webkit-baseline-middle'])],
770
+ ['page-break-after', new Set(['left', 'right', 'always', 'avoid'])],
771
+ ['text-emphasis-style', textEmphasisStyle],
772
+ ['-webkit-text-emphasis-style', textEmphasisStyle],
773
+ [
774
+ 'transform',
775
+ new Set([
776
+ 'scale', 'scaleX', 'scaleY', 'scale3d', 'rotate', 'rotateX', 'rotateY',
777
+ 'rotateZ', 'rotate3d', 'skew', 'skewX', 'skewY', 'translate', 'translateX',
778
+ 'translateY', 'translateZ', 'translate3d', 'matrix', 'matrix3d', 'perspective',
779
+ ]),
780
+ ],
781
+ [
782
+ 'align-content',
783
+ new Set([
784
+ 'normal',
785
+ 'baseline',
786
+ 'space-between',
787
+ 'space-around',
788
+ 'space-evenly',
789
+ 'stretch',
790
+ 'center',
791
+ 'start',
792
+ 'end',
793
+ 'flex-start',
794
+ 'flex-end',
795
+ ]),
796
+ ],
797
+ [
798
+ 'justify-content',
799
+ new Set([
800
+ 'normal',
801
+ 'space-between',
802
+ 'space-around',
803
+ 'space-evenly',
804
+ 'stretch',
805
+ 'center',
806
+ 'start',
807
+ 'end',
808
+ 'flex-start',
809
+ 'flex-end',
810
+ 'left',
811
+ 'right',
812
+ ]),
813
+ ],
814
+ [
815
+ 'place-content',
816
+ new Set([
817
+ 'normal',
818
+ 'space-between',
819
+ 'space-around',
820
+ 'space-evenly',
821
+ 'stretch',
822
+ 'center',
823
+ 'start',
824
+ 'end',
825
+ 'flex-start',
826
+ 'flex-end',
827
+ 'baseline',
828
+ ]),
829
+ ],
830
+ [
831
+ 'align-items',
832
+ new Set([
833
+ 'normal',
834
+ 'stretch',
835
+ 'baseline',
836
+ 'center',
837
+ 'start',
838
+ 'end',
839
+ 'self-start',
840
+ 'self-end',
841
+ 'flex-start',
842
+ 'flex-end',
843
+ 'anchor-center',
844
+ ]),
845
+ ],
846
+ [
847
+ 'justify-items',
848
+ new Set([
849
+ 'normal',
850
+ 'stretch',
851
+ 'baseline',
852
+ 'center',
853
+ 'start',
854
+ 'end',
855
+ 'self-start',
856
+ 'self-end',
857
+ 'flex-start',
858
+ 'flex-end',
859
+ 'left',
860
+ 'right',
861
+ 'legacy',
862
+ 'anchor-center',
863
+ ]),
864
+ ],
865
+ [
866
+ 'place-items',
867
+ new Set([
868
+ 'normal',
869
+ 'stretch',
870
+ 'baseline',
871
+ 'center',
872
+ 'start',
873
+ 'end',
874
+ 'self-start',
875
+ 'self-end',
876
+ 'flex-start',
877
+ 'flex-end',
878
+ 'anchor-center',
879
+ ]),
880
+ ],
881
+ [
882
+ 'align-self',
883
+ new Set([
884
+ 'normal',
885
+ 'stretch',
886
+ 'baseline',
887
+ 'center',
888
+ 'start',
889
+ 'end',
890
+ 'self-start',
891
+ 'self-end',
892
+ 'flex-start',
893
+ 'flex-end',
894
+ 'anchor-center',
895
+ ]),
896
+ ],
897
+ [
898
+ 'justify-self',
899
+ new Set([
900
+ 'normal',
901
+ 'stretch',
902
+ 'baseline',
903
+ 'center',
904
+ 'start',
905
+ 'end',
906
+ 'self-start',
907
+ 'self-end',
908
+ 'flex-start',
909
+ 'flex-end',
910
+ 'left',
911
+ 'right',
912
+ 'anchor-center',
913
+ ]),
914
+ ],
915
+ [
916
+ 'place-self',
917
+ new Set([
918
+ 'normal',
919
+ 'stretch',
920
+ 'baseline',
921
+ 'center',
922
+ 'start',
923
+ 'end',
924
+ 'self-start',
925
+ 'self-end',
926
+ 'flex-start',
927
+ 'flex-end',
928
+ 'anchor-center',
929
+ ]),
930
+ ],
931
+ ['perspective-origin', new Set(['left', 'center', 'right', 'top', 'bottom'])],
932
+ ['transform-origin', new Set(['left', 'center', 'right', 'top', 'bottom'])],
933
+ ['transition-timing-function', new Set(['cubic-bezier', 'steps'])],
934
+ ['animation-timing-function', new Set(['cubic-bezier', 'steps'])],
935
+ ['-webkit-backface-visibility', new Set(['visible', 'hidden'])],
936
+ ['-webkit-column-break-after', new Set(['always', 'avoid'])],
937
+ ['-webkit-column-break-before', new Set(['always', 'avoid'])],
938
+ ['-webkit-column-break-inside', new Set(['avoid'])],
939
+ ['-webkit-column-span', new Set(['all'])],
940
+ ['-webkit-column-gap', new Set(['normal'])],
941
+ [
942
+ 'filter',
943
+ new Set([
944
+ 'url',
945
+ 'blur',
946
+ 'brightness',
947
+ 'contrast',
948
+ 'drop-shadow',
949
+ 'grayscale',
950
+ 'hue-rotate',
951
+ 'invert',
952
+ 'opacity',
953
+ 'saturate',
954
+ 'sepia',
955
+ ]),
956
+ ],
957
+ [
958
+ 'backdrop-filter',
959
+ new Set([
960
+ 'url',
961
+ 'blur',
962
+ 'brightness',
963
+ 'contrast',
964
+ 'drop-shadow',
965
+ 'grayscale',
966
+ 'hue-rotate',
967
+ 'invert',
968
+ 'opacity',
969
+ 'saturate',
970
+ 'sepia',
971
+ ]),
972
+ ],
973
+ ['grid-template-columns', new Set(['min-content', 'max-content'])],
974
+ ['grid-template-rows', new Set(['min-content', 'max-content'])],
975
+ ['grid-auto-flow', new Set(['dense'])],
976
+ [
977
+ 'background',
978
+ new Set([
979
+ 'repeat',
980
+ 'repeat-x',
981
+ 'repeat-y',
982
+ 'no-repeat',
983
+ 'top',
984
+ 'bottom',
985
+ 'left',
986
+ 'right',
987
+ 'center',
988
+ 'fixed',
989
+ 'local',
990
+ 'scroll',
991
+ 'space',
992
+ 'round',
993
+ 'border-box',
994
+ 'content-box',
995
+ 'padding-box',
996
+ 'linear-gradient',
997
+ 'radial-gradient',
998
+ 'repeating-linear-gradient',
999
+ 'repeating-radial-gradient',
1000
+ 'url',
1001
+ ]),
1002
+ ],
1003
+ [
1004
+ 'background-image',
1005
+ new Set(['linear-gradient', 'radial-gradient', 'repeating-linear-gradient', 'repeating-radial-gradient', 'url']),
1006
+ ],
1007
+ ['background-position', new Set(['top', 'bottom', 'left', 'right', 'center'])],
1008
+ ['background-position-x', new Set(['left', 'right', 'center'])],
1009
+ ['background-position-y', new Set(['top', 'bottom', 'center'])],
1010
+ ['background-repeat-x', new Set(['repeat', 'no-repeat'])],
1011
+ ['background-repeat-y', new Set(['repeat', 'no-repeat'])],
1012
+ [
1013
+ 'border-bottom',
1014
+ new Set([
1015
+ 'hidden',
1016
+ 'inset',
1017
+ 'groove',
1018
+ 'outset',
1019
+ 'ridge',
1020
+ 'dotted',
1021
+ 'dashed',
1022
+ 'solid',
1023
+ 'double',
1024
+ 'medium',
1025
+ 'thick',
1026
+ 'thin',
1027
+ ]),
1028
+ ],
1029
+ [
1030
+ 'border-left',
1031
+ new Set([
1032
+ 'hidden',
1033
+ 'inset',
1034
+ 'groove',
1035
+ 'outset',
1036
+ 'ridge',
1037
+ 'dotted',
1038
+ 'dashed',
1039
+ 'solid',
1040
+ 'double',
1041
+ 'medium',
1042
+ 'thick',
1043
+ 'thin',
1044
+ ]),
1045
+ ],
1046
+ [
1047
+ 'border-right',
1048
+ new Set([
1049
+ 'hidden',
1050
+ 'inset',
1051
+ 'groove',
1052
+ 'outset',
1053
+ 'ridge',
1054
+ 'dotted',
1055
+ 'dashed',
1056
+ 'solid',
1057
+ 'double',
1058
+ 'medium',
1059
+ 'thick',
1060
+ 'thin',
1061
+ ]),
1062
+ ],
1063
+ [
1064
+ 'border-top',
1065
+ new Set([
1066
+ 'hidden',
1067
+ 'inset',
1068
+ 'groove',
1069
+ 'outset',
1070
+ 'ridge',
1071
+ 'dotted',
1072
+ 'dashed',
1073
+ 'solid',
1074
+ 'double',
1075
+ 'medium',
1076
+ 'thick',
1077
+ 'thin',
1078
+ ]),
1079
+ ],
1080
+ ['buffered-rendering', new Set(['static', 'dynamic'])],
1081
+ ['color-interpolation-filters', new Set(['srgb', 'linearrgb'])],
1082
+ [
1083
+ 'column-rule',
1084
+ new Set([
1085
+ 'hidden',
1086
+ 'inset',
1087
+ 'groove',
1088
+ 'outset',
1089
+ 'ridge',
1090
+ 'dotted',
1091
+ 'dashed',
1092
+ 'solid',
1093
+ 'double',
1094
+ 'medium',
1095
+ 'thick',
1096
+ 'thin',
1097
+ ]),
1098
+ ],
1099
+ ['flex-flow', new Set(['nowrap', 'row', 'row-reverse', 'column', 'column-reverse', 'wrap', 'wrap-reverse'])],
1100
+ ['height', new Set(['-webkit-fill-available'])],
1101
+ ['inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1102
+ [
1103
+ 'list-style',
1104
+ new Set([
1105
+ 'outside',
1106
+ 'inside',
1107
+ 'disc',
1108
+ 'circle',
1109
+ 'square',
1110
+ 'decimal',
1111
+ 'decimal-leading-zero',
1112
+ 'arabic-indic',
1113
+ 'bengali',
1114
+ 'cambodian',
1115
+ 'khmer',
1116
+ 'devanagari',
1117
+ 'gujarati',
1118
+ 'gurmukhi',
1119
+ 'kannada',
1120
+ 'lao',
1121
+ 'malayalam',
1122
+ 'mongolian',
1123
+ 'myanmar',
1124
+ 'oriya',
1125
+ 'persian',
1126
+ 'urdu',
1127
+ 'telugu',
1128
+ 'tibetan',
1129
+ 'thai',
1130
+ 'lower-roman',
1131
+ 'upper-roman',
1132
+ 'lower-greek',
1133
+ 'lower-alpha',
1134
+ 'lower-latin',
1135
+ 'upper-alpha',
1136
+ 'upper-latin',
1137
+ 'cjk-earthly-branch',
1138
+ 'cjk-heavenly-stem',
1139
+ 'ethiopic-halehame',
1140
+ 'ethiopic-halehame-am',
1141
+ 'ethiopic-halehame-ti-er',
1142
+ 'ethiopic-halehame-ti-et',
1143
+ 'hangul',
1144
+ 'hangul-consonant',
1145
+ 'korean-hangul-formal',
1146
+ 'korean-hanja-formal',
1147
+ 'korean-hanja-informal',
1148
+ 'hebrew',
1149
+ 'armenian',
1150
+ 'lower-armenian',
1151
+ 'upper-armenian',
1152
+ 'georgian',
1153
+ 'cjk-ideographic',
1154
+ 'simp-chinese-formal',
1155
+ 'simp-chinese-informal',
1156
+ 'trad-chinese-formal',
1157
+ 'trad-chinese-informal',
1158
+ 'hiragana',
1159
+ 'katakana',
1160
+ 'hiragana-iroha',
1161
+ 'katakana-iroha',
1162
+ ]),
1163
+ ],
1164
+ ['max-block-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1165
+ ['max-inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1166
+ ['min-block-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1167
+ ['min-height', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1168
+ ['min-inline-size', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1169
+ ['min-width', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1170
+ ['object-position', new Set(['top', 'bottom', 'left', 'right', 'center'])],
1171
+ ['shape-outside', new Set(['border-box', 'content-box', 'padding-box', 'margin-box'])],
1172
+ [
1173
+ '-webkit-appearance',
1174
+ new Set([
1175
+ 'checkbox',
1176
+ 'radio',
1177
+ 'push-button',
1178
+ 'square-button',
1179
+ 'button',
1180
+ 'inner-spin-button',
1181
+ 'listbox',
1182
+ 'media-slider',
1183
+ 'media-sliderthumb',
1184
+ 'media-volume-slider',
1185
+ 'media-volume-sliderthumb',
1186
+ 'menulist',
1187
+ 'menulist-button',
1188
+ 'meter',
1189
+ 'progress-bar',
1190
+ 'slider-horizontal',
1191
+ 'slider-vertical',
1192
+ 'sliderthumb-horizontal',
1193
+ 'sliderthumb-vertical',
1194
+ 'searchfield',
1195
+ 'searchfield-cancel-button',
1196
+ 'textfield',
1197
+ 'textarea',
1198
+ ]),
1199
+ ],
1200
+ [
1201
+ '-webkit-border-after',
1202
+ new Set([
1203
+ 'hidden',
1204
+ 'inset',
1205
+ 'groove',
1206
+ 'outset',
1207
+ 'ridge',
1208
+ 'dotted',
1209
+ 'dashed',
1210
+ 'solid',
1211
+ 'double',
1212
+ 'medium',
1213
+ 'thick',
1214
+ 'thin',
1215
+ ]),
1216
+ ],
1217
+ [
1218
+ '-webkit-border-after-style',
1219
+ new Set(['hidden', 'inset', 'groove', 'outset', 'ridge', 'dotted', 'dashed', 'solid', 'double']),
1220
+ ],
1221
+ ['-webkit-border-after-width', new Set(['medium', 'thick', 'thin'])],
1222
+ [
1223
+ '-webkit-border-before',
1224
+ new Set([
1225
+ 'hidden',
1226
+ 'inset',
1227
+ 'groove',
1228
+ 'outset',
1229
+ 'ridge',
1230
+ 'dotted',
1231
+ 'dashed',
1232
+ 'solid',
1233
+ 'double',
1234
+ 'medium',
1235
+ 'thick',
1236
+ 'thin',
1237
+ ]),
1238
+ ],
1239
+ [
1240
+ '-webkit-border-before-style',
1241
+ new Set(['hidden', 'inset', 'groove', 'outset', 'ridge', 'dotted', 'dashed', 'solid', 'double']),
1242
+ ],
1243
+ ['-webkit-border-before-width', new Set(['medium', 'thick', 'thin'])],
1244
+ [
1245
+ '-webkit-border-end',
1246
+ new Set([
1247
+ 'hidden',
1248
+ 'inset',
1249
+ 'groove',
1250
+ 'outset',
1251
+ 'ridge',
1252
+ 'dotted',
1253
+ 'dashed',
1254
+ 'solid',
1255
+ 'double',
1256
+ 'medium',
1257
+ 'thick',
1258
+ 'thin',
1259
+ ]),
1260
+ ],
1261
+ [
1262
+ '-webkit-border-end-style',
1263
+ new Set(['hidden', 'inset', 'groove', 'outset', 'ridge', 'dotted', 'dashed', 'solid', 'double']),
1264
+ ],
1265
+ ['-webkit-border-end-width', new Set(['medium', 'thick', 'thin'])],
1266
+ [
1267
+ '-webkit-border-start',
1268
+ new Set([
1269
+ 'hidden',
1270
+ 'inset',
1271
+ 'groove',
1272
+ 'outset',
1273
+ 'ridge',
1274
+ 'dotted',
1275
+ 'dashed',
1276
+ 'solid',
1277
+ 'double',
1278
+ 'medium',
1279
+ 'thick',
1280
+ 'thin',
1281
+ ]),
1282
+ ],
1283
+ [
1284
+ '-webkit-border-start-style',
1285
+ new Set(['hidden', 'inset', 'groove', 'outset', 'ridge', 'dotted', 'dashed', 'solid', 'double']),
1286
+ ],
1287
+ ['-webkit-border-start-width', new Set(['medium', 'thick', 'thin'])],
1288
+ ['-webkit-logical-height', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1289
+ ['-webkit-logical-width', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1290
+ ['-webkit-mask-box-image', new Set(['repeat', 'stretch', 'space', 'round'])],
1291
+ ['-webkit-mask-box-image-repeat', new Set(['repeat', 'stretch', 'space', 'round'])],
1292
+ ['-webkit-mask-clip', new Set(['text', 'border', 'border-box', 'content', 'content-box', 'padding', 'padding-box'])],
1293
+ [
1294
+ '-webkit-mask-composite',
1295
+ new Set([
1296
+ 'clear',
1297
+ 'copy',
1298
+ 'source-over',
1299
+ 'source-in',
1300
+ 'source-out',
1301
+ 'source-atop',
1302
+ 'destination-over',
1303
+ 'destination-in',
1304
+ 'destination-out',
1305
+ 'destination-atop',
1306
+ 'xor',
1307
+ 'plus-lighter',
1308
+ ]),
1309
+ ],
1310
+ [
1311
+ '-webkit-mask-image',
1312
+ new Set(['linear-gradient', 'radial-gradient', 'repeating-linear-gradient', 'repeating-radial-gradient', 'url']),
1313
+ ],
1314
+ ['-webkit-mask-origin', new Set(['border', 'border-box', 'content', 'content-box', 'padding', 'padding-box'])],
1315
+ ['-webkit-mask-position', new Set(['top', 'bottom', 'left', 'right', 'center'])],
1316
+ ['-webkit-mask-position-x', new Set(['left', 'right', 'center'])],
1317
+ ['-webkit-mask-position-y', new Set(['top', 'bottom', 'center'])],
1318
+ ['-webkit-mask-repeat', new Set(['repeat', 'repeat-x', 'repeat-y', 'no-repeat', 'space', 'round'])],
1319
+ ['-webkit-mask-size', new Set(['contain', 'cover'])],
1320
+ ['-webkit-max-logical-height', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1321
+ ['-webkit-max-logical-width', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1322
+ ['-webkit-min-logical-height', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1323
+ ['-webkit-min-logical-width', new Set(['-webkit-fill-available', 'min-content', 'max-content', 'fit-content'])],
1324
+ ['-webkit-perspective-origin-x', new Set(['left', 'right', 'center'])],
1325
+ ['-webkit-perspective-origin-y', new Set(['top', 'bottom', 'center'])],
1326
+ ['-webkit-text-decorations-in-effect', new Set(['blink', 'line-through', 'overline', 'underline'])],
1327
+ ['-webkit-text-stroke', new Set(['medium', 'thick', 'thin'])],
1328
+ ['-webkit-text-stroke-width', new Set(['medium', 'thick', 'thin'])],
1329
+ ['-webkit-transform-origin-x', new Set(['left', 'right', 'center'])],
1330
+ ['-webkit-transform-origin-y', new Set(['top', 'bottom', 'center'])],
1331
+ ['width', new Set(['-webkit-fill-available'])],
1332
+ ['contain-intrinsic-width', new Set(['auto none', 'auto 100px'])],
1333
+ ['contain-intrinsic-height', new Set(['auto none', 'auto 100px'])],
1334
+ ['contain-intrinsic-size', new Set(['auto none', 'auto 100px'])],
1335
+ ['contain-intrinsic-inline-size', new Set(['auto none', 'auto 100px'])],
1336
+ ['contain-intrinsic-block-size', new Set(['auto none', 'auto 100px'])],
1337
+ // Due to some compatibility issues[1] with Chrome's implementation[2],
1338
+ // only a few legacy values are added here.
1339
+ // [1]: https://github.com/w3c/csswg-drafts/issues/9102#issuecomment-1807453214
1340
+ // [2]: https://chromium-review.googlesource.com/c/chromium/src/+/4232738
1341
+ [
1342
+ 'white-space',
1343
+ new Set([
1344
+ 'normal', // equal to: `collapse wrap`
1345
+ 'pre', // equal to: `preserve nowrap`
1346
+ 'pre-wrap', // equal to: `preserve wrap`
1347
+ 'pre-line', // equal to: `preserve-breaks wrap`
1348
+ 'nowrap', // equal to: `collapse nowrap`
1349
+ 'break-spaces', // equal to: `break-spaces wrap`, Chrome 76, crbug.com/767634#c28
1350
+ ]),
1351
+ ],
1352
+ // https://drafts.csswg.org/css-inline-3/#text-box-edge
1353
+ // Now we're going to allow the following rule:
1354
+ // auto | [ text | cap | ex ] [ text | alphabetic ]?
1355
+ // ideographic and ideographic-ink are not implemented yet.
1356
+ // We don't add values like `cap text` because that is equivalent to `text`.
1357
+ [
1358
+ 'text-box-edge',
1359
+ new Set([
1360
+ 'auto',
1361
+ 'text',
1362
+ 'cap',
1363
+ 'ex',
1364
+ 'text alphabetic',
1365
+ 'cap alphabetic',
1366
+ 'ex alphabetic',
1367
+ ]),
1368
+ ],
1369
+ [
1370
+ 'corner-shape',
1371
+ new Set([
1372
+ 'round',
1373
+ 'scoop',
1374
+ 'bevel',
1375
+ 'notch',
1376
+ 'square',
1377
+ 'squircle',
1378
+ 'superellipse(0.5)',
1379
+ 'superellipse(infinity)',
1380
+ ]),
1381
+ ],
1382
+ ]);
1383
+
1384
+ // Weight of CSS properties based on their usage from https://www.chromestatus.com/metrics/css/popularity
1385
+ const Weight = new Map([
1386
+ ['align-content', 57],
1387
+ ['align-items', 129],
1388
+ ['align-self', 55],
1389
+ ['animation', 175],
1390
+ ['animation-delay', 114],
1391
+ ['animation-direction', 113],
1392
+ ['animation-duration', 137],
1393
+ ['animation-fill-mode', 132],
1394
+ ['animation-iteration-count', 124],
1395
+ ['animation-name', 139],
1396
+ ['animation-play-state', 104],
1397
+ ['animation-timing-function', 141],
1398
+ ['backface-visibility', 123],
1399
+ ['background', 260],
1400
+ ['background-attachment', 119],
1401
+ ['background-clip', 165],
1402
+ ['background-color', 259],
1403
+ ['background-image', 246],
1404
+ ['background-origin', 107],
1405
+ ['background-position', 237],
1406
+ ['background-position-x', 108],
1407
+ ['background-position-y', 93],
1408
+ ['background-repeat', 234],
1409
+ ['background-size', 203],
1410
+ ['border', 263],
1411
+ ['border-bottom', 233],
1412
+ ['border-bottom-color', 190],
1413
+ ['border-bottom-left-radius', 186],
1414
+ ['border-bottom-right-radius', 185],
1415
+ ['border-bottom-style', 150],
1416
+ ['border-bottom-width', 179],
1417
+ ['border-collapse', 209],
1418
+ ['border-color', 226],
1419
+ ['border-image', 89],
1420
+ ['border-image-outset', 50],
1421
+ ['border-image-repeat', 49],
1422
+ ['border-image-slice', 58],
1423
+ ['border-image-source', 32],
1424
+ ['border-image-width', 52],
1425
+ ['border-left', 221],
1426
+ ['border-left-color', 174],
1427
+ ['border-left-style', 142],
1428
+ ['border-left-width', 172],
1429
+ ['border-radius', 224],
1430
+ ['border-right', 223],
1431
+ ['border-right-color', 182],
1432
+ ['border-right-style', 130],
1433
+ ['border-right-width', 178],
1434
+ ['border-spacing', 198],
1435
+ ['border-style', 206],
1436
+ ['border-top', 231],
1437
+ ['border-top-color', 192],
1438
+ ['border-top-left-radius', 187],
1439
+ ['border-top-right-radius', 189],
1440
+ ['border-top-style', 152],
1441
+ ['border-top-width', 180],
1442
+ ['border-width', 214],
1443
+ ['bottom', 227],
1444
+ ['box-shadow', 213],
1445
+ ['box-sizing', 216],
1446
+ ['caption-side', 96],
1447
+ ['clear', 229],
1448
+ ['clip', 173],
1449
+ ['clip-rule', 5],
1450
+ ['color', 256],
1451
+ ['content', 219],
1452
+ ['counter-increment', 111],
1453
+ ['counter-reset', 110],
1454
+ ['cursor', 250],
1455
+ ['direction', 176],
1456
+ ['display', 262],
1457
+ ['empty-cells', 99],
1458
+ ['fill', 140],
1459
+ ['fill-opacity', 82],
1460
+ ['fill-rule', 22],
1461
+ ['filter', 160],
1462
+ ['flex', 133],
1463
+ ['flex-basis', 66],
1464
+ ['flex-direction', 85],
1465
+ ['flex-flow', 94],
1466
+ ['flex-grow', 112],
1467
+ ['flex-shrink', 61],
1468
+ ['flex-wrap', 68],
1469
+ ['float', 252],
1470
+ ['font', 211],
1471
+ ['font-family', 254],
1472
+ ['font-kerning', 18],
1473
+ ['font-size', 264],
1474
+ ['font-stretch', 77],
1475
+ ['font-style', 220],
1476
+ ['font-variant', 161],
1477
+ ['font-weight', 257],
1478
+ ['height', 266],
1479
+ ['image-rendering', 90],
1480
+ ['justify-content', 127],
1481
+ ['left', 248],
1482
+ ['letter-spacing', 188],
1483
+ ['line-height', 244],
1484
+ ['list-style', 215],
1485
+ ['list-style-image', 145],
1486
+ ['list-style-position', 149],
1487
+ ['list-style-type', 199],
1488
+ ['margin', 267],
1489
+ ['margin-bottom', 241],
1490
+ ['margin-left', 243],
1491
+ ['margin-right', 238],
1492
+ ['margin-top', 253],
1493
+ ['mask', 20],
1494
+ ['max-height', 205],
1495
+ ['max-width', 225],
1496
+ ['min-height', 217],
1497
+ ['min-width', 218],
1498
+ ['object-fit', 33],
1499
+ ['opacity', 251],
1500
+ ['order', 117],
1501
+ ['orphans', 146],
1502
+ ['outline', 222],
1503
+ ['outline-color', 153],
1504
+ ['outline-offset', 147],
1505
+ ['outline-style', 151],
1506
+ ['outline-width', 148],
1507
+ ['overflow', 255],
1508
+ ['overflow-wrap', 105],
1509
+ ['overflow-x', 184],
1510
+ ['overflow-y', 196],
1511
+ ['padding', 265],
1512
+ ['padding-bottom', 230],
1513
+ ['padding-left', 235],
1514
+ ['padding-right', 232],
1515
+ ['padding-top', 240],
1516
+ ['page', 8],
1517
+ ['page-break-after', 120],
1518
+ ['page-break-before', 69],
1519
+ ['page-break-inside', 121],
1520
+ ['perspective', 92],
1521
+ ['perspective-origin', 103],
1522
+ ['pointer-events', 183],
1523
+ ['position', 261],
1524
+ ['quotes', 158],
1525
+ ['resize', 168],
1526
+ ['right', 245],
1527
+ ['shape-rendering', 38],
1528
+ ['size', 64],
1529
+ ['speak', 118],
1530
+ ['src', 170],
1531
+ ['stop-color', 42],
1532
+ ['stop-opacity', 31],
1533
+ ['stroke', 98],
1534
+ ['stroke-dasharray', 36],
1535
+ ['stroke-dashoffset', 3],
1536
+ ['stroke-linecap', 30],
1537
+ ['stroke-linejoin', 21],
1538
+ ['stroke-miterlimit', 12],
1539
+ ['stroke-opacity', 34],
1540
+ ['stroke-width', 87],
1541
+ ['table-layout', 171],
1542
+ ['tab-size', 46],
1543
+ ['text-align', 260],
1544
+ ['text-anchor', 35],
1545
+ ['text-decoration', 247],
1546
+ ['text-indent', 207],
1547
+ ['text-overflow', 204],
1548
+ ['text-rendering', 155],
1549
+ ['text-shadow', 208],
1550
+ ['text-transform', 202],
1551
+ ['top', 258],
1552
+ ['touch-action', 80],
1553
+ ['transform', 181],
1554
+ ['transform-origin', 162],
1555
+ ['transform-style', 86],
1556
+ ['transition', 193],
1557
+ ['transition-delay', 134],
1558
+ ['transition-duration', 135],
1559
+ ['transition-property', 131],
1560
+ ['transition-timing-function', 122],
1561
+ ['unicode-bidi', 156],
1562
+ ['unicode-range', 136],
1563
+ ['vertical-align', 236],
1564
+ ['visibility', 242],
1565
+ ['-webkit-appearance', 191],
1566
+ ['-webkit-backface-visibility', 154],
1567
+ ['-webkit-background-clip', 164],
1568
+ ['-webkit-background-origin', 40],
1569
+ ['-webkit-background-size', 163],
1570
+ ['-webkit-border-end', 9],
1571
+ ['-webkit-border-horizontal-spacing', 81],
1572
+ ['-webkit-border-image', 75],
1573
+ ['-webkit-border-radius', 212],
1574
+ ['-webkit-border-start', 10],
1575
+ ['-webkit-border-start-color', 16],
1576
+ ['-webkit-border-start-width', 13],
1577
+ ['-webkit-border-vertical-spacing', 43],
1578
+ ['-webkit-box-align', 101],
1579
+ ['-webkit-box-direction', 51],
1580
+ ['-webkit-box-flex', 128],
1581
+ ['-webkit-box-ordinal-group', 91],
1582
+ ['-webkit-box-orient', 144],
1583
+ ['-webkit-box-pack', 106],
1584
+ ['-webkit-box-reflect', 39],
1585
+ ['-webkit-box-shadow', 210],
1586
+ ['-webkit-column-break-inside', 60],
1587
+ ['-webkit-column-count', 84],
1588
+ ['-webkit-column-gap', 76],
1589
+ ['-webkit-column-rule', 25],
1590
+ ['-webkit-column-rule-color', 23],
1591
+ ['-webkit-columns', 44],
1592
+ ['-webkit-column-span', 29],
1593
+ ['-webkit-column-width', 47],
1594
+ ['-webkit-filter', 159],
1595
+ ['-webkit-font-feature-settings', 59],
1596
+ ['-webkit-font-smoothing', 177],
1597
+ ['-webkit-line-break', 45],
1598
+ ['-webkit-line-clamp', 126],
1599
+ ['-webkit-margin-after', 67],
1600
+ ['-webkit-margin-before', 70],
1601
+ ['-webkit-margin-collapse', 14],
1602
+ ['-webkit-margin-end', 65],
1603
+ ['-webkit-margin-start', 100],
1604
+ ['-webkit-mask', 19],
1605
+ ['-webkit-mask-box-image', 72],
1606
+ ['-webkit-mask-image', 88],
1607
+ ['-webkit-mask-position', 54],
1608
+ ['-webkit-mask-repeat', 63],
1609
+ ['-webkit-mask-size', 79],
1610
+ ['-webkit-padding-after', 15],
1611
+ ['-webkit-padding-before', 28],
1612
+ ['-webkit-padding-end', 48],
1613
+ ['-webkit-padding-start', 73],
1614
+ ['-webkit-print-color-adjust', 83],
1615
+ ['-webkit-rtl-ordering', 7],
1616
+ ['-webkit-tap-highlight-color', 169],
1617
+ ['-webkit-text-emphasis-color', 11],
1618
+ ['-webkit-text-fill-color', 71],
1619
+ ['-webkit-text-security', 17],
1620
+ ['-webkit-text-stroke', 56],
1621
+ ['-webkit-text-stroke-color', 37],
1622
+ ['-webkit-text-stroke-width', 53],
1623
+ ['-webkit-user-drag', 95],
1624
+ ['-webkit-user-modify', 62],
1625
+ ['-webkit-user-select', 194],
1626
+ ['-webkit-writing-mode', 4],
1627
+ ['white-space', 228],
1628
+ ['widows', 115],
1629
+ ['width', 268],
1630
+ ['will-change', 74],
1631
+ ['word-break', 166],
1632
+ ['word-spacing', 157],
1633
+ ['word-wrap', 197],
1634
+ ['writing-mode', 41],
1635
+ ['z-index', 239],
1636
+ ['zoom', 200],
1637
+ ]);
1638
+
1639
+ // Common keywords to CSS properties
1640
+ const CommonKeywords = ['auto', 'none'];
1641
+
1642
+ export interface CSSPropertyDefinition {
1643
+ name: string;
1644
+ longhands: string[]|null;
1645
+ inherited: boolean|null;
1646
+ svg: boolean|null;
1647
+ }