@@ -7,6 +7,7 @@ import isString from '../../Support/Helpers/isString'
77import querystring from ' querystring'
88import UndefinedDataPropException from ' ./Exceptions/UndefinedDataPropException'
99import Language from ' ../../Support/Language/Language'
10+ import viteHelper from ' ../../Support/Helpers/vite'
1011
1112export default class View
1213
@@ -36,6 +37,40 @@ export default class View
3637
3738 self
3839
40+ def vite file \string|string[]
41+ if Array .isArray (file )
42+ let tags = []
43+
44+ for asset in file
45+ if ! isString (asset )
46+ throw TypeError " Expected string."
47+
48+ const jsTagExtensions = [' js' , ' ts' ]
49+ const cssTagExtensions = [' css' , ' scss' , ' sass' , ' less' , ' styl' , ' stylus' ]
50+ const imgTagExtensions = [' png' , ' jpg' , ' jpeg' , ' gif' , ' svg' , ' webp' , ' avif' ]
51+ const fontTagExtensions = [' woff' , ' woff2' , ' eot' , ' ttf' , ' otf' ]
52+
53+ const extension = asset .split (' .' ).pop! .toLowerCase!
54+
55+ if ! isString (extension )
56+ throw new Error " Could not determine file extension for: {asset }"
57+
58+ if jsTagExtensions .includes (extension )
59+ tags .push (" <script type='module' src={viteHelper (asset )}></script>" )
60+ else if cssTagExtensions .includes (extension )
61+ tags .push (" <link rel='stylesheet' href={viteHelper (asset )}>" )
62+ else if imgTagExtensions .includes (extension )
63+ tags .push (" <img src={viteHelper (asset )} alt=''>" )
64+ else if fontTagExtensions .includes (extension )
65+ tags .push (" <link rel='preload' href={viteHelper (asset )} as='font' type='font/{extension }' crossorigin>" )
66+ else
67+ throw new Error " Unsupported file extension: {extension }"
68+
69+ if tags .length > 0
70+ tags .join (' \n ' )
71+ else
72+ viteHelper (file )
73+
3974 def translate key \string, default \any
4075 self .#_language .get (key , default )
4176
0 commit comments