css-in-js-engine-pb 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atomicCache.d.ts +9 -0
- package/dist/atomicCache.d.ts.map +1 -0
- package/dist/atomicCache.js +25 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/insertOnce.d.ts +2 -0
- package/dist/insertOnce.d.ts.map +1 -0
- package/dist/insertOnce.js +22 -0
- package/dist/makeResetStyles.d.ts +3 -0
- package/dist/makeResetStyles.d.ts.map +1 -0
- package/dist/makeResetStyles.js +45 -0
- package/dist/makeStaticStyles.d.ts +3 -0
- package/dist/makeStaticStyles.d.ts.map +1 -0
- package/dist/makeStaticStyles.js +71 -0
- package/dist/makeStyles.d.ts +3 -0
- package/dist/makeStyles.d.ts.map +1 -0
- package/dist/makeStyles.js +19 -0
- package/dist/mergeClasses.d.ts +2 -0
- package/dist/mergeClasses.d.ts.map +1 -0
- package/dist/mergeClasses.js +18 -0
- package/dist/resolveStyleRules.d.ts +4 -0
- package/dist/resolveStyleRules.d.ts.map +1 -0
- package/dist/resolveStyleRules.js +47 -0
- package/dist/shorthands/borderBottom.d.ts +1 -0
- package/dist/shorthands/borderBottom.d.ts.map +1 -0
- package/dist/shorthands/borderBottom.js +1 -0
- package/dist/shorthands/borderColor.d.ts +1 -0
- package/dist/shorthands/borderColor.d.ts.map +1 -0
- package/dist/shorthands/borderColor.js +1 -0
- package/dist/shorthands/borderLeft.d.ts +1 -0
- package/dist/shorthands/borderLeft.d.ts.map +1 -0
- package/dist/shorthands/borderLeft.js +1 -0
- package/dist/shorthands/borderRadius.d.ts +1 -0
- package/dist/shorthands/borderRadius.d.ts.map +1 -0
- package/dist/shorthands/borderRadius.js +1 -0
- package/dist/shorthands/borderRight.d.ts +1 -0
- package/dist/shorthands/borderRight.d.ts.map +1 -0
- package/dist/shorthands/borderRight.js +1 -0
- package/dist/shorthands/borderStyle.d.ts +1 -0
- package/dist/shorthands/borderStyle.d.ts.map +1 -0
- package/dist/shorthands/borderStyle.js +1 -0
- package/dist/shorthands/borderTop.d.ts +1 -0
- package/dist/shorthands/borderTop.d.ts.map +1 -0
- package/dist/shorthands/borderTop.js +1 -0
- package/dist/shorthands/borderWidth.d.ts +1 -0
- package/dist/shorthands/borderWidth.d.ts.map +1 -0
- package/dist/shorthands/borderWidth.js +1 -0
- package/dist/shorthands/index.d.ts +1 -0
- package/dist/shorthands/index.d.ts.map +1 -0
- package/dist/shorthands/index.js +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/utils/css.d.ts +5 -0
- package/dist/utils/css.d.ts.map +1 -0
- package/dist/utils/css.js +18 -0
- package/dist/utils/hash.d.ts +3 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +10 -0
- package/package.json +20 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface AtomicInsertResult {
|
|
2
|
+
className: string;
|
|
3
|
+
ruleText?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class AtomicRuleCache {
|
|
6
|
+
private cache;
|
|
7
|
+
getOrCreate(selector: string, declaration: string, atRule?: string): AtomicInsertResult;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=atomicCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomicCache.d.ts","sourceRoot":"","sources":["../src/atomicCache.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAe;IACxB,OAAO,CAAC,KAAK,CAAqC;IAElD,WAAW,CACP,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GAChB,kBAAkB;CAyBxB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { makeAtomicClassName } from './utils/hash';
|
|
2
|
+
import { prefixSelector } from './utils/css';
|
|
3
|
+
export class AtomicRuleCache {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.cache = new Map();
|
|
6
|
+
}
|
|
7
|
+
getOrCreate(selector, declaration, atRule) {
|
|
8
|
+
const key = atRule
|
|
9
|
+
? `${atRule}|${selector}|${declaration}`
|
|
10
|
+
: `${selector}|${declaration}`;
|
|
11
|
+
const cached = this.cache.get(key);
|
|
12
|
+
if (cached) {
|
|
13
|
+
return { className: cached };
|
|
14
|
+
}
|
|
15
|
+
const className = makeAtomicClassName(key);
|
|
16
|
+
const baseRule = selector === '&'
|
|
17
|
+
? `.${className}{${declaration}}`
|
|
18
|
+
: `${prefixSelector(selector, className)}{${declaration}}`;
|
|
19
|
+
const ruleText = atRule
|
|
20
|
+
? `${atRule}{${baseRule}}`
|
|
21
|
+
: baseRule;
|
|
22
|
+
this.cache.set(key, className);
|
|
23
|
+
return { className, ruleText };
|
|
24
|
+
}
|
|
25
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { mergeClasses } from './mergeClasses';
|
|
2
|
+
export { makeStyles } from './makeStyles';
|
|
3
|
+
export { makeStaticStyles } from './makeStaticStyles';
|
|
4
|
+
export { makeResetStyles } from './makeResetStyles';
|
|
5
|
+
export declare const shorthands: {};
|
|
6
|
+
export type { StyleRule, CSSValue, StylesBySlots, ClassNamesBySlot, } from './types';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,UAAU,IAEtB,CAAC;AAEF,YAAY,EACR,SAAS,EACT,QAAQ,EACR,aAAa,EACb,gBAAgB,GACnB,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insertOnce.d.ts","sourceRoot":"","sources":["../src/insertOnce.ts"],"names":[],"mappings":"AAcA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAU9C"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const insertedRules = new Set();
|
|
2
|
+
let styleEl = null;
|
|
3
|
+
let sheet = null;
|
|
4
|
+
function ensureSheet() {
|
|
5
|
+
if (!sheet) {
|
|
6
|
+
styleEl = document.createElement('style');
|
|
7
|
+
document.head.appendChild(styleEl);
|
|
8
|
+
sheet = styleEl.sheet;
|
|
9
|
+
}
|
|
10
|
+
return sheet;
|
|
11
|
+
}
|
|
12
|
+
export function insertRulesOnce(rules) {
|
|
13
|
+
if (rules.length === 0)
|
|
14
|
+
return;
|
|
15
|
+
const sheet = ensureSheet();
|
|
16
|
+
for (const rule of rules) {
|
|
17
|
+
if (insertedRules.has(rule))
|
|
18
|
+
continue;
|
|
19
|
+
sheet.insertRule(rule, sheet.cssRules.length);
|
|
20
|
+
insertedRules.add(rule);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeResetStyles.d.ts","sourceRoot":"","sources":["../src/makeResetStyles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAgDzC,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,SAGX,MAAM,CAa3C"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { camelToKebab, resolveValue } from './utils/css';
|
|
2
|
+
import { hashString } from './utils/hash';
|
|
3
|
+
import { insertRulesOnce } from './insertOnce';
|
|
4
|
+
const resetCache = new Map();
|
|
5
|
+
function stringifyResetRule(selector, styles, atRule) {
|
|
6
|
+
const rules = [];
|
|
7
|
+
const decls = [];
|
|
8
|
+
for (const key in styles) {
|
|
9
|
+
const val = styles[key];
|
|
10
|
+
if (val == null)
|
|
11
|
+
continue;
|
|
12
|
+
if (key.startsWith('@') && typeof val === 'object') {
|
|
13
|
+
const nested = stringifyResetRule(selector, val, key);
|
|
14
|
+
rules.push(...nested);
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
if (key.startsWith(':') && typeof val === 'object') {
|
|
18
|
+
const nested = stringifyResetRule(`${selector}${key}`, val, atRule);
|
|
19
|
+
rules.push(...nested);
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (typeof val !== 'object') {
|
|
23
|
+
decls.push(`${camelToKebab(key)}:${resolveValue(val)}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (decls.length) {
|
|
27
|
+
const rule = `${selector}{${decls.join(';')}}`;
|
|
28
|
+
rules.unshift(atRule ? `${atRule}{${rule}}` : rule);
|
|
29
|
+
}
|
|
30
|
+
return rules;
|
|
31
|
+
}
|
|
32
|
+
export function makeResetStyles(styles) {
|
|
33
|
+
const signature = JSON.stringify(styles);
|
|
34
|
+
return function useResetStyles() {
|
|
35
|
+
const cached = resetCache.get(signature);
|
|
36
|
+
if (cached)
|
|
37
|
+
return cached;
|
|
38
|
+
const className = `r${hashString(signature)}`;
|
|
39
|
+
const selector = `.${className}`;
|
|
40
|
+
const rules = stringifyResetRule(selector, styles);
|
|
41
|
+
insertRulesOnce(rules);
|
|
42
|
+
resetCache.set(signature, className);
|
|
43
|
+
return className;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeStaticStyles.d.ts","sourceRoot":"","sources":["../src/makeStaticStyles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAwEzC,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,SAMP,IAAI,CAyB1C"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { camelToKebab, resolveValue } from './utils/css';
|
|
2
|
+
import { insertRulesOnce } from './insertOnce';
|
|
3
|
+
const staticCache = new Set();
|
|
4
|
+
function stringifyStaticRule(selector, styles, atRule) {
|
|
5
|
+
const rules = [];
|
|
6
|
+
const decls = [];
|
|
7
|
+
for (const key in styles) {
|
|
8
|
+
const val = styles[key];
|
|
9
|
+
if (val == null)
|
|
10
|
+
continue;
|
|
11
|
+
if (key.startsWith('@') && typeof val === 'object') {
|
|
12
|
+
const nested = stringifyStaticRule(selector, val, key);
|
|
13
|
+
rules.push(...nested);
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
if (key.startsWith(':') && typeof val === 'object') {
|
|
17
|
+
const nested = stringifyStaticRule(`${selector}${key}`, val, atRule);
|
|
18
|
+
rules.push(...nested);
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (typeof val !== 'object') {
|
|
22
|
+
decls.push(`${camelToKebab(key)}:${resolveValue(val)}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (decls.length) {
|
|
26
|
+
const rule = `${selector}{${decls.join(';')}}`;
|
|
27
|
+
rules.unshift(atRule ? `${atRule}{${rule}}` : rule);
|
|
28
|
+
}
|
|
29
|
+
return rules;
|
|
30
|
+
}
|
|
31
|
+
function stringifyKeyframes(name, frames) {
|
|
32
|
+
const blocks = [];
|
|
33
|
+
for (const step in frames) {
|
|
34
|
+
const decls = [];
|
|
35
|
+
const styles = frames[step];
|
|
36
|
+
for (const prop in styles) {
|
|
37
|
+
const val = styles[prop];
|
|
38
|
+
if (val == null || typeof val === 'object')
|
|
39
|
+
continue;
|
|
40
|
+
decls.push(`${camelToKebab(prop)}:${resolveValue(val)}`);
|
|
41
|
+
}
|
|
42
|
+
if (decls.length) {
|
|
43
|
+
blocks.push(`${step}{${decls.join(';')}}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return `@keyframes ${name}{${blocks.join('')}}`;
|
|
47
|
+
}
|
|
48
|
+
export function makeStaticStyles(styles) {
|
|
49
|
+
const signature = typeof styles === 'string'
|
|
50
|
+
? styles
|
|
51
|
+
: JSON.stringify(styles);
|
|
52
|
+
return function useStaticStyles() {
|
|
53
|
+
if (staticCache.has(signature))
|
|
54
|
+
return;
|
|
55
|
+
staticCache.add(signature);
|
|
56
|
+
if (typeof styles !== 'string') {
|
|
57
|
+
const rules = [];
|
|
58
|
+
for (const selector in styles) {
|
|
59
|
+
if (selector.startsWith('@keyframes')) {
|
|
60
|
+
const name = selector.replace('@keyframes', '').trim();
|
|
61
|
+
const frames = styles[selector];
|
|
62
|
+
const rule = stringifyKeyframes(name, frames);
|
|
63
|
+
rules.push(rule);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
rules.push(...stringifyStaticRule(selector, styles[selector]));
|
|
67
|
+
}
|
|
68
|
+
insertRulesOnce(rules);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeStyles.d.ts","sourceRoot":"","sources":["../src/makeStyles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAK/D,wBAAgB,UAAU,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EACpD,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,SAON,gBAAgB,CAAC,KAAK,CAAC,CAevD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { resolveStyleRulesForSlots } from './resolveStyleRules';
|
|
2
|
+
import { insertRulesOnce } from './insertOnce';
|
|
3
|
+
import { AtomicRuleCache } from './atomicCache';
|
|
4
|
+
export function makeStyles(stylesBySlots) {
|
|
5
|
+
let cachedClassNames = null;
|
|
6
|
+
let inserted = false;
|
|
7
|
+
const atomicCache = new AtomicRuleCache();
|
|
8
|
+
return function useStyles() {
|
|
9
|
+
if (!cachedClassNames) {
|
|
10
|
+
const { classNamesBySlot, cssRules } = resolveStyleRulesForSlots(stylesBySlots, atomicCache);
|
|
11
|
+
cachedClassNames = classNamesBySlot;
|
|
12
|
+
if (!inserted) {
|
|
13
|
+
insertRulesOnce(cssRules);
|
|
14
|
+
inserted = true;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return cachedClassNames;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeClasses.d.ts","sourceRoot":"","sources":["../src/mergeClasses.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CACxB,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,GACpD,MAAM,CAkBR"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function mergeClasses(...inputs) {
|
|
2
|
+
const seen = new Map();
|
|
3
|
+
let index = 0;
|
|
4
|
+
for (const input of inputs) {
|
|
5
|
+
if (typeof input !== 'string')
|
|
6
|
+
continue;
|
|
7
|
+
const parts = input.trim().split(/\s+/);
|
|
8
|
+
for (const cls of parts) {
|
|
9
|
+
if (!cls)
|
|
10
|
+
continue;
|
|
11
|
+
seen.set(cls, index++);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return Array.from(seen.entries())
|
|
15
|
+
.sort((a, b) => a[1] - b[1])
|
|
16
|
+
.map(([cls]) => cls)
|
|
17
|
+
.join(' ');
|
|
18
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ResolveResult, StylesBySlots } from './types';
|
|
2
|
+
import { AtomicRuleCache } from './atomicCache';
|
|
3
|
+
export declare function resolveStyleRulesForSlots<Slots extends string | number>(stylesBySlots: StylesBySlots<Slots>, sharedCache?: AtomicRuleCache): ResolveResult<Slots>;
|
|
4
|
+
//# sourceMappingURL=resolveStyleRules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveStyleRules.d.ts","sourceRoot":"","sources":["../src/resolveStyleRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,aAAa,EAAE,MAAM,SAAS,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAmDhD,wBAAgB,yBAAyB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EACnE,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,WAAW,CAAC,EAAE,eAAe,GAC9B,aAAa,CAAC,KAAK,CAAC,CAetB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { camelToKebab, resolveValue } from './utils/css';
|
|
2
|
+
import { AtomicRuleCache } from './atomicCache';
|
|
3
|
+
function buildAtomicClasses(rule, cache, cssRulesOut, atRule) {
|
|
4
|
+
const classNames = [];
|
|
5
|
+
for (const key in rule) {
|
|
6
|
+
const val = rule[key];
|
|
7
|
+
if (val == null)
|
|
8
|
+
continue;
|
|
9
|
+
if (key.startsWith('@') && typeof val === 'object') {
|
|
10
|
+
const nested = buildAtomicClasses(val, cache, cssRulesOut, key);
|
|
11
|
+
classNames.push(...nested);
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
if (key.startsWith(':') && typeof val === 'object') {
|
|
15
|
+
for (const prop in val) {
|
|
16
|
+
const v = val[prop];
|
|
17
|
+
if (v == null || typeof v === 'object')
|
|
18
|
+
continue;
|
|
19
|
+
const decl = `${camelToKebab(prop)}:${resolveValue(v)}`;
|
|
20
|
+
const res = cache.getOrCreate(`&${key}`, decl, atRule);
|
|
21
|
+
classNames.push(res.className);
|
|
22
|
+
if (res.ruleText)
|
|
23
|
+
cssRulesOut.push(res.ruleText);
|
|
24
|
+
}
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (typeof val !== 'object') {
|
|
28
|
+
const decl = `${camelToKebab(key)}:${resolveValue(val)}`;
|
|
29
|
+
const res = cache.getOrCreate('&', decl, atRule);
|
|
30
|
+
classNames.push(res.className);
|
|
31
|
+
if (res.ruleText)
|
|
32
|
+
cssRulesOut.push(res.ruleText);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return classNames;
|
|
36
|
+
}
|
|
37
|
+
export function resolveStyleRulesForSlots(stylesBySlots, sharedCache) {
|
|
38
|
+
const cache = sharedCache !== null && sharedCache !== void 0 ? sharedCache : new AtomicRuleCache();
|
|
39
|
+
const cssRules = [];
|
|
40
|
+
const classNamesBySlot = {};
|
|
41
|
+
for (const slot in stylesBySlots) {
|
|
42
|
+
const rule = stylesBySlots[slot];
|
|
43
|
+
const atomicClasses = buildAtomicClasses(rule !== null && rule !== void 0 ? rule : {}, cache, cssRules);
|
|
44
|
+
classNamesBySlot[slot] = atomicClasses.join(' ');
|
|
45
|
+
}
|
|
46
|
+
return { classNamesBySlot, cssRules };
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=borderBottom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borderBottom.d.ts","sourceRoot":"","sources":["../../src/shorthands/borderBottom.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=borderColor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borderColor.d.ts","sourceRoot":"","sources":["../../src/shorthands/borderColor.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=borderLeft.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borderLeft.d.ts","sourceRoot":"","sources":["../../src/shorthands/borderLeft.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=borderRadius.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borderRadius.d.ts","sourceRoot":"","sources":["../../src/shorthands/borderRadius.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=borderRight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borderRight.d.ts","sourceRoot":"","sources":["../../src/shorthands/borderRight.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=borderStyle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borderStyle.d.ts","sourceRoot":"","sources":["../../src/shorthands/borderStyle.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=borderTop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borderTop.d.ts","sourceRoot":"","sources":["../../src/shorthands/borderTop.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=borderWidth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borderWidth.d.ts","sourceRoot":"","sources":["../../src/shorthands/borderWidth.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shorthands/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type CSSValue = string | number | (() => string | number);
|
|
2
|
+
export interface StyleRule {
|
|
3
|
+
[property: string]: CSSValue | StyleRule | undefined;
|
|
4
|
+
}
|
|
5
|
+
export type StylesBySlots<Slots extends string | number> = Record<Slots, StyleRule>;
|
|
6
|
+
export type ClassNamesBySlot<Slots extends string | number> = Record<Slots, string>;
|
|
7
|
+
export type Direction = 'ltr' | 'rtl';
|
|
8
|
+
export type CSSRuleText = string;
|
|
9
|
+
export type AtomicCacheKey = string;
|
|
10
|
+
export interface ResolveResult<Slots extends string | number> {
|
|
11
|
+
classNamesBySlot: ClassNamesBySlot<Slots>;
|
|
12
|
+
cssRules: CSSRuleText[];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC;AAEjE,MAAM,WAAW,SAAS;IACtB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;CACxD;AAED,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACpF,MAAM,MAAM,gBAAgB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAEpF,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAEtC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,MAAM,WAAW,aAAa,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IACxD,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1C,QAAQ,EAAE,WAAW,EAAE,CAAC;CAC3B"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CSSValue } from '../types';
|
|
2
|
+
export declare function camelToKebab(prop: string): string;
|
|
3
|
+
export declare function resolveValue(v: CSSValue): string | number;
|
|
4
|
+
export declare function prefixSelector(selector: string, className: string): string;
|
|
5
|
+
//# sourceMappingURL=css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/utils/css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIzC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK1E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const camelToKebabCache = new Map();
|
|
2
|
+
export function camelToKebab(prop) {
|
|
3
|
+
const cached = camelToKebabCache.get(prop);
|
|
4
|
+
if (cached)
|
|
5
|
+
return cached;
|
|
6
|
+
const res = prop.replace(/[A-Z]/g, m => '-' + m.toLowerCase());
|
|
7
|
+
camelToKebabCache.set(prop, res);
|
|
8
|
+
return res;
|
|
9
|
+
}
|
|
10
|
+
export function resolveValue(v) {
|
|
11
|
+
return typeof v === 'function' ? v() : v;
|
|
12
|
+
}
|
|
13
|
+
export function prefixSelector(selector, className) {
|
|
14
|
+
return selector
|
|
15
|
+
.split(',')
|
|
16
|
+
.map(part => part.trim().replace(/&/g, `.${className}`))
|
|
17
|
+
.join(',');
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function hashString(str) {
|
|
2
|
+
let hash = 5381;
|
|
3
|
+
for (let i = 0; i < str.length; i++) {
|
|
4
|
+
hash = (hash * 33) ^ str.charCodeAt(i);
|
|
5
|
+
}
|
|
6
|
+
return (hash >>> 0).toString(36);
|
|
7
|
+
}
|
|
8
|
+
export function makeAtomicClassName(signature) {
|
|
9
|
+
return `f${hashString(signature)}`;
|
|
10
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "css-in-js-engine-pb",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A lightweight atomic CSS-in-JS engine built on the native CSS cascade",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"sideEffects": false,
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"prepublishOnly": "npm run build"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"typescript": "^5.0.0"
|
|
19
|
+
}
|
|
20
|
+
}
|