@vuetify/nightly 3.3.12-dev.2023-08-17 → 3.3.12-dev.2023-08-18
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/CHANGELOG.md +5 -2
- package/dist/json/attributes.json +20 -4
- package/dist/json/importMap.json +42 -42
- package/dist/json/tags.json +4 -0
- package/dist/json/web-types.json +47 -11
- package/dist/vuetify-labs.css +923 -923
- package/dist/vuetify-labs.d.ts +56 -1
- package/dist/vuetify-labs.esm.js +43 -17
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +43 -17
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +217 -217
- package/dist/vuetify.d.ts +67 -12
- package/dist/vuetify.esm.js +43 -17
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +43 -17
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +282 -277
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VBanner/VBanner.mjs +5 -3
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBanner/index.d.mts +10 -0
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +5 -3
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/index.d.mts +10 -0
- package/lib/components/VSlideGroup/VSlideGroup.mjs +5 -3
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/index.d.mts +10 -0
- package/lib/components/VTabs/index.d.mts +10 -0
- package/lib/components/index.d.mts +28 -0
- package/lib/composables/directiveComponent.mjs +69 -0
- package/lib/composables/directiveComponent.mjs.map +1 -0
- package/lib/composables/display.mjs +23 -3
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/theme.mjs +7 -7
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +43 -12
- package/package.json +1 -1
|
@@ -33,6 +33,10 @@ interface GroupProvide {
|
|
|
33
33
|
getItemIndex: (value: unknown) => number;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
declare const breakpoints: readonly ["sm", "md", "lg", "xl", "xxl"];
|
|
37
|
+
type Breakpoint = typeof breakpoints[number];
|
|
38
|
+
type DisplayBreakpoint = 'xs' | Breakpoint;
|
|
39
|
+
|
|
36
40
|
type Density = null | 'default' | 'comfortable' | 'compact';
|
|
37
41
|
|
|
38
42
|
type TabItem = string | Record<string, any>;
|
|
@@ -115,6 +119,7 @@ declare const VTabs: {
|
|
|
115
119
|
}>) => void)[] | undefined;
|
|
116
120
|
"onUpdate:modelValue"?: ((v: unknown) => any) | undefined;
|
|
117
121
|
bgColor?: string | undefined;
|
|
122
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
118
123
|
showArrows?: string | boolean | undefined;
|
|
119
124
|
sliderColor?: string | undefined;
|
|
120
125
|
};
|
|
@@ -159,6 +164,7 @@ declare const VTabs: {
|
|
|
159
164
|
class?: any;
|
|
160
165
|
modelValue?: any;
|
|
161
166
|
bgColor?: string | undefined;
|
|
167
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
162
168
|
showArrows?: string | boolean | undefined;
|
|
163
169
|
sliderColor?: string | undefined;
|
|
164
170
|
} & {
|
|
@@ -245,6 +251,7 @@ declare const VTabs: {
|
|
|
245
251
|
class?: any;
|
|
246
252
|
modelValue?: any;
|
|
247
253
|
bgColor?: string | undefined;
|
|
254
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
248
255
|
showArrows?: string | boolean | undefined;
|
|
249
256
|
sliderColor?: string | undefined;
|
|
250
257
|
} & {
|
|
@@ -288,6 +295,7 @@ declare const VTabs: {
|
|
|
288
295
|
class?: any;
|
|
289
296
|
modelValue?: any;
|
|
290
297
|
bgColor?: string | undefined;
|
|
298
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
291
299
|
showArrows?: string | boolean | undefined;
|
|
292
300
|
sliderColor?: string | undefined;
|
|
293
301
|
} & {
|
|
@@ -353,6 +361,7 @@ declare const VTabs: {
|
|
|
353
361
|
default: string;
|
|
354
362
|
};
|
|
355
363
|
disabled: BooleanConstructor;
|
|
364
|
+
mobileBreakpoint: PropType<number | DisplayBreakpoint>;
|
|
356
365
|
class: PropType<any>;
|
|
357
366
|
style: {
|
|
358
367
|
type: PropType<vue.StyleValue>;
|
|
@@ -423,6 +432,7 @@ declare const VTabs: {
|
|
|
423
432
|
default: string;
|
|
424
433
|
};
|
|
425
434
|
disabled: BooleanConstructor;
|
|
435
|
+
mobileBreakpoint: PropType<number | DisplayBreakpoint>;
|
|
426
436
|
class: PropType<any>;
|
|
427
437
|
style: {
|
|
428
438
|
type: PropType<vue.StyleValue>;
|
|
@@ -7295,6 +7295,10 @@ declare const VBadge: {
|
|
|
7295
7295
|
}>>;
|
|
7296
7296
|
type VBadge = InstanceType<typeof VBadge>;
|
|
7297
7297
|
|
|
7298
|
+
declare const breakpoints: readonly ["sm", "md", "lg", "xl", "xxl"];
|
|
7299
|
+
type Breakpoint = typeof breakpoints[number];
|
|
7300
|
+
type DisplayBreakpoint = 'xs' | Breakpoint;
|
|
7301
|
+
|
|
7298
7302
|
declare const VBanner: {
|
|
7299
7303
|
new (...args: any[]): {
|
|
7300
7304
|
$: vue.ComponentInternalInstance;
|
|
@@ -7379,6 +7383,7 @@ declare const VBanner: {
|
|
|
7379
7383
|
}>) => void)[] | undefined;
|
|
7380
7384
|
"v-slot:prepend"?: false | (() => vue.VNodeChild) | undefined;
|
|
7381
7385
|
lines?: "one" | "two" | "three" | undefined;
|
|
7386
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
7382
7387
|
avatar?: string | undefined;
|
|
7383
7388
|
"v-slot:actions"?: false | (() => vue.VNodeChild) | undefined;
|
|
7384
7389
|
};
|
|
@@ -7430,6 +7435,7 @@ declare const VBanner: {
|
|
|
7430
7435
|
theme?: string | undefined;
|
|
7431
7436
|
rounded?: string | number | boolean | undefined;
|
|
7432
7437
|
lines?: "one" | "two" | "three" | undefined;
|
|
7438
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
7433
7439
|
avatar?: string | undefined;
|
|
7434
7440
|
} & {
|
|
7435
7441
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
@@ -7513,6 +7519,7 @@ declare const VBanner: {
|
|
|
7513
7519
|
theme?: string | undefined;
|
|
7514
7520
|
rounded?: string | number | boolean | undefined;
|
|
7515
7521
|
lines?: "one" | "two" | "three" | undefined;
|
|
7522
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
7516
7523
|
avatar?: string | undefined;
|
|
7517
7524
|
} & {
|
|
7518
7525
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
@@ -7560,6 +7567,7 @@ declare const VBanner: {
|
|
|
7560
7567
|
theme?: string | undefined;
|
|
7561
7568
|
rounded?: string | number | boolean | undefined;
|
|
7562
7569
|
lines?: "one" | "two" | "three" | undefined;
|
|
7570
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
7563
7571
|
avatar?: string | undefined;
|
|
7564
7572
|
} & {
|
|
7565
7573
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
@@ -7618,6 +7626,7 @@ declare const VBanner: {
|
|
|
7618
7626
|
type: (StringConstructor | NumberConstructor)[];
|
|
7619
7627
|
validator(v: any): boolean;
|
|
7620
7628
|
};
|
|
7629
|
+
mobileBreakpoint: PropType<number | DisplayBreakpoint>;
|
|
7621
7630
|
height: (StringConstructor | NumberConstructor)[];
|
|
7622
7631
|
maxHeight: (StringConstructor | NumberConstructor)[];
|
|
7623
7632
|
maxWidth: (StringConstructor | NumberConstructor)[];
|
|
@@ -7661,6 +7670,7 @@ declare const VBanner: {
|
|
|
7661
7670
|
type: (StringConstructor | NumberConstructor)[];
|
|
7662
7671
|
validator(v: any): boolean;
|
|
7663
7672
|
};
|
|
7673
|
+
mobileBreakpoint: PropType<number | DisplayBreakpoint>;
|
|
7664
7674
|
height: (StringConstructor | NumberConstructor)[];
|
|
7665
7675
|
maxHeight: (StringConstructor | NumberConstructor)[];
|
|
7666
7676
|
maxWidth: (StringConstructor | NumberConstructor)[];
|
|
@@ -34907,6 +34917,7 @@ declare const VNavigationDrawer: {
|
|
|
34907
34917
|
"v-slot:append"?: false | (() => vue.VNodeChild) | undefined;
|
|
34908
34918
|
"v-slot:prepend"?: false | (() => vue.VNodeChild) | undefined;
|
|
34909
34919
|
"onUpdate:modelValue"?: ((val: boolean) => any) | undefined;
|
|
34920
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
34910
34921
|
"onUpdate:rail"?: ((val: boolean) => any) | undefined;
|
|
34911
34922
|
};
|
|
34912
34923
|
$attrs: {
|
|
@@ -34961,6 +34972,7 @@ declare const VNavigationDrawer: {
|
|
|
34961
34972
|
elevation?: string | number | undefined;
|
|
34962
34973
|
theme?: string | undefined;
|
|
34963
34974
|
rounded?: string | number | boolean | undefined;
|
|
34975
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
34964
34976
|
} & {
|
|
34965
34977
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
34966
34978
|
default?: (() => vue.VNodeChild) | undefined;
|
|
@@ -35068,6 +35080,7 @@ declare const VNavigationDrawer: {
|
|
|
35068
35080
|
elevation?: string | number | undefined;
|
|
35069
35081
|
theme?: string | undefined;
|
|
35070
35082
|
rounded?: string | number | boolean | undefined;
|
|
35083
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
35071
35084
|
} & {
|
|
35072
35085
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
35073
35086
|
default?: (() => vue.VNodeChild) | undefined;
|
|
@@ -35123,6 +35136,7 @@ declare const VNavigationDrawer: {
|
|
|
35123
35136
|
elevation?: string | number | undefined;
|
|
35124
35137
|
theme?: string | undefined;
|
|
35125
35138
|
rounded?: string | number | boolean | undefined;
|
|
35139
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
35126
35140
|
} & {
|
|
35127
35141
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
35128
35142
|
default?: (() => vue.VNodeChild) | undefined;
|
|
@@ -35207,6 +35221,7 @@ declare const VNavigationDrawer: {
|
|
|
35207
35221
|
type: (StringConstructor | NumberConstructor)[];
|
|
35208
35222
|
validator(v: any): boolean;
|
|
35209
35223
|
};
|
|
35224
|
+
mobileBreakpoint: PropType<number | DisplayBreakpoint>;
|
|
35210
35225
|
class: PropType<any>;
|
|
35211
35226
|
style: {
|
|
35212
35227
|
type: PropType<vue.StyleValue>;
|
|
@@ -35273,6 +35288,7 @@ declare const VNavigationDrawer: {
|
|
|
35273
35288
|
type: (StringConstructor | NumberConstructor)[];
|
|
35274
35289
|
validator(v: any): boolean;
|
|
35275
35290
|
};
|
|
35291
|
+
mobileBreakpoint: PropType<number | DisplayBreakpoint>;
|
|
35276
35292
|
class: PropType<any>;
|
|
35277
35293
|
style: {
|
|
35278
35294
|
type: PropType<vue.StyleValue>;
|
|
@@ -42330,6 +42346,7 @@ declare const VSlideGroup: {
|
|
|
42330
42346
|
[key: string]: any;
|
|
42331
42347
|
}>) => void)[] | undefined;
|
|
42332
42348
|
"onUpdate:modelValue"?: ((value: any) => any) | undefined;
|
|
42349
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
42333
42350
|
showArrows?: string | boolean | undefined;
|
|
42334
42351
|
"v-slot:next"?: false | ((arg: SlideGroupSlot) => vue.VNodeChild) | undefined;
|
|
42335
42352
|
"v-slot:prev"?: false | ((arg: SlideGroupSlot) => vue.VNodeChild) | undefined;
|
|
@@ -42371,6 +42388,7 @@ declare const VSlideGroup: {
|
|
|
42371
42388
|
class?: any;
|
|
42372
42389
|
mandatory?: boolean | "force" | undefined;
|
|
42373
42390
|
modelValue?: any;
|
|
42391
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
42374
42392
|
showArrows?: string | boolean | undefined;
|
|
42375
42393
|
} & {
|
|
42376
42394
|
$children?: vue.VNodeChild | {
|
|
@@ -42454,6 +42472,7 @@ declare const VSlideGroup: {
|
|
|
42454
42472
|
class?: any;
|
|
42455
42473
|
mandatory?: boolean | "force" | undefined;
|
|
42456
42474
|
modelValue?: any;
|
|
42475
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
42457
42476
|
showArrows?: string | boolean | undefined;
|
|
42458
42477
|
} & {
|
|
42459
42478
|
$children?: vue.VNodeChild | {
|
|
@@ -42497,6 +42516,7 @@ declare const VSlideGroup: {
|
|
|
42497
42516
|
class?: any;
|
|
42498
42517
|
mandatory?: boolean | "force" | undefined;
|
|
42499
42518
|
modelValue?: any;
|
|
42519
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
42500
42520
|
showArrows?: string | boolean | undefined;
|
|
42501
42521
|
} & {
|
|
42502
42522
|
$children?: vue.VNodeChild | {
|
|
@@ -42561,6 +42581,7 @@ declare const VSlideGroup: {
|
|
|
42561
42581
|
type: StringConstructor;
|
|
42562
42582
|
default: string;
|
|
42563
42583
|
};
|
|
42584
|
+
mobileBreakpoint: PropType<number | DisplayBreakpoint>;
|
|
42564
42585
|
class: PropType<any>;
|
|
42565
42586
|
style: {
|
|
42566
42587
|
type: PropType<vue.StyleValue>;
|
|
@@ -42604,6 +42625,7 @@ declare const VSlideGroup: {
|
|
|
42604
42625
|
type: StringConstructor;
|
|
42605
42626
|
default: string;
|
|
42606
42627
|
};
|
|
42628
|
+
mobileBreakpoint: PropType<number | DisplayBreakpoint>;
|
|
42607
42629
|
class: PropType<any>;
|
|
42608
42630
|
style: {
|
|
42609
42631
|
type: PropType<vue.StyleValue>;
|
|
@@ -46581,6 +46603,7 @@ declare const VTabs: {
|
|
|
46581
46603
|
}>) => void)[] | undefined;
|
|
46582
46604
|
"onUpdate:modelValue"?: ((v: unknown) => any) | undefined;
|
|
46583
46605
|
bgColor?: string | undefined;
|
|
46606
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
46584
46607
|
showArrows?: string | boolean | undefined;
|
|
46585
46608
|
sliderColor?: string | undefined;
|
|
46586
46609
|
};
|
|
@@ -46625,6 +46648,7 @@ declare const VTabs: {
|
|
|
46625
46648
|
class?: any;
|
|
46626
46649
|
modelValue?: any;
|
|
46627
46650
|
bgColor?: string | undefined;
|
|
46651
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
46628
46652
|
showArrows?: string | boolean | undefined;
|
|
46629
46653
|
sliderColor?: string | undefined;
|
|
46630
46654
|
} & {
|
|
@@ -46711,6 +46735,7 @@ declare const VTabs: {
|
|
|
46711
46735
|
class?: any;
|
|
46712
46736
|
modelValue?: any;
|
|
46713
46737
|
bgColor?: string | undefined;
|
|
46738
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
46714
46739
|
showArrows?: string | boolean | undefined;
|
|
46715
46740
|
sliderColor?: string | undefined;
|
|
46716
46741
|
} & {
|
|
@@ -46754,6 +46779,7 @@ declare const VTabs: {
|
|
|
46754
46779
|
class?: any;
|
|
46755
46780
|
modelValue?: any;
|
|
46756
46781
|
bgColor?: string | undefined;
|
|
46782
|
+
mobileBreakpoint?: number | DisplayBreakpoint | undefined;
|
|
46757
46783
|
showArrows?: string | boolean | undefined;
|
|
46758
46784
|
sliderColor?: string | undefined;
|
|
46759
46785
|
} & {
|
|
@@ -46819,6 +46845,7 @@ declare const VTabs: {
|
|
|
46819
46845
|
default: string;
|
|
46820
46846
|
};
|
|
46821
46847
|
disabled: BooleanConstructor;
|
|
46848
|
+
mobileBreakpoint: PropType<number | DisplayBreakpoint>;
|
|
46822
46849
|
class: PropType<any>;
|
|
46823
46850
|
style: {
|
|
46824
46851
|
type: PropType<vue.StyleValue>;
|
|
@@ -46889,6 +46916,7 @@ declare const VTabs: {
|
|
|
46889
46916
|
default: string;
|
|
46890
46917
|
};
|
|
46891
46918
|
disabled: BooleanConstructor;
|
|
46919
|
+
mobileBreakpoint: PropType<number | DisplayBreakpoint>;
|
|
46892
46920
|
class: PropType<any>;
|
|
46893
46921
|
style: {
|
|
46894
46922
|
type: PropType<vue.StyleValue>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// Utilities
|
|
2
|
+
import { h, mergeProps, render, resolveComponent } from 'vue';
|
|
3
|
+
|
|
4
|
+
// Types
|
|
5
|
+
|
|
6
|
+
export const useDirectiveComponent = (component, props) => {
|
|
7
|
+
const concreteComponent = typeof component === 'string' ? resolveComponent(component) : component;
|
|
8
|
+
return {
|
|
9
|
+
mounted(el, binding, vnode) {
|
|
10
|
+
const {
|
|
11
|
+
value
|
|
12
|
+
} = binding;
|
|
13
|
+
|
|
14
|
+
// Get the children from the props or directive value, or the element's children
|
|
15
|
+
const children = props.text || value.text || el.innerHTML;
|
|
16
|
+
|
|
17
|
+
// If vnode.ctx is the same as the instance, then we're bound to a plain element
|
|
18
|
+
// and need to find the nearest parent component instance to inherit provides from
|
|
19
|
+
const provides = (vnode.ctx === binding.instance.$ ? findComponentParent(vnode, binding.instance.$)?.provides : vnode.ctx?.provides) ?? binding.instance.$.provides;
|
|
20
|
+
const node = h(concreteComponent, mergeProps(props, value), children);
|
|
21
|
+
node.appContext = Object.assign(Object.create(null), binding.instance.$.appContext, {
|
|
22
|
+
provides
|
|
23
|
+
});
|
|
24
|
+
render(node, el);
|
|
25
|
+
},
|
|
26
|
+
unmounted(el) {
|
|
27
|
+
render(null, el);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
function findComponentParent(vnode, root) {
|
|
32
|
+
// Walk the tree from root until we find the child vnode
|
|
33
|
+
const stack = new Set();
|
|
34
|
+
const walk = children => {
|
|
35
|
+
for (const child of children) {
|
|
36
|
+
if (!child) continue;
|
|
37
|
+
if (child === vnode) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
stack.add(child);
|
|
41
|
+
if (Array.isArray(child.children)) {
|
|
42
|
+
const result = walk(child.children);
|
|
43
|
+
if (result) {
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
} else if (child.component?.vnode) {
|
|
47
|
+
const result = walk([child.component?.subTree]);
|
|
48
|
+
if (result) {
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
stack.delete(child);
|
|
53
|
+
}
|
|
54
|
+
return false;
|
|
55
|
+
};
|
|
56
|
+
if (!walk([root.subTree])) {
|
|
57
|
+
throw new Error('Could not find original vnode');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Return the first component parent
|
|
61
|
+
const result = Array.from(stack).reverse();
|
|
62
|
+
for (const child of result) {
|
|
63
|
+
if (child.component) {
|
|
64
|
+
return child.component;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return root;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=directiveComponent.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directiveComponent.mjs","names":["h","mergeProps","render","resolveComponent","useDirectiveComponent","component","props","concreteComponent","mounted","el","binding","vnode","value","children","text","innerHTML","provides","ctx","instance","$","findComponentParent","node","appContext","Object","assign","create","unmounted","root","stack","Set","walk","child","add","Array","isArray","result","subTree","delete","Error","from","reverse"],"sources":["../../src/composables/directiveComponent.ts"],"sourcesContent":["// Utilities\nimport { h, mergeProps, render, resolveComponent } from 'vue'\n\n// Types\nimport type {\n Component,\n ComponentInternalInstance,\n ComponentPublicInstance,\n ConcreteComponent,\n DirectiveBinding,\n ObjectDirective,\n VNode,\n} from 'vue'\n\nexport const useDirectiveComponent = (\n component: string | Component,\n props?: any\n): ObjectDirective => {\n const concreteComponent = (typeof component === 'string'\n ? resolveComponent(component)\n : component) as ConcreteComponent\n\n return {\n mounted (el: HTMLElement, binding: DirectiveBinding, vnode: VNode) {\n const { value } = binding\n\n // Get the children from the props or directive value, or the element's children\n const children = props.text || value.text || el.innerHTML\n\n // If vnode.ctx is the same as the instance, then we're bound to a plain element\n // and need to find the nearest parent component instance to inherit provides from\n const provides = (vnode.ctx === binding.instance!.$\n ? findComponentParent(vnode, binding.instance!.$)?.provides\n : vnode.ctx?.provides) ?? binding.instance!.$.provides\n\n const node = h(concreteComponent, mergeProps(props, value), children)\n node.appContext = Object.assign(\n Object.create(null),\n (binding.instance as ComponentPublicInstance).$.appContext,\n { provides }\n )\n\n render(node, el)\n },\n unmounted (el: HTMLElement) {\n render(null, el)\n },\n }\n}\n\nfunction findComponentParent (vnode: VNode, root: ComponentInternalInstance): ComponentInternalInstance | null {\n // Walk the tree from root until we find the child vnode\n const stack = new Set<VNode>()\n const walk = (children: VNode[]): boolean => {\n for (const child of children) {\n if (!child) continue\n\n if (child === vnode) {\n return true\n }\n\n stack.add(child)\n if (Array.isArray(child.children)) {\n const result = walk(child.children as VNode[])\n if (result) {\n return result\n }\n } else if (child.component?.vnode) {\n const result = walk([child.component?.subTree])\n if (result) {\n return result\n }\n }\n stack.delete(child)\n }\n\n return false\n }\n if (!walk([root.subTree])) {\n throw new Error('Could not find original vnode')\n }\n\n // Return the first component parent\n const result = Array.from(stack).reverse()\n for (const child of result) {\n if (child.component) {\n return child.component\n }\n }\n return root\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Utilities
|
|
2
|
-
import { inject, reactive, shallowRef, toRefs, watchEffect } from 'vue';
|
|
3
|
-
import { mergeDeep } from "../util/index.mjs";
|
|
2
|
+
import { computed, inject, reactive, shallowRef, toRefs, watchEffect } from 'vue';
|
|
3
|
+
import { getCurrentInstanceName, mergeDeep, propsFactory } from "../util/index.mjs";
|
|
4
4
|
import { IN_BROWSER, SUPPORTS_TOUCH } from "../util/globals.mjs"; // Types
|
|
5
5
|
export const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
|
|
6
6
|
|
|
@@ -120,9 +120,29 @@ export function createDisplay(options, ssr) {
|
|
|
120
120
|
ssr: !!ssr
|
|
121
121
|
};
|
|
122
122
|
}
|
|
123
|
+
export const makeDisplayProps = propsFactory({
|
|
124
|
+
mobileBreakpoint: [Number, String]
|
|
125
|
+
}, 'display');
|
|
123
126
|
export function useDisplay() {
|
|
127
|
+
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
128
|
+
let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
|
|
124
129
|
const display = inject(DisplaySymbol);
|
|
125
130
|
if (!display) throw new Error('Could not find Vuetify display injection');
|
|
126
|
-
|
|
131
|
+
const mobile = computed(() => {
|
|
132
|
+
if (!props.mobileBreakpoint) return display.mobile.value;
|
|
133
|
+
const breakpointValue = typeof props.mobileBreakpoint === 'number' ? props.mobileBreakpoint : display.thresholds.value[props.mobileBreakpoint];
|
|
134
|
+
return display.width.value < breakpointValue;
|
|
135
|
+
});
|
|
136
|
+
const displayClasses = computed(() => {
|
|
137
|
+
if (!name) return {};
|
|
138
|
+
return {
|
|
139
|
+
[`${name}--mobile`]: mobile.value
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
return {
|
|
143
|
+
...display,
|
|
144
|
+
displayClasses,
|
|
145
|
+
mobile
|
|
146
|
+
};
|
|
127
147
|
}
|
|
128
148
|
//# sourceMappingURL=display.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.mjs","names":["inject","reactive","shallowRef","toRefs","watchEffect","mergeDeep","IN_BROWSER","SUPPORTS_TOUCH","breakpoints","DisplaySymbol","Symbol","for","defaultDisplayOptions","mobileBreakpoint","thresholds","xs","sm","md","lg","xl","xxl","parseDisplayOptions","options","arguments","length","undefined","getClientWidth","ssr","window","innerWidth","clientWidth","getClientHeight","innerHeight","clientHeight","getPlatform","userAgent","navigator","match","regexp","Boolean","android","ios","cordova","electron","chrome","edge","firefox","opera","win","mac","linux","touch","createDisplay","height","platform","state","width","updateSize","value","update","name","breakpointValue","mobile","smAndUp","mdAndUp","lgAndUp","xlAndUp","smAndDown","mdAndDown","lgAndDown","xlAndDown","addEventListener","passive","useDisplay","display","Error"],"sources":["../../src/composables/display.ts"],"sourcesContent":["// Utilities\nimport { inject, reactive, shallowRef, toRefs, watchEffect } from 'vue'\nimport { mergeDeep } from '@/util'\nimport { IN_BROWSER, SUPPORTS_TOUCH } from '@/util/globals'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nexport const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl'] as const // no xs\n\nexport type Breakpoint = typeof breakpoints[number]\n\nexport type DisplayBreakpoint = 'xs' | Breakpoint\n\nexport type DisplayThresholds = {\n [key in DisplayBreakpoint]: number\n}\n\nexport interface DisplayOptions {\n mobileBreakpoint?: number | DisplayBreakpoint\n thresholds?: Partial<DisplayThresholds>\n}\n\nexport interface InternalDisplayOptions {\n mobileBreakpoint: number | DisplayBreakpoint\n thresholds: DisplayThresholds\n}\n\nexport type SSROptions = boolean | {\n clientWidth: number\n clientHeight?: number\n}\n\nexport interface DisplayPlatform {\n android: boolean\n ios: boolean\n cordova: boolean\n electron: boolean\n chrome: boolean\n edge: boolean\n firefox: boolean\n opera: boolean\n win: boolean\n mac: boolean\n linux: boolean\n touch: boolean\n ssr: boolean\n}\n\nexport interface DisplayInstance {\n xs: Ref<boolean>\n sm: Ref<boolean>\n md: Ref<boolean>\n lg: Ref<boolean>\n xl: Ref<boolean>\n xxl: Ref<boolean>\n smAndUp: Ref<boolean>\n mdAndUp: Ref<boolean>\n lgAndUp: Ref<boolean>\n xlAndUp: Ref<boolean>\n smAndDown: Ref<boolean>\n mdAndDown: Ref<boolean>\n lgAndDown: Ref<boolean>\n xlAndDown: Ref<boolean>\n name: Ref<DisplayBreakpoint>\n height: Ref<number>\n width: Ref<number>\n mobile: Ref<boolean>\n mobileBreakpoint: Ref<number | DisplayBreakpoint>\n platform: Ref<DisplayPlatform>\n thresholds: Ref<DisplayThresholds>\n\n /** @internal */\n ssr: boolean\n\n update (): void\n}\n\nexport const DisplaySymbol: InjectionKey<DisplayInstance> = Symbol.for('vuetify:display')\n\nconst defaultDisplayOptions: DisplayOptions = {\n mobileBreakpoint: 'lg',\n thresholds: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560,\n },\n}\n\nconst parseDisplayOptions = (options: DisplayOptions = defaultDisplayOptions) => {\n return mergeDeep(defaultDisplayOptions, options) as InternalDisplayOptions\n}\n\nfunction getClientWidth (ssr?: SSROptions) {\n return IN_BROWSER && !ssr\n ? window.innerWidth\n : (typeof ssr === 'object' && ssr.clientWidth) || 0\n}\n\nfunction getClientHeight (ssr?: SSROptions) {\n return IN_BROWSER && !ssr\n ? window.innerHeight\n : (typeof ssr === 'object' && ssr.clientHeight) || 0\n}\n\nfunction getPlatform (ssr?: SSROptions): DisplayPlatform {\n const userAgent = IN_BROWSER && !ssr\n ? window.navigator.userAgent\n : 'ssr'\n\n function match (regexp: RegExp) {\n return Boolean(userAgent.match(regexp))\n }\n\n const android = match(/android/i)\n const ios = match(/iphone|ipad|ipod/i)\n const cordova = match(/cordova/i)\n const electron = match(/electron/i)\n const chrome = match(/chrome/i)\n const edge = match(/edge/i)\n const firefox = match(/firefox/i)\n const opera = match(/opera/i)\n const win = match(/win/i)\n const mac = match(/mac/i)\n const linux = match(/linux/i)\n\n return {\n android,\n ios,\n cordova,\n electron,\n chrome,\n edge,\n firefox,\n opera,\n win,\n mac,\n linux,\n touch: SUPPORTS_TOUCH,\n ssr: userAgent === 'ssr',\n }\n}\n\nexport function createDisplay (options?: DisplayOptions, ssr?: SSROptions): DisplayInstance {\n const { thresholds, mobileBreakpoint } = parseDisplayOptions(options)\n\n const height = shallowRef(getClientHeight(ssr))\n const platform = shallowRef(getPlatform(ssr))\n const state = reactive({} as DisplayInstance)\n const width = shallowRef(getClientWidth(ssr))\n\n function updateSize () {\n height.value = getClientHeight()\n width.value = getClientWidth()\n }\n function update () {\n updateSize()\n platform.value = getPlatform()\n }\n\n // eslint-disable-next-line max-statements\n watchEffect(() => {\n const xs = width.value < thresholds.sm\n const sm = width.value < thresholds.md && !xs\n const md = width.value < thresholds.lg && !(sm || xs)\n const lg = width.value < thresholds.xl && !(md || sm || xs)\n const xl = width.value < thresholds.xxl && !(lg || md || sm || xs)\n const xxl = width.value >= thresholds.xxl\n const name =\n xs ? 'xs'\n : sm ? 'sm'\n : md ? 'md'\n : lg ? 'lg'\n : xl ? 'xl'\n : 'xxl'\n const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint]\n const mobile = width.value < breakpointValue\n\n state.xs = xs\n state.sm = sm\n state.md = md\n state.lg = lg\n state.xl = xl\n state.xxl = xxl\n state.smAndUp = !xs\n state.mdAndUp = !(xs || sm)\n state.lgAndUp = !(xs || sm || md)\n state.xlAndUp = !(xs || sm || md || lg)\n state.smAndDown = !(md || lg || xl || xxl)\n state.mdAndDown = !(lg || xl || xxl)\n state.lgAndDown = !(xl || xxl)\n state.xlAndDown = !xxl\n state.name = name\n state.height = height.value\n state.width = width.value\n state.mobile = mobile\n state.mobileBreakpoint = mobileBreakpoint\n state.platform = platform.value\n state.thresholds = thresholds\n })\n\n if (IN_BROWSER) {\n window.addEventListener('resize', updateSize, { passive: true })\n }\n\n return { ...toRefs(state), update, ssr: !!ssr }\n}\n\nexport function useDisplay () {\n const display = inject(DisplaySymbol)\n\n if (!display) throw new Error('Could not find Vuetify display injection')\n\n return display\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"display.mjs","names":["computed","inject","reactive","shallowRef","toRefs","watchEffect","getCurrentInstanceName","mergeDeep","propsFactory","IN_BROWSER","SUPPORTS_TOUCH","breakpoints","DisplaySymbol","Symbol","for","defaultDisplayOptions","mobileBreakpoint","thresholds","xs","sm","md","lg","xl","xxl","parseDisplayOptions","options","arguments","length","undefined","getClientWidth","ssr","window","innerWidth","clientWidth","getClientHeight","innerHeight","clientHeight","getPlatform","userAgent","navigator","match","regexp","Boolean","android","ios","cordova","electron","chrome","edge","firefox","opera","win","mac","linux","touch","createDisplay","height","platform","state","width","updateSize","value","update","name","breakpointValue","mobile","smAndUp","mdAndUp","lgAndUp","xlAndUp","smAndDown","mdAndDown","lgAndDown","xlAndDown","addEventListener","passive","makeDisplayProps","Number","String","useDisplay","props","display","Error","displayClasses"],"sources":["../../src/composables/display.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, reactive, shallowRef, toRefs, watchEffect } from 'vue'\nimport { getCurrentInstanceName, mergeDeep, propsFactory } from '@/util'\nimport { IN_BROWSER, SUPPORTS_TOUCH } from '@/util/globals'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\n\nexport const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl'] as const // no xs\n\nexport type Breakpoint = typeof breakpoints[number]\n\nexport type DisplayBreakpoint = 'xs' | Breakpoint\n\nexport type DisplayThresholds = {\n [key in DisplayBreakpoint]: number\n}\n\nexport interface DisplayProps {\n mobileBreakpoint?: number | DisplayBreakpoint\n}\n\nexport interface DisplayOptions {\n mobileBreakpoint?: number | DisplayBreakpoint\n thresholds?: Partial<DisplayThresholds>\n}\n\nexport interface InternalDisplayOptions {\n mobileBreakpoint: number | DisplayBreakpoint\n thresholds: DisplayThresholds\n}\n\nexport type SSROptions = boolean | {\n clientWidth: number\n clientHeight?: number\n}\n\nexport interface DisplayPlatform {\n android: boolean\n ios: boolean\n cordova: boolean\n electron: boolean\n chrome: boolean\n edge: boolean\n firefox: boolean\n opera: boolean\n win: boolean\n mac: boolean\n linux: boolean\n touch: boolean\n ssr: boolean\n}\n\nexport interface DisplayInstance {\n xs: Ref<boolean>\n sm: Ref<boolean>\n md: Ref<boolean>\n lg: Ref<boolean>\n xl: Ref<boolean>\n xxl: Ref<boolean>\n smAndUp: Ref<boolean>\n mdAndUp: Ref<boolean>\n lgAndUp: Ref<boolean>\n xlAndUp: Ref<boolean>\n smAndDown: Ref<boolean>\n mdAndDown: Ref<boolean>\n lgAndDown: Ref<boolean>\n xlAndDown: Ref<boolean>\n name: Ref<DisplayBreakpoint>\n height: Ref<number>\n width: Ref<number>\n mobile: Ref<boolean>\n mobileBreakpoint: Ref<number | DisplayBreakpoint>\n platform: Ref<DisplayPlatform>\n thresholds: Ref<DisplayThresholds>\n\n /** @internal */\n ssr: boolean\n\n update (): void\n}\n\nexport const DisplaySymbol: InjectionKey<DisplayInstance> = Symbol.for('vuetify:display')\n\nconst defaultDisplayOptions: DisplayOptions = {\n mobileBreakpoint: 'lg',\n thresholds: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560,\n },\n}\n\nconst parseDisplayOptions = (options: DisplayOptions = defaultDisplayOptions) => {\n return mergeDeep(defaultDisplayOptions, options) as InternalDisplayOptions\n}\n\nfunction getClientWidth (ssr?: SSROptions) {\n return IN_BROWSER && !ssr\n ? window.innerWidth\n : (typeof ssr === 'object' && ssr.clientWidth) || 0\n}\n\nfunction getClientHeight (ssr?: SSROptions) {\n return IN_BROWSER && !ssr\n ? window.innerHeight\n : (typeof ssr === 'object' && ssr.clientHeight) || 0\n}\n\nfunction getPlatform (ssr?: SSROptions): DisplayPlatform {\n const userAgent = IN_BROWSER && !ssr\n ? window.navigator.userAgent\n : 'ssr'\n\n function match (regexp: RegExp) {\n return Boolean(userAgent.match(regexp))\n }\n\n const android = match(/android/i)\n const ios = match(/iphone|ipad|ipod/i)\n const cordova = match(/cordova/i)\n const electron = match(/electron/i)\n const chrome = match(/chrome/i)\n const edge = match(/edge/i)\n const firefox = match(/firefox/i)\n const opera = match(/opera/i)\n const win = match(/win/i)\n const mac = match(/mac/i)\n const linux = match(/linux/i)\n\n return {\n android,\n ios,\n cordova,\n electron,\n chrome,\n edge,\n firefox,\n opera,\n win,\n mac,\n linux,\n touch: SUPPORTS_TOUCH,\n ssr: userAgent === 'ssr',\n }\n}\n\nexport function createDisplay (options?: DisplayOptions, ssr?: SSROptions): DisplayInstance {\n const { thresholds, mobileBreakpoint } = parseDisplayOptions(options)\n\n const height = shallowRef(getClientHeight(ssr))\n const platform = shallowRef(getPlatform(ssr))\n const state = reactive({} as DisplayInstance)\n const width = shallowRef(getClientWidth(ssr))\n\n function updateSize () {\n height.value = getClientHeight()\n width.value = getClientWidth()\n }\n function update () {\n updateSize()\n platform.value = getPlatform()\n }\n\n // eslint-disable-next-line max-statements\n watchEffect(() => {\n const xs = width.value < thresholds.sm\n const sm = width.value < thresholds.md && !xs\n const md = width.value < thresholds.lg && !(sm || xs)\n const lg = width.value < thresholds.xl && !(md || sm || xs)\n const xl = width.value < thresholds.xxl && !(lg || md || sm || xs)\n const xxl = width.value >= thresholds.xxl\n const name =\n xs ? 'xs'\n : sm ? 'sm'\n : md ? 'md'\n : lg ? 'lg'\n : xl ? 'xl'\n : 'xxl'\n const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint]\n const mobile = width.value < breakpointValue\n\n state.xs = xs\n state.sm = sm\n state.md = md\n state.lg = lg\n state.xl = xl\n state.xxl = xxl\n state.smAndUp = !xs\n state.mdAndUp = !(xs || sm)\n state.lgAndUp = !(xs || sm || md)\n state.xlAndUp = !(xs || sm || md || lg)\n state.smAndDown = !(md || lg || xl || xxl)\n state.mdAndDown = !(lg || xl || xxl)\n state.lgAndDown = !(xl || xxl)\n state.xlAndDown = !xxl\n state.name = name\n state.height = height.value\n state.width = width.value\n state.mobile = mobile\n state.mobileBreakpoint = mobileBreakpoint\n state.platform = platform.value\n state.thresholds = thresholds\n })\n\n if (IN_BROWSER) {\n window.addEventListener('resize', updateSize, { passive: true })\n }\n\n return { ...toRefs(state), update, ssr: !!ssr }\n}\n\nexport const makeDisplayProps = propsFactory({\n mobileBreakpoint: [Number, String] as PropType<number | DisplayBreakpoint>,\n}, 'display')\n\nexport function useDisplay (\n props: DisplayProps = {},\n name = getCurrentInstanceName(),\n) {\n const display = inject(DisplaySymbol)\n\n if (!display) throw new Error('Could not find Vuetify display injection')\n\n const mobile = computed(() => {\n if (!props.mobileBreakpoint) return display.mobile.value\n\n const breakpointValue = typeof props.mobileBreakpoint === 'number'\n ? props.mobileBreakpoint\n : display.thresholds.value[props.mobileBreakpoint]\n\n return display.width.value < breakpointValue\n })\n\n const displayClasses = computed(() => {\n if (!name) return {}\n\n return { [`${name}--mobile`]: mobile.value }\n })\n\n return { ...display, displayClasses, mobile }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,MAAM,EAAEC,WAAW,QAAQ,KAAK;AAAA,SACxEC,sBAAsB,EAAEC,SAAS,EAAEC,YAAY;AAAA,SAC/CC,UAAU,EAAEC,cAAc,+BAEnC;AAGA,OAAO,MAAMC,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAU,EAAC;;AA0EpE,OAAO,MAAMC,aAA4C,GAAGC,MAAM,CAACC,GAAG,CAAC,iBAAiB,CAAC;AAEzF,MAAMC,qBAAqC,GAAG;EAC5CC,gBAAgB,EAAE,IAAI;EACtBC,UAAU,EAAE;IACVC,EAAE,EAAE,CAAC;IACLC,EAAE,EAAE,GAAG;IACPC,EAAE,EAAE,GAAG;IACPC,EAAE,EAAE,IAAI;IACRC,EAAE,EAAE,IAAI;IACRC,GAAG,EAAE;EACP;AACF,CAAC;AAED,MAAMC,mBAAmB,GAAG,SAAAA,CAAA,EAAqD;EAAA,IAApDC,OAAuB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGX,qBAAqB;EAC1E,OAAOR,SAAS,CAACQ,qBAAqB,EAAEU,OAAO,CAAC;AAClD,CAAC;AAED,SAASI,cAAcA,CAAEC,GAAgB,EAAE;EACzC,OAAOrB,UAAU,IAAI,CAACqB,GAAG,GACrBC,MAAM,CAACC,UAAU,GAChB,OAAOF,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACG,WAAW,IAAK,CAAC;AACvD;AAEA,SAASC,eAAeA,CAAEJ,GAAgB,EAAE;EAC1C,OAAOrB,UAAU,IAAI,CAACqB,GAAG,GACrBC,MAAM,CAACI,WAAW,GACjB,OAAOL,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACM,YAAY,IAAK,CAAC;AACxD;AAEA,SAASC,WAAWA,CAAEP,GAAgB,EAAmB;EACvD,MAAMQ,SAAS,GAAG7B,UAAU,IAAI,CAACqB,GAAG,GAChCC,MAAM,CAACQ,SAAS,CAACD,SAAS,GAC1B,KAAK;EAET,SAASE,KAAKA,CAAEC,MAAc,EAAE;IAC9B,OAAOC,OAAO,CAACJ,SAAS,CAACE,KAAK,CAACC,MAAM,CAAC,CAAC;EACzC;EAEA,MAAME,OAAO,GAAGH,KAAK,CAAC,UAAU,CAAC;EACjC,MAAMI,GAAG,GAAGJ,KAAK,CAAC,mBAAmB,CAAC;EACtC,MAAMK,OAAO,GAAGL,KAAK,CAAC,UAAU,CAAC;EACjC,MAAMM,QAAQ,GAAGN,KAAK,CAAC,WAAW,CAAC;EACnC,MAAMO,MAAM,GAAGP,KAAK,CAAC,SAAS,CAAC;EAC/B,MAAMQ,IAAI,GAAGR,KAAK,CAAC,OAAO,CAAC;EAC3B,MAAMS,OAAO,GAAGT,KAAK,CAAC,UAAU,CAAC;EACjC,MAAMU,KAAK,GAAGV,KAAK,CAAC,QAAQ,CAAC;EAC7B,MAAMW,GAAG,GAAGX,KAAK,CAAC,MAAM,CAAC;EACzB,MAAMY,GAAG,GAAGZ,KAAK,CAAC,MAAM,CAAC;EACzB,MAAMa,KAAK,GAAGb,KAAK,CAAC,QAAQ,CAAC;EAE7B,OAAO;IACLG,OAAO;IACPC,GAAG;IACHC,OAAO;IACPC,QAAQ;IACRC,MAAM;IACNC,IAAI;IACJC,OAAO;IACPC,KAAK;IACLC,GAAG;IACHC,GAAG;IACHC,KAAK;IACLC,KAAK,EAAE5C,cAAc;IACrBoB,GAAG,EAAEQ,SAAS,KAAK;EACrB,CAAC;AACH;AAEA,OAAO,SAASiB,aAAaA,CAAE9B,OAAwB,EAAEK,GAAgB,EAAmB;EAC1F,MAAM;IAAEb,UAAU;IAAED;EAAiB,CAAC,GAAGQ,mBAAmB,CAACC,OAAO,CAAC;EAErE,MAAM+B,MAAM,GAAGrD,UAAU,CAAC+B,eAAe,CAACJ,GAAG,CAAC,CAAC;EAC/C,MAAM2B,QAAQ,GAAGtD,UAAU,CAACkC,WAAW,CAACP,GAAG,CAAC,CAAC;EAC7C,MAAM4B,KAAK,GAAGxD,QAAQ,CAAC,CAAC,CAAC,CAAoB;EAC7C,MAAMyD,KAAK,GAAGxD,UAAU,CAAC0B,cAAc,CAACC,GAAG,CAAC,CAAC;EAE7C,SAAS8B,UAAUA,CAAA,EAAI;IACrBJ,MAAM,CAACK,KAAK,GAAG3B,eAAe,EAAE;IAChCyB,KAAK,CAACE,KAAK,GAAGhC,cAAc,EAAE;EAChC;EACA,SAASiC,MAAMA,CAAA,EAAI;IACjBF,UAAU,EAAE;IACZH,QAAQ,CAACI,KAAK,GAAGxB,WAAW,EAAE;EAChC;;EAEA;EACAhC,WAAW,CAAC,MAAM;IAChB,MAAMa,EAAE,GAAGyC,KAAK,CAACE,KAAK,GAAG5C,UAAU,CAACE,EAAE;IACtC,MAAMA,EAAE,GAAGwC,KAAK,CAACE,KAAK,GAAG5C,UAAU,CAACG,EAAE,IAAI,CAACF,EAAE;IAC7C,MAAME,EAAE,GAAGuC,KAAK,CAACE,KAAK,GAAG5C,UAAU,CAACI,EAAE,IAAI,EAAEF,EAAE,IAAID,EAAE,CAAC;IACrD,MAAMG,EAAE,GAAGsC,KAAK,CAACE,KAAK,GAAG5C,UAAU,CAACK,EAAE,IAAI,EAAEF,EAAE,IAAID,EAAE,IAAID,EAAE,CAAC;IAC3D,MAAMI,EAAE,GAAGqC,KAAK,CAACE,KAAK,GAAG5C,UAAU,CAACM,GAAG,IAAI,EAAEF,EAAE,IAAID,EAAE,IAAID,EAAE,IAAID,EAAE,CAAC;IAClE,MAAMK,GAAG,GAAGoC,KAAK,CAACE,KAAK,IAAI5C,UAAU,CAACM,GAAG;IACzC,MAAMwC,IAAI,GACR7C,EAAE,GAAG,IAAI,GACPC,EAAE,GAAG,IAAI,GACTC,EAAE,GAAG,IAAI,GACTC,EAAE,GAAG,IAAI,GACTC,EAAE,GAAG,IAAI,GACT,KAAK;IACT,MAAM0C,eAAe,GAAG,OAAOhD,gBAAgB,KAAK,QAAQ,GAAGA,gBAAgB,GAAGC,UAAU,CAACD,gBAAgB,CAAC;IAC9G,MAAMiD,MAAM,GAAGN,KAAK,CAACE,KAAK,GAAGG,eAAe;IAE5CN,KAAK,CAACxC,EAAE,GAAGA,EAAE;IACbwC,KAAK,CAACvC,EAAE,GAAGA,EAAE;IACbuC,KAAK,CAACtC,EAAE,GAAGA,EAAE;IACbsC,KAAK,CAACrC,EAAE,GAAGA,EAAE;IACbqC,KAAK,CAACpC,EAAE,GAAGA,EAAE;IACboC,KAAK,CAACnC,GAAG,GAAGA,GAAG;IACfmC,KAAK,CAACQ,OAAO,GAAG,CAAChD,EAAE;IACnBwC,KAAK,CAACS,OAAO,GAAG,EAAEjD,EAAE,IAAIC,EAAE,CAAC;IAC3BuC,KAAK,CAACU,OAAO,GAAG,EAAElD,EAAE,IAAIC,EAAE,IAAIC,EAAE,CAAC;IACjCsC,KAAK,CAACW,OAAO,GAAG,EAAEnD,EAAE,IAAIC,EAAE,IAAIC,EAAE,IAAIC,EAAE,CAAC;IACvCqC,KAAK,CAACY,SAAS,GAAG,EAAElD,EAAE,IAAIC,EAAE,IAAIC,EAAE,IAAIC,GAAG,CAAC;IAC1CmC,KAAK,CAACa,SAAS,GAAG,EAAElD,EAAE,IAAIC,EAAE,IAAIC,GAAG,CAAC;IACpCmC,KAAK,CAACc,SAAS,GAAG,EAAElD,EAAE,IAAIC,GAAG,CAAC;IAC9BmC,KAAK,CAACe,SAAS,GAAG,CAAClD,GAAG;IACtBmC,KAAK,CAACK,IAAI,GAAGA,IAAI;IACjBL,KAAK,CAACF,MAAM,GAAGA,MAAM,CAACK,KAAK;IAC3BH,KAAK,CAACC,KAAK,GAAGA,KAAK,CAACE,KAAK;IACzBH,KAAK,CAACO,MAAM,GAAGA,MAAM;IACrBP,KAAK,CAAC1C,gBAAgB,GAAGA,gBAAgB;IACzC0C,KAAK,CAACD,QAAQ,GAAGA,QAAQ,CAACI,KAAK;IAC/BH,KAAK,CAACzC,UAAU,GAAGA,UAAU;EAC/B,CAAC,CAAC;EAEF,IAAIR,UAAU,EAAE;IACdsB,MAAM,CAAC2C,gBAAgB,CAAC,QAAQ,EAAEd,UAAU,EAAE;MAAEe,OAAO,EAAE;IAAK,CAAC,CAAC;EAClE;EAEA,OAAO;IAAE,GAAGvE,MAAM,CAACsD,KAAK,CAAC;IAAEI,MAAM;IAAEhC,GAAG,EAAE,CAAC,CAACA;EAAI,CAAC;AACjD;AAEA,OAAO,MAAM8C,gBAAgB,GAAGpE,YAAY,CAAC;EAC3CQ,gBAAgB,EAAE,CAAC6D,MAAM,EAAEC,MAAM;AACnC,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,SAASC,UAAUA,CAAA,EAGxB;EAAA,IAFAC,KAAmB,GAAAtD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IACxBqC,IAAI,GAAArC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGpB,sBAAsB,EAAE;EAE/B,MAAM2E,OAAO,GAAGhF,MAAM,CAACW,aAAa,CAAC;EAErC,IAAI,CAACqE,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;EAEzE,MAAMjB,MAAM,GAAGjE,QAAQ,CAAC,MAAM;IAC5B,IAAI,CAACgF,KAAK,CAAChE,gBAAgB,EAAE,OAAOiE,OAAO,CAAChB,MAAM,CAACJ,KAAK;IAExD,MAAMG,eAAe,GAAG,OAAOgB,KAAK,CAAChE,gBAAgB,KAAK,QAAQ,GAC9DgE,KAAK,CAAChE,gBAAgB,GACtBiE,OAAO,CAAChE,UAAU,CAAC4C,KAAK,CAACmB,KAAK,CAAChE,gBAAgB,CAAC;IAEpD,OAAOiE,OAAO,CAACtB,KAAK,CAACE,KAAK,GAAGG,eAAe;EAC9C,CAAC,CAAC;EAEF,MAAMmB,cAAc,GAAGnF,QAAQ,CAAC,MAAM;IACpC,IAAI,CAAC+D,IAAI,EAAE,OAAO,CAAC,CAAC;IAEpB,OAAO;MAAE,CAAE,GAAEA,IAAK,UAAS,GAAGE,MAAM,CAACJ;IAAM,CAAC;EAC9C,CAAC,CAAC;EAEF,OAAO;IAAE,GAAGoB,OAAO;IAAEE,cAAc;IAAElB;EAAO,CAAC;AAC/C"}
|
|
@@ -21,9 +21,9 @@ const defaultThemeOptions = {
|
|
|
21
21
|
surface: '#FFFFFF',
|
|
22
22
|
'surface-variant': '#424242',
|
|
23
23
|
'on-surface-variant': '#EEEEEE',
|
|
24
|
-
primary: '#
|
|
25
|
-
'primary-darken-1': '#
|
|
26
|
-
secondary: '#
|
|
24
|
+
primary: '#1867C0',
|
|
25
|
+
'primary-darken-1': '#1F5592',
|
|
26
|
+
secondary: '#48A9A6',
|
|
27
27
|
'secondary-darken-1': '#018786',
|
|
28
28
|
error: '#B00020',
|
|
29
29
|
info: '#2196F3',
|
|
@@ -56,10 +56,10 @@ const defaultThemeOptions = {
|
|
|
56
56
|
surface: '#212121',
|
|
57
57
|
'surface-variant': '#BDBDBD',
|
|
58
58
|
'on-surface-variant': '#424242',
|
|
59
|
-
primary: '#
|
|
60
|
-
'primary-darken-1': '#
|
|
61
|
-
secondary: '#
|
|
62
|
-
'secondary-darken-1': '#
|
|
59
|
+
primary: '#2196F3',
|
|
60
|
+
'primary-darken-1': '#277CC1',
|
|
61
|
+
secondary: '#54B6B2',
|
|
62
|
+
'secondary-darken-1': '#48A9A6',
|
|
63
63
|
error: '#CF6679',
|
|
64
64
|
info: '#2196F3',
|
|
65
65
|
success: '#4CAF50',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.mjs","names":["computed","inject","provide","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","arguments","length","undefined","isDisabled","key","Object","entries","createTheme","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","genCssVariables","themeName","bgLines","fgLines","Set","values","flatMap","push","map","str","i","join","getHead","style","children","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","type","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay","rgb","r","g","b","startsWith"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = parseThemeOptions(options)\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n if (parsedOptions.isDisabled) return\n\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n if (IN_BROWSER) {\n watch(styles, () => { entry.patch(getHead) })\n }\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n if (IN_BROWSER) {\n watch(styles, updateStyles, { immediate: true })\n } else {\n updateStyles()\n }\n\n function updateStyles () {\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theme.mjs","names":["computed","inject","provide","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","arguments","length","undefined","isDisabled","key","Object","entries","createTheme","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","genCssVariables","themeName","bgLines","fgLines","Set","values","flatMap","push","map","str","i","join","getHead","style","children","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","type","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay","rgb","r","g","b","startsWith"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#1867C0',\n 'primary-darken-1': '#1F5592',\n secondary: '#48A9A6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#2196F3',\n 'primary-darken-1': '#277CC1',\n secondary: '#54B6B2',\n 'secondary-darken-1': '#48A9A6',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = parseThemeOptions(options)\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n if (parsedOptions.isDisabled) return\n\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n if (IN_BROWSER) {\n watch(styles, () => { entry.patch(getHead) })\n }\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n if (IN_BROWSER) {\n watch(styles, updateStyles, { immediate: true })\n } else {\n updateStyles()\n }\n\n function updateStyles () {\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n"],"mappings":"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"}
|
package/lib/entry-bundler.mjs
CHANGED
|
@@ -15,7 +15,7 @@ export const createVuetify = function () {
|
|
|
15
15
|
...options
|
|
16
16
|
});
|
|
17
17
|
};
|
|
18
|
-
export const version = "3.3.12-dev.2023-08-
|
|
18
|
+
export const version = "3.3.12-dev.2023-08-18";
|
|
19
19
|
createVuetify.version = version;
|
|
20
20
|
export { components, directives };
|
|
21
21
|
export * from "./composables/index.mjs";
|
package/lib/framework.mjs
CHANGED