entangle-ui 0.6.2 → 0.7.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.
Files changed (152) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +5 -3
  3. package/dist/esm/_virtual/_commonjsHelpers.js +6 -0
  4. package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -0
  5. package/dist/esm/_virtual/cssesc.js +5 -1
  6. package/dist/esm/_virtual/cssesc.js.map +1 -1
  7. package/dist/esm/_virtual/picocolors.js +8 -0
  8. package/dist/esm/_virtual/picocolors.js.map +1 -0
  9. package/dist/esm/_virtual/picocolors2.js +4 -0
  10. package/dist/esm/_virtual/picocolors2.js.map +1 -0
  11. package/dist/esm/assets/src/components/editor/ChatPanel/{ChatPanel.css.ts.vanilla-DPIGnZ4A.css → ChatPanel.css.ts.vanilla-BI5569ZO.css} +81 -1
  12. package/dist/esm/assets/src/components/feedback/EmptyState/EmptyState.css.ts.vanilla-B_TWsTOW.css +58 -0
  13. package/dist/esm/assets/src/components/feedback/Spinner/Spinner.css.ts.vanilla-DEUewqdK.css +80 -0
  14. package/dist/esm/assets/src/components/layout/Divider/Divider.css.ts.vanilla-CPvd_RW9.css +72 -0
  15. package/dist/esm/assets/src/components/layout/ListItem/ListItem.css.ts.vanilla-BwAZrX2f.css +68 -0
  16. package/dist/esm/assets/src/components/layout/PageHeader/PageHeader.css.ts.vanilla-DdbyyWAN.css +70 -0
  17. package/dist/esm/assets/src/components/layout/SplitPane/{SplitPane.css.ts.vanilla-BFxdvwyI.css → SplitPane.css.ts.vanilla-BGFZ7zDa.css} +5 -0
  18. package/dist/esm/assets/src/components/primitives/Badge/Badge.css.ts.vanilla-DxCUcxYW.css +95 -0
  19. package/dist/esm/assets/src/components/primitives/Code/Code.css.ts.vanilla-mayBqLDM.css +19 -0
  20. package/dist/esm/assets/src/components/primitives/TextArea/TextArea.css.ts.vanilla-DTOMjGkp.css +85 -0
  21. package/dist/esm/assets/src/theme/{darkTheme.css.ts.vanilla-DCe89yCJ.css → darkTheme.css.ts.vanilla-ab1WD4dr.css} +3 -0
  22. package/dist/esm/assets/src/theme/globalScrollbars.css.ts.vanilla-BAJwnUEJ.css +21 -0
  23. package/dist/esm/assets/src/utils/animations.css.ts.vanilla-DOVlpljP.css +58 -0
  24. package/dist/esm/components/editor/ChatPanel/ChatInput.js +18 -7
  25. package/dist/esm/components/editor/ChatPanel/ChatInput.js.map +1 -1
  26. package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js +268 -0
  27. package/dist/esm/components/editor/ChatPanel/ChatMarkdownRenderer.js.map +1 -0
  28. package/dist/esm/components/editor/ChatPanel/ChatMessage.js +15 -3
  29. package/dist/esm/components/editor/ChatPanel/ChatMessage.js.map +1 -1
  30. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js +19 -5
  31. package/dist/esm/components/editor/ChatPanel/ChatMessageList.js.map +1 -1
  32. package/dist/esm/components/editor/ChatPanel/ChatPanel.css.js +14 -2
  33. package/dist/esm/components/editor/ChatPanel/ChatPanel.css.js.map +1 -1
  34. package/dist/esm/components/editor/ChatPanel/ChatPanel.js +15 -3
  35. package/dist/esm/components/editor/ChatPanel/ChatPanel.js.map +1 -1
  36. package/dist/esm/components/editor/ChatPanel/useChatInput.js +3 -3
  37. package/dist/esm/components/editor/ChatPanel/useChatInput.js.map +1 -1
  38. package/dist/esm/components/editor/ChatPanel/useChatScroll.js +59 -2
  39. package/dist/esm/components/editor/ChatPanel/useChatScroll.js.map +1 -1
  40. package/dist/esm/components/feedback/EmptyState/EmptyState.css.js +13 -0
  41. package/dist/esm/components/feedback/EmptyState/EmptyState.css.js.map +1 -0
  42. package/dist/esm/components/feedback/EmptyState/EmptyState.js +43 -0
  43. package/dist/esm/components/feedback/EmptyState/EmptyState.js.map +1 -0
  44. package/dist/esm/components/feedback/Spinner/Spinner.css.js +16 -0
  45. package/dist/esm/components/feedback/Spinner/Spinner.css.js.map +1 -0
  46. package/dist/esm/components/feedback/Spinner/Spinner.js +50 -0
  47. package/dist/esm/components/feedback/Spinner/Spinner.js.map +1 -0
  48. package/dist/esm/components/layout/Divider/Divider.css.js +9 -0
  49. package/dist/esm/components/layout/Divider/Divider.css.js.map +1 -0
  50. package/dist/esm/components/layout/Divider/Divider.js +51 -0
  51. package/dist/esm/components/layout/Divider/Divider.js.map +1 -0
  52. package/dist/esm/components/layout/ListItem/ListItem.css.js +10 -0
  53. package/dist/esm/components/layout/ListItem/ListItem.css.js.map +1 -0
  54. package/dist/esm/components/layout/ListItem/ListItem.js +45 -0
  55. package/dist/esm/components/layout/ListItem/ListItem.js.map +1 -0
  56. package/dist/esm/components/layout/PageHeader/PageHeader.css.js +13 -0
  57. package/dist/esm/components/layout/PageHeader/PageHeader.css.js.map +1 -0
  58. package/dist/esm/components/layout/PageHeader/PageHeader.js +29 -0
  59. package/dist/esm/components/layout/PageHeader/PageHeader.js.map +1 -0
  60. package/dist/esm/components/layout/SplitPane/SplitPane.css.js +1 -1
  61. package/dist/esm/components/navigation/Tabs/TabPanel.js +6 -3
  62. package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -1
  63. package/dist/esm/components/navigation/Tabs/Tabs.js +3 -1
  64. package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -1
  65. package/dist/esm/components/primitives/Badge/Badge.css.js +12 -0
  66. package/dist/esm/components/primitives/Badge/Badge.css.js.map +1 -0
  67. package/dist/esm/components/primitives/Badge/Badge.js +67 -0
  68. package/dist/esm/components/primitives/Badge/Badge.js.map +1 -0
  69. package/dist/esm/components/primitives/Code/Code.css.js +7 -0
  70. package/dist/esm/components/primitives/Code/Code.css.js.map +1 -0
  71. package/dist/esm/components/primitives/Code/Code.js +24 -0
  72. package/dist/esm/components/primitives/Code/Code.js.map +1 -0
  73. package/dist/esm/components/primitives/TextArea/TextArea.css.js +10 -0
  74. package/dist/esm/components/primitives/TextArea/TextArea.css.js.map +1 -0
  75. package/dist/esm/components/primitives/TextArea/TextArea.js +97 -0
  76. package/dist/esm/components/primitives/TextArea/TextArea.js.map +1 -0
  77. package/dist/esm/index.js +12 -1
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js +56 -0
  80. package/dist/esm/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +1 -0
  81. package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js +32 -1
  82. package/dist/esm/node_modules/@vanilla-extract/css/adapter/dist/vanilla-extract-css-adapter.esm.js.map +1 -1
  83. package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js +13 -0
  84. package/dist/esm/node_modules/@vanilla-extract/css/dist/taggedTemplateLiteral-10998315.esm.js.map +1 -0
  85. package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js +837 -3
  86. package/dist/esm/node_modules/@vanilla-extract/css/dist/transformCss-fd0786e1.esm.js.map +1 -1
  87. package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js +244 -5
  88. package/dist/esm/node_modules/@vanilla-extract/css/dist/vanilla-extract-css.esm.js.map +1 -1
  89. package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js +18 -0
  90. package/dist/esm/node_modules/@vanilla-extract/css/fileScope/dist/vanilla-extract-css-fileScope.esm.js.map +1 -0
  91. package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js +23 -0
  92. package/dist/esm/node_modules/@vanilla-extract/css/injectStyles/dist/vanilla-extract-css-injectStyles.esm.js.map +1 -0
  93. package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js +38 -0
  94. package/dist/esm/node_modules/@vanilla-extract/private/dist/vanilla-extract-private.esm.js.map +1 -0
  95. package/dist/esm/node_modules/css-what/lib/es/parse.js +424 -0
  96. package/dist/esm/node_modules/css-what/lib/es/parse.js.map +1 -0
  97. package/dist/esm/node_modules/css-what/lib/es/types.js +29 -0
  98. package/dist/esm/node_modules/css-what/lib/es/types.js.map +1 -0
  99. package/dist/esm/node_modules/dedent/dist/dedent.js +3 -1
  100. package/dist/esm/node_modules/dedent/dist/dedent.js.map +1 -1
  101. package/dist/esm/node_modules/deep-object-diff/mjs/diff.js +40 -0
  102. package/dist/esm/node_modules/deep-object-diff/mjs/diff.js.map +1 -0
  103. package/dist/esm/node_modules/deep-object-diff/mjs/utils.js +9 -0
  104. package/dist/esm/node_modules/deep-object-diff/mjs/utils.js.map +1 -0
  105. package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js +1386 -0
  106. package/dist/esm/node_modules/media-query-parser/dist/media-query-parser.esm.js.map +1 -0
  107. package/dist/esm/node_modules/modern-ahocorasick/dist/index.js +102 -0
  108. package/dist/esm/node_modules/modern-ahocorasick/dist/index.js.map +1 -0
  109. package/dist/esm/node_modules/picocolors/picocolors.js +87 -0
  110. package/dist/esm/node_modules/picocolors/picocolors.js.map +1 -0
  111. package/dist/esm/theme/ThemeProvider.js +17 -3
  112. package/dist/esm/theme/ThemeProvider.js.map +1 -1
  113. package/dist/esm/theme/contract.css.js +1 -1
  114. package/dist/esm/theme/createCustomTheme.js +33 -0
  115. package/dist/esm/theme/createCustomTheme.js.map +1 -0
  116. package/dist/esm/theme/darkTheme.css.js +2 -2
  117. package/dist/esm/theme/globalScrollbars.css.js +6 -0
  118. package/dist/esm/theme/globalScrollbars.css.js.map +1 -0
  119. package/dist/esm/utils/animations.css.js +13 -0
  120. package/dist/esm/utils/animations.css.js.map +1 -0
  121. package/dist/esm/utils/objects.js +22 -0
  122. package/dist/esm/utils/objects.js.map +1 -0
  123. package/dist/types/components/editor/ChatPanel/ChatMarkdownRenderer.d.ts +323 -0
  124. package/dist/types/components/editor/ChatPanel/ChatMarkdownRenderer.types.d.ts +46 -0
  125. package/dist/types/components/editor/ChatPanel/ChatMessage.d.ts +1 -0
  126. package/dist/types/components/editor/ChatPanel/ChatMessageList.d.ts +2 -1
  127. package/dist/types/components/editor/ChatPanel/ChatPanel.d.ts +1 -0
  128. package/dist/types/components/editor/ChatPanel/ChatPanel.types.d.ts +82 -1
  129. package/dist/types/components/feedback/EmptyState/EmptyState.d.ts +313 -0
  130. package/dist/types/components/feedback/EmptyState/EmptyState.types.d.ts +31 -0
  131. package/dist/types/components/feedback/Spinner/Spinner.d.ts +306 -0
  132. package/dist/types/components/feedback/Spinner/Spinner.types.d.ts +41 -0
  133. package/dist/types/components/layout/Divider/Divider.d.ts +307 -0
  134. package/dist/types/components/layout/Divider/Divider.types.d.ts +50 -0
  135. package/dist/types/components/layout/ListItem/ListItem.d.ts +312 -0
  136. package/dist/types/components/layout/ListItem/ListItem.types.d.ts +35 -0
  137. package/dist/types/components/layout/PageHeader/PageHeader.d.ts +311 -0
  138. package/dist/types/components/layout/PageHeader/PageHeader.types.d.ts +30 -0
  139. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +10 -0
  140. package/dist/types/components/primitives/Badge/Badge.d.ts +310 -0
  141. package/dist/types/components/primitives/Badge/Badge.types.d.ts +67 -0
  142. package/dist/types/components/primitives/Code/Code.d.ts +301 -0
  143. package/dist/types/components/primitives/Code/Code.types.d.ts +17 -0
  144. package/dist/types/components/primitives/TextArea/TextArea.d.ts +26 -0
  145. package/dist/types/components/primitives/TextArea/TextArea.types.d.ts +76 -0
  146. package/dist/types/index.d.ts +22 -2
  147. package/dist/types/theme/ThemeProvider.d.ts +14 -2
  148. package/dist/types/theme/contract.css.d.ts +3 -0
  149. package/dist/types/theme/createCustomTheme.d.ts +29 -0
  150. package/dist/types/theme/darkTheme.css.d.ts +3 -0
  151. package/dist/types/utils/animations.css.d.ts +18 -0
  152. package/package.json +1 -1
