@elastic/distillate 0.1.0 → 0.2.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/cjs/collector.js +129 -58
- package/dist/cjs/collector.js.map +1 -1
- package/dist/cjs/dom_sink.js +2 -2
- package/dist/cjs/dom_sink.js.map +1 -1
- package/dist/cjs/emotion.js.map +1 -1
- package/dist/cjs/engine.js +24 -8
- package/dist/cjs/engine.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/sink.js +9 -0
- package/dist/cjs/sink.js.map +1 -0
- package/dist/collector.d.ts +18 -1
- package/dist/collector.d.ts.map +1 -1
- package/dist/collector.js +129 -58
- package/dist/collector.js.map +1 -1
- package/dist/dom_sink.d.ts +8 -12
- package/dist/dom_sink.d.ts.map +1 -1
- package/dist/dom_sink.js +2 -2
- package/dist/dom_sink.js.map +1 -1
- package/dist/emotion.d.ts +3 -6
- package/dist/emotion.d.ts.map +1 -1
- package/dist/emotion.js.map +1 -1
- package/dist/engine.d.ts +26 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +24 -8
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/sink.d.ts +16 -0
- package/dist/sink.d.ts.map +1 -0
- package/dist/sink.js +8 -0
- package/dist/sink.js.map +1 -0
- package/docs/concepts/collection.md +1 -1
- package/docs/getting-started/installation.md +5 -5
- package/docs/guides/react-renderer.md +45 -1
- package/docs/reference/api/emotion.md +58 -140
- package/docs/reference/api/index-1.md +452 -245
- package/docs/reference/api/testing.md +6 -6
- package/docs/reference/entry-points.md +18 -4
- package/docs/reference/okf-map.md +2 -1
- package/package.json +1 -1
- package/src/collector.ts +145 -59
- package/src/dom_sink.ts +9 -10
- package/src/emotion.ts +3 -6
- package/src/engine.ts +59 -9
- package/src/index.ts +14 -1
- package/src/sink.ts +25 -0
package/dist/cjs/collector.js
CHANGED
|
@@ -67,6 +67,9 @@ class StylesCollector {
|
|
|
67
67
|
handles = new Map();
|
|
68
68
|
themeDeps = new Set();
|
|
69
69
|
varDeps = new Set();
|
|
70
|
+
listeners = new Set();
|
|
71
|
+
depth = 0;
|
|
72
|
+
dirty = false;
|
|
70
73
|
constructor({ target, names, registry, prefix, dev = false, warn = (message) => console.warn(message), }) {
|
|
71
74
|
this.target = target;
|
|
72
75
|
this.names = names;
|
|
@@ -83,6 +86,9 @@ class StylesCollector {
|
|
|
83
86
|
* @param value Module (all non-variant entries), a single entry, or an array of entries.
|
|
84
87
|
*/
|
|
85
88
|
use(value) {
|
|
89
|
+
this.batch(() => this.useValue(value));
|
|
90
|
+
}
|
|
91
|
+
useValue(value) {
|
|
86
92
|
if (isReadonlyArray(value)) {
|
|
87
93
|
value.forEach((entry) => this.use(entry));
|
|
88
94
|
return;
|
|
@@ -99,7 +105,7 @@ class StylesCollector {
|
|
|
99
105
|
if (entry.kind === 'handle' && !this.retainHandle(entry)) {
|
|
100
106
|
continue;
|
|
101
107
|
}
|
|
102
|
-
this.
|
|
108
|
+
this.setEntry(entry);
|
|
103
109
|
if (entry.kind === 'handle' || entry.kind === 'rule') {
|
|
104
110
|
this.addDeclarationDeps(entry.declarations);
|
|
105
111
|
}
|
|
@@ -116,7 +122,7 @@ class StylesCollector {
|
|
|
116
122
|
if (!this.retainHandle(handle)) {
|
|
117
123
|
continue;
|
|
118
124
|
}
|
|
119
|
-
this.
|
|
125
|
+
this.setHandle(handle);
|
|
120
126
|
}
|
|
121
127
|
return;
|
|
122
128
|
}
|
|
@@ -128,67 +134,86 @@ class StylesCollector {
|
|
|
128
134
|
* @param module Module whose entries should all be collected.
|
|
129
135
|
*/
|
|
130
136
|
useAllEntries(module) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
137
|
+
this.batch(() => {
|
|
138
|
+
for (const entry of module.entries) {
|
|
139
|
+
if (entry.kind === 'handle' && !this.retainHandle(entry)) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
this.setEntry(entry);
|
|
134
143
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
144
|
+
for (const handle of module.handleList) {
|
|
145
|
+
if (!this.retainHandle(handle)) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
this.setHandle(handle);
|
|
140
149
|
}
|
|
141
|
-
this.
|
|
142
|
-
}
|
|
143
|
-
module.themeDeps.forEach((path) => this.themeDeps.add(path));
|
|
144
|
-
module.varDeps.forEach((path) => this.varDeps.add(path));
|
|
150
|
+
this.addDeps(module.themeDeps, module.varDeps);
|
|
151
|
+
});
|
|
145
152
|
}
|
|
146
153
|
/**
|
|
147
154
|
* Collects handles and auto-includes rules whose selector deps are all present.
|
|
148
155
|
*
|
|
149
|
-
* Media blocks
|
|
156
|
+
* Media blocks gain inner rules whose deps are met and keep rules already collected.
|
|
150
157
|
*
|
|
151
158
|
* @param handles Handles resolved during this render pass (e.g. from `resolveClassName`).
|
|
152
159
|
* @returns Handles that were retained. Empty untargeted handles are omitted in compact mode.
|
|
153
160
|
*/
|
|
154
161
|
useHandles(handles) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
for (const handle of retained) {
|
|
169
|
-
const module = this.registry.module(handle.moduleName);
|
|
170
|
-
if (!module) {
|
|
171
|
-
continue;
|
|
162
|
+
return this.batch(() => {
|
|
163
|
+
const retained = [];
|
|
164
|
+
for (const handle of handles) {
|
|
165
|
+
if (!this.retainHandle(handle)) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
retained.push(handle);
|
|
169
|
+
if (this.handles.has(handle.key)) {
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
this.setEntry(handle);
|
|
173
|
+
this.setHandle(handle);
|
|
174
|
+
this.addDeclarationDeps(handle.declarations);
|
|
172
175
|
}
|
|
173
|
-
for (const
|
|
174
|
-
this.
|
|
176
|
+
for (const handle of retained) {
|
|
177
|
+
const module = this.registry.module(handle.moduleName);
|
|
178
|
+
if (!module) {
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
for (const dependent of dependentEntries(module, handle.key)) {
|
|
182
|
+
this.tryActivateDependent(dependent);
|
|
183
|
+
}
|
|
175
184
|
}
|
|
176
|
-
|
|
177
|
-
|
|
185
|
+
return retained;
|
|
186
|
+
});
|
|
178
187
|
}
|
|
179
188
|
/** Collects `auto` rules on `module` whose every selector dependency is already collected. */
|
|
180
189
|
useRulesWhenDepsMet(module) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
this.
|
|
190
|
+
this.batch(() => {
|
|
191
|
+
for (const entry of module.entries) {
|
|
192
|
+
if (entry.kind !== 'rule') {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
if (this.entries.has(entryKey(entry))) {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
if (this.allDepsMet(entry.dependsOn)) {
|
|
199
|
+
this.addEntry(entry);
|
|
200
|
+
}
|
|
190
201
|
}
|
|
191
|
-
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Calls `listener` after a public mutation adds an entry, handle, theme var, or contextual var.
|
|
206
|
+
*
|
|
207
|
+
* Fires at most once per outermost call; nested calls such as `use([a, b])` batch into it.
|
|
208
|
+
*
|
|
209
|
+
* @param listener Called with no arguments after the collection grows.
|
|
210
|
+
* @returns Unsubscribes `listener`.
|
|
211
|
+
*/
|
|
212
|
+
subscribe(listener) {
|
|
213
|
+
this.listeners.add(listener);
|
|
214
|
+
return () => {
|
|
215
|
+
this.listeners.delete(listener);
|
|
216
|
+
};
|
|
192
217
|
}
|
|
193
218
|
tryActivateDependent(entry) {
|
|
194
219
|
if (entry.kind === 'rule') {
|
|
@@ -205,15 +230,16 @@ class StylesCollector {
|
|
|
205
230
|
return;
|
|
206
231
|
}
|
|
207
232
|
if (entry.kind === 'media') {
|
|
208
|
-
|
|
209
|
-
|
|
233
|
+
// Add newly live rules; keep rules already collected (e.g. by `use`).
|
|
234
|
+
const existing = this.entries.get(entryKey(entry));
|
|
235
|
+
const collected = new Set(existing?.kind === 'media' ? existing.rules : []);
|
|
236
|
+
const rules = entry.rules.filter((rule) => collected.has(rule) || (rule.auto && this.allDepsMet(rule.dependsOn)));
|
|
237
|
+
if (rules.length === collected.size) {
|
|
210
238
|
return;
|
|
211
239
|
}
|
|
212
|
-
const filtered =
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
this.entries.set(entryKey(filtered), filtered);
|
|
216
|
-
for (const rule of liveRules) {
|
|
240
|
+
const filtered = rules.length === entry.rules.length ? entry : { ...entry, rules };
|
|
241
|
+
this.setEntry(filtered);
|
|
242
|
+
for (const rule of rules) {
|
|
217
243
|
this.addDeclarationDeps(rule.declarations);
|
|
218
244
|
}
|
|
219
245
|
}
|
|
@@ -228,7 +254,7 @@ class StylesCollector {
|
|
|
228
254
|
}
|
|
229
255
|
/** Marks a theme token path as reachable so it appears in the emitted theme block, even if no collected declaration reads it. */
|
|
230
256
|
useThemeVar(path) {
|
|
231
|
-
this.
|
|
257
|
+
this.batch(() => this.addDeps([path], []));
|
|
232
258
|
}
|
|
233
259
|
/** Creates a {@link StyleNameResolver} scoped to this collector's current dep set. */
|
|
234
260
|
createResolver() {
|
|
@@ -351,9 +377,9 @@ class StylesCollector {
|
|
|
351
377
|
if (entry.kind === 'handle' && !this.retainHandle(entry)) {
|
|
352
378
|
return;
|
|
353
379
|
}
|
|
354
|
-
this.
|
|
380
|
+
this.setEntry(entry);
|
|
355
381
|
if (entry.kind === 'handle') {
|
|
356
|
-
this.
|
|
382
|
+
this.setHandle(entry);
|
|
357
383
|
this.addDeclarationDeps(entry.declarations);
|
|
358
384
|
return;
|
|
359
385
|
}
|
|
@@ -366,8 +392,53 @@ class StylesCollector {
|
|
|
366
392
|
}
|
|
367
393
|
}
|
|
368
394
|
addDeclarationDeps(declarations) {
|
|
369
|
-
declarations.deps.theme
|
|
370
|
-
|
|
395
|
+
this.addDeps(declarations.deps.theme, declarations.deps.vars);
|
|
396
|
+
}
|
|
397
|
+
addDeps(theme, vars) {
|
|
398
|
+
const before = this.themeDeps.size + this.varDeps.size;
|
|
399
|
+
for (const path of theme) {
|
|
400
|
+
this.themeDeps.add(path);
|
|
401
|
+
}
|
|
402
|
+
for (const path of vars) {
|
|
403
|
+
this.varDeps.add(path);
|
|
404
|
+
}
|
|
405
|
+
if (this.themeDeps.size + this.varDeps.size !== before) {
|
|
406
|
+
this.dirty = true;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
// A media entry changes when it gains inner rules.
|
|
410
|
+
setEntry(entry) {
|
|
411
|
+
const key = entryKey(entry);
|
|
412
|
+
const existing = this.entries.get(key);
|
|
413
|
+
this.entries.set(key, entry);
|
|
414
|
+
if (!existing ||
|
|
415
|
+
(existing.kind === 'media' &&
|
|
416
|
+
entry.kind === 'media' &&
|
|
417
|
+
existing.rules.length !== entry.rules.length)) {
|
|
418
|
+
this.dirty = true;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
setHandle(handle) {
|
|
422
|
+
if (!this.handles.has(handle.key)) {
|
|
423
|
+
this.dirty = true;
|
|
424
|
+
}
|
|
425
|
+
this.handles.set(handle.key, handle);
|
|
426
|
+
}
|
|
427
|
+
// Listeners run once the outermost public mutation returns.
|
|
428
|
+
batch(mutate) {
|
|
429
|
+
this.depth += 1;
|
|
430
|
+
try {
|
|
431
|
+
return mutate();
|
|
432
|
+
}
|
|
433
|
+
finally {
|
|
434
|
+
this.depth -= 1;
|
|
435
|
+
if (this.depth === 0 && this.dirty) {
|
|
436
|
+
this.dirty = false;
|
|
437
|
+
for (const listener of [...this.listeners]) {
|
|
438
|
+
listener();
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
371
442
|
}
|
|
372
443
|
}
|
|
373
444
|
exports.StylesCollector = StylesCollector;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/collector.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport { isLocalVarOverrideMarker } from './local_vars';\nimport {\n createStyleNameResolver,\n type StyleNameMode,\n type StyleNameResolver,\n type StyleTarget,\n} from './names';\nimport type {\n ContextualVarPath,\n CssVarPath,\n Declarations,\n DefaultGroupDeps,\n StyleEntry,\n StyleHandle,\n StyleMedia,\n StyleRegistry,\n StyleRule,\n StylesModule,\n} from './styles';\nimport { isEmptyDeclarations } from './styles/declarations';\n\nconst warnedHandles = new WeakSet<StyleHandle>();\n\nconst dependentEntriesCache = new WeakMap<\n StylesModule,\n Map<string, StyleEntry[]>\n>();\n\nconst dependentEntries = (\n module: StylesModule,\n handleKey: string\n): readonly StyleEntry[] => {\n let cached = dependentEntriesCache.get(module);\n if (!cached) {\n cached = new Map<string, StyleEntry[]>();\n for (const entry of module.entries) {\n if (entry.kind === 'rule') {\n if (!entry.auto) {\n continue;\n }\n for (const dep of entry.dependsOn) {\n appendDependent(cached, dep, entry);\n }\n continue;\n }\n if (entry.kind === 'media') {\n const deps = new Set<string>();\n for (const nested of entry.rules) {\n if (!nested.auto) {\n continue;\n }\n nested.dependsOn.forEach((key) => deps.add(key));\n }\n for (const dep of deps) {\n appendDependent(cached, dep, entry);\n }\n }\n }\n dependentEntriesCache.set(module, cached);\n }\n return cached.get(handleKey) ?? [];\n};\n\nconst appendDependent = (\n cache: Map<string, StyleEntry[]>,\n key: string,\n entry: StyleEntry\n): void => {\n const list = cache.get(key);\n if (list) {\n list.push(entry);\n return;\n }\n cache.set(key, [entry]);\n};\n\n/** Target, naming mode, registry, and prefix for one {@link StylesCollector}. */\nexport interface StylesCollectorOptions {\n /** Target context (e.g. `artifact` or `stylesheet`). */\n target: StyleTarget;\n /** Desired name mode (`compact` or `readable`). */\n names: StyleNameMode;\n /** Registry modules were authored against; used for auto-collection and compact-name snapshots. */\n registry: StyleRegistry;\n /** Brand prefix forwarded to the name resolver. */\n prefix: string;\n /** When `true`, emit no-op-handle warnings through `warn`. Inherited from `createDistillery({ dev })`. */\n dev?: boolean;\n /** Warning sink for no-op handles. Used only when `dev` is `true`. Defaults to `console.warn`. */\n warn?: (message: string) => void;\n}\n\n/** Reachable entries for one render or one stylesheet. */\nexport class StylesCollector {\n /** The target collection mode. */\n readonly target: StyleTarget;\n /** The naming mode (compact vs readable). */\n readonly names: StyleNameMode;\n /** Associated registry. */\n readonly registry: StyleRegistry;\n /** Emitted class name prefix. */\n readonly prefix: string;\n private readonly dev: boolean;\n private readonly warn: (message: string) => void;\n private readonly entries = new Map<string, StyleEntry>();\n private readonly handles = new Map<string, StyleHandle>();\n private readonly themeDeps = new Set<string>();\n private readonly varDeps = new Set<ContextualVarPath>();\n\n constructor({\n target,\n names,\n registry,\n prefix,\n dev = false,\n warn = (message) => console.warn(message),\n }: StylesCollectorOptions) {\n this.target = target;\n this.names = names;\n this.registry = registry;\n this.prefix = prefix;\n this.dev = dev;\n this.warn = warn;\n }\n\n /**\n * Collects a module's non-variant entries, or one explicit entry.\n *\n * Variant entries stay off this path; collect them via `useHandles`.\n *\n * @param value Module (all non-variant entries), a single entry, or an array of entries.\n */\n use(value: StylesModule | StyleEntry | readonly StyleEntry[]): void {\n if (isReadonlyArray(value)) {\n value.forEach((entry) => this.use(entry));\n return;\n }\n\n if (isStylesModule(value)) {\n // Aggregate deps from non-variant entries only. The module-level\n // `themeDeps`/`varDeps` snapshot would also include variant entries'\n // deps, which would push their var paths into the resolver's compact\n // registry and steal short names from actually-rendered handles.\n for (const entry of value.entries) {\n if (entry.variant) {\n continue;\n }\n if (entry.kind === 'handle' && !this.retainHandle(entry)) {\n continue;\n }\n this.entries.set(entryKey(entry), entry);\n if (entry.kind === 'handle' || entry.kind === 'rule') {\n this.addDeclarationDeps(entry.declarations);\n } else {\n for (const inner of entry.rules) {\n this.addDeclarationDeps(inner.declarations);\n }\n }\n }\n for (const handle of value.handleList) {\n if (handle.variant) {\n continue;\n }\n if (!this.retainHandle(handle)) {\n continue;\n }\n this.handles.set(handle.key, handle);\n }\n return;\n }\n\n this.addEntry(value);\n }\n\n /**\n * Collects every entry on `module`, including variants. Used by the stylesheet target.\n *\n * @param module Module whose entries should all be collected.\n */\n useAllEntries(module: StylesModule): void {\n for (const entry of module.entries) {\n if (entry.kind === 'handle' && !this.retainHandle(entry)) {\n continue;\n }\n this.entries.set(entryKey(entry), entry);\n }\n for (const handle of module.handleList) {\n if (!this.retainHandle(handle)) {\n continue;\n }\n this.handles.set(handle.key, handle);\n }\n module.themeDeps.forEach((path) => this.themeDeps.add(path));\n module.varDeps.forEach((path) => this.varDeps.add(path));\n }\n\n /**\n * Collects handles and auto-includes rules whose selector deps are all present.\n *\n * Media blocks include only inner rules whose deps are met.\n *\n * @param handles Handles resolved during this render pass (e.g. from `resolveClassName`).\n * @returns Handles that were retained. Empty untargeted handles are omitted in compact mode.\n */\n useHandles(handles: readonly StyleHandle[]): readonly StyleHandle[] {\n const retained: StyleHandle[] = [];\n for (const handle of handles) {\n if (!this.retainHandle(handle)) {\n continue;\n }\n retained.push(handle);\n if (this.handles.has(handle.key)) {\n continue;\n }\n this.entries.set(entryKey(handle), handle);\n this.handles.set(handle.key, handle);\n this.addDeclarationDeps(handle.declarations);\n }\n for (const handle of retained) {\n const module = this.registry.module(handle.moduleName);\n if (!module) {\n continue;\n }\n for (const dependent of dependentEntries(module, handle.key)) {\n this.tryActivateDependent(dependent);\n }\n }\n return retained;\n }\n\n /** Collects `auto` rules on `module` whose every selector dependency is already collected. */\n useRulesWhenDepsMet(module: StylesModule): void {\n for (const entry of module.entries) {\n if (entry.kind !== 'rule') {\n continue;\n }\n if (this.entries.has(entryKey(entry))) {\n continue;\n }\n if (this.allDepsMet(entry.dependsOn)) {\n this.addEntry(entry);\n }\n }\n }\n\n private tryActivateDependent(entry: StyleEntry): void {\n if (entry.kind === 'rule') {\n if (!entry.auto) {\n return;\n }\n if (this.entries.has(entryKey(entry))) {\n return;\n }\n if (!this.allDepsMet(entry.dependsOn)) {\n return;\n }\n this.addEntry(entry);\n return;\n }\n if (entry.kind === 'media') {\n const liveRules = entry.rules.filter(\n (rule) => rule.auto && this.allDepsMet(rule.dependsOn)\n );\n if (liveRules.length === 0) {\n return;\n }\n const filtered: StyleMedia =\n liveRules.length === entry.rules.length\n ? entry\n : { ...entry, rules: liveRules };\n this.entries.set(entryKey(filtered), filtered);\n for (const rule of liveRules) {\n this.addDeclarationDeps(rule.declarations);\n }\n }\n }\n\n private allDepsMet(dependsOn: ReadonlySet<string>): boolean {\n for (const dep of dependsOn) {\n if (!this.handles.has(dep)) {\n return false;\n }\n }\n return true;\n }\n\n /** Marks a theme token path as reachable so it appears in the emitted theme block, even if no collected declaration reads it. */\n useThemeVar(path: string): void {\n this.themeDeps.add(path);\n }\n\n /** Creates a {@link StyleNameResolver} scoped to this collector's current dep set. */\n createResolver(): StyleNameResolver {\n const finalized = this.finalizeDeps();\n const snapshot = this.registry.freeze({\n classKeys:\n this.names === 'compact'\n ? [...this.handles.keys()]\n : this.registry.classKeys,\n cssVarKeys: cssVarKeysFrom(finalized),\n });\n return createStyleNameResolver({\n names: this.names,\n prefix: this.prefix,\n classKeys: snapshot.classKeys,\n cssVarKeys: snapshot.cssVarKeys,\n });\n }\n\n /** Collected style entries sorted for emission (base rules before all `@media`/`@container` blocks). */\n get collectedEntries(): readonly StyleEntry[] {\n return [...this.entries.values()].sort(compareEntriesForEmission);\n }\n\n /** Theme token paths that survive reachability; emitted in the theme scope block. */\n get collectedThemeDeps(): ReadonlySet<string> {\n return this.finalizeDeps().theme;\n }\n\n /** Contextual var paths that survive reachability; used by the runtime for compact-name substitution. */\n get collectedVarDeps(): ReadonlySet<ContextualVarPath> {\n return this.finalizeDeps().vars;\n }\n\n // Reachability-aware default-emission set used by the runtime. For a\n // given handle and `${group}` site, returns the keys whose declarations\n // should ship: union of group-keys appearing in `handle.declarations.deps.refs`\n // and in `deps.refs` of every collected rule/media-inner-rule whose\n // selector targets `handle`.\n /**\n * Returns the variable keys within `groupPath` that are reachable from `handle` or from any collected rule targeting it.\n *\n * @param handle Handle whose declaration refs and dependent rules are consulted.\n * @param groupPath Group prefix path (e.g. `vars/chip/look`).\n */\n reachableDefaults(\n handle: StyleHandle,\n groupPath: `vars/${string}`\n ): ReadonlySet<string> {\n const groupPrefix = `${groupPath}/`;\n const reachable = new Set<string>();\n const harvest = (refs: ReadonlySet<ContextualVarPath>): void => {\n for (const path of refs) {\n if (path.startsWith(groupPrefix)) {\n reachable.add(path.slice(groupPrefix.length));\n }\n }\n };\n\n harvest(handle.declarations.deps.refs);\n\n for (const entry of this.entries.values()) {\n if (entry.kind === 'rule') {\n if (entry.dependsOn.has(handle.key)) {\n harvest(entry.declarations.deps.refs);\n }\n continue;\n }\n if (entry.kind === 'media') {\n for (const innerRule of entry.rules) {\n if (innerRule.dependsOn.has(handle.key)) {\n harvest(innerRule.declarations.deps.refs);\n }\n }\n }\n }\n\n return reachable;\n }\n\n // Computes the final theme/var dep sets, folding in default-marker\n // contributions only for keys that survive reachability. Called once per\n // `createResolver()` and per `collectedThemeDeps`/`collectedVarDeps`\n // access; collection mutations between calls re-derive the result.\n private finalizeDeps(): {\n theme: ReadonlySet<string>;\n vars: ReadonlySet<ContextualVarPath>;\n } {\n const theme = new Set<string>(this.themeDeps);\n const vars = new Set<ContextualVarPath>(this.varDeps);\n\n for (const handle of this.handles.values()) {\n for (const group of handle.declarations.deps.defaults) {\n const reachable = this.reachableDefaults(handle, group.groupPath);\n for (const item of group.keys) {\n if (!reachable.has(item.key)) {\n continue;\n }\n vars.add(item.path);\n item.valueDeps.theme.forEach((path) => theme.add(path));\n item.valueDeps.vars.forEach((path) => vars.add(path));\n }\n }\n }\n\n // Default markers inside rule / media-inner-rule declarations don't have\n // a host handle to anchor reachability against. The runtime emits every\n // listed key when rendering such a declaration, so we mirror that here\n // and include all of them in the registry.\n for (const entry of this.entries.values()) {\n if (entry.kind === 'rule') {\n includeAllDefaults(entry.declarations.deps.defaults, theme, vars);\n continue;\n }\n if (entry.kind === 'media') {\n for (const inner of entry.rules) {\n includeAllDefaults(inner.declarations.deps.defaults, theme, vars);\n }\n }\n }\n\n return { theme, vars };\n }\n\n private retainHandle(handle: StyleHandle): boolean {\n if (!isEmptyDeclarations(handle.declarations)) {\n return true;\n }\n if (this.registry.targetsHandle(handle.key)) {\n return true;\n }\n if (this.dev && !warnedHandles.has(handle)) {\n warnedHandles.add(handle);\n this.warn(\n `Style module \"${handle.moduleName}\" handle \"${handle.localName}\" has no declarations and no rule targets it; delete the empty template.`\n );\n }\n return this.names !== 'compact';\n }\n\n private addEntry(entry: StyleEntry): void {\n if (entry.kind === 'handle' && !this.retainHandle(entry)) {\n return;\n }\n this.entries.set(entryKey(entry), entry);\n if (entry.kind === 'handle') {\n this.handles.set(entry.key, entry);\n this.addDeclarationDeps(entry.declarations);\n return;\n }\n if (entry.kind === 'rule') {\n this.addDeclarationDeps(entry.declarations);\n return;\n }\n for (const rule of entry.rules) {\n this.addDeclarationDeps(rule.declarations);\n }\n }\n\n private addDeclarationDeps(declarations: Declarations): void {\n declarations.deps.theme.forEach((path) => this.themeDeps.add(path));\n declarations.deps.vars.forEach((path) => this.varDeps.add(path));\n }\n}\n\nconst includeAllDefaults = (\n defaults: ReadonlyArray<DefaultGroupDeps>,\n theme: Set<string>,\n vars: Set<ContextualVarPath>\n): void => {\n for (const group of defaults) {\n for (const item of group.keys) {\n vars.add(item.path);\n item.valueDeps.theme.forEach((path) => theme.add(path));\n item.valueDeps.vars.forEach((path) => vars.add(path));\n }\n }\n};\n\nconst cssVarKeysFrom = (finalized: {\n theme: ReadonlySet<string>;\n vars: ReadonlySet<ContextualVarPath>;\n}): readonly CssVarPath[] => {\n const keys = new Set<CssVarPath>();\n finalized.theme.forEach((path) => keys.add(path));\n finalized.vars.forEach((path) => keys.add(path));\n return [...keys].sort();\n};\n\nconst entryKey = (entry: StyleEntry): string => {\n if (entry.kind === 'media') {\n return `media/${entry.key}`;\n }\n return entry.key;\n};\n\nconst mediaSortRank = (entry: StyleEntry): number =>\n entry.kind === 'media' ? 1 : 0;\n\nconst localVarOverrideRank = (entry: StyleEntry): number => {\n if (entry.kind === 'media') {\n return 0;\n }\n return entry.declarations.css.some(isLocalVarOverrideMarker) ? 1 : 0;\n};\n\n// Base entries before every `@media`/`@container` block (no specificity). See finding `media-block-ordering`.\n// `${group.set()}` after `${group}` defaults so a stacked override class wins. See finding `local-var-override-ordering`.\nconst compareEntriesForEmission = (a: StyleEntry, b: StyleEntry): number => {\n const rankDelta = mediaSortRank(a) - mediaSortRank(b);\n if (rankDelta !== 0) {\n return rankDelta;\n }\n const varDelta = localVarOverrideRank(a) - localVarOverrideRank(b);\n if (varDelta !== 0) {\n return varDelta;\n }\n if (a.moduleName !== b.moduleName) {\n return a.moduleName.localeCompare(b.moduleName);\n }\n return a.key.localeCompare(b.key);\n};\n\nconst isReadonlyArray = <T>(value: unknown): value is readonly T[] =>\n Array.isArray(value);\n\nconst isStylesModule = (\n value: StylesModule | StyleHandle | StyleRule | StyleMedia\n): value is StylesModule => 'handles' in value && 'handleList' in value;\n"]}
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/collector.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport { isLocalVarOverrideMarker } from './local_vars';\nimport {\n createStyleNameResolver,\n type StyleNameMode,\n type StyleNameResolver,\n type StyleTarget,\n} from './names';\nimport type {\n ContextualVarPath,\n CssVarPath,\n Declarations,\n DefaultGroupDeps,\n StyleEntry,\n StyleHandle,\n StyleMedia,\n StyleRegistry,\n StyleRule,\n StylesModule,\n} from './styles';\nimport { isEmptyDeclarations } from './styles/declarations';\n\nconst warnedHandles = new WeakSet<StyleHandle>();\n\nconst dependentEntriesCache = new WeakMap<\n StylesModule,\n Map<string, StyleEntry[]>\n>();\n\nconst dependentEntries = (\n module: StylesModule,\n handleKey: string\n): readonly StyleEntry[] => {\n let cached = dependentEntriesCache.get(module);\n if (!cached) {\n cached = new Map<string, StyleEntry[]>();\n for (const entry of module.entries) {\n if (entry.kind === 'rule') {\n if (!entry.auto) {\n continue;\n }\n for (const dep of entry.dependsOn) {\n appendDependent(cached, dep, entry);\n }\n continue;\n }\n if (entry.kind === 'media') {\n const deps = new Set<string>();\n for (const nested of entry.rules) {\n if (!nested.auto) {\n continue;\n }\n nested.dependsOn.forEach((key) => deps.add(key));\n }\n for (const dep of deps) {\n appendDependent(cached, dep, entry);\n }\n }\n }\n dependentEntriesCache.set(module, cached);\n }\n return cached.get(handleKey) ?? [];\n};\n\nconst appendDependent = (\n cache: Map<string, StyleEntry[]>,\n key: string,\n entry: StyleEntry\n): void => {\n const list = cache.get(key);\n if (list) {\n list.push(entry);\n return;\n }\n cache.set(key, [entry]);\n};\n\n/** Target, naming mode, registry, and prefix for one {@link StylesCollector}. */\nexport interface StylesCollectorOptions {\n /** Target context (e.g. `artifact` or `stylesheet`). */\n target: StyleTarget;\n /** Desired name mode (`compact` or `readable`). */\n names: StyleNameMode;\n /** Registry modules were authored against; used for auto-collection and compact-name snapshots. */\n registry: StyleRegistry;\n /** Brand prefix forwarded to the name resolver. */\n prefix: string;\n /** When `true`, emit no-op-handle warnings through `warn`. Inherited from `createDistillery({ dev })`. */\n dev?: boolean;\n /** Warning sink for no-op handles. Used only when `dev` is `true`. Defaults to `console.warn`. */\n warn?: (message: string) => void;\n}\n\n/** Reachable entries for one render or one stylesheet. */\nexport class StylesCollector {\n /** The target collection mode. */\n readonly target: StyleTarget;\n /** The naming mode (compact vs readable). */\n readonly names: StyleNameMode;\n /** Associated registry. */\n readonly registry: StyleRegistry;\n /** Emitted class name prefix. */\n readonly prefix: string;\n private readonly dev: boolean;\n private readonly warn: (message: string) => void;\n private readonly entries = new Map<string, StyleEntry>();\n private readonly handles = new Map<string, StyleHandle>();\n private readonly themeDeps = new Set<string>();\n private readonly varDeps = new Set<ContextualVarPath>();\n private readonly listeners = new Set<() => void>();\n private depth = 0;\n private dirty = false;\n\n constructor({\n target,\n names,\n registry,\n prefix,\n dev = false,\n warn = (message) => console.warn(message),\n }: StylesCollectorOptions) {\n this.target = target;\n this.names = names;\n this.registry = registry;\n this.prefix = prefix;\n this.dev = dev;\n this.warn = warn;\n }\n\n /**\n * Collects a module's non-variant entries, or one explicit entry.\n *\n * Variant entries stay off this path; collect them via `useHandles`.\n *\n * @param value Module (all non-variant entries), a single entry, or an array of entries.\n */\n use(value: StylesModule | StyleEntry | readonly StyleEntry[]): void {\n this.batch(() => this.useValue(value));\n }\n\n private useValue(\n value: StylesModule | StyleEntry | readonly StyleEntry[]\n ): void {\n if (isReadonlyArray(value)) {\n value.forEach((entry) => this.use(entry));\n return;\n }\n\n if (isStylesModule(value)) {\n // Aggregate deps from non-variant entries only. The module-level\n // `themeDeps`/`varDeps` snapshot would also include variant entries'\n // deps, which would push their var paths into the resolver's compact\n // registry and steal short names from actually-rendered handles.\n for (const entry of value.entries) {\n if (entry.variant) {\n continue;\n }\n if (entry.kind === 'handle' && !this.retainHandle(entry)) {\n continue;\n }\n this.setEntry(entry);\n if (entry.kind === 'handle' || entry.kind === 'rule') {\n this.addDeclarationDeps(entry.declarations);\n } else {\n for (const inner of entry.rules) {\n this.addDeclarationDeps(inner.declarations);\n }\n }\n }\n for (const handle of value.handleList) {\n if (handle.variant) {\n continue;\n }\n if (!this.retainHandle(handle)) {\n continue;\n }\n this.setHandle(handle);\n }\n return;\n }\n\n this.addEntry(value);\n }\n\n /**\n * Collects every entry on `module`, including variants. Used by the stylesheet target.\n *\n * @param module Module whose entries should all be collected.\n */\n useAllEntries(module: StylesModule): void {\n this.batch(() => {\n for (const entry of module.entries) {\n if (entry.kind === 'handle' && !this.retainHandle(entry)) {\n continue;\n }\n this.setEntry(entry);\n }\n for (const handle of module.handleList) {\n if (!this.retainHandle(handle)) {\n continue;\n }\n this.setHandle(handle);\n }\n this.addDeps(module.themeDeps, module.varDeps);\n });\n }\n\n /**\n * Collects handles and auto-includes rules whose selector deps are all present.\n *\n * Media blocks gain inner rules whose deps are met and keep rules already collected.\n *\n * @param handles Handles resolved during this render pass (e.g. from `resolveClassName`).\n * @returns Handles that were retained. Empty untargeted handles are omitted in compact mode.\n */\n useHandles(handles: readonly StyleHandle[]): readonly StyleHandle[] {\n return this.batch(() => {\n const retained: StyleHandle[] = [];\n for (const handle of handles) {\n if (!this.retainHandle(handle)) {\n continue;\n }\n retained.push(handle);\n if (this.handles.has(handle.key)) {\n continue;\n }\n this.setEntry(handle);\n this.setHandle(handle);\n this.addDeclarationDeps(handle.declarations);\n }\n for (const handle of retained) {\n const module = this.registry.module(handle.moduleName);\n if (!module) {\n continue;\n }\n for (const dependent of dependentEntries(module, handle.key)) {\n this.tryActivateDependent(dependent);\n }\n }\n return retained;\n });\n }\n\n /** Collects `auto` rules on `module` whose every selector dependency is already collected. */\n useRulesWhenDepsMet(module: StylesModule): void {\n this.batch(() => {\n for (const entry of module.entries) {\n if (entry.kind !== 'rule') {\n continue;\n }\n if (this.entries.has(entryKey(entry))) {\n continue;\n }\n if (this.allDepsMet(entry.dependsOn)) {\n this.addEntry(entry);\n }\n }\n });\n }\n\n /**\n * Calls `listener` after a public mutation adds an entry, handle, theme var, or contextual var.\n *\n * Fires at most once per outermost call; nested calls such as `use([a, b])` batch into it.\n *\n * @param listener Called with no arguments after the collection grows.\n * @returns Unsubscribes `listener`.\n */\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n private tryActivateDependent(entry: StyleEntry): void {\n if (entry.kind === 'rule') {\n if (!entry.auto) {\n return;\n }\n if (this.entries.has(entryKey(entry))) {\n return;\n }\n if (!this.allDepsMet(entry.dependsOn)) {\n return;\n }\n this.addEntry(entry);\n return;\n }\n if (entry.kind === 'media') {\n // Add newly live rules; keep rules already collected (e.g. by `use`).\n const existing = this.entries.get(entryKey(entry));\n const collected = new Set<StyleRule>(\n existing?.kind === 'media' ? existing.rules : []\n );\n const rules = entry.rules.filter(\n (rule) =>\n collected.has(rule) || (rule.auto && this.allDepsMet(rule.dependsOn))\n );\n if (rules.length === collected.size) {\n return;\n }\n const filtered: StyleMedia =\n rules.length === entry.rules.length ? entry : { ...entry, rules };\n this.setEntry(filtered);\n for (const rule of rules) {\n this.addDeclarationDeps(rule.declarations);\n }\n }\n }\n\n private allDepsMet(dependsOn: ReadonlySet<string>): boolean {\n for (const dep of dependsOn) {\n if (!this.handles.has(dep)) {\n return false;\n }\n }\n return true;\n }\n\n /** Marks a theme token path as reachable so it appears in the emitted theme block, even if no collected declaration reads it. */\n useThemeVar(path: string): void {\n this.batch(() => this.addDeps([path], []));\n }\n\n /** Creates a {@link StyleNameResolver} scoped to this collector's current dep set. */\n createResolver(): StyleNameResolver {\n const finalized = this.finalizeDeps();\n const snapshot = this.registry.freeze({\n classKeys:\n this.names === 'compact'\n ? [...this.handles.keys()]\n : this.registry.classKeys,\n cssVarKeys: cssVarKeysFrom(finalized),\n });\n return createStyleNameResolver({\n names: this.names,\n prefix: this.prefix,\n classKeys: snapshot.classKeys,\n cssVarKeys: snapshot.cssVarKeys,\n });\n }\n\n /** Collected style entries sorted for emission (base rules before all `@media`/`@container` blocks). */\n get collectedEntries(): readonly StyleEntry[] {\n return [...this.entries.values()].sort(compareEntriesForEmission);\n }\n\n /** Theme token paths that survive reachability; emitted in the theme scope block. */\n get collectedThemeDeps(): ReadonlySet<string> {\n return this.finalizeDeps().theme;\n }\n\n /** Contextual var paths that survive reachability; used by the runtime for compact-name substitution. */\n get collectedVarDeps(): ReadonlySet<ContextualVarPath> {\n return this.finalizeDeps().vars;\n }\n\n // Reachability-aware default-emission set used by the runtime. For a\n // given handle and `${group}` site, returns the keys whose declarations\n // should ship: union of group-keys appearing in `handle.declarations.deps.refs`\n // and in `deps.refs` of every collected rule/media-inner-rule whose\n // selector targets `handle`.\n /**\n * Returns the variable keys within `groupPath` that are reachable from `handle` or from any collected rule targeting it.\n *\n * @param handle Handle whose declaration refs and dependent rules are consulted.\n * @param groupPath Group prefix path (e.g. `vars/chip/look`).\n */\n reachableDefaults(\n handle: StyleHandle,\n groupPath: `vars/${string}`\n ): ReadonlySet<string> {\n const groupPrefix = `${groupPath}/`;\n const reachable = new Set<string>();\n const harvest = (refs: ReadonlySet<ContextualVarPath>): void => {\n for (const path of refs) {\n if (path.startsWith(groupPrefix)) {\n reachable.add(path.slice(groupPrefix.length));\n }\n }\n };\n\n harvest(handle.declarations.deps.refs);\n\n for (const entry of this.entries.values()) {\n if (entry.kind === 'rule') {\n if (entry.dependsOn.has(handle.key)) {\n harvest(entry.declarations.deps.refs);\n }\n continue;\n }\n if (entry.kind === 'media') {\n for (const innerRule of entry.rules) {\n if (innerRule.dependsOn.has(handle.key)) {\n harvest(innerRule.declarations.deps.refs);\n }\n }\n }\n }\n\n return reachable;\n }\n\n // Computes the final theme/var dep sets, folding in default-marker\n // contributions only for keys that survive reachability. Called once per\n // `createResolver()` and per `collectedThemeDeps`/`collectedVarDeps`\n // access; collection mutations between calls re-derive the result.\n private finalizeDeps(): {\n theme: ReadonlySet<string>;\n vars: ReadonlySet<ContextualVarPath>;\n } {\n const theme = new Set<string>(this.themeDeps);\n const vars = new Set<ContextualVarPath>(this.varDeps);\n\n for (const handle of this.handles.values()) {\n for (const group of handle.declarations.deps.defaults) {\n const reachable = this.reachableDefaults(handle, group.groupPath);\n for (const item of group.keys) {\n if (!reachable.has(item.key)) {\n continue;\n }\n vars.add(item.path);\n item.valueDeps.theme.forEach((path) => theme.add(path));\n item.valueDeps.vars.forEach((path) => vars.add(path));\n }\n }\n }\n\n // Default markers inside rule / media-inner-rule declarations don't have\n // a host handle to anchor reachability against. The runtime emits every\n // listed key when rendering such a declaration, so we mirror that here\n // and include all of them in the registry.\n for (const entry of this.entries.values()) {\n if (entry.kind === 'rule') {\n includeAllDefaults(entry.declarations.deps.defaults, theme, vars);\n continue;\n }\n if (entry.kind === 'media') {\n for (const inner of entry.rules) {\n includeAllDefaults(inner.declarations.deps.defaults, theme, vars);\n }\n }\n }\n\n return { theme, vars };\n }\n\n private retainHandle(handle: StyleHandle): boolean {\n if (!isEmptyDeclarations(handle.declarations)) {\n return true;\n }\n if (this.registry.targetsHandle(handle.key)) {\n return true;\n }\n if (this.dev && !warnedHandles.has(handle)) {\n warnedHandles.add(handle);\n this.warn(\n `Style module \"${handle.moduleName}\" handle \"${handle.localName}\" has no declarations and no rule targets it; delete the empty template.`\n );\n }\n return this.names !== 'compact';\n }\n\n private addEntry(entry: StyleEntry): void {\n if (entry.kind === 'handle' && !this.retainHandle(entry)) {\n return;\n }\n this.setEntry(entry);\n if (entry.kind === 'handle') {\n this.setHandle(entry);\n this.addDeclarationDeps(entry.declarations);\n return;\n }\n if (entry.kind === 'rule') {\n this.addDeclarationDeps(entry.declarations);\n return;\n }\n for (const rule of entry.rules) {\n this.addDeclarationDeps(rule.declarations);\n }\n }\n\n private addDeclarationDeps(declarations: Declarations): void {\n this.addDeps(declarations.deps.theme, declarations.deps.vars);\n }\n\n private addDeps(\n theme: Iterable<string>,\n vars: Iterable<ContextualVarPath>\n ): void {\n const before = this.themeDeps.size + this.varDeps.size;\n for (const path of theme) {\n this.themeDeps.add(path);\n }\n for (const path of vars) {\n this.varDeps.add(path);\n }\n if (this.themeDeps.size + this.varDeps.size !== before) {\n this.dirty = true;\n }\n }\n\n // A media entry changes when it gains inner rules.\n private setEntry(entry: StyleEntry): void {\n const key = entryKey(entry);\n const existing = this.entries.get(key);\n this.entries.set(key, entry);\n if (\n !existing ||\n (existing.kind === 'media' &&\n entry.kind === 'media' &&\n existing.rules.length !== entry.rules.length)\n ) {\n this.dirty = true;\n }\n }\n\n private setHandle(handle: StyleHandle): void {\n if (!this.handles.has(handle.key)) {\n this.dirty = true;\n }\n this.handles.set(handle.key, handle);\n }\n\n // Listeners run once the outermost public mutation returns.\n private batch<T>(mutate: () => T): T {\n this.depth += 1;\n try {\n return mutate();\n } finally {\n this.depth -= 1;\n if (this.depth === 0 && this.dirty) {\n this.dirty = false;\n for (const listener of [...this.listeners]) {\n listener();\n }\n }\n }\n }\n}\n\nconst includeAllDefaults = (\n defaults: ReadonlyArray<DefaultGroupDeps>,\n theme: Set<string>,\n vars: Set<ContextualVarPath>\n): void => {\n for (const group of defaults) {\n for (const item of group.keys) {\n vars.add(item.path);\n item.valueDeps.theme.forEach((path) => theme.add(path));\n item.valueDeps.vars.forEach((path) => vars.add(path));\n }\n }\n};\n\nconst cssVarKeysFrom = (finalized: {\n theme: ReadonlySet<string>;\n vars: ReadonlySet<ContextualVarPath>;\n}): readonly CssVarPath[] => {\n const keys = new Set<CssVarPath>();\n finalized.theme.forEach((path) => keys.add(path));\n finalized.vars.forEach((path) => keys.add(path));\n return [...keys].sort();\n};\n\nconst entryKey = (entry: StyleEntry): string => {\n if (entry.kind === 'media') {\n return `media/${entry.key}`;\n }\n return entry.key;\n};\n\nconst mediaSortRank = (entry: StyleEntry): number =>\n entry.kind === 'media' ? 1 : 0;\n\nconst localVarOverrideRank = (entry: StyleEntry): number => {\n if (entry.kind === 'media') {\n return 0;\n }\n return entry.declarations.css.some(isLocalVarOverrideMarker) ? 1 : 0;\n};\n\n// Base entries before every `@media`/`@container` block (no specificity). See finding `media-block-ordering`.\n// `${group.set()}` after `${group}` defaults so a stacked override class wins. See finding `local-var-override-ordering`.\nconst compareEntriesForEmission = (a: StyleEntry, b: StyleEntry): number => {\n const rankDelta = mediaSortRank(a) - mediaSortRank(b);\n if (rankDelta !== 0) {\n return rankDelta;\n }\n const varDelta = localVarOverrideRank(a) - localVarOverrideRank(b);\n if (varDelta !== 0) {\n return varDelta;\n }\n if (a.moduleName !== b.moduleName) {\n return a.moduleName.localeCompare(b.moduleName);\n }\n return a.key.localeCompare(b.key);\n};\n\nconst isReadonlyArray = <T>(value: unknown): value is readonly T[] =>\n Array.isArray(value);\n\nconst isStylesModule = (\n value: StylesModule | StyleHandle | StyleRule | StyleMedia\n): value is StylesModule => 'handles' in value && 'handleList' in value;\n"]}
|
package/dist/cjs/dom_sink.js
CHANGED
|
@@ -10,7 +10,7 @@ exports.createDomSink = void 0;
|
|
|
10
10
|
/**
|
|
11
11
|
* One managed `<style>` element, rewritten on each flush.
|
|
12
12
|
*/
|
|
13
|
-
const createDomSink = ({ document, schedule = queueMicrotask, }) => {
|
|
13
|
+
const createDomSink = ({ document, parent, schedule = queueMicrotask, }) => {
|
|
14
14
|
let element = null;
|
|
15
15
|
let dirty = false;
|
|
16
16
|
let latestRender = null;
|
|
@@ -21,7 +21,7 @@ const createDomSink = ({ document, schedule = queueMicrotask, }) => {
|
|
|
21
21
|
}
|
|
22
22
|
if (!element) {
|
|
23
23
|
element = document.createElement('style');
|
|
24
|
-
document.head.appendChild(element);
|
|
24
|
+
(parent ?? document.head).appendChild(element);
|
|
25
25
|
}
|
|
26
26
|
element.textContent = latestRender();
|
|
27
27
|
};
|
package/dist/cjs/dom_sink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom_sink.js","sourceRoot":"","sources":["../../src/dom_sink.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"dom_sink.js","sourceRoot":"","sources":["../../src/dom_sink.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAwBH;;GAEG;AACI,MAAM,aAAa,GAAG,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,cAAc,GACJ,EAAa,EAAE;IACpC,IAAI,OAAO,GAA4B,IAAI,CAAC;IAC5C,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,YAAY,GAA0B,IAAI,CAAC;IAE/C,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,KAAK,GAAG,KAAK,CAAC;QACd,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO;QACL,UAAU,CAAC,MAAM;YACf,YAAY,GAAG,MAAM,CAAC;YACtB,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,KAAK,GAAG,IAAI,CAAC;YACb,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AA/BW,QAAA,aAAa,iBA+BxB","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport type { StyleElementLike, StyleParentLike, StyleSink } from './sink';\n\nexport type { StyleElementLike, StyleParentLike } from './sink';\n\n/** Minimal interface for a DOM `Document` able to create and append style tags. */\nexport interface DocumentLike {\n /** Creates a `<style>` element. */\n createElement(tagName: 'style'): StyleElementLike;\n /** Default parent for the created style element. */\n readonly head: StyleParentLike;\n}\n\n/** Host document and optional flush scheduler for a `<style>` sink. */\nexport interface CreateDomSinkOptions {\n /** Document that creates the style element. */\n document: DocumentLike;\n /** Node that receives the style element, e.g. a `ShadowRoot`. Defaults to `document.head`. */\n parent?: StyleParentLike;\n /** Defers the flush. Defaults to `queueMicrotask`. */\n schedule?: (flush: () => void) => void;\n}\n\n/**\n * One managed `<style>` element, rewritten on each flush.\n */\nexport const createDomSink = ({\n document,\n parent,\n schedule = queueMicrotask,\n}: CreateDomSinkOptions): StyleSink => {\n let element: StyleElementLike | null = null;\n let dirty = false;\n let latestRender: (() => string) | null = null;\n\n const flush = (): void => {\n dirty = false;\n if (!latestRender) {\n return;\n }\n if (!element) {\n element = document.createElement('style');\n (parent ?? document.head).appendChild(element);\n }\n element.textContent = latestRender();\n };\n\n return {\n invalidate(render) {\n latestRender = render;\n if (dirty) {\n return;\n }\n dirty = true;\n schedule(flush);\n },\n };\n};\n"]}
|
package/dist/cjs/emotion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emotion.js","sourceRoot":"","sources":["../../src/emotion.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport type { Distillery } from './engine';\nimport { contentHash64 } from './hash';\nimport { flattenTemplate, isHandleLike, type TemplateSlice } from './nesting';\nimport {\n globalStylesFromFlattened,\n pendingHandleFromFlattened,\n type StyleHandle,\n type StyleRegistry,\n type StylesModule,\n} from './styles';\n\nexport {\n createDomSink,\n type CreateDomSinkOptions,\n type DocumentLike,\n type StyleElementLike,\n} from './dom_sink';\n\n/** Receives stylesheet invalidation from Emotion compat modules. */\nexport interface StyleSink {\n /** Marks the sink dirty. `render` produces the current stylesheet when it flushes. */\n invalidate(render: () => string): void;\n}\n\n/** Shared sink for Emotion compat modules on one registry. */\nexport interface CreateEmotionOptions {\n /** Notified when a compat module registers. Shared across `createEmotion` calls on the same registry. */\n sink?: StyleSink;\n}\n\n/** Style handle that stringifies to its readable class name. */\nexport interface EmotionCss extends StyleHandle {\n /** Stringifies to the readable class name. */\n toString(): string;\n /** Template interpolation; same as {@link EmotionCss.toString}. */\n [Symbol.toPrimitive](hint: string): string;\n}\n\n/** One `cx(...)` argument: a class, handle, list, or truthy map. */\nexport type ClassNameArg =\n | string\n | number\n | false\n | null\n | undefined\n | EmotionCss\n | StyleHandle\n | ClassNameArg[]\n | { readonly [className: string]: boolean };\n\n/** Emotion-shaped authoring API bound to one Distillery registry. */\nexport interface Emotion {\n /** Authors styles and returns a handle that can be used directly or passed to `cx`. */\n css(strings: TemplateStringsArray, ...values: readonly unknown[]): EmotionCss;\n /** Combines handles, conditional classes, and plain strings into a space-separated string. */\n cx(...args: readonly ClassNameArg[]): string;\n /** Defines styles that apply globally (e.g. `body`, `html`). */\n injectGlobal(\n strings: TemplateStringsArray,\n ...values: readonly unknown[]\n ): void;\n /** Emits the full CSS for all generated emotion styles. */\n stylesheet(): string;\n /** Returns the underlying modules backing `injectGlobal` calls. */\n globalModules(): readonly StylesModule[];\n}\n\n/** Per-registry Emotion compat cache. */\ninterface EmotionState {\n /** `css` handles keyed by source hash. */\n readonly wrappers: Map<string, EmotionCss>;\n /** Original templates for inlining nested compat handles. */\n readonly rawSources: Map<string, TemplateSlice>;\n /** Module name → canonical source hash. */\n readonly canonicalByModule: Map<string, string>;\n /** Modules produced by `injectGlobal`. */\n readonly globals: StylesModule[];\n /** Handles created by this registry's Emotion instance. */\n readonly brand: WeakSet<object>;\n /** Sinks notified when a compat module registers. */\n readonly sinks: Set<StyleSink>;\n}\n\nconst stateByRegistry = new WeakMap<StyleRegistry, EmotionState>();\n\nconst stateFor = (registry: StyleRegistry): EmotionState => {\n let state = stateByRegistry.get(registry);\n if (!state) {\n state = {\n wrappers: new Map(),\n rawSources: new Map(),\n canonicalByModule: new Map(),\n globals: [],\n brand: new WeakSet(),\n sinks: new Set(),\n };\n stateByRegistry.set(registry, state);\n }\n return state;\n};\n\n/**\n * `@emotion/css`-shaped API over a distillery.\n *\n * `String(css\\`...\\`)` is the readable class name and does not collect. Passing the wrapper through `resolveClassName` collects and compacts like a native handle.\n *\n * @param distillery Bound distillery that owns the underlying registry.\n * @param options Optional sink for DOM injection.\n */\nexport const createEmotion = <TTokens>(\n distillery: Distillery<TTokens>,\n options: CreateEmotionOptions = {}\n): Emotion => {\n const { registry } = distillery;\n const state = stateFor(registry);\n\n const stylesheet = (): string =>\n distillery.renderStyles(distillery.stylesheetCollector('readable'));\n\n const invalidateSinks = (): void => {\n for (const sink of state.sinks) {\n sink.invalidate(stylesheet);\n }\n };\n\n if (options.sink) {\n state.sinks.add(options.sink);\n // Catch a late-attached sink up to styles already registered on this\n // registry: cached `css`/`injectGlobal` calls return early without\n // invalidating, so without this the managed `<style>` would miss every\n // style registered before the sink was attached.\n options.sink.invalidate(stylesheet);\n }\n\n const inlineValue = (\n value: unknown,\n position: 'selector' | 'statement'\n ): TemplateSlice | null => {\n if (position !== 'statement' || !isBranded(state, value)) {\n return null;\n }\n return state.rawSources.get((value as StyleHandle).key) ?? null;\n };\n\n const css = (\n strings: TemplateStringsArray,\n ...values: readonly unknown[]\n ): EmotionCss => {\n assertTemplate(strings, 'css');\n const hash = contentHash64(strings, values);\n const cached = state.wrappers.get(hash);\n if (cached) {\n return cached;\n }\n const moduleName = `css-${hash}`;\n const canonical = canonicalKey(strings, values);\n detectCollision(state, moduleName, canonical);\n\n const flat = flattenTemplate(strings, values, {\n mode: 'self',\n inlineValue,\n });\n const pending = pendingHandleFromFlattened(flat);\n const module = distillery.createStyleModule(moduleName, () => ({\n root: pending,\n }));\n const handle = module.handles.root;\n\n state.rawSources.set(handle.key, {\n strings: [...strings],\n values: [...values],\n });\n const wrapper = makeWrapper(handle);\n state.brand.add(wrapper);\n state.wrappers.set(hash, wrapper);\n state.canonicalByModule.set(moduleName, canonical);\n invalidateSinks();\n return wrapper;\n };\n\n const injectGlobal = (\n strings: TemplateStringsArray,\n ...values: readonly unknown[]\n ): void => {\n assertTemplate(strings, 'injectGlobal');\n const hash = contentHash64(strings, values);\n const moduleName = `global-${hash}`;\n if (registry.module(moduleName)) {\n return;\n }\n const canonical = canonicalKey(strings, values);\n detectCollision(state, moduleName, canonical);\n\n const flat = flattenTemplate(strings, values, {\n mode: 'global',\n inlineValue,\n });\n const module = distillery.createStyleModule(moduleName, () =>\n globalStylesFromFlattened(flat)\n );\n state.canonicalByModule.set(moduleName, canonical);\n state.globals.push(module);\n invalidateSinks();\n };\n\n const cx = (...args: readonly ClassNameArg[]): string => {\n const classes: string[] = [];\n const walk = (arg: ClassNameArg): void => {\n if (!arg) {\n return;\n }\n if (typeof arg === 'string') {\n classes.push(arg);\n return;\n }\n if (typeof arg === 'number') {\n classes.push(String(arg));\n return;\n }\n if (Array.isArray(arg)) {\n arg.forEach(walk);\n return;\n }\n if (isBranded(state, arg)) {\n classes.push(String(arg));\n return;\n }\n if (isHandleLike(arg)) {\n classes.push(arg.readableName);\n return;\n }\n for (const [className, enabled] of Object.entries(arg)) {\n if (enabled) {\n classes.push(className);\n }\n }\n };\n args.forEach(walk);\n return classes.join(' ');\n };\n\n return {\n css,\n cx,\n injectGlobal,\n stylesheet,\n globalModules: () => [...state.globals],\n };\n};\n\nconst makeWrapper = (handle: StyleHandle): EmotionCss => {\n const readable = handle.readableName;\n const asString = (): string => readable;\n // Spread copy keeps `resolveClassName` (closed over the original handle) and\n // `key` intact so collector dedupe and compaction work unchanged.\n const wrapper = { ...handle } as EmotionCss & {\n toString: () => string;\n [Symbol.toPrimitive]: () => string;\n };\n wrapper.toString = asString;\n wrapper[Symbol.toPrimitive] = asString;\n return wrapper;\n};\n\nconst isBranded = (state: EmotionState, value: unknown): value is EmotionCss =>\n Boolean(value && typeof value === 'object' && state.brand.has(value));\n\nconst assertTemplate = (strings: unknown, fn: string): void => {\n if (!Array.isArray(strings) || !('raw' in (strings as object))) {\n throw new Error(\n `${fn} is a template tag; object styles (${fn}({...})) are not supported.`\n );\n }\n};\n\nconst detectCollision = (\n state: EmotionState,\n moduleName: string,\n canonical: string\n): void => {\n const prior = state.canonicalByModule.get(moduleName);\n if (prior !== undefined && prior !== canonical) {\n throw new Error(\n `Content-hash collision for \"${moduleName}\"; two distinct templates hashed to the same name.`\n );\n }\n};\n\n// A cheap, exact collision tripwire independent of the (lossy) hash. NUL-joins\n// strings and String()s values — good enough because it is only ever compared\n// against another canonical string for the same module name.\nconst canonicalKey = (\n strings: readonly string[],\n values: readonly unknown[]\n): string => {\n const segments: string[] = [];\n strings.forEach((part, index) => {\n segments.push(part);\n if (index < values.length) {\n segments.push(String(values[index]));\n }\n });\n return segments.join('\\u0000');\n};\n"]}
|
|
1
|
+
{"version":3,"file":"emotion.js","sourceRoot":"","sources":["../../src/emotion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,iCAAuC;AACvC,uCAA8E;AAE9E,qCAMkB;AAElB,uCAMoB;AALlB,yGAAA,aAAa,OAAA;AAmEf,MAAM,eAAe,GAAG,IAAI,OAAO,EAA+B,CAAC;AAEnE,MAAM,QAAQ,GAAG,CAAC,QAAuB,EAAgB,EAAE;IACzD,IAAI,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG;YACN,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,UAAU,EAAE,IAAI,GAAG,EAAE;YACrB,iBAAiB,EAAE,IAAI,GAAG,EAAE;YAC5B,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,IAAI,OAAO,EAAE;YACpB,KAAK,EAAE,IAAI,GAAG,EAAE;SACjB,CAAC;QACF,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;GAOG;AACI,MAAM,aAAa,GAAG,CAC3B,UAA+B,EAC/B,UAAgC,EAAE,EACzB,EAAE;IACX,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAG,GAAW,EAAE,CAC9B,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IAEtE,MAAM,eAAe,GAAG,GAAS,EAAE;QACjC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,qEAAqE;QACrE,mEAAmE;QACnE,uEAAuE;QACvE,iDAAiD;QACjD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,WAAW,GAAG,CAClB,KAAc,EACd,QAAkC,EACZ,EAAE;QACxB,IAAI,QAAQ,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAE,KAAqB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CACV,OAA6B,EAC7B,GAAG,MAA0B,EACjB,EAAE;QACd,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAA,oBAAa,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,IAAI,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,IAAA,yBAAe,EAAC,OAAO,EAAE,MAAM,EAAE;YAC5C,IAAI,EAAE,MAAM;YACZ,WAAW;SACZ,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,mCAA0B,EAAC,IAAI,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7D,IAAI,EAAE,OAAO;SACd,CAAC,CAAC,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAEnC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;YAC/B,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;YACrB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;SACpB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACnD,eAAe,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CACnB,OAA6B,EAC7B,GAAG,MAA0B,EACvB,EAAE;QACR,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,IAAA,oBAAa,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,IAAA,yBAAe,EAAC,OAAO,EAAE,MAAM,EAAE;YAC5C,IAAI,EAAE,QAAQ;YACd,WAAW;SACZ,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,EAAE,CAC3D,IAAA,kCAAyB,EAAC,IAAI,CAAC,CAChC,CAAC;QACF,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACnD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,eAAe,EAAE,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,EAAE,GAAG,CAAC,GAAG,IAA6B,EAAU,EAAE;QACtD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,CAAC,GAAiB,EAAQ,EAAE;YACvC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,IAAI,IAAA,sBAAY,EAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO;QACL,GAAG;QACH,EAAE;QACF,YAAY;QACZ,UAAU;QACV,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;KACxC,CAAC;AACJ,CAAC,CAAC;AA3IW,QAAA,aAAa,iBA2IxB;AAEF,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAc,EAAE;IACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;IACrC,MAAM,QAAQ,GAAG,GAAW,EAAE,CAAC,QAAQ,CAAC;IACxC,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAG1B,CAAC;IACF,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,KAAc,EAAuB,EAAE,CAC7E,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAExE,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,EAAU,EAAQ,EAAE;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,IAAK,OAAkB,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,GAAG,EAAE,sCAAsC,EAAE,6BAA6B,CAC3E,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACtB,KAAmB,EACnB,UAAkB,EAClB,SAAiB,EACX,EAAE;IACR,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,+BAA+B,UAAU,oDAAoD,CAC9F,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,+EAA+E;AAC/E,8EAA8E;AAC9E,6DAA6D;AAC7D,MAAM,YAAY,GAAG,CACnB,OAA0B,EAC1B,MAA0B,EAClB,EAAE;IACV,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC,CAAC","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport type { Distillery } from './engine';\nimport { contentHash64 } from './hash';\nimport { flattenTemplate, isHandleLike, type TemplateSlice } from './nesting';\nimport type { StyleSink } from './sink';\nimport {\n globalStylesFromFlattened,\n pendingHandleFromFlattened,\n type StyleHandle,\n type StyleRegistry,\n type StylesModule,\n} from './styles';\n\nexport {\n createDomSink,\n type CreateDomSinkOptions,\n type DocumentLike,\n type StyleElementLike,\n type StyleParentLike,\n} from './dom_sink';\nexport type { StyleSink } from './sink';\n\n/** Shared sink for Emotion compat modules on one registry. */\nexport interface CreateEmotionOptions {\n /** Notified when a compat module registers. Shared across `createEmotion` calls on the same registry. */\n sink?: StyleSink;\n}\n\n/** Style handle that stringifies to its readable class name. */\nexport interface EmotionCss extends StyleHandle {\n /** Stringifies to the readable class name. */\n toString(): string;\n /** Template interpolation; same as {@link EmotionCss.toString}. */\n [Symbol.toPrimitive](hint: string): string;\n}\n\n/** One `cx(...)` argument: a class, handle, list, or truthy map. */\nexport type ClassNameArg =\n | string\n | number\n | false\n | null\n | undefined\n | EmotionCss\n | StyleHandle\n | ClassNameArg[]\n | { readonly [className: string]: boolean };\n\n/** Emotion-shaped authoring API bound to one Distillery registry. */\nexport interface Emotion {\n /** Authors styles and returns a handle that can be used directly or passed to `cx`. */\n css(strings: TemplateStringsArray, ...values: readonly unknown[]): EmotionCss;\n /** Combines handles, conditional classes, and plain strings into a space-separated string. */\n cx(...args: readonly ClassNameArg[]): string;\n /** Defines styles that apply globally (e.g. `body`, `html`). */\n injectGlobal(\n strings: TemplateStringsArray,\n ...values: readonly unknown[]\n ): void;\n /** Emits the full CSS for all generated emotion styles. */\n stylesheet(): string;\n /** Returns the underlying modules backing `injectGlobal` calls. */\n globalModules(): readonly StylesModule[];\n}\n\n/** Per-registry Emotion compat cache. */\ninterface EmotionState {\n /** `css` handles keyed by source hash. */\n readonly wrappers: Map<string, EmotionCss>;\n /** Original templates for inlining nested compat handles. */\n readonly rawSources: Map<string, TemplateSlice>;\n /** Module name → canonical source hash. */\n readonly canonicalByModule: Map<string, string>;\n /** Modules produced by `injectGlobal`. */\n readonly globals: StylesModule[];\n /** Handles created by this registry's Emotion instance. */\n readonly brand: WeakSet<object>;\n /** Sinks notified when a compat module registers. */\n readonly sinks: Set<StyleSink>;\n}\n\nconst stateByRegistry = new WeakMap<StyleRegistry, EmotionState>();\n\nconst stateFor = (registry: StyleRegistry): EmotionState => {\n let state = stateByRegistry.get(registry);\n if (!state) {\n state = {\n wrappers: new Map(),\n rawSources: new Map(),\n canonicalByModule: new Map(),\n globals: [],\n brand: new WeakSet(),\n sinks: new Set(),\n };\n stateByRegistry.set(registry, state);\n }\n return state;\n};\n\n/**\n * `@emotion/css`-shaped API over a distillery.\n *\n * `String(css\\`...\\`)` is the readable class name and does not collect. Passing the wrapper through `resolveClassName` collects and compacts like a native handle.\n *\n * @param distillery Bound distillery that owns the underlying registry.\n * @param options Optional sink for DOM injection.\n */\nexport const createEmotion = <TTokens>(\n distillery: Distillery<TTokens>,\n options: CreateEmotionOptions = {}\n): Emotion => {\n const { registry } = distillery;\n const state = stateFor(registry);\n\n const stylesheet = (): string =>\n distillery.renderStyles(distillery.stylesheetCollector('readable'));\n\n const invalidateSinks = (): void => {\n for (const sink of state.sinks) {\n sink.invalidate(stylesheet);\n }\n };\n\n if (options.sink) {\n state.sinks.add(options.sink);\n // Catch a late-attached sink up to styles already registered on this\n // registry: cached `css`/`injectGlobal` calls return early without\n // invalidating, so without this the managed `<style>` would miss every\n // style registered before the sink was attached.\n options.sink.invalidate(stylesheet);\n }\n\n const inlineValue = (\n value: unknown,\n position: 'selector' | 'statement'\n ): TemplateSlice | null => {\n if (position !== 'statement' || !isBranded(state, value)) {\n return null;\n }\n return state.rawSources.get((value as StyleHandle).key) ?? null;\n };\n\n const css = (\n strings: TemplateStringsArray,\n ...values: readonly unknown[]\n ): EmotionCss => {\n assertTemplate(strings, 'css');\n const hash = contentHash64(strings, values);\n const cached = state.wrappers.get(hash);\n if (cached) {\n return cached;\n }\n const moduleName = `css-${hash}`;\n const canonical = canonicalKey(strings, values);\n detectCollision(state, moduleName, canonical);\n\n const flat = flattenTemplate(strings, values, {\n mode: 'self',\n inlineValue,\n });\n const pending = pendingHandleFromFlattened(flat);\n const module = distillery.createStyleModule(moduleName, () => ({\n root: pending,\n }));\n const handle = module.handles.root;\n\n state.rawSources.set(handle.key, {\n strings: [...strings],\n values: [...values],\n });\n const wrapper = makeWrapper(handle);\n state.brand.add(wrapper);\n state.wrappers.set(hash, wrapper);\n state.canonicalByModule.set(moduleName, canonical);\n invalidateSinks();\n return wrapper;\n };\n\n const injectGlobal = (\n strings: TemplateStringsArray,\n ...values: readonly unknown[]\n ): void => {\n assertTemplate(strings, 'injectGlobal');\n const hash = contentHash64(strings, values);\n const moduleName = `global-${hash}`;\n if (registry.module(moduleName)) {\n return;\n }\n const canonical = canonicalKey(strings, values);\n detectCollision(state, moduleName, canonical);\n\n const flat = flattenTemplate(strings, values, {\n mode: 'global',\n inlineValue,\n });\n const module = distillery.createStyleModule(moduleName, () =>\n globalStylesFromFlattened(flat)\n );\n state.canonicalByModule.set(moduleName, canonical);\n state.globals.push(module);\n invalidateSinks();\n };\n\n const cx = (...args: readonly ClassNameArg[]): string => {\n const classes: string[] = [];\n const walk = (arg: ClassNameArg): void => {\n if (!arg) {\n return;\n }\n if (typeof arg === 'string') {\n classes.push(arg);\n return;\n }\n if (typeof arg === 'number') {\n classes.push(String(arg));\n return;\n }\n if (Array.isArray(arg)) {\n arg.forEach(walk);\n return;\n }\n if (isBranded(state, arg)) {\n classes.push(String(arg));\n return;\n }\n if (isHandleLike(arg)) {\n classes.push(arg.readableName);\n return;\n }\n for (const [className, enabled] of Object.entries(arg)) {\n if (enabled) {\n classes.push(className);\n }\n }\n };\n args.forEach(walk);\n return classes.join(' ');\n };\n\n return {\n css,\n cx,\n injectGlobal,\n stylesheet,\n globalModules: () => [...state.globals],\n };\n};\n\nconst makeWrapper = (handle: StyleHandle): EmotionCss => {\n const readable = handle.readableName;\n const asString = (): string => readable;\n // Spread copy keeps `resolveClassName` (closed over the original handle) and\n // `key` intact so collector dedupe and compaction work unchanged.\n const wrapper = { ...handle } as EmotionCss & {\n toString: () => string;\n [Symbol.toPrimitive]: () => string;\n };\n wrapper.toString = asString;\n wrapper[Symbol.toPrimitive] = asString;\n return wrapper;\n};\n\nconst isBranded = (state: EmotionState, value: unknown): value is EmotionCss =>\n Boolean(value && typeof value === 'object' && state.brand.has(value));\n\nconst assertTemplate = (strings: unknown, fn: string): void => {\n if (!Array.isArray(strings) || !('raw' in (strings as object))) {\n throw new Error(\n `${fn} is a template tag; object styles (${fn}({...})) are not supported.`\n );\n }\n};\n\nconst detectCollision = (\n state: EmotionState,\n moduleName: string,\n canonical: string\n): void => {\n const prior = state.canonicalByModule.get(moduleName);\n if (prior !== undefined && prior !== canonical) {\n throw new Error(\n `Content-hash collision for \"${moduleName}\"; two distinct templates hashed to the same name.`\n );\n }\n};\n\n// A cheap, exact collision tripwire independent of the (lossy) hash. NUL-joins\n// strings and String()s values — good enough because it is only ever compared\n// against another canonical string for the same module name.\nconst canonicalKey = (\n strings: readonly string[],\n values: readonly unknown[]\n): string => {\n const segments: string[] = [];\n strings.forEach((part, index) => {\n segments.push(part);\n if (index < values.length) {\n segments.push(String(values[index]));\n }\n });\n return segments.join('\\u0000');\n};\n"]}
|
package/dist/cjs/engine.js
CHANGED
|
@@ -38,6 +38,14 @@ const createDistillery = (options) => {
|
|
|
38
38
|
: {}),
|
|
39
39
|
};
|
|
40
40
|
const registry = new styles_1.StyleRegistry(prefix, (0, styles_1.readableVarOwnersFromEnvironment)(environment), sharedVars ?? new Set());
|
|
41
|
+
const artifactCollector = (names, collectorOptions) => new collector_1.StylesCollector({
|
|
42
|
+
target: 'artifact',
|
|
43
|
+
names,
|
|
44
|
+
registry,
|
|
45
|
+
prefix,
|
|
46
|
+
dev,
|
|
47
|
+
...(collectorOptions?.warn ? { warn: collectorOptions.warn } : {}),
|
|
48
|
+
});
|
|
41
49
|
return {
|
|
42
50
|
environment,
|
|
43
51
|
tokens,
|
|
@@ -49,14 +57,7 @@ const createDistillery = (options) => {
|
|
|
49
57
|
dev,
|
|
50
58
|
createStyleModule: (name, factory) => (0, styles_1.createStyleModuleWithEnvironment)(environment, registry, name, factory),
|
|
51
59
|
primitiveStyles: (name, factory) => (0, styles_1.createStyleModuleWithEnvironment)(environment, registry, name, ({ css: style, tokens: moduleTokens }) => factory({ style, tokens: moduleTokens })),
|
|
52
|
-
artifactCollector
|
|
53
|
-
target: 'artifact',
|
|
54
|
-
names,
|
|
55
|
-
registry,
|
|
56
|
-
prefix,
|
|
57
|
-
dev,
|
|
58
|
-
...(options?.warn ? { warn: options.warn } : {}),
|
|
59
|
-
}),
|
|
60
|
+
artifactCollector,
|
|
60
61
|
stylesheetCollector: (names = 'readable', options) => {
|
|
61
62
|
const collector = new collector_1.StylesCollector({
|
|
62
63
|
target: 'stylesheet',
|
|
@@ -71,6 +72,21 @@ const createDistillery = (options) => {
|
|
|
71
72
|
}
|
|
72
73
|
return collector;
|
|
73
74
|
},
|
|
75
|
+
liveCollection: ({ sink, render, warn } = {}) => {
|
|
76
|
+
const collector = artifactCollector('readable', warn ? { warn } : {});
|
|
77
|
+
const css = () => (0, runtime_1.renderStyles)(environment, collector, undefined, render);
|
|
78
|
+
if (sink) {
|
|
79
|
+
collector.subscribe(() => sink.invalidate(css));
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
collector,
|
|
83
|
+
resolveClassName: (...handles) => collector
|
|
84
|
+
.useHandles(handles)
|
|
85
|
+
.map((handle) => handle.readableName)
|
|
86
|
+
.join(' '),
|
|
87
|
+
css,
|
|
88
|
+
};
|
|
89
|
+
},
|
|
74
90
|
renderStyles: (collector, resolver, renderOptions) => (0, runtime_1.renderStyles)(environment, collector, resolver, renderOptions),
|
|
75
91
|
createNameResolver: (resolverOptions) => (0, names_1.createStyleNameResolver)({ ...resolverOptions, prefix }),
|
|
76
92
|
};
|