css-in-props 3.8.9 → 3.14.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.
Files changed (55) hide show
  1. package/README.md +6 -22
  2. package/dist/cjs/{props/defaults.js → defaults.js} +2 -2
  3. package/dist/cjs/index.js +19 -2
  4. package/dist/cjs/package.json +4 -0
  5. package/dist/cjs/props/animation.js +16 -80
  6. package/dist/cjs/props/block.js +71 -89
  7. package/dist/cjs/props/font.js +8 -7
  8. package/dist/cjs/props/index.js +0 -32
  9. package/dist/cjs/props/misc.js +9 -8
  10. package/dist/cjs/props/position.js +17 -14
  11. package/dist/cjs/props/theme.js +73 -70
  12. package/dist/cjs/props/timing.js +11 -11
  13. package/dist/cjs/registry.js +39 -0
  14. package/dist/cjs/set.js +1 -1
  15. package/dist/cjs/transform.js +80 -0
  16. package/index.js +1 -0
  17. package/package.json +13 -15
  18. package/src/index.js +4 -4
  19. package/src/props/animation.js +28 -23
  20. package/src/props/block.js +49 -57
  21. package/src/props/flex.js +4 -5
  22. package/src/props/index.js +18 -19
  23. package/src/props/misc.js +10 -3
  24. package/src/props/theme.js +10 -7
  25. package/src/set.js +11 -4
  26. package/src/transform/executors.js +60 -52
  27. package/src/transform/index.js +2 -2
  28. package/src/transform/transformers.js +85 -23
  29. package/dist/cjs/_transform.js +0 -30
  30. package/dist/cjs/props/flex.js +0 -45
  31. package/dist/cjs/props/grid.js +0 -39
  32. package/dist/cjs/transform/executors.js +0 -124
  33. package/dist/cjs/transform/index.js +0 -19
  34. package/dist/cjs/transform/transformers.js +0 -107
  35. package/dist/esm/_transform.js +0 -10
  36. package/dist/esm/emotion.js +0 -9
  37. package/dist/esm/index.js +0 -4
  38. package/dist/esm/props/animation.js +0 -101
  39. package/dist/esm/props/block.js +0 -171
  40. package/dist/esm/props/defaults.js +0 -321
  41. package/dist/esm/props/flex.js +0 -25
  42. package/dist/esm/props/font.js +0 -16
  43. package/dist/esm/props/grid.js +0 -19
  44. package/dist/esm/props/index.js +0 -35
  45. package/dist/esm/props/misc.js +0 -15
  46. package/dist/esm/props/position.js +0 -31
  47. package/dist/esm/props/theme.js +0 -134
  48. package/dist/esm/props/timing.js +0 -26
  49. package/dist/esm/set.js +0 -9
  50. package/dist/esm/transform/executors.js +0 -104
  51. package/dist/esm/transform/index.js +0 -2
  52. package/dist/esm/transform/transformers.js +0 -87
  53. package/dist/iife/index.js +0 -1084
  54. package/src/_transform.js +0 -10
  55. package/src/emotion.js +0 -9
