@codeleap/styles 7.0.0 → 7.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/classes/Cacher.js +166 -0
- package/dist/classes/Cacher.js.map +1 -0
- package/dist/classes/StaleControl.js +101 -0
- package/dist/classes/StaleControl.js.map +1 -0
- package/dist/classes/StyleCache.js +91 -0
- package/dist/classes/StyleCache.js.map +1 -0
- package/dist/classes/StylePersistor.js +54 -0
- package/dist/classes/StylePersistor.js.map +1 -0
- package/dist/classes/StyleRegistry.js +470 -0
- package/dist/classes/StyleRegistry.js.map +1 -0
- package/dist/classes/index.js +3 -0
- package/dist/classes/index.js.map +1 -0
- package/dist/constants.js +24 -0
- package/dist/constants.js.map +1 -0
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useCompositionStyles.js +27 -0
- package/dist/hooks/useCompositionStyles.js.map +1 -0
- package/dist/hooks/useNestedStylesByKey.js +17 -0
- package/dist/hooks/useNestedStylesByKey.js.map +1 -0
- package/dist/hooks/useStyleObserver.js +22 -0
- package/dist/hooks/useStyleObserver.js.map +1 -0
- package/dist/hooks/useTheme.js +24 -0
- package/dist/hooks/useTheme.js.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/calc.js +44 -0
- package/dist/lib/calc.js.map +1 -0
- package/dist/lib/createStyles.js +58 -0
- package/dist/lib/createStyles.js.map +1 -0
- package/dist/lib/createTheme.js +143 -0
- package/dist/lib/createTheme.js.map +1 -0
- package/dist/lib/cssVariables.js +73 -0
- package/dist/lib/cssVariables.js.map +1 -0
- package/dist/lib/index.js +5 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/theme/generateColorScheme.js +38 -0
- package/dist/theme/generateColorScheme.js.map +1 -0
- package/dist/theme/index.js +4 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/themeStore.js +139 -0
- package/dist/theme/themeStore.js.map +1 -0
- package/dist/theme/validateTheme.js +33 -0
- package/dist/theme/validateTheme.js.map +1 -0
- package/dist/tools/colors.js +138 -0
- package/dist/tools/colors.js.map +1 -0
- package/dist/tools/deepClone.js +8 -0
- package/dist/tools/deepClone.js.map +1 -0
- package/dist/tools/deepmerge.js +13 -0
- package/dist/tools/deepmerge.js.map +1 -0
- package/dist/tools/hashKey.js +16 -0
- package/dist/tools/hashKey.js.map +1 -0
- package/dist/tools/index.js +7 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/minifier.js +34 -0
- package/dist/tools/minifier.js.map +1 -0
- package/dist/tools/multiplierProperty.js +9 -0
- package/dist/tools/multiplierProperty.js.map +1 -0
- package/dist/types/cache.js +2 -0
- package/dist/types/cache.js.map +1 -0
- package/dist/types/component.js +2 -0
- package/dist/types/component.js.map +1 -0
- package/dist/types/core.js +3 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/icon.js +3 -0
- package/dist/types/icon.js.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/spacing.js +28 -0
- package/dist/types/spacing.js.map +1 -0
- package/dist/types/store.js +2 -0
- package/dist/types/store.js.map +1 -0
- package/dist/types/style.js +2 -0
- package/dist/types/style.js.map +1 -0
- package/dist/types/theme.js +2 -0
- package/dist/types/theme.js.map +1 -0
- package/dist/utils.js +97 -0
- package/dist/utils.js.map +1 -0
- package/dist/variants/borderCreator.js +26 -0
- package/dist/variants/borderCreator.js.map +1 -0
- package/dist/variants/createAppVariants.js +17 -0
- package/dist/variants/createAppVariants.js.map +1 -0
- package/dist/variants/defaultVariants.js +137 -0
- package/dist/variants/defaultVariants.js.map +1 -0
- package/dist/variants/dynamicVariants.js +89 -0
- package/dist/variants/dynamicVariants.js.map +1 -0
- package/dist/variants/index.js +7 -0
- package/dist/variants/index.js.map +1 -0
- package/dist/variants/mediaQuery.js +56 -0
- package/dist/variants/mediaQuery.js.map +1 -0
- package/dist/variants/spacing.js +81 -0
- package/dist/variants/spacing.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
import { themeStore } from '../theme';
|
|
2
|
+
import { defaultVariants, dynamicVariants } from '../variants';
|
|
3
|
+
import { capitalize, ignoredStyleKeys, isSpacingKey } from '../utils';
|
|
4
|
+
import { StyleCache } from './StyleCache';
|
|
5
|
+
import { minifier, deepClone, deepmerge } from '../tools';
|
|
6
|
+
import { CONTEXT_FACTORY_SYMBOL } from '../lib/createStyles';
|
|
7
|
+
/**
|
|
8
|
+
* Central style resolution engine for the `@codeleap/styles` system.
|
|
9
|
+
*
|
|
10
|
+
* Responsibilities:
|
|
11
|
+
* - Stores compressed variant stylesheets per component (`stylesheets`).
|
|
12
|
+
* - Maintains the merged common-variant map (`defaultVariants + appVariants + dynamicVariants + spacing`).
|
|
13
|
+
* - Resolves `StyleProp` values into flat `ICSS` objects for each composition element.
|
|
14
|
+
* - Caches every resolution step in the six `StyleCache` buckets for performance.
|
|
15
|
+
* - Provides `createStyle` as an abstract hook for platform-specific style flattening
|
|
16
|
+
* (web passes through; RN uses `StyleSheet.flatten`).
|
|
17
|
+
*
|
|
18
|
+
* Instantiated once per platform registry (not per component). Platform packages
|
|
19
|
+
* subclass or configure this to provide the appropriate `createStyle` implementation.
|
|
20
|
+
*/
|
|
21
|
+
export class CodeleapStyleRegistry {
|
|
22
|
+
constructor(storage) {
|
|
23
|
+
var _a, _b, _c, _d;
|
|
24
|
+
this.stylesheets = {};
|
|
25
|
+
this.commonVariants = {};
|
|
26
|
+
this.aggregators = {};
|
|
27
|
+
this.components = {};
|
|
28
|
+
/** Per-component map of variant names to context-aware factory functions. Populated during `registerVariants`. */
|
|
29
|
+
this.variantFactories = {};
|
|
30
|
+
this.styleCache = new StyleCache(storage);
|
|
31
|
+
this.registerCommonVariants();
|
|
32
|
+
const currentColorScheme = (_d = (_c = (_b = (_a = themeStore.themeTyped) === null || _a === void 0 ? void 0 : _a.currentColorScheme) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : themeStore.colorScheme) !== null && _d !== void 0 ? _d : 'default';
|
|
33
|
+
this.styleCache.registerBaseKey([currentColorScheme, themeStore.theme, this.commonVariants]);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolves a single common-variant string (e.g., `"flex"`, `"padding:2"`, `"xl:flex"`)
|
|
37
|
+
* into a composition-keyed style object. Handles breakpoint-prefixed variants by wrapping
|
|
38
|
+
* the result in a `@media` key. Returns `null` if the variant is not found in `commonVariants`.
|
|
39
|
+
*/
|
|
40
|
+
computeCommonVariantStyle(componentName, variant, component = undefined) {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
const cache = this.styleCache.keyFor('common', variant);
|
|
43
|
+
if (!!cache.value) {
|
|
44
|
+
return {
|
|
45
|
+
[component]: this.createStyle(cache.value),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const theme = themeStore.theme;
|
|
49
|
+
let mediaQuery = null;
|
|
50
|
+
let [variantName, value] = (variant === null || variant === void 0 ? void 0 : variant.includes(':')) ? variant === null || variant === void 0 ? void 0 : variant.split(':') : [variant, null];
|
|
51
|
+
// @ts-ignore the not yet augmented/defined
|
|
52
|
+
if (!!(theme === null || theme === void 0 ? void 0 : theme.breakpoints[variantName])) {
|
|
53
|
+
const [breakpoint, _variantName, _value] = ((_a = variant === null || variant === void 0 ? void 0 : variant.split(':')) === null || _a === void 0 ? void 0 : _a.length) == 2 ? [...variant === null || variant === void 0 ? void 0 : variant.split(':'), null] : variant === null || variant === void 0 ? void 0 : variant.split(':');
|
|
54
|
+
// @ts-expect-error
|
|
55
|
+
mediaQuery = theme.media.down(breakpoint);
|
|
56
|
+
value = _value;
|
|
57
|
+
variantName = _variantName;
|
|
58
|
+
}
|
|
59
|
+
const variantStyle = (_b = this.commonVariants[variantName]) !== null && _b !== void 0 ? _b : this.commonVariants[variant];
|
|
60
|
+
let style = null;
|
|
61
|
+
if (typeof variantStyle == 'function') {
|
|
62
|
+
style = isSpacingKey(variantName) ? variantStyle(value) : variantStyle(theme, value);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
style = variantStyle;
|
|
66
|
+
}
|
|
67
|
+
if (!style)
|
|
68
|
+
return null;
|
|
69
|
+
if (!!mediaQuery) {
|
|
70
|
+
style = {
|
|
71
|
+
[mediaQuery]: style,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const commonStyles = {
|
|
75
|
+
[component]: this.createStyle(style),
|
|
76
|
+
};
|
|
77
|
+
this.styleCache.cacheFor('common', cache.key, style);
|
|
78
|
+
return commonStyles;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Resolves an array of variant strings for a component into a single merged `ICSS`.
|
|
82
|
+
* Checks component-level variant stylesheet first, then falls back to common variants.
|
|
83
|
+
* Context-aware factories (registered via `CONTEXT_FACTORY_SYMBOL`) are called with
|
|
84
|
+
* the current theme and the provided `context` object.
|
|
85
|
+
*/
|
|
86
|
+
computeVariantStyle(componentName, variants, _component = undefined, context) {
|
|
87
|
+
var _a;
|
|
88
|
+
const { rootElement } = this.getRegisteredComponent(componentName);
|
|
89
|
+
const component = _component !== null && _component !== void 0 ? _component : rootElement;
|
|
90
|
+
const stylesheet = (_a = minifier.decompress(this.stylesheets[componentName])) !== null && _a !== void 0 ? _a : {};
|
|
91
|
+
const aggregator = this.aggregators[componentName];
|
|
92
|
+
const cache = this.styleCache.keyFor('variants', { componentName, component, stylesheet, variants, aggregator, context });
|
|
93
|
+
if (!!cache.value) {
|
|
94
|
+
return cache.value;
|
|
95
|
+
}
|
|
96
|
+
const theme = themeStore.theme;
|
|
97
|
+
const variantStyles = variants.map((variant) => {
|
|
98
|
+
var _a, _b;
|
|
99
|
+
const factory = context && theme && ((_b = (_a = this.variantFactories) === null || _a === void 0 ? void 0 : _a[componentName]) === null || _b === void 0 ? void 0 : _b[variant]);
|
|
100
|
+
if (factory) {
|
|
101
|
+
return factory(theme, context);
|
|
102
|
+
}
|
|
103
|
+
if (!!stylesheet[variant]) {
|
|
104
|
+
return stylesheet[variant];
|
|
105
|
+
}
|
|
106
|
+
const [breakpoint, variantName] = (variant === null || variant === void 0 ? void 0 : variant.includes(':')) ? variant === null || variant === void 0 ? void 0 : variant.split(':') : [];
|
|
107
|
+
// @ts-ignore
|
|
108
|
+
if (!!(theme === null || theme === void 0 ? void 0 : theme.breakpoints[breakpoint]) && !!stylesheet[variantName]) {
|
|
109
|
+
// @ts-ignore
|
|
110
|
+
const mediaQuery = theme.media.down(breakpoint);
|
|
111
|
+
return {
|
|
112
|
+
[component]: this.createStyle({
|
|
113
|
+
[mediaQuery]: stylesheet[variantName][component],
|
|
114
|
+
}),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return this.computeCommonVariantStyle(componentName, variant, component);
|
|
118
|
+
}).filter(variantStyle => !!variantStyle);
|
|
119
|
+
let variantStyle = deepmerge({ all: true })(...variantStyles);
|
|
120
|
+
if (!!aggregator) {
|
|
121
|
+
variantStyle = aggregator(theme, variantStyle);
|
|
122
|
+
}
|
|
123
|
+
this.styleCache.cacheFor('variants', cache.key, variantStyle);
|
|
124
|
+
return variantStyle;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Determines whether a style object contains composition keys for a given component.
|
|
128
|
+
* A key is a composition key if it starts with one of the component's `elements` strings
|
|
129
|
+
* and is not in `ignoredStyleKeys`. Returns both a boolean flag and the extracted
|
|
130
|
+
* composition sub-record so callers can avoid a second pass.
|
|
131
|
+
*/
|
|
132
|
+
isCompositionStyle(component, style) {
|
|
133
|
+
var _a;
|
|
134
|
+
const composition = {};
|
|
135
|
+
if (!style) {
|
|
136
|
+
return {
|
|
137
|
+
isComposition: false,
|
|
138
|
+
composition,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
const styleKeys = Object.keys(style);
|
|
142
|
+
let elements = [];
|
|
143
|
+
for (const element of (_a = component === null || component === void 0 ? void 0 : component.elements) !== null && _a !== void 0 ? _a : []) {
|
|
144
|
+
const componentElements = styleKeys === null || styleKeys === void 0 ? void 0 : styleKeys.filter(k => (k === null || k === void 0 ? void 0 : k.startsWith(element)) && !(ignoredStyleKeys === null || ignoredStyleKeys === void 0 ? void 0 : ignoredStyleKeys.includes(k)));
|
|
145
|
+
if ((componentElements === null || componentElements === void 0 ? void 0 : componentElements.length) >= 1) {
|
|
146
|
+
elements = [...elements, ...componentElements];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
for (const element of elements) {
|
|
150
|
+
composition[element] = style[element];
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
isComposition: (elements === null || elements === void 0 ? void 0 : elements.length) >= 1,
|
|
154
|
+
composition,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Checks whether a style object contains a `breakpoints` key, indicating it uses
|
|
159
|
+
* the responsive style API. Returns the key name alongside the boolean so the caller
|
|
160
|
+
* can use it to read and delete the breakpoints entry without a repeated `'breakpoints'`
|
|
161
|
+
* string literal.
|
|
162
|
+
*/
|
|
163
|
+
isResponsiveStyle(style) {
|
|
164
|
+
const responsiveStyleKey = 'breakpoints';
|
|
165
|
+
if (!style) {
|
|
166
|
+
return {
|
|
167
|
+
responsiveStyleKey,
|
|
168
|
+
isResponsive: false,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
responsiveStyleKey,
|
|
173
|
+
isResponsive: !!style[responsiveStyleKey],
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
getDefaultVariantStyle(componentName, defaultVariantStyleName = 'default') {
|
|
177
|
+
const stylesheet = minifier.decompress(this.stylesheets[componentName]);
|
|
178
|
+
const defaultStyle = stylesheet === null || stylesheet === void 0 ? void 0 : stylesheet[defaultVariantStyleName];
|
|
179
|
+
if (!!defaultStyle) {
|
|
180
|
+
return defaultStyle;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
return {};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
mergeStylesWithCache(styles, key) {
|
|
187
|
+
const mergedStyles = deepmerge({ all: true })(...styles);
|
|
188
|
+
this.styleCache.cacheFor('components', key, mergedStyles);
|
|
189
|
+
return mergedStyles;
|
|
190
|
+
}
|
|
191
|
+
getRegisteredComponent(componentName) {
|
|
192
|
+
var _a;
|
|
193
|
+
const registeredComponent = this.components[componentName];
|
|
194
|
+
if (!registeredComponent) {
|
|
195
|
+
throw new Error(`Component ${componentName} not registered`);
|
|
196
|
+
}
|
|
197
|
+
const rootElement = (_a = registeredComponent === null || registeredComponent === void 0 ? void 0 : registeredComponent.rootElement) !== null && _a !== void 0 ? _a : 'wrapper';
|
|
198
|
+
return {
|
|
199
|
+
rootElement,
|
|
200
|
+
registeredComponent,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
getResponsiveStyle(componentName, responsiveStyleKey, style) {
|
|
204
|
+
const responsiveStyles = style[responsiveStyleKey];
|
|
205
|
+
if (!responsiveStyles)
|
|
206
|
+
return {};
|
|
207
|
+
const stylesheet = minifier.decompress(this.stylesheets[componentName]);
|
|
208
|
+
const cache = this.styleCache.keyFor('responsive', { componentName, responsiveStyles, stylesheet });
|
|
209
|
+
if (!!cache.value) {
|
|
210
|
+
return cache.value;
|
|
211
|
+
}
|
|
212
|
+
const styles = {};
|
|
213
|
+
for (const responsiveStyle in responsiveStyles) {
|
|
214
|
+
const mediaQuery = this.getMediaQuery(responsiveStyle);
|
|
215
|
+
const breakpointStyle = responsiveStyles[responsiveStyle];
|
|
216
|
+
const componentStyles = this.styleFor(componentName, breakpointStyle, false);
|
|
217
|
+
// @ts-ignore
|
|
218
|
+
for (const composition in componentStyles) {
|
|
219
|
+
styles[composition] = {
|
|
220
|
+
[mediaQuery]: componentStyles[composition],
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
this.styleCache.cacheFor('responsive', cache.key, styles);
|
|
225
|
+
return styles;
|
|
226
|
+
}
|
|
227
|
+
getStyles(componentName, _style, component, predicateObj) {
|
|
228
|
+
let styles = {};
|
|
229
|
+
const style = typeof _style == 'string' ? [_style] : _style;
|
|
230
|
+
if (Array.isArray(style)) {
|
|
231
|
+
const variants = [];
|
|
232
|
+
for (const s of style) {
|
|
233
|
+
if (typeof s === 'string') {
|
|
234
|
+
variants.push(s);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
styles = deepmerge({ all: true })(styles, !!predicateObj ? predicateObj(s) : s);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if ((variants === null || variants === void 0 ? void 0 : variants.length) >= 1) {
|
|
241
|
+
const computedVariantStyle = this.computeVariantStyle(componentName, variants, component);
|
|
242
|
+
styles = deepmerge({ all: true })(styles, computedVariantStyle[component]);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else if (typeof style === 'object') {
|
|
246
|
+
styles = !!predicateObj ? predicateObj(style) : style;
|
|
247
|
+
}
|
|
248
|
+
return styles;
|
|
249
|
+
}
|
|
250
|
+
getMediaQuery(responsiveKey) {
|
|
251
|
+
var _a, _b, _c;
|
|
252
|
+
const [breakpoint, query] = (responsiveKey === null || responsiveKey === void 0 ? void 0 : responsiveKey.includes(':')) ? responsiveKey === null || responsiveKey === void 0 ? void 0 : responsiveKey.split(':') : [responsiveKey, 'down'];
|
|
253
|
+
// @ts-ignore
|
|
254
|
+
const mediaQuery = (_c = (_b = (_a = themeStore.theme) === null || _a === void 0 ? void 0 : _a.media) === null || _b === void 0 ? void 0 : _b[query]) === null || _c === void 0 ? void 0 : _c.call(_b, breakpoint);
|
|
255
|
+
return mediaQuery;
|
|
256
|
+
}
|
|
257
|
+
getStyleWithResponsive(componentName, style, component) {
|
|
258
|
+
if (!style)
|
|
259
|
+
return style;
|
|
260
|
+
const { isResponsive, responsiveStyleKey } = this.isResponsiveStyle(style);
|
|
261
|
+
if (isResponsive) {
|
|
262
|
+
let responsiveStyles = {};
|
|
263
|
+
for (const responsiveStyle in style[responsiveStyleKey]) {
|
|
264
|
+
const mediaQuery = this.getMediaQuery(responsiveStyle);
|
|
265
|
+
const breakpointStyle = style[responsiveStyleKey][responsiveStyle];
|
|
266
|
+
responsiveStyles = deepmerge({ all: true })(responsiveStyles, {
|
|
267
|
+
[mediaQuery]: this.getStyles(componentName, breakpointStyle, component),
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
delete style[responsiveStyleKey];
|
|
271
|
+
return deepmerge({ all: true })(style, responsiveStyles);
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
return style;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
getCompositionStyle(componentName, composition, style) {
|
|
278
|
+
const cache = this.styleCache.keyFor('compositions', { componentName, composition, style });
|
|
279
|
+
if (!!cache.value) {
|
|
280
|
+
return cache.value;
|
|
281
|
+
}
|
|
282
|
+
const styles = [];
|
|
283
|
+
for (const component in composition) {
|
|
284
|
+
const componentStyles = composition[component];
|
|
285
|
+
const componentStyle = this.getStyles(componentName, componentStyles, component, s => this.getStyleWithResponsive(componentName, s, component));
|
|
286
|
+
styles.push({ [component]: componentStyle });
|
|
287
|
+
delete style[component];
|
|
288
|
+
}
|
|
289
|
+
this.styleCache.cacheFor('compositions', cache.key, styles);
|
|
290
|
+
return styles;
|
|
291
|
+
}
|
|
292
|
+
styleFor(componentName, componentStyle, mergeWithDefaultStyle = true, context) {
|
|
293
|
+
const cache = this.styleCache.keyFor('components', { componentName, componentStyle, stylesheet: this.stylesheets[componentName], context });
|
|
294
|
+
if (!!cache.value) {
|
|
295
|
+
return cache.value;
|
|
296
|
+
}
|
|
297
|
+
const style = this.copyStyle(componentStyle);
|
|
298
|
+
const isStyleArray = Array.isArray(style);
|
|
299
|
+
const { rootElement, registeredComponent } = this.getRegisteredComponent(componentName);
|
|
300
|
+
const defaultStyle = mergeWithDefaultStyle ? this.getDefaultVariantStyle(componentName) : {};
|
|
301
|
+
if (!style) {
|
|
302
|
+
return this.mergeStylesWithCache([defaultStyle], cache.key);
|
|
303
|
+
}
|
|
304
|
+
if (typeof style === 'string') {
|
|
305
|
+
const computedVariantStyle = this.computeVariantStyle(componentName, [style], undefined, context);
|
|
306
|
+
return this.mergeStylesWithCache([defaultStyle, computedVariantStyle], cache.key);
|
|
307
|
+
}
|
|
308
|
+
const isStyleObject = typeof style === 'object' && !isStyleArray;
|
|
309
|
+
if (isStyleObject) {
|
|
310
|
+
const { isComposition, composition } = this.isCompositionStyle(registeredComponent, style);
|
|
311
|
+
const { isResponsive, responsiveStyleKey } = this.isResponsiveStyle(style);
|
|
312
|
+
const responsiveStyles = this.getResponsiveStyle(componentName, responsiveStyleKey, style);
|
|
313
|
+
if (isResponsive) {
|
|
314
|
+
delete style[responsiveStyleKey];
|
|
315
|
+
}
|
|
316
|
+
if (isComposition) {
|
|
317
|
+
const compositionStyles = this.getCompositionStyle(componentName, composition, style);
|
|
318
|
+
const styles = [defaultStyle, responsiveStyles, ...compositionStyles];
|
|
319
|
+
styles.push({ [rootElement]: style });
|
|
320
|
+
return this.mergeStylesWithCache(styles, cache.key);
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
return this.mergeStylesWithCache([defaultStyle, responsiveStyles, { [rootElement]: style }], cache.key);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
if (isStyleArray) {
|
|
327
|
+
const filteredStyle = style === null || style === void 0 ? void 0 : style.filter(s => !!s);
|
|
328
|
+
let variants = [];
|
|
329
|
+
const styles = [defaultStyle];
|
|
330
|
+
let idx = 0;
|
|
331
|
+
for (const s of filteredStyle) {
|
|
332
|
+
if (typeof s === 'string') {
|
|
333
|
+
variants.push(s);
|
|
334
|
+
}
|
|
335
|
+
const isObj = typeof s === 'object';
|
|
336
|
+
if (variants.length > 0 && (idx === filteredStyle.length - 1 || isObj)) {
|
|
337
|
+
const computedVariantStyle = this.computeVariantStyle(componentName, variants, undefined, context);
|
|
338
|
+
styles.push(computedVariantStyle);
|
|
339
|
+
variants = [];
|
|
340
|
+
}
|
|
341
|
+
if (isObj) {
|
|
342
|
+
const { isComposition, composition } = this.isCompositionStyle(registeredComponent, s);
|
|
343
|
+
const { isResponsive, responsiveStyleKey } = this.isResponsiveStyle(s);
|
|
344
|
+
if (Array.isArray(s)) {
|
|
345
|
+
const styleComposition = this.styleFor(componentName, s, false);
|
|
346
|
+
styles.push(styleComposition);
|
|
347
|
+
}
|
|
348
|
+
else if (isComposition) {
|
|
349
|
+
const compositionStyles = this.getCompositionStyle(componentName, composition, s);
|
|
350
|
+
styles.push(...compositionStyles);
|
|
351
|
+
}
|
|
352
|
+
else if (isResponsive) {
|
|
353
|
+
const responsiveStyles = this.getResponsiveStyle(componentName, responsiveStyleKey, s);
|
|
354
|
+
styles.push(responsiveStyles);
|
|
355
|
+
delete s[responsiveStyleKey];
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
styles.push({ [rootElement]: s });
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
idx++;
|
|
362
|
+
}
|
|
363
|
+
return this.mergeStylesWithCache(styles, cache.key);
|
|
364
|
+
}
|
|
365
|
+
console.warn('Invalid style prop for ', componentName, style);
|
|
366
|
+
return {};
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Rebuilds `commonVariants` by merging (in ascending priority order):
|
|
370
|
+
* `defaultVariants` → `appVariants` → `dynamicVariants` → `spacingVariants` → `insetVariants`.
|
|
371
|
+
* Called once in the constructor; must be re-called (via `update`) if app variants change.
|
|
372
|
+
*/
|
|
373
|
+
registerCommonVariants() {
|
|
374
|
+
var _a, _b;
|
|
375
|
+
const spacingVariants = (_a = themeStore.themeTyped) === null || _a === void 0 ? void 0 : _a.spacing;
|
|
376
|
+
const insetVariants = (_b = themeStore.themeTyped) === null || _b === void 0 ? void 0 : _b.inset;
|
|
377
|
+
const appVariants = themeStore.variants;
|
|
378
|
+
const commonVariants = deepmerge({ all: true })(defaultVariants, appVariants, dynamicVariants, spacingVariants, insetVariants);
|
|
379
|
+
this.commonVariants = commonVariants;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Registers a component's variant stylesheet. No-ops if the component is already
|
|
383
|
+
* registered (variants are immutable after first registration). Extracts any
|
|
384
|
+
* `CONTEXT_FACTORY_SYMBOL`-tagged entries into `variantFactories` for context-aware
|
|
385
|
+
* resolution, then compresses and stores the remaining variants.
|
|
386
|
+
*/
|
|
387
|
+
registerVariants(componentName, variants, aggregator) {
|
|
388
|
+
if (this.stylesheets[componentName]) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
const factories = {};
|
|
392
|
+
for (const [variantName, variant] of Object.entries(variants)) {
|
|
393
|
+
const factory = variant === null || variant === void 0 ? void 0 : variant[CONTEXT_FACTORY_SYMBOL];
|
|
394
|
+
if (typeof factory === 'function')
|
|
395
|
+
factories[variantName] = factory;
|
|
396
|
+
}
|
|
397
|
+
if (Object.keys(factories).length > 0) {
|
|
398
|
+
this.variantFactories[componentName] = factories;
|
|
399
|
+
}
|
|
400
|
+
if (aggregator) {
|
|
401
|
+
this.aggregators[componentName] = aggregator;
|
|
402
|
+
}
|
|
403
|
+
this.stylesheets[componentName] = minifier.compress(variants);
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Records the minimal component metadata (`styleRegistryName`, `elements`,
|
|
407
|
+
* `rootElement`) needed for composition and style resolution. Only the metadata
|
|
408
|
+
* is stored — the component function itself is not retained.
|
|
409
|
+
*/
|
|
410
|
+
registerComponent(component) {
|
|
411
|
+
const componentData = {
|
|
412
|
+
styleRegistryName: component === null || component === void 0 ? void 0 : component.styleRegistryName,
|
|
413
|
+
elements: component === null || component === void 0 ? void 0 : component.elements,
|
|
414
|
+
rootElement: component === null || component === void 0 ? void 0 : component.rootElement,
|
|
415
|
+
};
|
|
416
|
+
this.components[component.styleRegistryName] = componentData;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* These should be overwritten by the end-user to support
|
|
420
|
+
* custom style merging logic, such as StyleSheet.flatten
|
|
421
|
+
*/
|
|
422
|
+
createStyle(css) {
|
|
423
|
+
throw new Error('createStyle: Not implemented');
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Must be called after the active color scheme changes so that the `StyleCache`
|
|
427
|
+
* base key is regenerated. Without this call, cached values from the previous
|
|
428
|
+
* scheme would be returned for the new scheme.
|
|
429
|
+
*/
|
|
430
|
+
update() {
|
|
431
|
+
var _a, _b, _c, _d;
|
|
432
|
+
const currentColorScheme = (_d = (_c = (_b = (_a = themeStore.themeTyped) === null || _a === void 0 ? void 0 : _a.currentColorScheme) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : themeStore.colorScheme) !== null && _d !== void 0 ? _d : 'default';
|
|
433
|
+
this.styleCache.registerBaseKey([currentColorScheme, themeStore.theme, this.commonVariants]);
|
|
434
|
+
}
|
|
435
|
+
copyStyle(style) {
|
|
436
|
+
return deepClone(style);
|
|
437
|
+
}
|
|
438
|
+
createStyles(styles) {
|
|
439
|
+
const compute = () => {
|
|
440
|
+
var _a;
|
|
441
|
+
const current = themeStore.theme;
|
|
442
|
+
const stylesObj = typeof styles === 'function' ? styles(current) : styles;
|
|
443
|
+
const cache = this.styleCache.keyFor('styles', stylesObj);
|
|
444
|
+
if (!!cache.value) {
|
|
445
|
+
return cache.value;
|
|
446
|
+
}
|
|
447
|
+
const createdStyles = {};
|
|
448
|
+
for (const key in stylesObj) {
|
|
449
|
+
const style = this.styleFor('MyComponent', stylesObj[key], false);
|
|
450
|
+
createdStyles[key] = (_a = style === null || style === void 0 ? void 0 : style.wrapper) !== null && _a !== void 0 ? _a : style;
|
|
451
|
+
}
|
|
452
|
+
this.styleCache.cacheFor('styles', cache.key, createdStyles);
|
|
453
|
+
return createdStyles;
|
|
454
|
+
};
|
|
455
|
+
return new Proxy(compute(), {
|
|
456
|
+
get(target, prop) {
|
|
457
|
+
return compute()[prop];
|
|
458
|
+
},
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
prefixStyle(prefix, style) {
|
|
462
|
+
const entries = Object.entries(style).map(e => {
|
|
463
|
+
const [key, value] = e;
|
|
464
|
+
const elementKey = capitalize(key);
|
|
465
|
+
return [`${prefix}${elementKey}`, value];
|
|
466
|
+
});
|
|
467
|
+
return Object.fromEntries(entries);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
//# sourceMappingURL=StyleRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StyleRegistry.js","sourceRoot":"","sources":["../../src/classes/StyleRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classes/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
const isBrowser = () => typeof document !== 'undefined';
|
|
3
|
+
/**
|
|
4
|
+
* Package-wide feature flags and runtime constants. These are read once at module
|
|
5
|
+
* load time and are not reactive.
|
|
6
|
+
*
|
|
7
|
+
* - `STORES_PERSIST_VERSION` — bumping this value invalidates all persisted caches
|
|
8
|
+
* on the next load (because it is included in every `hashKey` call via `registerBaseKey`).
|
|
9
|
+
* - `STORE_CACHE_ENABLED` — when `false`, the persistent `Cache` instances skip
|
|
10
|
+
* loading from and writing to `StateStorage`.
|
|
11
|
+
* - `CACHE_ENABLED` — when `false`, `StyleCache.cacheFor` returns values without
|
|
12
|
+
* writing to any cache bucket, effectively disabling all in-memory caching.
|
|
13
|
+
* - `IS_BROWSER` — sniffed at load time via `typeof document`; used as a fast guard
|
|
14
|
+
* before any DOM access.
|
|
15
|
+
* - `LOG` — enables verbose `console.log` tracing inside `Cache` and `StylePersistor`.
|
|
16
|
+
*/
|
|
17
|
+
export const StyleConstants = {
|
|
18
|
+
STORES_PERSIST_VERSION: 1,
|
|
19
|
+
STORE_CACHE_ENABLED: true,
|
|
20
|
+
CACHE_ENABLED: true,
|
|
21
|
+
IS_BROWSER: isBrowser(),
|
|
22
|
+
LOG: false,
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAA;AAE/D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,sBAAsB,EAAE,CAAC;IACzB,mBAAmB,EAAE,IAAI;IACzB,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,SAAS,EAAa;IAClC,GAAG,EAAE,KAAK;CACX,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { getNestedStylesByKey } from '../utils';
|
|
3
|
+
/**
|
|
4
|
+
* Slices a flat component-style record into per-element sub-records, memoised to
|
|
5
|
+
* avoid unnecessary re-renders. For each element name in `composition`, it calls
|
|
6
|
+
* `getNestedStylesByKey(element, componentStyles)` to collect all keys that start
|
|
7
|
+
* with that element name. Accepts either a single element string or an array.
|
|
8
|
+
*
|
|
9
|
+
* Useful when a parent component receives a merged `componentStyles` object and
|
|
10
|
+
* needs to distribute the correct slice to each child element.
|
|
11
|
+
*/
|
|
12
|
+
export function useCompositionStyles(composition, componentStyles) {
|
|
13
|
+
const styles = Object.assign({}, componentStyles);
|
|
14
|
+
return useMemo(() => {
|
|
15
|
+
const compositionStyles = {};
|
|
16
|
+
if (Array.isArray(composition)) {
|
|
17
|
+
for (const element of composition) {
|
|
18
|
+
compositionStyles[element] = getNestedStylesByKey(element, styles);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
compositionStyles[composition] = getNestedStylesByKey(composition, styles);
|
|
23
|
+
}
|
|
24
|
+
return compositionStyles;
|
|
25
|
+
}, [styles]);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=useCompositionStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCompositionStyles.js","sourceRoot":"","sources":["../../src/hooks/useCompositionStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAA2B,EAC3B,eAAyC;IAEzC,MAAM,MAAM,qBACP,eAAe,CACnB,CAAA;IAED,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,iBAAiB,GAAyB,EAAE,CAAA;QAElD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;gBAClC,iBAAiB,CAAC,OAAiB,CAAC,GAAG,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC9E,CAAC;QACH,CAAC;aAAM,CAAC;YACN,iBAAiB,CAAC,WAAqB,CAAC,GAAG,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QACtF,CAAC;QAED,OAAO,iBAA6C,CAAA;IACtD,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { getNestedStylesByKey } from '../utils';
|
|
3
|
+
/**
|
|
4
|
+
* Memoised wrapper around `getNestedStylesByKey`. Returns the sub-record of
|
|
5
|
+
* `componentStyles` whose keys start with `match`, with the prefix stripped and the
|
|
6
|
+
* remainder lowercased. Re-computes only when `componentStyles` changes by reference.
|
|
7
|
+
*
|
|
8
|
+
* Use instead of `useCompositionStyles` when you need the slice for a single element
|
|
9
|
+
* and don't want the overhead of iterating over an array.
|
|
10
|
+
*/
|
|
11
|
+
export function useNestedStylesByKey(match, componentStyles) {
|
|
12
|
+
const styles = Object.assign({}, componentStyles);
|
|
13
|
+
return useMemo(() => {
|
|
14
|
+
return getNestedStylesByKey(match, styles);
|
|
15
|
+
}, [styles]);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=useNestedStylesByKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNestedStylesByKey.js","sourceRoot":"","sources":["../../src/hooks/useNestedStylesByKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAmB,KAAa,EAAE,eAAyC;IAC7G,MAAM,MAAM,qBACP,eAAe,CACnB,CAAA;IAED,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Produces a stable string that changes only when the style value changes, suitable
|
|
4
|
+
* for use as a `useEffect`/`useMemo` dependency when the style prop is an object or
|
|
5
|
+
* array (which would otherwise trigger on every render due to referential inequality).
|
|
6
|
+
* Falsy entries are stripped from arrays before serialisation, so `[null, style]` and
|
|
7
|
+
* `[style]` yield the same string.
|
|
8
|
+
*/
|
|
9
|
+
export const useStyleObserver = (style) => {
|
|
10
|
+
return useMemo(() => {
|
|
11
|
+
if (Array.isArray(style)) {
|
|
12
|
+
return JSON.stringify(style === null || style === void 0 ? void 0 : style.filter(v => !!v));
|
|
13
|
+
}
|
|
14
|
+
else if (typeof style === 'object') {
|
|
15
|
+
return JSON.stringify(style);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
return style;
|
|
19
|
+
}
|
|
20
|
+
}, [style]);
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=useStyleObserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStyleObserver.js","sourceRoot":"","sources":["../../src/hooks/useStyleObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAE,EAAE;IAC7C,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChD,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAC,CAAC;YACpC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AACb,CAAC,CAAA"}
|