github.com/evanw/esbuild@v0.21.4/internal/css_ast/css_decl_table.go (about)

     1  package css_ast
     2  
     3  import (
     4  	"strings"
     5  	"sync"
     6  
     7  	"github.com/evanw/esbuild/internal/helpers"
     8  )
     9  
    10  type D uint16
    11  
    12  const (
    13  	DUnknown D = iota
    14  	DAlignContent
    15  	DAlignItems
    16  	DAlignSelf
    17  	DAlignmentBaseline
    18  	DAll
    19  	DAnimation
    20  	DAnimationDelay
    21  	DAnimationDirection
    22  	DAnimationDuration
    23  	DAnimationFillMode
    24  	DAnimationIterationCount
    25  	DAnimationName
    26  	DAnimationPlayState
    27  	DAnimationTimingFunction
    28  	DAppearance
    29  	DBackdropFilter
    30  	DBackfaceVisibility
    31  	DBackground
    32  	DBackgroundAttachment
    33  	DBackgroundClip
    34  	DBackgroundColor
    35  	DBackgroundImage
    36  	DBackgroundOrigin
    37  	DBackgroundPosition
    38  	DBackgroundPositionX
    39  	DBackgroundPositionY
    40  	DBackgroundRepeat
    41  	DBackgroundSize
    42  	DBaselineShift
    43  	DBlockSize
    44  	DBorder
    45  	DBorderBlockEnd
    46  	DBorderBlockEndColor
    47  	DBorderBlockEndStyle
    48  	DBorderBlockEndWidth
    49  	DBorderBlockStart
    50  	DBorderBlockStartColor
    51  	DBorderBlockStartStyle
    52  	DBorderBlockStartWidth
    53  	DBorderBottom
    54  	DBorderBottomColor
    55  	DBorderBottomLeftRadius
    56  	DBorderBottomRightRadius
    57  	DBorderBottomStyle
    58  	DBorderBottomWidth
    59  	DBorderCollapse
    60  	DBorderColor
    61  	DBorderImage
    62  	DBorderImageOutset
    63  	DBorderImageRepeat
    64  	DBorderImageSlice
    65  	DBorderImageSource
    66  	DBorderImageWidth
    67  	DBorderInlineEnd
    68  	DBorderInlineEndColor
    69  	DBorderInlineEndStyle
    70  	DBorderInlineEndWidth
    71  	DBorderInlineStart
    72  	DBorderInlineStartColor
    73  	DBorderInlineStartStyle
    74  	DBorderInlineStartWidth
    75  	DBorderLeft
    76  	DBorderLeftColor
    77  	DBorderLeftStyle
    78  	DBorderLeftWidth
    79  	DBorderRadius
    80  	DBorderRight
    81  	DBorderRightColor
    82  	DBorderRightStyle
    83  	DBorderRightWidth
    84  	DBorderSpacing
    85  	DBorderStyle
    86  	DBorderTop
    87  	DBorderTopColor
    88  	DBorderTopLeftRadius
    89  	DBorderTopRightRadius
    90  	DBorderTopStyle
    91  	DBorderTopWidth
    92  	DBorderWidth
    93  	DBottom
    94  	DBoxDecorationBreak
    95  	DBoxShadow
    96  	DBoxSizing
    97  	DBreakAfter
    98  	DBreakBefore
    99  	DBreakInside
   100  	DCaptionSide
   101  	DCaretColor
   102  	DClear
   103  	DClip
   104  	DClipPath
   105  	DClipRule
   106  	DColor
   107  	DColorInterpolation
   108  	DColorInterpolationFilters
   109  	DColumnCount
   110  	DColumnFill
   111  	DColumnGap
   112  	DColumnRule
   113  	DColumnRuleColor
   114  	DColumnRuleStyle
   115  	DColumnRuleWidth
   116  	DColumnSpan
   117  	DColumnWidth
   118  	DColumns
   119  	DComposes
   120  	DContainer
   121  	DContainerName
   122  	DContainerType
   123  	DContent
   124  	DCounterIncrement
   125  	DCounterReset
   126  	DCssFloat
   127  	DCssText
   128  	DCursor
   129  	DDirection
   130  	DDisplay
   131  	DDominantBaseline
   132  	DEmptyCells
   133  	DFill
   134  	DFillOpacity
   135  	DFillRule
   136  	DFilter
   137  	DFlex
   138  	DFlexBasis
   139  	DFlexDirection
   140  	DFlexFlow
   141  	DFlexGrow
   142  	DFlexShrink
   143  	DFlexWrap
   144  	DFloat
   145  	DFloodColor
   146  	DFloodOpacity
   147  	DFont
   148  	DFontFamily
   149  	DFontFeatureSettings
   150  	DFontKerning
   151  	DFontSize
   152  	DFontSizeAdjust
   153  	DFontStretch
   154  	DFontStyle
   155  	DFontSynthesis
   156  	DFontVariant
   157  	DFontVariantCaps
   158  	DFontVariantEastAsian
   159  	DFontVariantLigatures
   160  	DFontVariantNumeric
   161  	DFontVariantPosition
   162  	DFontWeight
   163  	DGap
   164  	DGlyphOrientationVertical
   165  	DGrid
   166  	DGridArea
   167  	DGridAutoColumns
   168  	DGridAutoFlow
   169  	DGridAutoRows
   170  	DGridColumn
   171  	DGridColumnEnd
   172  	DGridColumnGap
   173  	DGridColumnStart
   174  	DGridGap
   175  	DGridRow
   176  	DGridRowEnd
   177  	DGridRowGap
   178  	DGridRowStart
   179  	DGridTemplate
   180  	DGridTemplateAreas
   181  	DGridTemplateColumns
   182  	DGridTemplateRows
   183  	DHeight
   184  	DHyphens
   185  	DImageOrientation
   186  	DImageRendering
   187  	DInitialLetter
   188  	DInlineSize
   189  	DInset
   190  	DJustifyContent
   191  	DJustifyItems
   192  	DJustifySelf
   193  	DLeft
   194  	DLetterSpacing
   195  	DLightingColor
   196  	DLineBreak
   197  	DLineHeight
   198  	DListStyle
   199  	DListStyleImage
   200  	DListStylePosition
   201  	DListStyleType
   202  	DMargin
   203  	DMarginBlockEnd
   204  	DMarginBlockStart
   205  	DMarginBottom
   206  	DMarginInlineEnd
   207  	DMarginInlineStart
   208  	DMarginLeft
   209  	DMarginRight
   210  	DMarginTop
   211  	DMarker
   212  	DMarkerEnd
   213  	DMarkerMid
   214  	DMarkerStart
   215  	DMask
   216  	DMaskComposite
   217  	DMaskImage
   218  	DMaskOrigin
   219  	DMaskPosition
   220  	DMaskRepeat
   221  	DMaskSize
   222  	DMaskType
   223  	DMaxBlockSize
   224  	DMaxHeight
   225  	DMaxInlineSize
   226  	DMaxWidth
   227  	DMinBlockSize
   228  	DMinHeight
   229  	DMinInlineSize
   230  	DMinWidth
   231  	DObjectFit
   232  	DObjectPosition
   233  	DOpacity
   234  	DOrder
   235  	DOrphans
   236  	DOutline
   237  	DOutlineColor
   238  	DOutlineOffset
   239  	DOutlineStyle
   240  	DOutlineWidth
   241  	DOverflow
   242  	DOverflowAnchor
   243  	DOverflowWrap
   244  	DOverflowX
   245  	DOverflowY
   246  	DOverscrollBehavior
   247  	DOverscrollBehaviorBlock
   248  	DOverscrollBehaviorInline
   249  	DOverscrollBehaviorX
   250  	DOverscrollBehaviorY
   251  	DPadding
   252  	DPaddingBlockEnd
   253  	DPaddingBlockStart
   254  	DPaddingBottom
   255  	DPaddingInlineEnd
   256  	DPaddingInlineStart
   257  	DPaddingLeft
   258  	DPaddingRight
   259  	DPaddingTop
   260  	DPageBreakAfter
   261  	DPageBreakBefore
   262  	DPageBreakInside
   263  	DPaintOrder
   264  	DPerspective
   265  	DPerspectiveOrigin
   266  	DPlaceContent
   267  	DPlaceItems
   268  	DPlaceSelf
   269  	DPointerEvents
   270  	DPosition
   271  	DPrintColorAdjust
   272  	DQuotes
   273  	DResize
   274  	DRight
   275  	DRotate
   276  	DRowGap
   277  	DRubyAlign
   278  	DRubyPosition
   279  	DScale
   280  	DScrollBehavior
   281  	DShapeRendering
   282  	DStopColor
   283  	DStopOpacity
   284  	DStroke
   285  	DStrokeDasharray
   286  	DStrokeDashoffset
   287  	DStrokeLinecap
   288  	DStrokeLinejoin
   289  	DStrokeMiterlimit
   290  	DStrokeOpacity
   291  	DStrokeWidth
   292  	DTabSize
   293  	DTableLayout
   294  	DTextAlign
   295  	DTextAlignLast
   296  	DTextAnchor
   297  	DTextCombineUpright
   298  	DTextDecoration
   299  	DTextDecorationColor
   300  	DTextDecorationLine
   301  	DTextDecorationSkip
   302  	DTextDecorationStyle
   303  	DTextEmphasis
   304  	DTextEmphasisColor
   305  	DTextEmphasisPosition
   306  	DTextEmphasisStyle
   307  	DTextIndent
   308  	DTextJustify
   309  	DTextOrientation
   310  	DTextOverflow
   311  	DTextRendering
   312  	DTextShadow
   313  	DTextSizeAdjust
   314  	DTextTransform
   315  	DTextUnderlinePosition
   316  	DTop
   317  	DTouchAction
   318  	DTransform
   319  	DTransformBox
   320  	DTransformOrigin
   321  	DTransformStyle
   322  	DTransition
   323  	DTransitionDelay
   324  	DTransitionDuration
   325  	DTransitionProperty
   326  	DTransitionTimingFunction
   327  	DTranslate
   328  	DUnicodeBidi
   329  	DUserSelect
   330  	DVerticalAlign
   331  	DVisibility
   332  	DWhiteSpace
   333  	DWidows
   334  	DWidth
   335  	DWillChange
   336  	DWordBreak
   337  	DWordSpacing
   338  	DWordWrap
   339  	DWritingMode
   340  	DZIndex
   341  	DZoom
   342  )
   343  
   344  var KnownDeclarations = map[string]D{
   345  	"align-content":               DAlignContent,
   346  	"align-items":                 DAlignItems,
   347  	"align-self":                  DAlignSelf,
   348  	"alignment-baseline":          DAlignmentBaseline,
   349  	"all":                         DAll,
   350  	"animation":                   DAnimation,
   351  	"animation-delay":             DAnimationDelay,
   352  	"animation-direction":         DAnimationDirection,
   353  	"animation-duration":          DAnimationDuration,
   354  	"animation-fill-mode":         DAnimationFillMode,
   355  	"animation-iteration-count":   DAnimationIterationCount,
   356  	"animation-name":              DAnimationName,
   357  	"animation-play-state":        DAnimationPlayState,
   358  	"animation-timing-function":   DAnimationTimingFunction,
   359  	"appearance":                  DAppearance,
   360  	"backdrop-filter":             DBackdropFilter,
   361  	"backface-visibility":         DBackfaceVisibility,
   362  	"background":                  DBackground,
   363  	"background-attachment":       DBackgroundAttachment,
   364  	"background-clip":             DBackgroundClip,
   365  	"background-color":            DBackgroundColor,
   366  	"background-image":            DBackgroundImage,
   367  	"background-origin":           DBackgroundOrigin,
   368  	"background-position":         DBackgroundPosition,
   369  	"background-position-x":       DBackgroundPositionX,
   370  	"background-position-y":       DBackgroundPositionY,
   371  	"background-repeat":           DBackgroundRepeat,
   372  	"background-size":             DBackgroundSize,
   373  	"baseline-shift":              DBaselineShift,
   374  	"block-size":                  DBlockSize,
   375  	"border":                      DBorder,
   376  	"border-block-end":            DBorderBlockEnd,
   377  	"border-block-end-color":      DBorderBlockEndColor,
   378  	"border-block-end-style":      DBorderBlockEndStyle,
   379  	"border-block-end-width":      DBorderBlockEndWidth,
   380  	"border-block-start":          DBorderBlockStart,
   381  	"border-block-start-color":    DBorderBlockStartColor,
   382  	"border-block-start-style":    DBorderBlockStartStyle,
   383  	"border-block-start-width":    DBorderBlockStartWidth,
   384  	"border-bottom":               DBorderBottom,
   385  	"border-bottom-color":         DBorderBottomColor,
   386  	"border-bottom-left-radius":   DBorderBottomLeftRadius,
   387  	"border-bottom-right-radius":  DBorderBottomRightRadius,
   388  	"border-bottom-style":         DBorderBottomStyle,
   389  	"border-bottom-width":         DBorderBottomWidth,
   390  	"border-collapse":             DBorderCollapse,
   391  	"border-color":                DBorderColor,
   392  	"border-image":                DBorderImage,
   393  	"border-image-outset":         DBorderImageOutset,
   394  	"border-image-repeat":         DBorderImageRepeat,
   395  	"border-image-slice":          DBorderImageSlice,
   396  	"border-image-source":         DBorderImageSource,
   397  	"border-image-width":          DBorderImageWidth,
   398  	"border-inline-end":           DBorderInlineEnd,
   399  	"border-inline-end-color":     DBorderInlineEndColor,
   400  	"border-inline-end-style":     DBorderInlineEndStyle,
   401  	"border-inline-end-width":     DBorderInlineEndWidth,
   402  	"border-inline-start":         DBorderInlineStart,
   403  	"border-inline-start-color":   DBorderInlineStartColor,
   404  	"border-inline-start-style":   DBorderInlineStartStyle,
   405  	"border-inline-start-width":   DBorderInlineStartWidth,
   406  	"border-left":                 DBorderLeft,
   407  	"border-left-color":           DBorderLeftColor,
   408  	"border-left-style":           DBorderLeftStyle,
   409  	"border-left-width":           DBorderLeftWidth,
   410  	"border-radius":               DBorderRadius,
   411  	"border-right":                DBorderRight,
   412  	"border-right-color":          DBorderRightColor,
   413  	"border-right-style":          DBorderRightStyle,
   414  	"border-right-width":          DBorderRightWidth,
   415  	"border-spacing":              DBorderSpacing,
   416  	"border-style":                DBorderStyle,
   417  	"border-top":                  DBorderTop,
   418  	"border-top-color":            DBorderTopColor,
   419  	"border-top-left-radius":      DBorderTopLeftRadius,
   420  	"border-top-right-radius":     DBorderTopRightRadius,
   421  	"border-top-style":            DBorderTopStyle,
   422  	"border-top-width":            DBorderTopWidth,
   423  	"border-width":                DBorderWidth,
   424  	"bottom":                      DBottom,
   425  	"box-decoration-break":        DBoxDecorationBreak,
   426  	"box-shadow":                  DBoxShadow,
   427  	"box-sizing":                  DBoxSizing,
   428  	"break-after":                 DBreakAfter,
   429  	"break-before":                DBreakBefore,
   430  	"break-inside":                DBreakInside,
   431  	"caption-side":                DCaptionSide,
   432  	"caret-color":                 DCaretColor,
   433  	"clear":                       DClear,
   434  	"clip":                        DClip,
   435  	"clip-path":                   DClipPath,
   436  	"clip-rule":                   DClipRule,
   437  	"color":                       DColor,
   438  	"color-interpolation":         DColorInterpolation,
   439  	"color-interpolation-filters": DColorInterpolationFilters,
   440  	"column-count":                DColumnCount,
   441  	"column-fill":                 DColumnFill,
   442  	"column-gap":                  DColumnGap,
   443  	"column-rule":                 DColumnRule,
   444  	"column-rule-color":           DColumnRuleColor,
   445  	"column-rule-style":           DColumnRuleStyle,
   446  	"column-rule-width":           DColumnRuleWidth,
   447  	"column-span":                 DColumnSpan,
   448  	"column-width":                DColumnWidth,
   449  	"columns":                     DColumns,
   450  	"composes":                    DComposes,
   451  	"container":                   DContainer,
   452  	"container-name":              DContainerName,
   453  	"container-type":              DContainerType,
   454  	"content":                     DContent,
   455  	"counter-increment":           DCounterIncrement,
   456  	"counter-reset":               DCounterReset,
   457  	"css-float":                   DCssFloat,
   458  	"css-text":                    DCssText,
   459  	"cursor":                      DCursor,
   460  	"direction":                   DDirection,
   461  	"display":                     DDisplay,
   462  	"dominant-baseline":           DDominantBaseline,
   463  	"empty-cells":                 DEmptyCells,
   464  	"fill":                        DFill,
   465  	"fill-opacity":                DFillOpacity,
   466  	"fill-rule":                   DFillRule,
   467  	"filter":                      DFilter,
   468  	"flex":                        DFlex,
   469  	"flex-basis":                  DFlexBasis,
   470  	"flex-direction":              DFlexDirection,
   471  	"flex-flow":                   DFlexFlow,
   472  	"flex-grow":                   DFlexGrow,
   473  	"flex-shrink":                 DFlexShrink,
   474  	"flex-wrap":                   DFlexWrap,
   475  	"float":                       DFloat,
   476  	"flood-color":                 DFloodColor,
   477  	"flood-opacity":               DFloodOpacity,
   478  	"font":                        DFont,
   479  	"font-family":                 DFontFamily,
   480  	"font-feature-settings":       DFontFeatureSettings,
   481  	"font-kerning":                DFontKerning,
   482  	"font-size":                   DFontSize,
   483  	"font-size-adjust":            DFontSizeAdjust,
   484  	"font-stretch":                DFontStretch,
   485  	"font-style":                  DFontStyle,
   486  	"font-synthesis":              DFontSynthesis,
   487  	"font-variant":                DFontVariant,
   488  	"font-variant-caps":           DFontVariantCaps,
   489  	"font-variant-east-asian":     DFontVariantEastAsian,
   490  	"font-variant-ligatures":      DFontVariantLigatures,
   491  	"font-variant-numeric":        DFontVariantNumeric,
   492  	"font-variant-position":       DFontVariantPosition,
   493  	"font-weight":                 DFontWeight,
   494  	"gap":                         DGap,
   495  	"glyph-orientation-vertical":  DGlyphOrientationVertical,
   496  	"grid":                        DGrid,
   497  	"grid-area":                   DGridArea,
   498  	"grid-auto-columns":           DGridAutoColumns,
   499  	"grid-auto-flow":              DGridAutoFlow,
   500  	"grid-auto-rows":              DGridAutoRows,
   501  	"grid-column":                 DGridColumn,
   502  	"grid-column-end":             DGridColumnEnd,
   503  	"grid-column-gap":             DGridColumnGap,
   504  	"grid-column-start":           DGridColumnStart,
   505  	"grid-gap":                    DGridGap,
   506  	"grid-row":                    DGridRow,
   507  	"grid-row-end":                DGridRowEnd,
   508  	"grid-row-gap":                DGridRowGap,
   509  	"grid-row-start":              DGridRowStart,
   510  	"grid-template":               DGridTemplate,
   511  	"grid-template-areas":         DGridTemplateAreas,
   512  	"grid-template-columns":       DGridTemplateColumns,
   513  	"grid-template-rows":          DGridTemplateRows,
   514  	"height":                      DHeight,
   515  	"hyphens":                     DHyphens,
   516  	"image-orientation":           DImageOrientation,
   517  	"image-rendering":             DImageRendering,
   518  	"initial-letter":              DInitialLetter,
   519  	"inline-size":                 DInlineSize,
   520  	"inset":                       DInset,
   521  	"justify-content":             DJustifyContent,
   522  	"justify-items":               DJustifyItems,
   523  	"justify-self":                DJustifySelf,
   524  	"left":                        DLeft,
   525  	"letter-spacing":              DLetterSpacing,
   526  	"lighting-color":              DLightingColor,
   527  	"line-break":                  DLineBreak,
   528  	"line-height":                 DLineHeight,
   529  	"list-style":                  DListStyle,
   530  	"list-style-image":            DListStyleImage,
   531  	"list-style-position":         DListStylePosition,
   532  	"list-style-type":             DListStyleType,
   533  	"margin":                      DMargin,
   534  	"margin-block-end":            DMarginBlockEnd,
   535  	"margin-block-start":          DMarginBlockStart,
   536  	"margin-bottom":               DMarginBottom,
   537  	"margin-inline-end":           DMarginInlineEnd,
   538  	"margin-inline-start":         DMarginInlineStart,
   539  	"margin-left":                 DMarginLeft,
   540  	"margin-right":                DMarginRight,
   541  	"margin-top":                  DMarginTop,
   542  	"marker":                      DMarker,
   543  	"marker-end":                  DMarkerEnd,
   544  	"marker-mid":                  DMarkerMid,
   545  	"marker-start":                DMarkerStart,
   546  	"mask":                        DMask,
   547  	"mask-composite":              DMaskComposite,
   548  	"mask-image":                  DMaskImage,
   549  	"mask-origin":                 DMaskOrigin,
   550  	"mask-position":               DMaskPosition,
   551  	"mask-repeat":                 DMaskRepeat,
   552  	"mask-size":                   DMaskSize,
   553  	"mask-type":                   DMaskType,
   554  	"max-block-size":              DMaxBlockSize,
   555  	"max-height":                  DMaxHeight,
   556  	"max-inline-size":             DMaxInlineSize,
   557  	"max-width":                   DMaxWidth,
   558  	"min-block-size":              DMinBlockSize,
   559  	"min-height":                  DMinHeight,
   560  	"min-inline-size":             DMinInlineSize,
   561  	"min-width":                   DMinWidth,
   562  	"object-fit":                  DObjectFit,
   563  	"object-position":             DObjectPosition,
   564  	"opacity":                     DOpacity,
   565  	"order":                       DOrder,
   566  	"orphans":                     DOrphans,
   567  	"outline":                     DOutline,
   568  	"outline-color":               DOutlineColor,
   569  	"outline-offset":              DOutlineOffset,
   570  	"outline-style":               DOutlineStyle,
   571  	"outline-width":               DOutlineWidth,
   572  	"overflow":                    DOverflow,
   573  	"overflow-anchor":             DOverflowAnchor,
   574  	"overflow-wrap":               DOverflowWrap,
   575  	"overflow-x":                  DOverflowX,
   576  	"overflow-y":                  DOverflowY,
   577  	"overscroll-behavior":         DOverscrollBehavior,
   578  	"overscroll-behavior-block":   DOverscrollBehaviorBlock,
   579  	"overscroll-behavior-inline":  DOverscrollBehaviorInline,
   580  	"overscroll-behavior-x":       DOverscrollBehaviorX,
   581  	"overscroll-behavior-y":       DOverscrollBehaviorY,
   582  	"padding":                     DPadding,
   583  	"padding-block-end":           DPaddingBlockEnd,
   584  	"padding-block-start":         DPaddingBlockStart,
   585  	"padding-bottom":              DPaddingBottom,
   586  	"padding-inline-end":          DPaddingInlineEnd,
   587  	"padding-inline-start":        DPaddingInlineStart,
   588  	"padding-left":                DPaddingLeft,
   589  	"padding-right":               DPaddingRight,
   590  	"padding-top":                 DPaddingTop,
   591  	"page-break-after":            DPageBreakAfter,
   592  	"page-break-before":           DPageBreakBefore,
   593  	"page-break-inside":           DPageBreakInside,
   594  	"paint-order":                 DPaintOrder,
   595  	"perspective":                 DPerspective,
   596  	"perspective-origin":          DPerspectiveOrigin,
   597  	"place-content":               DPlaceContent,
   598  	"place-items":                 DPlaceItems,
   599  	"place-self":                  DPlaceSelf,
   600  	"pointer-events":              DPointerEvents,
   601  	"position":                    DPosition,
   602  	"print-color-adjust":          DPrintColorAdjust,
   603  	"quotes":                      DQuotes,
   604  	"resize":                      DResize,
   605  	"right":                       DRight,
   606  	"rotate":                      DRotate,
   607  	"row-gap":                     DRowGap,
   608  	"ruby-align":                  DRubyAlign,
   609  	"ruby-position":               DRubyPosition,
   610  	"scale":                       DScale,
   611  	"scroll-behavior":             DScrollBehavior,
   612  	"shape-rendering":             DShapeRendering,
   613  	"stop-color":                  DStopColor,
   614  	"stop-opacity":                DStopOpacity,
   615  	"stroke":                      DStroke,
   616  	"stroke-dasharray":            DStrokeDasharray,
   617  	"stroke-dashoffset":           DStrokeDashoffset,
   618  	"stroke-linecap":              DStrokeLinecap,
   619  	"stroke-linejoin":             DStrokeLinejoin,
   620  	"stroke-miterlimit":           DStrokeMiterlimit,
   621  	"stroke-opacity":              DStrokeOpacity,
   622  	"stroke-width":                DStrokeWidth,
   623  	"tab-size":                    DTabSize,
   624  	"table-layout":                DTableLayout,
   625  	"text-align":                  DTextAlign,
   626  	"text-align-last":             DTextAlignLast,
   627  	"text-anchor":                 DTextAnchor,
   628  	"text-combine-upright":        DTextCombineUpright,
   629  	"text-decoration":             DTextDecoration,
   630  	"text-decoration-color":       DTextDecorationColor,
   631  	"text-decoration-line":        DTextDecorationLine,
   632  	"text-decoration-skip":        DTextDecorationSkip,
   633  	"text-decoration-style":       DTextDecorationStyle,
   634  	"text-emphasis":               DTextEmphasis,
   635  	"text-emphasis-color":         DTextEmphasisColor,
   636  	"text-emphasis-position":      DTextEmphasisPosition,
   637  	"text-emphasis-style":         DTextEmphasisStyle,
   638  	"text-indent":                 DTextIndent,
   639  	"text-justify":                DTextJustify,
   640  	"text-orientation":            DTextOrientation,
   641  	"text-overflow":               DTextOverflow,
   642  	"text-rendering":              DTextRendering,
   643  	"text-shadow":                 DTextShadow,
   644  	"text-size-adjust":            DTextSizeAdjust,
   645  	"text-transform":              DTextTransform,
   646  	"text-underline-position":     DTextUnderlinePosition,
   647  	"top":                         DTop,
   648  	"touch-action":                DTouchAction,
   649  	"transform":                   DTransform,
   650  	"transform-box":               DTransformBox,
   651  	"transform-origin":            DTransformOrigin,
   652  	"transform-style":             DTransformStyle,
   653  	"transition":                  DTransition,
   654  	"transition-delay":            DTransitionDelay,
   655  	"transition-duration":         DTransitionDuration,
   656  	"transition-property":         DTransitionProperty,
   657  	"transition-timing-function":  DTransitionTimingFunction,
   658  	"translate":                   DTranslate,
   659  	"unicode-bidi":                DUnicodeBidi,
   660  	"user-select":                 DUserSelect,
   661  	"vertical-align":              DVerticalAlign,
   662  	"visibility":                  DVisibility,
   663  	"white-space":                 DWhiteSpace,
   664  	"widows":                      DWidows,
   665  	"width":                       DWidth,
   666  	"will-change":                 DWillChange,
   667  	"word-break":                  DWordBreak,
   668  	"word-spacing":                DWordSpacing,
   669  	"word-wrap":                   DWordWrap,
   670  	"writing-mode":                DWritingMode,
   671  	"z-index":                     DZIndex,
   672  	"zoom":                        DZoom,
   673  }
   674  
   675  var typoDetector *helpers.TypoDetector
   676  var typoDetectorMutex sync.Mutex
   677  
   678  func MaybeCorrectDeclarationTypo(text string) (string, bool) {
   679  	// Ignore CSS variables, which should not be corrected to CSS properties
   680  	if strings.HasPrefix(text, "--") {
   681  		return "", false
   682  	}
   683  
   684  	typoDetectorMutex.Lock()
   685  	defer typoDetectorMutex.Unlock()
   686  
   687  	// Lazily-initialize the typo detector for speed when it's not needed
   688  	if typoDetector == nil {
   689  		valid := make([]string, 0, len(KnownDeclarations))
   690  		for key := range KnownDeclarations {
   691  			valid = append(valid, key)
   692  		}
   693  		detector := helpers.MakeTypoDetector(valid)
   694  		typoDetector = &detector
   695  	}
   696  
   697  	return typoDetector.MaybeCorrectTypo(text)
   698  }