@toptal/picasso-provider 3.3.1 → 3.4.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 (100) hide show
  1. package/Picasso/PicassoProvider.js +2 -1
  2. package/Picasso/PicassoProvider.js.map +1 -1
  3. package/Picasso/config/index.d.ts +2 -0
  4. package/Picasso/config/index.js +1 -0
  5. package/Picasso/config/index.js.map +1 -1
  6. package/Picasso/config/spacings.d.ts +39 -0
  7. package/Picasso/config/spacings.js +64 -0
  8. package/Picasso/config/spacings.js.map +1 -0
  9. package/Picasso/config/theme.d.ts +9 -0
  10. package/Picasso/utils/index.d.ts +2 -0
  11. package/Picasso/utils/index.js +2 -0
  12. package/Picasso/utils/index.js.map +1 -1
  13. package/Picasso/utils/responsive-styles/create-jss-variable-class-names.d.ts +19 -0
  14. package/Picasso/utils/responsive-styles/create-jss-variable-class-names.js +24 -0
  15. package/Picasso/utils/responsive-styles/create-jss-variable-class-names.js.map +1 -0
  16. package/Picasso/utils/responsive-styles/create-jss-variable-class-names.test.d.ts +1 -0
  17. package/Picasso/utils/responsive-styles/create-jss-variable-class-names.test.js +14 -0
  18. package/Picasso/utils/responsive-styles/create-jss-variable-class-names.test.js.map +1 -0
  19. package/Picasso/utils/responsive-styles/create-media-queries.d.ts +17 -0
  20. package/Picasso/utils/responsive-styles/create-media-queries.js +24 -0
  21. package/Picasso/utils/responsive-styles/create-media-queries.js.map +1 -0
  22. package/Picasso/utils/responsive-styles/create-media-queries.test.d.ts +1 -0
  23. package/Picasso/utils/responsive-styles/create-media-queries.test.js +27 -0
  24. package/Picasso/utils/responsive-styles/create-media-queries.test.js.map +1 -0
  25. package/Picasso/utils/responsive-styles/create-variable-values-jss.d.ts +7 -0
  26. package/Picasso/utils/responsive-styles/create-variable-values-jss.js +14 -0
  27. package/Picasso/utils/responsive-styles/create-variable-values-jss.js.map +1 -0
  28. package/Picasso/utils/responsive-styles/create-variable-values-jss.test.d.ts +1 -0
  29. package/Picasso/utils/responsive-styles/create-variable-values-jss.test.js +20 -0
  30. package/Picasso/utils/responsive-styles/create-variable-values-jss.test.js.map +1 -0
  31. package/Picasso/utils/responsive-styles/default-css-prop.d.ts +9 -0
  32. package/Picasso/utils/responsive-styles/default-css-prop.js +10 -0
  33. package/Picasso/utils/responsive-styles/default-css-prop.js.map +1 -0
  34. package/Picasso/utils/responsive-styles/default-css-prop.test.d.ts +1 -0
  35. package/Picasso/utils/responsive-styles/default-css-prop.test.js +13 -0
  36. package/Picasso/utils/responsive-styles/default-css-prop.test.js.map +1 -0
  37. package/Picasso/utils/responsive-styles/generate-variable-inline-styles.d.ts +2 -0
  38. package/Picasso/utils/responsive-styles/generate-variable-inline-styles.js +16 -0
  39. package/Picasso/utils/responsive-styles/generate-variable-inline-styles.js.map +1 -0
  40. package/Picasso/utils/responsive-styles/generate-variable-inline-styles.test.d.ts +1 -0
  41. package/Picasso/utils/responsive-styles/generate-variable-inline-styles.test.js +18 -0
  42. package/Picasso/utils/responsive-styles/generate-variable-inline-styles.test.js.map +1 -0
  43. package/Picasso/utils/responsive-styles/get-breakpoint-class-names-to-use.d.ts +7 -0
  44. package/Picasso/utils/responsive-styles/get-breakpoint-class-names-to-use.js +20 -0
  45. package/Picasso/utils/responsive-styles/get-breakpoint-class-names-to-use.js.map +1 -0
  46. package/Picasso/utils/responsive-styles/get-breakpoint-class-names-to-use.test.d.ts +1 -0
  47. package/Picasso/utils/responsive-styles/get-breakpoint-class-names-to-use.test.js +18 -0
  48. package/Picasso/utils/responsive-styles/get-breakpoint-class-names-to-use.test.js.map +1 -0
  49. package/Picasso/utils/responsive-styles/index.d.ts +1 -0
  50. package/Picasso/utils/responsive-styles/index.js +2 -0
  51. package/Picasso/utils/responsive-styles/index.js.map +1 -0
  52. package/Picasso/utils/responsive-styles/make-responsive-spacing-props.d.ts +6 -0
  53. package/Picasso/utils/responsive-styles/make-responsive-spacing-props.js +21 -0
  54. package/Picasso/utils/responsive-styles/make-responsive-spacing-props.js.map +1 -0
  55. package/Picasso/utils/responsive-styles/media-queries-classes.d.ts +6 -0
  56. package/Picasso/utils/responsive-styles/media-queries-classes.js +16 -0
  57. package/Picasso/utils/responsive-styles/media-queries-classes.js.map +1 -0
  58. package/Picasso/utils/responsive-styles/media-queries-classes.test.d.ts +1 -0
  59. package/Picasso/utils/responsive-styles/media-queries-classes.test.js +27 -0
  60. package/Picasso/utils/responsive-styles/media-queries-classes.test.js.map +1 -0
  61. package/Picasso/utils/responsive-styles/to-class-name.d.ts +3 -0
  62. package/Picasso/utils/responsive-styles/to-class-name.js +4 -0
  63. package/Picasso/utils/responsive-styles/to-class-name.js.map +1 -0
  64. package/Picasso/utils/responsive-styles/to-class-name.test.d.ts +1 -0
  65. package/Picasso/utils/responsive-styles/to-class-name.test.js +11 -0
  66. package/Picasso/utils/responsive-styles/to-class-name.test.js.map +1 -0
  67. package/Picasso/utils/responsive-styles/to-css-variable-name.d.ts +3 -0
  68. package/Picasso/utils/responsive-styles/to-css-variable-name.js +4 -0
  69. package/Picasso/utils/responsive-styles/to-css-variable-name.js.map +1 -0
  70. package/Picasso/utils/responsive-styles/to-css-variable-name.test.d.ts +1 -0
  71. package/Picasso/utils/responsive-styles/to-css-variable-name.test.js +11 -0
  72. package/Picasso/utils/responsive-styles/to-css-variable-name.test.js.map +1 -0
  73. package/Picasso/utils/responsive-styles/types.d.ts +5 -0
  74. package/Picasso/utils/responsive-styles/types.js +2 -0
  75. package/Picasso/utils/responsive-styles/types.js.map +1 -0
  76. package/Picasso/utils/spacings.d.ts +3 -0
  77. package/Picasso/utils/spacings.js +9 -0
  78. package/Picasso/utils/spacings.js.map +1 -0
  79. package/Picasso/utils/spacings.test.d.ts +1 -0
  80. package/Picasso/utils/spacings.test.js +35 -0
  81. package/Picasso/utils/spacings.test.js.map +1 -0
  82. package/index.d.ts +3 -2
  83. package/index.js +2 -2
  84. package/index.js.map +1 -1
  85. package/package.json +1 -1
  86. package/utils/index.d.ts +2 -0
  87. package/utils/index.js +2 -0
  88. package/utils/index.js.map +1 -1
  89. package/utils/kebab-to-camel-case.d.ts +2 -0
  90. package/utils/kebab-to-camel-case.js +3 -0
  91. package/utils/kebab-to-camel-case.js.map +1 -0
  92. package/utils/kebab-to-camel-case.test.d.ts +1 -0
  93. package/utils/kebab-to-camel-case.test.js +7 -0
  94. package/utils/kebab-to-camel-case.test.js.map +1 -0
  95. package/utils/snake-to-camel-case.d.ts +2 -0
  96. package/utils/snake-to-camel-case.js +14 -0
  97. package/utils/snake-to-camel-case.js.map +1 -0
  98. package/utils/snake-to-camel-case.test.d.ts +1 -0
  99. package/utils/snake-to-camel-case.test.js +30 -0
  100. package/utils/snake-to-camel-case.test.js.map +1 -0
