@weser/style 2.0.0 → 2.1.0

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.
Files changed (87) hide show
  1. package/dist/core/__tests__/createRenderer.test copy.d.ts +2 -0
  2. package/dist/core/__tests__/createRenderer.test copy.d.ts.map +1 -0
  3. package/dist/core/__tests__/createRenderer.test copy.js +37 -0
  4. package/dist/core/__tests__/createRenderer.test copy.js.map +1 -0
  5. package/dist/core/__tests__/createRenderer.test.js +12 -0
  6. package/dist/core/__tests__/createRenderer.test.js.map +1 -1
  7. package/dist/core/__tests__/integration.test.d.ts +2 -0
  8. package/dist/core/__tests__/integration.test.d.ts.map +1 -0
  9. package/dist/core/__tests__/integration.test.js +20 -0
  10. package/dist/core/__tests__/integration.test.js.map +1 -0
  11. package/dist/core/__tests__/precompileConditions.d.ts +2 -0
  12. package/dist/core/__tests__/precompileConditions.d.ts.map +1 -0
  13. package/dist/core/__tests__/precompileConditions.js +20 -0
  14. package/dist/core/__tests__/precompileConditions.js.map +1 -0
  15. package/dist/core/__tests__/precompileConditions.test.d.ts +2 -0
  16. package/dist/core/__tests__/precompileConditions.test.d.ts.map +1 -0
  17. package/dist/core/__tests__/precompileConditions.test.js +20 -0
  18. package/dist/core/__tests__/precompileConditions.test.js.map +1 -0
  19. package/dist/core/createRenderer.d.ts +1 -0
  20. package/dist/core/createRenderer.d.ts.map +1 -1
  21. package/dist/core/createRenderer.js +16 -23
  22. package/dist/core/createRenderer.js.map +1 -1
  23. package/dist/core/precompileConditions.d.ts +10 -0
  24. package/dist/core/precompileConditions.d.ts.map +1 -0
  25. package/dist/core/precompileConditions.js +14 -0
  26. package/dist/core/precompileConditions.js.map +1 -0
  27. package/dist/helpers/flags.d.ts +10 -0
  28. package/dist/helpers/flags.d.ts.map +1 -0
  29. package/dist/helpers/flags.js +20 -0
  30. package/dist/helpers/flags.js.map +1 -0
  31. package/dist/index.d.ts +1 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +1 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/plugins/__tests__/customProperty.test.d.ts +2 -0
  36. package/dist/plugins/__tests__/customProperty.test.d.ts.map +1 -0
  37. package/dist/plugins/__tests__/customProperty.test.js +63 -0
  38. package/dist/plugins/__tests__/customProperty.test.js.map +1 -0
  39. package/dist/plugins/__tests__/debug.test.d.ts +2 -0
  40. package/dist/plugins/__tests__/debug.test.d.ts.map +1 -0
  41. package/dist/plugins/__tests__/debug.test.js +52 -0
  42. package/dist/plugins/__tests__/debug.test.js.map +1 -0
  43. package/dist/plugins/__tests__/embedded.test.d.ts +2 -0
  44. package/dist/plugins/__tests__/embedded.test.d.ts.map +1 -0
  45. package/dist/plugins/__tests__/embedded.test.js +76 -0
  46. package/dist/plugins/__tests__/embedded.test.js.map +1 -0
  47. package/dist/plugins/__tests__/enforceLonghand.test.d.ts +2 -0
  48. package/dist/plugins/__tests__/enforceLonghand.test.d.ts.map +1 -0
  49. package/dist/plugins/__tests__/enforceLonghand.test.js +88 -0
  50. package/dist/plugins/__tests__/enforceLonghand.test.js.map +1 -0
  51. package/dist/plugins/__tests__/fallbackValue.test.d.ts +2 -0
  52. package/dist/plugins/__tests__/fallbackValue.test.d.ts.map +1 -0
  53. package/dist/plugins/__tests__/fallbackValue.test.js +94 -0
  54. package/dist/plugins/__tests__/fallbackValue.test.js.map +1 -0
  55. package/dist/plugins/__tests__/logger.test.d.ts +2 -0
  56. package/dist/plugins/__tests__/logger.test.d.ts.map +1 -0
  57. package/dist/plugins/__tests__/logger.test.js +57 -0
  58. package/dist/plugins/__tests__/logger.test.js.map +1 -0
  59. package/dist/plugins/__tests__/prefixer.test.d.ts +2 -0
  60. package/dist/plugins/__tests__/prefixer.test.d.ts.map +1 -0
  61. package/dist/plugins/__tests__/prefixer.test.js +64 -0
  62. package/dist/plugins/__tests__/prefixer.test.js.map +1 -0
  63. package/dist/plugins/__tests__/pseudoElement.test.d.ts +2 -0
  64. package/dist/plugins/__tests__/pseudoElement.test.d.ts.map +1 -0
  65. package/dist/plugins/__tests__/pseudoElement.test.js +92 -0
  66. package/dist/plugins/__tests__/pseudoElement.test.js.map +1 -0
  67. package/dist/plugins/__tests__/responsiveValue.test.d.ts +2 -0
  68. package/dist/plugins/__tests__/responsiveValue.test.d.ts.map +1 -0
  69. package/dist/plugins/__tests__/responsiveValue.test.js +68 -0
  70. package/dist/plugins/__tests__/responsiveValue.test.js.map +1 -0
  71. package/dist/plugins/__tests__/rtl.test.d.ts +2 -0
  72. package/dist/plugins/__tests__/rtl.test.d.ts.map +1 -0
  73. package/dist/plugins/__tests__/rtl.test.js +57 -0
  74. package/dist/plugins/__tests__/rtl.test.js.map +1 -0
  75. package/dist/plugins/__tests__/sortCondition.test.d.ts +2 -0
  76. package/dist/plugins/__tests__/sortCondition.test.d.ts.map +1 -0
  77. package/dist/plugins/__tests__/sortCondition.test.js +65 -0
  78. package/dist/plugins/__tests__/sortCondition.test.js.map +1 -0
  79. package/dist/plugins/__tests__/sortProperty.test.d.ts +2 -0
  80. package/dist/plugins/__tests__/sortProperty.test.d.ts.map +1 -0
  81. package/dist/plugins/__tests__/sortProperty.test.js +68 -0
  82. package/dist/plugins/__tests__/sortProperty.test.js.map +1 -0
  83. package/dist/plugins/__tests__/unit.test.d.ts +2 -0
  84. package/dist/plugins/__tests__/unit.test.d.ts.map +1 -0
  85. package/dist/plugins/__tests__/unit.test.js +66 -0
  86. package/dist/plugins/__tests__/unit.test.js.map +1 -0
  87. package/package.json +6 -6
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=createRenderer.test%20copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRenderer.test copy.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/createRenderer.test copy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import createRenderer from '../createRenderer.js';
3
+ describe('createRenderer', () => {
4
+ it('returns a css function', () => {
5
+ const css = createRenderer();
6
+ expect(typeof css).toBe('function');
7
+ });
8
+ });
9
+ describe('css function', () => {
10
+ it('returns returns a tuple of the processed style object and a style node', () => {
11
+ const css = createRenderer();
12
+ const [props, node] = css({ color: 'red' });
13
+ expect(props.style).toEqual({ color: 'red' });
14
+ expect(node).toMatchSnapshot();
15
+ });
16
+ it('supports nested selectors', () => {
17
+ const css = createRenderer();
18
+ const [props, node] = css({ color: 'red', ':hover': { color: 'blue' } });
19
+ expect(props.style).toEqual({
20
+ color: 'var(--3dwc1p-1, blue) var(--3dwc1p-0, red)',
21
+ });
22
+ expect(node).toMatchSnapshot();
23
+ });
24
+ it('supports precompiled conditions', () => {
25
+ const css = createRenderer({
26
+ precompiledConditions: {
27
+ ':hover': 'hover',
28
+ },
29
+ });
30
+ const [props, node] = css({ color: 'red', ':hover': { color: 'blue' } });
31
+ expect(props.style).toEqual({
32
+ color: 'var(--hover-1, blue) var(--hover-0, red)',
33
+ });
34
+ expect(node).toBeNull();
35
+ });
36
+ });
37
+ //# sourceMappingURL=createRenderer.test%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRenderer.test copy.js","sourceRoot":"","sources":["../../../src/core/__tests__/createRenderer.test copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,cAAc,MAAM,sBAAsB,CAAA;AAEjD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;QAE5B,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;QAE5B,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;QAE5B,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QACxE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC1B,KAAK,EAAE,4CAA4C;SACpD,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,GAAG,GAAG,cAAc,CAAC;YACzB,qBAAqB,EAAE;gBACrB,QAAQ,EAAE,OAAO;aAClB;SACF,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QAExE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC1B,KAAK,EAAE,0CAA0C;SAClD,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -21,5 +21,17 @@ describe('css function', () => {
21
21
  });
