Skip to content
Snippets Groups Projects
Commit bcbda5de authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Splitted admin and other views in dedicated webpack chunks (~25% reduction of...

Splitted admin and other views in dedicated webpack chunks (~25% reduction of chunk size for regular users)
parent 0bb487aa
Branches
Tags
No related merge requests found
Reduced app size for regular users by moving admin-related code in a dedicated chunk (#805)
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<script> <script>
import axios from 'axios' import axios from 'axios'
import _ from 'lodash' import _ from '@/lodash'
export default { export default {
props: { props: {
......
import Vue from 'vue' import Vue from 'vue'
import Router from 'vue-router' import Router from 'vue-router'
import PageNotFound from '@/components/PageNotFound'
import About from '@/components/About'
import Home from '@/components/Home'
import Authorize from '@/components/auth/Authorize'
import Login from '@/components/auth/Login'
import Signup from '@/components/auth/Signup'
import Profile from '@/components/auth/Profile'
import Settings from '@/components/auth/Settings'
import ApplicationNew from '@/components/auth/ApplicationNew'
import ApplicationEdit from '@/components/auth/ApplicationEdit'
import Logout from '@/components/auth/Logout'
import PasswordReset from '@/views/auth/PasswordReset'
import PasswordResetConfirm from '@/views/auth/PasswordResetConfirm'
import EmailConfirm from '@/views/auth/EmailConfirm'
import Library from '@/components/library/Library'
import LibraryHome from '@/components/library/Home'
import LibraryArtists from '@/components/library/Artists'
import LibraryArtistDetail from '@/components/library/ArtistDetail'
import LibraryArtistEdit from '@/components/library/ArtistEdit'
import LibraryArtistDetailBase from '@/components/library/ArtistBase'
import LibraryAlbums from '@/components/library/Albums'
import LibraryAlbumDetail from '@/components/library/AlbumDetail'
import LibraryAlbumEdit from '@/components/library/AlbumEdit'
import LibraryAlbumDetailBase from '@/components/library/AlbumBase'
import LibraryTrackDetail from '@/components/library/TrackDetail'
import LibraryTrackEdit from '@/components/library/TrackEdit'
import EditDetail from '@/components/library/EditDetail'
import LibraryTrackDetailBase from '@/components/library/TrackBase'
import LibraryRadios from '@/components/library/Radios'
import RadioBuilder from '@/components/library/radios/Builder'
import RadioDetail from '@/views/radios/Detail'
import PlaylistDetail from '@/views/playlists/Detail'
import PlaylistList from '@/views/playlists/List'
import Favorites from '@/components/favorites/List'
import AdminSettings from '@/views/admin/Settings'
import AdminLibraryBase from '@/views/admin/library/Base'
import AdminLibraryEditsList from '@/views/admin/library/EditsList'
import AdminLibraryArtistsList from '@/views/admin/library/ArtistsList'
import AdminLibraryArtistsDetail from '@/views/admin/library/ArtistDetail'
import AdminLibraryAlbumsList from '@/views/admin/library/AlbumsList'
import AdminLibraryAlbumDetail from '@/views/admin/library/AlbumDetail'
import AdminLibraryTracksList from '@/views/admin/library/TracksList'
import AdminLibraryTrackDetail from '@/views/admin/library/TrackDetail'
import AdminLibraryLibrariesList from '@/views/admin/library/LibrariesList'
import AdminLibraryLibraryDetail from '@/views/admin/library/LibraryDetail'
import AdminLibraryUploadsList from '@/views/admin/library/UploadsList'
import AdminLibraryUploadDetail from '@/views/admin/library/UploadDetail'
import AdminUsersBase from '@/views/admin/users/Base'
import AdminUsersList from '@/views/admin/users/UsersList'
import AdminInvitationsList from '@/views/admin/users/InvitationsList'
import AdminModerationBase from '@/views/admin/moderation/Base'
import AdminDomainsList from '@/views/admin/moderation/DomainsList'
import AdminDomainsDetail from '@/views/admin/moderation/DomainsDetail'
import AdminAccountsList from '@/views/admin/moderation/AccountsList'
import AdminAccountsDetail from '@/views/admin/moderation/AccountsDetail'
import ContentBase from '@/views/content/Base'
import ContentHome from '@/views/content/Home'
import LibrariesHome from '@/views/content/libraries/Home'
import LibrariesUpload from '@/views/content/libraries/Upload'
import LibrariesDetail from '@/views/content/libraries/Detail'
import LibrariesFiles from '@/views/content/libraries/Files'
import RemoteLibrariesHome from '@/views/content/remote/Home'
import Notifications from '@/views/Notifications'
Vue.use(Router) Vue.use(Router)
...@@ -73,7 +10,8 @@ export default new Router({ ...@@ -73,7 +10,8 @@ export default new Router({
{ {
path: '/', path: '/',
name: 'index', name: 'index',
component: Home component: () =>
import(/* webpackChunkName: "core" */ "@/components/Home"),
}, },
{ {
path: '/front', path: '/front',
...@@ -83,23 +21,27 @@ export default new Router({ ...@@ -83,23 +21,27 @@ export default new Router({
{ {
path: '/about', path: '/about',
name: 'about', name: 'about',
component: About component: () =>
import(/* webpackChunkName: "core" */ "@/components/About"),
}, },
{ {
path: '/login', path: '/login',
name: 'login', name: 'login',
component: Login, component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Login"),
props: (route) => ({ next: route.query.next || '/library' }) props: (route) => ({ next: route.query.next || '/library' })
}, },
{ {
path: '/notifications', path: '/notifications',
name: 'notifications', name: 'notifications',
component: Notifications component: () =>
import(/* webpackChunkName: "core" */ "@/views/Notifications"),
}, },
{ {
path: '/auth/password/reset', path: '/auth/password/reset',
name: 'auth.password-reset', name: 'auth.password-reset',
component: PasswordReset, component: () =>
import(/* webpackChunkName: "core" */ "@/views/auth/PasswordReset"),
props: (route) => ({ props: (route) => ({
defaultEmail: route.query.email defaultEmail: route.query.email
}) })
...@@ -107,7 +49,8 @@ export default new Router({ ...@@ -107,7 +49,8 @@ export default new Router({
{ {
path: '/auth/email/confirm', path: '/auth/email/confirm',
name: 'auth.email-confirm', name: 'auth.email-confirm',
component: EmailConfirm, component: () =>
import(/* webpackChunkName: "core" */ "@/views/auth/EmailConfirm"),
props: (route) => ({ props: (route) => ({
defaultKey: route.query.key defaultKey: route.query.key
}) })
...@@ -115,7 +58,8 @@ export default new Router({ ...@@ -115,7 +58,8 @@ export default new Router({
{ {
path: '/auth/password/reset/confirm', path: '/auth/password/reset/confirm',
name: 'auth.password-reset-confirm', name: 'auth.password-reset-confirm',
component: PasswordResetConfirm, component: () =>
import(/* webpackChunkName: "core" */ "@/views/auth/PasswordResetConfirm"),
props: (route) => ({ props: (route) => ({
defaultUid: route.query.uid, defaultUid: route.query.uid,
defaultToken: route.query.token defaultToken: route.query.token
...@@ -124,7 +68,8 @@ export default new Router({ ...@@ -124,7 +68,8 @@ export default new Router({
{ {
path: '/authorize', path: '/authorize',
name: 'authorize', name: 'authorize',
component: Authorize, component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Authorize"),
props: (route) => ({ props: (route) => ({
clientId: route.query.client_id, clientId: route.query.client_id,
redirectUri: route.query.redirect_uri, redirectUri: route.query.redirect_uri,
...@@ -137,7 +82,8 @@ export default new Router({ ...@@ -137,7 +82,8 @@ export default new Router({
{ {
path: '/signup', path: '/signup',
name: 'signup', name: 'signup',
component: Signup, component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Signup"),
props: (route) => ({ props: (route) => ({
defaultInvitation: route.query.invitation defaultInvitation: route.query.invitation
}) })
...@@ -145,33 +91,40 @@ export default new Router({ ...@@ -145,33 +91,40 @@ export default new Router({
{ {
path: '/logout', path: '/logout',
name: 'logout', name: 'logout',
component: Logout component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Logout"),
}, },
{ {
path: '/settings', path: '/settings',
name: 'settings', name: 'settings',
component: Settings component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Settings"),
}, },
{ {
path: '/settings/applications/new', path: '/settings/applications/new',
name: 'settings.applications.new', name: 'settings.applications.new',
component: ApplicationNew component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/ApplicationNew"),
}, },
{ {
path: '/settings/applications/:id/edit', path: '/settings/applications/:id/edit',
name: 'settings.applications.edit', name: 'settings.applications.edit',
component: ApplicationEdit, component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/ApplicationEdit"),
props: true props: true
}, },
{ {
path: '/@:username', path: '/@:username',
name: 'profile', name: 'profile',
component: Profile, component: () =>
import(/* webpackChunkName: "core" */ "@/components/auth/Profile"),
props: true props: true
}, },
{ {
path: '/favorites', path: '/favorites',
component: Favorites, component: () =>
import(/* webpackChunkName: "core" */ "@/components/favorites/List"),
props: (route) => ({ props: (route) => ({
defaultOrdering: route.query.ordering, defaultOrdering: route.query.ordering,
defaultPage: route.query.page, defaultPage: route.query.page,
...@@ -180,23 +133,27 @@ export default new Router({ ...@@ -180,23 +133,27 @@ export default new Router({
}, },
{ {
path: '/content', path: '/content',
component: ContentBase, component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/Base"),
children: [ children: [
{ {
path: '', path: '',
name: 'content.index', name: 'content.index',
component: ContentHome component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/Home"),
} }
] ]
}, },
{ {
path: '/content/libraries/tracks', path: '/content/libraries/tracks',
component: ContentBase, component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/Base"),
children: [ children: [
{ {
path: '', path: '',
name: 'content.libraries.files', name: 'content.libraries.files',
component: LibrariesFiles, component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/libraries/Files"),
props: (route) => ({ props: (route) => ({
query: route.query.q query: route.query.q
}) })
...@@ -205,17 +162,20 @@ export default new Router({ ...@@ -205,17 +162,20 @@ export default new Router({
}, },
{ {
path: '/content/libraries', path: '/content/libraries',
component: ContentBase, component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/Base"),
children: [ children: [
{ {
path: '', path: '',
name: 'content.libraries.index', name: 'content.libraries.index',
component: LibrariesHome component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/libraries/Home"),
}, },
{ {
path: ':id/upload', path: ':id/upload',
name: 'content.libraries.detail.upload', name: 'content.libraries.detail.upload',
component: LibrariesUpload, component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/libraries/Upload"),
props: (route) => ({ props: (route) => ({
id: route.params.id, id: route.params.id,
defaultImportReference: route.query.import defaultImportReference: route.query.import
...@@ -224,35 +184,41 @@ export default new Router({ ...@@ -224,35 +184,41 @@ export default new Router({
{ {
path: ':id', path: ':id',
name: 'content.libraries.detail', name: 'content.libraries.detail',
component: LibrariesDetail, component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/libraries/Detail"),
props: true props: true
} }
] ]
}, },
{ {
path: '/content/remote', path: '/content/remote',
component: ContentBase, component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/Base"),
children: [ children: [
{ {
path: '', path: '',
name: 'content.remote.index', name: 'content.remote.index',
component: RemoteLibrariesHome component: () =>
import(/* webpackChunkName: "core" */ "@/views/content/remote/Home"),
} }
] ]
}, },
{ {
path: '/manage/settings', path: '/manage/settings',
name: 'manage.settings', name: 'manage.settings',
component: AdminSettings component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/Settings"),
}, },
{ {
path: '/manage/library', path: '/manage/library',
component: AdminLibraryBase, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/Base"),
children: [ children: [
{ {
path: 'edits', path: 'edits',
name: 'manage.library.edits', name: 'manage.library.edits',
component: AdminLibraryEditsList, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/EditsList"),
props: (route) => { props: (route) => {
return { return {
defaultQuery: route.query.q, defaultQuery: route.query.q,
...@@ -262,7 +228,8 @@ export default new Router({ ...@@ -262,7 +228,8 @@ export default new Router({
{ {
path: 'artists', path: 'artists',
name: 'manage.library.artists', name: 'manage.library.artists',
component: AdminLibraryArtistsList, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/ArtistsList"),
props: (route) => { props: (route) => {
return { return {
defaultQuery: route.query.q, defaultQuery: route.query.q,
...@@ -272,13 +239,15 @@ export default new Router({ ...@@ -272,13 +239,15 @@ export default new Router({
{ {
path: 'artists/:id', path: 'artists/:id',
name: 'manage.library.artists.detail', name: 'manage.library.artists.detail',
component: AdminLibraryArtistsDetail, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/ArtistDetail"),
props: true props: true
}, },
{ {
path: 'albums', path: 'albums',
name: 'manage.library.albums', name: 'manage.library.albums',
component: AdminLibraryAlbumsList, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/AlbumsList"),
props: (route) => { props: (route) => {
return { return {
defaultQuery: route.query.q, defaultQuery: route.query.q,
...@@ -288,13 +257,15 @@ export default new Router({ ...@@ -288,13 +257,15 @@ export default new Router({
{ {
path: 'albums/:id', path: 'albums/:id',
name: 'manage.library.albums.detail', name: 'manage.library.albums.detail',
component: AdminLibraryAlbumDetail, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/AlbumDetail"),
props: true props: true
}, },
{ {
path: 'tracks', path: 'tracks',
name: 'manage.library.tracks', name: 'manage.library.tracks',
component: AdminLibraryTracksList, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/TracksList"),
props: (route) => { props: (route) => {
return { return {
defaultQuery: route.query.q, defaultQuery: route.query.q,
...@@ -304,13 +275,15 @@ export default new Router({ ...@@ -304,13 +275,15 @@ export default new Router({
{ {
path: 'tracks/:id', path: 'tracks/:id',
name: 'manage.library.tracks.detail', name: 'manage.library.tracks.detail',
component: AdminLibraryTrackDetail, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/TrackDetail"),
props: true props: true
}, },
{ {
path: 'libraries', path: 'libraries',
name: 'manage.library.libraries', name: 'manage.library.libraries',
component: AdminLibraryLibrariesList, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/LibrariesList"),
props: (route) => { props: (route) => {
return { return {
defaultQuery: route.query.q, defaultQuery: route.query.q,
...@@ -320,13 +293,15 @@ export default new Router({ ...@@ -320,13 +293,15 @@ export default new Router({
{ {
path: 'libraries/:id', path: 'libraries/:id',
name: 'manage.library.libraries.detail', name: 'manage.library.libraries.detail',
component: AdminLibraryLibraryDetail, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/LibraryDetail"),
props: true props: true
}, },
{ {
path: 'uploads', path: 'uploads',
name: 'manage.library.uploads', name: 'manage.library.uploads',
component: AdminLibraryUploadsList, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/UploadsList"),
props: (route) => { props: (route) => {
return { return {
defaultQuery: route.query.q, defaultQuery: route.query.q,
...@@ -336,46 +311,54 @@ export default new Router({ ...@@ -336,46 +311,54 @@ export default new Router({
{ {
path: 'uploads/:id', path: 'uploads/:id',
name: 'manage.library.uploads.detail', name: 'manage.library.uploads.detail',
component: AdminLibraryUploadDetail, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/library/UploadDetail"),
props: true props: true
}, },
] ]
}, },
{ {
path: '/manage/users', path: '/manage/users',
component: AdminUsersBase, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/users/Base"),
children: [ children: [
{ {
path: 'users', path: 'users',
name: 'manage.users.users.list', name: 'manage.users.users.list',
component: AdminUsersList component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/users/UsersList"),
}, },
{ {
path: 'invitations', path: 'invitations',
name: 'manage.users.invitations.list', name: 'manage.users.invitations.list',
component: AdminInvitationsList component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/users/InvitationsList"),
} }
] ]
}, },
{ {
path: '/manage/moderation', path: '/manage/moderation',
component: AdminModerationBase, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/Base"),
children: [ children: [
{ {
path: 'domains', path: 'domains',
name: 'manage.moderation.domains.list', name: 'manage.moderation.domains.list',
component: AdminDomainsList component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/DomainsList"),
}, },
{ {
path: 'domains/:id', path: 'domains/:id',
name: 'manage.moderation.domains.detail', name: 'manage.moderation.domains.detail',
component: AdminDomainsDetail, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/DomainsDetail"),
props: true props: true
}, },
{ {
path: 'accounts', path: 'accounts',
name: 'manage.moderation.accounts.list', name: 'manage.moderation.accounts.list',
component: AdminAccountsList, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/AccountsList"),
props: (route) => { props: (route) => {
return { return {
defaultQuery: route.query.q, defaultQuery: route.query.q,
...@@ -386,20 +369,28 @@ export default new Router({ ...@@ -386,20 +369,28 @@ export default new Router({
{ {
path: 'accounts/:id', path: 'accounts/:id',
name: 'manage.moderation.accounts.detail', name: 'manage.moderation.accounts.detail',
component: AdminAccountsDetail, component: () =>
import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/AccountsDetail"),
props: true props: true
} }
] ]
}, },
{ {
path: '/library', path: '/library',
component: Library, component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/Library"),
children: [ children: [
{ path: '', component: LibraryHome, name: 'library.index' }, {
path: '',
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/Home"),
name: 'library.index'
},
{ {
path: 'artists/', path: 'artists/',
name: 'library.artists.browse', name: 'library.artists.browse',
component: LibraryArtists, component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/Artists"),
props: (route) => ({ props: (route) => ({
defaultOrdering: route.query.ordering, defaultOrdering: route.query.ordering,
defaultQuery: route.query.query, defaultQuery: route.query.query,
...@@ -410,7 +401,8 @@ export default new Router({ ...@@ -410,7 +401,8 @@ export default new Router({
{ {
path: 'albums/', path: 'albums/',
name: 'library.albums.browse', name: 'library.albums.browse',
component: LibraryAlbums, component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/Albums"),
props: (route) => ({ props: (route) => ({
defaultOrdering: route.query.ordering, defaultOrdering: route.query.ordering,
defaultQuery: route.query.query, defaultQuery: route.query.query,
...@@ -421,7 +413,8 @@ export default new Router({ ...@@ -421,7 +413,8 @@ export default new Router({
{ {
path: 'radios/', path: 'radios/',
name: 'library.radios.browse', name: 'library.radios.browse',
component: LibraryRadios, component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/Radios"),
props: (route) => ({ props: (route) => ({
defaultOrdering: route.query.ordering, defaultOrdering: route.query.ordering,
defaultQuery: route.query.query, defaultQuery: route.query.query,
...@@ -429,13 +422,32 @@ export default new Router({ ...@@ -429,13 +422,32 @@ export default new Router({
defaultPage: route.query.page defaultPage: route.query.page
}) })
}, },
{ path: 'radios/build', name: 'library.radios.build', component: RadioBuilder, props: true }, {
{ path: 'radios/build/:id', name: 'library.radios.edit', component: RadioBuilder, props: true }, path: 'radios/build',
{ path: 'radios/:id', name: 'library.radios.detail', component: RadioDetail, props: true }, name: 'library.radios.build',
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/radios/Builder"),
props: true
},
{
path: 'radios/build/:id',
name: 'library.radios.edit',
component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/radios/Builder"),
props: true
},
{
path: 'radios/:id',
name: 'library.radios.detail',
component: () =>
import(/* webpackChunkName: "core" */ "@/views/radios/Detail"),
props: true
},
{ {
path: 'playlists/', path: 'playlists/',
name: 'library.playlists.browse', name: 'library.playlists.browse',
component: PlaylistList, component: () =>
import(/* webpackChunkName: "core" */ "@/views/playlists/List"),
props: (route) => ({ props: (route) => ({
defaultOrdering: route.query.ordering, defaultOrdering: route.query.ordering,
defaultQuery: route.query.query, defaultQuery: route.query.query,
...@@ -446,82 +458,99 @@ export default new Router({ ...@@ -446,82 +458,99 @@ export default new Router({
{ {
path: 'playlists/:id', path: 'playlists/:id',
name: 'library.playlists.detail', name: 'library.playlists.detail',
component: PlaylistDetail, component: () =>
import(/* webpackChunkName: "core" */ "@/views/playlists/Detail"),
props: (route) => ({ props: (route) => ({
id: route.params.id, id: route.params.id,
defaultEdit: route.query.mode === 'edit' }) defaultEdit: route.query.mode === 'edit' })
}, },
{ {
path: 'artists/:id', path: 'artists/:id',
component: LibraryArtistDetailBase, component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/ArtistBase"),
props: true, props: true,
children: [ children: [
{ {
path: '', path: '',
name: 'library.artists.detail', name: 'library.artists.detail',
component: LibraryArtistDetail component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/ArtistDetail"),
}, },
{ {
path: 'edit', path: 'edit',
name: 'library.artists.edit', name: 'library.artists.edit',
component: LibraryArtistEdit component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/ArtistEdit"),
}, },
{ {
path: 'edit/:editId', path: 'edit/:editId',
name: 'library.artists.edit.detail', name: 'library.artists.edit.detail',
component: EditDetail, component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/EditDetail"),
props: true, props: true,
} }
] ]
}, },
{ {
path: 'albums/:id', path: 'albums/:id',
component: LibraryAlbumDetailBase, component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/AlbumBase"),
props: true, props: true,
children: [ children: [
{ {
path: '', path: '',
name: 'library.albums.detail', name: 'library.albums.detail',
component: LibraryAlbumDetail component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/AlbumDetail"),
}, },
{ {
path: 'edit', path: 'edit',
name: 'library.albums.edit', name: 'library.albums.edit',
component: LibraryAlbumEdit component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/AlbumEdit"),
}, },
{ {
path: 'edit/:editId', path: 'edit/:editId',
name: 'library.albums.edit.detail', name: 'library.albums.edit.detail',
component: EditDetail, component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/EditDetail"),
props: true, props: true,
} }
] ]
}, },
{ {
path: 'tracks/:id', path: 'tracks/:id',
component: LibraryTrackDetailBase, component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/TrackBase"),
props: true, props: true,
children: [ children: [
{ {
path: '', path: '',
name: 'library.tracks.detail', name: 'library.tracks.detail',
component: LibraryTrackDetail component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/TrackDetail"),
}, },
{ {
path: 'edit', path: 'edit',
name: 'library.tracks.edit', name: 'library.tracks.edit',
component: LibraryTrackEdit component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/TrackEdit"),
}, },
{ {
path: 'edit/:editId', path: 'edit/:editId',
name: 'library.tracks.edit.detail', name: 'library.tracks.edit.detail',
component: EditDetail, component: () =>
import(/* webpackChunkName: "core" */ "@/components/library/EditDetail"),
props: true, props: true,
} }
] ]
}, },
] ]
}, },
{ path: '*', component: PageNotFound } {
path: '*',
component: () =>
import(/* webpackChunkName: "core" */ "@/components/PageNotFound"),
}
] ]
}) })
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment