@arbor-css/functions 0.0.102 → 0.0.103

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/common.d.ts CHANGED
@@ -1,17 +1,41 @@
1
- import { CalcInterpolation } from '@arbor-css/calc';
2
- import { TokenType } from '@arbor-css/tokens';
1
+ import { CalcInterpolation, Equation } from '@arbor-css/calc';
2
+ import { PropertyType, Token } from '@arbor-css/tokens';
3
3
  export type CssProperty = `--${string}`;
4
4
  export type FunctionParamWithMeta = {
5
5
  name: CssProperty;
6
- type?: TokenType;
6
+ type?: PropertyType;
7
7
  fallback?: string;
8
+ description?: string;
8
9
  };
9
10
  export type FunctionParam = CssProperty | FunctionParamWithMeta;
10
11
  export type FunctionParams = readonly FunctionParam[];
11
12
  export type ParamsAsInterpolations<TParams extends FunctionParams> = {
12
13
  [K in keyof TParams]: CalcInterpolation;
13
14
  };
15
+ export type ParamsAsNames<TParams extends FunctionParams> = {
16
+ [K in keyof TParams]: TParams[K] extends FunctionParamWithMeta ? TParams[K]['name'] : TParams[K] extends CssProperty ? TParams[K] : never;
17
+ };
18
+ /**
19
+ * Converts a function params list into an input record which makes
20
+ * parameters with defaults optional.
21
+ */
22
+ export type ParamsAsCallInputs<TParams extends FunctionParams> = {
23
+ [K in keyof TParams as TParams[K] extends {
24
+ fallback: string;
25
+ } ? never : TParams[K] extends FunctionParamWithMeta ? TParams[K]['name'] : TParams[K] extends CssProperty ? TParams[K] : never]: CalcInterpolation;
26
+ } & {
27
+ [K in keyof TParams as TParams[K] extends ({
28
+ name: CssProperty;
29
+ fallback: string;
30
+ }) ? TParams[K]['name'] : never]?: CalcInterpolation;
31
+ };
14
32
  export declare function isFunctionParamWithMeta(param: CssProperty | FunctionParamWithMeta): param is FunctionParamWithMeta;
15
- export declare function paramsAsString<TParams extends FunctionParams>(params: TParams, keepEmpty?: boolean): string;
16
- export declare function paramsAsInterpolations<TParams extends FunctionParams>(params: TParams): ParamsAsInterpolations<TParams>;
33
+ export declare function paramsAsString<TParams extends FunctionParams>(params: TParams, { keepEmpty, nonce, }: {
34
+ keepEmpty?: boolean;
35
+ nonce?: string;
36
+ }): string;
37
+ export declare function getParamName(param: FunctionParam): string;
38
+ export declare function paramAsToken(param: FunctionParam, nonce: string): Token;
39
+ export declare function paramsAsInterpolations<TParams extends FunctionParams>(params: TParams, nonce: string): ParamsAsInterpolations<TParams>;
40
+ export declare function applyParameters(params: FunctionParams, inputs: Record<string, string>, nonce: string, apply: (name: string, value: Equation) => void): void;
17
41
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAW,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG,KAAK,MAAM,EAAE,CAAC;AACxC,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,qBAAqB,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,SAAS,aAAa,EAAE,CAAC;AACtD,MAAM,MAAM,sBAAsB,CAAC,OAAO,SAAS,cAAc,IAAI;KACnE,CAAC,IAAI,MAAM,OAAO,GAAG,iBAAiB;CACvC,CAAC;AAEF,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,WAAW,GAAG,qBAAqB,GACxC,KAAK,IAAI,qBAAqB,CAEhC;AAED,wBAAgB,cAAc,CAAC,OAAO,SAAS,cAAc,EAC5D,MAAM,EAAE,OAAO,EACf,SAAS,CAAC,EAAE,OAAO,GACjB,MAAM,CAeR;AAED,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,cAAc,EACpE,MAAM,EAAE,OAAO,GACb,sBAAsB,CAAC,OAAO,CAAC,CAiBjC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAO,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAGN,YAAY,EACZ,KAAK,EACL,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,WAAW,GAAG,KAAK,MAAM,EAAE,CAAC;AACxC,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,qBAAqB,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,SAAS,aAAa,EAAE,CAAC;AACtD,MAAM,MAAM,sBAAsB,CAAC,OAAO,SAAS,cAAc,IAAI;KACnE,CAAC,IAAI,MAAM,OAAO,GAAG,iBAAiB;CACvC,CAAC;AACF,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,cAAc,IAAI;KAC1D,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,qBAAqB,GAC7D,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GACjB,OAAO,CAAC,CAAC,CAAC,SAAS,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAC3C,KAAK;CACP,CAAC;AACF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,cAAc,IAAI;KAC/D,CAAC,IAAI,MAAM,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,GACpE,OAAO,CAAC,CAAC,CAAC,SAAS,qBAAqB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAC7D,OAAO,CAAC,CAAC,CAAC,SAAS,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAC3C,KAAK,GAAG,iBAAiB;CAC3B,GAAG;KACF,CAAC,IAAI,MAAM,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CACzC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CACvC,GACA,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GACjB,KAAK,CAAC,CAAC,EAAE,iBAAiB;CAC5B,CAAC;AAEF,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,WAAW,GAAG,qBAAqB,GACxC,KAAK,IAAI,qBAAqB,CAEhC;AAED,wBAAgB,cAAc,CAAC,OAAO,SAAS,cAAc,EAC5D,MAAM,EAAE,OAAO,EACf,EACC,SAAS,EACT,KAAK,GACL,EAAE;IACF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GACC,MAAM,CAqBR;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAQzD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAcvE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,cAAc,EACpE,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,GACX,sBAAsB,CAAC,OAAO,CAAC,CAYjC;AAED,wBAAgB,eAAe,CAC9B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,KAAK,IAAI,QAmB9C"}
package/dist/common.js CHANGED
@@ -1,40 +1,80 @@
1
- import { $ } from '@arbor-css/calc';
2
- import { isToken } from '@arbor-css/tokens';
1
+ import { css } from '@arbor-css/calc';
2
+ import { createTokenFactory, isToken, } from '@arbor-css/tokens';
3
3
  export function isFunctionParamWithMeta(param) {
4
4
  return typeof param === 'object' && 'name' in param;
5
5
  }