22
22
  expect(node).toMatchSnapshot();
23
23
  });
24
+ it('supports precompiled conditions', () => {
25
+ const css = createRenderer({
26
+ precompiledConditions: {
27
+ ':hover': 'hover',
28
+ },
29
+ });
30
+ const [props, node] = css({ color: 'red', ':hover': { color: 'blue' } });
31
+ expect(props.style).toEqual({
32
+ color: 'var(--hover-1, blue) var(--hover-0, red)',
33
+ });
34
+ expect(node).toBeNull();
35
+ });
24
36
  });
25
37
  //# sourceMappingURL=createRenderer.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createRenderer.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/createRenderer.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,cAAc,MAAM,sBAAsB,CAAA;AAEjD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;QAE5B,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;QAE5B,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;QAE5B,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QACxE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC1B,KAAK,EAAE,4CAA4C;SACpD,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"createRenderer.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/createRenderer.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,cAAc,MAAM,sBAAsB,CAAA;AAEjD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;QAE5B,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;QAE5B,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAA;QAE5B,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QACxE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC1B,KAAK,EAAE,4CAA4C;SACpD,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,GAAG,GAAG,cAAc,CAAC;YACzB,qBAAqB,EAAE;gBACrB,QAAQ,EAAE,OAAO;aAClB;SACF,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QAExE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC1B,KAAK,EAAE,0CAA0C;SAClD,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import createRenderer from '../createRenderer.js';
