vitrify 0.17.6 → 0.17.7
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/plugins/quasar/unocss/core/flex.unocss.js +16 -29
- package/dist/plugins/quasar/unocss/index.js +16 -4
- package/dist/plugins/quasar.js +18 -101
- package/dist/types/plugins/quasar/unocss/index.d.ts +2 -5
- package/dist/types/plugins/quasar.d.ts +3 -2
- package/package.json +2 -1
- package/src/node/plugins/quasar/unocss/core/flex.unocss.ts +13 -32
- package/src/node/plugins/quasar/unocss/index.ts +23 -8
- package/src/node/plugins/quasar.ts +30 -111
|
@@ -10,35 +10,22 @@ const colGutter = {
|
|
|
10
10
|
};
|
|
11
11
|
const sizes = ['sm', 'md', 'lg', 'xl'];
|
|
12
12
|
const shortcuts = [
|
|
13
|
-
[
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
/^column$/,
|
|
30
|
-
([, c], { theme }) => `flex flex-col flex-wrap
|
|
31
|
-
[&_>_.col]:(grow)
|
|
32
|
-
${sizes
|
|
33
|
-
.map((size) => `[&_>_.col-${size}]:(${size}:basis-auto ${size}:grow)`)
|
|
34
|
-
.join(' ')}
|
|
35
|
-
${grid.map((nr) => `[&_>_.col-${nr}]:(basis-${nr}/12)`).join(' ')}
|
|
36
|
-
${sizes
|
|
37
|
-
.map((size) => grid
|
|
38
|
-
.map((nr) => `[&_>_.col-${size}-${nr}]:(${size}:basis-${nr}/12)`)
|
|
39
|
-
.join(' '))
|
|
40
|
-
.join(' ')}
|
|
41
|
-
`
|
|
13
|
+
[/^row$/, ([, c], { theme }) => `flex flex-row flex-wrap`],
|
|
14
|
+
[/^column$/, ([, c], { theme }) => `flex flex-col flex-wrap`],
|
|
15
|
+
[
|
|
16
|
+
/^col(?:-)?(none|xs|sm|md|lg|xl)?(?:-)?([2-9]|1[0-2]?)?$/,
|
|
17
|
+
([, size, nr], { theme }) => {
|
|
18
|
+
if (size && nr) {
|
|
19
|
+
return `${size}:basis-${nr}/12)`;
|
|
20
|
+
}
|
|
21
|
+
else if (nr) {
|
|
22
|
+
return `basis-${nr}/12`;
|
|
23
|
+
}
|
|
24
|
+
else if (size) {
|
|
25
|
+
return `${size}:basis-auto ${size}:grow`;
|
|
26
|
+
}
|
|
27
|
+
return `grow`;
|
|
28
|
+
}
|
|
42
29
|
],
|
|
43
30
|
[
|
|
44
31
|
/^q-col-gutter-(none|xs|sm|md|lg|xl)$/,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Import normalize and animate css
|
|
2
|
-
import { definePreset, transformerVariantGroup } from 'unocss';
|
|
2
|
+
import { definePreset, presetIcons, transformerVariantGroup } from 'unocss';
|
|
3
3
|
import presetUno from '@unocss/preset-uno';
|
|
4
4
|
import { defaultTheme } from './theme.js';
|
|
5
5
|
import { animatedUno } from 'animated-unocss';
|
|
@@ -93,6 +93,13 @@ import { rules as VisibilityRules, preflights as VisibilityPreflights, shortcuts
|
|
|
93
93
|
import { shortcuts as QHeaderShortcuts } from './components/QHeader.unocss.js';
|
|
94
94
|
import { shortcuts as QFooterShortcuts } from './components/QFooter.unocss.js';
|
|
95
95
|
import { shortcuts as QDrawerShortcuts } from './components/QDrawer.unocss.js';
|
|
96
|
+
const extractKeys = (obj) => Object.values(obj).reduce((acc, cur) => {
|
|
97
|
+
if (typeof cur === 'string')
|
|
98
|
+
acc.push(cur);
|
|
99
|
+
else if (typeof cur === 'object')
|
|
100
|
+
acc = acc.concat(extractKeys(cur));
|
|
101
|
+
return acc;
|
|
102
|
+
}, []);
|
|
96
103
|
const toKebabCase = (str) => str
|
|
97
104
|
.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)
|
|
98
105
|
?.map((x) => x.toLowerCase())
|
|
@@ -1332,7 +1339,7 @@ const qClasses = [
|
|
|
1332
1339
|
'q-notification--bottom-leave-active',
|
|
1333
1340
|
'q-notification--bottom-right-leave-active'
|
|
1334
1341
|
];
|
|
1335
|
-
const generateSafelist = (plugins) => {
|
|
1342
|
+
const generateSafelist = ({ plugins, iconSet }) => {
|
|
1336
1343
|
let safelist = baseSafelist;
|
|
1337
1344
|
if (plugins) {
|
|
1338
1345
|
for (const plugin of plugins) {
|
|
@@ -1341,13 +1348,18 @@ const generateSafelist = (plugins) => {
|
|
|
1341
1348
|
safelist = safelist.concat(pluginSafelist);
|
|
1342
1349
|
}
|
|
1343
1350
|
}
|
|
1351
|
+
if (iconSet) {
|
|
1352
|
+
const iconSetSafelist = extractKeys(iconSet);
|
|
1353
|
+
if (iconSetSafelist)
|
|
1354
|
+
safelist = safelist.concat(iconSetSafelist);
|
|
1355
|
+
}
|
|
1344
1356
|
return safelist;
|
|
1345
1357
|
};
|
|
1346
1358
|
export default definePreset((options = {}) => {
|
|
1347
1359
|
return {
|
|
1348
1360
|
name: 'quasar',
|
|
1349
|
-
presets: [presetUno(), animatedUno()],
|
|
1350
|
-
safelist: generateSafelist(options
|
|
1361
|
+
presets: [presetUno(), animatedUno(), presetIcons({})],
|
|
1362
|
+
safelist: generateSafelist(options),
|
|
1351
1363
|
preflights: [
|
|
1352
1364
|
{
|
|
1353
1365
|
getCSS: ({ theme }) => `/* beasties:include start */
|
package/dist/plugins/quasar.js
CHANGED
|
@@ -74,11 +74,17 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
|
|
|
74
74
|
const { default: lang } = await import('virtual:quasar-lang');
|
|
75
75
|
// @ts-ignore
|
|
76
76
|
const { default: iconSet } = await import('virtual:quasar-iconSet');
|
|
77
|
+
const { default: iconMapFn } = await import(
|
|
78
|
+
// @ts-ignore
|
|
79
|
+
'virtual:quasar-iconMapFn');
|
|
77
80
|
app.use(staticImports?.Quasar, {
|
|
78
81
|
plugins: quasarPlugins,
|
|
79
82
|
directives,
|
|
80
83
|
lang,
|
|
81
|
-
iconSet
|
|
84
|
+
iconSet,
|
|
85
|
+
config: {
|
|
86
|
+
iconMapFn
|
|
87
|
+
}
|
|
82
88
|
}, ssrContext);
|
|
83
89
|
}
|
|
84
90
|
];
|
|
@@ -117,104 +123,6 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
|
|
|
117
123
|
? undefined
|
|
118
124
|
: {
|
|
119
125
|
global: ['quasar/src/css/index.sass']
|
|
120
|
-
// global: [
|
|
121
|
-
// 'quasar/src/css/helpers/string.sass',
|
|
122
|
-
// 'quasar/src/css/helpers/math.sass',
|
|
123
|
-
// 'quasar/src/css/variables.sass',
|
|
124
|
-
// 'quasar/src/css/normalize.sass',
|
|
125
|
-
// // 'quasar/src/components/icon/QIcon.sass',
|
|
126
|
-
// // /* Composables */
|
|
127
|
-
// // 'quasar/src/composables/private.use-panel/use-panel.sass',
|
|
128
|
-
// // /* Components */
|
|
129
|
-
// // 'quasar/src/components/ajax-bar/QAjaxBar.sass',
|
|
130
|
-
// // 'quasar/src/components/avatar/QAvatar.sass',
|
|
131
|
-
// // 'quasar/src/components/badge/QBadge.sass',
|
|
132
|
-
// // 'quasar/src/components/banner/QBanner.sass',
|
|
133
|
-
// // 'quasar/src/components/bar/QBar.sass',
|
|
134
|
-
// // 'quasar/src/components/breadcrumbs/QBreadcrumbs.sass',
|
|
135
|
-
// // 'quasar/src/components/btn/QBtn.sass',
|
|
136
|
-
// // 'quasar/src/components/btn-dropdown/QBtnDropdown.sass',
|
|
137
|
-
// // 'quasar/src/components/btn-group/QBtnGroup.sass',
|
|
138
|
-
// // 'quasar/src/components/btn-toggle/QBtnToggle.sass',
|
|
139
|
-
// // 'quasar/src/components/card/QCard.sass',
|
|
140
|
-
// // 'quasar/src/components/carousel/QCarousel.sass',
|
|
141
|
-
// // 'quasar/src/components/chat/QChatMessage.sass',
|
|
142
|
-
// // 'quasar/src/components/checkbox/QCheckbox.sass',
|
|
143
|
-
// // 'quasar/src/components/chip/QChip.sass',
|
|
144
|
-
// // 'quasar/src/components/circular-progress/QCircularProgress.sass',
|
|
145
|
-
// // 'quasar/src/components/color/QColor.sass',
|
|
146
|
-
// // 'quasar/src/components/date/QDate.sass',
|
|
147
|
-
// // 'quasar/src/components/dialog/QDialog.sass',
|
|
148
|
-
// // 'quasar/src/components/editor/QEditor.sass',
|
|
149
|
-
// // 'quasar/src/components/expansion-item/QExpansionItem.sass',
|
|
150
|
-
// // 'quasar/src/components/fab/QFab.sass',
|
|
151
|
-
// // 'quasar/src/components/field/QField.sass',
|
|
152
|
-
// 'quasar/src/components/file/QFile.sass',
|
|
153
|
-
// 'quasar/src/components/form/QForm.sass',
|
|
154
|
-
// 'quasar/src/components/img/QImg.sass',
|
|
155
|
-
// 'quasar/src/components/inner-loading/QInnerLoading.sass',
|
|
156
|
-
// 'quasar/src/components/input/QInput.sass',
|
|
157
|
-
// 'quasar/src/components/intersection/QIntersection.sass',
|
|
158
|
-
// 'quasar/src/components/item/QItem.sass',
|
|
159
|
-
// 'quasar/src/components/knob/QKnob.sass',
|
|
160
|
-
// 'quasar/src/components/layout/QLayout.sass',
|
|
161
|
-
// 'quasar/src/components/linear-progress/QLinearProgress.sass',
|
|
162
|
-
// 'quasar/src/components/menu/QMenu.sass',
|
|
163
|
-
// 'quasar/src/components/option-group/QOptionGroup.sass',
|
|
164
|
-
// 'quasar/src/components/pagination/QPagination.sass',
|
|
165
|
-
// 'quasar/src/components/parallax/QParallax.sass',
|
|
166
|
-
// 'quasar/src/components/popup-edit/QPopupEdit.sass',
|
|
167
|
-
// 'quasar/src/components/pull-to-refresh/QPullToRefresh.sass',
|
|
168
|
-
// 'quasar/src/components/radio/QRadio.sass',
|
|
169
|
-
// 'quasar/src/components/rating/QRating.sass',
|
|
170
|
-
// 'quasar/src/components/responsive/QResponsive.sass',
|
|
171
|
-
// 'quasar/src/components/scroll-area/QScrollArea.sass',
|
|
172
|
-
// 'quasar/src/components/select/QSelect.sass',
|
|
173
|
-
// 'quasar/src/components/separator/QSeparator.sass',
|
|
174
|
-
// 'quasar/src/components/skeleton/QSkeleton.sass',
|
|
175
|
-
// 'quasar/src/components/slide-item/QSlideItem.sass',
|
|
176
|
-
// 'quasar/src/components/slider/QSlider.sass',
|
|
177
|
-
// 'quasar/src/components/space/QSpace.sass',
|
|
178
|
-
// 'quasar/src/components/spinner/QSpinner.sass',
|
|
179
|
-
// 'quasar/src/components/splitter/QSplitter.sass',
|
|
180
|
-
// 'quasar/src/components/stepper/QStepper.sass',
|
|
181
|
-
// 'quasar/src/components/tab-panels/QTabPanel.sass',
|
|
182
|
-
// 'quasar/src/components/table/QTable.sass',
|
|
183
|
-
// 'quasar/src/components/tabs/QTabs.sass',
|
|
184
|
-
// 'quasar/src/components/time/QTime.sass',
|
|
185
|
-
// 'quasar/src/components/timeline/QTimeline.sass',
|
|
186
|
-
// 'quasar/src/components/toggle/QToggle.sass',
|
|
187
|
-
// 'quasar/src/components/toolbar/QToolbar.sass',
|
|
188
|
-
// 'quasar/src/components/tooltip/QTooltip.sass',
|
|
189
|
-
// 'quasar/src/components/tree/QTree.sass',
|
|
190
|
-
// 'quasar/src/components/uploader/QUploader.sass',
|
|
191
|
-
// 'quasar/src/components/video/QVideo.sass',
|
|
192
|
-
// 'quasar/src/components/virtual-scroll/QVirtualScroll.sass',
|
|
193
|
-
// /* Directives */
|
|
194
|
-
// 'quasar/src/directives/ripple/Ripple.sass',
|
|
195
|
-
// 'quasar/src/directives/morph/Morph.sass',
|
|
196
|
-
// /* Plugins */
|
|
197
|
-
// 'quasar/src/plugins/bottom-sheet/component/BottomSheetComponent.sass',
|
|
198
|
-
// 'quasar/src/plugins/dialog/component/DialogPluginComponent.sass',
|
|
199
|
-
// 'quasar/src/plugins/loading/Loading.sass',
|
|
200
|
-
// 'quasar/src/plugins/notify/Notify.sass',
|
|
201
|
-
// /* Core */
|
|
202
|
-
// 'quasar/src/css/core/animations.sass',
|
|
203
|
-
// 'quasar/src/css/core/colors.sass',
|
|
204
|
-
// 'quasar/src/css/core/elevation.sass',
|
|
205
|
-
// 'quasar/src/css/core/flex.sass',
|
|
206
|
-
// 'quasar/src/css/core/helpers.sass',
|
|
207
|
-
// 'quasar/src/css/core/mouse.sass',
|
|
208
|
-
// 'quasar/src/css/core/orientation.sass',
|
|
209
|
-
// 'quasar/src/css/core/positioning.sass',
|
|
210
|
-
// 'quasar/src/css/core/size.sass',
|
|
211
|
-
// 'quasar/src/css/core/touch.sass',
|
|
212
|
-
// 'quasar/src/css/core/transitions.sass',
|
|
213
|
-
// 'quasar/src/css/core/typography.sass',
|
|
214
|
-
// 'quasar/src/css/core/visibility.sass',
|
|
215
|
-
// 'quasar/src/css/core/dark.sass'
|
|
216
|
-
// ]
|
|
217
|
-
// additionalData: [`@import 'quasar/src/css/index.sass'`]
|
|
218
126
|
}
|
|
219
127
|
},
|
|
220
128
|
resolve: {
|
|
@@ -262,6 +170,8 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
|
|
|
262
170
|
return 'virtual:quasar-lang';
|
|
263
171
|
case 'virtual:quasar-iconSet':
|
|
264
172
|
return 'virtual:quasar-iconSet';
|
|
173
|
+
case 'virtual:quasar-iconMapFn':
|
|
174
|
+
return 'virtual:quasar-iconMapFn';
|
|
265
175
|
case 'virtual:quasar':
|
|
266
176
|
return { id: 'virtual:quasar', moduleSideEffects: false };
|
|
267
177
|
default:
|
|
@@ -280,8 +190,15 @@ export const QuasarPlugin = async ({ ssr = false, pwa = false }) => {
|
|
|
280
190
|
export default lang`;
|
|
281
191
|
}
|
|
282
192
|
else if (id === 'virtual:quasar-iconSet') {
|
|
283
|
-
return
|
|
284
|
-
|
|
193
|
+
return `${typeof quasarConf.framework.iconSet === 'string'
|
|
194
|
+
? `import iconSet from 'quasar/icon-set/${quasarConf?.framework.iconSet || 'material-icons'}';
|
|
195
|
+
export default iconSet`
|
|
196
|
+
: `export default ${quasarConf.framework.iconSet
|
|
197
|
+
? JSON.stringify(quasarConf.framework.iconSet)
|
|
198
|
+
: null}`}`;
|
|
199
|
+
}
|
|
200
|
+
else if (id === 'virtual:quasar-iconMapFn') {
|
|
201
|
+
return `export default ${quasarConf?.framework.iconMapFn?.toString() ?? null}`;
|
|
285
202
|
}
|
|
286
203
|
else if (id === 'virtual:quasar') {
|
|
287
204
|
return `export * from 'quasar/src/plugins.js';
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import { type QuasarPlugins } from 'quasar';
|
|
1
|
+
import { type QuasarIconSet, type QuasarPlugins } from 'quasar';
|
|
2
2
|
export interface QuasarPresetOptions {
|
|
3
3
|
plugins?: (keyof QuasarPlugins)[];
|
|
4
|
-
|
|
5
|
-
shadowColor?: string;
|
|
6
|
-
darkShadowColor?: string;
|
|
7
|
-
};
|
|
4
|
+
iconSet?: QuasarIconSet;
|
|
8
5
|
}
|
|
9
6
|
declare const _default: import("unocss").Preset<object>;
|
|
10
7
|
export default _default;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { VitrifyPlugin } from './index.js';
|
|
2
|
-
import { type QuasarFonts, type QuasarComponents, type QuasarDirectives, type QuasarIconSets, type QuasarPlugins } from 'quasar';
|
|
2
|
+
import { type QuasarFonts, type QuasarComponents, type QuasarDirectives, type QuasarIconSets, type QuasarPlugins, type GlobalQuasarIconMapFn, type QuasarIconSet } from 'quasar';
|
|
3
3
|
export interface QuasarConf {
|
|
4
4
|
framework: {
|
|
5
5
|
components?: (keyof QuasarComponents)[];
|
|
6
6
|
directives?: (keyof QuasarDirectives)[];
|
|
7
7
|
plugins?: (keyof QuasarPlugins)[];
|
|
8
8
|
lang?: string;
|
|
9
|
-
iconSet?: QuasarIconSets;
|
|
9
|
+
iconSet?: QuasarIconSets | QuasarIconSet;
|
|
10
|
+
iconMapFn?: GlobalQuasarIconMapFn;
|
|
10
11
|
};
|
|
11
12
|
extras?: (QuasarIconSets | QuasarFonts)[];
|
|
12
13
|
disableSass?: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vitrify",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.7",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Stefan van Herwijnen",
|
|
6
6
|
"description": "Vite as your Full Stack development tool",
|
|
@@ -81,6 +81,7 @@
|
|
|
81
81
|
"@types/merge-deep": "^3.0.3",
|
|
82
82
|
"@types/node": "^22.10.2",
|
|
83
83
|
"@types/ws": "^8.5.13",
|
|
84
|
+
"@unocss/preset-icons": "^65.4.2",
|
|
84
85
|
"@vue/runtime-core": "^3.5.13",
|
|
85
86
|
"beasties": "^0.2.0",
|
|
86
87
|
"css": "^3.0.0",
|
|
@@ -16,39 +16,20 @@ const colGutter = {
|
|
|
16
16
|
const sizes = ['sm', 'md', 'lg', 'xl']
|
|
17
17
|
|
|
18
18
|
const shortcuts: UserShortcuts<QuasarTheme> = [
|
|
19
|
+
[/^row$/, ([, c], { theme }) => `flex flex-row flex-wrap`],
|
|
20
|
+
[/^column$/, ([, c], { theme }) => `flex flex-col flex-wrap`],
|
|
19
21
|
[
|
|
20
|
-
/^
|
|
21
|
-
([,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
.join(' ')
|
|
32
|
-
)
|
|
33
|
-
.join(' ')}
|
|
34
|
-
`
|
|
35
|
-
],
|
|
36
|
-
[
|
|
37
|
-
/^column$/,
|
|
38
|
-
([, c], { theme }) => `flex flex-col flex-wrap
|
|
39
|
-
[&_>_.col]:(grow)
|
|
40
|
-
${sizes
|
|
41
|
-
.map((size) => `[&_>_.col-${size}]:(${size}:basis-auto ${size}:grow)`)
|
|
42
|
-
.join(' ')}
|
|
43
|
-
${grid.map((nr) => `[&_>_.col-${nr}]:(basis-${nr}/12)`).join(' ')}
|
|
44
|
-
${sizes
|
|
45
|
-
.map((size) =>
|
|
46
|
-
grid
|
|
47
|
-
.map((nr) => `[&_>_.col-${size}-${nr}]:(${size}:basis-${nr}/12)`)
|
|
48
|
-
.join(' ')
|
|
49
|
-
)
|
|
50
|
-
.join(' ')}
|
|
51
|
-
`
|
|
22
|
+
/^col(?:-)?(none|xs|sm|md|lg|xl)?(?:-)?([2-9]|1[0-2]?)?$/,
|
|
23
|
+
([, size, nr], { theme }) => {
|
|
24
|
+
if (size && nr) {
|
|
25
|
+
return `${size}:basis-${nr}/12)`
|
|
26
|
+
} else if (nr) {
|
|
27
|
+
return `basis-${nr}/12`
|
|
28
|
+
} else if (size) {
|
|
29
|
+
return `${size}:basis-auto ${size}:grow`
|
|
30
|
+
}
|
|
31
|
+
return `grow`
|
|
32
|
+
}
|
|
52
33
|
],
|
|
53
34
|
[
|
|
54
35
|
/^q-col-gutter-(none|xs|sm|md|lg|xl)$/,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
definePreset,
|
|
4
4
|
type Preflight,
|
|
5
|
+
presetIcons,
|
|
5
6
|
type Rule,
|
|
6
7
|
transformerVariantGroup,
|
|
7
8
|
type UserShortcuts
|
|
@@ -166,16 +167,20 @@ import {
|
|
|
166
167
|
import { shortcuts as QHeaderShortcuts } from './components/QHeader.unocss.js'
|
|
167
168
|
import { shortcuts as QFooterShortcuts } from './components/QFooter.unocss.js'
|
|
168
169
|
import { shortcuts as QDrawerShortcuts } from './components/QDrawer.unocss.js'
|
|
169
|
-
import { type QuasarPlugins } from 'quasar'
|
|
170
|
+
import { type QuasarIconSet, type QuasarPlugins } from 'quasar'
|
|
170
171
|
|
|
171
172
|
export interface QuasarPresetOptions {
|
|
172
173
|
plugins?: (keyof QuasarPlugins)[]
|
|
173
|
-
|
|
174
|
-
shadowColor?: string
|
|
175
|
-
darkShadowColor?: string
|
|
176
|
-
}
|
|
174
|
+
iconSet?: QuasarIconSet
|
|
177
175
|
}
|
|
178
176
|
|
|
177
|
+
const extractKeys = (obj: Record<string, any>) =>
|
|
178
|
+
Object.values(obj).reduce((acc, cur) => {
|
|
179
|
+
if (typeof cur === 'string') acc.push(cur)
|
|
180
|
+
else if (typeof cur === 'object') acc = acc.concat(extractKeys(cur))
|
|
181
|
+
return acc
|
|
182
|
+
}, [] as string[])
|
|
183
|
+
|
|
179
184
|
const toKebabCase = (str: string) =>
|
|
180
185
|
str
|
|
181
186
|
.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)
|
|
@@ -1420,7 +1425,13 @@ const qClasses = [
|
|
|
1420
1425
|
'q-notification--bottom-right-leave-active'
|
|
1421
1426
|
]
|
|
1422
1427
|
|
|
1423
|
-
const generateSafelist = (
|
|
1428
|
+
const generateSafelist = ({
|
|
1429
|
+
plugins,
|
|
1430
|
+
iconSet
|
|
1431
|
+
}: {
|
|
1432
|
+
plugins?: (keyof QuasarPlugins)[]
|
|
1433
|
+
iconSet?: QuasarIconSet
|
|
1434
|
+
}) => {
|
|
1424
1435
|
let safelist = baseSafelist
|
|
1425
1436
|
if (plugins) {
|
|
1426
1437
|
for (const plugin of plugins) {
|
|
@@ -1428,14 +1439,18 @@ const generateSafelist = (plugins?: (keyof QuasarPlugins)[]) => {
|
|
|
1428
1439
|
if (pluginSafelist) safelist = safelist.concat(pluginSafelist)
|
|
1429
1440
|
}
|
|
1430
1441
|
}
|
|
1442
|
+
if (iconSet) {
|
|
1443
|
+
const iconSetSafelist = extractKeys(iconSet)
|
|
1444
|
+
if (iconSetSafelist) safelist = safelist.concat(iconSetSafelist)
|
|
1445
|
+
}
|
|
1431
1446
|
return safelist
|
|
1432
1447
|
}
|
|
1433
1448
|
|
|
1434
1449
|
export default definePreset((options: QuasarPresetOptions = {}) => {
|
|
1435
1450
|
return {
|
|
1436
1451
|
name: 'quasar',
|
|
1437
|
-
presets: [presetUno(), animatedUno()],
|
|
1438
|
-
safelist: generateSafelist(options
|
|
1452
|
+
presets: [presetUno(), animatedUno(), presetIcons({})],
|
|
1453
|
+
safelist: generateSafelist(options),
|
|
1439
1454
|
preflights: (
|
|
1440
1455
|
[
|
|
1441
1456
|
{
|
|
@@ -12,7 +12,9 @@ import {
|
|
|
12
12
|
type QuasarComponents,
|
|
13
13
|
type QuasarDirectives,
|
|
14
14
|
type QuasarIconSets,
|
|
15
|
-
type QuasarPlugins
|
|
15
|
+
type QuasarPlugins,
|
|
16
|
+
type GlobalQuasarIconMapFn,
|
|
17
|
+
type QuasarIconSet
|
|
16
18
|
} from 'quasar'
|
|
17
19
|
|
|
18
20
|
export interface QuasarConf {
|
|
@@ -21,7 +23,8 @@ export interface QuasarConf {
|
|
|
21
23
|
directives?: (keyof QuasarDirectives)[]
|
|
22
24
|
plugins?: (keyof QuasarPlugins)[]
|
|
23
25
|
lang?: string
|
|
24
|
-
iconSet?: QuasarIconSets
|
|
26
|
+
iconSet?: QuasarIconSets | QuasarIconSet
|
|
27
|
+
iconMapFn?: GlobalQuasarIconMapFn
|
|
25
28
|
}
|
|
26
29
|
extras?: (QuasarIconSets | QuasarFonts)[]
|
|
27
30
|
disableSass?: boolean
|
|
@@ -146,6 +149,10 @@ export const QuasarPlugin: VitrifyPlugin = async ({
|
|
|
146
149
|
const { default: lang } = await import('virtual:quasar-lang')
|
|
147
150
|
// @ts-ignore
|
|
148
151
|
const { default: iconSet } = await import('virtual:quasar-iconSet')
|
|
152
|
+
const { default: iconMapFn } = await import(
|
|
153
|
+
// @ts-ignore
|
|
154
|
+
'virtual:quasar-iconMapFn'
|
|
155
|
+
)
|
|
149
156
|
|
|
150
157
|
app.use(
|
|
151
158
|
staticImports?.Quasar,
|
|
@@ -153,7 +160,10 @@ export const QuasarPlugin: VitrifyPlugin = async ({
|
|
|
153
160
|
plugins: quasarPlugins,
|
|
154
161
|
directives,
|
|
155
162
|
lang,
|
|
156
|
-
iconSet
|
|
163
|
+
iconSet,
|
|
164
|
+
config: {
|
|
165
|
+
iconMapFn
|
|
166
|
+
}
|
|
157
167
|
},
|
|
158
168
|
ssrContext
|
|
159
169
|
)
|
|
@@ -196,111 +206,6 @@ export const QuasarPlugin: VitrifyPlugin = async ({
|
|
|
196
206
|
? undefined
|
|
197
207
|
: {
|
|
198
208
|
global: ['quasar/src/css/index.sass']
|
|
199
|
-
// global: [
|
|
200
|
-
// 'quasar/src/css/helpers/string.sass',
|
|
201
|
-
// 'quasar/src/css/helpers/math.sass',
|
|
202
|
-
|
|
203
|
-
// 'quasar/src/css/variables.sass',
|
|
204
|
-
// 'quasar/src/css/normalize.sass',
|
|
205
|
-
|
|
206
|
-
// // 'quasar/src/components/icon/QIcon.sass',
|
|
207
|
-
|
|
208
|
-
// // /* Composables */
|
|
209
|
-
// // 'quasar/src/composables/private.use-panel/use-panel.sass',
|
|
210
|
-
|
|
211
|
-
// // /* Components */
|
|
212
|
-
// // 'quasar/src/components/ajax-bar/QAjaxBar.sass',
|
|
213
|
-
// // 'quasar/src/components/avatar/QAvatar.sass',
|
|
214
|
-
// // 'quasar/src/components/badge/QBadge.sass',
|
|
215
|
-
// // 'quasar/src/components/banner/QBanner.sass',
|
|
216
|
-
// // 'quasar/src/components/bar/QBar.sass',
|
|
217
|
-
// // 'quasar/src/components/breadcrumbs/QBreadcrumbs.sass',
|
|
218
|
-
// // 'quasar/src/components/btn/QBtn.sass',
|
|
219
|
-
// // 'quasar/src/components/btn-dropdown/QBtnDropdown.sass',
|
|
220
|
-
// // 'quasar/src/components/btn-group/QBtnGroup.sass',
|
|
221
|
-
// // 'quasar/src/components/btn-toggle/QBtnToggle.sass',
|
|
222
|
-
// // 'quasar/src/components/card/QCard.sass',
|
|
223
|
-
// // 'quasar/src/components/carousel/QCarousel.sass',
|
|
224
|
-
// // 'quasar/src/components/chat/QChatMessage.sass',
|
|
225
|
-
// // 'quasar/src/components/checkbox/QCheckbox.sass',
|
|
226
|
-
// // 'quasar/src/components/chip/QChip.sass',
|
|
227
|
-
// // 'quasar/src/components/circular-progress/QCircularProgress.sass',
|
|
228
|
-
// // 'quasar/src/components/color/QColor.sass',
|
|
229
|
-
// // 'quasar/src/components/date/QDate.sass',
|
|
230
|
-
// // 'quasar/src/components/dialog/QDialog.sass',
|
|
231
|
-
// // 'quasar/src/components/editor/QEditor.sass',
|
|
232
|
-
// // 'quasar/src/components/expansion-item/QExpansionItem.sass',
|
|
233
|
-
// // 'quasar/src/components/fab/QFab.sass',
|
|
234
|
-
// // 'quasar/src/components/field/QField.sass',
|
|
235
|
-
// 'quasar/src/components/file/QFile.sass',
|
|
236
|
-
// 'quasar/src/components/form/QForm.sass',
|
|
237
|
-
// 'quasar/src/components/img/QImg.sass',
|
|
238
|
-
// 'quasar/src/components/inner-loading/QInnerLoading.sass',
|
|
239
|
-
// 'quasar/src/components/input/QInput.sass',
|
|
240
|
-
// 'quasar/src/components/intersection/QIntersection.sass',
|
|
241
|
-
// 'quasar/src/components/item/QItem.sass',
|
|
242
|
-
// 'quasar/src/components/knob/QKnob.sass',
|
|
243
|
-
// 'quasar/src/components/layout/QLayout.sass',
|
|
244
|
-
// 'quasar/src/components/linear-progress/QLinearProgress.sass',
|
|
245
|
-
// 'quasar/src/components/menu/QMenu.sass',
|
|
246
|
-
// 'quasar/src/components/option-group/QOptionGroup.sass',
|
|
247
|
-
// 'quasar/src/components/pagination/QPagination.sass',
|
|
248
|
-
// 'quasar/src/components/parallax/QParallax.sass',
|
|
249
|
-
// 'quasar/src/components/popup-edit/QPopupEdit.sass',
|
|
250
|
-
// 'quasar/src/components/pull-to-refresh/QPullToRefresh.sass',
|
|
251
|
-
// 'quasar/src/components/radio/QRadio.sass',
|
|
252
|
-
// 'quasar/src/components/rating/QRating.sass',
|
|
253
|
-
// 'quasar/src/components/responsive/QResponsive.sass',
|
|
254
|
-
// 'quasar/src/components/scroll-area/QScrollArea.sass',
|
|
255
|
-
// 'quasar/src/components/select/QSelect.sass',
|
|
256
|
-
// 'quasar/src/components/separator/QSeparator.sass',
|
|
257
|
-
// 'quasar/src/components/skeleton/QSkeleton.sass',
|
|
258
|
-
// 'quasar/src/components/slide-item/QSlideItem.sass',
|
|
259
|
-
// 'quasar/src/components/slider/QSlider.sass',
|
|
260
|
-
// 'quasar/src/components/space/QSpace.sass',
|
|
261
|
-
// 'quasar/src/components/spinner/QSpinner.sass',
|
|
262
|
-
// 'quasar/src/components/splitter/QSplitter.sass',
|
|
263
|
-
// 'quasar/src/components/stepper/QStepper.sass',
|
|
264
|
-
// 'quasar/src/components/tab-panels/QTabPanel.sass',
|
|
265
|
-
// 'quasar/src/components/table/QTable.sass',
|
|
266
|
-
// 'quasar/src/components/tabs/QTabs.sass',
|
|
267
|
-
// 'quasar/src/components/time/QTime.sass',
|
|
268
|
-
// 'quasar/src/components/timeline/QTimeline.sass',
|
|
269
|
-
// 'quasar/src/components/toggle/QToggle.sass',
|
|
270
|
-
// 'quasar/src/components/toolbar/QToolbar.sass',
|
|
271
|
-
// 'quasar/src/components/tooltip/QTooltip.sass',
|
|
272
|
-
// 'quasar/src/components/tree/QTree.sass',
|
|
273
|
-
// 'quasar/src/components/uploader/QUploader.sass',
|
|
274
|
-
// 'quasar/src/components/video/QVideo.sass',
|
|
275
|
-
// 'quasar/src/components/virtual-scroll/QVirtualScroll.sass',
|
|
276
|
-
|
|
277
|
-
// /* Directives */
|
|
278
|
-
// 'quasar/src/directives/ripple/Ripple.sass',
|
|
279
|
-
// 'quasar/src/directives/morph/Morph.sass',
|
|
280
|
-
|
|
281
|
-
// /* Plugins */
|
|
282
|
-
// 'quasar/src/plugins/bottom-sheet/component/BottomSheetComponent.sass',
|
|
283
|
-
// 'quasar/src/plugins/dialog/component/DialogPluginComponent.sass',
|
|
284
|
-
// 'quasar/src/plugins/loading/Loading.sass',
|
|
285
|
-
// 'quasar/src/plugins/notify/Notify.sass',
|
|
286
|
-
|
|
287
|
-
// /* Core */
|
|
288
|
-
// 'quasar/src/css/core/animations.sass',
|
|
289
|
-
// 'quasar/src/css/core/colors.sass',
|
|
290
|
-
// 'quasar/src/css/core/elevation.sass',
|
|
291
|
-
// 'quasar/src/css/core/flex.sass',
|
|
292
|
-
// 'quasar/src/css/core/helpers.sass',
|
|
293
|
-
// 'quasar/src/css/core/mouse.sass',
|
|
294
|
-
// 'quasar/src/css/core/orientation.sass',
|
|
295
|
-
// 'quasar/src/css/core/positioning.sass',
|
|
296
|
-
// 'quasar/src/css/core/size.sass',
|
|
297
|
-
// 'quasar/src/css/core/touch.sass',
|
|
298
|
-
// 'quasar/src/css/core/transitions.sass',
|
|
299
|
-
// 'quasar/src/css/core/typography.sass',
|
|
300
|
-
// 'quasar/src/css/core/visibility.sass',
|
|
301
|
-
// 'quasar/src/css/core/dark.sass'
|
|
302
|
-
// ]
|
|
303
|
-
// additionalData: [`@import 'quasar/src/css/index.sass'`]
|
|
304
209
|
}
|
|
305
210
|
},
|
|
306
211
|
resolve: {
|
|
@@ -350,6 +255,8 @@ export const QuasarPlugin: VitrifyPlugin = async ({
|
|
|
350
255
|
return 'virtual:quasar-lang'
|
|
351
256
|
case 'virtual:quasar-iconSet':
|
|
352
257
|
return 'virtual:quasar-iconSet'
|
|
258
|
+
case 'virtual:quasar-iconMapFn':
|
|
259
|
+
return 'virtual:quasar-iconMapFn'
|
|
353
260
|
case 'virtual:quasar':
|
|
354
261
|
return { id: 'virtual:quasar', moduleSideEffects: false }
|
|
355
262
|
default:
|
|
@@ -367,10 +274,22 @@ export const QuasarPlugin: VitrifyPlugin = async ({
|
|
|
367
274
|
}';
|
|
368
275
|
export default lang`
|
|
369
276
|
} else if (id === 'virtual:quasar-iconSet') {
|
|
370
|
-
return
|
|
371
|
-
quasarConf
|
|
372
|
-
|
|
277
|
+
return `${
|
|
278
|
+
typeof quasarConf.framework.iconSet === 'string'
|
|
279
|
+
? `import iconSet from 'quasar/icon-set/${
|
|
280
|
+
quasarConf?.framework.iconSet || 'material-icons'
|
|
281
|
+
}';
|
|
373
282
|
export default iconSet`
|
|
283
|
+
: `export default ${
|
|
284
|
+
quasarConf.framework.iconSet
|
|
285
|
+
? JSON.stringify(quasarConf.framework.iconSet)
|
|
286
|
+
: null
|
|
287
|
+
}`
|
|
288
|
+
}`
|
|
289
|
+
} else if (id === 'virtual:quasar-iconMapFn') {
|
|
290
|
+
return `export default ${
|
|
291
|
+
quasarConf?.framework.iconMapFn?.toString() ?? null
|
|
292
|
+
}`
|
|
374
293
|
} else if (id === 'virtual:quasar') {
|
|
375
294
|
return `export * from 'quasar/src/plugins.js';
|
|
376
295
|
export * from 'quasar/src/components.js';
|