@@ -1,6 +1,6 @@
1
1
  import { createTheme } from '@material-ui/core/styles';
2
2
  import { deepmerge } from '@material-ui/utils';
3
- import { palette, layout, breakpoints, screens, transitions, typography, sizes, shadows, } from './config';
3
+ import { palette, layout, breakpoints, screens, transitions, typography, sizes, shadows, spacings, } from './config';
4
4
  const picasso = {
5
5
  palette,
6
6
  layout,
@@ -27,6 +27,7 @@ const picasso = {
27
27
  notched: false,
28
28
  },
29
29
  },
30
+ spacings,
30
31
  };
31
32
  class Provider {
32
33
  constructor(theme) {
@@ -1 +1 @@
1
- {"version":3,"file":"PicassoProvider.js","sourceRoot":"","sources":["../../src/Picasso/PicassoProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,OAAO,EACL,OAAO,EACP,MAAM,EACN,WAAW,EACX,OAAO,EACP,WAAW,EACX,UAAU,EACV,KAAK,EACL,OAAO,GACR,MAAM,UAAU,CAAA;AAEjB,MAAM,OAAO,GAAiB;IAC5B,OAAO;IACP,MAAM;IACN,WAAW;IACX,KAAK;IACL,WAAW;IACX,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM,EAAE;QACN,OAAO,EAAE,IAAI;KACd;IACD,KAAK,EAAE;QACL,aAAa,EAAE;YACb,aAAa,EAAE,IAAI;SACpB;QACD,OAAO,EAAE;YACP,cAAc,EAAE,IAAI;SACrB;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,IAAI;SACb;QACD,gBAAgB,EAAE;YAChB,OAAO,EAAE,KAAK;SACf;KACF;CACF,CAAA;AAED,MAAM,QAAQ;IAGZ,YAAY,KAAY;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,GAAG,OAAO,CAAA;IAC7C,CAAC;IAED,QAAQ,CAAC,WAAiD;QACxD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAE3C,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAA;IACxC,CAAC;IAED,oBAAoB,CAAC,WAA+B;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAA;QAE5C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QAErC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA;IAClC,CAAC;IAED,WAAW,CAAC,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;CACF;AAED,MAAM,eAAe,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;AAE1D,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"PicassoProvider.js","sourceRoot":"","sources":["../../src/Picasso/PicassoProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,OAAO,EACL,OAAO,EACP,MAAM,EACN,WAAW,EACX,OAAO,EACP,WAAW,EACX,UAAU,EACV,KAAK,EACL,OAAO,EACP,QAAQ,GACT,MAAM,UAAU,CAAA;AAEjB,MAAM,OAAO,GAAiB;IAC5B,OAAO;IACP,MAAM;IACN,WAAW;IACX,KAAK;IACL,WAAW;IACX,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM,EAAE;QACN,OAAO,EAAE,IAAI;KACd;IACD,KAAK,EAAE;QACL,aAAa,EAAE;YACb,aAAa,EAAE,IAAI;SACpB;QACD,OAAO,EAAE;YACP,cAAc,EAAE,IAAI;SACrB;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,IAAI;SACb;QACD,gBAAgB,EAAE;YAChB,OAAO,EAAE,KAAK;SACf;KACF;IACD,QAAQ;CACT,CAAA;AAED,MAAM,QAAQ;IAGZ,YAAY,KAAY;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,GAAG,OAAO,CAAA;IAC7C,CAAC;IAED,QAAQ,CAAC,WAAiD;QACxD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAE3C,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAA;IACxC,CAAC;IAED,oBAAoB,CAAC,WAA+B;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAA;QAE5C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QAErC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA;IAClC,CAAC;IAED,WAAW,CAAC,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;CACF;AAED,MAAM,eAAe,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;AAE1D,eAAe,eAAe,CAAA"}
@@ -6,3 +6,5 @@ export { default as sizes } from './sizes';
6
6
  export { default as breakpoints, PicassoBreakpoints, screens, isScreenSize, breakpointsList, useScreenSize, useBreakpoint, useScreens, BreakpointKeys, } from './breakpoints';
7
7
  export { default as layout } from './layout';
8
8
  export { default as shadows } from './shadows';
9
+ export { default as spacings, SpacingEnum, isResponsiveSpacing, isPicassoSpacing, } from './spacings';
10
+ export type { Sizes, SizeType, SpacingType, ResponsiveSpacingType, DeprecatedSpacingType, PicassoSpacing, } from './spacings';
@@ -6,4 +6,5 @@ export { default as sizes } from './sizes';
6
6
  export { default as breakpoints, PicassoBreakpoints, screens, isScreenSize, breakpointsList, useScreenSize, useBreakpoint, useScreens, } from './breakpoints';
7
7
  export { default as layout } from './layout';
8
8
  export { default as shadows } from './shadows';
9
+ export { default as spacings, SpacingEnum, isResponsiveSpacing, isPicassoSpacing, } from './spacings';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Picasso/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAChB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,eAAe,EACf,aAAa,EACb,aAAa,EACb,UAAU,GAEX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Picasso/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAChB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,kBAAkB,EAClB,OAAO,EACP,YAAY,EACZ,eAAe,EACf,aAAa,EACb,aAAa,EACb,UAAU,GAEX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAA"}
@@ -0,0 +1,39 @@
1
+ import type { BreakpointKeys } from './breakpoints';
2
+ declare type PicassoSpacingValues = 0 | 0.25 | 0.5 | 0.75 | 1 | 1.5 | 2 | 2.5 | 3;
3
+ export declare type Sizes = 'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
4
+ export declare type SizeType<T extends Sizes> = T;
5
+ /** @deprecated **/
6
+ export declare type DeprecatedSpacingType = number | SizeType<'xsmall' | 'small' | 'medium' | 'large' | 'xlarge'>;
7
+ export declare type ResponsiveSpacingType = {
8
+ [key in BreakpointKeys]?: PicassoSpacing;
9
+ };
10
+ export declare type SpacingType = PicassoSpacing | DeprecatedSpacingType | ResponsiveSpacingType;
11
+ export declare enum SpacingEnum {
12
+ xsmall = 0.5,
13
+ small = 1,
14
+ medium = 1.5,
15
+ large = 2,
16
+ xlarge = 2.5
17
+ }
18
+ declare class PicassoSpacing {
19
+ #private;
20
+ private constructor();
21
+ static create(value: PicassoSpacingValues, index: number): PicassoSpacing;
22
+ indexOf(): number;
23
+ valueOf(): PicassoSpacingValues;
24
+ toString(): string;
25
+ }
26
+ export type { PicassoSpacing };
27
+ export declare const isPicassoSpacing: (spacing: SpacingType) => spacing is PicassoSpacing;
28
+ export declare const isResponsiveSpacing: (spacing: SpacingType) => spacing is ResponsiveSpacingType;
29
+ export declare const SPACING_0: PicassoSpacing;
30
+ export declare const SPACING_1: PicassoSpacing;
31
+ export declare const SPACING_2: PicassoSpacing;
32
+ export declare const SPACING_3: PicassoSpacing;
33
+ export declare const SPACING_4: PicassoSpacing;
34
+ export declare const SPACING_6: PicassoSpacing;
35
+ export declare const SPACING_8: PicassoSpacing;
36
+ export declare const SPACING_10: PicassoSpacing;
37
+ export declare const SPACING_12: PicassoSpacing;
38
+ declare const _default: Record<string, PicassoSpacing>;
39
+ export default _default;
@@ -0,0 +1,64 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _PicassoSpacing_value, _PicassoSpacing_index;
13
+ export var SpacingEnum;
14
+ (function (SpacingEnum) {
15
+ SpacingEnum[SpacingEnum["xsmall"] = 0.5] = "xsmall";
16
+ SpacingEnum[SpacingEnum["small"] = 1] = "small";
17
+ SpacingEnum[SpacingEnum["medium"] = 1.5] = "medium";
18
+ SpacingEnum[SpacingEnum["large"] = 2] = "large";
19
+ SpacingEnum[SpacingEnum["xlarge"] = 2.5] = "xlarge";
20
+ })(SpacingEnum || (SpacingEnum = {}));
21
+ class PicassoSpacing {
22
+ constructor(value, index) {
23
+ _PicassoSpacing_value.set(this, void 0);
24
+ _PicassoSpacing_index.set(this, void 0);
25
+ __classPrivateFieldSet(this, _PicassoSpacing_value, value, "f");
26
+ __classPrivateFieldSet(this, _PicassoSpacing_index, index, "f");
27
+ }
28
+ static create(value, index) {
29
+ return new PicassoSpacing(value, index);
30
+ }
31
+ indexOf() {
32
+ return __classPrivateFieldGet(this, _PicassoSpacing_index, "f");
33
+ }
34
+ valueOf() {
35
+ return __classPrivateFieldGet(this, _PicassoSpacing_value, "f");
36
+ }
37
+ toString() {
38
+ return __classPrivateFieldGet(this, _PicassoSpacing_value, "f").toString();
39
+ }
40
+ }
41
+ _PicassoSpacing_value = new WeakMap(), _PicassoSpacing_index = new WeakMap();
42
+ export const isPicassoSpacing = (spacing) => spacing instanceof PicassoSpacing;
43
+ export const isResponsiveSpacing = (spacing) => typeof spacing == 'object' && !isPicassoSpacing(spacing);
44
+ export const SPACING_0 = PicassoSpacing.create(0, 0);
45
+ export const SPACING_1 = PicassoSpacing.create(0.25, 1);
46
+ export const SPACING_2 = PicassoSpacing.create(0.5, 2);
47
+ export const SPACING_3 = PicassoSpacing.create(0.75, 3);
48
+ export const SPACING_4 = PicassoSpacing.create(1, 4);
49
+ export const SPACING_6 = PicassoSpacing.create(1.5, 6);
50
+ export const SPACING_8 = PicassoSpacing.create(2, 8);
51
+ export const SPACING_10 = PicassoSpacing.create(2.5, 10);
52
+ export const SPACING_12 = PicassoSpacing.create(3, 12);
53
+ export default {
54
+ SPACING_0,
55
+ SPACING_1,
56
+ SPACING_2,
57
+ SPACING_3,
58
+ SPACING_4,
59
+ SPACING_6,
60
+ SPACING_8,
61
+ SPACING_10,
62
+ SPACING_12,
63
+ };
64
+ //# sourceMappingURL=spacings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacings.js","sourceRoot":"","sources":["../../../src/Picasso/config/spacings.ts"],"names":[],"mappings":";;;;;;;;;;;;AA4BA,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,mDAAY,CAAA;IACZ,+CAAS,CAAA;IACT,mDAAY,CAAA;IACZ,+CAAS,CAAA;IACT,mDAAY,CAAA;AACd,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED,MAAM,cAAc;IAIlB,YAAoB,KAA2B,EAAE,KAAa;QAH9D,wCAA4B;QAC5B,wCAAc;QAGZ,uBAAA,IAAI,yBAAU,KAAK,MAAA,CAAA;QACnB,uBAAA,IAAI,yBAAU,KAAK,MAAA,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAA2B,EAAE,KAAa;QACtD,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC;IAED,OAAO;QACL,OAAO,uBAAA,IAAI,6BAAO,CAAA;IACpB,CAAC;IAED,OAAO;QACL,OAAO,uBAAA,IAAI,6BAAO,CAAA;IACpB,CAAC;IAED,QAAQ;QACN,OAAO,uBAAA,IAAI,6BAAO,CAAC,QAAQ,EAAE,CAAA;IAC/B,CAAC;CACF;;AAID,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAoB,EACO,EAAE,CAAC,OAAO,YAAY,cAAc,CAAA;AAEjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAoB,EACc,EAAE,CACpC,OAAO,OAAO,IAAI,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;AAE1D,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACvD,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACvD,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAEtD,eAAe;IACb,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;CACuB,CAAA"}
@@ -1,11 +1,20 @@
1
1
  import type { BreakpointKeys } from './breakpoints';
2
2
  import type { Layout } from './layout';
3
3
  import type { Sizes } from './sizes';
4
+ import type spacings from './spacings';
5
+ import type { PicassoSpacing } from './spacings';
4
6
  declare module '@material-ui/core/styles' {
5
7
  interface Theme {
6
8
  layout: Layout;
7
9
  sizes: Sizes;
8
10
  screens: (...sizes: BreakpointKeys[]) => string;
11
+ spacings: Record<keyof typeof spacings, PicassoSpacing>;
12
+ }
13
+ interface ThemeOptions {
14
+ layout?: Layout;
15
+ sizes?: Sizes;
16
+ screens?: (...sizes: BreakpointKeys[]) => string;
17
+ spacings?: Record<keyof typeof spacings, PicassoSpacing>;
9
18
  }
10
19
  interface ThemeOptions {
11
20
  layout?: Layout;
@@ -1,2 +1,4 @@
1
1
  export * from './generate-random-string';
2
2
  export * from './get-serverside-stylesheets';
3
+ export * from './spacings';
4
+ export * from './responsive-styles';
@@ -1,3 +1,5 @@
1
1
  export * from './generate-random-string';
2
2
  export * from './get-serverside-stylesheets';
3
+ export * from './spacings';
4
+ export * from './responsive-styles';
3
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Picasso/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Picasso/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { BreakpointKeys } from '../../config';
2
+ import type { ResponsiveCssProp } from './types';
3
+ /**
4
+ * Creates a CSS class for a given breakpoint and CSS property
5
+ * that sets the value of the CSS property to the value of the CSS variable
6
+ * for that breakpoint and CSS property.
7
+ *
8
+ * Simplified example, for `margin-top` CSS property and `xs` breakpoint:
9
+ * ```css
10
+ * .xs--margin-top {
11
+ * margin-top: var(--picasso-responsive--xs--margin-top);
12
+ * }
13
+ * ```
14
+ */
15
+ export declare const createJssVariableClassNames: (breakpoint: BreakpointKeys, cssProp: ResponsiveCssProp) => {
16
+ [x: string]: {
17
+ [x: string]: string;
18
+ };
19
+ };
@@ -0,0 +1,24 @@
1
+ import { toClassName } from './to-class-name';
2
+ import { toCssVariableName } from './to-css-variable-name';
3
+ /**
4
+ * Creates a CSS class for a given breakpoint and CSS property
5
+ * that sets the value of the CSS property to the value of the CSS variable
6
+ * for that breakpoint and CSS property.
7
+ *
8
+ * Simplified example, for `margin-top` CSS property and `xs` breakpoint:
9
+ * ```css
10
+ * .xs--margin-top {
11
+ * margin-top: var(--picasso-responsive--xs--margin-top);
12
+ * }
13
+ * ```
14
+ */
15
+ export const createJssVariableClassNames = (breakpoint, cssProp) => {
16
+ const className = toClassName(breakpoint, cssProp);
17
+ const variable = `var(${toCssVariableName(breakpoint, cssProp)})`;
18
+ return {
19
+ [className]: {
20
+ [cssProp]: variable,
21
+ },
22
+ };
23
+ };
24
+ //# sourceMappingURL=create-jss-variable-class-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-jss-variable-class-names.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/create-jss-variable-class-names.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,UAA0B,EAC1B,OAA0B,EAC1B,EAAE;IACF,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,OAAO,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAA;IAEjE,OAAO;QACL,CAAC,SAAS,CAAC,EAAE;YACX,CAAC,OAAO,CAAC,EAAE,QAAQ;SACpB;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { createJssVariableClassNames } from './create-jss-variable-class-names';
2
+ describe('createJssVariableClassNames', () => {
3
+ it('returns an object with the correct class name and CSS property', () => {
4
+ const breakpoint = 'md';
5
+ const cssProp = 'padding';
6
+ const expectedClassName = 'md--padding';
7
+ const expectedVariable = 'var(--picasso-responsive--md--padding)';
8
+ const result = createJssVariableClassNames(breakpoint, cssProp);
9
+ expect(Object.keys(result)).toHaveLength(1);
10
+ expect(result[expectedClassName]).toBeDefined();
11
+ expect(result[expectedClassName][cssProp]).toEqual(expectedVariable);
12
+ });
13
+ });
14
+ //# sourceMappingURL=create-jss-variable-class-names.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-jss-variable-class-names.test.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/create-jss-variable-class-names.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAA;AAE/E,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,UAAU,GAAG,IAAI,CAAA;QACvB,MAAM,OAAO,GAAG,SAAS,CAAA;QAEzB,MAAM,iBAAiB,GAAG,aAAa,CAAA;QACvC,MAAM,gBAAgB,GAAG,wCAAwC,CAAA;QAEjE,MAAM,MAAM,GAAG,2BAA2B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAE/D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { Theme } from '@material-ui/core/styles';
2
+ import type { ResponsiveCssProp } from './types';
3
+ /**
4
+ * Creates a CSS class for *every* breakpoint and a given CSS property
5
+ * containing a media query for that breakpoint and sets the value of the CSS property
6
+ * to the value of the CSS variable for that breakpoint and CSS property.
7
+ *
8
+ * Simplified example, for `margin-top` CSS property and `xs` breakpoint:
9
+ * ```css
10
+ * @media (min-width: 0px) {
11
+ * .xs--margin-top {
12
+ * margin-top: var(--picasso-responsive--xs--margin-top);
13
+ * }
14
+ * }
15
+ * ```
16
+ */
17
+ export declare const createMediaQueries: (cssProp: ResponsiveCssProp, theme: Theme) => Record<string, {}>;
@@ -0,0 +1,24 @@
1
+ import { createJssVariableClassNames } from './create-jss-variable-class-names';
2
+ /**
3
+ * Creates a CSS class for *every* breakpoint and a given CSS property
4
+ * containing a media query for that breakpoint and sets the value of the CSS property
5
+ * to the value of the CSS variable for that breakpoint and CSS property.
6
+ *
7
+ * Simplified example, for `margin-top` CSS property and `xs` breakpoint:
8
+ * ```css
9
+ * @media (min-width: 0px) {
10
+ * .xs--margin-top {
11
+ * margin-top: var(--picasso-responsive--xs--margin-top);
12
+ * }
13
+ * }
14
+ * ```
15
+ */
16
+ export const createMediaQueries = (cssProp, theme) => {
17
+ const mediaQueries = {};
18
+ for (const breakpoint of [...theme.breakpoints.keys].reverse()) {
19
+ mediaQueries[theme.breakpoints.up(breakpoint)] =
20
+ createJssVariableClassNames(breakpoint, cssProp);
21
+ }
22
+ return mediaQueries;
23
+ };
24
+ //# sourceMappingURL=create-media-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-media-queries.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/create-media-queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAA;AAG/E;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAA0B,EAC1B,KAAY,EACZ,EAAE;IACF,MAAM,YAAY,GAAuB,EAAE,CAAA;IAE3C,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9D,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YAC5C,2BAA2B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;KACnD;IAED,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { createMediaQueries } from './create-media-queries';
2
+ describe('createMediaQueries', () => {
3
+ it('returns media queries with the correct class names and CSS properties', () => {
4
+ const cssProp = 'padding';
5
+ const theme = {
6
+ breakpoints: {
7
+ keys: ['sm', 'md'],
8
+ up: (breakpoint) => `@media (min-width: ${breakpoint})`,
9
+ },
10
+ };
11
+ const expectedMediaQueries = {
12
+ '@media (min-width: md)': {
13
+ 'md--padding': {
14
+ padding: 'var(--picasso-responsive--md--padding)',
15
+ },
16
+ },
17
+ '@media (min-width: sm)': {
18
+ 'sm--padding': {
19
+ padding: 'var(--picasso-responsive--sm--padding)',
20
+ },
21
+ },
22
+ };
23
+ const result = createMediaQueries(cssProp, theme);
24
+ expect(result).toEqual(expectedMediaQueries);
25
+ });
26
+ });
27
+ //# sourceMappingURL=create-media-queries.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-media-queries.test.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/create-media-queries.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,OAAO,GAAG,SAAS,CAAA;QACzB,MAAM,KAAK,GAAG;YACZ,WAAW,EAAE;gBACX,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAClB,EAAE,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,sBAAsB,UAAU,GAAG;aAChE;SACF,CAAA;QAED,MAAM,oBAAoB,GAAG;YAC3B,wBAAwB,EAAE;gBACxB,aAAa,EAAE;oBACb,OAAO,EAAE,wCAAwC;iBAClD;aACF;YACD,wBAAwB,EAAE;gBACxB,aAAa,EAAE;oBACb,OAAO,EAAE,wCAAwC;iBAClD;aACF;SACF,CAAA;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAc,CAAC,CAAA;QAE1D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { ResponsiveSpacingType } from '../../config';
2
+ import type { ResponsiveCssProp } from './types';
3
+ /**
4
+ * Creates a CSS class setting the picasso responsive CSS variable of the given CSS property
5
+ * for all breakpoints on the responsive spacing value
6
+ */
7
+ export declare const createVariableValuesJss: (spacing: ResponsiveSpacingType, prop: ResponsiveCssProp) => Record<string, string>;
@@ -0,0 +1,14 @@
1
+ import { spacingToRem } from '../spacings';
2
+ import { toCssVariableName } from './to-css-variable-name';
3
+ /**
4
+ * Creates a CSS class setting the picasso responsive CSS variable of the given CSS property
5
+ * for all breakpoints on the responsive spacing value
6
+ */
7
+ export const createVariableValuesJss = (spacing, prop) => {
8
+ const styles = {};
9
+ for (const [brk, value] of Object.entries(spacing)) {
10
+ styles[toCssVariableName(brk, prop)] = spacingToRem(value);
11
+ }
12
+ return styles;
13
+ };
14
+ //# sourceMappingURL=create-variable-values-jss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-variable-values-jss.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/create-variable-values-jss.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAA8B,EAC9B,IAAuB,EACvB,EAAE;IACF,MAAM,MAAM,GAA2B,EAAE,CAAA;IAEzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAClD,MAAM,CAAC,iBAAiB,CAAC,GAAqB,EAAE,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;KAC7E;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { SPACING_2, SPACING_4, SPACING_6 } from '../../config/spacings';
2
+ import { createVariableValuesJss } from './create-variable-values-jss';
3
+ describe('createVariableValuesJss', () => {
4
+ it('returns an object with the correct variable names and values', () => {
5
+ const spacing = {
6
+ sm: SPACING_2,
7
+ md: SPACING_4,
8
+ lg: SPACING_6,
9
+ };
10
+ const prop = 'margin';
11
+ const expectedStyles = {
12
+ '--picasso-responsive--lg--margin': '1.5rem',
13
+ '--picasso-responsive--md--margin': '1rem',
14
+ '--picasso-responsive--sm--margin': '0.5rem',
15
+ };
16
+ const result = createVariableValuesJss(spacing, prop);
17
+ expect(result).toEqual(expectedStyles);
18
+ });
19
+ });
20
+ //# sourceMappingURL=create-variable-values-jss.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-variable-values-jss.test.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/create-variable-values-jss.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAEtE,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;SACd,CAAA;QAED,MAAM,IAAI,GAAG,QAAQ,CAAA;QAErB,MAAM,cAAc,GAAG;YACrB,kCAAkC,EAAE,QAAQ;YAC5C,kCAAkC,EAAE,MAAM;YAC1C,kCAAkC,EAAE,QAAQ;SAC7C,CAAA;QAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAErD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { ResponsiveSpacingType, SpacingType } from '../../config';
2
+ import type { ResponsiveCssProp } from './types';
3
+ /**
4
+ * Just the default for a value that is not responsive
5
+ * Just set the prop directly on all media queries
6
+ */
7
+ export declare const defaultCssProp: (value: Exclude<SpacingType, ResponsiveSpacingType>, prop: ResponsiveCssProp) => {
8
+ [x: string]: string;
9
+ };
@@ -0,0 +1,10 @@
1
+ import { kebabToCamelCase } from '../../../utils';
2
+ import { spacingToRem } from '../spacings';
3
+ /**
4
+ * Just the default for a value that is not responsive
5
+ * Just set the prop directly on all media queries
6
+ */
7
+ export const defaultCssProp = (value, prop) => ({
8
+ [kebabToCamelCase(prop)]: spacingToRem(value),
9
+ });
10
+ //# sourceMappingURL=default-css-prop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-css-prop.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/default-css-prop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,KAAkD,EAClD,IAAuB,EACvB,EAAE,CAAC,CAAC;IACJ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;CAC9C,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { defaultCssProp } from './default-css-prop';
2
+ describe('defaultCssProp', () => {
3
+ it('returns an object with the kebab-case CSS property converted to camelCase and the value converted to rem format', () => {
4
+ const value = 8;
5
+ const prop = 'margin';
6
+ const expectedStyles = {
7
+ margin: '8rem',
8
+ };
9
+ const result = defaultCssProp(value, prop);
10
+ expect(result).toEqual(expectedStyles);
11
+ });
12
+ });
13
+ //# sourceMappingURL=default-css-prop.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-css-prop.test.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/default-css-prop.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,iHAAiH,EAAE,GAAG,EAAE;QACzH,MAAM,KAAK,GAAG,CAAC,CAAA;QACf,MAAM,IAAI,GAAG,QAAQ,CAAA;QACrB,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,MAAM;SACf,CAAA;QAED,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAE1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import type { ResponsiveCssSpacings } from './types';
2
+ export declare const generateVariableInlineStyles: <K extends string>(props: readonly K[], values: ResponsiveCssSpacings<K>) => Record<string, string>;
@@ -0,0 +1,16 @@
1
+ import { isResponsiveSpacing } from '../../config';
2
+ import { createVariableValuesJss } from './create-variable-values-jss';
3
+ import { defaultCssProp } from './default-css-prop';
4
+ export const generateVariableInlineStyles = (props, values) => {
5
+ const styles = {};
6
+ for (const prop of props) {
7
+ const value = values[prop];
8
+ if (value) {
9
+ Object.assign(styles, isResponsiveSpacing(value)
10
+ ? createVariableValuesJss(value, prop)
11
+ : defaultCssProp(value, prop));
12
+ }
13
+ }
14
+ return styles;
15
+ };
16
+ //# sourceMappingURL=generate-variable-inline-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-variable-inline-styles.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/generate-variable-inline-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,KAAmB,EACnB,MAAgC,EAChC,EAAE;IACF,MAAM,MAAM,GAA2B,EAAE,CAAA;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAE1B,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,MAAM,CACX,MAAM,EACN,mBAAmB,CAAC,KAAK,CAAC;gBACxB,CAAC,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC;gBACtC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAChC,CAAA;SACF;KACF;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { SPACING_4, SPACING_8 } from '../../config/spacings';
2
+ import { generateVariableInlineStyles } from './generate-variable-inline-styles';
3
+ describe('generateVariableInlineStyles', () => {
4
+ it('returns an object with inline styles based on the provided props and values', () => {
5
+ const props = ['margin', 'padding'];
6
+ const values = {
7
+ margin: SPACING_8,
8
+ padding: SPACING_4,
9
+ };
10
+ const expectedInlineStyles = {
11
+ margin: '2rem',
12
+ padding: '1rem',
13
+ };
14
+ const result = generateVariableInlineStyles(props, values);
15
+ expect(result).toEqual(expectedInlineStyles);
16
+ });
17
+ });
18
+ //# sourceMappingURL=generate-variable-inline-styles.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-variable-inline-styles.test.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/generate-variable-inline-styles.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAEhF,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,SAAS;SACnB,CAAA;QACD,MAAM,oBAAoB,GAAG;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,MAAM;SAChB,CAAA;QAED,MAAM,MAAM,GAAG,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAE1D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { ResponsiveCssSpacings } from './types';
2
+ /**
3
+ * Filter which media queries CSS classes should be applied,
4
+ * we want to the element to fallback to the previous layer, so we only apply
5
+ * the media queries that are explicitly set on spacing value
6
+ */
7
+ export declare const getBreakpointClassNamesToUse: <K extends string>(props: readonly K[], propSizes: ResponsiveCssSpacings<K>) => string[];
@@ -0,0 +1,20 @@
1
+ import { isResponsiveSpacing } from '../../config';
2
+ import { toClassName } from './to-class-name';
3
+ /**
4
+ * Filter which media queries CSS classes should be applied,
5
+ * we want to the element to fallback to the previous layer, so we only apply
6
+ * the media queries that are explicitly set on spacing value
7
+ */
8
+ export const getBreakpointClassNamesToUse = (props, propSizes) => {
9
+ const classNames = new Set();
10
+ for (const prop of props) {
11
+ const spacing = propSizes[prop];
12
+ if (spacing && isResponsiveSpacing(spacing)) {
13
+ Object.keys(spacing)
14
+ .map(brk => toClassName(brk, prop))
15
+ .forEach(classNames.add, classNames);
16
+ }
17
+ }
18
+ return [...classNames];
19
+ };
20
+ //# sourceMappingURL=get-breakpoint-class-names-to-use.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-breakpoint-class-names-to-use.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/get-breakpoint-class-names-to-use.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,KAAmB,EACnB,SAAmC,EACnC,EAAE;IACF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;QAE/B,IAAI,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;YAC3C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;iBACjB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAqB,EAAE,IAAI,CAAC,CAAC;iBACpD,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;SACvC;KACF;IAED,OAAO,CAAC,GAAG,UAAU,CAAC,CAAA;AACxB,CAAC,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { SPACING_1, SPACING_2, SPACING_4 } from '../../config/spacings';
2
+ import { getBreakpointClassNamesToUse } from './get-breakpoint-class-names-to-use';
3
+ describe('getBreakpointClassNamesToUse', () => {
4
+ it('returns an array of unique classNames based on the provided props and propSizes', () => {
5
+ const props = ['margin', 'padding'];
6
+ const propSizes = {
7
+ margin: SPACING_1,
8
+ padding: {
9
+ sm: SPACING_2,
10
+ md: SPACING_4,
11
+ },
12
+ };
13
+ const expectedClassNames = ['sm--padding', 'md--padding'];
14
+ const result = getBreakpointClassNamesToUse(props, propSizes);
15
+ expect(result).toEqual(expectedClassNames);
16
+ });
17
+ });
18
+ //# sourceMappingURL=get-breakpoint-class-names-to-use.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-breakpoint-class-names-to-use.test.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/get-breakpoint-class-names-to-use.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAA;AAElF,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QACnC,MAAM,SAAS,GAAG;YAChB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE;gBACP,EAAE,EAAE,SAAS;gBACb,EAAE,EAAE,SAAS;aACd;SACF,CAAA;QACD,MAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;QAEzD,MAAM,MAAM,GAAG,4BAA4B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAE7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export { default as makeResponsiveSpacingProps } from './make-responsive-spacing-props';
@@ -0,0 +1,2 @@
1
+ export { default as makeResponsiveSpacingProps } from './make-responsive-spacing-props';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,iCAAiC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { ResponsiveCssSpacings } from './types';
2
+ declare const makeResponsiveSpacingProps: <K extends string>(props: readonly K[], name: string) => (propValues: ResponsiveCssSpacings<K>) => {
3
+ className: string;
4
+ style: Record<string, string>;
5
+ };
6
+ export default makeResponsiveSpacingProps;
@@ -0,0 +1,21 @@
1
+ import cx from 'classnames';
2
+ import { makeStyles } from '@material-ui/core';
3
+ import { mediaQueriesClasses } from './media-queries-classes';
4
+ import { getBreakpointClassNamesToUse } from './get-breakpoint-class-names-to-use';
5
+ import { generateVariableInlineStyles } from './generate-variable-inline-styles';
6
+ const makeResponsiveSpacingProps = (props, name) => {
7
+ const useStyles = makeStyles((theme) => mediaQueriesClasses(props, theme), {
8
+ name: name,
9
+ });
10
+ const useResponsiveClassNames = (propValues) => {
11
+ const classes = useStyles();
12
+ const mediaQueries = getBreakpointClassNamesToUse(props, propValues);
13
+ return {
14
+ className: cx(...mediaQueries.map(brkClassName => classes[brkClassName])),
15
+ style: generateVariableInlineStyles(props, propValues),
16
+ };
17
+ };
18
+ return useResponsiveClassNames;
19
+ };
20
+ export default makeResponsiveSpacingProps;
21
+ //# sourceMappingURL=make-responsive-spacing-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-responsive-spacing-props.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/make-responsive-spacing-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAA;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAEhF,MAAM,0BAA0B,GAAG,CACjC,KAAmB,EACnB,IAAY,EACZ,EAAE;IACF,MAAM,SAAS,GAAG,UAAU,CAC1B,CAAC,KAAY,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,EACnD;QACE,IAAI,EAAE,IAAI;KACX,CACF,CAAA;IAED,MAAM,uBAAuB,GAAG,CAAC,UAAoC,EAAE,EAAE;QACvE,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;QAC3B,MAAM,YAAY,GAAG,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAEpE,OAAO;YACL,SAAS,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YACzE,KAAK,EAAE,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC;SACvD,CAAA;IACH,CAAC,CAAA;IAED,OAAO,uBAAuB,CAAA;AAChC,CAAC,CAAA;AAED,eAAe,0BAA0B,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { Theme } from '@material-ui/core';
2
+ /**
3
+ * Just aggregate all the media queries classes
4
+ * for all responsive props passed
5
+ */
6
+ export declare const mediaQueriesClasses: <K extends string>(responsiveProps: readonly K[], theme: Theme) => Record<string, Record<string, string>>;
@@ -0,0 +1,16 @@
1
+ import { createMediaQueries } from './create-media-queries';
2
+ /**
3
+ * Just aggregate all the media queries classes
4
+ * for all responsive props passed
5
+ */
6
+ export const mediaQueriesClasses = (responsiveProps, theme) => {
7
+ const mediaQueries = {};
8
+ for (const prop of responsiveProps) {
9
+ const newMediaQueries = createMediaQueries(prop, theme);
10
+ for (const [brk, value] of Object.entries(newMediaQueries)) {
11
+ mediaQueries[brk] = Object.assign(Object.assign({}, mediaQueries[brk]), value);
12
+ }
13
+ }
14
+ return mediaQueries;
15
+ };
16
+ //# sourceMappingURL=media-queries-classes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-queries-classes.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/media-queries-classes.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,eAA6B,EAC7B,KAAY,EACZ,EAAE;IACF,MAAM,YAAY,GAA2C,EAAE,CAAA;IAE/D,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE;QAClC,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAEvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;YAC1D,YAAY,CAAC,GAAG,CAAC,mCACZ,YAAY,CAAC,GAAG,CAAC,GACjB,KAAK,CACT,CAAA;SACF;KACF;IAED,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { mediaQueriesClasses } from './media-queries-classes';
2
+ describe('mediaQueriesClasses', () => {
3
+ it('returns an object with media queries classes based on the responsive props and theme', () => {
4
+ const responsiveProps = ['margin'];
5
+ const theme = {
6
+ breakpoints: {
7
+ keys: ['sm', 'md'],
8
+ up: (breakpoint) => `@media (min-width: ${breakpoint})`,
9
+ },
10
+ };
11
+ const expectedMediaQueries = {
12
+ '@media (min-width: md)': {
13
+ 'md--margin': {
14
+ margin: 'var(--picasso-responsive--md--margin)',
15
+ },
16
+ },
17
+ '@media (min-width: sm)': {
18
+ 'sm--margin': {
19
+ margin: 'var(--picasso-responsive--sm--margin)',
20
+ },
21
+ },
22
+ };
23
+ const result = mediaQueriesClasses(responsiveProps, theme);
24
+ expect(result).toEqual(expectedMediaQueries);
25
+ });
26
+ });
27
+ //# sourceMappingURL=media-queries-classes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-queries-classes.test.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/media-queries-classes.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAE7D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,eAAe,GAAG,CAAC,QAAQ,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG;YACZ,WAAW,EAAE;gBACX,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBAClB,EAAE,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,sBAAsB,UAAU,GAAG;aAChE;SACF,CAAA;QAED,MAAM,oBAAoB,GAAG;YAC3B,wBAAwB,EAAE;gBACxB,YAAY,EAAE;oBACZ,MAAM,EAAE,uCAAuC;iBAChD;aACF;YACD,wBAAwB,EAAE;gBACxB,YAAY,EAAE;oBACZ,MAAM,EAAE,uCAAuC;iBAChD;aACF;SACF,CAAA;QAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,eAAe,EAAE,KAAc,CAAC,CAAA;QAEnE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { BreakpointKeys } from '../../config';
2
+ import type { ResponsiveCssProp } from './types';
3
+ export declare const toClassName: (breakpoint: BreakpointKeys, prop: ResponsiveCssProp) => string;
@@ -0,0 +1,4 @@
1
+ export const toClassName = (breakpoint, prop) => {
2
+ return `${breakpoint}--${prop}`;
3
+ };
4
+ //# sourceMappingURL=to-class-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-class-name.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/to-class-name.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,UAA0B,EAC1B,IAAuB,EACvB,EAAE;IACF,OAAO,GAAG,UAAU,KAAK,IAAI,EAAE,CAAA;AACjC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { toClassName } from './to-class-name';
2
+ describe('toClassName', () => {
3
+ it('returns a string with the breakpoint and prop separated by a double dash', () => {
4
+ const breakpoint = 'md';
5
+ const prop = 'color';
6
+ const expectedClassName = 'md--color';
7
+ const result = toClassName(breakpoint, prop);
8
+ expect(result).toBe(expectedClassName);
9
+ });
10
+ });
11
+ //# sourceMappingURL=to-class-name.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-class-name.test.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/to-class-name.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,UAAU,GAAG,IAAI,CAAA;QACvB,MAAM,IAAI,GAAG,OAAO,CAAA;QACpB,MAAM,iBAAiB,GAAG,WAAW,CAAA;QAErC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAE5C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { BreakpointKeys } from '../../config';
2
+ import type { ResponsiveCssProp } from './types';
3
+ export declare const toCssVariableName: (breakpoint: BreakpointKeys, prop: ResponsiveCssProp) => string;
@@ -0,0 +1,4 @@
1
+ export const toCssVariableName = (breakpoint, prop) => {
2
+ return `--picasso-responsive--${breakpoint}--${prop}`;
3
+ };
4
+ //# sourceMappingURL=to-css-variable-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-css-variable-name.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/to-css-variable-name.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,UAA0B,EAC1B,IAAuB,EACvB,EAAE;IACF,OAAO,yBAAyB,UAAU,KAAK,IAAI,EAAE,CAAA;AACvD,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { toCssVariableName } from './to-css-variable-name';
2
+ describe('toCssVariableName', () => {
3
+ it('returns a string in the correct format with the breakpoint and prop', () => {
4
+ const breakpoint = 'md';
5
+ const prop = 'color';
6
+ const expectedCssVariableName = '--picasso-responsive--md--color';
7
+ const result = toCssVariableName(breakpoint, prop);
8
+ expect(result).toBe(expectedCssVariableName);
9
+ });
10
+ });
11
+ //# sourceMappingURL=to-css-variable-name.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-css-variable-name.test.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/to-css-variable-name.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,UAAU,GAAG,IAAI,CAAA;QACvB,MAAM,IAAI,GAAG,OAAO,CAAA;QACpB,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;QAEjE,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAElD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { SpacingType } from '../../config';
2
+ export declare type ResponsiveCssProp = string;
3
+ export declare type ResponsiveCssSpacings<K extends ResponsiveCssProp> = {
4
+ [k in K]: SpacingType | undefined;
5
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/Picasso/utils/responsive-styles/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { ResponsiveSpacingType, SpacingType } from '../config/spacings';
2
+ declare const spacingToRem: (spacing: Exclude<SpacingType, ResponsiveSpacingType>) => string;
3
+ export { spacingToRem };
@@ -0,0 +1,9 @@
1
+ import { SpacingEnum, isPicassoSpacing } from '../config/spacings';
2
+ const spacingToRem = (spacing) => {
3
+ if (typeof spacing == 'number' || isPicassoSpacing(spacing)) {
4
+ return `${spacing.valueOf()}rem`;
5
+ }
6
+ return `${SpacingEnum[spacing]}rem`;
7
+ };
8
+ export { spacingToRem };
9
+ //# sourceMappingURL=spacings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacings.js","sourceRoot":"","sources":["../../../src/Picasso/utils/spacings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAElE,MAAM,YAAY,GAAG,CACnB,OAAoD,EAC5C,EAAE;IACV,IAAI,OAAO,OAAO,IAAI,QAAQ,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE;QAC3D,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAA;KACjC;IAED,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAA;AACrC,CAAC,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ import { spacingToRem } from './spacings';
2
+ import { SPACING_0, SPACING_1, SPACING_2, SPACING_3, SPACING_4, SPACING_6, SPACING_8, SPACING_10, SPACING_12, } from '../config/spacings';
3
+ describe('spacingUtils', () => {
4
+ describe('spacingToRem', () => {
5
+ describe('when spacing is a number', () => {
6
+ it('converts to rem', () => {
7
+ expect(spacingToRem(1)).toBe('1rem');
8
+ expect(spacingToRem(2.5)).toBe('2.5rem');
9
+ });
10
+ });
11
+ describe('when spacing is a valid Picasso spacing', () => {
12
+ it('converts to rem', () => {
13
+ expect(spacingToRem(SPACING_0)).toBe('0rem');
14
+ expect(spacingToRem(SPACING_1)).toBe('0.25rem');
15
+ expect(spacingToRem(SPACING_2)).toBe('0.5rem');
16
+ expect(spacingToRem(SPACING_3)).toBe('0.75rem');
17
+ expect(spacingToRem(SPACING_4)).toBe('1rem');
18
+ expect(spacingToRem(SPACING_6)).toBe('1.5rem');
19
+ expect(spacingToRem(SPACING_8)).toBe('2rem');
20
+ expect(spacingToRem(SPACING_10)).toBe('2.5rem');
21
+ expect(spacingToRem(SPACING_12)).toBe('3rem');
22
+ });
23
+ });
24
+ describe('when spacing is a string Picasso spacing', () => {
25
+ it('converts to rem', () => {
26
+ expect(spacingToRem('xsmall')).toBe('0.5rem');
27
+ expect(spacingToRem('small')).toBe('1rem');
28
+ expect(spacingToRem('medium')).toBe('1.5rem');
29
+ expect(spacingToRem('large')).toBe('2rem');
30
+ expect(spacingToRem('xlarge')).toBe('2.5rem');
31
+ });
32
+ });
33
+ });
34
+ });
35
+ //# sourceMappingURL=spacings.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacings.test.js","sourceRoot":"","sources":["../../../src/Picasso/utils/spacings.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,oBAAoB,CAAA;AAE3B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACxC,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;gBACzB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACpC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC1C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACvD,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;gBACzB,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC5C,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC/C,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC9C,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC/C,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC5C,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC9C,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC5C,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC/C,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACxD,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;gBACzB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC7C,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC1C,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC7C,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC1C,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC/C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { default, FixViewport, FontsLoader, NotificationsProvider, NotificationsProviderProps, PicassoLight, } from './Picasso';
2
- export { useScreenSize, isScreenSize, useBreakpoint, breakpointsList, useScreens, colors, gradients, palette, layout, breakpoints, screens, transitions, typography, sizes, shadows, PicassoBreakpoints, BreakpointKeys, } from './Picasso/config';
2
+ export { useScreenSize, isScreenSize, useBreakpoint, breakpointsList, useScreens, colors, gradients, palette, layout, breakpoints, screens, transitions, typography, sizes, shadows, PicassoBreakpoints, BreakpointKeys, spacings, SpacingEnum, isResponsiveSpacing, } from './Picasso/config';
3
+ export type { Sizes, SizeType, SpacingType, ResponsiveSpacingType, DeprecatedSpacingType, PicassoSpacing, } from './Picasso/config';
3
4
  export { default as PicassoProvider } from './Picasso/PicassoProvider';
4
5
  export { usePicassoRoot, usePageTopBar, useAppConfig, useDrawer, useSidebar, useCurrentBreakpointRange, usePreventPageWidthChangeOnScrollbar, RootContext, } from './Picasso/RootContext';
5
- export { generateRandomString, generateRandomStringOrGetEmptyInTest, getServersideStylesheets, } from './Picasso/utils';
6
+ export * from './Picasso/utils';
6
7
  export { default as Favicon } from './Favicon';
package/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { default, FixViewport, FontsLoader, NotificationsProvider, PicassoLight, } from './Picasso';
2
- export { useScreenSize, isScreenSize, useBreakpoint, breakpointsList, useScreens, colors, gradients, palette, layout, breakpoints, screens, transitions, typography, sizes, shadows, PicassoBreakpoints, } from './Picasso/config';
2
+ export { useScreenSize, isScreenSize, useBreakpoint, breakpointsList, useScreens, colors, gradients, palette, layout, breakpoints, screens, transitions, typography, sizes, shadows, PicassoBreakpoints, spacings, SpacingEnum, isResponsiveSpacing, } from './Picasso/config';
3
3
  export { default as PicassoProvider } from './Picasso/PicassoProvider';
4
4
  export { usePicassoRoot, usePageTopBar, useAppConfig, useDrawer, useSidebar, useCurrentBreakpointRange, usePreventPageWidthChangeOnScrollbar, RootContext, } from './Picasso/RootContext';
5
- export { generateRandomString, generateRandomStringOrGetEmptyInTest, getServersideStylesheets, } from './Picasso/utils';
5
+ export * from './Picasso/utils';
6
6
  export { default as Favicon } from './Favicon';
7
7
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,WAAW,EACX,WAAW,EACX,qBAAqB,EAErB,YAAY,GACb,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,EACf,UAAU,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,MAAM,EACN,WAAW,EACX,OAAO,EACP,WAAW,EACX,UAAU,EACV,KAAK,EACL,OAAO,EACP,kBAAkB,GAEnB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEtE,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,SAAS,EACT,UAAU,EACV,yBAAyB,EACzB,oCAAoC,EACpC,WAAW,GACZ,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,oBAAoB,EACpB,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,WAAW,EACX,WAAW,EACX,qBAAqB,EAErB,YAAY,GACb,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,EACf,UAAU,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,MAAM,EACN,WAAW,EACX,OAAO,EACP,WAAW,EACX,UAAU,EACV,KAAK,EACL,OAAO,EACP,kBAAkB,EAElB,QAAQ,EACR,WAAW,EACX,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AAWzB,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEtE,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,SAAS,EACT,UAAU,EACV,yBAAyB,EACzB,oCAAoC,EACpC,WAAW,GACZ,MAAM,uBAAuB,CAAA;AAE9B,cAAc,iBAAiB,CAAA;AAE/B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toptal/picasso-provider",
3
- "version": "3.3.1",
3
+ "version": "3.4.0",
4
4
  "description": "Picasso provider",
5
5
  "author": "Toptal",
6
6
  "license": "MIT",
package/utils/index.d.ts CHANGED
@@ -1 +1,3 @@
1
1
  export { default as isBrowser } from './is-browser';
2
+ export { default as kebabToCamelCase } from './kebab-to-camel-case';
3
+ export { default as snakeToCamelCase } from './snake-to-camel-case';
package/utils/index.js CHANGED
@@ -1,2 +1,4 @@
1
1
  export { default as isBrowser } from './is-browser';
2
+ export { default as kebabToCamelCase } from './kebab-to-camel-case';
3
+ export { default as snakeToCamelCase } from './snake-to-camel-case';
2
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const kebabToCamelCase: (str: string) => string;
2
+ export default kebabToCamelCase;
@@ -0,0 +1,3 @@
1
+ const kebabToCamelCase = (str) => str.replace(/-([a-z])/g, (substring) => substring[1].toUpperCase());
2
+ export default kebabToCamelCase;
3
+ //# sourceMappingURL=kebab-to-camel-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kebab-to-camel-case.js","sourceRoot":"","sources":["../../src/utils/kebab-to-camel-case.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,EAAE,CACvC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAE7E,eAAe,gBAAgB,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import kebabToCamelCase from './kebab-to-camel-case';
2
+ describe('kebabToCamelCase()', () => {
3
+ it('transforms kebab-case to camelCase', () => {
4
+ expect(kebabToCamelCase('test-text-in-kebab')).toBe('testTextInKebab');
5
+ });
6
+ });
7
+ //# sourceMappingURL=kebab-to-camel-case.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kebab-to-camel-case.test.js","sourceRoot":"","sources":["../../src/utils/kebab-to-camel-case.test.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,uBAAuB,CAAA;AAEpD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const snakeToCamelCase: (snakeCase: string, capitalise?: boolean) => string;
2
+ export default snakeToCamelCase;
@@ -0,0 +1,14 @@
1
+ const snakeToCamelCase = (snakeCase, capitalise = false) => {
2
+ const words = snakeCase.toLowerCase().split('_');
3
+ const camelCase = words
4
+ .map((word, index) => {
5
+ if (!capitalise && index === 0) {
6
+ return word;
7
+ }
8
+ return word.charAt(0).toUpperCase() + word.slice(1);
9
+ })
10
+ .join('');
11
+ return camelCase;
12
+ };
13
+ export default snakeToCamelCase;
14
+ //# sourceMappingURL=snake-to-camel-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snake-to-camel-case.js","sourceRoot":"","sources":["../../src/utils/snake-to-camel-case.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAE,UAAU,GAAG,KAAK,EAAU,EAAE;IACzE,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChD,MAAM,SAAS,GAAG,KAAK;SACpB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,IAAI,CAAC,UAAU,IAAI,KAAK,KAAK,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAA;SACZ;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACrD,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,eAAe,gBAAgB,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ import { default as snakeToCamelCase } from './snake-to-camel-case';
2
+ describe('snakeToCamelCase', () => {
3
+ it('converts a capitalized snake case string to camel case', () => {
4
+ const snakeCaseString = 'CAPITALISED_SNAKE_CASE';
5
+ const expectedCamelCaseString = 'capitalisedSnakeCase';
6
+ const result = snakeToCamelCase(snakeCaseString);
7
+ expect(result).toBe(expectedCamelCaseString);
8
+ });
9
+ it('converts a single word to camel case', () => {
10
+ const snakeCaseString = 'SINGLE';
11
+ const expectedCamelCaseString = 'single';
12
+ const result = snakeToCamelCase(snakeCaseString);
13
+ expect(result).toBe(expectedCamelCaseString);
14
+ });
15
+ it('converts an empty string to an empty camel case string', () => {
16
+ const snakeCaseString = '';
17
+ const expectedCamelCaseString = '';
18
+ const result = snakeToCamelCase(snakeCaseString);
19
+ expect(result).toBe(expectedCamelCaseString);
20
+ });
21
+ describe('when "capitalise" is true', () => {
22
+ it('capitalises first word', () => {
23
+ const snakeCaseString = 'SOME_TEST_TEXT1';
24
+ const expectedCamelCaseString = 'SomeTestText1';
25
+ const result = snakeToCamelCase(snakeCaseString, true);
26
+ expect(result).toBe(expectedCamelCaseString);
27
+ });
28
+ });
29
+ });
30
+ //# sourceMappingURL=snake-to-camel-case.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snake-to-camel-case.test.js","sourceRoot":"","sources":["../../src/utils/snake-to-camel-case.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAEnE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,eAAe,GAAG,wBAAwB,CAAA;QAChD,MAAM,uBAAuB,GAAG,sBAAsB,CAAA;QAEtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAA;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,eAAe,GAAG,QAAQ,CAAA;QAChC,MAAM,uBAAuB,GAAG,QAAQ,CAAA;QAExC,MAAM,MAAM,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAA;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,eAAe,GAAG,EAAE,CAAA;QAC1B,MAAM,uBAAuB,GAAG,EAAE,CAAA;QAElC,MAAM,MAAM,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAA;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,eAAe,GAAG,iBAAiB,CAAA;YACzC,MAAM,uBAAuB,GAAG,eAAe,CAAA;YAE/C,MAAM,MAAM,GAAG,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;YAEtD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}