@fastkit/plugboy-vanilla-extract-plugin 1.0.5 → 1.0.7

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/css.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- import { createGlobalTheme, StyleRule, GlobalStyleRule } from '@vanilla-extract/css';
1
+ import { createGlobalTheme, GlobalStyleRule, StyleRule } from '@vanilla-extract/css';
2
2
 
3
3
  type LayerStyleRules = NonNullable<StyleRule['@layer']>[string];
4
+ type ClassNames = string | Array<ClassNames>;
5
+ type ComplexLayerStyleRule = LayerStyleRules | Array<LayerStyleRules | ClassNames>;
4
6
  type LayerGlobalStyleRules = NonNullable<GlobalStyleRule['@layer']>[string];
5
7
  interface LayerStyle {
6
8
  layerName: string;
@@ -8,11 +10,11 @@ interface LayerStyle {
8
10
  /**
9
11
  * @see {@link style}
10
12
  */
11
- (rule: LayerStyleRules, debugId?: string): string;
13
+ (rule: ComplexLayerStyleRule, debugId?: string): string;
12
14
  /**
13
15
  * @see {@link style}
14
16
  */
15
- style(rule: LayerStyleRules, debugId?: string): string;
17
+ style(rule: ComplexLayerStyleRule, debugId?: string): string;
16
18
  /**
17
19
  * @see {@link globalStyle}
18
20
  */
package/dist/css.mjs CHANGED
@@ -71,14 +71,17 @@ function defineLayerStyle(globalNameOrOptions) {
71
71
  const { parent } = options;
72
72
  const layerName = isGlobalOptions(options) ? globalLayer({ parent }, options.globalName) : layer({ parent }, options.debugId);
73
73
  const layerStyle = function layerStyle2(rule, debugId) {
74
- return style(
75
- {
74
+ const rules = Array.isArray(rule) ? rule : [rule];
75
+ const layerAppliedRules = rules.map((rule2) => {
76
+ if (typeof rule2 === "string" || Array.isArray(rule2))
77
+ return rule2;
78
+ return {
76
79
  "@layer": {
77
- [layerName]: rule
80
+ [layerName]: rule2
78
81
  }
79
- },
80
- debugId
81
- );
82
+ };
83
+ });
84
+ return style(layerAppliedRules, debugId);
82
85
  };
83
86
  layerStyle.layerName = layerName;
84
87
  layerStyle.parentLayerName = parent || null;
package/dist/css.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/css/layer.ts","../src/css/theme.ts","../src/css/utils.ts"],"names":["globalStyle","layerStyle","options"],"mappings":"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","sourcesContent":["import {\n style,\n layer,\n globalLayer,\n StyleRule,\n globalStyle,\n GlobalStyleRule,\n createGlobalTheme as _createGlobalTheme,\n} from '@vanilla-extract/css';\nimport { createGlobalTheme } from './theme';\n\ntype LayerStyleRules = NonNullable<StyleRule['@layer']>[string];\n\ntype LayerGlobalStyleRules = NonNullable<GlobalStyleRule['@layer']>[string];\n\nexport interface LayerStyle {\n layerName: string;\n parentLayerName: string | null;\n /**\n * @see {@link style}\n */\n (rule: LayerStyleRules, debugId?: string): string;\n\n /**\n * @see {@link style}\n */\n style(rule: LayerStyleRules, debugId?: string): string;\n\n /**\n * @see {@link globalStyle}\n */\n global(selector: string, rule: LayerGlobalStyleRules): void;\n\n /**\n * @see {@link _createGlobalTheme}\n */\n globalTheme: typeof _createGlobalTheme;\n\n defineNestedLayer(\n globalNameOrNestedOptions?: string | DefineLayerOptions,\n ): LayerStyle;\n\n /**\n * Add global CSS variable with layer\n *\n * @remarks The vanilla-extract API is buggy when handling layered css variables.\n *\n * @param selector - selector\n * @param vars - variables\n */\n pushGlobalVars(selector: string, vars: Record<string, string>): void;\n\n /**\n * Output variables accumulated by `pushGlobalVars`.\n *\n * @remarks The vanilla-extract API is buggy when handling layered css variables.\n */\n dumpGlobalVars(): void;\n}\n\nexport interface DefineLayerParentOptions {\n parent?: string;\n}\n\nexport interface DefineLayerScopedOptions {\n /** Debug ID */\n debugId?: string;\n globalName?: never;\n}\n\nexport interface DefineLayerGlobalOptions {\n debugId?: never;\n /** Parent layer name */\n globalName: string;\n}\n\nexport type DefineLayerOptions =\n | DefineLayerScopedOptions\n | DefineLayerGlobalOptions;\n\nexport type DefineNestableLayerOptions = DefineLayerOptions &\n DefineLayerParentOptions;\n\nfunction isGlobalOptions(\n options: DefineLayerOptions,\n): options is DefineLayerGlobalOptions {\n return 'globalName' in options;\n}\n\nfunction normalizeToObject<T extends DefineLayerOptions>(\n source?: string | T,\n): T {\n if (!source) return {} as T;\n if (typeof source === 'string') return { globalName: source } as unknown as T;\n return source;\n}\n\nexport function defineLayerStyle(\n globalNameOrOptions?: string | DefineNestableLayerOptions,\n): LayerStyle {\n const options = normalizeToObject(globalNameOrOptions);\n const { parent } = options;\n\n const layerName = isGlobalOptions(options)\n ? globalLayer({ parent }, options.globalName)\n : layer({ parent }, options.debugId);\n\n const layerStyle: LayerStyle = function layerStyle(rule, debugId) {\n return style(\n {\n '@layer': {\n [layerName]: rule,\n },\n },\n debugId,\n );\n };\n\n layerStyle.layerName = layerName;\n layerStyle.parentLayerName = parent || null;\n layerStyle.style = layerStyle;\n\n layerStyle.global = function layerGlobalStyle(selector, rule) {\n return globalStyle(selector, {\n '@layer': {\n [layerName]: rule,\n },\n });\n };\n\n layerStyle.globalTheme = (...args: any) =>\n (createGlobalTheme as any)(layerName, ...args);\n\n let _varQueues: [string, Record<string, string>][] = [];\n\n layerStyle.pushGlobalVars = function pushGlobalVars(selector, vars) {\n let queue = _varQueues.find((q) => q[0] === selector);\n if (!queue) {\n queue = [selector, {}];\n _varQueues.push(queue);\n }\n Object.assign(queue[1], vars);\n };\n\n layerStyle.dumpGlobalVars = function dumpGlobalVars() {\n for (const [selector, vars] of _varQueues) {\n layerStyle.global(selector, {\n vars,\n });\n }\n _varQueues = [];\n };\n\n layerStyle.defineNestedLayer = function defineNestedLayer(\n globalNameOrNestedOptions,\n ) {\n const options = normalizeToObject(globalNameOrNestedOptions);\n return defineLayerStyle({\n ...options,\n parent: layerName,\n });\n };\n\n return layerStyle;\n}\n","import { Tokens, ThemeVars, Contract, MapLeafNodes } from './types';\nimport { createThemeContract, globalStyle } from '@vanilla-extract/css';\nimport { assignVars } from './utils';\n\nexport function createGlobalTheme<ThemeTokens extends Tokens>(\n layerName: string,\n selector: string,\n tokens: ThemeTokens,\n): ThemeVars<ThemeTokens>;\nexport function createGlobalTheme<ThemeContract extends Contract>(\n layerName: string,\n selector: string,\n themeContract: ThemeContract,\n tokens: MapLeafNodes<ThemeContract, string>,\n): void;\nexport function createGlobalTheme(\n layerName: string,\n selector: string,\n arg2: any,\n arg3?: any,\n): any {\n const shouldCreateVars = Boolean(!arg3);\n\n const themeVars = shouldCreateVars\n ? createThemeContract(arg2)\n : (arg2 as ThemeVars<any>);\n\n const tokens = shouldCreateVars ? arg2 : arg3;\n\n globalStyle(selector, {\n '@layer': {\n [layerName]: {\n vars: assignVars(themeVars, tokens),\n },\n },\n });\n\n // appendCss(\n // {\n // type: 'global',\n // selector: selector,\n // rule: { vars: assignVars(themeVars, tokens) },\n // },\n // getFileScope(),\n // );\n\n if (shouldCreateVars) {\n return themeVars;\n }\n}\n","import { Contract, MapLeafNodes, CSSVarFunction } from './types';\n\ntype Primitive = string | number | null | undefined;\n\ntype Walkable = {\n [Key in string | number]: Primitive | Walkable;\n};\n\nexport function get(obj: any, path: Array<string>) {\n let result = obj;\n\n for (const key of path) {\n if (!(key in result)) {\n throw new Error(`Path ${path.join(' -> ')} does not exist in object`);\n }\n result = result[key];\n }\n\n return result;\n}\nexport function walkObject<T extends Walkable, MapTo>(\n obj: T,\n fn: (value: Primitive, path: Array<string>) => MapTo,\n path: Array<string> = [],\n): MapLeafNodes<T, MapTo> {\n const clone = obj.constructor();\n\n for (const key in obj) {\n const value = obj[key];\n const currentPath = [...path, key];\n\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n value == null\n ) {\n clone[key] = fn(value as Primitive, currentPath);\n } else if (typeof value === 'object' && !Array.isArray(value)) {\n clone[key] = walkObject(value as Walkable, fn, currentPath);\n } else {\n console.warn(\n `Skipping invalid key \"${currentPath.join(\n '.',\n )}\". Should be a string, number, null or object. Received: \"${\n Array.isArray(value) ? 'Array' : typeof value\n }\"`,\n );\n }\n }\n\n return clone;\n}\n\nexport function assignVars<VarContract extends Contract>(\n varContract: VarContract,\n tokens: MapLeafNodes<VarContract, string>,\n): Record<CSSVarFunction, string> {\n const varSetters: { [cssVarName: string]: string } = {};\n // const { valid, diffString } = validateContract(varContract, tokens);\n\n // if (!valid) {\n // throw new Error(`Tokens don't match contract.\\n${diffString}`);\n // }\n\n walkObject(tokens, (value, path) => {\n varSetters[get(varContract, path)] = String(value);\n });\n\n return varSetters;\n}\n"]}
1
+ {"version":3,"sources":["../src/css/layer.ts","../src/css/theme.ts","../src/css/utils.ts"],"names":["globalStyle","layerStyle","rule","options"],"mappings":"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","sourcesContent":["import {\n style,\n layer,\n globalLayer,\n StyleRule,\n globalStyle,\n GlobalStyleRule,\n createGlobalTheme as _createGlobalTheme,\n} from '@vanilla-extract/css';\nimport { createGlobalTheme } from './theme';\n\ntype LayerStyleRules = NonNullable<StyleRule['@layer']>[string];\n\ntype ClassNames = string | Array<ClassNames>;\n\ntype ComplexLayerStyleRule =\n | LayerStyleRules\n | Array<LayerStyleRules | ClassNames>;\n\ntype LayerGlobalStyleRules = NonNullable<GlobalStyleRule['@layer']>[string];\n\nexport interface LayerStyle {\n layerName: string;\n parentLayerName: string | null;\n /**\n * @see {@link style}\n */\n (rule: ComplexLayerStyleRule, debugId?: string): string;\n\n /**\n * @see {@link style}\n */\n style(rule: ComplexLayerStyleRule, debugId?: string): string;\n\n /**\n * @see {@link globalStyle}\n */\n global(selector: string, rule: LayerGlobalStyleRules): void;\n\n /**\n * @see {@link _createGlobalTheme}\n */\n globalTheme: typeof _createGlobalTheme;\n\n defineNestedLayer(\n globalNameOrNestedOptions?: string | DefineLayerOptions,\n ): LayerStyle;\n\n /**\n * Add global CSS variable with layer\n *\n * @remarks The vanilla-extract API is buggy when handling layered css variables.\n *\n * @param selector - selector\n * @param vars - variables\n */\n pushGlobalVars(selector: string, vars: Record<string, string>): void;\n\n /**\n * Output variables accumulated by `pushGlobalVars`.\n *\n * @remarks The vanilla-extract API is buggy when handling layered css variables.\n */\n dumpGlobalVars(): void;\n}\n\nexport interface DefineLayerParentOptions {\n parent?: string;\n}\n\nexport interface DefineLayerScopedOptions {\n /** Debug ID */\n debugId?: string;\n globalName?: never;\n}\n\nexport interface DefineLayerGlobalOptions {\n debugId?: never;\n /** Parent layer name */\n globalName: string;\n}\n\nexport type DefineLayerOptions =\n | DefineLayerScopedOptions\n | DefineLayerGlobalOptions;\n\nexport type DefineNestableLayerOptions = DefineLayerOptions &\n DefineLayerParentOptions;\n\nfunction isGlobalOptions(\n options: DefineLayerOptions,\n): options is DefineLayerGlobalOptions {\n return 'globalName' in options;\n}\n\nfunction normalizeToObject<T extends DefineLayerOptions>(\n source?: string | T,\n): T {\n if (!source) return {} as T;\n if (typeof source === 'string') return { globalName: source } as unknown as T;\n return source;\n}\n\nexport function defineLayerStyle(\n globalNameOrOptions?: string | DefineNestableLayerOptions,\n): LayerStyle {\n const options = normalizeToObject(globalNameOrOptions);\n const { parent } = options;\n\n const layerName = isGlobalOptions(options)\n ? globalLayer({ parent }, options.globalName)\n : layer({ parent }, options.debugId);\n\n const layerStyle: LayerStyle = function layerStyle(rule, debugId) {\n const rules = Array.isArray(rule) ? rule : [rule];\n const layerAppliedRules = rules.map((rule) => {\n if (typeof rule === 'string' || Array.isArray(rule)) return rule;\n return {\n '@layer': {\n [layerName]: rule,\n },\n };\n });\n return style(layerAppliedRules, debugId);\n };\n\n layerStyle.layerName = layerName;\n layerStyle.parentLayerName = parent || null;\n layerStyle.style = layerStyle;\n\n layerStyle.global = function layerGlobalStyle(selector, rule) {\n return globalStyle(selector, {\n '@layer': {\n [layerName]: rule,\n },\n });\n };\n\n layerStyle.globalTheme = (...args: any) =>\n (createGlobalTheme as any)(layerName, ...args);\n\n let _varQueues: [string, Record<string, string>][] = [];\n\n layerStyle.pushGlobalVars = function pushGlobalVars(selector, vars) {\n let queue = _varQueues.find((q) => q[0] === selector);\n if (!queue) {\n queue = [selector, {}];\n _varQueues.push(queue);\n }\n Object.assign(queue[1], vars);\n };\n\n layerStyle.dumpGlobalVars = function dumpGlobalVars() {\n for (const [selector, vars] of _varQueues) {\n layerStyle.global(selector, {\n vars,\n });\n }\n _varQueues = [];\n };\n\n layerStyle.defineNestedLayer = function defineNestedLayer(\n globalNameOrNestedOptions,\n ) {\n const options = normalizeToObject(globalNameOrNestedOptions);\n return defineLayerStyle({\n ...options,\n parent: layerName,\n });\n };\n\n return layerStyle;\n}\n","import { Tokens, ThemeVars, Contract, MapLeafNodes } from './types';\nimport { createThemeContract, globalStyle } from '@vanilla-extract/css';\nimport { assignVars } from './utils';\n\nexport function createGlobalTheme<ThemeTokens extends Tokens>(\n layerName: string,\n selector: string,\n tokens: ThemeTokens,\n): ThemeVars<ThemeTokens>;\nexport function createGlobalTheme<ThemeContract extends Contract>(\n layerName: string,\n selector: string,\n themeContract: ThemeContract,\n tokens: MapLeafNodes<ThemeContract, string>,\n): void;\nexport function createGlobalTheme(\n layerName: string,\n selector: string,\n arg2: any,\n arg3?: any,\n): any {\n const shouldCreateVars = Boolean(!arg3);\n\n const themeVars = shouldCreateVars\n ? createThemeContract(arg2)\n : (arg2 as ThemeVars<any>);\n\n const tokens = shouldCreateVars ? arg2 : arg3;\n\n globalStyle(selector, {\n '@layer': {\n [layerName]: {\n vars: assignVars(themeVars, tokens),\n },\n },\n });\n\n // appendCss(\n // {\n // type: 'global',\n // selector: selector,\n // rule: { vars: assignVars(themeVars, tokens) },\n // },\n // getFileScope(),\n // );\n\n if (shouldCreateVars) {\n return themeVars;\n }\n}\n","import { Contract, MapLeafNodes, CSSVarFunction } from './types';\n\ntype Primitive = string | number | null | undefined;\n\ntype Walkable = {\n [Key in string | number]: Primitive | Walkable;\n};\n\nexport function get(obj: any, path: Array<string>) {\n let result = obj;\n\n for (const key of path) {\n if (!(key in result)) {\n throw new Error(`Path ${path.join(' -> ')} does not exist in object`);\n }\n result = result[key];\n }\n\n return result;\n}\nexport function walkObject<T extends Walkable, MapTo>(\n obj: T,\n fn: (value: Primitive, path: Array<string>) => MapTo,\n path: Array<string> = [],\n): MapLeafNodes<T, MapTo> {\n const clone = obj.constructor();\n\n for (const key in obj) {\n const value = obj[key];\n const currentPath = [...path, key];\n\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n value == null\n ) {\n clone[key] = fn(value as Primitive, currentPath);\n } else if (typeof value === 'object' && !Array.isArray(value)) {\n clone[key] = walkObject(value as Walkable, fn, currentPath);\n } else {\n console.warn(\n `Skipping invalid key \"${currentPath.join(\n '.',\n )}\". Should be a string, number, null or object. Received: \"${\n Array.isArray(value) ? 'Array' : typeof value\n }\"`,\n );\n }\n }\n\n return clone;\n}\n\nexport function assignVars<VarContract extends Contract>(\n varContract: VarContract,\n tokens: MapLeafNodes<VarContract, string>,\n): Record<CSSVarFunction, string> {\n const varSetters: { [cssVarName: string]: string } = {};\n // const { valid, diffString } = validateContract(varContract, tokens);\n\n // if (!valid) {\n // throw new Error(`Tokens don't match contract.\\n${diffString}`);\n // }\n\n walkObject(tokens, (value, path) => {\n varSetters[get(varContract, path)] = String(value);\n });\n\n return varSetters;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fastkit/plugboy-vanilla-extract-plugin",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {
@@ -47,12 +47,12 @@
47
47
  "@vanilla-extract/vite-plugin": "^3.8.0"
48
48
  },
49
49
  "devDependencies": {
50
- "vite": "^4.1.1",
51
- "@fastkit/plugboy": "0.1.4"
50
+ "vite": "^4.3.5",
51
+ "@fastkit/plugboy": "0.1.5"
52
52
  },
53
53
  "peerDependencies": {
54
- "vite": "^4.1.1",
55
- "@fastkit/plugboy": "0.1.4"
54
+ "vite": "^4.3.0",
55
+ "@fastkit/plugboy": "0.1.5"
56
56
  },
57
57
  "peerDependenciesMeta": {
58
58
  "@vanilla-extract/vite-plugin": {