@pandacss/generator 0.10.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +87 -37
- package/dist/index.mjs +87 -37
- package/package.json +8 -8
package/dist/index.d.mts
CHANGED
|
@@ -94,6 +94,10 @@ declare const getEngine: (conf: ConfigResultWithHooks) => {
|
|
|
94
94
|
conditions: _pandacss_core.Conditions;
|
|
95
95
|
createSheetContext: () => _pandacss_core.StylesheetContext;
|
|
96
96
|
createSheet: (options?: Pick<_pandacss_core.StylesheetOptions, "content"> | undefined) => _pandacss_core.Stylesheet;
|
|
97
|
+
layers: _pandacss_types.CascadeLayers;
|
|
98
|
+
isValidLayerRule: (layerRule: string) => boolean;
|
|
99
|
+
layerString: string;
|
|
100
|
+
layerNames: string[];
|
|
97
101
|
hooks: _pandacss_types.PandaHookable;
|
|
98
102
|
path: string;
|
|
99
103
|
config: _pandacss_types_dist_shared.UnwrapExtend<_pandacss_types.RequiredBy<_pandacss_types.Config, "outdir" | "cwd" | "include">>;
|
|
@@ -320,6 +324,10 @@ declare const createGenerator: (conf: ConfigResultWithHooks) => {
|
|
|
320
324
|
conditions: _pandacss_core.Conditions;
|
|
321
325
|
createSheetContext: () => _pandacss_core.StylesheetContext;
|
|
322
326
|
createSheet: (options?: Pick<_pandacss_core.StylesheetOptions, "content"> | undefined) => _pandacss_core.Stylesheet;
|
|
327
|
+
layers: _pandacss_types.CascadeLayers;
|
|
328
|
+
isValidLayerRule: (layerRule: string) => boolean;
|
|
329
|
+
layerString: string;
|
|
330
|
+
layerNames: string[];
|
|
323
331
|
hooks: _pandacss_types.PandaHookable;
|
|
324
332
|
path: string;
|
|
325
333
|
config: _pandacss_types_dist_shared.UnwrapExtend<_pandacss_types.RequiredBy<_pandacss_types.Config, "outdir" | "cwd" | "include">>;
|
package/dist/index.d.ts
CHANGED
|
@@ -94,6 +94,10 @@ declare const getEngine: (conf: ConfigResultWithHooks) => {
|
|
|
94
94
|
conditions: _pandacss_core.Conditions;
|
|
95
95
|
createSheetContext: () => _pandacss_core.StylesheetContext;
|
|
96
96
|
createSheet: (options?: Pick<_pandacss_core.StylesheetOptions, "content"> | undefined) => _pandacss_core.Stylesheet;
|
|
97
|
+
layers: _pandacss_types.CascadeLayers;
|
|
98
|
+
isValidLayerRule: (layerRule: string) => boolean;
|
|
99
|
+
layerString: string;
|
|
100
|
+
layerNames: string[];
|
|
97
101
|
hooks: _pandacss_types.PandaHookable;
|
|
98
102
|
path: string;
|
|
99
103
|
config: _pandacss_types_dist_shared.UnwrapExtend<_pandacss_types.RequiredBy<_pandacss_types.Config, "outdir" | "cwd" | "include">>;
|
|
@@ -320,6 +324,10 @@ declare const createGenerator: (conf: ConfigResultWithHooks) => {
|
|
|
320
324
|
conditions: _pandacss_core.Conditions;
|
|
321
325
|
createSheetContext: () => _pandacss_core.StylesheetContext;
|
|
322
326
|
createSheet: (options?: Pick<_pandacss_core.StylesheetOptions, "content"> | undefined) => _pandacss_core.Stylesheet;
|
|
327
|
+
layers: _pandacss_types.CascadeLayers;
|
|
328
|
+
isValidLayerRule: (layerRule: string) => boolean;
|
|
329
|
+
layerString: string;
|
|
330
|
+
layerNames: string[];
|
|
323
331
|
hooks: _pandacss_types.PandaHookable;
|
|
324
332
|
path: string;
|
|
325
333
|
config: _pandacss_types_dist_shared.UnwrapExtend<_pandacss_types.RequiredBy<_pandacss_types.Config, "outdir" | "cwd" | "include">>;
|
package/dist/index.js
CHANGED
|
@@ -206,7 +206,7 @@ function generateKeyframeCss(ctx) {
|
|
|
206
206
|
var css = String.raw;
|
|
207
207
|
function generateResetCss(ctx, scope = "") {
|
|
208
208
|
const selector = scope ? `${scope} ` : "";
|
|
209
|
-
const output = css`@layer reset {
|
|
209
|
+
const output = css`@layer ${ctx.layers.reset} {
|
|
210
210
|
${selector}* {
|
|
211
211
|
margin: 0;
|
|
212
212
|
padding: 0;
|
|
@@ -473,7 +473,7 @@ function generateTokenCss(ctx) {
|
|
|
473
473
|
}
|
|
474
474
|
}
|
|
475
475
|
const css2 = results.join("\n\n");
|
|
476
|
-
const output = `@layer tokens {
|
|
476
|
+
const output = `@layer ${ctx.layers.tokens} {
|
|
477
477
|
${(0, import_core3.prettifyCss)(cleanupSelectors(css2, root))}
|
|
478
478
|
}
|
|
479
479
|
`;
|
|
@@ -623,11 +623,7 @@ function generateCssFn(ctx) {
|
|
|
623
623
|
config: { hash, prefix },
|
|
624
624
|
conditions
|
|
625
625
|
} = ctx;
|
|
626
|
-
const { separator } = utility;
|
|
627
|
-
const shorthandsByProp = Array.from(utility.shorthands.entries()).reduce((acc, [shorthand, prop]) => {
|
|
628
|
-
acc[prop] = shorthand;
|
|
629
|
-
return acc;
|
|
630
|
-
}, {});
|
|
626
|
+
const { separator, getPropShorthands } = utility;
|
|
631
627
|
return {
|
|
632
628
|
dts: import_outdent4.outdent`
|
|
633
629
|
import type { SystemStyleObject } from '../types'
|
|
@@ -644,25 +640,39 @@ function generateCssFn(ctx) {
|
|
|
644
640
|
${ctx.file.import("sortConditions, finalizeConditions", "./conditions")}
|
|
645
641
|
|
|
646
642
|
const utilities = "${utility.entries().map(([prop, className]) => {
|
|
647
|
-
const
|
|
648
|
-
|
|
643
|
+
const shorthandList = getPropShorthands(prop);
|
|
644
|
+
const result = [
|
|
645
|
+
prop,
|
|
646
|
+
[
|
|
647
|
+
className,
|
|
648
|
+
shorthandList.length ? (
|
|
649
|
+
// mark shorthand equal to className as 1 to save a few bytes
|
|
650
|
+
shorthandList.map((shorthand) => shorthand === className ? 1 : shorthand).join("/")
|
|
651
|
+
) : null
|
|
652
|
+
].filter(Boolean).join("/")
|
|
653
|
+
].join(":");
|
|
654
|
+
return result;
|
|
649
655
|
}).join(",")}"
|
|
650
656
|
|
|
651
|
-
const
|
|
657
|
+
const classNameByProp = new Map()
|
|
652
658
|
${utility.hasShorthand ? import_outdent4.outdent`
|
|
653
|
-
const shorthands =
|
|
659
|
+
const shorthands = new Map()
|
|
654
660
|
utilities.split(',').forEach((utility) => {
|
|
655
661
|
const [prop, meta] = utility.split(':')
|
|
656
|
-
const [className,
|
|
657
|
-
|
|
658
|
-
if (
|
|
662
|
+
const [className, ...shorthandList] = meta.split('/')
|
|
663
|
+
classNameByProp.set(prop, className)
|
|
664
|
+
if (shorthandList.length) {
|
|
665
|
+
shorthandList.forEach((shorthand) => {
|
|
666
|
+
shorthands.set(shorthand === '1' ? className : shorthand, prop)
|
|
667
|
+
})
|
|
668
|
+
}
|
|
659
669
|
})
|
|
660
670
|
|
|
661
|
-
const resolveShorthand = (prop) => shorthands
|
|
671
|
+
const resolveShorthand = (prop) => shorthands.get(prop) || prop
|
|
662
672
|
` : import_outdent4.outdent`
|
|
663
673
|
utilities.split(',').forEach((utility) => {
|
|
664
674
|
const [prop, className] = utility.split(':')
|
|
665
|
-
|
|
675
|
+
classNameByProp.set(prop, className)
|
|
666
676
|
})
|
|
667
677
|
`}
|
|
668
678
|
|
|
@@ -677,15 +687,21 @@ function generateCssFn(ctx) {
|
|
|
677
687
|
${prefix ? "prefix: " + JSON.stringify(prefix) + "," : ""}
|
|
678
688
|
transform: ${utility.hasShorthand ? `(prop, value) => {
|
|
679
689
|
const key = resolveShorthand(prop)
|
|
680
|
-
const propKey =
|
|
690
|
+
const propKey = classNameByProp.get(key) || hypenateProperty(key)
|
|
681
691
|
return { className: \`\${propKey}${separator}\${withoutSpace(value)}\` }
|
|
682
|
-
}` : `(key, value) => ({ className: \`\${
|
|
692
|
+
}` : `(key, value) => ({ className: \`\${classNameByProp.get(key) || hypenateProperty(key)}${separator}\${withoutSpace(value)}\` })`},
|
|
683
693
|
${utility.hasShorthand ? "hasShorthand: true," : ""}
|
|
684
694
|
resolveShorthand: ${utility.hasShorthand ? "resolveShorthand" : "prop => prop"},
|
|
685
695
|
}
|
|
686
696
|
}
|
|
687
697
|
|
|
688
|
-
|
|
698
|
+
const cssFn = createCss(context)
|
|
699
|
+
export const cssCache = new Map()
|
|
700
|
+
export const css = (styles) => {
|
|
701
|
+
const classNames = cssFn(styles)
|
|
702
|
+
cssCache.set(classNames, styles)
|
|
703
|
+
return classNames
|
|
704
|
+
}
|
|
689
705
|
css.raw = (styles) => styles
|
|
690
706
|
|
|
691
707
|
export const { mergeCss, assignCss } = createMergeCss(context)
|
|
@@ -823,23 +839,34 @@ function generateCvaFn(ctx) {
|
|
|
823
839
|
|
|
824
840
|
// src/artifacts/js/cx.ts
|
|
825
841
|
var import_outdent7 = __toESM(require("outdent"));
|
|
826
|
-
function generateCx() {
|
|
842
|
+
function generateCx(ctx) {
|
|
827
843
|
return {
|
|
828
844
|
js: import_outdent7.default`
|
|
845
|
+
${ctx.file.import("cssCache, css, mergeCss", "./css")}
|
|
846
|
+
|
|
829
847
|
function cx() {
|
|
848
|
+
const objs = []
|
|
830
849
|
let str = '',
|
|
831
850
|
i = 0,
|
|
832
851
|
arg
|
|
833
|
-
|
|
852
|
+
|
|
834
853
|
for (; i < arguments.length; ) {
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
854
|
+
arg = arguments[i++]
|
|
855
|
+
if (!arg || typeof arg !== 'string') continue
|
|
856
|
+
|
|
857
|
+
if (cssCache.has(arg)) {
|
|
858
|
+
objs.push(cssCache.get(arg))
|
|
859
|
+
continue
|
|
838
860
|
}
|
|
861
|
+
|
|
862
|
+
str && (str += ' ')
|
|
863
|
+
str += arg.toString()
|
|
839
864
|
}
|
|
840
|
-
|
|
865
|
+
|
|
866
|
+
const merged = mergeCss(...objs)
|
|
867
|
+
return [css(merged), str].join(' ')
|
|
841
868
|
}
|
|
842
|
-
|
|
869
|
+
|
|
843
870
|
export { cx }
|
|
844
871
|
`,
|
|
845
872
|
dts: import_outdent7.default`
|
|
@@ -891,14 +918,14 @@ function generateHelpers(ctx) {
|
|
|
891
918
|
|
|
892
919
|
// src/artifacts/generated/is-valid-prop.mjs.json
|
|
893
920
|
var is_valid_prop_mjs_default = {
|
|
894
|
-
content: '// src/index.ts\nvar userGeneratedStr = "";\nvar userGenerated = userGeneratedStr.split(",");\nvar cssPropertiesStr = "WebkitAppearance,WebkitBorderBefore,WebkitBorderBeforeColor,WebkitBorderBeforeStyle,WebkitBorderBeforeWidth,WebkitBoxReflect,WebkitLineClamp,WebkitMask,WebkitMaskAttachment,WebkitMaskClip,WebkitMaskComposite,WebkitMaskImage,WebkitMaskOrigin,WebkitMaskPosition,WebkitMaskPositionX,WebkitMaskPositionY,WebkitMaskRepeat,WebkitMaskRepeatX,WebkitMaskRepeatY,WebkitMaskSize,WebkitOverflowScrolling,WebkitTapHighlightColor,WebkitTextFillColor,WebkitTextStroke,WebkitTextStrokeColor,WebkitTextStrokeWidth,WebkitTouchCallout,WebkitUserModify,accentColor,alignContent,alignItems,alignSelf,alignTracks,all,animation,animationComposition,animationDelay,animationDirection,animationDuration,animationFillMode,animationIterationCount,animationName,animationPlayState,animationTimingFunction,animationTimeline,appearance,aspectRatio,azimuth,backdropFilter,backfaceVisibility,background,backgroundAttachment,backgroundBlendMode,backgroundClip,backgroundColor,backgroundImage,backgroundOrigin,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundRepeat,backgroundSize,blockOverflow,blockSize,border,borderBlock,borderBlockColor,borderBlockStyle,borderBlockWidth,borderBlockEnd,borderBlockEndColor,borderBlockEndStyle,borderBlockEndWidth,borderBlockStart,borderBlockStartColor,borderBlockStartStyle,borderBlockStartWidth,borderBottom,borderBottomColor,borderBottomLeftRadius,borderBottomRightRadius,borderBottomStyle,borderBottomWidth,borderCollapse,borderColor,borderEndEndRadius,borderEndStartRadius,borderImage,borderImageOutset,borderImageRepeat,borderImageSlice,borderImageSource,borderImageWidth,borderInline,borderInlineEnd,borderInlineColor,borderInlineStyle,borderInlineWidth,borderInlineEndColor,borderInlineEndStyle,borderInlineEndWidth,borderInlineStart,borderInlineStartColor,borderInlineStartStyle,borderInlineStartWidth,borderLeft,borderLeftColor,borderLeftStyle,borderLeftWidth,borderRadius,borderRight,borderRightColor,borderRightStyle,borderRightWidth,borderSpacing,borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,borderTopColor,borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,borderWidth,bottom,boxAlign,boxDecorationBreak,boxDirection,boxFlex,boxFlexGroup,boxLines,boxOrdinalGroup,boxOrient,boxPack,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,captionSide,caret,caretColor,caretShape,clear,clip,clipPath,color,colorScheme,columnCount,columnFill,columnGap,columnRule,columnRuleColor,columnRuleStyle,columnRuleWidth,columnSpan,columnWidth,columns,contain,containIntrinsicSize,containIntrinsicBlockSize,containIntrinsicHeight,containIntrinsicInlineSize,containIntrinsicWidth,container,containerName,containerType,content,contentVisibility,counterIncrement,counterReset,counterSet,cursor,direction,display,emptyCells,filter,flex,flexBasis,flexDirection,flexFlow,flexGrow,flexShrink,flexWrap,float,font,fontFamily,fontFeatureSettings,fontKerning,fontLanguageOverride,fontOpticalSizing,fontPalette,fontVariationSettings,fontSize,fontSizeAdjust,fontSmooth,fontStretch,fontStyle,fontSynthesis,fontVariant,fontVariantAlternates,fontVariantCaps,fontVariantEastAsian,fontVariantEmoji,fontVariantLigatures,fontVariantNumeric,fontVariantPosition,fontWeight,forcedColorAdjust,gap,grid,gridArea,gridAutoColumns,gridAutoFlow,gridAutoRows,gridColumn,gridColumnEnd,gridColumnGap,gridColumnStart,gridGap,gridRow,gridRowEnd,gridRowGap,gridRowStart,gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,hangingPunctuation,height,hyphenateCharacter,hyphenateLimitChars,hyphens,imageOrientation,imageRendering,imageResolution,imeMode,initialLetter,initialLetterAlign,inlineSize,inputSecurity,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,insetInlineStart,isolation,justifyContent,justifyItems,justifySelf,justifyTracks,left,letterSpacing,lineBreak,lineClamp,lineHeight,lineHeightStep,listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marginTrim,mask,maskBorder,maskBorderMode,maskBorderOutset,maskBorderRepeat,maskBorderSlice,maskBorderSource,maskBorderWidth,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,masonryAutoFlow,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxLines,maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,objectFit,objectPosition,offset,offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,overflowClipBox,overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,pageBreakInside,paintOrder,perspective,perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,printColorAdjust,quotes,resize,right,rotate,rowGap,rubyAlign,rubyMerge,rubyPosition,scale,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,scrollMargin,scrollMarginBlock,scrollMarginBlockStart,scrollMarginBlockEnd,scrollMarginBottom,scrollMarginInline,scrollMarginInlineStart,scrollMarginInlineEnd,scrollMarginLeft,scrollMarginRight,scrollMarginTop,scrollPadding,scrollPaddingBlock,scrollPaddingBlockStart,scrollPaddingBlockEnd,scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineStart,scrollPaddingInlineEnd,scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapCoordinate,scrollSnapDestination,scrollSnapPointsX,scrollSnapPointsY,scrollSnapStop,scrollSnapType,scrollSnapTypeX,scrollSnapTypeY,scrollTimeline,scrollTimelineAxis,scrollTimelineName,shapeImageThreshold,shapeMargin,shapeOutside,tabSize,tableLayout,textAlign,textAlignLast,textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkip,textDecorationSkipInk,textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,textIndent,textJustify,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textTransform,textUnderlineOffset,textUnderlinePosition,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,transitionDelay,transitionDuration,transitionProperty,transitionTimingFunction,translate,unicodeBidi,userSelect,verticalAlign,viewTransitionName,visibility,whiteSpace,widows,width,willChange,wordBreak,wordSpacing,wordWrap,writingMode,zIndex,zoom";\nvar allCssProperties = cssPropertiesStr.split(",").concat(userGenerated);\nvar properties = new Map(allCssProperties.map((prop) => [prop, true]));\nfunction memo(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (arg) => {\n if (cache[arg] === void 0)\n cache[arg] = fn(arg);\n return cache[arg];\n };\n}\nvar
|
|
921
|
+
content: '// src/index.ts\nvar userGeneratedStr = "";\nvar userGenerated = userGeneratedStr.split(",");\nvar cssPropertiesStr = "WebkitAppearance,WebkitBorderBefore,WebkitBorderBeforeColor,WebkitBorderBeforeStyle,WebkitBorderBeforeWidth,WebkitBoxReflect,WebkitLineClamp,WebkitMask,WebkitMaskAttachment,WebkitMaskClip,WebkitMaskComposite,WebkitMaskImage,WebkitMaskOrigin,WebkitMaskPosition,WebkitMaskPositionX,WebkitMaskPositionY,WebkitMaskRepeat,WebkitMaskRepeatX,WebkitMaskRepeatY,WebkitMaskSize,WebkitOverflowScrolling,WebkitTapHighlightColor,WebkitTextFillColor,WebkitTextStroke,WebkitTextStrokeColor,WebkitTextStrokeWidth,WebkitTouchCallout,WebkitUserModify,accentColor,alignContent,alignItems,alignSelf,alignTracks,all,animation,animationComposition,animationDelay,animationDirection,animationDuration,animationFillMode,animationIterationCount,animationName,animationPlayState,animationTimingFunction,animationTimeline,appearance,aspectRatio,azimuth,backdropFilter,backfaceVisibility,background,backgroundAttachment,backgroundBlendMode,backgroundClip,backgroundColor,backgroundImage,backgroundOrigin,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundRepeat,backgroundSize,blockOverflow,blockSize,border,borderBlock,borderBlockColor,borderBlockStyle,borderBlockWidth,borderBlockEnd,borderBlockEndColor,borderBlockEndStyle,borderBlockEndWidth,borderBlockStart,borderBlockStartColor,borderBlockStartStyle,borderBlockStartWidth,borderBottom,borderBottomColor,borderBottomLeftRadius,borderBottomRightRadius,borderBottomStyle,borderBottomWidth,borderCollapse,borderColor,borderEndEndRadius,borderEndStartRadius,borderImage,borderImageOutset,borderImageRepeat,borderImageSlice,borderImageSource,borderImageWidth,borderInline,borderInlineEnd,borderInlineColor,borderInlineStyle,borderInlineWidth,borderInlineEndColor,borderInlineEndStyle,borderInlineEndWidth,borderInlineStart,borderInlineStartColor,borderInlineStartStyle,borderInlineStartWidth,borderLeft,borderLeftColor,borderLeftStyle,borderLeftWidth,borderRadius,borderRight,borderRightColor,borderRightStyle,borderRightWidth,borderSpacing,borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,borderTopColor,borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,borderWidth,bottom,boxAlign,boxDecorationBreak,boxDirection,boxFlex,boxFlexGroup,boxLines,boxOrdinalGroup,boxOrient,boxPack,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,captionSide,caret,caretColor,caretShape,clear,clip,clipPath,color,colorScheme,columnCount,columnFill,columnGap,columnRule,columnRuleColor,columnRuleStyle,columnRuleWidth,columnSpan,columnWidth,columns,contain,containIntrinsicSize,containIntrinsicBlockSize,containIntrinsicHeight,containIntrinsicInlineSize,containIntrinsicWidth,container,containerName,containerType,content,contentVisibility,counterIncrement,counterReset,counterSet,cursor,direction,display,emptyCells,filter,flex,flexBasis,flexDirection,flexFlow,flexGrow,flexShrink,flexWrap,float,font,fontFamily,fontFeatureSettings,fontKerning,fontLanguageOverride,fontOpticalSizing,fontPalette,fontVariationSettings,fontSize,fontSizeAdjust,fontSmooth,fontStretch,fontStyle,fontSynthesis,fontVariant,fontVariantAlternates,fontVariantCaps,fontVariantEastAsian,fontVariantEmoji,fontVariantLigatures,fontVariantNumeric,fontVariantPosition,fontWeight,forcedColorAdjust,gap,grid,gridArea,gridAutoColumns,gridAutoFlow,gridAutoRows,gridColumn,gridColumnEnd,gridColumnGap,gridColumnStart,gridGap,gridRow,gridRowEnd,gridRowGap,gridRowStart,gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,hangingPunctuation,height,hyphenateCharacter,hyphenateLimitChars,hyphens,imageOrientation,imageRendering,imageResolution,imeMode,initialLetter,initialLetterAlign,inlineSize,inputSecurity,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,insetInlineStart,isolation,justifyContent,justifyItems,justifySelf,justifyTracks,left,letterSpacing,lineBreak,lineClamp,lineHeight,lineHeightStep,listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marginTrim,mask,maskBorder,maskBorderMode,maskBorderOutset,maskBorderRepeat,maskBorderSlice,maskBorderSource,maskBorderWidth,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,masonryAutoFlow,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxLines,maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,objectFit,objectPosition,offset,offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,overflowClipBox,overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,pageBreakInside,paintOrder,perspective,perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,printColorAdjust,quotes,resize,right,rotate,rowGap,rubyAlign,rubyMerge,rubyPosition,scale,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,scrollMargin,scrollMarginBlock,scrollMarginBlockStart,scrollMarginBlockEnd,scrollMarginBottom,scrollMarginInline,scrollMarginInlineStart,scrollMarginInlineEnd,scrollMarginLeft,scrollMarginRight,scrollMarginTop,scrollPadding,scrollPaddingBlock,scrollPaddingBlockStart,scrollPaddingBlockEnd,scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineStart,scrollPaddingInlineEnd,scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapCoordinate,scrollSnapDestination,scrollSnapPointsX,scrollSnapPointsY,scrollSnapStop,scrollSnapType,scrollSnapTypeX,scrollSnapTypeY,scrollTimeline,scrollTimelineAxis,scrollTimelineName,shapeImageThreshold,shapeMargin,shapeOutside,tabSize,tableLayout,textAlign,textAlignLast,textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkip,textDecorationSkipInk,textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,textIndent,textJustify,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textTransform,textUnderlineOffset,textUnderlinePosition,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,transitionDelay,transitionDuration,transitionProperty,transitionTimingFunction,translate,unicodeBidi,userSelect,verticalAlign,viewTransitionName,visibility,whiteSpace,widows,width,willChange,wordBreak,wordSpacing,wordWrap,writingMode,zIndex,zoom,alignmentBaseline,baselineShift,clipRule,colorInterpolation,colorRendering,dominantBaseline,fill,fillOpacity,fillRule,floodColor,floodOpacity,glyphOrientationVertical,lightingColor,marker,markerEnd,markerMid,markerStart,shapeRendering,stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,strokeWidth,textAnchor,vectorEffect";\nvar allCssProperties = cssPropertiesStr.split(",").concat(userGenerated);\nvar properties = new Map(allCssProperties.map((prop) => [prop, true]));\nfunction memo(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (arg) => {\n if (cache[arg] === void 0)\n cache[arg] = fn(arg);\n return cache[arg];\n };\n}\nvar cssPropertySelectorRegex = /&|@/;\nvar isCssProperty = /* @__PURE__ */ memo((prop) => {\n return properties.has(prop) || prop.startsWith("--") || cssPropertySelectorRegex.test(prop);\n});\nexport {\n allCssProperties,\n isCssProperty\n};\n'
|
|
895
922
|
};
|
|
896
923
|
|
|
897
924
|
// src/artifacts/js/is-valid-prop.ts
|
|
898
925
|
var import_outdent9 = require("outdent");
|
|
899
926
|
var import_ts_pattern = require("ts-pattern");
|
|
900
927
|
var cssPropRegex = /var cssPropertiesStr = ".*?";/;
|
|
901
|
-
var memoFnDeclarationRegex = /function memo(.+?)\nvar
|
|
928
|
+
var memoFnDeclarationRegex = /function memo(.+?)\nvar cssPropertySelectorRegex/s;
|
|
902
929
|
function generateIsValidProp(ctx) {
|
|
903
930
|
if (ctx.isTemplateLiteralSyntax)
|
|
904
931
|
return;
|
|
@@ -907,7 +934,7 @@ function generateIsValidProp(ctx) {
|
|
|
907
934
|
'var userGeneratedStr = "";',
|
|
908
935
|
`var userGeneratedStr = "${(0, import_ts_pattern.match)(ctx.jsx.styleProps).with("all", () => Array.from(new Set(ctx.properties)).join(",")).with("minimal", () => "css").with("none", () => "").exhaustive()}"`
|
|
909
936
|
);
|
|
910
|
-
content = content.replace(memoFnDeclarationRegex, "var
|
|
937
|
+
content = content.replace(memoFnDeclarationRegex, "var cssPropertySelectorRegex");
|
|
911
938
|
if (ctx.jsx.styleProps === "minimal" || ctx.jsx.styleProps === "none") {
|
|
912
939
|
content = content.replace("/* @__PURE__ */ memo(", "/* @__PURE__ */ (");
|
|
913
940
|
content = content.replace(cssPropRegex, 'var cssPropertiesStr = "";');
|
|
@@ -2990,9 +3017,9 @@ function generatePropTypes(ctx) {
|
|
|
2990
3017
|
${result.join("\n")}
|
|
2991
3018
|
|
|
2992
3019
|
export type PropertyValue<T extends string> = T extends keyof PropertyTypes
|
|
2993
|
-
? ConditionalValue<PropertyTypes[T]${strictText}>
|
|
3020
|
+
? ConditionalValue<PropertyTypes[T]${strictText} | (string & {})>
|
|
2994
3021
|
: T extends keyof CssProperties
|
|
2995
|
-
? ConditionalValue<CssProperties[T]>
|
|
3022
|
+
? ConditionalValue<CssProperties[T] | (string & {})>
|
|
2996
3023
|
: ConditionalValue<string | number>
|
|
2997
3024
|
`;
|
|
2998
3025
|
}
|
|
@@ -3158,7 +3185,7 @@ function setupSva(ctx) {
|
|
|
3158
3185
|
};
|
|
3159
3186
|
}
|
|
3160
3187
|
function setupCx(ctx) {
|
|
3161
|
-
const code = generateCx();
|
|
3188
|
+
const code = generateCx(ctx);
|
|
3162
3189
|
return {
|
|
3163
3190
|
dir: ctx.paths.css,
|
|
3164
3191
|
files: [
|
|
@@ -3324,7 +3351,7 @@ var generateFlattenedCss = (ctx) => (options) => {
|
|
|
3324
3351
|
const { files, resolve } = options;
|
|
3325
3352
|
const { theme: { keyframes } = {}, preflight, minify, staticCss } = ctx.config;
|
|
3326
3353
|
const unresolved = [
|
|
3327
|
-
|
|
3354
|
+
ctx.layerString,
|
|
3328
3355
|
preflight && "@import './reset.css';",
|
|
3329
3356
|
"@import './global.css';",
|
|
3330
3357
|
staticCss && "@import './static.css';",
|
|
@@ -3341,7 +3368,9 @@ var generateFlattenedCss = (ctx) => (options) => {
|
|
|
3341
3368
|
].filter(Boolean).join("\n\n") : unresolved
|
|
3342
3369
|
});
|
|
3343
3370
|
sheet.append(...files);
|
|
3344
|
-
|
|
3371
|
+
const output = sheet.toCss({ optimize: true, minify });
|
|
3372
|
+
ctx.hooks.callHook("generator:css", "styles.css", output);
|
|
3373
|
+
return output;
|
|
3345
3374
|
};
|
|
3346
3375
|
|
|
3347
3376
|
// src/artifacts/css/parser-css.ts
|
|
@@ -3473,12 +3502,20 @@ var getBaseEngine = (conf) => {
|
|
|
3473
3502
|
});
|
|
3474
3503
|
const compositionContext = { conditions, utility };
|
|
3475
3504
|
(0, import_core5.assignCompositions)(compositions, compositionContext);
|
|
3505
|
+
const layers = config.layers;
|
|
3506
|
+
const layerNames = Object.values(layers);
|
|
3507
|
+
const isValidLayerRule = (0, import_shared5.memo)((layerRule) => {
|
|
3508
|
+
const names = new Set(layerRule.split(",").map((name) => name.trim()));
|
|
3509
|
+
return names.size >= 5 && layerNames.every((name) => names.has(name));
|
|
3510
|
+
});
|
|
3511
|
+
const layerString = `@layer ${layerNames.join(", ")};`;
|
|
3476
3512
|
const createSheetContext = () => ({
|
|
3477
3513
|
root: import_postcss3.default.root(),
|
|
3478
3514
|
conditions,
|
|
3479
3515
|
utility,
|
|
3480
3516
|
hash: hash.className,
|
|
3481
|
-
helpers
|
|
3517
|
+
helpers,
|
|
3518
|
+
layers
|
|
3482
3519
|
});
|
|
3483
3520
|
const createSheet = (options) => {
|
|
3484
3521
|
const sheetContext = createSheetContext();
|
|
@@ -3514,7 +3551,12 @@ var getBaseEngine = (conf) => {
|
|
|
3514
3551
|
recipes,
|
|
3515
3552
|
conditions,
|
|
3516
3553
|
createSheetContext,
|
|
3517
|
-
createSheet
|
|
3554
|
+
createSheet,
|
|
3555
|
+
// cascade layer
|
|
3556
|
+
layers,
|
|
3557
|
+
isValidLayerRule,
|
|
3558
|
+
layerString,
|
|
3559
|
+
layerNames
|
|
3518
3560
|
};
|
|
3519
3561
|
};
|
|
3520
3562
|
|
|
@@ -3623,7 +3665,15 @@ var defaults = (conf) => ({
|
|
|
3623
3665
|
outExtension: "mjs",
|
|
3624
3666
|
shorthands: true,
|
|
3625
3667
|
syntax: "object-literal",
|
|
3626
|
-
...conf.config
|
|
3668
|
+
...conf.config,
|
|
3669
|
+
layers: {
|
|
3670
|
+
reset: "reset",
|
|
3671
|
+
base: "base",
|
|
3672
|
+
tokens: "tokens",
|
|
3673
|
+
recipes: "recipes",
|
|
3674
|
+
utilities: "utilities",
|
|
3675
|
+
...conf.config.layers
|
|
3676
|
+
}
|
|
3627
3677
|
}
|
|
3628
3678
|
});
|
|
3629
3679
|
var getImportMap = (outdir) => ({
|
package/dist/index.mjs
CHANGED
|
@@ -175,7 +175,7 @@ function generateKeyframeCss(ctx) {
|
|
|
175
175
|
var css = String.raw;
|
|
176
176
|
function generateResetCss(ctx, scope = "") {
|
|
177
177
|
const selector = scope ? `${scope} ` : "";
|
|
178
|
-
const output = css`@layer reset {
|
|
178
|
+
const output = css`@layer ${ctx.layers.reset} {
|
|
179
179
|
${selector}* {
|
|
180
180
|
margin: 0;
|
|
181
181
|
padding: 0;
|
|
@@ -442,7 +442,7 @@ function generateTokenCss(ctx) {
|
|
|
442
442
|
}
|
|
443
443
|
}
|
|
444
444
|
const css2 = results.join("\n\n");
|
|
445
|
-
const output = `@layer tokens {
|
|
445
|
+
const output = `@layer ${ctx.layers.tokens} {
|
|
446
446
|
${prettifyCss(cleanupSelectors(css2, root))}
|
|
447
447
|
}
|
|
448
448
|
`;
|
|
@@ -592,11 +592,7 @@ function generateCssFn(ctx) {
|
|
|
592
592
|
config: { hash, prefix },
|
|
593
593
|
conditions
|
|
594
594
|
} = ctx;
|
|
595
|
-
const { separator } = utility;
|
|
596
|
-
const shorthandsByProp = Array.from(utility.shorthands.entries()).reduce((acc, [shorthand, prop]) => {
|
|
597
|
-
acc[prop] = shorthand;
|
|
598
|
-
return acc;
|
|
599
|
-
}, {});
|
|
595
|
+
const { separator, getPropShorthands } = utility;
|
|
600
596
|
return {
|
|
601
597
|
dts: outdent4`
|
|
602
598
|
import type { SystemStyleObject } from '../types'
|
|
@@ -613,25 +609,39 @@ function generateCssFn(ctx) {
|
|
|
613
609
|
${ctx.file.import("sortConditions, finalizeConditions", "./conditions")}
|
|
614
610
|
|
|
615
611
|
const utilities = "${utility.entries().map(([prop, className]) => {
|
|
616
|
-
const
|
|
617
|
-
|
|
612
|
+
const shorthandList = getPropShorthands(prop);
|
|
613
|
+
const result = [
|
|
614
|
+
prop,
|
|
615
|
+
[
|
|
616
|
+
className,
|
|
617
|
+
shorthandList.length ? (
|
|
618
|
+
// mark shorthand equal to className as 1 to save a few bytes
|
|
619
|
+
shorthandList.map((shorthand) => shorthand === className ? 1 : shorthand).join("/")
|
|
620
|
+
) : null
|
|
621
|
+
].filter(Boolean).join("/")
|
|
622
|
+
].join(":");
|
|
623
|
+
return result;
|
|
618
624
|
}).join(",")}"
|
|
619
625
|
|
|
620
|
-
const
|
|
626
|
+
const classNameByProp = new Map()
|
|
621
627
|
${utility.hasShorthand ? outdent4`
|
|
622
|
-
const shorthands =
|
|
628
|
+
const shorthands = new Map()
|
|
623
629
|
utilities.split(',').forEach((utility) => {
|
|
624
630
|
const [prop, meta] = utility.split(':')
|
|
625
|
-
const [className,
|
|
626
|
-
|
|
627
|
-
if (
|
|
631
|
+
const [className, ...shorthandList] = meta.split('/')
|
|
632
|
+
classNameByProp.set(prop, className)
|
|
633
|
+
if (shorthandList.length) {
|
|
634
|
+
shorthandList.forEach((shorthand) => {
|
|
635
|
+
shorthands.set(shorthand === '1' ? className : shorthand, prop)
|
|
636
|
+
})
|
|
637
|
+
}
|
|
628
638
|
})
|
|
629
639
|
|
|
630
|
-
const resolveShorthand = (prop) => shorthands
|
|
640
|
+
const resolveShorthand = (prop) => shorthands.get(prop) || prop
|
|
631
641
|
` : outdent4`
|
|
632
642
|
utilities.split(',').forEach((utility) => {
|
|
633
643
|
const [prop, className] = utility.split(':')
|
|
634
|
-
|
|
644
|
+
classNameByProp.set(prop, className)
|
|
635
645
|
})
|
|
636
646
|
`}
|
|
637
647
|
|
|
@@ -646,15 +656,21 @@ function generateCssFn(ctx) {
|
|
|
646
656
|
${prefix ? "prefix: " + JSON.stringify(prefix) + "," : ""}
|
|
647
657
|
transform: ${utility.hasShorthand ? `(prop, value) => {
|
|
648
658
|
const key = resolveShorthand(prop)
|
|
649
|
-
const propKey =
|
|
659
|
+
const propKey = classNameByProp.get(key) || hypenateProperty(key)
|
|
650
660
|
return { className: \`\${propKey}${separator}\${withoutSpace(value)}\` }
|
|
651
|
-
}` : `(key, value) => ({ className: \`\${
|
|
661
|
+
}` : `(key, value) => ({ className: \`\${classNameByProp.get(key) || hypenateProperty(key)}${separator}\${withoutSpace(value)}\` })`},
|
|
652
662
|
${utility.hasShorthand ? "hasShorthand: true," : ""}
|
|
653
663
|
resolveShorthand: ${utility.hasShorthand ? "resolveShorthand" : "prop => prop"},
|
|
654
664
|
}
|
|
655
665
|
}
|
|
656
666
|
|
|
657
|
-
|
|
667
|
+
const cssFn = createCss(context)
|
|
668
|
+
export const cssCache = new Map()
|
|
669
|
+
export const css = (styles) => {
|
|
670
|
+
const classNames = cssFn(styles)
|
|
671
|
+
cssCache.set(classNames, styles)
|
|
672
|
+
return classNames
|
|
673
|
+
}
|
|
658
674
|
css.raw = (styles) => styles
|
|
659
675
|
|
|
660
676
|
export const { mergeCss, assignCss } = createMergeCss(context)
|
|
@@ -792,23 +808,34 @@ function generateCvaFn(ctx) {
|
|
|
792
808
|
|
|
793
809
|
// src/artifacts/js/cx.ts
|
|
794
810
|
import outdent7 from "outdent";
|
|
795
|
-
function generateCx() {
|
|
811
|
+
function generateCx(ctx) {
|
|
796
812
|
return {
|
|
797
813
|
js: outdent7`
|
|
814
|
+
${ctx.file.import("cssCache, css, mergeCss", "./css")}
|
|
815
|
+
|
|
798
816
|
function cx() {
|
|
817
|
+
const objs = []
|
|
799
818
|
let str = '',
|
|
800
819
|
i = 0,
|
|
801
820
|
arg
|
|
802
|
-
|
|
821
|
+
|
|
803
822
|
for (; i < arguments.length; ) {
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
823
|
+
arg = arguments[i++]
|
|
824
|
+
if (!arg || typeof arg !== 'string') continue
|
|
825
|
+
|
|
826
|
+
if (cssCache.has(arg)) {
|
|
827
|
+
objs.push(cssCache.get(arg))
|
|
828
|
+
continue
|
|
807
829
|
}
|
|
830
|
+
|
|
831
|
+
str && (str += ' ')
|
|
832
|
+
str += arg.toString()
|
|
808
833
|
}
|
|
809
|
-
|
|
834
|
+
|
|
835
|
+
const merged = mergeCss(...objs)
|
|
836
|
+
return [css(merged), str].join(' ')
|
|
810
837
|
}
|
|
811
|
-
|
|
838
|
+
|
|
812
839
|
export { cx }
|
|
813
840
|
`,
|
|
814
841
|
dts: outdent7`
|
|
@@ -860,14 +887,14 @@ function generateHelpers(ctx) {
|
|
|
860
887
|
|
|
861
888
|
// src/artifacts/generated/is-valid-prop.mjs.json
|
|
862
889
|
var is_valid_prop_mjs_default = {
|
|
863
|
-
content: '// src/index.ts\nvar userGeneratedStr = "";\nvar userGenerated = userGeneratedStr.split(",");\nvar cssPropertiesStr = "WebkitAppearance,WebkitBorderBefore,WebkitBorderBeforeColor,WebkitBorderBeforeStyle,WebkitBorderBeforeWidth,WebkitBoxReflect,WebkitLineClamp,WebkitMask,WebkitMaskAttachment,WebkitMaskClip,WebkitMaskComposite,WebkitMaskImage,WebkitMaskOrigin,WebkitMaskPosition,WebkitMaskPositionX,WebkitMaskPositionY,WebkitMaskRepeat,WebkitMaskRepeatX,WebkitMaskRepeatY,WebkitMaskSize,WebkitOverflowScrolling,WebkitTapHighlightColor,WebkitTextFillColor,WebkitTextStroke,WebkitTextStrokeColor,WebkitTextStrokeWidth,WebkitTouchCallout,WebkitUserModify,accentColor,alignContent,alignItems,alignSelf,alignTracks,all,animation,animationComposition,animationDelay,animationDirection,animationDuration,animationFillMode,animationIterationCount,animationName,animationPlayState,animationTimingFunction,animationTimeline,appearance,aspectRatio,azimuth,backdropFilter,backfaceVisibility,background,backgroundAttachment,backgroundBlendMode,backgroundClip,backgroundColor,backgroundImage,backgroundOrigin,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundRepeat,backgroundSize,blockOverflow,blockSize,border,borderBlock,borderBlockColor,borderBlockStyle,borderBlockWidth,borderBlockEnd,borderBlockEndColor,borderBlockEndStyle,borderBlockEndWidth,borderBlockStart,borderBlockStartColor,borderBlockStartStyle,borderBlockStartWidth,borderBottom,borderBottomColor,borderBottomLeftRadius,borderBottomRightRadius,borderBottomStyle,borderBottomWidth,borderCollapse,borderColor,borderEndEndRadius,borderEndStartRadius,borderImage,borderImageOutset,borderImageRepeat,borderImageSlice,borderImageSource,borderImageWidth,borderInline,borderInlineEnd,borderInlineColor,borderInlineStyle,borderInlineWidth,borderInlineEndColor,borderInlineEndStyle,borderInlineEndWidth,borderInlineStart,borderInlineStartColor,borderInlineStartStyle,borderInlineStartWidth,borderLeft,borderLeftColor,borderLeftStyle,borderLeftWidth,borderRadius,borderRight,borderRightColor,borderRightStyle,borderRightWidth,borderSpacing,borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,borderTopColor,borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,borderWidth,bottom,boxAlign,boxDecorationBreak,boxDirection,boxFlex,boxFlexGroup,boxLines,boxOrdinalGroup,boxOrient,boxPack,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,captionSide,caret,caretColor,caretShape,clear,clip,clipPath,color,colorScheme,columnCount,columnFill,columnGap,columnRule,columnRuleColor,columnRuleStyle,columnRuleWidth,columnSpan,columnWidth,columns,contain,containIntrinsicSize,containIntrinsicBlockSize,containIntrinsicHeight,containIntrinsicInlineSize,containIntrinsicWidth,container,containerName,containerType,content,contentVisibility,counterIncrement,counterReset,counterSet,cursor,direction,display,emptyCells,filter,flex,flexBasis,flexDirection,flexFlow,flexGrow,flexShrink,flexWrap,float,font,fontFamily,fontFeatureSettings,fontKerning,fontLanguageOverride,fontOpticalSizing,fontPalette,fontVariationSettings,fontSize,fontSizeAdjust,fontSmooth,fontStretch,fontStyle,fontSynthesis,fontVariant,fontVariantAlternates,fontVariantCaps,fontVariantEastAsian,fontVariantEmoji,fontVariantLigatures,fontVariantNumeric,fontVariantPosition,fontWeight,forcedColorAdjust,gap,grid,gridArea,gridAutoColumns,gridAutoFlow,gridAutoRows,gridColumn,gridColumnEnd,gridColumnGap,gridColumnStart,gridGap,gridRow,gridRowEnd,gridRowGap,gridRowStart,gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,hangingPunctuation,height,hyphenateCharacter,hyphenateLimitChars,hyphens,imageOrientation,imageRendering,imageResolution,imeMode,initialLetter,initialLetterAlign,inlineSize,inputSecurity,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,insetInlineStart,isolation,justifyContent,justifyItems,justifySelf,justifyTracks,left,letterSpacing,lineBreak,lineClamp,lineHeight,lineHeightStep,listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marginTrim,mask,maskBorder,maskBorderMode,maskBorderOutset,maskBorderRepeat,maskBorderSlice,maskBorderSource,maskBorderWidth,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,masonryAutoFlow,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxLines,maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,objectFit,objectPosition,offset,offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,overflowClipBox,overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,pageBreakInside,paintOrder,perspective,perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,printColorAdjust,quotes,resize,right,rotate,rowGap,rubyAlign,rubyMerge,rubyPosition,scale,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,scrollMargin,scrollMarginBlock,scrollMarginBlockStart,scrollMarginBlockEnd,scrollMarginBottom,scrollMarginInline,scrollMarginInlineStart,scrollMarginInlineEnd,scrollMarginLeft,scrollMarginRight,scrollMarginTop,scrollPadding,scrollPaddingBlock,scrollPaddingBlockStart,scrollPaddingBlockEnd,scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineStart,scrollPaddingInlineEnd,scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapCoordinate,scrollSnapDestination,scrollSnapPointsX,scrollSnapPointsY,scrollSnapStop,scrollSnapType,scrollSnapTypeX,scrollSnapTypeY,scrollTimeline,scrollTimelineAxis,scrollTimelineName,shapeImageThreshold,shapeMargin,shapeOutside,tabSize,tableLayout,textAlign,textAlignLast,textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkip,textDecorationSkipInk,textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,textIndent,textJustify,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textTransform,textUnderlineOffset,textUnderlinePosition,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,transitionDelay,transitionDuration,transitionProperty,transitionTimingFunction,translate,unicodeBidi,userSelect,verticalAlign,viewTransitionName,visibility,whiteSpace,widows,width,willChange,wordBreak,wordSpacing,wordWrap,writingMode,zIndex,zoom";\nvar allCssProperties = cssPropertiesStr.split(",").concat(userGenerated);\nvar properties = new Map(allCssProperties.map((prop) => [prop, true]));\nfunction memo(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (arg) => {\n if (cache[arg] === void 0)\n cache[arg] = fn(arg);\n return cache[arg];\n };\n}\nvar
|
|
890
|
+
content: '// src/index.ts\nvar userGeneratedStr = "";\nvar userGenerated = userGeneratedStr.split(",");\nvar cssPropertiesStr = "WebkitAppearance,WebkitBorderBefore,WebkitBorderBeforeColor,WebkitBorderBeforeStyle,WebkitBorderBeforeWidth,WebkitBoxReflect,WebkitLineClamp,WebkitMask,WebkitMaskAttachment,WebkitMaskClip,WebkitMaskComposite,WebkitMaskImage,WebkitMaskOrigin,WebkitMaskPosition,WebkitMaskPositionX,WebkitMaskPositionY,WebkitMaskRepeat,WebkitMaskRepeatX,WebkitMaskRepeatY,WebkitMaskSize,WebkitOverflowScrolling,WebkitTapHighlightColor,WebkitTextFillColor,WebkitTextStroke,WebkitTextStrokeColor,WebkitTextStrokeWidth,WebkitTouchCallout,WebkitUserModify,accentColor,alignContent,alignItems,alignSelf,alignTracks,all,animation,animationComposition,animationDelay,animationDirection,animationDuration,animationFillMode,animationIterationCount,animationName,animationPlayState,animationTimingFunction,animationTimeline,appearance,aspectRatio,azimuth,backdropFilter,backfaceVisibility,background,backgroundAttachment,backgroundBlendMode,backgroundClip,backgroundColor,backgroundImage,backgroundOrigin,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundRepeat,backgroundSize,blockOverflow,blockSize,border,borderBlock,borderBlockColor,borderBlockStyle,borderBlockWidth,borderBlockEnd,borderBlockEndColor,borderBlockEndStyle,borderBlockEndWidth,borderBlockStart,borderBlockStartColor,borderBlockStartStyle,borderBlockStartWidth,borderBottom,borderBottomColor,borderBottomLeftRadius,borderBottomRightRadius,borderBottomStyle,borderBottomWidth,borderCollapse,borderColor,borderEndEndRadius,borderEndStartRadius,borderImage,borderImageOutset,borderImageRepeat,borderImageSlice,borderImageSource,borderImageWidth,borderInline,borderInlineEnd,borderInlineColor,borderInlineStyle,borderInlineWidth,borderInlineEndColor,borderInlineEndStyle,borderInlineEndWidth,borderInlineStart,borderInlineStartColor,borderInlineStartStyle,borderInlineStartWidth,borderLeft,borderLeftColor,borderLeftStyle,borderLeftWidth,borderRadius,borderRight,borderRightColor,borderRightStyle,borderRightWidth,borderSpacing,borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,borderTopColor,borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,borderWidth,bottom,boxAlign,boxDecorationBreak,boxDirection,boxFlex,boxFlexGroup,boxLines,boxOrdinalGroup,boxOrient,boxPack,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,captionSide,caret,caretColor,caretShape,clear,clip,clipPath,color,colorScheme,columnCount,columnFill,columnGap,columnRule,columnRuleColor,columnRuleStyle,columnRuleWidth,columnSpan,columnWidth,columns,contain,containIntrinsicSize,containIntrinsicBlockSize,containIntrinsicHeight,containIntrinsicInlineSize,containIntrinsicWidth,container,containerName,containerType,content,contentVisibility,counterIncrement,counterReset,counterSet,cursor,direction,display,emptyCells,filter,flex,flexBasis,flexDirection,flexFlow,flexGrow,flexShrink,flexWrap,float,font,fontFamily,fontFeatureSettings,fontKerning,fontLanguageOverride,fontOpticalSizing,fontPalette,fontVariationSettings,fontSize,fontSizeAdjust,fontSmooth,fontStretch,fontStyle,fontSynthesis,fontVariant,fontVariantAlternates,fontVariantCaps,fontVariantEastAsian,fontVariantEmoji,fontVariantLigatures,fontVariantNumeric,fontVariantPosition,fontWeight,forcedColorAdjust,gap,grid,gridArea,gridAutoColumns,gridAutoFlow,gridAutoRows,gridColumn,gridColumnEnd,gridColumnGap,gridColumnStart,gridGap,gridRow,gridRowEnd,gridRowGap,gridRowStart,gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,hangingPunctuation,height,hyphenateCharacter,hyphenateLimitChars,hyphens,imageOrientation,imageRendering,imageResolution,imeMode,initialLetter,initialLetterAlign,inlineSize,inputSecurity,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,insetInlineStart,isolation,justifyContent,justifyItems,justifySelf,justifyTracks,left,letterSpacing,lineBreak,lineClamp,lineHeight,lineHeightStep,listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marginTrim,mask,maskBorder,maskBorderMode,maskBorderOutset,maskBorderRepeat,maskBorderSlice,maskBorderSource,maskBorderWidth,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,masonryAutoFlow,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxLines,maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,objectFit,objectPosition,offset,offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,overflowClipBox,overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,pageBreakInside,paintOrder,perspective,perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,printColorAdjust,quotes,resize,right,rotate,rowGap,rubyAlign,rubyMerge,rubyPosition,scale,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,scrollMargin,scrollMarginBlock,scrollMarginBlockStart,scrollMarginBlockEnd,scrollMarginBottom,scrollMarginInline,scrollMarginInlineStart,scrollMarginInlineEnd,scrollMarginLeft,scrollMarginRight,scrollMarginTop,scrollPadding,scrollPaddingBlock,scrollPaddingBlockStart,scrollPaddingBlockEnd,scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineStart,scrollPaddingInlineEnd,scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapCoordinate,scrollSnapDestination,scrollSnapPointsX,scrollSnapPointsY,scrollSnapStop,scrollSnapType,scrollSnapTypeX,scrollSnapTypeY,scrollTimeline,scrollTimelineAxis,scrollTimelineName,shapeImageThreshold,shapeMargin,shapeOutside,tabSize,tableLayout,textAlign,textAlignLast,textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkip,textDecorationSkipInk,textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,textIndent,textJustify,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textTransform,textUnderlineOffset,textUnderlinePosition,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,transitionDelay,transitionDuration,transitionProperty,transitionTimingFunction,translate,unicodeBidi,userSelect,verticalAlign,viewTransitionName,visibility,whiteSpace,widows,width,willChange,wordBreak,wordSpacing,wordWrap,writingMode,zIndex,zoom,alignmentBaseline,baselineShift,clipRule,colorInterpolation,colorRendering,dominantBaseline,fill,fillOpacity,fillRule,floodColor,floodOpacity,glyphOrientationVertical,lightingColor,marker,markerEnd,markerMid,markerStart,shapeRendering,stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,strokeWidth,textAnchor,vectorEffect";\nvar allCssProperties = cssPropertiesStr.split(",").concat(userGenerated);\nvar properties = new Map(allCssProperties.map((prop) => [prop, true]));\nfunction memo(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (arg) => {\n if (cache[arg] === void 0)\n cache[arg] = fn(arg);\n return cache[arg];\n };\n}\nvar cssPropertySelectorRegex = /&|@/;\nvar isCssProperty = /* @__PURE__ */ memo((prop) => {\n return properties.has(prop) || prop.startsWith("--") || cssPropertySelectorRegex.test(prop);\n});\nexport {\n allCssProperties,\n isCssProperty\n};\n'
|
|
864
891
|
};
|
|
865
892
|
|
|
866
893
|
// src/artifacts/js/is-valid-prop.ts
|
|
867
894
|
import { outdent as outdent9 } from "outdent";
|
|
868
895
|
import { match } from "ts-pattern";
|
|
869
896
|
var cssPropRegex = /var cssPropertiesStr = ".*?";/;
|
|
870
|
-
var memoFnDeclarationRegex = /function memo(.+?)\nvar
|
|
897
|
+
var memoFnDeclarationRegex = /function memo(.+?)\nvar cssPropertySelectorRegex/s;
|
|
871
898
|
function generateIsValidProp(ctx) {
|
|
872
899
|
if (ctx.isTemplateLiteralSyntax)
|
|
873
900
|
return;
|
|
@@ -876,7 +903,7 @@ function generateIsValidProp(ctx) {
|
|
|
876
903
|
'var userGeneratedStr = "";',
|
|
877
904
|
`var userGeneratedStr = "${match(ctx.jsx.styleProps).with("all", () => Array.from(new Set(ctx.properties)).join(",")).with("minimal", () => "css").with("none", () => "").exhaustive()}"`
|
|
878
905
|
);
|
|
879
|
-
content = content.replace(memoFnDeclarationRegex, "var
|
|
906
|
+
content = content.replace(memoFnDeclarationRegex, "var cssPropertySelectorRegex");
|
|
880
907
|
if (ctx.jsx.styleProps === "minimal" || ctx.jsx.styleProps === "none") {
|
|
881
908
|
content = content.replace("/* @__PURE__ */ memo(", "/* @__PURE__ */ (");
|
|
882
909
|
content = content.replace(cssPropRegex, 'var cssPropertiesStr = "";');
|
|
@@ -2959,9 +2986,9 @@ function generatePropTypes(ctx) {
|
|
|
2959
2986
|
${result.join("\n")}
|
|
2960
2987
|
|
|
2961
2988
|
export type PropertyValue<T extends string> = T extends keyof PropertyTypes
|
|
2962
|
-
? ConditionalValue<PropertyTypes[T]${strictText}>
|
|
2989
|
+
? ConditionalValue<PropertyTypes[T]${strictText} | (string & {})>
|
|
2963
2990
|
: T extends keyof CssProperties
|
|
2964
|
-
? ConditionalValue<CssProperties[T]>
|
|
2991
|
+
? ConditionalValue<CssProperties[T] | (string & {})>
|
|
2965
2992
|
: ConditionalValue<string | number>
|
|
2966
2993
|
`;
|
|
2967
2994
|
}
|
|
@@ -3127,7 +3154,7 @@ function setupSva(ctx) {
|
|
|
3127
3154
|
};
|
|
3128
3155
|
}
|
|
3129
3156
|
function setupCx(ctx) {
|
|
3130
|
-
const code = generateCx();
|
|
3157
|
+
const code = generateCx(ctx);
|
|
3131
3158
|
return {
|
|
3132
3159
|
dir: ctx.paths.css,
|
|
3133
3160
|
files: [
|
|
@@ -3293,7 +3320,7 @@ var generateFlattenedCss = (ctx) => (options) => {
|
|
|
3293
3320
|
const { files, resolve } = options;
|
|
3294
3321
|
const { theme: { keyframes } = {}, preflight, minify, staticCss } = ctx.config;
|
|
3295
3322
|
const unresolved = [
|
|
3296
|
-
|
|
3323
|
+
ctx.layerString,
|
|
3297
3324
|
preflight && "@import './reset.css';",
|
|
3298
3325
|
"@import './global.css';",
|
|
3299
3326
|
staticCss && "@import './static.css';",
|
|
@@ -3310,7 +3337,9 @@ var generateFlattenedCss = (ctx) => (options) => {
|
|
|
3310
3337
|
].filter(Boolean).join("\n\n") : unresolved
|
|
3311
3338
|
});
|
|
3312
3339
|
sheet.append(...files);
|
|
3313
|
-
|
|
3340
|
+
const output = sheet.toCss({ optimize: true, minify });
|
|
3341
|
+
ctx.hooks.callHook("generator:css", "styles.css", output);
|
|
3342
|
+
return output;
|
|
3314
3343
|
};
|
|
3315
3344
|
|
|
3316
3345
|
// src/artifacts/css/parser-css.ts
|
|
@@ -3448,12 +3477,20 @@ var getBaseEngine = (conf) => {
|
|
|
3448
3477
|
});
|
|
3449
3478
|
const compositionContext = { conditions, utility };
|
|
3450
3479
|
assignCompositions(compositions, compositionContext);
|
|
3480
|
+
const layers = config.layers;
|
|
3481
|
+
const layerNames = Object.values(layers);
|
|
3482
|
+
const isValidLayerRule = memo((layerRule) => {
|
|
3483
|
+
const names = new Set(layerRule.split(",").map((name) => name.trim()));
|
|
3484
|
+
return names.size >= 5 && layerNames.every((name) => names.has(name));
|
|
3485
|
+
});
|
|
3486
|
+
const layerString = `@layer ${layerNames.join(", ")};`;
|
|
3451
3487
|
const createSheetContext = () => ({
|
|
3452
3488
|
root: postcss3.root(),
|
|
3453
3489
|
conditions,
|
|
3454
3490
|
utility,
|
|
3455
3491
|
hash: hash.className,
|
|
3456
|
-
helpers
|
|
3492
|
+
helpers,
|
|
3493
|
+
layers
|
|
3457
3494
|
});
|
|
3458
3495
|
const createSheet = (options) => {
|
|
3459
3496
|
const sheetContext = createSheetContext();
|
|
@@ -3489,7 +3526,12 @@ var getBaseEngine = (conf) => {
|
|
|
3489
3526
|
recipes,
|
|
3490
3527
|
conditions,
|
|
3491
3528
|
createSheetContext,
|
|
3492
|
-
createSheet
|
|
3529
|
+
createSheet,
|
|
3530
|
+
// cascade layer
|
|
3531
|
+
layers,
|
|
3532
|
+
isValidLayerRule,
|
|
3533
|
+
layerString,
|
|
3534
|
+
layerNames
|
|
3493
3535
|
};
|
|
3494
3536
|
};
|
|
3495
3537
|
|
|
@@ -3598,7 +3640,15 @@ var defaults = (conf) => ({
|
|
|
3598
3640
|
outExtension: "mjs",
|
|
3599
3641
|
shorthands: true,
|
|
3600
3642
|
syntax: "object-literal",
|
|
3601
|
-
...conf.config
|
|
3643
|
+
...conf.config,
|
|
3644
|
+
layers: {
|
|
3645
|
+
reset: "reset",
|
|
3646
|
+
base: "base",
|
|
3647
|
+
tokens: "tokens",
|
|
3648
|
+
recipes: "recipes",
|
|
3649
|
+
utilities: "utilities",
|
|
3650
|
+
...conf.config.layers
|
|
3651
|
+
}
|
|
3602
3652
|
}
|
|
3603
3653
|
});
|
|
3604
3654
|
var getImportMap = (outdir) => ({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pandacss/generator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "The css generator for css panda",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -20,17 +20,17 @@
|
|
|
20
20
|
"pluralize": "8.0.0",
|
|
21
21
|
"postcss": "8.4.27",
|
|
22
22
|
"ts-pattern": "5.0.4",
|
|
23
|
-
"@pandacss/core": "0.
|
|
24
|
-
"@pandacss/is-valid-prop": "0.
|
|
25
|
-
"@pandacss/logger": "0.
|
|
26
|
-
"@pandacss/shared": "0.
|
|
27
|
-
"@pandacss/token-dictionary": "0.
|
|
28
|
-
"@pandacss/types": "0.
|
|
23
|
+
"@pandacss/core": "0.11.1",
|
|
24
|
+
"@pandacss/is-valid-prop": "0.11.1",
|
|
25
|
+
"@pandacss/logger": "0.11.1",
|
|
26
|
+
"@pandacss/shared": "0.11.1",
|
|
27
|
+
"@pandacss/token-dictionary": "0.11.1",
|
|
28
|
+
"@pandacss/types": "0.11.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/pluralize": "0.0.30",
|
|
32
32
|
"hookable": "5.5.3",
|
|
33
|
-
"@pandacss/fixture": "0.
|
|
33
|
+
"@pandacss/fixture": "0.11.1"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"prebuild": "tsx scripts/prebuild.ts",
|