@@ -1,104 +0,0 @@
1
- import { exec, isArray, isFunction, isObject, isProduction, merge, overwrite, overwriteDeep } from "@domql/utils";
2
- import { CSS_PROPS_REGISTRY } from "../props";
3
- import { DEFAULT_CSS_PROPERTIES_LIST } from "../props/defaults";
4
- import { applyTrueProps, transformersByPrefix } from "./transformers";
5
- const isProd = isProduction();
6
- const usePropsAsCSS = (sourceObj, element, opts) => {
7
- let obj = {};
8
- const rest = {};
9
- const setToObj = (key, val) => {
10
- if (opts.unpack) {
11
- obj = { ...obj, ...val };
12
- return;
13
- }
14
- obj[key] = val;
15
- };
16
- for (const key in sourceObj) {
17
- const value = sourceObj[key];
18
- if (key === "class" && element.call("isString", sourceObj.class)) {
19
- const val = value.split(" ");
20
- if (val.length) {
21
- const CLASS = element.context.designSystem.class;
22
- const result = val.reduce((acc, curr) => merge(acc, CLASS[curr]), {});
23
- obj.designSystemClass = result;
24
- }
25
- } else if (key === "true") {
26
- const val = exec(value, element);
27
- merge(obj, applyTrueProps(val, element));
28
- } else if (element.classlist[key]) {
29
- const originalFromClass = element.classlist[key];
30
- const result = isFunction(originalFromClass) ? originalFromClass(element, element.state, element.context) : originalFromClass;
31
- if (result) setToObj(key, result);
32
- if (!isProd && isObject(obj[key])) obj[key].label = key;
33
- } else if (CSS_PROPS_REGISTRY[key]) {
34
- let val = exec(value, element);
35
- if (isArray(val)) {
36
- val = val.reduce((a, c) => merge(a, c), {});
37
- }
38
- let result = CSS_PROPS_REGISTRY[key](val, element, element.state, element.context);
39
- if (isArray(result)) result = result.reduce((a, c) => merge(a, c), {});
40
- if (result) setToObj(key, result);
41
- if (!isProd && isObject(obj[key])) obj[key].label = key;
42
- } else if (DEFAULT_CSS_PROPERTIES_LIST.has(key)) {
43
- let result = exec(value, element);
44
- if (typeof result === "string" && result.charCodeAt(0) === 45 && result.charCodeAt(1) === 45) {
45
- result = `var(${result})`;
46
- }
47
- setToObj(key, { [key]: result });
48
- if (!isProd && isObject(obj[key])) obj[key].label = key;
49
- } else {
50
- rest[key] = value;
51
- }
52
- }
53
- return [obj, rest];
54
- };
55
- const useSelectorsAsCSS = (sourceObj, element) => {
56
- const obj = {};
57
- for (const key in sourceObj) {
58
- const selectroSetter = transformersByPrefix[key.slice(0, 1)];
59
- if (selectroSetter) {
60
- const result = selectroSetter(key, sourceObj[key], element);
61
- if (result) {
62
- for (const k in result) {
63
- if (Object.prototype.hasOwnProperty.call(result, k)) {
64
- if (obj[k] && typeof obj[k] === "object" && typeof result[k] === "object") {
65
- overwriteDeep(obj[k], result[k]);
66
- } else {
67
- obj[k] = result[k];
68
- }
69
- }
70
- }
71
- }
72
- }
73
- }
74
- return obj;
75
- };
76
- const useCssInProps = (selectorProps, element, opts = { unpack: true }) => {
77
- const [cssObj, restProps] = usePropsAsCSS(selectorProps, element, opts);
78
- const selectorsObj = useSelectorsAsCSS(restProps, element);
79
- let hasSelectors = false;
80
- for (const _k in selectorsObj) {
81
- hasSelectors = true;
82
- break;
83
- }
84
- if (hasSelectors) {
85
- if (opts.unpack) return overwrite(cssObj, selectorsObj);
86
- cssObj._selectors = selectorsObj;
87
- }
88
- return cssObj;
89
- };
90
- const exetuteClassPerComponent = (component, element) => {
91
- const classObj = {};
92
- if (component.class) {
93
- for (const classProp in component.class) {
94
- classObj[classProp] = component.class[classProp](element);
95
- }
96
- }
97
- return classObj;
98
- };
99
- export {
100
- exetuteClassPerComponent,
101
- useCssInProps,
102
- usePropsAsCSS,
103
- useSelectorsAsCSS
104
- };
@@ -1,2 +0,0 @@
1
- export * from "./executors";
2
- export * from "./transformers";
@@ -1,87 +0,0 @@
1
- import { isFunction } from "@domql/utils";
2
- import { useCssInProps } from "./executors";
3
- const applyMediaProps = (key, selectorProps, element) => {
4
- const { context } = element;
5
- if (!context.designSystem?.media) return;
6
- const mediaValue = context.designSystem.media[key.slice(1)];
7
- const generatedClass = useCssInProps(selectorProps, element);
8
- let mediaKey;
9
- if (!mediaValue) {
10
- mediaKey = key;
11
- } else if (mediaValue === "print") {
12
- mediaKey = "@media print";
13
- } else if (mediaValue[0] === "(") {
14
- mediaKey = `@media screen and ${mediaValue}`;
15
- } else {
16
- mediaKey = `${mediaValue} &`;
17
- }
18
- return { [mediaKey]: generatedClass };
19
- };
20
- const applyAndProps = (key, selectorProps, element) => {
21
- return { [key]: useCssInProps(selectorProps, element) };
22
- };
23
- const applySelectorProps = (key, selectorProps, element) => {
24
- const selectorKey = `&${key}`;
25
- return { [selectorKey]: useCssInProps(selectorProps, element) };
26
- };
27
- const resolveCase = (caseKey, element) => {
28
- const caseFn = element.context?.cases?.[caseKey];
29
- if (caseFn === void 0) return void 0;
30
- if (isFunction(caseFn)) return caseFn.call(element, element);
31
- return !!caseFn;
32
- };
33
- const applyCaseProps = (key, selectorProps, element) => {
34
- const caseKey = key.slice(1);
35
- let isCaseTrue = resolveCase(caseKey, element);
36
- if (isCaseTrue === void 0) {
37
- isCaseTrue = !!element.props?.[caseKey];
38
- }
39
- if (!isCaseTrue) return;
40
- return useCssInProps(selectorProps, element);
41
- };
42
- const applyVariableProps = (key, selectorVal, element) => {
43
- return { [key]: selectorVal };
44
- };
45
- const applyConditionalCaseProps = (key, selectorProps, element) => {
46
- const caseKey = key.slice(1);
47
- let isCaseTrue = element.props[caseKey] === true || element.state[caseKey] || element[caseKey];
48
- if (!isCaseTrue) {
49
- const caseResult = resolveCase(caseKey, element);
50
- if (caseResult !== void 0) isCaseTrue = caseResult;
51
- }
52
- if (!isCaseTrue) return;
53
- return useCssInProps(selectorProps, element);
54
- };
55
- const applyConditionalFalsyProps = (key, selectorProps, element) => {
56
- const caseKey = key.slice(1);
57
- let isCaseTrue = element.props[caseKey] === true || element.state[caseKey] || element[caseKey];
58
- if (!isCaseTrue) {
59
- const caseResult = resolveCase(caseKey, element);
60
- if (caseResult !== void 0) isCaseTrue = caseResult;
61
- }
62
- if (isCaseTrue) return;
63
- return useCssInProps(selectorProps, element);
64
- };
65
- const applyTrueProps = (selectorProps, element) => {
66
- return useCssInProps(selectorProps, element);
67
- };
68
- const transformersByPrefix = {
69
- "@": applyMediaProps,
70
- // Selector handlers
71
- ":": applySelectorProps,
72
- "[": applySelectorProps,
73
- "*": applySelectorProps,
74
- "+": applySelectorProps,
75
- "~": applySelectorProps,
76
- "&": applyAndProps,
77
- ">": applyAndProps,
78
- // Conditional and variable handlers
79
- $: applyCaseProps,
80
- "-": applyVariableProps,
81
- ".": applyConditionalCaseProps,
82
- "!": applyConditionalFalsyProps
83
- };
84
- export {
85
- applyTrueProps,
86
- transformersByPrefix
87
- };