6
- export function paramsAsString(params, keepEmpty) {
6
+ export function paramsAsString(params, { keepEmpty, nonce, }) {
7
7
  if (!params.length) {
8
8
  return keepEmpty ? '()' : '';
9
9
  }
10
10
  const list = params
11
11
  .map((p) => {
12
+ const name = nonce ? paramAsToken(p, nonce).name : getParamName(p);
13
+ if (isFunctionParamWithMeta(p)) {
14
+ const type = p.type ?? '*';
15
+ const typeAnnotation = type === '*' ? '' : ` <${type}>`;
16
+ return `${name}${typeAnnotation}`;
17
+ }
12
18
  if (isToken(p)) {
13
19
  const type = p.type ?? '*';
14
20
  const typeAnnotation = type === '*' ? '' : ` <${type}>`;
15
- return `var(${p.name}${typeAnnotation})`;
21
+ return `${name}${typeAnnotation}`;
16
22
  }
17
- return p;
23
+ return name;
18
24
  })
19
25
  .join(', ');
20
26
  return `(${list})`;
21
27
  }
22
- export function paramsAsInterpolations(params) {
28
+ export function getParamName(param) {
29
+ if (isFunctionParamWithMeta(param)) {
30
+ return param.name;
31
+ }
32
+ if (isToken(param)) {
33
+ return param.name;
34
+ }
35
+ return param;
36
+ }
37
+ export function paramAsToken(param, nonce) {
38
+ const createParamToken = createTokenFactory({
39
+ tokenPrefix: `--_-param-${nonce}-`,
40
+ });
41
+ if (isToken(param)) {
42
+ return param.prefixed(`--_-param-${nonce}-`);
43
+ }
44
+ if (isFunctionParamWithMeta(param)) {
45
+ return createParamToken(param.name.replace('--', ''), {
46
+ type: param.type,
47
+ description: param.description,
48
+ });
49
+ }
50
+ return createParamToken(param.replace('--', ''), {});
51
+ }
52
+ export function paramsAsInterpolations(params, nonce) {
23
53
  return params.map((p) => {
24
- if (isToken(p)) {
25
- return $.token(p);
26
- }
27
- if (isFunctionParamWithMeta(p)) {
28
- const name = p.name;
29
- if (p.fallback) {
30
- return $.val(`var(${name}, ${p.fallback})`);
31
- }
32
- return $.val(`var(${name})`);
54
+ const asToken = paramAsToken(p, nonce);
55
+ if (isFunctionParamWithMeta(p) && p.fallback) {
56
+ return css `
57
+ ${[asToken, p.fallback]}
58
+ `;
33
59
  }
34
- if (p.startsWith('--')) {
35
- return $.val(`var(${p})`);
36
- }
37
- return $.val(p);
60
+ return css `
61
+ ${asToken}
62
+ `;
38
63
  });
39
64
  }
65
+ export function applyParameters(params, inputs, nonce, apply) {
66
+ for (const param of params) {
67
+ const name = getParamName(param);
68
+ const asToken = paramAsToken(param, nonce);
69
+ const fallback = isFunctionParamWithMeta(param) && param.fallback ?
70
+ param.fallback
71
+ : undefined;
72
+ const inputValue = inputs[name] ?? fallback;
73
+ if (inputValue) {
74
+ apply(asToken.name, css `
75
+ ${inputValue}
76
+ `);
77
+ }
78
+ }
79
+ }
40
80
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAqB,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAa,MAAM,mBAAmB,CAAC;AAcvD,MAAM,UAAU,uBAAuB,CACtC,KAA0C;IAE1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,cAAc,CAC7B,MAAe,EACf,SAAmB;IAEnB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,IAAI,GAAG,MAAM;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACV,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;YAC3B,MAAM,cAAc,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;YACxD,OAAO,OAAO,CAAC,CAAC,IAAI,GAAG,cAAc,GAAwB,CAAC;QAC/D,CAAC;QACD,OAAO,CAAC,CAAC;IACV,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,IAAI,IAAI,GAAG,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,MAAe;IAEf,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;YACpB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChB,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAoC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { Css, type Equation } from '@arbor-css/calc';
2
- import { FunctionParams, ParamsAsInterpolations } from './common.js';
1
+ import { CalcEvaluationContext, Css, type Equation } from '@arbor-css/calc';
2
+ import { Token } from '@arbor-css/tokens';
3
+ import { FunctionParams, ParamsAsCallInputs, ParamsAsInterpolations } from './common.js';
3
4
  export declare const DEFAULT_FUNCTION_NAME_PREFIX = "--fn-";
4
5
  export type ParameterSchema = {
5
6
  name: string;
@@ -31,7 +32,7 @@ export type CreateFunctionParameters<TParams extends FunctionParams> = {
31
32
  * spacing.definition // @function --spacing-scale(--base <length>, --scale <number>) { result: (var(--base) * var(--scale)); }
32
33
  * spacing.compute({ base: '8px', scale: 2 }) // 'calc(var(--base) * 2)' or '16px'
33
34
  */
34
- export type CreateFunction = (name: string, parameters: CreateFunctionParameters<any>) => ArborFunction<any>;
35
+ export type CreateFunction = <TParams extends FunctionParams>(name: string, parameters: CreateFunctionParameters<TParams>) => ArborFunction<TParams>;
35
36
  export declare function createFunctionFactory({ namePrefix, }?: {
36
37
  namePrefix?: string;
37
38
  }): <TParams extends FunctionParams>(name: string, { description, parameters, definition }: CreateFunctionParameters<TParams>) => ArborFunction<TParams>;
@@ -40,12 +41,20 @@ export type ArborFunction<TParams extends FunctionParams = FunctionParams> = {
40
41
  name: string;
41
42
  description?: string;
42
43
  parameters: TParams;
44
+ parameterTokens: Token[];
43
45
  equation: Equation;
44
46
  definition: string;
45
- inline: (...params: ParamsAsInterpolations<TParams>) => Equation;
46
- compute: (params: Record<string, string | number>) => string;
47
+ compute: (params: ParamsAsCallInputs<TParams>, ctx?: CalcEvaluationContext) => string;
48
+ /**
49
+ * A printed representation of the function call signature, for use in
50
+ * documentation and error messages
51
+ *
52
+ * @example
53
+ * --fn-spacing-scale(--base <length>, --scale <number>)
54
+ */
55
+ signature: string;
47
56
  };
48
- export type PresetFunctions = Record<string, ArborFunction>;
49
- export declare function isFunction(value: unknown): value is ArborFunction<FunctionParams>;
57
+ export type PresetFunctions = Record<string, ArborFunction<any>>;
58
+ export declare function isFunction(value: unknown): value is ArborFunction<any>;
50
59
  export {};
51
60
  //# sourceMappingURL=functions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,GAAG,EACH,KAAK,QAAQ,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,cAAc,EAEd,sBAAsB,EAGtB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,4BAA4B,UAAU,CAAC;AAEpD,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,QAAA,MAAM,cAAc,iBAAiB,CAAC;AAEtC,MAAM,MAAM,wBAAwB,CAAC,OAAO,SAAS,cAAc,IAAI;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,CACX,GAAG,EAAE,GAAG,EACR,GAAG,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,KACtC,QAAQ,CAAC;CACd,CAAC;AACF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GAAG,CAC5B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,wBAAwB,CAAC,GAAG,CAAC,KACrC,aAAa,CAAC,GAAG,CAAC,CAAC;AAExB,wBAAgB,qBAAqB,CAAC,EACrC,UAAyC,GACzC,GAAE;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;CACf,IAG0B,OAAO,SAAS,cAAc,QACtD,MAAM,2CAC6B,wBAAwB,CAAC,OAAO,CAAC,KACxE,aAAa,CAAC,OAAO,CAAC,CAqCzB;AAED,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,IAAI;IAC5E,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;IACjE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC;CAC7D,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE5D,wBAAgB,UAAU,CACzB,KAAK,EAAE,OAAO,GACZ,KAAK,IAAI,aAAa,CAAC,cAAc,CAAC,CAExC"}
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,qBAAqB,EAGrB,GAAG,EACH,KAAK,QAAQ,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAEN,cAAc,EAEd,kBAAkB,EAClB,sBAAsB,EAGtB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,4BAA4B,UAAU,CAAC;AAEpD,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,QAAA,MAAM,cAAc,iBAAiB,CAAC;AAEtC,MAAM,MAAM,wBAAwB,CAAC,OAAO,SAAS,cAAc,IAAI;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,CACX,GAAG,EAAE,GAAG,EACR,GAAG,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,KACtC,QAAQ,CAAC;CACd,CAAC;AACF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,SAAS,cAAc,EAC3D,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,wBAAwB,CAAC,OAAO,CAAC,KACzC,aAAa,CAAC,OAAO,CAAC,CAAC;AAE5B,wBAAgB,qBAAqB,CAAC,EACrC,UAAyC,GACzC,GAAE;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;CACf,IAG0B,OAAO,SAAS,cAAc,QACtD,MAAM,2CAC6B,wBAAwB,CAAC,OAAO,CAAC,KACxE,aAAa,CAAC,OAAO,CAAC,CA0CzB;AAED,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,IAAI;IAC5E,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,KAAK,EAAE,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CACR,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,EACnC,GAAG,CAAC,EAAE,qBAAqB,KACvB,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AAEjE,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,CAEtE"}
package/dist/functions.js CHANGED
@@ -1,13 +1,17 @@
1
1
  import { computeEquation, css, printComputationResult, printEquation, } from '@arbor-css/calc';
2
- import { isFunctionParamWithMeta, paramsAsInterpolations, paramsAsString, } from './common.js';
2
+ import { applyParameters, paramAsToken, paramsAsInterpolations, paramsAsString, } from './common.js';
3
3
  export const DEFAULT_FUNCTION_NAME_PREFIX = '--fn-';
4
4
  const FUNCTION_BRAND = '@@FUNCTION@@';
5
5
  export function createFunctionFactory({ namePrefix = DEFAULT_FUNCTION_NAME_PREFIX, } = {}) {
6
6
  const functionPrefix = namePrefix;
7
7
  return function createFunction(name, { description, parameters, definition }) {
8
8
  const cssName = `${functionPrefix}${name}`;
9
- const paramsList = paramsAsString(parameters, true);
10
- const equation = definition(css, ...paramsAsInterpolations(parameters));
9
+ const paramsList = paramsAsString(parameters, {
10
+ keepEmpty: true,
11
+ nonce: name,
12
+ });
13
+ const paramsAsTokens = parameters.map((p) => paramAsToken(p, name));
14
+ const equation = definition(css, ...paramsAsInterpolations(parameters, name));
11
15
  const body = printEquation(equation);
12
16
  const cssDefinition = `@function ${cssName}${paramsList} { result: ${body}; }`;
13
17
  return {
@@ -15,23 +19,24 @@ export function createFunctionFactory({ namePrefix = DEFAULT_FUNCTION_NAME_PREFI
15
19
  name: cssName,
16
20
  description,
17
21
  parameters,
22
+ parameterTokens: paramsAsTokens,
18
23
  equation,
19
24
  definition: cssDefinition,
20
- inline: (...params) => definition(css, ...params),
21
- compute(params) {
22
- const propertyValues = {};
23
- for (let index = 0; index < parameters.length; index++) {
24
- const parameter = parameters[index];
25
- const cssParameterName = isFunctionParamWithMeta(parameter) ? parameter.name : parameter;
26
- const fallback = isFunctionParamWithMeta(parameter) ? parameter.fallback : undefined;
27
- propertyValues[cssParameterName] = String(params[cssParameterName] ?? fallback);
28
- }
25
+ compute(params, ctx) {
26
+ const parameterValues = {};
27
+ applyParameters(parameters, params, name, (paramName, value) => {
28
+ parameterValues[paramName] = value;
29
+ });
29
30
  const result = computeEquation(equation, {
30
- propertyValues,
31
- skipBaking: false,
31
+ ...ctx,
32
+ propertyValues: {
33
+ ...ctx?.propertyValues,
34
+ ...parameterValues,
35
+ },
32
36
  });
33
37
  return printComputationResult(result);
34
38
  },
39
+ signature: `${cssName}${paramsAsString(parameters, { keepEmpty: true })}`,
35
40
  };
36
41
  };
37
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,GAAG,EAGH,sBAAsB,EACtB,aAAa,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEN,uBAAuB,EAEvB,sBAAsB,EACtB,cAAc,GACd,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,MAAM,4BAA4B,GAAG,OAAO,CAAC;AAWpD,MAAM,cAAc,GAAG,cAAc,CAAC;AA+BtC,MAAM,UAAU,qBAAqB,CAAC,EACrC,UAAU,GAAG,4BAA4B,MAGtC,EAAE;IACL,MAAM,cAAc,GAAG,UAAU,CAAC;IAElC,OAAO,SAAS,cAAc,CAC7B,IAAY,EACZ,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAqC;QAE1E,MAAM,OAAO,GAAG,GAAG,cAAc,GAAG,IAAI,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,aAAa,GAAG,aAAa,OAAO,GAAG,UAAU,cAAc,IAAI,KAAK,CAAC;QAE/E,OAAO;YACN,CAAC,cAAc,CAAC,EAAE,IAAa;YAC/B,IAAI,EAAE,OAAO;YACb,WAAW;YACX,UAAU;YACV,QAAQ;YACR,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,CAAC,GAAG,MAAuC,EAAE,EAAE,CACtD,UAAU,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;YAC3B,OAAO,CAAC,MAAuC;gBAC9C,MAAM,cAAc,GAA2B,EAAE,CAAC;gBAClD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;oBACxD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,gBAAgB,GACrB,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;oBACjE,MAAM,QAAQ,GACb,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;oBACrE,cAAc,CAAC,gBAAgB,CAAC,GAAG,MAAM,CACxC,MAAM,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CACpC,CAAC;gBACH,CAAC;gBACD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE;oBACxC,cAAc;oBACd,UAAU,EAAE,KAAK;iBACjB,CAAC,CAAC;gBACH,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;SACD,CAAC;IACH,CAA0B,CAAC;AAC5B,CAAC;AAcD,MAAM,UAAU,UAAU,CACzB,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,cAAc,IAAI,KAAK,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,eAAe,EACf,GAAG,EAGH,sBAAsB,EACtB,aAAa,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,eAAe,EAEf,YAAY,EAGZ,sBAAsB,EACtB,cAAc,GACd,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,MAAM,4BAA4B,GAAG,OAAO,CAAC;AAWpD,MAAM,cAAc,GAAG,cAAc,CAAC;AA+BtC,MAAM,UAAU,qBAAqB,CAAC,EACrC,UAAU,GAAG,4BAA4B,MAGtC,EAAE;IACL,MAAM,cAAc,GAAG,UAAU,CAAC;IAElC,OAAO,SAAS,cAAc,CAC7B,IAAY,EACZ,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAqC;QAE1E,MAAM,OAAO,GAAG,GAAG,cAAc,GAAG,IAAI,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE;YAC7C,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;SACX,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,UAAU,CAC1B,GAAG,EACH,GAAG,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,CAC3C,CAAC;QACF,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,aAAa,GAAG,aAAa,OAAO,GAAG,UAAU,cAAc,IAAI,KAAK,CAAC;QAE/E,OAAO;YACN,CAAC,cAAc,CAAC,EAAE,IAAa;YAC/B,IAAI,EAAE,OAAO;YACb,WAAW;YACX,UAAU;YACV,eAAe,EAAE,cAAc;YAC/B,QAAQ;YACR,UAAU,EAAE,aAAa;YACzB,OAAO,CACN,MAAmC,EACnC,GAA2B;gBAE3B,MAAM,eAAe,GAAsC,EAAE,CAAC;gBAC9D,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;oBAC9D,eAAe,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;gBACpC,CAAC,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE;oBACxC,GAAG,GAAG;oBACN,cAAc,EAAE;wBACf,GAAG,GAAG,EAAE,cAAc;wBACtB,GAAG,eAAe;qBAClB;iBACD,CAAC,CAAC;gBACH,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;YACD,SAAS,EAAE,GAAG,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;SACzE,CAAC;IACH,CAA0B,CAAC;AAC5B,CAAC;AAyBD,MAAM,UAAU,UAAU,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,cAAc,IAAI,KAAK,CAAC;AAC/E,CAAC"}
package/dist/mixins.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { CalcInterpolation, Css, type Equation } from '@arbor-css/calc';
2
- import { CreateToken, SimpleTokensAsTokenDefinitions, SimpleTokenSchema, TokenSchema } from '@arbor-css/tokens';
3
- import { FunctionParams, ParamsAsInterpolations } from './common.js';
2
+ import { CreateToken, SimpleTokensAsTokenDefinitions, SimpleTokenSchema, Token, TokenSchema } from '@arbor-css/tokens';
3
+ import { FunctionParams, ParamsAsCallInputs, ParamsAsInterpolations } from './common.js';
4
4
  export declare const DEFAULT_MIXIN_NAME_PREFIX = "--mx-";
5
5
  declare const MIXIN_BRAND = "@@MIXIN@@";
6
6
  export type ArborMixinDeclaration = {
@@ -16,21 +16,28 @@ export type ArborMixinBody = ArborMixinBodyEntry[];
16
16
  type MixinValue = CalcInterpolation | Equation;
17
17
  type MixinScopedBodyObject = Record<string, MixinValue>;
18
18
  type MixinBodyObject = Record<string, MixinValue | MixinScopedBodyObject | MixinBodyList>;
19
- type MixinBodyListItem = {
19
+ export type MixinBodyListItem = {
20
20
  prop: string;
21
21
  value: MixinValue;
22
22
  } | {
23
23
  scope: string;
24
24
  children: MixinBodyObject | MixinBodyList;
25
- };
25
+ } | MixinBodyObject;
26
26
  type MixinBodyList = readonly MixinBodyListItem[];
27
+ export declare function isMixinPropertyDeclaration(entry: ArborMixinBodyEntry): entry is ArborMixinDeclaration;
28
+ export declare function isMixinScope(entry: ArborMixinBodyEntry): entry is ArborMixinScope;
29
+ export declare function normalizeMixinBody(body: MixinBodyObject | MixinBodyList): ArborMixinBody;
30
+ export type ArborMixinDefinition = MixinBodyObject | MixinBodyList;
27
31
  export interface CreateMixinParameters<TParams extends FunctionParams, TTokens extends SimpleTokenSchema = SimpleTokenSchema> {
28
- description?: string;
32
+ description?: string | ((info: {
33
+ parameters: ParamsAsInterpolations<TParams>;
34
+ tokens: SimpleTokensAsTokenDefinitions<TTokens>;
35
+ }) => string);
29
36
  parameters?: TParams;
30
37
  definition: (css: Css, inputs: {
31
38
  parameters: ParamsAsInterpolations<TParams>;
32
39
  tokens: SimpleTokensAsTokenDefinitions<TTokens>;
33
- }) => MixinBodyObject | MixinBodyList;
40
+ }) => ArborMixinDefinition;
34
41
  contributeTokens?: TTokens;
35
42
  }
36
43
  /**
@@ -46,9 +53,9 @@ export interface CreateMixinParameters<TParams extends FunctionParams, TTokens e
46
53
  * parameters: [
47
54
  * '--default-ring-color',
48
55
  * ],
49
- * definition: (css, defaultRingColor) => ({
56
+ * definition: (css, { parameters }) => ({
50
57
  * '--shadow': css`0 0 0 0 transparent`,
51
- * '--ring': css`0 0 0 0 var(${defaultRingColor}, transparent)`,
58
+ * '--ring': css`0 0 0 0 ${parameters[0]}`,
52
59
  * 'box-shadow': css`var(--ring), var(--shadow)`,
53
60
  * }),
54
61
  */
@@ -57,20 +64,51 @@ export declare function createMixinFactory({ namePrefix, createToken, }: {
57
64
  namePrefix?: string;
58
65
  createToken: CreateToken;
59
66
  }): <TParams extends FunctionParams, TTokens extends SimpleTokenSchema>(name: string, { description, definition, parameters, contributeTokens: contributeTokensInput, }: CreateMixinParameters<TParams, TTokens>) => ArborMixin<TParams, SimpleTokensAsTokenDefinitions<TTokens>>;
60
- export type ArborMixin<TParams extends FunctionParams = FunctionParams, TTokens extends TokenSchema = TokenSchema> = {
67
+ export type ArborMixin<TParams extends FunctionParams, TTokens extends TokenSchema = TokenSchema> = {
61
68
  [MIXIN_BRAND]: true;
62
69
  name: string;
63
70
  description?: string;
64
71
  body: ArborMixinBody;
65
- declarations: ArborMixinDeclaration[];
66
72
  definition: string;
67
- inline: () => ArborMixinDeclaration[];
68
- inlineBody: () => ArborMixinBody;
73
+ /**
74
+ * Computes the mixin's body based on provided parameters. This
75
+ * can be used to compose mixins together, by applying one mixin from
76
+ * an extended preset "into" another mixin you define by spreading the
77
+ * result of this method.
78
+ *
79
+ * @example
80
+ * const baseMixin = createMixin('base', {
81
+ * parameters: ['--color'] as const,
82
+ * definition: (colorParam) => ({
83
+ * color: colorParam,
84
+ * padding: '8px',
85
+ * }),
86
+ * });
87
+ *
88
+ * const extendedMixin = createMixin('extended', {
89
+ * definition: (css, { parameters }, { mixins }) => [
90
+ * ...mixins.base.apply('red'),
91
+ * {
92
+ * background: 'black',
93
+ * },
94
+ * ],
95
+ * });
96
+ */
97
+ apply: (params: ParamsAsCallInputs<TParams>) => MixinBodyList;
69
98
  parameters: TParams;
99
+ parameterTokens: Token[];
70
100
  contributeTokens: TTokens;
101
+ /**
102
+ * A printed representation of the mixin call signature, for use in
103
+ * documentation and error messages
104
+ *
105
+ * @example
106
+ * --mx-shadow(--default-ring-color <color>)
107
+ */
108
+ signature: string;
71
109
  };
72
- export type PresetMixins = Record<string, ArborMixin>;
73
- export declare function isMixin(value: unknown): value is ArborMixin;
110
+ export type PresetMixins = Record<string, ArborMixin<any>>;
111
+ export declare function isMixin(value: unknown): value is ArborMixin<any>;
74
112
  export type MixinTokens<TMixins extends PresetMixins> = {
75
113
  [K in keyof TMixins]: TMixins[K] extends ArborMixin<any, infer TTokens> ? TTokens : never;
76
114
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mixins.d.ts","sourceRoot":"","sources":["../src/mixins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mixins.d.ts","sourceRoot":"","sources":["../src/mixins.ts"],"names":[],"mappings":"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"}
package/dist/mixins.js CHANGED
@@ -1,8 +1,14 @@
1
1
  import { css, isCalcEquation, printEquation, } from '@arbor-css/calc';
2
2
  import { convertSimpleTokenSchema, isToken, } from '@arbor-css/tokens';
3
- import { paramsAsInterpolations, paramsAsString, } from './common.js';
3
+ import { applyParameters, paramAsToken, paramsAsInterpolations, paramsAsString, } from './common.js';
4
4
  export const DEFAULT_MIXIN_NAME_PREFIX = '--mx-';
5
5
  const MIXIN_BRAND = '@@MIXIN@@';
6
+ export function isMixinPropertyDeclaration(entry) {
7
+ return 'prop' in entry;
8
+ }
9
+ export function isMixinScope(entry) {
10
+ return 'scope' in entry;
11
+ }
6
12
  function toEquation(value) {
7
13
  if (isCalcEquation(value)) {
8
14
  return value;
@@ -11,20 +17,27 @@ function toEquation(value) {
11
17
  ${value}
12
18
  `;
13
19
  }
14
- function normalizeBody(body) {
20
+ export function normalizeMixinBody(body) {
15
21
  if (Array.isArray(body)) {
16
- return body.map((item) => {
22
+ const collected = [];
23
+ body.forEach((item) => {
17
24
  if ('scope' in item) {
18
- return {
25
+ collected.push({
19
26
  scope: item.scope,
20
- children: normalizeBody(item.children),
21
- };
27
+ children: normalizeMixinBody(item.children),
28
+ });
29
+ }
30
+ else if ('prop' in item) {
31
+ collected.push({
32
+ prop: item.prop,
33
+ value: toEquation(item.value),
34
+ });
35
+ }
36
+ else {
37
+ collected.push(...normalizeMixinBody(item));
22
38
  }
23
- return {
24
- prop: item.prop,
25
- value: toEquation(item.value),
26
- };
27
39
  });
40
+ return collected;
28
41
  }
29
42
  return Object.entries(body).map(([propOrScope, value]) => {
30
43
  if (typeof value === 'object' &&
@@ -33,7 +46,7 @@ function normalizeBody(body) {
33
46
  !isToken(value)) {
34
47
  return {
35
48
  scope: propOrScope,
36
- children: normalizeBody(value),
49
+ children: normalizeMixinBody(value),
37
50
  };
38
51
  }
39
52
  return {
@@ -42,24 +55,16 @@ function normalizeBody(body) {
42
55
  };
43
56
  });
44
57
  }
45
- function collectDeclarations(body) {
46
- const declarations = [];
47
- for (const entry of body) {
48
- if ('prop' in entry) {
49
- declarations.push(entry);
50
- continue;
51
- }
52
- declarations.push(...collectDeclarations(entry.children));
53
- }
54
- return declarations;
55
- }
56
58
  function printBody(body) {
57
59
  return body
58
60
  .map((entry) => {
59
- if ('prop' in entry) {
61
+ if (isMixinPropertyDeclaration(entry)) {
60
62
  return `${entry.prop}: ${printEquation(entry.value)};`;
61
63
  }
62
- return `${entry.scope} { ${printBody(entry.children)} }`;
64
+ if (isMixinScope(entry)) {
65
+ return `${entry.scope} { ${printBody(entry.children)} }`;
66
+ }
67
+ return '';
63
68
  })
64
69
  .join(' ');
65
70
  }
@@ -70,34 +75,43 @@ export function createMixinFactory({ namePrefix = DEFAULT_MIXIN_NAME_PREFIX, cre
70
75
  const contributeTokens = convertSimpleTokenSchema(contributeTokensInput, name, createToken, {
71
76
  contributedBy: cssName,
72
77
  });
73
- const body = normalizeBody(definition(css, {
74
- parameters: paramsAsInterpolations(parameters),
78
+ const tokensAndParams = {
79
+ parameters: paramsAsInterpolations(parameters, name),
75
80
  tokens: contributeTokens,
76
- }));
77
- const declarations = collectDeclarations(body);
81
+ };
82
+ const body = normalizeMixinBody(definition(css, tokensAndParams));
78
83
  const cssBody = printBody(body);
84
+ const parameterTokens = parameters.map((p) => paramAsToken(p, name));
79
85
  return {
80
86
  [MIXIN_BRAND]: true,
81
87
  name: cssName,
82
- description,
88
+ description: typeof description === 'function' ?
89
+ description(tokensAndParams)
90
+ : description,
83
91
  body,
84
- declarations,
85
- definition: `@mixin ${cssName}${paramsAsString(parameters)} { ${cssBody} }`,
86
- inline: () => declarations.map((decl) => ({
87
- prop: decl.prop,
88
- value: decl.value,
89
- })),
90
- inlineBody: () => body.map((entry) => 'prop' in entry ?
91
- {
92
- prop: entry.prop,
93
- value: entry.value,
94
- }
95
- : {
96
- scope: entry.scope,
97
- children: entry.children,
98
- }),
92
+ definition: `@mixin ${cssName}${paramsAsString(parameters, {
93
+ nonce: name,
94
+ })} { ${cssBody} }`,
95
+ apply: (values) => {
96
+ // we "apply" a mixin within another mixin by assigning
97
+ // the provided parameters to properties matching their names,
98
+ // prepending that to this mixin's body statements, and
99
+ // returning it all.
100
+ const parameterDeclarations = [];
101
+ applyParameters(parameters, values, name, (name, value) => {
102
+ parameterDeclarations.push({
103
+ prop: name,
104
+ value,
105
+ });
106
+ });
107
+ return [...parameterDeclarations, ...body];
108
+ },
99
109
  parameters,
110
+ parameterTokens,
100
111
  contributeTokens,
112
+ signature: `${cssName}${paramsAsString(parameters, {
113
+ keepEmpty: false,
114
+ })}`,
101
115
  };
102
116
  };
103
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mixins.js","sourceRoot":"","sources":["../src/mixins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mixins.js","sourceRoot":"","sources":["../src/mixins.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbor-css/functions",
3
- "version": "0.0.102",
3
+ "version": "0.0.103",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -26,8 +26,8 @@
26
26
  "vite": "^8.0.13"
27
27
  },
28
28
  "dependencies": {
29
- "@arbor-css/calc": "0.0.102",
30
- "@arbor-css/tokens": "0.0.102"
29
+ "@arbor-css/calc": "0.0.103",
30
+ "@arbor-css/tokens": "0.0.103"
31
31
  },
32
32
  "scripts": {
33
33
  "build": "tsc",