@codeleap/styles 6.8.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.
Files changed (93) hide show
  1. package/dist/classes/Cacher.js +166 -0
  2. package/dist/classes/Cacher.js.map +1 -0
  3. package/dist/classes/StaleControl.js +101 -0
  4. package/dist/classes/StaleControl.js.map +1 -0
  5. package/dist/classes/StyleCache.js +91 -0
  6. package/dist/classes/StyleCache.js.map +1 -0
  7. package/dist/classes/StylePersistor.js +54 -0
  8. package/dist/classes/StylePersistor.js.map +1 -0
  9. package/dist/classes/StyleRegistry.js +470 -0
  10. package/dist/classes/StyleRegistry.js.map +1 -0
  11. package/dist/classes/index.js +3 -0
  12. package/dist/classes/index.js.map +1 -0
  13. package/dist/constants.js +24 -0
  14. package/dist/constants.js.map +1 -0
  15. package/dist/hooks/index.js +5 -0
  16. package/dist/hooks/index.js.map +1 -0
  17. package/dist/hooks/useCompositionStyles.js +27 -0
  18. package/dist/hooks/useCompositionStyles.js.map +1 -0
  19. package/dist/hooks/useNestedStylesByKey.js +17 -0
  20. package/dist/hooks/useNestedStylesByKey.js.map +1 -0
  21. package/dist/hooks/useStyleObserver.js +22 -0
  22. package/dist/hooks/useStyleObserver.js.map +1 -0
  23. package/dist/hooks/useTheme.js +24 -0
  24. package/dist/hooks/useTheme.js.map +1 -0
  25. package/dist/index.js +12 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/lib/calc.js +44 -0
  28. package/dist/lib/calc.js.map +1 -0
  29. package/dist/lib/createStyles.js +58 -0
  30. package/dist/lib/createStyles.js.map +1 -0
  31. package/dist/lib/createTheme.js +143 -0
  32. package/dist/lib/createTheme.js.map +1 -0
  33. package/dist/lib/cssVariables.js +73 -0
  34. package/dist/lib/cssVariables.js.map +1 -0
  35. package/dist/lib/index.js +5 -0
  36. package/dist/lib/index.js.map +1 -0
  37. package/dist/theme/generateColorScheme.js +38 -0
  38. package/dist/theme/generateColorScheme.js.map +1 -0
  39. package/dist/theme/index.js +4 -0
  40. package/dist/theme/index.js.map +1 -0
  41. package/dist/theme/themeStore.js +139 -0
  42. package/dist/theme/themeStore.js.map +1 -0
  43. package/dist/theme/validateTheme.js +33 -0
  44. package/dist/theme/validateTheme.js.map +1 -0
  45. package/dist/tools/colors.js +138 -0
  46. package/dist/tools/colors.js.map +1 -0
  47. package/dist/tools/deepClone.js +8 -0
  48. package/dist/tools/deepClone.js.map +1 -0
  49. package/dist/tools/deepmerge.js +13 -0
  50. package/dist/tools/deepmerge.js.map +1 -0
  51. package/dist/tools/hashKey.js +16 -0
  52. package/dist/tools/hashKey.js.map +1 -0
  53. package/dist/tools/index.js +7 -0
  54. package/dist/tools/index.js.map +1 -0
  55. package/dist/tools/minifier.js +34 -0
  56. package/dist/tools/minifier.js.map +1 -0
  57. package/dist/tools/multiplierProperty.js +9 -0
  58. package/dist/tools/multiplierProperty.js.map +1 -0
  59. package/dist/types/cache.js +2 -0
  60. package/dist/types/cache.js.map +1 -0
  61. package/dist/types/component.js +2 -0
  62. package/dist/types/component.js.map +1 -0
  63. package/dist/types/core.js +3 -0
  64. package/dist/types/core.js.map +1 -0
  65. package/dist/types/icon.js +3 -0
  66. package/dist/types/icon.js.map +1 -0
  67. package/dist/types/index.js +6 -0
  68. package/dist/types/index.js.map +1 -0
  69. package/dist/types/spacing.js +28 -0
  70. package/dist/types/spacing.js.map +1 -0
  71. package/dist/types/store.js +2 -0
  72. package/dist/types/store.js.map +1 -0
  73. package/dist/types/style.js +2 -0
  74. package/dist/types/style.js.map +1 -0
  75. package/dist/types/theme.js +2 -0
  76. package/dist/types/theme.js.map +1 -0
  77. package/dist/utils.js +97 -0
  78. package/dist/utils.js.map +1 -0
  79. package/dist/variants/borderCreator.js +26 -0
  80. package/dist/variants/borderCreator.js.map +1 -0
  81. package/dist/variants/createAppVariants.js +17 -0
  82. package/dist/variants/createAppVariants.js.map +1 -0
  83. package/dist/variants/defaultVariants.js +137 -0
  84. package/dist/variants/defaultVariants.js.map +1 -0
  85. package/dist/variants/dynamicVariants.js +89 -0
  86. package/dist/variants/dynamicVariants.js.map +1 -0
  87. package/dist/variants/index.js +7 -0
  88. package/dist/variants/index.js.map +1 -0
  89. package/dist/variants/mediaQuery.js +56 -0
  90. package/dist/variants/mediaQuery.js.map +1 -0
  91. package/dist/variants/spacing.js +81 -0
  92. package/dist/variants/spacing.js.map +1 -0
  93. 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,3 @@
1
+ export * from './StyleRegistry';
2
+ export * from './StylePersistor';
3
+ //# sourceMappingURL=index.js.map
@@ -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,5 @@
1
+ export * from './useCompositionStyles';
2
+ export * from './useNestedStylesByKey';
3
+ export * from './useStyleObserver';
4
+ export * from './useTheme';
5
+ //# sourceMappingURL=index.js.map
@@ -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"}