mirror of
https://github.com/hanzoai/esbuild.git
synced 2026-09-24 16:58:50 +00:00
699 lines
21 KiB
Go
699 lines
21 KiB
Go
package css_ast
|
|
|
|
import (
|
|
"strings"
|
|
"sync"
|
|
|
|
"github.com/evanw/esbuild/internal/helpers"
|
|
)
|
|
|
|
type D uint16
|
|
|
|
const (
|
|
DUnknown D = iota
|
|
DAlignContent
|
|
DAlignItems
|
|
DAlignSelf
|
|
DAlignmentBaseline
|
|
DAll
|
|
DAnimation
|
|
DAnimationDelay
|
|
DAnimationDirection
|
|
DAnimationDuration
|
|
DAnimationFillMode
|
|
DAnimationIterationCount
|
|
DAnimationName
|
|
DAnimationPlayState
|
|
DAnimationTimingFunction
|
|
DAppearance
|
|
DBackdropFilter
|
|
DBackfaceVisibility
|
|
DBackground
|
|
DBackgroundAttachment
|
|
DBackgroundClip
|
|
DBackgroundColor
|
|
DBackgroundImage
|
|
DBackgroundOrigin
|
|
DBackgroundPosition
|
|
DBackgroundPositionX
|
|
DBackgroundPositionY
|
|
DBackgroundRepeat
|
|
DBackgroundSize
|
|
DBaselineShift
|
|
DBlockSize
|
|
DBorder
|
|
DBorderBlockEnd
|
|
DBorderBlockEndColor
|
|
DBorderBlockEndStyle
|
|
DBorderBlockEndWidth
|
|
DBorderBlockStart
|
|
DBorderBlockStartColor
|
|
DBorderBlockStartStyle
|
|
DBorderBlockStartWidth
|
|
DBorderBottom
|
|
DBorderBottomColor
|
|
DBorderBottomLeftRadius
|
|
DBorderBottomRightRadius
|
|
DBorderBottomStyle
|
|
DBorderBottomWidth
|
|
DBorderCollapse
|
|
DBorderColor
|
|
DBorderImage
|
|
DBorderImageOutset
|
|
DBorderImageRepeat
|
|
DBorderImageSlice
|
|
DBorderImageSource
|
|
DBorderImageWidth
|
|
DBorderInlineEnd
|
|
DBorderInlineEndColor
|
|
DBorderInlineEndStyle
|
|
DBorderInlineEndWidth
|
|
DBorderInlineStart
|
|
DBorderInlineStartColor
|
|
DBorderInlineStartStyle
|
|
DBorderInlineStartWidth
|
|
DBorderLeft
|
|
DBorderLeftColor
|
|
DBorderLeftStyle
|
|
DBorderLeftWidth
|
|
DBorderRadius
|
|
DBorderRight
|
|
DBorderRightColor
|
|
DBorderRightStyle
|
|
DBorderRightWidth
|
|
DBorderSpacing
|
|
DBorderStyle
|
|
DBorderTop
|
|
DBorderTopColor
|
|
DBorderTopLeftRadius
|
|
DBorderTopRightRadius
|
|
DBorderTopStyle
|
|
DBorderTopWidth
|
|
DBorderWidth
|
|
DBottom
|
|
DBoxDecorationBreak
|
|
DBoxShadow
|
|
DBoxSizing
|
|
DBreakAfter
|
|
DBreakBefore
|
|
DBreakInside
|
|
DCaptionSide
|
|
DCaretColor
|
|
DClear
|
|
DClip
|
|
DClipPath
|
|
DClipRule
|
|
DColor
|
|
DColorInterpolation
|
|
DColorInterpolationFilters
|
|
DColumnCount
|
|
DColumnFill
|
|
DColumnGap
|
|
DColumnRule
|
|
DColumnRuleColor
|
|
DColumnRuleStyle
|
|
DColumnRuleWidth
|
|
DColumnSpan
|
|
DColumnWidth
|
|
DColumns
|
|
DComposes
|
|
DContainer
|
|
DContainerName
|
|
DContainerType
|
|
DContent
|
|
DCounterIncrement
|
|
DCounterReset
|
|
DCssFloat
|
|
DCssText
|
|
DCursor
|
|
DDirection
|
|
DDisplay
|
|
DDominantBaseline
|
|
DEmptyCells
|
|
DFill
|
|
DFillOpacity
|
|
DFillRule
|
|
DFilter
|
|
DFlex
|
|
DFlexBasis
|
|
DFlexDirection
|
|
DFlexFlow
|
|
DFlexGrow
|
|
DFlexShrink
|
|
DFlexWrap
|
|
DFloat
|
|
DFloodColor
|
|
DFloodOpacity
|
|
DFont
|
|
DFontFamily
|
|
DFontFeatureSettings
|
|
DFontKerning
|
|
DFontSize
|
|
DFontSizeAdjust
|
|
DFontStretch
|
|
DFontStyle
|
|
DFontSynthesis
|
|
DFontVariant
|
|
DFontVariantCaps
|
|
DFontVariantEastAsian
|
|
DFontVariantLigatures
|
|
DFontVariantNumeric
|
|
DFontVariantPosition
|
|
DFontWeight
|
|
DGap
|
|
DGlyphOrientationVertical
|
|
DGrid
|
|
DGridArea
|
|
DGridAutoColumns
|
|
DGridAutoFlow
|
|
DGridAutoRows
|
|
DGridColumn
|
|
DGridColumnEnd
|
|
DGridColumnGap
|
|
DGridColumnStart
|
|
DGridGap
|
|
DGridRow
|
|
DGridRowEnd
|
|
DGridRowGap
|
|
DGridRowStart
|
|
DGridTemplate
|
|
DGridTemplateAreas
|
|
DGridTemplateColumns
|
|
DGridTemplateRows
|
|
DHeight
|
|
DHyphens
|
|
DImageOrientation
|
|
DImageRendering
|
|
DInitialLetter
|
|
DInlineSize
|
|
DInset
|
|
DJustifyContent
|
|
DJustifyItems
|
|
DJustifySelf
|
|
DLeft
|
|
DLetterSpacing
|
|
DLightingColor
|
|
DLineBreak
|
|
DLineHeight
|
|
DListStyle
|
|
DListStyleImage
|
|
DListStylePosition
|
|
DListStyleType
|
|
DMargin
|
|
DMarginBlockEnd
|
|
DMarginBlockStart
|
|
DMarginBottom
|
|
DMarginInlineEnd
|
|
DMarginInlineStart
|
|
DMarginLeft
|
|
DMarginRight
|
|
DMarginTop
|
|
DMarker
|
|
DMarkerEnd
|
|
DMarkerMid
|
|
DMarkerStart
|
|
DMask
|
|
DMaskComposite
|
|
DMaskImage
|
|
DMaskOrigin
|
|
DMaskPosition
|
|
DMaskRepeat
|
|
DMaskSize
|
|
DMaskType
|
|
DMaxBlockSize
|
|
DMaxHeight
|
|
DMaxInlineSize
|
|
DMaxWidth
|
|
DMinBlockSize
|
|
DMinHeight
|
|
DMinInlineSize
|
|
DMinWidth
|
|
DObjectFit
|
|
DObjectPosition
|
|
DOpacity
|
|
DOrder
|
|
DOrphans
|
|
DOutline
|
|
DOutlineColor
|
|
DOutlineOffset
|
|
DOutlineStyle
|
|
DOutlineWidth
|
|
DOverflow
|
|
DOverflowAnchor
|
|
DOverflowWrap
|
|
DOverflowX
|
|
DOverflowY
|
|
DOverscrollBehavior
|
|
DOverscrollBehaviorBlock
|
|
DOverscrollBehaviorInline
|
|
DOverscrollBehaviorX
|
|
DOverscrollBehaviorY
|
|
DPadding
|
|
DPaddingBlockEnd
|
|
DPaddingBlockStart
|
|
DPaddingBottom
|
|
DPaddingInlineEnd
|
|
DPaddingInlineStart
|
|
DPaddingLeft
|
|
DPaddingRight
|
|
DPaddingTop
|
|
DPageBreakAfter
|
|
DPageBreakBefore
|
|
DPageBreakInside
|
|
DPaintOrder
|
|
DPerspective
|
|
DPerspectiveOrigin
|
|
DPlaceContent
|
|
DPlaceItems
|
|
DPlaceSelf
|
|
DPointerEvents
|
|
DPosition
|
|
DPrintColorAdjust
|
|
DQuotes
|
|
DResize
|
|
DRight
|
|
DRotate
|
|
DRowGap
|
|
DRubyAlign
|
|
DRubyPosition
|
|
DScale
|
|
DScrollBehavior
|
|
DShapeRendering
|
|
DStopColor
|
|
DStopOpacity
|
|
DStroke
|
|
DStrokeDasharray
|
|
DStrokeDashoffset
|
|
DStrokeLinecap
|
|
DStrokeLinejoin
|
|
DStrokeMiterlimit
|
|
DStrokeOpacity
|
|
DStrokeWidth
|
|
DTabSize
|
|
DTableLayout
|
|
DTextAlign
|
|
DTextAlignLast
|
|
DTextAnchor
|
|
DTextCombineUpright
|
|
DTextDecoration
|
|
DTextDecorationColor
|
|
DTextDecorationLine
|
|
DTextDecorationSkip
|
|
DTextDecorationStyle
|
|
DTextEmphasis
|
|
DTextEmphasisColor
|
|
DTextEmphasisPosition
|
|
DTextEmphasisStyle
|
|
DTextIndent
|
|
DTextJustify
|
|
DTextOrientation
|
|
DTextOverflow
|
|
DTextRendering
|
|
DTextShadow
|
|
DTextSizeAdjust
|
|
DTextTransform
|
|
DTextUnderlinePosition
|
|
DTop
|
|
DTouchAction
|
|
DTransform
|
|
DTransformBox
|
|
DTransformOrigin
|
|
DTransformStyle
|
|
DTransition
|
|
DTransitionDelay
|
|
DTransitionDuration
|
|
DTransitionProperty
|
|
DTransitionTimingFunction
|
|
DTranslate
|
|
DUnicodeBidi
|
|
DUserSelect
|
|
DVerticalAlign
|
|
DVisibility
|
|
DWhiteSpace
|
|
DWidows
|
|
DWidth
|
|
DWillChange
|
|
DWordBreak
|
|
DWordSpacing
|
|
DWordWrap
|
|
DWritingMode
|
|
DZIndex
|
|
DZoom
|
|
)
|
|
|
|
var KnownDeclarations = map[string]D{
|
|
"align-content": DAlignContent,
|
|
"align-items": DAlignItems,
|
|
"align-self": DAlignSelf,
|
|
"alignment-baseline": DAlignmentBaseline,
|
|
"all": DAll,
|
|
"animation": DAnimation,
|
|
"animation-delay": DAnimationDelay,
|
|
"animation-direction": DAnimationDirection,
|
|
"animation-duration": DAnimationDuration,
|
|
"animation-fill-mode": DAnimationFillMode,
|
|
"animation-iteration-count": DAnimationIterationCount,
|
|
"animation-name": DAnimationName,
|
|
"animation-play-state": DAnimationPlayState,
|
|
"animation-timing-function": DAnimationTimingFunction,
|
|
"appearance": DAppearance,
|
|
"backdrop-filter": DBackdropFilter,
|
|
"backface-visibility": DBackfaceVisibility,
|
|
"background": DBackground,
|
|
"background-attachment": DBackgroundAttachment,
|
|
"background-clip": DBackgroundClip,
|
|
"background-color": DBackgroundColor,
|
|
"background-image": DBackgroundImage,
|
|
"background-origin": DBackgroundOrigin,
|
|
"background-position": DBackgroundPosition,
|
|
"background-position-x": DBackgroundPositionX,
|
|
"background-position-y": DBackgroundPositionY,
|
|
"background-repeat": DBackgroundRepeat,
|
|
"background-size": DBackgroundSize,
|
|
"baseline-shift": DBaselineShift,
|
|
"block-size": DBlockSize,
|
|
"border": DBorder,
|
|
"border-block-end": DBorderBlockEnd,
|
|
"border-block-end-color": DBorderBlockEndColor,
|
|
"border-block-end-style": DBorderBlockEndStyle,
|
|
"border-block-end-width": DBorderBlockEndWidth,
|
|
"border-block-start": DBorderBlockStart,
|
|
"border-block-start-color": DBorderBlockStartColor,
|
|
"border-block-start-style": DBorderBlockStartStyle,
|
|
"border-block-start-width": DBorderBlockStartWidth,
|
|
"border-bottom": DBorderBottom,
|
|
"border-bottom-color": DBorderBottomColor,
|
|
"border-bottom-left-radius": DBorderBottomLeftRadius,
|
|
"border-bottom-right-radius": DBorderBottomRightRadius,
|
|
"border-bottom-style": DBorderBottomStyle,
|
|
"border-bottom-width": DBorderBottomWidth,
|
|
"border-collapse": DBorderCollapse,
|
|
"border-color": DBorderColor,
|
|
"border-image": DBorderImage,
|
|
"border-image-outset": DBorderImageOutset,
|
|
"border-image-repeat": DBorderImageRepeat,
|
|
"border-image-slice": DBorderImageSlice,
|
|
"border-image-source": DBorderImageSource,
|
|
"border-image-width": DBorderImageWidth,
|
|
"border-inline-end": DBorderInlineEnd,
|
|
"border-inline-end-color": DBorderInlineEndColor,
|
|
"border-inline-end-style": DBorderInlineEndStyle,
|
|
"border-inline-end-width": DBorderInlineEndWidth,
|
|
"border-inline-start": DBorderInlineStart,
|
|
"border-inline-start-color": DBorderInlineStartColor,
|
|
"border-inline-start-style": DBorderInlineStartStyle,
|
|
"border-inline-start-width": DBorderInlineStartWidth,
|
|
"border-left": DBorderLeft,
|
|
"border-left-color": DBorderLeftColor,
|
|
"border-left-style": DBorderLeftStyle,
|
|
"border-left-width": DBorderLeftWidth,
|
|
"border-radius": DBorderRadius,
|
|
"border-right": DBorderRight,
|
|
"border-right-color": DBorderRightColor,
|
|
"border-right-style": DBorderRightStyle,
|
|
"border-right-width": DBorderRightWidth,
|
|
"border-spacing": DBorderSpacing,
|
|
"border-style": DBorderStyle,
|
|
"border-top": DBorderTop,
|
|
"border-top-color": DBorderTopColor,
|
|
"border-top-left-radius": DBorderTopLeftRadius,
|
|
"border-top-right-radius": DBorderTopRightRadius,
|
|
"border-top-style": DBorderTopStyle,
|
|
"border-top-width": DBorderTopWidth,
|
|
"border-width": DBorderWidth,
|
|
"bottom": DBottom,
|
|
"box-decoration-break": DBoxDecorationBreak,
|
|
"box-shadow": DBoxShadow,
|
|
"box-sizing": DBoxSizing,
|
|
"break-after": DBreakAfter,
|
|
"break-before": DBreakBefore,
|
|
"break-inside": DBreakInside,
|
|
"caption-side": DCaptionSide,
|
|
"caret-color": DCaretColor,
|
|
"clear": DClear,
|
|
"clip": DClip,
|
|
"clip-path": DClipPath,
|
|
"clip-rule": DClipRule,
|
|
"color": DColor,
|
|
"color-interpolation": DColorInterpolation,
|
|
"color-interpolation-filters": DColorInterpolationFilters,
|
|
"column-count": DColumnCount,
|
|
"column-fill": DColumnFill,
|
|
"column-gap": DColumnGap,
|
|
"column-rule": DColumnRule,
|
|
"column-rule-color": DColumnRuleColor,
|
|
"column-rule-style": DColumnRuleStyle,
|
|
"column-rule-width": DColumnRuleWidth,
|
|
"column-span": DColumnSpan,
|
|
"column-width": DColumnWidth,
|
|
"columns": DColumns,
|
|
"composes": DComposes,
|
|
"container": DContainer,
|
|
"container-name": DContainerName,
|
|
"container-type": DContainerType,
|
|
"content": DContent,
|
|
"counter-increment": DCounterIncrement,
|
|
"counter-reset": DCounterReset,
|
|
"css-float": DCssFloat,
|
|
"css-text": DCssText,
|
|
"cursor": DCursor,
|
|
"direction": DDirection,
|
|
"display": DDisplay,
|
|
"dominant-baseline": DDominantBaseline,
|
|
"empty-cells": DEmptyCells,
|
|
"fill": DFill,
|
|
"fill-opacity": DFillOpacity,
|
|
"fill-rule": DFillRule,
|
|
"filter": DFilter,
|
|
"flex": DFlex,
|
|
"flex-basis": DFlexBasis,
|
|
"flex-direction": DFlexDirection,
|
|
"flex-flow": DFlexFlow,
|
|
"flex-grow": DFlexGrow,
|
|
"flex-shrink": DFlexShrink,
|
|
"flex-wrap": DFlexWrap,
|
|
"float": DFloat,
|
|
"flood-color": DFloodColor,
|
|
"flood-opacity": DFloodOpacity,
|
|
"font": DFont,
|
|
"font-family": DFontFamily,
|
|
"font-feature-settings": DFontFeatureSettings,
|
|
"font-kerning": DFontKerning,
|
|
"font-size": DFontSize,
|
|
"font-size-adjust": DFontSizeAdjust,
|
|
"font-stretch": DFontStretch,
|
|
"font-style": DFontStyle,
|
|
"font-synthesis": DFontSynthesis,
|
|
"font-variant": DFontVariant,
|
|
"font-variant-caps": DFontVariantCaps,
|
|
"font-variant-east-asian": DFontVariantEastAsian,
|
|
"font-variant-ligatures": DFontVariantLigatures,
|
|
"font-variant-numeric": DFontVariantNumeric,
|
|
"font-variant-position": DFontVariantPosition,
|
|
"font-weight": DFontWeight,
|
|
"gap": DGap,
|
|
"glyph-orientation-vertical": DGlyphOrientationVertical,
|
|
"grid": DGrid,
|
|
"grid-area": DGridArea,
|
|
"grid-auto-columns": DGridAutoColumns,
|
|
"grid-auto-flow": DGridAutoFlow,
|
|
"grid-auto-rows": DGridAutoRows,
|
|
"grid-column": DGridColumn,
|
|
"grid-column-end": DGridColumnEnd,
|
|
"grid-column-gap": DGridColumnGap,
|
|
"grid-column-start": DGridColumnStart,
|
|
"grid-gap": DGridGap,
|
|
"grid-row": DGridRow,
|
|
"grid-row-end": DGridRowEnd,
|
|
"grid-row-gap": DGridRowGap,
|
|
"grid-row-start": DGridRowStart,
|
|
"grid-template": DGridTemplate,
|
|
"grid-template-areas": DGridTemplateAreas,
|
|
"grid-template-columns": DGridTemplateColumns,
|
|
"grid-template-rows": DGridTemplateRows,
|
|
"height": DHeight,
|
|
"hyphens": DHyphens,
|
|
"image-orientation": DImageOrientation,
|
|
"image-rendering": DImageRendering,
|
|
"initial-letter": DInitialLetter,
|
|
"inline-size": DInlineSize,
|
|
"inset": DInset,
|
|
"justify-content": DJustifyContent,
|
|
"justify-items": DJustifyItems,
|
|
"justify-self": DJustifySelf,
|
|
"left": DLeft,
|
|
"letter-spacing": DLetterSpacing,
|
|
"lighting-color": DLightingColor,
|
|
"line-break": DLineBreak,
|
|
"line-height": DLineHeight,
|
|
"list-style": DListStyle,
|
|
"list-style-image": DListStyleImage,
|
|
"list-style-position": DListStylePosition,
|
|
"list-style-type": DListStyleType,
|
|
"margin": DMargin,
|
|
"margin-block-end": DMarginBlockEnd,
|
|
"margin-block-start": DMarginBlockStart,
|
|
"margin-bottom": DMarginBottom,
|
|
"margin-inline-end": DMarginInlineEnd,
|
|
"margin-inline-start": DMarginInlineStart,
|
|
"margin-left": DMarginLeft,
|
|
"margin-right": DMarginRight,
|
|
"margin-top": DMarginTop,
|
|
"marker": DMarker,
|
|
"marker-end": DMarkerEnd,
|
|
"marker-mid": DMarkerMid,
|
|
"marker-start": DMarkerStart,
|
|
"mask": DMask,
|
|
"mask-composite": DMaskComposite,
|
|
"mask-image": DMaskImage,
|
|
"mask-origin": DMaskOrigin,
|
|
"mask-position": DMaskPosition,
|
|
"mask-repeat": DMaskRepeat,
|
|
"mask-size": DMaskSize,
|
|
"mask-type": DMaskType,
|
|
"max-block-size": DMaxBlockSize,
|
|
"max-height": DMaxHeight,
|
|
"max-inline-size": DMaxInlineSize,
|
|
"max-width": DMaxWidth,
|
|
"min-block-size": DMinBlockSize,
|
|
"min-height": DMinHeight,
|
|
"min-inline-size": DMinInlineSize,
|
|
"min-width": DMinWidth,
|
|
"object-fit": DObjectFit,
|
|
"object-position": DObjectPosition,
|
|
"opacity": DOpacity,
|
|
"order": DOrder,
|
|
"orphans": DOrphans,
|
|
"outline": DOutline,
|
|
"outline-color": DOutlineColor,
|
|
"outline-offset": DOutlineOffset,
|
|
"outline-style": DOutlineStyle,
|
|
"outline-width": DOutlineWidth,
|
|
"overflow": DOverflow,
|
|
"overflow-anchor": DOverflowAnchor,
|
|
"overflow-wrap": DOverflowWrap,
|
|
"overflow-x": DOverflowX,
|
|
"overflow-y": DOverflowY,
|
|
"overscroll-behavior": DOverscrollBehavior,
|
|
"overscroll-behavior-block": DOverscrollBehaviorBlock,
|
|
"overscroll-behavior-inline": DOverscrollBehaviorInline,
|
|
"overscroll-behavior-x": DOverscrollBehaviorX,
|
|
"overscroll-behavior-y": DOverscrollBehaviorY,
|
|
"padding": DPadding,
|
|
"padding-block-end": DPaddingBlockEnd,
|
|
"padding-block-start": DPaddingBlockStart,
|
|
"padding-bottom": DPaddingBottom,
|
|
"padding-inline-end": DPaddingInlineEnd,
|
|
"padding-inline-start": DPaddingInlineStart,
|
|
"padding-left": DPaddingLeft,
|
|
"padding-right": DPaddingRight,
|
|
"padding-top": DPaddingTop,
|
|
"page-break-after": DPageBreakAfter,
|
|
"page-break-before": DPageBreakBefore,
|
|
"page-break-inside": DPageBreakInside,
|
|
"paint-order": DPaintOrder,
|
|
"perspective": DPerspective,
|
|
"perspective-origin": DPerspectiveOrigin,
|
|
"place-content": DPlaceContent,
|
|
"place-items": DPlaceItems,
|
|
"place-self": DPlaceSelf,
|
|
"pointer-events": DPointerEvents,
|
|
"position": DPosition,
|
|
"print-color-adjust": DPrintColorAdjust,
|
|
"quotes": DQuotes,
|
|
"resize": DResize,
|
|
"right": DRight,
|
|
"rotate": DRotate,
|
|
"row-gap": DRowGap,
|
|
"ruby-align": DRubyAlign,
|
|
"ruby-position": DRubyPosition,
|
|
"scale": DScale,
|
|
"scroll-behavior": DScrollBehavior,
|
|
"shape-rendering": DShapeRendering,
|
|
"stop-color": DStopColor,
|
|
"stop-opacity": DStopOpacity,
|
|
"stroke": DStroke,
|
|
"stroke-dasharray": DStrokeDasharray,
|
|
"stroke-dashoffset": DStrokeDashoffset,
|
|
"stroke-linecap": DStrokeLinecap,
|
|
"stroke-linejoin": DStrokeLinejoin,
|
|
"stroke-miterlimit": DStrokeMiterlimit,
|
|
"stroke-opacity": DStrokeOpacity,
|
|
"stroke-width": DStrokeWidth,
|
|
"tab-size": DTabSize,
|
|
"table-layout": DTableLayout,
|
|
"text-align": DTextAlign,
|
|
"text-align-last": DTextAlignLast,
|
|
"text-anchor": DTextAnchor,
|
|
"text-combine-upright": DTextCombineUpright,
|
|
"text-decoration": DTextDecoration,
|
|
"text-decoration-color": DTextDecorationColor,
|
|
"text-decoration-line": DTextDecorationLine,
|
|
"text-decoration-skip": DTextDecorationSkip,
|
|
"text-decoration-style": DTextDecorationStyle,
|
|
"text-emphasis": DTextEmphasis,
|
|
"text-emphasis-color": DTextEmphasisColor,
|
|
"text-emphasis-position": DTextEmphasisPosition,
|
|
"text-emphasis-style": DTextEmphasisStyle,
|
|
"text-indent": DTextIndent,
|
|
"text-justify": DTextJustify,
|
|
"text-orientation": DTextOrientation,
|
|
"text-overflow": DTextOverflow,
|
|
"text-rendering": DTextRendering,
|
|
"text-shadow": DTextShadow,
|
|
"text-size-adjust": DTextSizeAdjust,
|
|
"text-transform": DTextTransform,
|
|
"text-underline-position": DTextUnderlinePosition,
|
|
"top": DTop,
|
|
"touch-action": DTouchAction,
|
|
"transform": DTransform,
|
|
"transform-box": DTransformBox,
|
|
"transform-origin": DTransformOrigin,
|
|
"transform-style": DTransformStyle,
|
|
"transition": DTransition,
|
|
"transition-delay": DTransitionDelay,
|
|
"transition-duration": DTransitionDuration,
|
|
"transition-property": DTransitionProperty,
|
|
"transition-timing-function": DTransitionTimingFunction,
|
|
"translate": DTranslate,
|
|
"unicode-bidi": DUnicodeBidi,
|
|
"user-select": DUserSelect,
|
|
"vertical-align": DVerticalAlign,
|
|
"visibility": DVisibility,
|
|
"white-space": DWhiteSpace,
|
|
"widows": DWidows,
|
|
"width": DWidth,
|
|
"will-change": DWillChange,
|
|
"word-break": DWordBreak,
|
|
"word-spacing": DWordSpacing,
|
|
"word-wrap": DWordWrap,
|
|
"writing-mode": DWritingMode,
|
|
"z-index": DZIndex,
|
|
"zoom": DZoom,
|
|
}
|
|
|
|
var typoDetector *helpers.TypoDetector
|
|
var typoDetectorMutex sync.Mutex
|
|
|
|
func MaybeCorrectDeclarationTypo(text string) (string, bool) {
|
|
// Ignore CSS variables, which should not be corrected to CSS properties
|
|
if strings.HasPrefix(text, "--") {
|
|
return "", false
|
|
}
|
|
|
|
typoDetectorMutex.Lock()
|
|
defer typoDetectorMutex.Unlock()
|
|
|
|
// Lazily-initialize the typo detector for speed when it's not needed
|
|
if typoDetector == nil {
|
|
valid := make([]string, 0, len(KnownDeclarations))
|
|
for key := range KnownDeclarations {
|
|
valid = append(valid, key)
|
|
}
|
|
detector := helpers.MakeTypoDetector(valid)
|
|
typoDetector = &detector
|
|
}
|
|
|
|
return typoDetector.MaybeCorrectTypo(text)
|
|
}
|