@@ -28,3 +28,41 @@ export function isObject (value: any): value is object {
2828export function includes ( arr : any [ ] , val : any ) {
2929 return arr . includes ( val )
3030}
31+
32+ export function toKebabCase ( str = '' ) {
33+ return str
34+ . replace ( / [ ^ a - z ] / gi, '-' )
35+ . replace ( / \B ( [ A - Z ] ) / g, '-$1' )
36+ . toLowerCase ( )
37+ }
38+
39+ const defaultTags = {
40+ video : [ 'src' , 'poster' ] ,
41+ source : [ 'src' ] ,
42+ img : [ 'src' ] ,
43+ image : [ 'xlink:href' , 'href' ] ,
44+ use : [ 'xlink:href' , 'href' ] ,
45+ }
46+ export const transformAssetUrls = {
47+ VAppBar : [ 'image' ] ,
48+ VAvatar : [ 'image' ] ,
49+ VBanner : [ 'avatar' ] ,
50+ VCard : [ 'image' ] ,
51+ VCardItem : [ 'prependAvatar' , 'appendAvatar' ] ,
52+ VChip : [ 'prependAvatar' , 'appendAvatar' ] ,
53+ VImg : [ 'src' , 'lazySrc' , 'srcset' ] ,
54+ VListItem : [ 'prependAvatar' , 'appendAvatar' ] ,
55+ VNavigationDrawer : [ 'image' ] ,
56+ VParallax : [ 'src' , 'lazySrc' , 'srcset' ] ,
57+ VToolbar : [ 'image' ] ,
58+ } as Record < string , string [ ] >
59+
60+ for ( const [ tag , attrs ] of Object . entries ( transformAssetUrls ) ) {
61+ attrs . forEach ( attr => {
62+ if ( / [ A - Z ] / . test ( attr ) ) {
63+ attrs . push ( toKebabCase ( attr ) )
64+ }
65+ } )
66+ transformAssetUrls [ toKebabCase ( tag ) ] = attrs
67+ }
68+ Object . assign ( transformAssetUrls , defaultTags )
0 commit comments