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 }