3
+ import precompileConditions from '../precompileConditions.js';
4
+ describe('Integrating precompileConditions', () => {
5
+ it('returns returns a tuple of the processed style object and a style node', () => {
6
+ const [flagNode, flags] = precompileConditions([':hover']);
7
+ const css = createRenderer({ precompiledConditions: flags });
8
+ expect(flags).toEqual({ ':hover': '3dwc1p' });
9
+ expect(flagNode).toMatchSnapshot();
10
+ const [props, styleNode] = css({
11
+ color: 'red',
12
+ ':hover': { color: 'blue' },
13
+ });
14
+ expect(props.style).toEqual({
15
+ color: 'var(--3dwc1p-1, blue) var(--3dwc1p-0, red)',
16
+ });
17
+ expect(styleNode).toBeNull();
18
+ });
19
+ });
20
+ //# sourceMappingURL=integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/integration.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,cAAc,MAAM,sBAAsB,CAAA;AACjD,OAAO,oBAAoB,MAAM,4BAA4B,CAAA;AAE7D,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC1D,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAA;QAE5D,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe,EAAE,CAAA;QAElC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;YAC7B,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SAC5B,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC1B,KAAK,EAAE,4CAA4C;SACpD,CAAC,CAAA;QAEF,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=precompileConditions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precompileConditions.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/precompileConditions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import precompileConditions from '../precompileConditions.js';
3
+ describe('precompileConditions', () => {
4
+ it('returns a tuple of the flags and the node', () => {
5
+ const [node, flags] = precompileConditions([':hover']);
6
+ expect(flags).toEqual({ ':hover': '3dwc1p' });
7
+ expect(node).toMatchSnapshot();
8
+ });
9
+ it('returns a tuple of the flags and the node in dev mode', () => {
10
+ const [node, flags] = precompileConditions([':hover'], true);
11
+ expect(flags).toEqual({ ':hover': 'hover' });
12
+ expect(node).toMatchSnapshot();
13
+ });
14
+ it('returns multiple flags', () => {
15
+ const [node, flags] = precompileConditions([':hover', ':focus']);
16
+ expect(flags).toEqual({ ':hover': '3dwc1p', ':focus': '1mkb03c' });
17
+ expect(node).toMatchSnapshot();
18
+ });
19
+ });
20
+ //# sourceMappingURL=precompileConditions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precompileConditions.js","sourceRoot":"","sources":["../../../src/core/__tests__/precompileConditions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,oBAAoB,MAAM,4BAA4B,CAAA;AAE7D,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,oBAAoB,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5D,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;QAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,oBAAoB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;QAChE,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;QAClE,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=precompileConditions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precompileConditions.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/precompileConditions.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import precompileConditions from '../precompileConditions.js';
3
+ describe('precompileConditions', () => {
4
+ it('returns a tuple of the flags and the node', () => {
5
+ const [node, flags] = precompileConditions([':hover']);
6
+ expect(flags).toEqual({ ':hover': '3dwc1p' });
7
+ expect(node).toMatchSnapshot();
8
+ });
9
+ it('returns a tuple of the flags and the node in dev mode', () => {
10
+ const [node, flags] = precompileConditions([':hover'], true);
11
+ expect(flags).toEqual({ ':hover': 'hover' });
12
+ expect(node).toMatchSnapshot();
13
+ });
14
+ it('returns multiple flags', () => {
15
+ const [node, flags] = precompileConditions([':hover', ':focus']);
16
+ expect(flags).toEqual({ ':hover': '3dwc1p', ':focus': '1mkb03c' });
17
+ expect(node).toMatchSnapshot();
18
+ });
19
+ });
20
+ //# sourceMappingURL=precompileConditions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precompileConditions.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/precompileConditions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,oBAAoB,MAAM,4BAA4B,CAAA;AAE7D,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,oBAAoB,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5D,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;QAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,oBAAoB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;QAChE,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;QAClE,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -6,6 +6,7 @@ type Plugin = (style: T_Style, context: T_Context) => T_Style;
6
6
  type Config = {
7
7
  plugins?: Array<Plugin>;
8
8
  mergeStyle?: typeof assignStyle;
9
+ precompiledConditions?: Record<string, string>;
9
10
  devMode?: boolean;
10
11
  };
