purse-styles 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -8
- package/dist/cssVar.d.ts +1 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +46 -21
- package/dist/index.js.map +1 -1
- package/dist/purse.d.ts +3 -1
- package/package.json +14 -6
- package/src/cssVar.ts +5 -3
- package/src/index.ts +11 -7
- package/src/purse.test.ts +37 -2
- package/src/purse.tsx +63 -22
package/README.md
CHANGED
|
@@ -57,11 +57,16 @@ Define typed CSS custom properties with `defineVars`. Defaults are injected on `
|
|
|
57
57
|
```tsx
|
|
58
58
|
import { PurseProvider, defineVars, style, useStyles } from "purse-styles"
|
|
59
59
|
|
|
60
|
-
const
|
|
60
|
+
const DARK_THEME = ':root[data-theme="dark"]'
|
|
61
|
+
const DARK_MEDIA = "@media (prefers-color-scheme: dark)"
|
|
61
62
|
|
|
62
63
|
export const colors = defineVars({
|
|
63
|
-
text: {
|
|
64
|
-
|
|
64
|
+
text: {
|
|
65
|
+
default: "black",
|
|
66
|
+
[DARK_THEME]: "white",
|
|
67
|
+
[DARK_MEDIA]: "white",
|
|
68
|
+
},
|
|
69
|
+
background: { default: "white", [DARK_THEME]: "black" },
|
|
65
70
|
accent: "blue",
|
|
66
71
|
})
|
|
67
72
|
|
|
@@ -85,8 +90,9 @@ Notes:
|
|
|
85
90
|
|
|
86
91
|
- Token names are generated (`var(--purse-<hash>-<key>)`). Identical definition objects share the same names.
|
|
87
92
|
- Keys cannot start with `--`; Purse always generates the custom property name.
|
|
88
|
-
- Conditional values use a required `default` plus CSS at-rule keys (`@media
|
|
89
|
-
-
|
|
93
|
+
- Conditional values use a required `default` plus CSS at-rule or selector keys. At-rules wrap a `:root` rule (for example, `@media ...{:root{...}}`), while selector conditions receive the declarations directly (for example, `:root[data-theme="dark"]{...}`).
|
|
94
|
+
- Set `data-theme="dark"` on the root `<html>` element to activate the selector condition above.
|
|
95
|
+
- Defaults are root-level, and there is no dedicated `createTheme` / subtree theme API.
|
|
90
96
|
|
|
91
97
|
## Exports
|
|
92
98
|
|
|
@@ -101,10 +107,11 @@ export declare function useStyles(
|
|
|
101
107
|
...styleElementsOrCSS: (CSSProperties | StyleElement)[]
|
|
102
108
|
): string
|
|
103
109
|
|
|
104
|
-
// Inject global styles into the app, you may want to do this as an escape hatch
|
|
110
|
+
// Inject global styles into the app, you may want to do this as an escape hatch.
|
|
111
|
+
// Accepts the same style object shape as style() (including nested / at-rules).
|
|
105
112
|
export declare function useInjectGlobalStyles(
|
|
106
113
|
selector: string,
|
|
107
|
-
cssProperties:
|
|
114
|
+
cssProperties: CSSProperties,
|
|
108
115
|
deps: DependencyList,
|
|
109
116
|
): void
|
|
110
117
|
|
|
@@ -132,5 +139,5 @@ export declare function createInMemoryStyleApi(): InMemoryStyleApi
|
|
|
132
139
|
|
|
133
140
|
## TODO
|
|
134
141
|
|
|
135
|
-
- [
|
|
142
|
+
- [x] E2E tests with Playwright
|
|
136
143
|
- [ ] Consider exporting a simple `styled` alternative
|
package/dist/cssVar.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type CSS from "csstype";
|
|
2
1
|
import { Destructor } from "./destructors";
|
|
3
2
|
export type CSSVar = `var(--${string})`;
|
|
4
3
|
export type VariablePrimitive = string | number;
|
|
5
|
-
export type VariableCondition =
|
|
4
|
+
export type VariableCondition = string;
|
|
6
5
|
export type ConditionalVariableValue<T extends VariablePrimitive = VariablePrimitive> = {
|
|
7
6
|
default: T;
|
|
8
7
|
} & Partial<Record<VariableCondition, T>>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { PurseProvider, createInMemoryStyleApi, style, useInjectGlobalStyles, useStyles, } from "./purse";
|
|
2
|
+
export type { CSSProperties, InMemoryStyleApi, StyleApi, StyleArgument, StyleElement, } from "./purse";
|
|
3
|
+
export { defineVars, getVariableGroupMetadata, } from "./cssVar";
|
|
4
|
+
export type { AnyVariableGroup, CSSVar, ConditionalVariableValue, VariableCondition, VariableDefinition, VariableGroup, VariableGroupMetadata, VariablePrimitive, } from "./cssVar";
|
package/dist/index.js
CHANGED
|
@@ -41,7 +41,7 @@ function toPhash(h, x) {
|
|
|
41
41
|
var hashObject = (value) => toAlphabeticName(toPhash(5381, JSON.stringify(value)) >>> 0);
|
|
42
42
|
|
|
43
43
|
// src/cssVar.ts
|
|
44
|
-
var VARIABLE_GROUP_META = Symbol("purse.variableGroup");
|
|
44
|
+
var VARIABLE_GROUP_META = /* @__PURE__ */ Symbol("purse.variableGroup");
|
|
45
45
|
var registeredGroups = /* @__PURE__ */ new Map();
|
|
46
46
|
var listeners = /* @__PURE__ */ new Set();
|
|
47
47
|
function normalizeDefinition(value) {
|
|
@@ -100,8 +100,9 @@ function compileVariableGroupRules(metadata) {
|
|
|
100
100
|
}
|
|
101
101
|
const rules = [`:root{${rootDeclarations}}`];
|
|
102
102
|
for (const condition of [...declarationsByCondition.keys()].sort()) {
|
|
103
|
+
const declarations = declarationsByCondition.get(condition);
|
|
103
104
|
rules.push(
|
|
104
|
-
`${condition}{:root{${
|
|
105
|
+
condition.startsWith("@") ? `${condition}{:root{${declarations}}}` : `${condition}{${declarations}}`
|
|
105
106
|
);
|
|
106
107
|
}
|
|
107
108
|
return rules;
|
|
@@ -254,7 +255,7 @@ function isUnitlessNumberProperty(kebabProperty) {
|
|
|
254
255
|
return false;
|
|
255
256
|
}
|
|
256
257
|
var PurseContext = createContext(void 0);
|
|
257
|
-
var __style__ = Symbol("style-element");
|
|
258
|
+
var __style__ = /* @__PURE__ */ Symbol("style-element");
|
|
258
259
|
function isStyleElement(o) {
|
|
259
260
|
return o != null && typeof o === "object" && "__style__" in o && o["__style__"] === __style__;
|
|
260
261
|
}
|
|
@@ -489,30 +490,52 @@ function groupCSSProperties(properties) {
|
|
|
489
490
|
}
|
|
490
491
|
return styleDeclarationsBySelector;
|
|
491
492
|
}
|
|
492
|
-
function
|
|
493
|
+
function rulesFromCompiledGroups(compiledStyleDeclarationsByGroup, targetSelector) {
|
|
494
|
+
return entries(compiledStyleDeclarationsByGroup).map(([group, styles]) => {
|
|
495
|
+
if (group === "") {
|
|
496
|
+
return `${targetSelector}{${styles}}`;
|
|
497
|
+
} else if (group.startsWith("@")) {
|
|
498
|
+
return `${group}{${targetSelector}{${styles}}}`;
|
|
499
|
+
} else {
|
|
500
|
+
const selector = group.replace(/&/g, targetSelector);
|
|
501
|
+
return `${selector}{${styles}}`;
|
|
502
|
+
}
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
function compileStyleDeclarationGroups(properties) {
|
|
493
506
|
if (isObjectEmpty(properties)) {
|
|
494
507
|
return void 0;
|
|
495
508
|
}
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
compileDeclarations
|
|
509
|
+
return mapValues(
|
|
510
|
+
groupCSSProperties(properties),
|
|
511
|
+
(declarations) => compileDeclarations(declarations ?? {})
|
|
500
512
|
);
|
|
513
|
+
}
|
|
514
|
+
function compileCSSPropertiesToRules(properties, targetSelector) {
|
|
515
|
+
const compiledStyleDeclarationsByGroup = compileStyleDeclarationGroups(properties);
|
|
516
|
+
if (!compiledStyleDeclarationsByGroup) {
|
|
517
|
+
return [];
|
|
518
|
+
}
|
|
519
|
+
return rulesFromCompiledGroups(
|
|
520
|
+
compiledStyleDeclarationsByGroup,
|
|
521
|
+
targetSelector
|
|
522
|
+
);
|
|
523
|
+
}
|
|
524
|
+
function compileCSS(properties) {
|
|
525
|
+
const compiledStyleDeclarationsByGroup = compileStyleDeclarationGroups(properties);
|
|
526
|
+
if (!compiledStyleDeclarationsByGroup) {
|
|
527
|
+
return void 0;
|
|
528
|
+
}
|
|
501
529
|
const className = hashObject(compiledStyleDeclarationsByGroup);
|
|
502
|
-
const styleRules =
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
return `.${className}{${styles}}`;
|
|
506
|
-
} else if (group.startsWith("@")) {
|
|
507
|
-
return `${group}{.${className}{${styles}}}`;
|
|
508
|
-
} else {
|
|
509
|
-
const selector = group.replace(/&/g, `.${className}`);
|
|
510
|
-
return `${selector}{${styles}}`;
|
|
511
|
-
}
|
|
512
|
-
}
|
|
530
|
+
const styleRules = rulesFromCompiledGroups(
|
|
531
|
+
compiledStyleDeclarationsByGroup,
|
|
532
|
+
`.${className}`
|
|
513
533
|
);
|
|
514
534
|
return { styleRules, className };
|
|
515
535
|
}
|
|
536
|
+
function compileGlobalStyleRules(selector, cssProperties) {
|
|
537
|
+
return compileCSSPropertiesToRules(cssProperties, selector);
|
|
538
|
+
}
|
|
516
539
|
function style(...styleElementsOrCSS) {
|
|
517
540
|
let composed = [];
|
|
518
541
|
let cssPropertyGroups = [];
|
|
@@ -540,8 +563,10 @@ function style(...styleElementsOrCSS) {
|
|
|
540
563
|
function useInjectGlobalStyles(selector, cssProperties, deps) {
|
|
541
564
|
const styleApi = useRequiredContext(PurseContext);
|
|
542
565
|
useLayoutEffect(() => {
|
|
543
|
-
const
|
|
544
|
-
const destructor =
|
|
566
|
+
const styleRules = compileGlobalStyleRules(selector, cssProperties);
|
|
567
|
+
const destructor = joinDestructors(
|
|
568
|
+
styleRules.map((styleRule) => styleApi.addGlobalStyle(styleRule))
|
|
569
|
+
);
|
|
545
570
|
return destructor;
|
|
546
571
|
}, deps);
|
|
547
572
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/purse.tsx", "../src/clsx.ts", "../src/destructors.ts", "../src/hashObject.ts", "../src/cssVar.ts", "../src/hyphenateStyleName.ts", "../src/useRequiredContext.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["rule", "styleRules", "value", "composed"]
|
|
6
6
|
}
|
package/dist/purse.d.ts
CHANGED
|
@@ -39,8 +39,10 @@ export declare function createInMemoryStyleApi(): InMemoryStyleApi;
|
|
|
39
39
|
export declare function PurseProvider(props: {
|
|
40
40
|
children?: React.ReactNode;
|
|
41
41
|
}): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
/** Compile a style object against a selector (same nesting rules as `style()`). */
|
|
43
|
+
export declare function compileGlobalStyleRules(selector: string, cssProperties: CSSProperties): StyleRule[];
|
|
42
44
|
export type StyleArgument = CSSProperties | StyleElement | false | null | undefined;
|
|
43
45
|
export declare function style(...styleElementsOrCSS: StyleArgument[]): StyleElement;
|
|
44
|
-
export declare function useInjectGlobalStyles(selector: string, cssProperties:
|
|
46
|
+
export declare function useInjectGlobalStyles(selector: string, cssProperties: CSSProperties, deps: DependencyList): void;
|
|
45
47
|
export declare function useStyles(...styleElementsOrCSS: StyleArgument[]): string;
|
|
46
48
|
export {};
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "purse-styles",
|
|
3
3
|
"type": "module",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
|
-
"version": "0.2.
|
|
5
|
+
"version": "0.2.2",
|
|
6
6
|
"author": "Tanishq Kancharla <tanishqkancharla3@gmail.com>",
|
|
7
7
|
"description": "A basic styling solution for web apps with an emphasis on simplicity and purity.",
|
|
8
8
|
"keywords": [],
|
|
@@ -18,20 +18,28 @@
|
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build": "tsx scripts/build.ts",
|
|
21
|
-
"check": "tsc --noEmit",
|
|
21
|
+
"check": "tsc --noEmit && tsc -p e2e/tsconfig.json",
|
|
22
22
|
"test": "vitest",
|
|
23
|
+
"test:run": "vitest run",
|
|
24
|
+
"test:e2e": "vitest run --project browser",
|
|
23
25
|
"release": "npm run build; npm publish",
|
|
24
26
|
"bundlesize": "esbuild ./dist/index.js --minify --outfile=bundled; rm bundled"
|
|
25
27
|
},
|
|
26
28
|
"devDependencies": {
|
|
27
29
|
"@types/lodash-es": "^4.17.12",
|
|
28
|
-
"@types/node": "^20.
|
|
30
|
+
"@types/node": "^22.20.1",
|
|
29
31
|
"@types/react": "^18.3.3",
|
|
32
|
+
"@types/react-dom": "^18.3.7",
|
|
33
|
+
"@vitejs/plugin-react": "^6.0.3",
|
|
34
|
+
"@vitest/browser-playwright": "^4.1.10",
|
|
30
35
|
"ansi-colors": "^4.1.3",
|
|
31
|
-
"esbuild": "^0.
|
|
32
|
-
"
|
|
36
|
+
"esbuild": "^0.28.1",
|
|
37
|
+
"playwright": "^1.61.1",
|
|
38
|
+
"react-dom": "^18.3.1",
|
|
39
|
+
"tsx": "^4.23.1",
|
|
33
40
|
"typescript": "^5.4.5",
|
|
34
|
-
"vitest": "^1.
|
|
41
|
+
"vitest": "^4.1.10",
|
|
42
|
+
"vitest-browser-react": "^2.2.0"
|
|
35
43
|
},
|
|
36
44
|
"peerDependencies": {
|
|
37
45
|
"react": "^18.3.1"
|
package/src/cssVar.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type CSS from "csstype"
|
|
2
1
|
import { Destructor, joinDestructors } from "./destructors"
|
|
3
2
|
import { hashObject } from "./hashObject"
|
|
4
3
|
|
|
@@ -6,7 +5,7 @@ export type CSSVar = `var(--${string})`
|
|
|
6
5
|
|
|
7
6
|
export type VariablePrimitive = string | number
|
|
8
7
|
|
|
9
|
-
export type VariableCondition =
|
|
8
|
+
export type VariableCondition = string
|
|
10
9
|
|
|
11
10
|
export type ConditionalVariableValue<
|
|
12
11
|
T extends VariablePrimitive = VariablePrimitive,
|
|
@@ -123,8 +122,11 @@ export function compileVariableGroupRules(
|
|
|
123
122
|
|
|
124
123
|
const rules = [`:root{${rootDeclarations}}`]
|
|
125
124
|
for (const condition of [...declarationsByCondition.keys()].sort()) {
|
|
125
|
+
const declarations = declarationsByCondition.get(condition)
|
|
126
126
|
rules.push(
|
|
127
|
-
|
|
127
|
+
condition.startsWith("@")
|
|
128
|
+
? `${condition}{:root{${declarations}}}`
|
|
129
|
+
: `${condition}{${declarations}}`,
|
|
128
130
|
)
|
|
129
131
|
}
|
|
130
132
|
return rules
|
package/src/index.ts
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
export {
|
|
2
|
-
CSSProperties,
|
|
3
|
-
InMemoryStyleApi,
|
|
4
2
|
PurseProvider,
|
|
5
|
-
StyleApi,
|
|
6
|
-
StyleArgument,
|
|
7
|
-
StyleElement,
|
|
8
3
|
createInMemoryStyleApi,
|
|
9
4
|
style,
|
|
10
5
|
useInjectGlobalStyles,
|
|
11
6
|
useStyles,
|
|
12
7
|
} from "./purse"
|
|
8
|
+
export type {
|
|
9
|
+
CSSProperties,
|
|
10
|
+
InMemoryStyleApi,
|
|
11
|
+
StyleApi,
|
|
12
|
+
StyleArgument,
|
|
13
|
+
StyleElement,
|
|
14
|
+
} from "./purse"
|
|
13
15
|
export {
|
|
16
|
+
defineVars,
|
|
17
|
+
getVariableGroupMetadata,
|
|
18
|
+
} from "./cssVar"
|
|
19
|
+
export type {
|
|
14
20
|
AnyVariableGroup,
|
|
15
21
|
CSSVar,
|
|
16
22
|
ConditionalVariableValue,
|
|
@@ -19,6 +25,4 @@ export {
|
|
|
19
25
|
VariableGroup,
|
|
20
26
|
VariableGroupMetadata,
|
|
21
27
|
VariablePrimitive,
|
|
22
|
-
defineVars,
|
|
23
|
-
getVariableGroupMetadata,
|
|
24
28
|
} from "./cssVar"
|
package/src/purse.test.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import assert from "assert"
|
|
2
2
|
import { expect } from "extendable-expect"
|
|
3
|
-
import { describe, it } from "vitest"
|
|
4
|
-
import {
|
|
3
|
+
import { describe, expectTypeOf, it } from "vitest"
|
|
4
|
+
import {
|
|
5
|
+
CSSProperties,
|
|
6
|
+
InMemoryStyleApi,
|
|
7
|
+
compileGlobalStyleRules,
|
|
8
|
+
createInMemoryStyleApi,
|
|
9
|
+
style,
|
|
10
|
+
} from "./purse"
|
|
5
11
|
|
|
6
12
|
describe("Purse", () => {
|
|
7
13
|
const expectStyles = expect.extend({
|
|
@@ -147,6 +153,35 @@ describe("Purse", () => {
|
|
|
147
153
|
)
|
|
148
154
|
})
|
|
149
155
|
|
|
156
|
+
it("Compiles global style objects against a selector", () => {
|
|
157
|
+
expect(
|
|
158
|
+
compileGlobalStyleRules("body", {
|
|
159
|
+
margin: 0,
|
|
160
|
+
"& a": {
|
|
161
|
+
color: "blue",
|
|
162
|
+
},
|
|
163
|
+
"@media (prefers-color-scheme: dark)": {
|
|
164
|
+
backgroundColor: "black",
|
|
165
|
+
},
|
|
166
|
+
}),
|
|
167
|
+
).toEqual([
|
|
168
|
+
"body{margin:0px;}",
|
|
169
|
+
"body a{color:blue;}",
|
|
170
|
+
"@media (prefers-color-scheme: dark){body{background-color:black;}}",
|
|
171
|
+
])
|
|
172
|
+
})
|
|
173
|
+
|
|
174
|
+
it("Accepts nested style objects for useInjectGlobalStyles", () => {
|
|
175
|
+
const cssProperties = {
|
|
176
|
+
margin: 0,
|
|
177
|
+
"&:focus-visible": {
|
|
178
|
+
outline: "2px solid blue",
|
|
179
|
+
},
|
|
180
|
+
} satisfies CSSProperties
|
|
181
|
+
|
|
182
|
+
expectTypeOf(cssProperties).toExtend<CSSProperties>()
|
|
183
|
+
})
|
|
184
|
+
|
|
150
185
|
it.skip("Inserts into given style element correctly", () => {})
|
|
151
186
|
it.skip("Works if you pass style rule or object to useStyles", () => {})
|
|
152
187
|
it.skip("Works if you pass multiple style rule or object to useStyles", () => {})
|
package/src/purse.tsx
CHANGED
|
@@ -487,38 +487,77 @@ function groupCSSProperties(properties: CSSProperties): CSSPropertiesGroup {
|
|
|
487
487
|
return styleDeclarationsBySelector as CSSPropertiesGroup
|
|
488
488
|
}
|
|
489
489
|
|
|
490
|
-
function
|
|
490
|
+
function rulesFromCompiledGroups(
|
|
491
|
+
compiledStyleDeclarationsByGroup: Record<string, string>,
|
|
492
|
+
targetSelector: string,
|
|
493
|
+
): StyleRule[] {
|
|
494
|
+
return entries(compiledStyleDeclarationsByGroup).map(([group, styles]) => {
|
|
495
|
+
if (group === "") {
|
|
496
|
+
// Base group
|
|
497
|
+
return `${targetSelector}{${styles}}`
|
|
498
|
+
} else if (group.startsWith("@")) {
|
|
499
|
+
// At rules
|
|
500
|
+
return `${group}{${targetSelector}{${styles}}}`
|
|
501
|
+
} else {
|
|
502
|
+
// Nested Rules
|
|
503
|
+
const selector = group.replace(/&/g, targetSelector)
|
|
504
|
+
return `${selector}{${styles}}`
|
|
505
|
+
}
|
|
506
|
+
})
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
function compileStyleDeclarationGroups(
|
|
510
|
+
properties: CSSProperties,
|
|
511
|
+
): Record<string, string> | undefined {
|
|
491
512
|
if (isObjectEmpty(properties)) {
|
|
492
513
|
return undefined
|
|
493
514
|
}
|
|
494
515
|
|
|
495
|
-
|
|
516
|
+
return mapValues(groupCSSProperties(properties), (declarations) =>
|
|
517
|
+
compileDeclarations(declarations ?? {}),
|
|
518
|
+
)
|
|
519
|
+
}
|
|
496
520
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
521
|
+
function compileCSSPropertiesToRules(
|
|
522
|
+
properties: CSSProperties,
|
|
523
|
+
targetSelector: string,
|
|
524
|
+
): StyleRule[] {
|
|
525
|
+
const compiledStyleDeclarationsByGroup =
|
|
526
|
+
compileStyleDeclarationGroups(properties)
|
|
527
|
+
if (!compiledStyleDeclarationsByGroup) {
|
|
528
|
+
return []
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
return rulesFromCompiledGroups(
|
|
532
|
+
compiledStyleDeclarationsByGroup,
|
|
533
|
+
targetSelector,
|
|
500
534
|
)
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
function compileCSS(properties: CSSProperties): StyleElement["owned"] {
|
|
538
|
+
const compiledStyleDeclarationsByGroup =
|
|
539
|
+
compileStyleDeclarationGroups(properties)
|
|
540
|
+
if (!compiledStyleDeclarationsByGroup) {
|
|
541
|
+
return undefined
|
|
542
|
+
}
|
|
501
543
|
|
|
502
544
|
const className = hashObject(compiledStyleDeclarationsByGroup)
|
|
503
|
-
const styleRules
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
// Base group
|
|
507
|
-
return `.${className}{${styles}}`
|
|
508
|
-
} else if (group.startsWith("@")) {
|
|
509
|
-
// At rules
|
|
510
|
-
return `${group}{.${className}{${styles}}}`
|
|
511
|
-
} else {
|
|
512
|
-
// Nested Rules
|
|
513
|
-
const selector = group.replace(/&/g, `.${className}`)
|
|
514
|
-
return `${selector}{${styles}}`
|
|
515
|
-
}
|
|
516
|
-
},
|
|
545
|
+
const styleRules = rulesFromCompiledGroups(
|
|
546
|
+
compiledStyleDeclarationsByGroup,
|
|
547
|
+
`.${className}`,
|
|
517
548
|
)
|
|
518
549
|
|
|
519
550
|
return { styleRules, className }
|
|
520
551
|
}
|
|
521
552
|
|
|
553
|
+
/** Compile a style object against a selector (same nesting rules as `style()`). */
|
|
554
|
+
export function compileGlobalStyleRules(
|
|
555
|
+
selector: string,
|
|
556
|
+
cssProperties: CSSProperties,
|
|
557
|
+
): StyleRule[] {
|
|
558
|
+
return compileCSSPropertiesToRules(cssProperties, selector)
|
|
559
|
+
}
|
|
560
|
+
|
|
522
561
|
export type StyleArgument = CSSProperties | StyleElement | false | null | undefined
|
|
523
562
|
|
|
524
563
|
export function style(...styleElementsOrCSS: StyleArgument[]): StyleElement {
|
|
@@ -559,14 +598,16 @@ function styleElementToRules({ owned, composed }: StyleElement): StyleRule[] {
|
|
|
559
598
|
|
|
560
599
|
export function useInjectGlobalStyles(
|
|
561
600
|
selector: string,
|
|
562
|
-
cssProperties:
|
|
601
|
+
cssProperties: CSSProperties,
|
|
563
602
|
deps: DependencyList,
|
|
564
603
|
) {
|
|
565
604
|
const styleApi = useRequiredContext(PurseContext)
|
|
566
605
|
|
|
567
606
|
useLayoutEffect(() => {
|
|
568
|
-
const
|
|
569
|
-
const destructor =
|
|
607
|
+
const styleRules = compileGlobalStyleRules(selector, cssProperties)
|
|
608
|
+
const destructor = joinDestructors(
|
|
609
|
+
styleRules.map((styleRule) => styleApi.addGlobalStyle(styleRule)),
|
|
610
|
+
)
|
|
570
611
|
|
|
571
612
|
return destructor
|
|
572
613
|
}, deps)
|