@@ -1,5 +1,321 @@
1
- import '../../../../_virtual/cssesc.js';
2
- import '../../../dedent/dist/dedent.js';
1
+ import { getVarName } from '../../private/dist/vanilla-extract-private.esm.js';
2
+ import cssesc from '../../../../_virtual/cssesc.js';
3
+ import AhoCorasick from '../../../modern-ahocorasick/dist/index.js';
4
+ import { markCompositionUsed } from '../adapter/dist/vanilla-extract-css-adapter.esm.js';
5
+ import { _ as _taggedTemplateLiteral } from './taggedTemplateLiteral-10998315.esm.js';
6
+ import dedent from '../../../dedent/dist/dedent.js';
7
+ import { toAST } from '../../../media-query-parser/dist/media-query-parser.esm.js';
8
+ import { parse } from '../../../css-what/lib/es/parse.js';
9
+
10
+ function toPrimitive(t, r) {
11
+ if ("object" != typeof t || !t) return t;
12
+ var e = t[Symbol.toPrimitive];
13
+ if (void 0 !== e) {
14
+ var i = e.call(t, r);
15
+ if ("object" != typeof i) return i;
16
+ throw new TypeError("@@toPrimitive must return a primitive value.");
17
+ }
18
+ return ("string" === r ? String : Number)(t);
19
+ }
20
+
21
+ function toPropertyKey(t) {
22
+ var i = toPrimitive(t, "string");
23
+ return "symbol" == typeof i ? i : String(i);
24
+ }
25
+
26
+ function _defineProperty(obj, key, value) {
27
+ key = toPropertyKey(key);
28
+ if (key in obj) {
29
+ Object.defineProperty(obj, key, {
30
+ value: value,
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true
34
+ });
35
+ } else {
36
+ obj[key] = value;
37
+ }
38
+ return obj;
39
+ }
40
+
41
+ function ownKeys(e, r) {
42
+ var t = Object.keys(e);
43
+ if (Object.getOwnPropertySymbols) {
44
+ var o = Object.getOwnPropertySymbols(e);
45
+ r && (o = o.filter(function (r) {
46
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
47
+ })), t.push.apply(t, o);
48
+ }
49
+ return t;
50
+ }
51
+ function _objectSpread2(e) {
52
+ for (var r = 1; r < arguments.length; r++) {
53
+ var t = null != arguments[r] ? arguments[r] : {};
54
+ r % 2 ? ownKeys(Object(t), true).forEach(function (r) {
55
+ _defineProperty(e, r, t[r]);
56
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
57
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
58
+ });
59
+ }
60
+ return e;
61
+ }
62
+
63
+ function _objectWithoutPropertiesLoose(source, excluded) {
64
+ if (source == null) return {};
65
+ var target = {};
66
+ var sourceKeys = Object.keys(source);
67
+ var key, i;
68
+ for (i = 0; i < sourceKeys.length; i++) {
69
+ key = sourceKeys[i];
70
+ if (excluded.indexOf(key) >= 0) continue;
71
+ target[key] = source[key];
72
+ }
73
+ return target;
74
+ }
75
+
76
+ function _objectWithoutProperties(source, excluded) {
77
+ if (source == null) return {};
78
+ var target = _objectWithoutPropertiesLoose(source, excluded);
79
+ var key, i;
80
+ if (Object.getOwnPropertySymbols) {
81
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
82
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
83
+ key = sourceSymbolKeys[i];
84
+ if (excluded.indexOf(key) >= 0) continue;
85
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
86
+ target[key] = source[key];
87
+ }
88
+ }
89
+ return target;
90
+ }
91
+
92
+ function forEach(obj, fn) {
93
+ for (var _key in obj) {
94
+ fn(obj[_key], _key);
95
+ }
96
+ }
97
+ function omit(obj, omitKeys) {
98
+ var result = {};
99
+ for (var _key2 in obj) {
100
+ if (omitKeys.indexOf(_key2) === -1) {
101
+ result[_key2] = obj[_key2];
102
+ }
103
+ }
104
+ return result;
105
+ }
106
+ function mapKeys(obj, fn) {
107
+ var result = {};
108
+ for (var _key3 in obj) {
109
+ result[fn(obj[_key3], _key3)] = obj[_key3];
110
+ }
111
+ return result;
112
+ }
113
+
114
+ var _templateObject$1;
115
+
116
+ // https://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
117
+ function escapeRegex(string) {
118
+ return string.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
119
+ }
120
+ var validateSelector = (selector, targetClassName) => {
121
+ var replaceTarget = () => {
122
+ var targetRegex = new RegExp(".".concat(escapeRegex(cssesc(targetClassName, {
123
+ isIdentifier: true
124
+ }))), 'g');
125
+ return selector.replace(targetRegex, '&');
126
+ };
127
+ var selectorParts;
128
+ try {
129
+ selectorParts = parse(selector);
130
+ } catch (err) {
131
+ throw new Error("Invalid selector: ".concat(replaceTarget()), {
132
+ cause: err
133
+ });
134
+ }
135
+ selectorParts.forEach(tokens => {
136
+ try {
137
+ for (var i = tokens.length - 1; i >= -1; i--) {
138
+ if (!tokens[i]) {
139
+ throw new Error();
140
+ }
141
+ var token = tokens[i];
142
+ if (token.type === 'child' || token.type === 'parent' || token.type === 'sibling' || token.type === 'adjacent' || token.type === 'descendant') {
143
+ throw new Error();
144
+ }
145
+ if (token.type === 'attribute' && token.name === 'class' && token.value === targetClassName) {
146
+ return; // Found it
147
+ }
148
+ }
149
+ } catch (err) {
150
+ throw new Error(dedent(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n Invalid selector: ", "\n \n Style selectors must target the '&' character (along with any modifiers), e.g. ", " or ", ".\n \n This is to ensure that each style block only affects the styling of a single class.\n \n If your selector is targeting another class, you should move it to the style definition for that class, e.g. given we have styles for 'parent' and 'child' elements, instead of adding a selector of ", ") to 'parent', you should add ", " to 'child').\n \n If your selector is targeting something global, use the 'globalStyle' function instead, e.g. if you wanted to write ", ", you should instead write 'globalStyle(", ", { ... })'\n "])), replaceTarget(), '`${parent} &`', '`${parent} &:hover`', '`& ${child}`', '`${parent} &`', '`& h1`', '`${parent} h1`'), {
151
+ cause: err
152
+ });
153
+ }
154
+ });
155
+ };
156
+
157
+ /** e.g. @media screen and (min-width: 500px) */
158
+
159
+ class ConditionalRuleset {
160
+ /**
161
+ * Stores information about where conditions must be in relation to other conditions
162
+ *
163
+ * e.g. mobile -> tablet, desktop
164
+ */
165
+
166
+ constructor() {
167
+ this.ruleset = new Map();
168
+ this.precedenceLookup = new Map();
169
+ }
170
+ findOrCreateCondition(conditionQuery) {
171
+ var targetCondition = this.ruleset.get(conditionQuery);
172
+ if (!targetCondition) {
173
+ // No target condition so create one
174
+ targetCondition = {
175
+ query: conditionQuery,
176
+ rules: [],
177
+ children: new ConditionalRuleset()
178
+ };
179
+ this.ruleset.set(conditionQuery, targetCondition);
180
+ }
181
+ return targetCondition;
182
+ }
183
+ getConditionalRulesetByPath(conditionPath) {
184
+ var currRuleset = this;
185
+ for (var query of conditionPath) {
186
+ var condition = currRuleset.findOrCreateCondition(query);
187
+ currRuleset = condition.children;
188
+ }
189
+ return currRuleset;
190
+ }
191
+ addRule(rule, conditionQuery, conditionPath) {
192
+ var ruleset = this.getConditionalRulesetByPath(conditionPath);
193
+ var targetCondition = ruleset.findOrCreateCondition(conditionQuery);
194
+ if (!targetCondition) {
195
+ throw new Error('Failed to add conditional rule');
196
+ }
197
+ targetCondition.rules.push(rule);
198
+ }
199
+ addConditionPrecedence(conditionPath, conditionOrder) {
200
+ var ruleset = this.getConditionalRulesetByPath(conditionPath);
201
+ for (var i = 0; i < conditionOrder.length; i++) {
202
+ var _ruleset$precedenceLo;
203
+ var query = conditionOrder[i];
204
+ var conditionPrecedence = (_ruleset$precedenceLo = ruleset.precedenceLookup.get(query)) !== null && _ruleset$precedenceLo !== void 0 ? _ruleset$precedenceLo : new Set();
205
+ for (var lowerPrecedenceCondition of conditionOrder.slice(i + 1)) {
206
+ conditionPrecedence.add(lowerPrecedenceCondition);
207
+ }
208
+ ruleset.precedenceLookup.set(query, conditionPrecedence);
209
+ }
210
+ }
211
+ isCompatible(incomingRuleset) {
212
+ for (var [condition, orderPrecedence] of this.precedenceLookup.entries()) {
213
+ for (var lowerPrecedenceCondition of orderPrecedence) {
214
+ var _incomingRuleset$prec;
215
+ if ((_incomingRuleset$prec = incomingRuleset.precedenceLookup.get(lowerPrecedenceCondition)) !== null && _incomingRuleset$prec !== void 0 && _incomingRuleset$prec.has(condition)) {
216
+ return false;
217
+ }
218
+ }
219
+ }
220
+
221
+ // Check that children are compatible
222
+ for (var {
223
+ query,
224
+ children
225
+ } of incomingRuleset.ruleset.values()) {
226
+ var matchingCondition = this.ruleset.get(query);
227
+ if (matchingCondition && !matchingCondition.children.isCompatible(children)) {
228
+ return false;
229
+ }
230
+ }
231
+ return true;
232
+ }
233
+ merge(incomingRuleset) {
234
+ // Merge rulesets into one array
235
+ for (var {
236
+ query,
237
+ rules,
238
+ children
239
+ } of incomingRuleset.ruleset.values()) {
240
+ var matchingCondition = this.ruleset.get(query);
241
+ if (matchingCondition) {
242
+ matchingCondition.rules.push(...rules);
243
+ matchingCondition.children.merge(children);
244
+ } else {
245
+ this.ruleset.set(query, {
246
+ query,
247
+ rules,
248
+ children
249
+ });
250
+ }
251
+ }
252
+
253
+ // Merge order precedences
254
+ for (var [condition, incomingOrderPrecedence] of incomingRuleset.precedenceLookup.entries()) {
255
+ var _this$precedenceLooku;
256
+ var orderPrecedence = (_this$precedenceLooku = this.precedenceLookup.get(condition)) !== null && _this$precedenceLooku !== void 0 ? _this$precedenceLooku : new Set();
257
+ this.precedenceLookup.set(condition, new Set([...orderPrecedence, ...incomingOrderPrecedence]));
258
+ }
259
+ }
260
+
261
+ /**
262
+ * Merge another ConditionalRuleset into this one if they are compatible
263
+ *
264
+ * @returns true if successful, false if the ruleset is incompatible
265
+ */
266
+ mergeIfCompatible(incomingRuleset) {
267
+ if (!this.isCompatible(incomingRuleset)) {
268
+ return false;
269
+ }
270
+ this.merge(incomingRuleset);
271
+ return true;
272
+ }
273
+ getSortedRuleset() {
274
+ var _this = this;
275
+ var sortedRuleset = [];
276
+
277
+ // Loop through all queries and add them to the sorted ruleset
278
+ var _loop = function _loop(dependents) {
279
+ var conditionForQuery = _this.ruleset.get(query);
280
+ if (!conditionForQuery) {
281
+ throw new Error("Can't find condition for ".concat(query));
282
+ }
283
+
284
+ // Find the location of the first dependent condition in the sortedRuleset
285
+ // A dependent condition is a condition that must be placed *after* the current one
286
+ var firstMatchingDependent = sortedRuleset.findIndex(condition => dependents.has(condition.query));
287
+ if (firstMatchingDependent > -1) {
288
+ // Insert the condition before the dependent one
289
+ sortedRuleset.splice(firstMatchingDependent, 0, conditionForQuery);
290
+ } else {
291
+ // No match, just insert at the end
292
+ sortedRuleset.push(conditionForQuery);
293
+ }
294
+ };
295
+ for (var [query, dependents] of this.precedenceLookup.entries()) {
296
+ _loop(dependents);
297
+ }
298
+ return sortedRuleset;
299
+ }
300
+ renderToArray() {
301
+ var arr = [];
302
+ for (var {
303
+ query,
304
+ rules,
305
+ children
306
+ } of this.getSortedRuleset()) {
307
+ var selectors = {};
308
+ for (var rule of rules) {
309
+ selectors[rule.selector] = _objectSpread2(_objectSpread2({}, selectors[rule.selector]), rule.rule);
310
+ }
311
+ Object.assign(selectors, ...children.renderToArray());
312
+ arr.push({
313
+ [query]: selectors
314
+ });
315
+ }
316
+ return arr;
317
+ }
318
+ }
3
319
 
