Skip to content

Commit 236aa5b

Browse files
committed
wip on remapMetaSelectors
1 parent 6fd05fe commit 236aa5b

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

packages/container-query-meta-builder/src/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import objectAssign from "object-assign";
22
import isValueUsingContainerUnits from "./isValueUsingContainerUnits";
33
import getConditionsFromQueryParams from "./getConditionsFromQueryParams";
4+
import remapMetaSelectors from "./remapMetaSelectors";
5+
6+
export { remapMetaSelectors };
47

58
export const CONDITIONS = "a";
69
export const ELEMENTS = "b";

packages/container-query-meta-builder/src/remapMetaSelectors.js

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { SELECTOR, QUERIES, ELEMENTS } from "./index";
2+
13
/**
24
* Runs through all selectors of a meta object.
35
* @param {{}} meta
@@ -30,8 +32,9 @@ const mapMetaSelectors = (meta, cb) => {
3032
* @return {{}}
3133
*/
3234
const remapMetaSelectors = (rawMeta, styles) => {
33-
// If meta is a string, then assume it's from a css-loader export
34-
// todo trim quotations instead of just slicing
35+
// If meta is a string, then assume it's from a css-loader export.
36+
// Unfortunately css-loader will add quotations around the exported JSON, so
37+
// we need to trim that.
3538
const meta =
3639
typeof rawMeta === "string" ? JSON.parse(rawMeta.slice(1, -1)) : rawMeta;
3740

@@ -51,13 +54,27 @@ const remapMetaSelectors = (rawMeta, styles) => {
5154
*/
5255
const getMappedCssClass = selector => `.${styles[selector.slice(1)]}`;
5356

54-
mapMetaSelectors(meta, selector => {
55-
if (!hasSelectorInStyles(selector)) {
56-
return selector;
57-
}
57+
// We need to differentiate between single- and multi container mode here, as
58+
// the meta object's structure would be slightly different.
59+
if (meta[SELECTOR]) {
60+
mapMetaSelectors(meta, selector => {
61+
if (!hasSelectorInStyles(selector)) {
62+
return selector;
63+
}
5864

59-
return getMappedCssClass(selector);
60-
});
65+
return getMappedCssClass(selector);
66+
});
67+
} else {
68+
for (let selector of Object.keys(meta)) {
69+
mapMetaSelectors(meta[selector], selector => {
70+
if (!hasSelectorInStyles(selector)) {
71+
return selector;
72+
}
73+
74+
return getMappedCssClass(selector);
75+
});
76+
}
77+
}
6178

6279
return meta;
6380
};

0 commit comments

Comments
 (0)