@unocss/preset-uno 0.14.2 → 0.15.2

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.
@@ -1,233 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _chunk7O4GGKN3js = require('./chunk-7O4GGKN3.js');
4
-
5
- // src/theme/font.ts
6
- var fontFamily = {
7
- sans: [
8
- "ui-sans-serif",
9
- "system-ui",
10
- "-apple-system",
11
- "BlinkMacSystemFont",
12
- '"Segoe UI"',
13
- "Roboto",
14
- '"Helvetica Neue"',
15
- "Arial",
16
- '"Noto Sans"',
17
- "sans-serif",
18
- '"Apple Color Emoji"',
19
- '"Segoe UI Emoji"',
20
- '"Segoe UI Symbol"',
21
- '"Noto Color Emoji"'
22
- ].join(","),
23
- serif: [
24
- "ui-serif",
25
- "Georgia",
26
- "Cambria",
27
- '"Times New Roman"',
28
- "Times",
29
- "serif"
30
- ].join(","),
31
- mono: [
32
- "ui-monospace",
33
- "SFMono-Regular",
34
- "Menlo",
35
- "Monaco",
36
- "Consolas",
37
- '"Liberation Mono"',
38
- '"Courier New"',
39
- "monospace"
40
- ].join(",")
41
- };
42
- var fontSize = {
43
- "xs": ["0.75rem", "1rem"],
44
- "sm": ["0.875rem", "1.25rem"],
45
- "base": ["1rem", "1.5rem"],
46
- "lg": ["1.125rem", "1.75rem"],
47
- "xl": ["1.25rem", "1.75rem"],
48
- "2xl": ["1.5rem", "2rem"],
49
- "3xl": ["1.875rem", "2.25rem"],
50
- "4xl": ["2.25rem", "2.5rem"],
51
- "5xl": ["3rem", "1"],
52
- "6xl": ["3.75rem", "1"],
53
- "7xl": ["4.5rem", "1"],
54
- "8xl": ["6rem", "1"],
55
- "9xl": ["8rem", "1"]
56
- };
57
- var textIndent = {
58
- "DEFAULT": "1.5rem",
59
- "xs": "0.5rem",
60
- "sm": "1rem",
61
- "md": "1.5rem",
62
- "lg": "2rem",
63
- "xl": "2.5rem",
64
- "2xl": "3rem",
65
- "3xl": "4rem"
66
- };
67
- var textStrokeWidth = {
68
- DEFAULT: "1.5rem",
69
- none: "0",
70
- sm: "thin",
71
- md: "medium",
72
- lg: "thick"
73
- };
74
- var textShadow = {
75
- DEFAULT: "0px 0px 1px rgb(0 0 0/20%), 0px 0px 1px rgb(1 0 5/10%)",
76
- sm: "1px 1px 3px rgb(36 37 47 / 25%)",
77
- md: "0px 1px 2px rgb(30 29 39 / 19%), 1px 2px 4px rgb(54 64 147 / 18%)",
78
- lg: "3px 3px 6px rgb(0 0 0 / 26%), 0 0 5px rgb(15 3 86 / 22%)",
79
- xl: "1px 1px 3px rgb(0 0 0 / 29%), 2px 4px 7px rgb(73 64 125 / 35%)",
80
- none: "none"
81
- };
82
- var lineHeight = {
83
- none: "1",
84
- tight: "1.25",
85
- snug: "1.375",
86
- normal: "1.5",
87
- relaxed: "1.625",
88
- loose: "2"
89
- };
90
- var letterSpacing = {
91
- tighter: "-0.05em",
92
- tight: "-0.025em",
93
- normal: "0em",
94
- wide: "0.025em",
95
- wider: "0.05em",
96
- widest: "0.1em"
97
- };
98
- var wordSpacing = letterSpacing;
99
-
100
- // src/theme/misc.ts
101
- var breakpoints = {
102
- "sm": "640px",
103
- "md": "768px",
104
- "lg": "1024px",
105
- "xl": "1280px",
106
- "2xl": "1536px"
107
- };
108
- var borderRadius = {
109
- "DEFAULT": "0.25rem",
110
- "none": "0px",
111
- "sm": "0.125rem",
112
- "md": "0.375rem",
113
- "lg": "0.5rem",
114
- "xl": "0.75rem",
115
- "2xl": "1rem",
116
- "3xl": "1.5rem",
117
- "full": "9999px"
118
- };
119
- var boxShadow = {
120
- "DEFAULT": "0 1px 3px 0 rgba(var(--un-shadow-color), 0.1), 0 1px 2px 0 rgba(var(--un-shadow-color), 0.06)",
121
- "sm": "0 1px 2px 0 rgba(var(--un-shadow-color), 0.05)",
122
- "md": "0 4px 6px -1px rgba(var(--un-shadow-color), 0.1), 0 2px 4px -1px rgba(var(--un-shadow-color), 0.06)",
123
- "lg": "0 10px 15px -3px rgba(var(--un-shadow-color), 0.1), 0 4px 6px -2px rgba(var(--un-shadow-color), 0.05)",
124
- "xl": "0 20px 25px -5px rgba(var(--un-shadow-color), 0.1), 0 10px 10px -5px rgba(var(--un-shadow-color), 0.04)",
125
- "2xl": "25px 50px -12px rgba(var(--un-shadow-color), 0.25)",
126
- "inner": "inset 0 2px 4px 0 rgba(var(--un-shadow-color), 0.06)",
127
- "none": "none"
128
- };
129
-
130
- // src/theme/filters.ts
131
- var blur = {
132
- "DEFAULT": "8px",
133
- "0": "0",
134
- "sm": "4px",
135
- "md": "12px",
136
- "lg": "16px",
137
- "xl": "24px",
138
- "2xl": "40px",
139
- "3xl": "64px"
140
- };
141
- var dropShadow = {
142
- "DEFAULT": ["0 1px 2px rgba(0, 0, 0, 0.1)", "0 1px 1px rgba(0, 0, 0, 0.06)"],
143
- "sm": "0 1px 1px rgba(0,0,0,0.05)",
144
- "md": ["0 4px 3px rgba(0, 0, 0, 0.07)", "0 2px 2px rgba(0, 0, 0, 0.06)"],
145
- "lg": ["0 10px 8px rgba(0, 0, 0, 0.04)", "0 4px 3px rgba(0, 0, 0, 0.1)"],
146
- "xl": ["0 20px 13px rgba(0, 0, 0, 0.03)", "0 8px 5px rgba(0, 0, 0, 0.08)"],
147
- "2xl": "0 25px 25px rgba(0, 0, 0, 0.15)",
148
- "none": "0 0 #0000"
149
- };
150
-
151
- // src/theme/size.ts
152
- var baseSize = {
153
- "xs": "20rem",
154
- "sm": "24rem",
155
- "md": "28rem",
156
- "lg": "32rem",
157
- "xl": "36rem",
158
- "2xl": "42rem",
159
- "3xl": "48rem",
160
- "4xl": "56rem",
161
- "5xl": "64rem",
162
- "6xl": "72rem",
163
- "7xl": "80rem",
164
- "min": "min-content",
165
- "max": "max-content",
166
- "prose": "65ch"
167
- };
168
- var width = {
169
- auto: "auto",
170
- ...baseSize,
171
- screen: "100vw"
172
- };
173
- var maxWidth = {
174
- none: "none",
175
- ...baseSize,
176
- screen: "100vw"
177
- };
178
- var height = {
179
- auto: "auto",
180
- ...baseSize,
181
- screen: "100vh"
182
- };
183
- var maxHeight = {
184
- none: "none",
185
- ...baseSize,
186
- screen: "100vh"
187
- };
188
-
189
- // src/theme/default.ts
190
- var theme = {
191
- width,
192
- height,
193
- maxWidth,
194
- maxHeight,
195
- minWidth: maxWidth,
196
- minHeight: maxHeight,
197
- colors: _chunk7O4GGKN3js.colors,
198
- fontFamily,
199
- fontSize,
200
- breakpoints,
201
- borderRadius,
202
- lineHeight,
203
- letterSpacing,
204
- wordSpacing,
205
- boxShadow,
206
- textIndent,
207
- textShadow,
208
- textStrokeWidth,
209
- blur,
210
- dropShadow
211
- };
212
-
213
-
214
-
215
-
216
-
217
-
218
-
219
-
220
-
221
-
222
-
223
-
224
-
225
-
226
-
227
-
228
-
229
-
230
-
231
-
232
-
233
- exports.fontFamily = fontFamily; exports.fontSize = fontSize; exports.textIndent = textIndent; exports.textStrokeWidth = textStrokeWidth; exports.textShadow = textShadow; exports.lineHeight = lineHeight; exports.letterSpacing = letterSpacing; exports.wordSpacing = wordSpacing; exports.breakpoints = breakpoints; exports.borderRadius = borderRadius; exports.boxShadow = boxShadow; exports.blur = blur; exports.dropShadow = dropShadow; exports.baseSize = baseSize; exports.width = width; exports.maxWidth = maxWidth; exports.height = height; exports.maxHeight = maxHeight; exports.theme = theme;
@@ -1,106 +0,0 @@
1
- // src/variants/pseudo.ts
2
- import { toArray } from "@unocss/core";
3
- var CONTROL_BYPASS_PSEUDO = "$$no-pseudo";
4
- var PseudoClasses = Object.fromEntries([
5
- "active",
6
- "checked",
7
- "default",
8
- "empty",
9
- "enabled",
10
- "disabled",
11
- "first-of-type",
12
- ["first", "first-child"],
13
- "focus-visible",
14
- "focus-within",
15
- "focus",
16
- "hover",
17
- "indeterminate",
18
- "invalid",
19
- "last-of-type",
20
- ["last", "last-child"],
21
- "link",
22
- "only-child",
23
- "only-of-type",
24
- "optional",
25
- "placeholder-shown",
26
- "read-only",
27
- "read-write",
28
- "required",
29
- "root",
30
- "target",
31
- "valid",
32
- "visited",
33
- ["even-of-type", "nth-of-type(even)"],
34
- ["even", "nth-child(even)"],
35
- ["odd-of-type", "nth-of-type(odd)"],
36
- ["odd", "nth-child(odd)"]
37
- ].map(toArray));
38
- var PseudoElements = [
39
- "before",
40
- "after",
41
- "first-letter",
42
- "first-line",
43
- "selection"
44
- ];
45
- var PseudoElementsRE = new RegExp(`^(${PseudoElements.join("|")})[:-]`);
46
- var PseudoClassesStr = Object.keys(PseudoClasses).join("|");
47
- var PseudoClassesRE = new RegExp(`^(${PseudoClassesStr})[:-]`);
48
- var PseudoClassesNotRE = new RegExp(`^not-(${PseudoClassesStr})[:-]`);
49
- var PseudoClassesGroupRE = new RegExp(`^group-(${PseudoClassesStr})[:-]`);
50
- var PseudoClassesPeerRE = new RegExp(`^peer-(${PseudoClassesStr})[:-]`);
51
- var variantPseudoElements = (input) => {
52
- const match = input.match(PseudoElementsRE);
53
- if (match) {
54
- return {
55
- matcher: input.slice(match[1].length + 1),
56
- selector: (s, body) => shouldAdd(body) && `${s}::${match[1]}`
57
- };
58
- }
59
- };
60
- function shouldAdd(entires) {
61
- return !entires.find((i) => i[0] === CONTROL_BYPASS_PSEUDO) || void 0;
62
- }
63
- var variantPseudoClasses = {
64
- match: (input) => {
65
- let match = input.match(PseudoClassesRE);
66
- if (match) {
67
- const pseudo = PseudoClasses[match[1]] || match[1];
68
- return {
69
- matcher: input.slice(match[1].length + 1),
70
- selector: (s, body) => shouldAdd(body) && `${s}:${pseudo}`
71
- };
72
- }
73
- match = input.match(PseudoClassesNotRE);
74
- if (match) {
75
- const pseudo = PseudoClasses[match[1]] || match[1];
76
- return {
77
- matcher: input.slice(match[1].length + 5),
78
- selector: (s, body) => shouldAdd(body) && `${s}:not(:${pseudo})`
79
- };
80
- }
81
- match = input.match(PseudoClassesGroupRE);
82
- if (match) {
83
- const pseudo = PseudoClasses[match[1]] || match[1];
84
- return {
85
- matcher: input.slice(match[1].length + 7),
86
- selector: (s, body) => shouldAdd(body) && s.includes(".group:") ? s.replace(/\.group:/, `.group:${pseudo}:`) : `.group:${pseudo} ${s}`
87
- };
88
- }
89
- match = input.match(PseudoClassesPeerRE);
90
- if (match) {
91
- const pseudo = PseudoClasses[match[1]] || match[1];
92
- return {
93
- matcher: input.slice(match[1].length + 6),
94
- selector: (s, body) => shouldAdd(body) && s.includes(".peer:") ? s.replace(/\.peer:/, `.peer:${pseudo}:`) : `.peer:${pseudo} ~ ${s}`
95
- };
96
- }
97
- },
98
- multiPass: true
99
- };
100
-
101
- export {
102
- CONTROL_BYPASS_PSEUDO,
103
- PseudoClasses,
104
- variantPseudoElements,
105
- variantPseudoClasses
106
- };
@@ -1,139 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
- var _chunkVQNLS43Gjs = require('./chunk-VQNLS43G.js');
5
-
6
-
7
- var _chunkLPZDYB4Jjs = require('./chunk-LPZDYB4J.js');
8
-
9
- // src/variants/breakpoints.ts
10
- var regexCache = {};
11
- var variantBreakpoints = (matcher, _, theme) => {
12
- const variantEntries = Object.entries(theme.breakpoints || {}).map(([point, size], idx) => [point, size, idx]);
13
- for (const [point, size, idx] of variantEntries) {
14
- if (!regexCache[point])
15
- regexCache[point] = new RegExp(`^((?:[a|l]t-)?${point}[:-])`);
16
- const match = matcher.match(regexCache[point]);
17
- if (!match)
18
- continue;
19
- const [, pre] = match;
20
- let direction = "min";
21
- let order = parseInt(size);
22
- if (pre.startsWith("lt-")) {
23
- direction = "max";
24
- order = -order;
25
- }
26
- const m = matcher.slice(pre.length);
27
- if (m === "container")
28
- continue;
29
- if (pre.startsWith("at-") && idx < variantEntries.length - 1) {
30
- return {
31
- matcher: m,
32
- parent: [`@media (min-width: ${size}) and (max-width: ${variantEntries[idx + 1][1]})`, order]
33
- };
34
- }
35
- return {
36
- matcher: m,
37
- parent: [`@media (${direction}-width: ${size})`, order]
38
- };
39
- }
40
- };
41
-
42
- // src/variants/children.ts
43
- var variantChildren = [
44
- _chunkLPZDYB4Jjs.variantMatcher.call(void 0, "children", (input) => `${input} > *`),
45
- _chunkLPZDYB4Jjs.variantMatcher.call(void 0, "all", (input) => `${input} *`),
46
- _chunkLPZDYB4Jjs.variantMatcher.call(void 0, "next", (input) => `${input}+*`)
47
- ];
48
-
49
- // src/variants/dark.ts
50
- var variantColorsClass = [
51
- _chunkLPZDYB4Jjs.variantMatcher.call(void 0, "dark", (input) => `.dark $$ ${input}`),
52
- _chunkLPZDYB4Jjs.variantMatcher.call(void 0, "light", (input) => `.light $$ ${input}`)
53
- ];
54
- var variantColorsMedia = [
55
- (v) => {
56
- const dark = _chunkLPZDYB4Jjs.variantMatcher.call(void 0, "dark")(v);
57
- if (dark) {
58
- return {
59
- ...dark,
60
- parent: "@media (prefers-color-scheme: dark)"
61
- };
62
- }
63
- const light = _chunkLPZDYB4Jjs.variantMatcher.call(void 0, "light")(v);
64
- if (light) {
65
- return {
66
- ...light,
67
- parent: "@media (prefers-color-scheme: light)"
68
- };
69
- }
70
- }
71
- ];
72
-
73
- // src/variants/misc.ts
74
- var variantImportant = {
75
- match(matcher) {
76
- if (matcher.startsWith("!")) {
77
- return {
78
- matcher: matcher.slice(1),
79
- body: (body) => {
80
- body.forEach((v) => {
81
- if (v[1])
82
- v[1] += " !important";
83
- });
84
- return body;
85
- }
86
- };
87
- }
88
- }
89
- };
90
- var variantNegative = {
91
- match(matcher) {
92
- if (matcher.startsWith("-")) {
93
- return {
94
- matcher: matcher.slice(1),
95
- body: (body) => {
96
- body.forEach((v) => {
97
- var _a, _b;
98
- if (v[0].startsWith("--un-scale") || ((_a = v[1]) == null ? void 0 : _a.toString()) === "0")
99
- return;
100
- v[1] = (_b = v[1]) == null ? void 0 : _b.toString().replace(/[0-9.]+(?:[a-z]+|%)?/, (i) => `-${i}`);
101
- });
102
- return body;
103
- }
104
- };
105
- }
106
- }
107
- };
108
- var variantSpace = (matcher) => {
109
- if (/^space-?([xy])-?(-?.+)$/.test(matcher) || /^divide-/.test(matcher)) {
110
- return {
111
- matcher,
112
- selector: (input) => {
113
- return `${input}>:not([hidden])~:not([hidden])`;
114
- }
115
- };
116
- }
117
- };
118
-
119
- // src/variants/default.ts
120
- var variants = [
121
- variantSpace,
122
- variantNegative,
123
- variantImportant,
124
- variantBreakpoints,
125
- ...variantChildren,
126
- _chunkVQNLS43Gjs.variantPseudoClasses,
127
- _chunkVQNLS43Gjs.variantPseudoElements
128
- ];
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
- exports.variantBreakpoints = variantBreakpoints; exports.variantChildren = variantChildren; exports.variantColorsClass = variantColorsClass; exports.variantColorsMedia = variantColorsMedia; exports.variantImportant = variantImportant; exports.variantNegative = variantNegative; exports.variantSpace = variantSpace; exports.variants = variants;
@@ -1,190 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _chunkY6EUTGDCjs = require('./chunk-Y6EUTGDC.js');
4
-
5
- // src/utils/mappings.ts
6
- var directionMap = {
7
- "l": ["-left"],
8
- "r": ["-right"],
9
- "t": ["-top"],
10
- "b": ["-bottom"],
11
- "s": ["-inline-start"],
12
- "e": ["-inline-end"],
13
- "x": ["-left", "-right"],
14
- "y": ["-top", "-bottom"],
15
- "": [""],
16
- "a": [""]
17
- };
18
- var cornerMap = {
19
- "t": ["-top-left", "-top-right"],
20
- "r": ["-top-right", "-bottom-right"],
21
- "b": ["-bottom-left", "-bottom-right"],
22
- "l": ["-bottom-left", "-top-left"],
23
- "tl": ["-top-left"],
24
- "lt": ["-top-left"],
25
- "tr": ["-top-right"],
26
- "rt": ["-top-right"],
27
- "bl": ["-bottom-left"],
28
- "lb": ["-bottom-left"],
29
- "br": ["-bottom-right"],
30
- "rb": ["-bottom-right"],
31
- "": [""]
32
- };
33
- var xyzMap = {
34
- "x": ["-x"],
35
- "y": ["-y"],
36
- "z": ["-z"],
37
- "": ["-x", "-y"]
38
- };
39
-
40
- // src/utils/handlers/handlers.ts
41
- var handlers_exports = {};
42
- _chunkY6EUTGDCjs.__export.call(void 0, handlers_exports, {
43
- bracket: () => bracket,
44
- cssvar: () => cssvar,
45
- fraction: () => fraction,
46
- global: () => global,
47
- number: () => number,
48
- percent: () => percent,
49
- px: () => px,
50
- rem: () => rem,
51
- time: () => time
52
- });
53
- var numberWithUnitRE = /^(-?[0-9.]+)(px|pt|pc|rem|em|%|vh|vw|in|cm|mm|ex|ch|vmin|vmax)?$/i;
54
- var numberRE = /^(-?[0-9.]+)$/i;
55
- function rem(str) {
56
- if (str === "auto" || str === "a")
57
- return "auto";
58
- const match = str.match(numberWithUnitRE);
59
- if (!match)
60
- return;
61
- const [, n, unit] = match;
62
- if (unit)
63
- return str;
64
- const num = parseFloat(n);
65
- if (!Number.isNaN(num))
66
- return `${num / 4}rem`;
67
- }
68
- function px(str) {
69
- const match = str.match(numberWithUnitRE);
70
- if (!match)
71
- return;
72
- const [, n, unit] = match;
73
- if (unit)
74
- return str;
75
- const num = parseFloat(n);
76
- if (!Number.isNaN(num))
77
- return `${num}px`;
78
- }
79
- function number(str) {
80
- if (!numberRE.test(str))
81
- return;
82
- const num = parseFloat(str);
83
- if (!Number.isNaN(num))
84
- return num;
85
- }
86
- function percent(str) {
87
- if (str.endsWith("%"))
88
- str = str.slice(0, -1);
89
- const num = parseFloat(str);
90
- if (!Number.isNaN(num))
91
- return `${num / 100}`;
92
- }
93
- function fraction(str) {
94
- if (str === "full")
95
- return "100%";
96
- const [left, right] = str.split("/");
97
- const num = parseFloat(left) / parseFloat(right);
98
- if (!Number.isNaN(num))
99
- return `${num * 100}%`;
100
- }
101
- function bracket(str) {
102
- if (str && str[0] === "[" && str[str.length - 1] === "]") {
103
- return str.slice(1, -1).replace(/_/g, " ").replace(/calc\((.*)/g, (v) => {
104
- return v.replace(/(-?\d*\.?\d(?!\b-.+[,)](?![^+\-/*])\D)(?:%|[a-z]+)?|\))([+\-/*])/g, "$1 $2 ");
105
- });
106
- }
107
- }
108
- function cssvar(str) {
109
- if (str.startsWith("$"))
110
- return `var(--${str.slice(1)})`;
111
- }
112
- function time(str) {
113
- const duration = Number(str.replace(/(s|ms)$/, ""));
114
- if (isNaN(duration))
115
- return;
116
- if (/ms|s$/.test(str))
117
- return str;
118
- return `${str}ms`;
119
- }
120
- function global(str) {
121
- if (["inherit", "initial", "unset"].includes(str))
122
- return str;
123
- }
124
-
125
- // src/utils/handlers/shorthand.ts
126
- var handlersNames = Object.keys(handlers_exports);
127
- var handler = function(str) {
128
- var _a;
129
- const s = ((_a = this.__options) == null ? void 0 : _a.sequence) || [];
130
- this.__options.sequence = [];
131
- for (const n of s) {
132
- const res = handlers_exports[n](str);
133
- if (res != null)
134
- return res;
135
- }
136
- return void 0;
137
- };
138
- function addProcessor(that, name) {
139
- if (!that.__options) {
140
- that.__options = {
141
- sequence: []
142
- };
143
- }
144
- that.__options.sequence.push(name);
145
- return that;
146
- }
147
- handlersNames.forEach((i) => {
148
- Object.defineProperty(handler, i, {
149
- enumerable: true,
150
- get() {
151
- return addProcessor(this, i);
152
- }
153
- });
154
- });
155
-
156
- // src/utils/variants.ts
157
- var variantMatcher = (name, selector) => {
158
- const length = name.length + 1;
159
- const re = new RegExp(`^${name}[:-]`);
160
- return (input) => {
161
- return input.match(re) ? {
162
- matcher: input.slice(length),
163
- selector
164
- } : void 0;
165
- };
166
- };
167
-
168
- // src/utils/index.ts
169
- function capitalize(str) {
170
- return str.charAt(0).toUpperCase() + str.slice(1);
171
- }
172
-
173
-
174
-
175
-
176
-
177
-
178
-
179
-
180
-
181
-
182
-
183
-
184
-
185
-
186
-
187
-
188
-
189
-
190
- exports.directionMap = directionMap; exports.cornerMap = cornerMap; exports.xyzMap = xyzMap; exports.rem = rem; exports.px = px; exports.number = number; exports.percent = percent; exports.fraction = fraction; exports.bracket = bracket; exports.cssvar = cssvar; exports.time = time; exports.global = global; exports.handlersNames = handlersNames; exports.handler = handler; exports.variantMatcher = variantMatcher; exports.capitalize = capitalize;