4
320
  var simplePseudoMap = {
5
321
  ':-moz-any-link': true,
@@ -124,5 +440,523 @@ var simplePseudoMap = {
124
440
  ':visited': true
125
441
  };
126
442
  var simplePseudos = Object.keys(simplePseudoMap);
127
- [...simplePseudos, '@layer', '@media', '@supports', '@container', '@starting-style', 'selectors'];
443
+ var simplePseudoLookup = simplePseudoMap;
444
+
445
+ var _templateObject;
446
+ var createMediaQueryError = (mediaQuery, msg) => new Error(dedent(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n Invalid media query: \"", "\"\n\n ", "\n\n Read more on MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries\n "])), mediaQuery, msg));
447
+ var validateMediaQuery = mediaQuery => {
448
+ // Empty queries will start with '@media '
449
+ if (mediaQuery === '@media ') {
450
+ throw createMediaQueryError(mediaQuery, 'Query is empty');
451
+ }
452
+ try {
453
+ toAST(mediaQuery);
454
+ } catch (e) {
455
+ throw createMediaQueryError(mediaQuery, e.message);
456
+ }
457
+ };
458
+
459
+ var _excluded = ["vars"],
460
+ _excluded2 = ["content"];
461
+ var DECLARATION = '__DECLARATION';
462
+ var UNITLESS = {
463
+ animationIterationCount: true,
464
+ borderImage: true,
465
+ borderImageOutset: true,
466
+ borderImageSlice: true,
467
+ borderImageWidth: true,
468
+ boxFlex: true,
469
+ boxFlexGroup: true,
470
+ columnCount: true,
471
+ columns: true,
472
+ flex: true,
473
+ flexGrow: true,
474
+ flexShrink: true,
475
+ fontWeight: true,
476
+ gridArea: true,
477
+ gridColumn: true,
478
+ gridColumnEnd: true,
479
+ gridColumnStart: true,
480
+ gridRow: true,
481
+ gridRowEnd: true,
482
+ gridRowStart: true,
483
+ initialLetter: true,
484
+ lineClamp: true,
485
+ lineHeight: true,
486
+ maxLines: true,
487
+ opacity: true,
488
+ order: true,
489
+ orphans: true,
490
+ scale: true,
491
+ tabSize: true,
492
+ WebkitLineClamp: true,
493
+ widows: true,
494
+ zIndex: true,
495
+ zoom: true,
496
+ // svg properties
497
+ fillOpacity: true,
498
+ floodOpacity: true,
499
+ maskBorder: true,
500
+ maskBorderOutset: true,
501
+ maskBorderSlice: true,
502
+ maskBorderWidth: true,
503
+ shapeImageThreshold: true,
504
+ stopOpacity: true,
505
+ strokeDashoffset: true,
506
+ strokeMiterlimit: true,
507
+ strokeOpacity: true,
508
+ strokeWidth: true
509
+ };
510
+ function dashify(str) {
511
+ return str.replace(/([A-Z])/g, '-$1').replace(/^ms-/, '-ms-').toLowerCase();
512
+ }
513
+ function replaceBetweenIndexes(target, startIndex, endIndex, replacement) {
514
+ var start = target.slice(0, startIndex);
515
+ var end = target.slice(endIndex);
516
+ return "".concat(start).concat(replacement).concat(end);
517
+ }
518
+ var DOUBLE_SPACE = ' ';
519
+ var specialKeys = [...simplePseudos, '@layer', '@media', '@supports', '@container', '@starting-style', 'selectors'];
520
+ class Stylesheet {
521
+ constructor(localClassNames, composedClassLists) {
522
+ this.rules = [];
523
+ this.conditionalRulesets = [new ConditionalRuleset()];
524
+ this.fontFaceRules = [];
525
+ this.keyframesRules = [];
526
+ this.propertyRules = [];
527
+ this.localClassNamesMap = new Map(localClassNames.map(localClassName => [localClassName, localClassName]));
528
+ this.localClassNamesSearch = new AhoCorasick(localClassNames);
529
+ this.layers = new Map();
530
+
531
+ // Class list compositions should be priortized by Newer > Older
532
+ // Therefore we reverse the array as they are added in sequence
533
+ this.composedClassLists = composedClassLists.map(_ref => {
534
+ var {
535
+ identifier,
536
+ classList
537
+ } = _ref;
538
+ return {
539
+ identifier,
540
+ regex: RegExp("(".concat(classList, ")"), 'g')
541
+ };
542
+ }).reverse();
543
+ }
544
+ processCssObj(root) {
545
+ if (root.type === 'fontFace') {
546
+ this.fontFaceRules.push(root.rule);
547
+ return;
548
+ }
549
+ if (root.type === 'property') {
550
+ this.propertyRules.push(root);
551
+ return;
552
+ }
553
+ if (root.type === 'keyframes') {
554
+ root.rule = Object.fromEntries(Object.entries(root.rule).map(_ref2 => {
555
+ var [keyframe, rule] = _ref2;
556
+ return [keyframe, this.transformVars(this.transformProperties(rule))];
557
+ }));
558
+ this.keyframesRules.push(root);
559
+ return;
560
+ }
561
+ this.currConditionalRuleset = new ConditionalRuleset();
562
+ if (root.type === 'layer') {
563
+ var layerDefinition = "@layer ".concat(root.name);
564
+ this.addLayer([layerDefinition]);
565
+ } else {
566
+ // Add main styles
567
+ var mainRule = omit(root.rule, specialKeys);
568
+ this.addRule({
569
+ selector: root.selector,
570
+ rule: mainRule
571
+ });
572
+ this.transformLayer(root, root.rule['@layer']);
573
+ this.transformMedia(root, root.rule['@media']);
574
+ this.transformSupports(root, root.rule['@supports']);
575
+ this.transformContainer(root, root.rule['@container']);
576
+ this.transformStartingStyle(root, root.rule['@starting-style']);
577
+ this.transformSimplePseudos(root, root.rule);
578
+ this.transformSelectors(root, root.rule);
579
+ }
580
+ var activeConditionalRuleset = this.conditionalRulesets[this.conditionalRulesets.length - 1];
581
+ if (!activeConditionalRuleset.mergeIfCompatible(this.currConditionalRuleset)) {
582
+ // Ruleset merge failed due to incompatibility. We now deopt by starting a fresh ConditionalRuleset
583
+ this.conditionalRulesets.push(this.currConditionalRuleset);
584
+ }
585
+ }
586
+ addConditionalRule(cssRule, conditions) {
587
+ // Run `transformProperties` before `transformVars` as we don't want to pixelify CSS Vars
588
+ var rule = this.transformVars(this.transformProperties(cssRule.rule));
589
+ var selector = this.transformSelector(cssRule.selector);
590
+ if (!this.currConditionalRuleset) {
591
+ throw new Error("Couldn't add conditional rule");
592
+ }
593
+ var conditionQuery = conditions[conditions.length - 1];
594
+ var parentConditions = conditions.slice(0, conditions.length - 1);
595
+ this.currConditionalRuleset.addRule({
596
+ selector,
597
+ rule
598
+ }, conditionQuery, parentConditions);
599
+ }
600
+ addRule(cssRule) {
601
+ // Run `transformProperties` before `transformVars` as we don't want to pixelify CSS Vars
602
+ var rule = this.transformVars(this.transformProperties(cssRule.rule));
603
+ var selector = this.transformSelector(cssRule.selector);
604
+ this.rules.push({
605
+ selector,
606
+ rule
607
+ });
608
+ }
609
+ addLayer(layer) {
610
+ var uniqueLayerKey = layer.join(' - ');
611
+ this.layers.set(uniqueLayerKey, layer);
612
+ }
613
+ transformProperties(cssRule) {
614
+ return this.transformContent(this.pixelifyProperties(cssRule));
615
+ }
616
+ pixelifyProperties(cssRule) {
617
+ forEach(cssRule, (value, key) => {
618
+ if (typeof value === 'number' && value !== 0 && !UNITLESS[key]) {
619
+ // @ts-expect-error Any ideas?
620
+ cssRule[key] = "".concat(value, "px");
621
+ }
622
+ });
623
+ return cssRule;
624
+ }
625
+ transformVars(_ref3) {
626
+ var {
627
+ vars
628
+ } = _ref3,
629
+ rest = _objectWithoutProperties(_ref3, _excluded);
630
+ if (!vars) {
631
+ return rest;
632
+ }
633
+ return _objectSpread2(_objectSpread2({}, mapKeys(vars, (_value, key) => getVarName(key))), rest);
634
+ }
635
+ transformContent(_ref4) {
636
+ var {
637
+ content
638
+ } = _ref4,
639
+ rest = _objectWithoutProperties(_ref4, _excluded2);
640
+ if (typeof content === 'undefined') {
641
+ return rest;
642
+ }
643
+
644
+ // Handle fallback arrays:
645
+ var contentArray = Array.isArray(content) ? content : [content];
646
+ return _objectSpread2({
647
+ content: contentArray.map(value =>
648
+ // This logic was adapted from Stitches :)
649
+ value && (value.includes('"') || value.includes("'") || /^([A-Za-z-]+\([^]*|[^]*-quote|inherit|initial|none|normal|revert|unset)(\s|$)/.test(value)) ? value : "\"".concat(value, "\""))
650
+ }, rest);
651
+ }
652
+ transformClassname(identifier) {
653
+ return ".".concat(cssesc(identifier, {
654
+ isIdentifier: true
655
+ }));
656
+ }
657
+ transformSelector(selector) {
658
+ // Map class list compositions to single identifiers
659
+ var transformedSelector = selector;
660
+ var _loop = function _loop(identifier) {
661
+ transformedSelector = transformedSelector.replace(regex, () => {
662
+ markCompositionUsed(identifier);
663
+ return identifier;
664
+ });
665
+ };
666
+ for (var {
667
+ identifier,
668
+ regex
669
+ } of this.composedClassLists) {
670
+ _loop(identifier);
671
+ }
672
+ if (this.localClassNamesMap.has(transformedSelector)) {
673
+ return this.transformClassname(transformedSelector);
674
+ }
675
+ var results = this.localClassNamesSearch.search(transformedSelector);
676
+ var lastReplaceIndex = transformedSelector.length;
677
+
678
+ // Perform replacements backwards to simplify index handling
679
+ for (var i = results.length - 1; i >= 0; i--) {
680
+ var [endIndex, [firstMatch]] = results[i];
681
+ var startIndex = endIndex - firstMatch.length + 1;
682
+
683
+ // Class names can be substrings of other class names
684
+ // e.g. '_1g1ptzo1' and '_1g1ptzo10'
685
+ //
686
+ // Additionally, concatenated classnames can contain substrings equal to other classnames
687
+ // e.g. '&&' where '&' is 'debugName_hash1' and 'debugName_hash1d' is also a local classname
688
+ // Before transforming the selector, this would look like `debugName_hash1debugName_hash1`
689
+ // which contains the substring `debugName_hash1d`’.
690
+ //
691
+ // In either of these cases, the last replace index will occur either before or within the
692
+ // current replacement range (from `startIndex` to `endIndex`).
693
+ // If this occurs, we skip the replacement to avoid transforming the selector incorrectly.
694
+ var skipReplacement = lastReplaceIndex <= endIndex;
695
+ if (skipReplacement) {
696
+ continue;
697
+ }
698
+ lastReplaceIndex = startIndex;
699
+
700
+ // If class names already starts with a '.' then skip
701
+ if (transformedSelector[startIndex - 1] !== '.') {
702
+ transformedSelector = replaceBetweenIndexes(transformedSelector, startIndex, endIndex + 1, this.transformClassname(firstMatch));
703
+ }
704
+ }
705
+ return transformedSelector;
706
+ }
707
+ transformSelectors(root, rule, conditions) {
708
+ forEach(rule.selectors, (selectorRule, selector) => {
709
+ if (root.type !== 'local') {
710
+ throw new Error("Selectors are not allowed within ".concat(root.type === 'global' ? '"globalStyle"' : '"selectors"'));
711
+ }
712
+ var transformedSelector = this.transformSelector(selector.replace(RegExp('&', 'g'), root.selector));
713
+ validateSelector(transformedSelector, root.selector);
714
+ var rule = {
715
+ selector: transformedSelector,
716
+ rule: omit(selectorRule, specialKeys)
717
+ };
718
+ if (conditions) {
719
+ this.addConditionalRule(rule, conditions);
720
+ } else {
721
+ this.addRule(rule);
722
+ }
723
+ var selectorRoot = {
724
+ type: 'selector',
725
+ selector: transformedSelector,
726
+ rule: selectorRule
727
+ };
728
+ this.transformLayer(selectorRoot, selectorRule['@layer'], conditions);
729
+ this.transformSupports(selectorRoot, selectorRule['@supports'], conditions);
730
+ this.transformMedia(selectorRoot, selectorRule['@media'], conditions);
731
+ this.transformContainer(selectorRoot, selectorRule['@container'], conditions);
732
+ this.transformStartingStyle(selectorRoot, selectorRule['@starting-style'], conditions);
733
+ });
734
+ }
735
+ transformMedia(root, rules) {
736
+ var parentConditions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
737
+ if (rules) {
738
+ var _this$currConditional;
739
+ (_this$currConditional = this.currConditionalRuleset) === null || _this$currConditional === void 0 || _this$currConditional.addConditionPrecedence(parentConditions, Object.keys(rules).map(query => "@media ".concat(query)));
740
+ for (var [query, mediaRule] of Object.entries(rules)) {
741
+ var mediaQuery = "@media ".concat(query);
742
+ validateMediaQuery(mediaQuery);
743
+ var conditions = [...parentConditions, mediaQuery];
744
+ this.addConditionalRule({
745
+ selector: root.selector,
746
+ rule: omit(mediaRule, specialKeys)
747
+ }, conditions);
748
+ if (root.type === 'local') {
749
+ this.transformSimplePseudos(root, mediaRule, conditions);
750
+ this.transformSelectors(root, mediaRule, conditions);
751
+ }
752
+ this.transformLayer(root, mediaRule['@layer'], conditions);
753
+ this.transformSupports(root, mediaRule['@supports'], conditions);
754
+ this.transformContainer(root, mediaRule['@container'], conditions);
755
+ this.transformStartingStyle(root, mediaRule['@starting-style'], conditions);
756
+ }
757
+ }
758
+ }
759
+ transformContainer(root, rules) {
760
+ var parentConditions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
761
+ if (rules) {
762
+ var _this$currConditional2;
763
+ (_this$currConditional2 = this.currConditionalRuleset) === null || _this$currConditional2 === void 0 || _this$currConditional2.addConditionPrecedence(parentConditions, Object.keys(rules).map(query => "@container ".concat(query)));
764
+ forEach(rules, (containerRule, query) => {
765
+ var containerQuery = "@container ".concat(query);
766
+ var conditions = [...parentConditions, containerQuery];
767
+ this.addConditionalRule({
768
+ selector: root.selector,
769
+ rule: omit(containerRule, specialKeys)
770
+ }, conditions);
771
+ if (root.type === 'local') {
772
+ this.transformSimplePseudos(root, containerRule, conditions);
773
+ this.transformSelectors(root, containerRule, conditions);
774
+ }
775
+ this.transformLayer(root, containerRule['@layer'], conditions);
776
+ this.transformSupports(root, containerRule['@supports'], conditions);
777
+ this.transformMedia(root, containerRule['@media'], conditions);
778
+ this.transformStartingStyle(root, containerRule['@starting-style'], conditions);
779
+ });
780
+ }
781
+ }
782
+ transformLayer(root, rules) {
783
+ var parentConditions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
784
+ if (rules) {
785
+ var _this$currConditional3;
786
+ (_this$currConditional3 = this.currConditionalRuleset) === null || _this$currConditional3 === void 0 || _this$currConditional3.addConditionPrecedence(parentConditions, Object.keys(rules).map(name => "@layer ".concat(name)));
787
+ forEach(rules, (layerRule, name) => {
788
+ var conditions = [...parentConditions, "@layer ".concat(name)];
789
+ this.addLayer(conditions);
790
+ this.addConditionalRule({
791
+ selector: root.selector,
792
+ rule: omit(layerRule, specialKeys)
793
+ }, conditions);
794
+ if (root.type === 'local') {
795
+ this.transformSimplePseudos(root, layerRule, conditions);
796
+ this.transformSelectors(root, layerRule, conditions);
797
+ }
798
+ this.transformMedia(root, layerRule['@media'], conditions);
799
+ this.transformSupports(root, layerRule['@supports'], conditions);
800
+ this.transformContainer(root, layerRule['@container'], conditions);
801
+ this.transformStartingStyle(root, layerRule['@starting-style'], conditions);
802
+ });
803
+ }
804
+ }
805
+ transformSupports(root, rules) {
806
+ var parentConditions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
807
+ if (rules) {
808
+ var _this$currConditional4;
809
+ (_this$currConditional4 = this.currConditionalRuleset) === null || _this$currConditional4 === void 0 || _this$currConditional4.addConditionPrecedence(parentConditions, Object.keys(rules).map(query => "@supports ".concat(query)));
810
+ forEach(rules, (supportsRule, query) => {
811
+ var conditions = [...parentConditions, "@supports ".concat(query)];
812
+ this.addConditionalRule({
813
+ selector: root.selector,
814
+ rule: omit(supportsRule, specialKeys)
815
+ }, conditions);
816
+ if (root.type === 'local') {
817
+ this.transformSimplePseudos(root, supportsRule, conditions);
818
+ this.transformSelectors(root, supportsRule, conditions);
819
+ }
820
+ this.transformLayer(root, supportsRule['@layer'], conditions);
821
+ this.transformMedia(root, supportsRule['@media'], conditions);
822
+ this.transformContainer(root, supportsRule['@container'], conditions);
823
+ this.transformStartingStyle(root, supportsRule['@starting-style'], conditions);
824
+ });
825
+ }
826
+ }
827
+ transformSimplePseudos(root, rule, conditions) {
828
+ for (var key of Object.keys(rule)) {
829
+ // Process simple pseudos
830
+ if (simplePseudoLookup[key]) {
831
+ if (root.type !== 'local') {
832
+ throw new Error("Simple pseudos are not valid in ".concat(root.type === 'global' ? '"globalStyle"' : '"selectors"'));
833
+ }
834
+ if (conditions) {
835
+ this.addConditionalRule({
836
+ selector: "".concat(root.selector).concat(key),
837
+ rule: rule[key]
838
+ }, conditions);
839
+ } else {
840
+ this.addRule({
841
+ conditions,
842
+ selector: "".concat(root.selector).concat(key),
843
+ rule: rule[key]
844
+ });
845
+ }
846
+ }
847
+ }
848
+ }
849
+ transformStartingStyle(root, rules) {
850
+ var parentConditions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
851
+ if (rules) {
852
+ var _this$currConditional5;
853
+ var nestedAtRuleKey = Object.keys(rules).find(key => key.startsWith('@'));
854
+ if (nestedAtRuleKey) {
855
+ throw new Error("Nested at-rules (e.g. \"".concat(nestedAtRuleKey, "\") are not allowed inside @starting-style."));
856
+ }
857
+ (_this$currConditional5 = this.currConditionalRuleset) === null || _this$currConditional5 === void 0 || _this$currConditional5.addConditionPrecedence(parentConditions, ['@starting-style']);
858
+ var conditions = [...parentConditions, '@starting-style'];
859
+ this.addConditionalRule({
860
+ selector: root.selector,
861
+ rule: omit(rules, specialKeys)
862
+ }, conditions);
863
+ if (root.type === 'local') {
864
+ this.transformSimplePseudos(root, rules, conditions);
865
+ this.transformSelectors(root, rules, conditions);
866
+ }
867
+ }
868
+ }
869
+ toCss() {
870
+ var css = [];
871
+
872
+ // Render font-face rules
873
+ for (var fontFaceRule of this.fontFaceRules) {
874
+ css.push(renderCss({
875
+ '@font-face': fontFaceRule
876
+ }));
877
+ }
878
+
879
+ // Render property rules
880
+ for (var property of this.propertyRules) {
881
+ css.push(renderCss({
882
+ ["@property ".concat(property.name)]: property.rule
883
+ }));
884
+ }
885
+
886
+ // Render keyframes
887
+ for (var keyframe of this.keyframesRules) {
888
+ css.push(renderCss({
889
+ ["@keyframes ".concat(keyframe.name)]: keyframe.rule
890
+ }));
891
+ }
892
+
893
+ // Render layer definitions
894
+ for (var layer of this.layers.values()) {
895
+ var [definition, ...nesting] = layer.reverse();
896
+ var cssObj = {
897
+ [definition]: DECLARATION
898
+ };
899
+ for (var part of nesting) {
900
+ cssObj = {
901
+ [part]: cssObj
902
+ };
903
+ }
904
+ css.push(renderCss(cssObj));
905
+ }
906
+
907
+ // Render unconditional rules
908
+ for (var rule of this.rules) {
909
+ css.push(renderCss({
910
+ [rule.selector]: rule.rule
911
+ }));
912
+ }
913
+
914
+ // Render conditional rules
915
+ for (var conditionalRuleset of this.conditionalRulesets) {
916
+ for (var conditionalRule of conditionalRuleset.renderToArray()) {
917
+ css.push(renderCss(conditionalRule));
918
+ }
919
+ }
920
+ return css.filter(Boolean);
921
+ }
922
+ }
923
+ function renderCss(v) {
924
+ var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
925
+ var rules = [];
926
+ var _loop2 = function _loop2(key) {
927
+ var value = v[key];
928
+ if (value && Array.isArray(value)) {
929
+ rules.push(...value.map(v => renderCss({
930
+ [key]: v
931
+ }, indent)));
932
+ } else if (value && typeof value === 'object') {
933
+ var isEmpty = Object.keys(value).length === 0;
934
+ if (!isEmpty) {
935
+ rules.push("".concat(indent).concat(key, " {\n").concat(renderCss(value, indent + DOUBLE_SPACE), "\n").concat(indent, "}"));
936
+ }
937
+ } else if (value === DECLARATION) {
938
+ rules.push("".concat(indent).concat(key, ";"));
939
+ } else {
940
+ rules.push("".concat(indent).concat(key.startsWith('--') ? key : dashify(key), ": ").concat(value, ";"));
941
+ }
942
+ };
943
+ for (var key of Object.keys(v)) {
944
+ _loop2(key);
945
+ }
946
+ return rules.join('\n');
947
+ }
948
+ function transformCss(_ref5) {
949
+ var {
950
+ localClassNames,
951
+ cssObjs,
952
+ composedClassLists
953
+ } = _ref5;
954
+ var stylesheet = new Stylesheet(localClassNames, composedClassLists);
955
+ for (var root of cssObjs) {
956
+ stylesheet.processCssObj(root);
957
+ }
958
+ return stylesheet.toCss();
959
+ }
960
+
961
+ export { _objectSpread2 as _, _objectWithoutProperties as a, transformCss as t };
128
962
  //# sourceMappingURL=transformCss-fd0786e1.esm.js.map