11
12
  export default function createRenderer<T extends Record<string, any> = T_Style>(config?: Config): (...style: Array<StyleInput<T>>) => readonly [T_Props, MapIterator<ReactNode> | null] | readonly [T_Props, readonly [...ReactNode[], import("react").DetailedReactHTMLElement<{
@@ -1 +1 @@
1
- {"version":3,"file":"createRenderer.d.ts","sourceRoot":"","sources":["../../src/core/createRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAIhD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEtD,KAAK,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnE,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,KAAK,OAAO,CAAA;AAC7D,KAAK,MAAM,GAAG;IACZ,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,WAAW,CAAA;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,EAC5E,MAAM,GAAE,MAAW,IAIC,GAAG,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;;;;;;;kBA8CnD"}
1
+ {"version":3,"file":"createRenderer.d.ts","sourceRoot":"","sources":["../../src/core/createRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAIhD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGtD,KAAK,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnE,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,KAAK,OAAO,CAAA;AAC7D,KAAK,MAAM,GAAG;IACZ,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,WAAW,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,EAC5E,MAAM,GAAE,MAAW,IASC,GAAG,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;;;;;;;kBA6CnD"}
@@ -3,8 +3,9 @@ import { reduce } from '@weser/array';
3
3
  import { assignStyle } from 'css-in-js-utils';
4
4
  import createStyleNode from './createStyleNode';
5
5
  import hash from '../helpers/hash';
6
+ import { createFlagNode } from '../helpers/flags';
6
7
  export default function createRenderer(config = {}) {
7
- const { plugins = [], mergeStyle = assignStyle, devMode = false } = config;
8
+ const { plugins = [], mergeStyle = assignStyle, precompiledConditions = {}, devMode = false, } = config;
8
9
  return function css(...style) {
9
10
  const flags = {};
10
11
  // we use a map to cache nodes to avoid duplicate
@@ -29,30 +30,24 @@ export default function createRenderer(config = {}) {
29
30
  const filtered = flattened.filter(Boolean);
30
31
  // @ts-ignore
31
32
  const merged = mergeStyle({}, ...filtered);
32
- const resolved = resolveStyle(merged, plugins, flags, context);
33
+ const resolved = resolveStyle(merged, plugins, flags, context, precompiledConditions);
33
34
  props.style = resolved;
34
35
  if (Object.keys(flags).length === 0) {
35
36
  return [props, nodes.size > 0 ? nodes.values() : null];
36
37
  }
37
- const flagsSetup = Object.values(flags).map(getFlagSetup);
38
- const flagsUsage = Object.entries(flags).map(([property, flag]) => getFlagUsage(property, flag));
39
- const join = devMode ? '\n' : '';
40
- const id = Object.values(flags).sort().join('_');
41
- const markup = `*{${flagsSetup.join(join)}}${join}${flagsUsage.join(join)}`;
42
- const node = createStyleNode(id, markup);
38
+ const node = createFlagNode(flags, devMode);
43
39
  return [props, [...nodes.values(), node]];
44
40
  };
45
41
  }
46
- function resolveStyle(style, plugins, flags = {}, context) {
42
+ function resolveStyle(style, plugins, flags = {}, context, precompiledConditions = {}) {
47
43
  const processed = reduce(plugins, (style, plugin) => plugin(style, context), style);
48
- const { devMode } = context;
49
44
  each(processed, (value, property) => {
50
45
  if (typeof value === 'object' && value !== null) {
51
- const resolved = resolveStyle(value, plugins, flags, context);
52
- const flag = devMode
53
- ? property.replace(/ /g, '-').replace(/[^a-z0-9-]/gi, '')
54
- : hash(property);
55
- flags[property] = flag;
46
+ const resolved = resolveStyle(value, plugins, flags, context, precompiledConditions);
47
+ const flag = getFlag(property, context, precompiledConditions);
48
+ if (!precompiledConditions[property]) {
49
+ flags[property] = flag;
50
+ }
56
51
  each(resolved, (value, key) => {
57
52
  const fallback = processed[key] ?? 'unset';
58
53
  processed[key] =
@@ -63,14 +58,12 @@ function resolveStyle(style, plugins, flags = {}, context) {
63
58
  });
64
59
  return processed;
65
60
  }
66
- function getFlagSetup(flag) {
67
- return `--${flag}-0:initial;--${flag}-1: ;`;
68
- }
69
- function getFlagUsage(property, flag) {
70
- const usage = `--${flag}-0: ;--${flag}-1:initial`;
71
- if (property.startsWith('@')) {
72
- return `${property}{*{${usage}}}`;
61
+ function getFlag(property, { devMode }, precompiledConditions) {
62
+ if (precompiledConditions[property]) {
63
+ return precompiledConditions[property];
73
64
  }
74
- return `${property.replace(/&/gi, '*')}{${usage}}`;
65
+ return devMode
66
+ ? property.replace(/ /g, '-').replace(/[^a-z0-9-]/gi, '')
67
+ : hash(property);
75
68
  }
76
69
  //# sourceMappingURL=createRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createRenderer.js","sourceRoot":"","sources":["../../src/core/createRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createRenderer.js","sourceRoot":"","sources":["../../src/core/createRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export default function precompileConditions(conditions: Array<string>, devMode?: boolean): readonly [import("react").DetailedReactHTMLElement<{
2
+ dangerouslySetInnerHTML: {
3
+ __html: string;
4
+ };
5
+ precedence: string;
6
+ href: string;
7
+ key: string;
8
+ nonce: string | undefined;
9
+ }, HTMLElement>, Record<string, string>];
10
+ //# sourceMappingURL=precompileConditions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precompileConditions.d.ts","sourceRoot":"","sources":["../../src/core/precompileConditions.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,EACzB,OAAO,GAAE,OAAe;;;;;;;;yCAgBzB"}
@@ -0,0 +1,14 @@
1
+ import { reduce } from '@weser/array';
2
+ import hash from '../helpers/hash';
3
+ import { createFlagNode } from '../helpers/flags';
4
+ export default function precompileConditions(conditions, devMode = false) {
5
+ const flags = reduce(conditions, (flags, property) => {
6
+ flags[property] = devMode
7
+ ? property.replace(/ /g, '-').replace(/[^a-z0-9-]/gi, '')
8
+ : hash(property);
9
+ return flags;
10
+ }, {});
11
+ const node = createFlagNode(flags, devMode);
12
+ return [node, flags];
13
+ }
14
+ //# sourceMappingURL=precompileConditions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precompileConditions.js","sourceRoot":"","sources":["../../src/core/precompileConditions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,IAAI,MAAM,iBAAiB,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,UAAyB,EACzB,UAAmB,KAAK;IAExB,MAAM,KAAK,GAAG,MAAM,CAClB,UAAU,EACV,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAClB,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO;YACvB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YACzD,CAAC,CAAC,IAAI,CAAC,QAAkB,CAAC,CAAA;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC,EACD,EAA4B,CAC7B,CAAA;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAE3C,OAAO,CAAC,IAAI,EAAE,KAAK,CAAU,CAAA;AAC/B,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare function createFlagNode(flags: Record<string, string> | undefined, devMode: boolean): import("react").DetailedReactHTMLElement<{
2
+ dangerouslySetInnerHTML: {
3
+ __html: string;
4
+ };
5
+ precedence: string;
6
+ href: string;
7
+ key: string;
8
+ nonce: string | undefined;
9
+ }, HTMLElement>;
10
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/helpers/flags.ts"],"names":[],"mappings":"AAgBA,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAK,EAClC,OAAO,EAAE,OAAO;;;;;;;;gBAWjB"}
@@ -0,0 +1,20 @@
1
+ import createStyleNode from '../core/createStyleNode';
2
+ function getFlagSetup(flag) {
3
+ return `--${flag}-0:initial;--${flag}-1: ;`;
4
+ }
5
+ function getFlagUsage(property, flag) {
6
+ const usage = `--${flag}-0: ;--${flag}-1:initial`;
7
+ if (property.startsWith('@')) {
8
+ return `${property}{*{${usage}}}`;
9
+ }
10
+ return `${property.replace(/&/gi, '*')}{${usage}}`;
11
+ }
12
+ export function createFlagNode(flags = {}, devMode) {
13
+ const flagsSetup = Object.values(flags).map(getFlagSetup);
14
+ const flagsUsage = Object.entries(flags).map(([property, flag]) => getFlagUsage(property, flag));
15
+ const join = devMode ? '\n' : '';
16
+ const id = Object.values(flags).sort().join('_');
17
+ const markup = `*{${flagsSetup.join(join)}}${join}${flagsUsage.join(join)}`;
18
+ return createStyleNode(id, markup);
19
+ }
20
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/helpers/flags.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,yBAAyB,CAAA;AAErD,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,KAAK,IAAI,gBAAgB,IAAI,OAAO,CAAA;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,IAAY;IAClD,MAAM,KAAK,GAAG,KAAK,IAAI,UAAU,IAAI,YAAY,CAAA;IAEjD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,QAAQ,MAAM,KAAK,IAAI,CAAA;IACnC,CAAC;IAED,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,GAAG,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAAgC,EAAE,EAClC,OAAgB;IAEhB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IACzD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAChE,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAC7B,CAAA;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;IAC3E,OAAO,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;AACpC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { default as createRenderer } from './core/createRenderer';
2
+ export { default as precompileConditions } from './core/precompileConditions';
2
3
  export { default as customPropertyPlugin, type T_CustomStyle, } from './plugins/customProperty';
3
4
  export { default as debugPlugin, type T_DebugStyle } from './plugins/debug';
4
5
  export { default as embeddedPlugin, type T_EmbeddedStyle, } from './plugins/embedded';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAGjE,OAAO,EACL,OAAO,IAAI,oBAAoB,EAC/B,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EACL,OAAO,IAAI,mBAAmB,EAC9B,KAAK,UAAU,GAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,SAAS,IAAI,iBAAiB,GAC/B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EACL,OAAO,IAAI,qBAAqB,EAChC,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EACL,OAAO,IAAI,mBAAmB,EAC9B,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGtD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGpE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAG7E,OAAO,EACL,OAAO,IAAI,oBAAoB,EAC/B,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EACL,OAAO,IAAI,mBAAmB,EAC9B,KAAK,UAAU,GAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,SAAS,IAAI,iBAAiB,GAC/B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EACL,OAAO,IAAI,qBAAqB,EAChC,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EACL,OAAO,IAAI,mBAAmB,EAC9B,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGtD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGpE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { default as createRenderer } from './core/createRenderer';
2
+ export { default as precompileConditions } from './core/precompileConditions';
2
3
  // plugins
3
4
  export { default as customPropertyPlugin, } from './plugins/customProperty';
4
5
  export { default as debugPlugin } from './plugins/debug';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEjE,UAAU;AACV,OAAO,EACL,OAAO,IAAI,oBAAoB,GAEhC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAqB,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EACL,OAAO,IAAI,cAAc,GAE1B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EACL,OAAO,IAAI,mBAAmB,GAE/B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,SAAS,IAAI,iBAAiB,GAC/B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EACL,OAAO,IAAI,qBAAqB,EAChC,eAAe,GAGhB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EACL,OAAO,IAAI,mBAAmB,EAC9B,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEtD,UAAU;AACV,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAE7E,UAAU;AACV,OAAO,EACL,OAAO,IAAI,oBAAoB,GAEhC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAqB,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EACL,OAAO,IAAI,cAAc,GAE1B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EACL,OAAO,IAAI,mBAAmB,GAE/B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,SAAS,IAAI,iBAAiB,GAC/B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EACL,OAAO,IAAI,qBAAqB,EAChC,eAAe,GAGhB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EACL,OAAO,IAAI,mBAAmB,EAC9B,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEtD,UAAU;AACV,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=customProperty.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customProperty.test.d.ts","sourceRoot":"","sources":["../../../src/plugins/__tests__/customProperty.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ import { describe, test, expect, vi } from 'vitest';
2
+ import customPropertyPlugin from '../customProperty';
3
+ describe('customPropertyPlugin', () => {
4
+ const context = {
5
+ mergeStyle: (target, source) => Object.assign(target, source),
6
+ createNode: vi.fn(),
7
+ props: { style: {} },
8
+ devMode: false,
9
+ };
10
+ test('resolves custom properties to style objects', () => {
11
+ const plugin = customPropertyPlugin({
12
+ size: (value) => ({ width: value, height: value }),
13
+ });
14
+ const result = plugin({ size: 100 }, context);
15
+ expect(result.width).toBe(100);
16
+ expect(result.height).toBe(100);
17
+ });
18
+ test('removes original property if not in resolved style', () => {
19
+ const plugin = customPropertyPlugin({
20
+ spacing: (value) => ({ padding: value, margin: value }),
21
+ });
22
+ const result = plugin({ spacing: 10 }, context);
23
+ expect('spacing' in result).toBeFalsy();
24
+ expect(result.padding).toBe(10);
25
+ expect(result.margin).toBe(10);
26
+ });
27
+ test('preserves original property if in resolved style', () => {
28
+ const plugin = customPropertyPlugin({
29
+ padding: (value) => ({ padding: value * 2 }),
30
+ });
31
+ const result = plugin({ padding: 10 }, context);
32
+ expect(result.padding).toBe(20);
33
+ });
34
+ test('handles nested style objects', () => {
35
+ const plugin = customPropertyPlugin({
36
+ size: (value) => ({ width: value, height: value }),
37
+ });
38
+ const result = plugin({
39
+ ':hover': { size: 50 },
40
+ }, context);
41
+ expect(result[':hover']?.width).toBe(50);
42
+ expect(result[':hover']?.height).toBe(50);
43
+ });
44
+ test('passes through non-custom properties', () => {
45
+ const plugin = customPropertyPlugin({
46
+ size: (value) => ({ width: value }),
47
+ });
48
+ const result = plugin({ size: 100, color: 'red' }, context);
49
+ expect(result.color).toBe('red');
50
+ expect(result.width).toBe(100);
51
+ });
52
+ test('handles multiple custom properties', () => {
53
+ const plugin = customPropertyPlugin({
54
+ size: (value) => ({ width: value, height: value }),
55
+ spacing: (value) => ({ padding: value }),
56
+ });
57
+ const result = plugin({ size: 100, spacing: 10 }, context);
58
+ expect(result.width).toBe(100);
59
+ expect(result.height).toBe(100);
60
+ expect(result.padding).toBe(10);
61
+ });
62
+ });
63
+ //# sourceMappingURL=customProperty.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customProperty.test.js","sourceRoot":"","sources":["../../../src/plugins/__tests__/customProperty.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=debug.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.test.d.ts","sourceRoot":"","sources":["../../../src/plugins/__tests__/debug.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { describe, test, expect, vi } from 'vitest';
2
+ import debugPlugin from '../debug';
3
+ // Mock the styles-debugger module
4
+ vi.mock('styles-debugger', () => ({
5
+ CreateStylesDebugger: vi.fn(() => () => ({
6
+ outline: '1px solid red',
7
+ backgroundColor: 'rgba(255,0,0,0.1)',
8
+ })),
9
+ }));
10
+ describe('debugPlugin', () => {
11
+ test('adds debug styles when autoActive is true', () => {
12
+ const plugin = debugPlugin(true);
13
+ const style = { color: 'blue' };
14
+ const result = plugin(style);
15
+ expect(result.outline).toBe('1px solid red');
16
+ expect(result.backgroundColor).toBe('rgba(255,0,0,0.1)');
17
+ expect(result.color).toBe('blue');
18
+ });
19
+ test('does not add debug styles when autoActive is false and no debug flag', () => {
20
+ const plugin = debugPlugin(false);
21
+ const style = { color: 'blue' };
22
+ const result = plugin(style);
23
+ expect(result.outline).toBeUndefined();
24
+ expect(result.color).toBe('blue');
25
+ });
26
+ test('adds debug styles when debug flag is true', () => {
27
+ const plugin = debugPlugin(false);
28
+ const style = { color: 'blue', debug: true };
29
+ const result = plugin(style);
30
+ expect(result.outline).toBe('1px solid red');
31
+ expect(result.debug).toBeUndefined(); // debug flag should be removed
32
+ });
33
+ test('removes debug property from result', () => {
34
+ const plugin = debugPlugin(true);
35
+ const style = { color: 'blue', debug: true };
36
+ const result = plugin(style);
37
+ expect(result.debug).toBeUndefined();
38
+ });
39
+ test('preserves original styles', () => {
40
+ const plugin = debugPlugin(true);
41
+ const style = {
42
+ color: 'red',
43
+ fontSize: 16,
44
+ padding: 10,
45
+ };
46
+ const result = plugin(style);
47
+ expect(result.color).toBe('red');
48
+ expect(result.fontSize).toBe(16);
49
+ expect(result.padding).toBe(10);
50
+ });
51
+ });
52
+ //# sourceMappingURL=debug.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.test.js","sourceRoot":"","sources":["../../../src/plugins/__tests__/debug.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=embedded.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded.test.d.ts","sourceRoot":"","sources":["../../../src/plugins/__tests__/embedded.test.ts"],"names":[],"mappings":""}