settings-apps-view-7418.js.map 286 KB

1
  1. {"version":3,"file":"settings-apps-view-7418.js?v=cc1086de731088155216","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=style&index=0&id=5be7cbf9&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=style&index=0&id=62f0f115&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=79bd4dc4&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=ffd9a2d6&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=style&index=0&id=2f31fb7f&prod&lang=scss&scoped=true","webpack://nextcloud/./apps/settings/src/views/Apps.vue?8e68","webpack:///nextcloud/node_modules/vue-material-design-icons/StarShooting.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/StarShooting.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/StarShooting.vue?ea51","webpack:///nextcloud/node_modules/vue-material-design-icons/StarShooting.vue?vue&type=template&id=2796c6f2","webpack://nextcloud/./apps/settings/src/components/AppList.vue?ee21","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?26fd","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?1c98","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue","webpack://nextcloud/./apps/settings/src/components/SvgFilterMixin.vue?5bcd","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?829c","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?a9a1","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?af1e","webpack://nextcloud/./apps/settings/src/components/PrefixMixin.vue?c564","webpack:///nextcloud/apps/settings/src/components/PrefixMixin.vue","webpack:///nextcloud/apps/settings/src/components/AppList.vue","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppList.vue?9a5a","webpack://nextcloud/./apps/settings/src/components/AppList.vue?8acf","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?7e45","webpack:///nextcloud/node_modules/marked/lib/marked.esm.js","webpack:///nextcloud/apps/settings/src/components/Markdown.vue","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?8506","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?26cf","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?d299","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/components/AppDetails.vue","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?db88","webpack://nextcloud/./apps/settings/src/components/AppDetails.vue?2807","webpack:///nextcloud/apps/settings/src/views/Apps.vue","webpack:///nextcloud/apps/settings/src/views/Apps.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/views/Apps.vue?5545","webpack://nextcloud/./apps/settings/src/views/Apps.vue?7b97","webpack:///nextcloud/node_modules/vue-localstorage/dist/vue-local-storage.js"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-details[data-v-5be7cbf9]{padding:20px}.app-details__actions-manage[data-v-5be7cbf9]{display:flex}.app-details__actions-manage input[data-v-5be7cbf9]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__dependencies[data-v-5be7cbf9]{opacity:.7}.app-details__documentation[data-v-5be7cbf9]{padding-top:20px}.app-details__documentation a.appslink[data-v-5be7cbf9]{display:block}.app-details__description[data-v-5be7cbf9]{padding-top:20px}.force[data-v-5be7cbf9]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-5be7cbf9]:hover,.force[data-v-5be7cbf9]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppDetails.vue\"],\"names\":[],\"mappings\":\"AACA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,4CACC,UAAA,CAED,6CACC,gBAAA,CACA,wDACC,aAAA,CAGF,2CACC,gBAAA,CAIF,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAED,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.app-details {\\n\\tpadding: 20px;\\n\\n\\t&__actions {\\n\\t\\t// app management\\n\\t\\t&-manage {\\n\\t\\t\\t// if too many, shrink them and ellipsis\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t&__dependencies {\\n\\t\\topacity: .7;\\n\\t}\\n\\t&__documentation {\\n\\t\\tpadding-top: 20px;\\n\\t\\ta.appslink {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\t}\\n\\t&__description {\\n\\t\\tpadding-top: 20px;\\n\\t}\\n}\\n\\n.force {\\n\\tcolor: var(--color-error);\\n\\tborder-color: var(--color-error);\\n\\tbackground: var(--color-main-background);\\n}\\n.force:hover,\\n.force:active {\\n\\tcolor: var(--color-main-background);\\n\\tborder-color: var(--color-error) !important;\\n\\tbackground: var(--color-error);\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-bundle-heading[data-v-62f0f115]{display:flex;align-items:center;margin:20px 10px 20px 0}.app-bundle-header[data-v-62f0f115]{margin:0 10px 0 50px;font-weight:bold;font-size:20px;line-height:30px;color:var(--color-text-light)}.apps-store-view[data-v-62f0f115]{display:flex;flex-wrap:wrap}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,YAAA,CACA,kBAAA,CACA,uBAAA,CAED,oCACC,oBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,6BAAA,CAED,kCACC,YAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.app-bundle-heading {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmargin: 20px 10px 20px 0;\\n}\\n.app-bundle-header {\\n\\tmargin: 0 10px 0 50px;\\n\\tfont-weight: bold;\\n\\tfont-size: 20px;\\n\\tline-height: 30px;\\n\\tcolor: var(--color-text-light);\\n}\\n.apps-store-view {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-icon[data-v-79bd4dc4]{filter:var(--background-invert-if-bright)}.app-image img[data-v-79bd4dc4]{width:100%}.app-name--link[data-v-79bd4dc4]::after{content:\"\";position:absolute;top:0;left:0;right:0;bottom:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,yCAAA,CAGD,gCACC,UAAA,CAGD,wCACE,UAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.app-icon {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\\n.app-image img {\\n\\twidth: 100%;\\n}\\n\\n.app-name--link::after {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.settings-markdown[data-v-ffd9a2d6] h1,.settings-markdown[data-v-ffd9a2d6] h2,.settings-markdown[data-v-ffd9a2d6] h3,.settings-markdown[data-v-ffd9a2d6] h4,.settings-markdown[data-v-ffd9a2d6] h5,.settings-markdown[data-v-ffd9a2d6] h6{font-weight:600;line-height:120%;margin-top:24px;margin-bottom:12px;color:var(--color-main-text)}.settings-markdown[data-v-ffd9a2d6] h1{font-size:36px;margin-top:48px}.settings-markdown[data-v-ffd9a2d6] h2{font-size:28px;margin-top:48px}.settings-markdown[data-v-ffd9a2d6] h3{font-size:24px}.settings-markdown[data-v-ffd9a2d6] h4{font-size:21px}.settings-markdown[data-v-ffd9a2d6] h5{font-size:17px}.settings-markdown[data-v-ffd9a2d6] h6{font-size:var(--default-font-size)}.settings-markdown[data-v-ffd9a2d6] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-ffd9a2d6] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-ffd9a2d6] li{position:relative}.settings-markdown[data-v-ffd9a2d6] ul,.settings-markdown[data-v-ffd9a2d6] ol{padding-left:10px;margin-left:10px}.settings-markdown[data-v-ffd9a2d6] ul li{list-style-type:disc}.settings-markdown[data-v-ffd9a2d6] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-ffd9a2d6] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-ffd9a2d6] blockquote{padding-left:1em;border-left:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-left:0;margin-right:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Markdown.vue\"],\"names\":[],\"mappings\":\"AAGA,0OAMC,eAAA,CACA,gBAAA,CACA,eAAA,CACA,kBAAA,CACA,4BAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CACA,eAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,cAAA,CAGD,uCACC,kCAAA,CAGD,wCACC,eAAA,CACA,eAAA,CACA,6CAAA,CACA,kCAAA,CACA,iBAAA,CACA,iBAAA,CAGD,2CACC,6CAAA,CACA,kCAAA,CACA,iBAAA,CAGD,uCACC,iBAAA,CAGD,8EACC,iBAAA,CACA,gBAAA,CAGD,0CACC,oBAAA,CAGD,gDACC,sBAAA,CAGD,sDACC,sBAAA,CAGD,+CACC,gBAAA,CACA,kDAAA,CACA,mCAAA,CACA,aAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.settings-markdown::v-deep {\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n\\tfont-weight: 600;\\n\\tline-height: 120%;\\n\\tmargin-top: 24px;\\n\\tmargin-bottom: 12px;\\n\\tcolor: var(--color-main-text);\\n}\\n\\nh1 {\\n\\tfont-size: 36px;\\n\\tmargin-top: 48px;\\n}\\n\\nh2 {\\n\\tfont-size: 28px;\\n\\tmargin-top: 48px;\\n}\\n\\nh3 {\\n\\tfont-size: 24px;\\n}\\n\\nh4 {\\n\\tfont-size: 21px;\\n}\\n\\nh5 {\\n\\tfont-size: 17px;\\n}\\n\\nh6 {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\npre {\\n\\twhite-space: pre;\\n\\toverflow-x: auto;\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: 1em 1.3em;\\n\\tmargin-bottom: 1em;\\n}\\n\\np code {\\n\\tbackground-color: var(--color-background-dark);\\n\\tborder-radius: var(--border-radius);\\n\\tpadding: .1em .3em;\\n}\\n\\nli {\\n\\tposition: relative;\\n}\\n\\nul, ol {\\n\\tpadding-left: 10px;\\n\\tmargin-left: 10px;\\n}\\n\\nul li {\\n\\tlist-style-type: disc;\\n}\\n\\nul > li > ul > li {\\n\\tlist-style-type: circle;\\n}\\n\\nul > li > ul > li ul li {\\n\\tlist-style-type: square;\\n}\\n\\nblockquote {\\n\\tpadding-left: 1em;\\n\\tborder-left: 4px solid var(--color-primary-element);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tmargin-left: 0;\\n\\tmargin-right: 0;\\n}\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar[data-v-2f31fb7f]:not(.app-sidebar--without-background) :not(.app-sidebar-header--compact) .app-sidebar-header__figure{background-size:cover}.app-sidebar[data-v-2f31fb7f]:not(.app-sidebar--without-background) .app-sidebar-header--compact .app-sidebar-header__figure{background-size:32px;filter:var(--background-invert-if-bright)}.app-sidebar[data-v-2f31fb7f] .app-sidebar-header__description .app-version{padding-left:10px}.app-sidebar[data-v-2f31fb7f].app-sidebar--without-background .app-sidebar-header__figure{display:flex;align-items:center;justify-content:center}.app-sidebar[data-v-2f31fb7f].app-sidebar--without-background .app-sidebar-header__figure--default-app-icon{width:32px;height:32px;background-size:32px}.app-sidebar[data-v-2f31fb7f] .app-sidebar-header__desc .app-sidebar-header__subtitle{overflow:visible !important;height:auto;white-space:normal !important;line-height:16px}.app-sidebar[data-v-2f31fb7f] .app-sidebar-header__action{margin:0 20px}.app-sidebar[data-v-2f31fb7f] .app-sidebar-header__action input{margin:3px}.app-navigation[data-v-2f31fb7f] button.app-navigation-toggle{top:8px;right:-8px}.app-sidebar-tabs__release h2[data-v-2f31fb7f]{border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__release[data-v-2f31fb7f] h3{font-size:20px}.app-sidebar-tabs__release[data-v-2f31fb7f] h4{font-size:17px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/Apps.vue\"],\"names\":[],\"mappings\":\"AAIE,mIACC,qBAAA,CAGD,6HACC,oBAAA,CAEA,yCAAA,CAKD,4EACC,iBAAA,CAMD,0FACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,4GACC,UAAA,CACA,WAAA,CACA,oBAAA,CAQF,sFACC,2BAAA,CACA,WAAA,CACA,6BAAA,CACA,gBAAA,CAIF,0DAEC,aAAA,CACA,gEACC,UAAA,CAMH,8DACC,OAAA,CACA,UAAA,CAIA,+CACC,2CAAA,CAKA,+CACC,cAAA,CAED,+CACC,cAAA\",\"sourcesContent\":[\"\\n.app-sidebar::v-deep {\\n\\t&:not(.app-sidebar--without-background) {\\n\\t\\t// with full screenshot, let's fill the figure\\n\\t\\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t// revert sidebar app icon so it is black\\n\\t\\t.app-sidebar-header--compact .app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: 32px;\\n\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n\\n\\t.app-sidebar-header__description {\\n\\t\\t.app-version {\\n\\t\\t\\tpadding-left: 10px;\\n\\t\\t}\\n\\t}\\n\\n\\t// default icon slot styling\\n\\t&.app-sidebar--without-background {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\t&--default-app-icon {\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: migrate to components\\n\\t.app-sidebar-header__desc {\\n\\t\\t// allow multi line subtitle for the license\\n\\t\\t.app-sidebar-header__subtitle {\\n\\t\\t\\toverflow: visible !important;\\n\\t\\t\\theight: auto;\\n\\t\\t\\twhite-space: normal !important;\\n\\t\\t\\tline-height: 16px;\\n\\t\\t}\\n\\t}\\n\\n\\t.app-sidebar-header__action {\\n\\t\\t// align with tab content\\n\\t\\tmargin: 0 20px;\\n\\t\\tinput {\\n\\t\\t\\tmargin: 3px;\\n\\t\\t}\\n\\t}\\n}\\n\\n// Align the appNavigation toggle with the apps header toolbar\\n.app-navigation::v-deep button.app-navigation-toggle {\\n\\ttop: 8px;\\n\\tright: -8px;\\n}\\n\\n.app-sidebar-tabs__release {\\n\\th2 {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t// Overwrite changelog heading styles\\n\\t::v-deep {\\n\\t\\th3 {\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\t\\th4 {\\n\\t\\t\\tfont-size: 17px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcContent',{class:{ 'with-app-sidebar': _vm.app},attrs:{\"app-name\":\"settings\"}},[_c('NcAppNavigation',{class:{ 'icon-loading': _vm.loading },scopedSlots:_vm._u([{key:\"list\",fn:function(){return [_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-your-apps\",\"to\":{ name: 'apps' },\"exact\":true,\"icon\":\"icon-category-installed\",\"name\":_vm.t('settings', 'Your apps')}}),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-enabled\",\"to\":{ name: 'apps-category', params: { category: 'enabled' } },\"icon\":\"icon-category-enabled\",\"name\":_vm.$options.APPS_SECTION_ENUM.enabled}}),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-disabled\",\"to\":{ name: 'apps-category', params: { category: 'disabled' } },\"icon\":\"icon-category-disabled\",\"name\":_vm.$options.APPS_SECTION_ENUM.disabled}}),_vm._v(\" \"),(_vm.updateCount > 0)?_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-updates\",\"to\":{ name: 'apps-category', params: { category: 'updates' } },\"icon\":\"icon-download\",\"name\":_vm.$options.APPS_SECTION_ENUM.updates},scopedSlots:_vm._u([{key:\"counter\",fn:function(){return [_c('NcCounterBubble',[_vm._v(_vm._s(_vm.updateCount))])]},proxy:true}],null,false,54487302)}):_vm._e(),_vm._v(\" \"),(_vm.isSubscribed)?_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-supported\",\"to\":{ name: 'apps-category', params: { category: 'supported' } },\"name\":_vm.$options.APPS_SECTION_ENUM.supported},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconStarShooting',{attrs:{\"size\":20}})]},proxy:true}],null,false,704374136)}):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-your-bundles\",\"to\":{ name: 'apps-category', params: { category: 'app-bundles' } },\"icon\":\"icon-category-app-bundles\",\"name\":_vm.$options.APPS_SECTION_ENUM['app-bundles']}}),_vm._v(\" \"),_c('NcAppNavigationSpacer'),_vm._v(\" \"),(_vm.settings.appstoreEnabled)?[_c('NcAppNavigationItem',{attrs:{\"id\":\"app-category-featured\",\"to\":{ name: 'apps-category', params: { category: 'featured' } },\"icon\":\"icon-favorite\",\"name\":_vm.$options.APPS_SECTION_ENUM.featured}}),_vm._v(\" \"),_vm._l((_vm.categories),function(cat){return _c('NcAppNavigationItem',{key:'icon-category-' + cat.ident,attrs:{\"icon\":'icon-category-' + cat.ident,\"to\":{\n\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t},\"name\":cat.displayName}})})]:_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"id\":\"app-developer-docs\",\"name\":_vm.t('settings', 'Developer documentation') + ' ↗'},on:{\"click\":_vm.openDeveloperDocumentation}})]},proxy:true}])}),_vm._v(\" \"),_c('NcAppContent',{staticClass:\"app-settings-content\",class:{ 'icon-loading': _vm.loadingList }},[_c('AppList',{attrs:{\"category\":_vm.category,\"app\":_vm.app,\"search\":_vm.searchQuery}})],1),_vm._v(\" \"),(_vm.id && _vm.app)?_c('NcAppSidebar',_vm._b({class:{'app-sidebar--without-background': !_vm.appSidebar.background},on:{\"close\":_vm.hideAppDetails},scopedSlots:_vm._u([(!_vm.appSidebar.background)?{key:\"header\",fn:function(){return [_c('div',{staticClass:\"app-sidebar-header__figure--default-app-icon icon-settings-dark\"})]},proxy:true}:null,{key:\"description\",fn:function(){return [(_vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating)?_c('div',{staticClass:\"app-level\"},[(_vm.app.level === 300)?_c('span',{staticClass:\"supported icon-checkmark-color\",attrs:{\"title\":_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{staticClass:\"official icon-checkmark\",attrs:{\"title\":_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating)?_c('AppScore',{attrs:{\"score\":_vm.app.appstoreData.ratingOverall}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-version\"},[_c('p',[_vm._v(_vm._s(_vm.app.version))])])]},proxy:true}],null,true)},'NcAppSidebar',_vm.appSidebar,false),[_vm._v(\" \"),_vm._v(\" \"),_c('NcAppSidebarTab',{attrs:{\"id\":\"desc\",\"icon\":\"icon-category-office\",\"name\":_vm.t('settings', 'Details'),\"order\":0}},[_c('AppDetails',{attrs:{\"app\":_vm.app}})],1),_vm._v(\" \"),(_vm.app.appstoreData && _vm.app.releases[0].translations.en.changelog)?_c('NcAppSidebarTab',{attrs:{\"id\":\"desca\",\"icon\":\"icon-category-organization\",\"name\":_vm.t('settings', 'Changelog'),\"order\":1}},_vm._l((_vm.app.releases),function(release){return _c('div',{key:release.version,staticClass:\"app-sidebar-tabs__release\"},[_c('h2',[_vm._v(_vm._s(release.version))]),_vm._v(\" \"),(_vm.changelog(release))?_c('Markdown',{attrs:{\"text\":_vm.changelog(release)}}):_vm._e()],1)}),0):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon star-shooting-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M18.09 11.77L19.56 18.1L14 14.74L8.44 18.1L9.9 11.77L5 7.5L11.47 6.96L14 1L16.53 6.96L23 7.5L18.09 11.77M2 12.43C2.19 12.43 2.38 12.37 2.55 12.26L5.75 10.15L4.18 8.79L1.45 10.59C.989 10.89 .861 11.5 1.16 12C1.36 12.27 1.68 12.43 2 12.43M1.16 21.55C1.36 21.84 1.68 22 2 22C2.19 22 2.38 21.95 2.55 21.84L6.66 19.13L7 17.76L7.31 16.31L1.45 20.16C.989 20.47 .861 21.09 1.16 21.55M1.45 15.38C.989 15.68 .861 16.3 1.16 16.76C1.36 17.06 1.68 17.21 2 17.21C2.19 17.21 2.38 17.16 2.55 17.05L7.97 13.5L8.24 12.31L7.32 11.5L1.45 15.38Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"StarShootingIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./StarShooting.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./StarShooting.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StarShooting.vue?vue&type=template&id=2796c6f2\"\nimport script from \"./StarShooting.vue?vue&type=script&lang=js\"\nexport * from \"./StarShooting.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon star-shooting-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M18.09 11.77L19.56 18.1L14 14.74L8.44 18.1L9.9 11.77L5 7.5L11.47 6.96L14 1L16.53 6.96L23 7.5L18.09 11.77M2 12.43C2.19 12.43 2.38 12.37 2.55 12.26L5.75 10.15L4.18 8.79L1.45 10.59C.989 10.89 .861 11.5 1.16 12C1.36 12.27 1.68 12.43 2 12.43M1.16 21.55C1.36 21.84 1.68 22 2 22C2.19 22 2.38 21.95 2.55 21.84L6.66 19.13L7 17.76L7.31 16.31L1.45 20.16C.989 20.47 .861 21.09 1.16 21.55M1.45 15.38C.989 15.68 .861 16.3 1.16 16.76C1.36 17.06 1.68 17.21 2 17.21C2.19 17.21 2.38 17.16 2.55 17.05L7.97 13.5L8.24 12.31L7.32 11.5L1.45 15.38Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app-content-inner\"}},[_c('div',{staticClass:\"apps-list\",class:{installed: (_vm.useBundleView || _vm.useListView), store: _vm.useAppStoreView},attrs:{\"id\":\"apps-list\"}},[(_vm.useListView)?[(_vm.showUpdateAll)?_c('div',{staticClass:\"toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', '%n app has an update available', '%n apps have an update available', _vm.counter))+\"\\n\\t\\t\\t\\t\"),(_vm.showUpdateAll)?_c('NcButton',{attrs:{\"id\":\"app-list-update-all\",\"type\":\"primary\"},on:{\"click\":_vm.updateAll}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('settings', 'Update', 'Update all', _vm.counter))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.showUpdateAll)?_c('div',{staticClass:\"toolbar\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'All apps are up-to-date.'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"apps-list-container\",attrs:{\"name\":\"app-list\",\"tag\":\"table\"}},[_c('tr',{key:\"app-list-view-header\",staticClass:\"apps-header\"},[_c('th',{staticClass:\"app-image\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',{staticClass:\"app-name\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',{staticClass:\"app-version\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',{staticClass:\"app-level\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',{staticClass:\"actions\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})})],2)]:_vm._e(),_vm._v(\" \"),(_vm.useBundleView)?_c('table',{staticClass:\"apps-list-container\"},[_c('tr',{key:\"app-list-view-header\",staticClass:\"apps-header\"},[_c('th',{staticClass:\"app-image\",attrs:{\"id\":\"app-table-col-icon\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Icon')))])]),_vm._v(\" \"),_c('th',{staticClass:\"app-name\",attrs:{\"id\":\"app-table-col-name\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Name')))])]),_vm._v(\" \"),_c('th',{staticClass:\"app-version\",attrs:{\"id\":\"app-table-col-version\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Version')))])]),_vm._v(\" \"),_c('th',{staticClass:\"app-level\",attrs:{\"id\":\"app-table-col-level\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Level')))])]),_vm._v(\" \"),_c('th',{staticClass:\"actions\",attrs:{\"id\":\"app-table-col-actions\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Actions')))])])]),_vm._v(\" \"),_vm._l((_vm.bundles),function(bundle){return [_c('tr',{key:bundle.id},[_c('th',{attrs:{\"id\":`app-table-rowgroup-${bundle.id}`,\"colspan\":\"5\",\"scope\":\"rowgroup\"}},[_c('div',{staticClass:\"app-bundle-heading\"},[_c('span',{staticClass:\"app-bundle-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(bundle.name)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){return _vm.toggleBundle(bundle.id)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', _vm.bundleToggleText(bundle.id)))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])],1)])]),_vm._v(\" \"),_vm._l((_vm.bundleApps(bundle.id)),function(app){return _c('AppItem',{key:bundle.id + app.id,attrs:{\"use-bundle-view\":true,\"headers\":`app-table-rowgroup-${bundle.id}`,\"app\":app,\"category\":_vm.category}})})]})],2):_vm._e(),_vm._v(\" \"),(_vm.useAppStoreView)?_c('ul',{staticClass:\"apps-store-view\"},_vm._l((_vm.apps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category,\"list-view\":false}})}),1):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"apps-list installed\",attrs:{\"id\":\"apps-list-search\"}},[_c('div',{staticClass:\"apps-list-container\"},[(_vm.search !== '' && _vm.searchApps.length > 0)?[_c('div',{staticClass:\"section\"},[_c('div'),_vm._v(\" \"),_c('td',{attrs:{\"colspan\":\"5\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Results from other categories')))])])]),_vm._v(\" \"),_vm._l((_vm.searchApps),function(app){return _c('AppItem',{key:app.id,attrs:{\"app\":app,\"category\":_vm.category}})})]:_vm._e()],2)]),_vm._v(\" \"),(_vm.search !== '' && !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0)?_c('div',{staticClass:\"emptycontent emptycontent-search\",attrs:{\"id\":\"apps-list-empty\"}},[_c('div',{staticClass:\"icon-settings-dark\",attrs:{\"id\":\"app-list-empty-icon\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No apps found for your version')))])]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"searchresults\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<img :src=\"scoreImage\" :alt=\"t('settings', 'Rating: {score}/10', {score:appScore})\" class=\"app-score-image\">\n</template>\n<script>\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'AppScore',\n\tprops: ['score'],\n\tcomputed: {\n\t\tappScore() {\n\t\t\treturn Math.round(this.score * 10)\n\t\t},\n\t\tscoreImage() {\n\t\t\tconst imageName = 'rating/s' + this.appScore + '.svg'\n\t\t\treturn imagePath('core', imageName)\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=d50ef390\"\nimport script from \"./AppScore.vue?vue&type=script&lang=js\"\nexport * from \"./AppScore.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('img',{staticClass:\"app-score-image\",attrs:{\"src\":_vm.scoreImage,\"alt\":_vm.t('settings', 'Rating: {score}/10', {score:_vm.appScore})}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { emit } from '@nextcloud/event-bus'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport rebuildNavigation from '../service/rebuild-navigation.js'\n\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tinstalling() {\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tisLoading() {\n\t\t\treturn this.app && this.$store.getters.loading(this.app.id)\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t}\n\t\t\treturn t('settings', 'Enable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Allow untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Allow untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app.groups.length || this.groupCheckedAppsData) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(groupArray) {\n\t\t\tconst group = groupArray.pop()\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tenable(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId, groups: [] })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tdisable(appId) {\n\t\t\tthis.$store.dispatch('disableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tremove(appId) {\n\t\t\tthis.$store.dispatch('uninstallApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tinstall(appId) {\n\t\t\tthis.$store.dispatch('enableApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t\tupdate(appId) {\n\t\t\tthis.$store.dispatch('updateApp', { appId })\n\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t.catch((error) => { showError(error) })\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'SvgFilterMixin',\n\tdata() {\n\t\treturn {\n\t\t\tfilterId: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tfilterUrl() {\n\t\t\treturn `url(#${this.filterId})`\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.filterId = 'invertIconApps-' + Math.random().toString(36).substring(2)\n\t},\n}\n</script>\n","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<component :is=\"listView ? `tr` : `li`\"\n\t\tclass=\"section\"\n\t\t:class=\"{ selected: isSelected }\">\n\t\t<component :is=\"dataItemTag\"\n\t\t\tclass=\"app-image app-image-icon\"\n\t\t\t:headers=\"getDataItemHeaders(`app-table-col-icon`)\">\n\t\t\t<div v-if=\"(listView && !app.preview) || (!listView && !screenshotLoaded)\" class=\"icon-settings-dark\" />\n\n\t\t\t<svg v-else-if=\"listView && app.preview\"\n\t\t\t\twidth=\"32\"\n\t\t\t\theight=\"32\"\n\t\t\t\tviewBox=\"0 0 32 32\">\n\t\t\t\t<image x=\"0\"\n\t\t\t\t\ty=\"0\"\n\t\t\t\t\twidth=\"32\"\n\t\t\t\t\theight=\"32\"\n\t\t\t\t\tpreserveAspectRatio=\"xMinYMin meet\"\n\t\t\t\t\t:xlink:href=\"app.preview\"\n\t\t\t\t\tclass=\"app-icon\" />\n\t\t\t</svg>\n\n\t\t\t<img v-if=\"!listView && app.screenshot && screenshotLoaded\" :src=\"app.screenshot\" alt=\"\">\n\t\t</component>\n\t\t<component :is=\"dataItemTag\"\n\t\t\tclass=\"app-name\"\n\t\t\t:headers=\"getDataItemHeaders(`app-table-col-name`)\">\n\t\t\t<router-link class=\"app-name--link\" :to=\"{ name: 'apps-details',\tparams: { category: category, id: app.id }}\"\n\t\t\t\t:aria-label=\"t('settings', 'Show details for {appName} app', { appName:app.name })\">\n\t\t\t\t{{ app.name }}\n\t\t\t</router-link>\n\t\t</component>\n\t\t<component :is=\"dataItemTag\"\n\t\t\tv-if=\"!listView\"\n\t\t\tclass=\"app-summary\"\n\t\t\t:headers=\"getDataItemHeaders(`app-version`)\">\n\t\t\t{{ app.summary }}\n\t\t</component>\n\t\t<component :is=\"dataItemTag\"\n\t\t\tv-if=\"listView\"\n\t\t\tclass=\"app-version\"\n\t\t\t:headers=\"getDataItemHeaders(`app-table-col-version`)\">\n\t\t\t<span v-if=\"app.version\">{{ app.version }}</span>\n\t\t\t<span v-else-if=\"app.appstoreData.releases[0].version\">{{ app.appstoreData.releases[0].version }}</span>\n\t\t</component>\n\n\t\t<component :is=\"dataItemTag\" :headers=\"getDataItemHeaders(`app-table-col-level`)\" class=\"app-level\">\n\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\t:title=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\t:aria-label=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\t:title=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\t:aria-label=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t<AppScore v-if=\"hasRating && !listView\" :score=\"app.score\" />\n\t\t</component>\n\t\t<component :is=\"dataItemTag\" :headers=\"getDataItemHeaders(`app-table-col-actions`)\" class=\"actions\">\n\t\t\t<div v-if=\"app.error\" class=\"warning\">\n\t\t\t\t{{ app.error }}\n\t\t\t</div>\n\t\t\t<div v-if=\"isLoading\" class=\"icon icon-loading-small\" />\n\t\t\t<NcButton v-if=\"app.update\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"update(app.id)\">\n\t\t\t\t{{ t('settings', 'Update to {update}', {update:app.update}) }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"app.canUnInstall\"\n\t\t\t\tclass=\"uninstall\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"remove(app.id)\">\n\t\t\t\t{{ t('settings', 'Remove') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"app.active\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"disable(app.id)\">\n\t\t\t\t{{ t('settings','Disable') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t:title=\"enableButtonTooltip\"\n\t\t\t\t:aria-label=\"enableButtonTooltip\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t@click.stop=\"enable(app.id)\">\n\t\t\t\t{{ enableButtonText }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-else-if=\"!app.active\"\n\t\t\t\t:title=\"forceEnableButtonTooltip\"\n\t\t\t\t:aria-label=\"forceEnableButtonTooltip\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t@click.stop=\"forceEnable(app.id)\">\n\t\t\t\t{{ forceEnableButtonText }}\n\t\t\t</NcButton>\n\t\t</component>\n\t</component>\n</template>\n\n<script>\nimport AppScore from './AppScore.vue'\nimport AppManagement from '../../mixins/AppManagement.js'\nimport SvgFilterMixin from '../SvgFilterMixin.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nexport default {\n\tname: 'AppItem',\n\tcomponents: {\n\t\tAppScore,\n\t\tNcButton,\n\t},\n\tmixins: [AppManagement, SvgFilterMixin],\n\tprops: {\n\t\tapp: {},\n\t\tcategory: {},\n\t\tlistView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tuseBundleView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\theaders: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tisSelected: false,\n\t\t\tscrolled: false,\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\t\tdataItemTag() {\n\t\t\treturn this.listView ? 'td' : 'div'\n\t\t},\n\t},\n\twatch: {\n\t\t'$route.params.id'(id) {\n\t\t\tthis.isSelected = (this.app.id === id)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.isSelected = (this.app.id === this.$route.params.id)\n\t\tif (this.app.releases && this.app.screenshot) {\n\t\t\tconst image = new Image()\n\t\t\timage.onload = (e) => {\n\t\t\t\tthis.screenshotLoaded = true\n\t\t\t}\n\t\t\timage.src = this.app.screenshot\n\t\t}\n\t},\n\twatchers: {\n\n\t},\n\tmethods: {\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\n\t\tgetDataItemHeaders(columnName) {\n\t\t\treturn this.useBundleView ? [this.headers, columnName].join(' ') : null\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.app-icon {\n\tfilter: var(--background-invert-if-bright);\n}\n\n.app-image img {\n\twidth: 100%;\n}\n\n.app-name--link::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=79bd4dc4&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=79bd4dc4&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=79bd4dc4&scoped=true\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=79bd4dc4&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"79bd4dc4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.listView ? `tr` : `li`,{tag:\"component\",staticClass:\"section\",class:{ selected: _vm.isSelected }},[_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-image app-image-icon\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-icon`)}},[((_vm.listView && !_vm.app.preview) || (!_vm.listView && !_vm.screenshotLoaded))?_c('div',{staticClass:\"icon-settings-dark\"}):(_vm.listView && _vm.app.preview)?_c('svg',{attrs:{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"0 0 32 32\"}},[_c('image',{staticClass:\"app-icon\",attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"32\",\"height\":\"32\",\"preserveAspectRatio\":\"xMinYMin meet\",\"xlink:href\":_vm.app.preview}})]):_vm._e(),_vm._v(\" \"),(!_vm.listView && _vm.app.screenshot && _vm.screenshotLoaded)?_c('img',{attrs:{\"src\":_vm.app.screenshot,\"alt\":\"\"}}):_vm._e()]),_vm._v(\" \"),_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-name\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-name`)}},[_c('router-link',{staticClass:\"app-name--link\",attrs:{\"to\":{ name: 'apps-details',\tparams: { category: _vm.category, id: _vm.app.id }},\"aria-label\":_vm.t('settings', 'Show details for {appName} app', { appName:_vm.app.name })}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.name)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(!_vm.listView)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-summary\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-version`)}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.summary)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.listView)?_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-version\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-version`)}},[(_vm.app.version)?_c('span',[_vm._v(_vm._s(_vm.app.version))]):(_vm.app.appstoreData.releases[0].version)?_c('span',[_vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"app-level\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-level`)}},[(_vm.app.level === 300)?_c('span',{staticClass:\"supported icon-checkmark-color\",attrs:{\"title\":_vm.t('settings', 'This app is supported via your current Nextcloud subscription.'),\"aria-label\":_vm.t('settings', 'This app is supported via your current Nextcloud subscription.')}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Supported')))]):_vm._e(),_vm._v(\" \"),(_vm.app.level === 200)?_c('span',{staticClass:\"official icon-checkmark\",attrs:{\"title\":_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.'),\"aria-label\":_vm.t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Featured')))]):_vm._e(),_vm._v(\" \"),(_vm.hasRating && !_vm.listView)?_c('AppScore',{attrs:{\"score\":_vm.app.score}}):_vm._e()],1),_vm._v(\" \"),_c(_vm.dataItemTag,{tag:\"component\",staticClass:\"actions\",attrs:{\"headers\":_vm.getDataItemHeaders(`app-table-col-actions`)}},[(_vm.app.error)?_c('div',{staticClass:\"warning\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.app.error)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isLoading)?_c('div',{staticClass:\"icon icon-loading-small\"}):_vm._e(),_vm._v(\" \"),(_vm.app.update)?_c('NcButton',{attrs:{\"type\":\"primary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.update(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Update to {update}', {update:_vm.app.update}))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('NcButton',{staticClass:\"uninstall\",attrs:{\"type\":\"tertiary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.remove(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('NcButton',{attrs:{\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.disable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings','Disable'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('NcButton',{attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"type\":\"primary\",\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.enable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.enableButtonText)+\"\\n\\t\\t\")]):(!_vm.app.active)?_c('NcButton',{attrs:{\"title\":_vm.forceEnableButtonTooltip,\"aria-label\":_vm.forceEnableButtonTooltip,\"type\":\"secondary\",\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){$event.stopPropagation();return _vm.forceEnable(_vm.app.id)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.forceEnableButtonText)+\"\\n\\t\\t\")]):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render, staticRenderFns\nimport script from \"./PrefixMixin.vue?vue&type=script&lang=js\"\nexport * from \"./PrefixMixin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<script>\nexport default {\n\tname: 'PrefixMixin',\n\tmethods: {\n\t\tprefix(prefix, content) {\n\t\t\treturn prefix + '_' + content\n\t\t},\n\t},\n}\n</script>\n","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div id=\"app-content-inner\">\n\t\t<div id=\"apps-list\" class=\"apps-list\" :class=\"{installed: (useBundleView || useListView), store: useAppStoreView}\">\n\t\t\t<template v-if=\"useListView\">\n\t\t\t\t<div v-if=\"showUpdateAll\" class=\"toolbar\">\n\t\t\t\t\t{{ n('settings', '%n app has an update available', '%n apps have an update available', counter) }}\n\t\t\t\t\t<NcButton v-if=\"showUpdateAll\"\n\t\t\t\t\t\tid=\"app-list-update-all\"\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t@click=\"updateAll\">\n\t\t\t\t\t\t{{ n('settings', 'Update', 'Update all', counter) }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"!showUpdateAll\" class=\"toolbar\">\n\t\t\t\t\t{{ t('settings', 'All apps are up-to-date.') }}\n\t\t\t\t</div>\n\n\t\t\t\t<transition-group name=\"app-list\" tag=\"table\" class=\"apps-list-container\">\n\t\t\t\t\t<tr key=\"app-list-view-header\" class=\"apps-header\">\n\t\t\t\t\t\t<th class=\"app-image\">\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Icon') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th class=\"app-name\">\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Name') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th class=\"app-version\">\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Version') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th class=\"app-level\">\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Level') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<th class=\"actions\">\n\t\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Actions') }}</span>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</transition-group>\n\t\t\t</template>\n\n\t\t\t<table v-if=\"useBundleView\"\n\t\t\t\tclass=\"apps-list-container\">\n\t\t\t\t<tr key=\"app-list-view-header\" class=\"apps-header\">\n\t\t\t\t\t<th id=\"app-table-col-icon\" class=\"app-image\">\n\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Icon') }}</span>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th id=\"app-table-col-name\" class=\"app-name\">\n\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Name') }}</span>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th id=\"app-table-col-version\" class=\"app-version\">\n\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Version') }}</span>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th id=\"app-table-col-level\" class=\"app-level\">\n\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Level') }}</span>\n\t\t\t\t\t</th>\n\t\t\t\t\t<th id=\"app-table-col-actions\" class=\"actions\">\n\t\t\t\t\t\t<span class=\"hidden-visually\">{{ t('settings', 'Actions') }}</span>\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t\t<template v-for=\"bundle in bundles\">\n\t\t\t\t\t<tr :key=\"bundle.id\">\n\t\t\t\t\t\t<th :id=\"`app-table-rowgroup-${bundle.id}`\" colspan=\"5\" scope=\"rowgroup\">\n\t\t\t\t\t\t\t<div class=\"app-bundle-heading\">\n\t\t\t\t\t\t\t\t<span class=\"app-bundle-header\">\n\t\t\t\t\t\t\t\t\t{{ bundle.name }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<NcButton type=\"secondary\" @click=\"toggleBundle(bundle.id)\">\n\t\t\t\t\t\t\t\t\t{{ t('settings', bundleToggleText(bundle.id)) }}\n\t\t\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<AppItem v-for=\"app in bundleApps(bundle.id)\"\n\t\t\t\t\t\t:key=\"bundle.id + app.id\"\n\t\t\t\t\t\t:use-bundle-view=\"true\"\n\t\t\t\t\t\t:headers=\"`app-table-rowgroup-${bundle.id}`\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</template>\n\t\t\t</table>\n\t\t\t<ul v-if=\"useAppStoreView\" class=\"apps-store-view\">\n\t\t\t\t<AppItem v-for=\"app in apps\"\n\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t:category=\"category\"\n\t\t\t\t\t:list-view=\"false\" />\n\t\t\t</ul>\n\t\t</div>\n\n\t\t<div id=\"apps-list-search\" class=\"apps-list installed\">\n\t\t\t<div class=\"apps-list-container\">\n\t\t\t\t<template v-if=\"search !== '' && searchApps.length > 0\">\n\t\t\t\t\t<div class=\"section\">\n\t\t\t\t\t\t<div />\n\t\t\t\t\t\t<td colspan=\"5\">\n\t\t\t\t\t\t\t<h2>{{ t('settings', 'Results from other categories') }}</h2>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</div>\n\t\t\t\t\t<AppItem v-for=\"app in searchApps\"\n\t\t\t\t\t\t:key=\"app.id\"\n\t\t\t\t\t\t:app=\"app\"\n\t\t\t\t\t\t:category=\"category\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div v-if=\"search !== '' && !loading && searchApps.length === 0 && apps.length === 0\" id=\"apps-list-empty\" class=\"emptycontent emptycontent-search\">\n\t\t\t<div id=\"app-list-empty-icon\" class=\"icon-settings-dark\" />\n\t\t\t<h2>{{ t('settings', 'No apps found for your version') }}</h2>\n\t\t</div>\n\n\t\t<div id=\"searchresults\" />\n\t</div>\n</template>\n\n<script>\nimport AppItem from './AppList/AppItem.vue'\nimport PrefixMixin from './PrefixMixin.vue'\nimport pLimit from 'p-limit'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nexport default {\n\tname: 'AppList',\n\tcomponents: {\n\t\tAppItem,\n\t\tNcButton,\n\t},\n\tmixins: [PrefixMixin],\n\tprops: ['category', 'app', 'search'],\n\tcomputed: {\n\t\tcounter() {\n\t\t\treturn this.apps.filter(app => app.update).length\n\t\t},\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\thasPendingUpdate() {\n\t\t\treturn this.apps.filter(app => app.update).length > 0\n\t\t},\n\t\tshowUpdateAll() {\n\t\t\treturn this.hasPendingUpdate && this.useListView\n\t\t},\n\t\tapps() {\n\t\t\tconst apps = this.$store.getters.getAllApps\n\t\t\t\t.filter(app => app.name.toLowerCase().search(this.search.toLowerCase()) !== -1)\n\t\t\t\t.sort(function(a, b) {\n\t\t\t\t\tconst sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name\n\t\t\t\t\tconst sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name\n\t\t\t\t\treturn OC.Util.naturalSortCompare(sortStringA, sortStringB)\n\t\t\t\t})\n\n\t\t\tif (this.category === 'installed') {\n\t\t\t\treturn apps.filter(app => app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'enabled') {\n\t\t\t\treturn apps.filter(app => app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'disabled') {\n\t\t\t\treturn apps.filter(app => !app.active && app.installed)\n\t\t\t}\n\t\t\tif (this.category === 'app-bundles') {\n\t\t\t\treturn apps.filter(app => app.bundles)\n\t\t\t}\n\t\t\tif (this.category === 'updates') {\n\t\t\t\treturn apps.filter(app => app.update)\n\t\t\t}\n\t\t\tif (this.category === 'supported') {\n\t\t\t\t// For customers of the Nextcloud GmbH the app level will be set to `300` for apps that are supported in their subscription\n\t\t\t\treturn apps.filter(app => app.level === 300)\n\t\t\t}\n\t\t\tif (this.category === 'featured') {\n\t\t\t\t// An app level of `200` will be set for apps featured on the app store\n\t\t\t\treturn apps.filter(app => app.level === 200)\n\t\t\t}\n\t\t\t// filter app store categories\n\t\t\treturn apps.filter(app => {\n\t\t\t\treturn app.appstore && app.category !== undefined\n\t\t\t\t\t&& (app.category === this.category || app.category.indexOf(this.category) > -1)\n\t\t\t})\n\t\t},\n\t\tbundles() {\n\t\t\treturn this.$store.getters.getServerData.bundles.filter(bundle => this.bundleApps(bundle.id).length > 0)\n\t\t},\n\t\tbundleApps() {\n\t\t\treturn function(bundle) {\n\t\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t\t.filter(app => {\n\t\t\t\t\t\treturn app.bundleIds !== undefined && app.bundleIds.includes(bundle)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tsearchApps() {\n\t\t\tif (this.search === '') {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.$store.getters.getAllApps\n\t\t\t\t.filter(app => {\n\t\t\t\t\tif (app.name.toLowerCase().search(this.search.toLowerCase()) !== -1) {\n\t\t\t\t\t\treturn (!this.apps.find(_app => _app.id === app.id))\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t},\n\t\tuseAppStoreView() {\n\t\t\treturn !this.useListView && !this.useBundleView\n\t\t},\n\t\tuseListView() {\n\t\t\treturn (this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates' || this.category === 'featured' || this.category === 'supported')\n\t\t},\n\t\tuseBundleView() {\n\t\t\treturn (this.category === 'app-bundles')\n\t\t},\n\t\tallBundlesEnabled() {\n\t\t\treturn (id) => {\n\t\t\t\treturn this.bundleApps(id).filter(app => !app.active).length === 0\n\t\t\t}\n\t\t},\n\t\tbundleToggleText() {\n\t\t\treturn (id) => {\n\t\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\t\treturn t('settings', 'Disable all')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Download and enable all')\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleBundle(id) {\n\t\t\tif (this.allBundlesEnabled(id)) {\n\t\t\t\treturn this.disableBundle(id)\n\t\t\t}\n\t\t\treturn this.enableBundle(id)\n\t\t},\n\t\tenableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('enableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tdisableBundle(id) {\n\t\t\tconst apps = this.bundleApps(id).map(app => app.id)\n\t\t\tthis.$store.dispatch('disableApp', { appId: apps, groups: [] })\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tOC.Notification.show(error)\n\t\t\t\t})\n\t\t},\n\t\tupdateAll() {\n\t\t\tconst limit = pLimit(1)\n\t\t\tthis.apps\n\t\t\t\t.filter(app => app.update)\n\t\t\t\t.map(app => limit(() => this.$store.dispatch('updateApp', { appId: app.id })),\n\t\t\t\t)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.app-bundle-heading {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmargin: 20px 10px 20px 0;\n\t}\n\t.app-bundle-header {\n\t\tmargin: 0 10px 0 50px;\n\t\tfont-weight: bold;\n\t\tfont-size: 20px;\n\t\tline-height: 30px;\n\t\tcolor: var(--color-text-light);\n\t}\n\t.apps-store-view {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=style&index=0&id=62f0f115&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=style&index=0&id=62f0f115&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=62f0f115&scoped=true\"\nimport script from \"./AppList.vue?vue&type=script&lang=js\"\nexport * from \"./AppList.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppList.vue?vue&type=style&index=0&id=62f0f115&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62f0f115\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"app-details\"},[_c('div',{staticClass:\"app-details__actions\"},[(_vm.app.active && _vm.canLimitToGroups(_vm.app))?_c('div',{staticClass:\"app-details__actions-groups\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.groupCheckedAppsData),expression:\"groupCheckedAppsData\"}],staticClass:\"groups-enable__checkbox checkbox\",attrs:{\"id\":_vm.prefix('groups_enable', _vm.app.id),\"type\":\"checkbox\"},domProps:{\"value\":_vm.app.id,\"checked\":Array.isArray(_vm.groupCheckedAppsData)?_vm._i(_vm.groupCheckedAppsData,_vm.app.id)>-1:(_vm.groupCheckedAppsData)},on:{\"change\":[function($event){var $$a=_vm.groupCheckedAppsData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.app.id,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.groupCheckedAppsData=$$a.concat([$$v]))}else{$$i>-1&&(_vm.groupCheckedAppsData=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.groupCheckedAppsData=$$c}},_vm.setGroupLimit]}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.prefix('groups_enable', _vm.app.id)}},[_vm._v(_vm._s(_vm.t('settings', 'Limit to groups')))]),_vm._v(\" \"),_c('input',{staticClass:\"group_select\",attrs:{\"type\":\"hidden\",\"title\":_vm.t('settings', 'All'),\"value\":\"\"}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"limitToGroups\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Limit app usage to groups')))])]),_vm._v(\" \"),(_vm.isLimitedToGroups(_vm.app))?_c('NcSelect',{attrs:{\"input-id\":\"limitToGroups\",\"options\":_vm.groups,\"value\":_vm.appGroups,\"limit\":5,\"label\":\"name\",\"multiple\":true,\"close-on-select\":false},on:{\"option:selected\":_vm.addGroupLimitation,\"option:deselected\":_vm.removeGroupLimitation,\"search\":_vm.asyncFindGroup}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"app-details__actions-manage\"},[(_vm.app.update)?_c('input',{staticClass:\"update primary\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Update to {version}', { version: _vm.app.update }),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.update(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.canUnInstall)?_c('input',{staticClass:\"uninstall\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings', 'Remove'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.remove(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(_vm.app.active)?_c('input',{staticClass:\"enable\",attrs:{\"type\":\"button\",\"value\":_vm.t('settings','Disable'),\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.disable(_vm.app.id)}}}):_vm._e(),_vm._v(\" \"),(!_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible))?_c('input',{staticClass:\"enable primary\",attrs:{\"title\":_vm.enableButtonTooltip,\"aria-label\":_vm.enableButtonTooltip,\"type\":\"button\",\"value\":_vm.enableButtonText,\"disabled\":!_vm.app.canInstall || _vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.enable(_vm.app.id)}}}):(!_vm.app.active && !_vm.app.canInstall)?_c('input',{staticClass:\"enable force\",attrs:{\"title\":_vm.forceEnableButtonTooltip,\"aria-label\":_vm.forceEnableButtonTooltip,\"type\":\"button\",\"value\":_vm.forceEnableButtonText,\"disabled\":_vm.installing || _vm.isLoading},on:{\"click\":function($event){return _vm.forceEnable(_vm.app.id)}}}):_vm._e()])]),_vm._v(\" \"),_c('ul',{staticClass:\"app-details__dependencies\"},[(_vm.app.missingMinOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.app.missingMaxOwnCloudVersion)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.app.canInstall)?_c('li',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:'))+\"\\n\\t\\t\\t\"),_c('ul',{staticClass:\"missing-dependencies\"},_vm._l((_vm.app.missingDependencies),function(dep,index){return _c('li',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(dep)+\"\\n\\t\\t\\t\\t\")])}),0)]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"app-details__documentation\"},[(!_vm.app.internal)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.appstoreUrl,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'View in store'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.website)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.website,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Visit website'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.bugs)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.bugs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Report a bug'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.user)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.user,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'User documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.admin)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.admin,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Admin documentation'))+\" ↗\")]):_vm._e(),_vm._v(\" \"),(_vm.app.documentation && _vm.app.documentation.developer)?_c('a',{staticClass:\"appslink\",attrs:{\"href\":_vm.app.documentation.developer,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(_vm._s(_vm.t('settings', 'Developer documentation'))+\" ↗\")]):_vm._e()]),_vm._v(\" \"),_c('Markdown',{staticClass:\"app-details__description\",attrs:{\"text\":_vm.app.description}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * marked v9.1.5 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n // TODO: Fix this rules type\n rules;\n lexer;\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n list.items[list.items.length - 1].text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const item = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c, tokens: [] };\n }),\n align: cap[2].replace(/^\\||\\| *$/g, '').split('|'),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n const align = item.align[i];\n if (align) {\n if (/^ *-+: *$/.test(align)) {\n item.align[i] = 'right';\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align[i] = 'center';\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align[i] = 'left';\n }\n else {\n item.align[i] = null;\n }\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n return { text: c, tokens: [] };\n });\n }\n // parse child tokens inside headers and cells\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nblock.normal = { ...block };\n/**\n * GFM Block Grammar\n */\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nblock.pedantic = {\n ...block.normal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^((?![*_])[\\spunctuation])/\n};\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\ninline._punctuation = '\\\\p{P}$+<=>`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\ninline.normal = { ...inline };\n/**\n * Pedantic Inline Grammar\n */\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\ninline.breaks = {\n ...inline.gfm,\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n\n/**\n * Block Lexer\n */\nclass _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"language-'\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)));\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n parser = _Parser.parse;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n lexer = _Lexer.lex;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop];\n const rendererKey = prop;\n const prevRenderer = renderer[rendererKey];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop];\n const tokenizerKey = prop;\n const prevTokenizer = tokenizer[tokenizerKey];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop];\n const hooksKey = prop;\n const prevHook = hooks[hooksKey];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n hooks[hooksKey] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"settings-markdown\" v-html=\"renderMarkdown\" />\n</template>\n\n<script>\nimport { marked } from 'marked'\nimport dompurify from 'dompurify'\n\nexport default {\n\tname: 'Markdown',\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tcomputed: {\n\t\trenderMarkdown() {\n\t\t\tconst renderer = new marked.Renderer()\n\t\t\trenderer.link = function(href, title, text) {\n\t\t\t\tlet prot\n\t\t\t\ttry {\n\t\t\t\t\tprot = decodeURIComponent(unescape(href))\n\t\t\t\t\t\t.replace(/[^\\w:]/g, '')\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tif (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tlet out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"'\n\t\t\t\tif (title) {\n\t\t\t\t\tout += ' title=\"' + title + '\"'\n\t\t\t\t}\n\t\t\t\tout += '>' + text + '</a>'\n\t\t\t\treturn out\n\t\t\t}\n\t\t\trenderer.image = function(href, title, text) {\n\t\t\t\tif (text) {\n\t\t\t\t\treturn text\n\t\t\t\t}\n\t\t\t\treturn title\n\t\t\t}\n\t\t\trenderer.blockquote = function(quote) {\n\t\t\t\treturn quote\n\t\t\t}\n\t\t\treturn dompurify.sanitize(\n\t\t\t\tmarked(this.text.trim(), {\n\t\t\t\t\trenderer,\n\t\t\t\t\tgfm: false,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttables: false,\n\t\t\t\t\tbreaks: false,\n\t\t\t\t\tpedantic: false,\n\t\t\t\t\tsanitize: true,\n\t\t\t\t\tsmartLists: true,\n\t\t\t\t\tsmartypants: false,\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tSAFE_FOR_JQUERY: true,\n\t\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t\t'h1',\n\t\t\t\t\t\t'h2',\n\t\t\t\t\t\t'h3',\n\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t'h5',\n\t\t\t\t\t\t'h6',\n\t\t\t\t\t\t'strong',\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t'ol',\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t'em',\n\t\t\t\t\t\t'del',\n\t\t\t\t\t\t'blockquote',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.settings-markdown::v-deep {\n\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tfont-weight: 600;\n\t\tline-height: 120%;\n\t\tmargin-top: 24px;\n\t\tmargin-bottom: 12px;\n\t\tcolor: var(--color-main-text);\n\t}\n\n\th1 {\n\t\tfont-size: 36px;\n\t\tmargin-top: 48px;\n\t}\n\n\th2 {\n\t\tfont-size: 28px;\n\t\tmargin-top: 48px;\n\t}\n\n\th3 {\n\t\tfont-size: 24px;\n\t}\n\n\th4 {\n\t\tfont-size: 21px;\n\t}\n\n\th5 {\n\t\tfont-size: 17px;\n\t}\n\n\th6 {\n\t\tfont-size: var(--default-font-size);\n\t}\n\n\tpre {\n\t\twhite-space: pre;\n\t\toverflow-x: auto;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 1em 1.3em;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tp code {\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: .1em .3em;\n\t}\n\n\tli {\n\t\tposition: relative;\n\t}\n\n\tul, ol {\n\t\tpadding-left: 10px;\n\t\tmargin-left: 10px;\n\t}\n\n\tul li {\n\t\tlist-style-type: disc;\n\t}\n\n\tul > li > ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\tul > li > ul > li ul li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-left: 1em;\n\t\tborder-left: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-left: 0;\n\t\tmargin-right: 0;\n\t}\n\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=ffd9a2d6&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=style&index=0&id=ffd9a2d6&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=ffd9a2d6&scoped=true\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=ffd9a2d6&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ffd9a2d6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"settings-markdown\",domProps:{\"innerHTML\":_vm._s(_vm.renderMarkdown)}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"app-details\">\n\t\t<div class=\"app-details__actions\">\n\t\t\t<div v-if=\"app.active && canLimitToGroups(app)\" class=\"app-details__actions-groups\">\n\t\t\t\t<input :id=\"prefix('groups_enable', app.id)\"\n\t\t\t\t\tv-model=\"groupCheckedAppsData\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"app.id\"\n\t\t\t\t\tclass=\"groups-enable__checkbox checkbox\"\n\t\t\t\t\t@change=\"setGroupLimit\">\n\t\t\t\t<label :for=\"prefix('groups_enable', app.id)\">{{ t('settings', 'Limit to groups') }}</label>\n\t\t\t\t<input type=\"hidden\"\n\t\t\t\t\tclass=\"group_select\"\n\t\t\t\t\t:title=\"t('settings', 'All')\"\n\t\t\t\t\tvalue=\"\">\n\t\t\t\t<br />\n\t\t\t\t<label for=\"limitToGroups\">\n\t\t\t\t\t<span>{{ t('settings', 'Limit app usage to groups') }}</span>\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-if=\"isLimitedToGroups(app)\"\n\t\t\t\t\tinput-id=\"limitToGroups\"\n\t\t\t\t\t:options=\"groups\"\n\t\t\t\t\t:value=\"appGroups\"\n\t\t\t\t\t:limit=\"5\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t@option:selected=\"addGroupLimitation\"\n\t\t\t\t\t@option:deselected=\"removeGroupLimitation\"\n\t\t\t\t\t@search=\"asyncFindGroup\">\n\t\t\t\t\t<span slot=\"noResult\">{{ t('settings', 'No results') }}</span>\n\t\t\t\t</NcSelect>\n\t\t\t</div>\n\t\t\t<div class=\"app-details__actions-manage\">\n\t\t\t\t<input v-if=\"app.update\"\n\t\t\t\t\tclass=\"update primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Update to {version}', { version: app.update })\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"update(app.id)\">\n\t\t\t\t<input v-if=\"app.canUnInstall\"\n\t\t\t\t\tclass=\"uninstall\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings', 'Remove')\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"remove(app.id)\">\n\t\t\t\t<input v-if=\"app.active\"\n\t\t\t\t\tclass=\"enable\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"t('settings','Disable')\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"disable(app.id)\">\n\t\t\t\t<input v-if=\"!app.active && (app.canInstall || app.isCompatible)\"\n\t\t\t\t\t:title=\"enableButtonTooltip\"\n\t\t\t\t\t:aria-label=\"enableButtonTooltip\"\n\t\t\t\t\tclass=\"enable primary\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"enableButtonText\"\n\t\t\t\t\t:disabled=\"!app.canInstall || installing || isLoading\"\n\t\t\t\t\t@click=\"enable(app.id)\">\n\t\t\t\t<input v-else-if=\"!app.active && !app.canInstall\"\n\t\t\t\t\t:title=\"forceEnableButtonTooltip\"\n\t\t\t\t\t:aria-label=\"forceEnableButtonTooltip\"\n\t\t\t\t\tclass=\"enable force\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t:value=\"forceEnableButtonText\"\n\t\t\t\t\t:disabled=\"installing || isLoading\"\n\t\t\t\t\t@click=\"forceEnable(app.id)\">\n\t\t\t</div>\n\t\t</div>\n\n\t\t<ul class=\"app-details__dependencies\">\n\t\t\t<li v-if=\"app.missingMinOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no minimum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"app.missingMaxOwnCloudVersion\">\n\t\t\t\t{{ t('settings', 'This app has no maximum Nextcloud version assigned. This will be an error in the future.') }}\n\t\t\t</li>\n\t\t\t<li v-if=\"!app.canInstall\">\n\t\t\t\t{{ t('settings', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t<ul class=\"missing-dependencies\">\n\t\t\t\t\t<li v-for=\"(dep, index) in app.missingDependencies\" :key=\"index\">\n\t\t\t\t\t\t{{ dep }}\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<p class=\"app-details__documentation\">\n\t\t\t<a v-if=\"!app.internal\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'View in store') }} ↗</a>\n\n\t\t\t<a v-if=\"app.website\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.website\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Visit website') }} ↗</a>\n\t\t\t<a v-if=\"app.bugs\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.bugs\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Report a bug') }} ↗</a>\n\n\t\t\t<a v-if=\"app.documentation && app.documentation.user\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.user\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'User documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.admin\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.admin\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Admin documentation') }} ↗</a>\n\t\t\t<a v-if=\"app.documentation && app.documentation.developer\"\n\t\t\t\tclass=\"appslink\"\n\t\t\t\t:href=\"app.documentation.developer\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer noopener\">{{ t('settings', 'Developer documentation') }} ↗</a>\n\t\t</p>\n\t\t<Markdown class=\"app-details__description\" :text=\"app.description\" />\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport AppManagement from '../mixins/AppManagement.js'\nimport PrefixMixin from './PrefixMixin.vue'\nimport Markdown from './Markdown.vue'\n\nexport default {\n\tname: 'AppDetails',\n\n\tcomponents: {\n\t\tNcSelect,\n\t\tMarkdown,\n\t},\n\tmixins: [AppManagement, PrefixMixin],\n\n\tprops: {\n\t\tapp: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tappstoreUrl() {\n\t\t\treturn `https://apps.nextcloud.com/apps/${this.app.id}`\n\t\t},\n\t\tlicence() {\n\t\t\tif (this.app.licence) {\n\t\t\t\treturn t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\tauthor() {\n\t\t\tif (typeof this.app.author === 'string') {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\t'@value': this.app.author,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t\tif (this.app.author['@value']) {\n\t\t\t\treturn [this.app.author]\n\t\t\t}\n\t\t\treturn this.app.author\n\t\t},\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name))\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.app-details {\n\tpadding: 20px;\n\n\t&__actions {\n\t\t// app management\n\t\t&-manage {\n\t\t\t// if too many, shrink them and ellipsis\n\t\t\tdisplay: flex;\n\t\t\tinput {\n\t\t\t\tflex: 0 1 auto;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n\t&__dependencies {\n\t\topacity: .7;\n\t}\n\t&__documentation {\n\t\tpadding-top: 20px;\n\t\ta.appslink {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\t&__description {\n\t\tpadding-top: 20px;\n\t}\n}\n\n.force {\n\tcolor: var(--color-error);\n\tborder-color: var(--color-error);\n\tbackground: var(--color-main-background);\n}\n.force:hover,\n.force:active {\n\tcolor: var(--color-main-background);\n\tborder-color: var(--color-error) !important;\n\tbackground: var(--color-error);\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=5be7cbf9&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=5be7cbf9&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppDetails.vue?vue&type=template&id=5be7cbf9&scoped=true\"\nimport script from \"./AppDetails.vue?vue&type=script&lang=js\"\nexport * from \"./AppDetails.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppDetails.vue?vue&type=style&index=0&id=5be7cbf9&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5be7cbf9\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcContent app-name=\"settings\"\n\t\t:class=\"{ 'with-app-sidebar': app}\">\n\t\t<!-- Categories & filters -->\n\t\t<NcAppNavigation :class=\"{ 'icon-loading': loading }\">\n\t\t\t<template #list>\n\t\t\t\t<NcAppNavigationItem id=\"app-category-your-apps\"\n\t\t\t\t\t:to=\"{ name: 'apps' }\"\n\t\t\t\t\t:exact=\"true\"\n\t\t\t\t\ticon=\"icon-category-installed\"\n\t\t\t\t\t:name=\"t('settings', 'Your apps')\" />\n\t\t\t\t<NcAppNavigationItem id=\"app-category-enabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'enabled' } }\"\n\t\t\t\t\ticon=\"icon-category-enabled\"\n\t\t\t\t\t:name=\"$options.APPS_SECTION_ENUM.enabled\" />\n\t\t\t\t<NcAppNavigationItem id=\"app-category-disabled\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'disabled' } }\"\n\t\t\t\t\ticon=\"icon-category-disabled\"\n\t\t\t\t\t:name=\"$options.APPS_SECTION_ENUM.disabled\" />\n\t\t\t\t<NcAppNavigationItem v-if=\"updateCount > 0\"\n\t\t\t\t\tid=\"app-category-updates\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'updates' } }\"\n\t\t\t\t\ticon=\"icon-download\"\n\t\t\t\t\t:name=\"$options.APPS_SECTION_ENUM.updates\">\n\t\t\t\t\t<template #counter>\n\t\t\t\t\t\t<NcCounterBubble>{{ updateCount }}</NcCounterBubble>\n\t\t\t\t\t</template>\n\t\t\t\t</NcAppNavigationItem>\n\t\t\t\t<NcAppNavigationItem v-if=\"isSubscribed\"\n\t\t\t\t\tid=\"app-category-supported\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'supported' } }\"\n\t\t\t\t\t:name=\"$options.APPS_SECTION_ENUM.supported\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<IconStarShooting :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcAppNavigationItem>\n\t\t\t\t<NcAppNavigationItem id=\"app-category-your-bundles\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'app-bundles' } }\"\n\t\t\t\t\ticon=\"icon-category-app-bundles\"\n\t\t\t\t\t:name=\"$options.APPS_SECTION_ENUM['app-bundles']\" />\n\n\t\t\t\t<NcAppNavigationSpacer />\n\n\t\t\t\t<!-- App store categories -->\n\t\t\t\t<template v-if=\"settings.appstoreEnabled\">\n\t\t\t\t\t<NcAppNavigationItem id=\"app-category-featured\"\n\t\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'featured' } }\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t:name=\"$options.APPS_SECTION_ENUM.featured\" />\n\n\t\t\t\t\t<NcAppNavigationItem v-for=\"cat in categories\"\n\t\t\t\t\t\t:key=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:icon=\"'icon-category-' + cat.ident\"\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\t\tparams: { category: cat.ident },\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:name=\"cat.displayName\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcAppNavigationItem id=\"app-developer-docs\"\n\t\t\t\t\t:name=\"t('settings', 'Developer documentation') + ' ↗'\"\n\t\t\t\t\t@click=\"openDeveloperDocumentation\" />\n\t\t\t</template>\n\t\t</NcAppNavigation>\n\n\t\t<!-- Apps list -->\n\t\t<NcAppContent class=\"app-settings-content\" :class=\"{ 'icon-loading': loadingList }\">\n\t\t\t<AppList :category=\"category\" :app=\"app\" :search=\"searchQuery\" />\n\t\t</NcAppContent>\n\n\t\t<!-- Selected app details -->\n\t\t<NcAppSidebar v-if=\"id && app\"\n\t\t\tv-bind=\"appSidebar\"\n\t\t\t:class=\"{'app-sidebar--without-background': !appSidebar.background}\"\n\t\t\t@close=\"hideAppDetails\">\n\t\t\t<template v-if=\"!appSidebar.background\" #header>\n\t\t\t\t<div class=\"app-sidebar-header__figure--default-app-icon icon-settings-dark\" />\n\t\t\t</template>\n\n\t\t\t<template #description>\n\t\t\t\t<!-- Featured/Supported badges -->\n\t\t\t\t<div v-if=\"app.level === 300 || app.level === 200 || hasRating\" class=\"app-level\">\n\t\t\t\t\t<span v-if=\"app.level === 300\"\n\t\t\t\t\t\t:title=\"t('settings', 'This app is supported via your current Nextcloud subscription.')\"\n\t\t\t\t\t\tclass=\"supported icon-checkmark-color\">\n\t\t\t\t\t\t{{ t('settings', 'Supported') }}</span>\n\t\t\t\t\t<span v-if=\"app.level === 200\"\n\t\t\t\t\t\t:title=\"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\"\n\t\t\t\t\t\tclass=\"official icon-checkmark\">\n\t\t\t\t\t\t{{ t('settings', 'Featured') }}</span>\n\t\t\t\t\t<AppScore v-if=\"hasRating\" :score=\"app.appstoreData.ratingOverall\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"app-version\">\n\t\t\t\t\t<p>{{ app.version }}</p>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<!-- Tab content -->\n\n\t\t\t<NcAppSidebarTab id=\"desc\"\n\t\t\t\ticon=\"icon-category-office\"\n\t\t\t\t:name=\"t('settings', 'Details')\"\n\t\t\t\t:order=\"0\">\n\t\t\t\t<AppDetails :app=\"app\" />\n\t\t\t</NcAppSidebarTab>\n\t\t\t<NcAppSidebarTab v-if=\"app.appstoreData && app.releases[0].translations.en.changelog\"\n\t\t\t\tid=\"desca\"\n\t\t\t\ticon=\"icon-category-organization\"\n\t\t\t\t:name=\"t('settings', 'Changelog')\"\n\t\t\t\t:order=\"1\">\n\t\t\t\t<div v-for=\"release in app.releases\" :key=\"release.version\" class=\"app-sidebar-tabs__release\">\n\t\t\t\t\t<h2>{{ release.version }}</h2>\n\t\t\t\t\t<Markdown v-if=\"changelog(release)\" :text=\"changelog(release)\" />\n\t\t\t\t</div>\n\t\t\t</NcAppSidebarTab>\n\t\t</NcAppSidebar>\n\t</NcContent>\n</template>\n\n<script>\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport Vue from 'vue'\nimport VueLocalStorage from 'vue-localstorage'\n\nimport NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent.js'\nimport NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation.js'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\nimport NcAppNavigationSpacer from '@nextcloud/vue/dist/Components/NcAppNavigationSpacer.js'\nimport NcAppSidebar from '@nextcloud/vue/dist/Components/NcAppSidebar.js'\nimport NcAppSidebarTab from '@nextcloud/vue/dist/Components/NcAppSidebarTab.js'\nimport NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble.js'\nimport NcContent from '@nextcloud/vue/dist/Components/NcContent.js'\nimport IconStarShooting from 'vue-material-design-icons/StarShooting.vue'\n\nimport AppList from '../components/AppList.vue'\nimport AppDetails from '../components/AppDetails.vue'\nimport AppManagement from '../mixins/AppManagement.js'\nimport AppScore from '../components/AppList/AppScore.vue'\nimport Markdown from '../components/Markdown.vue'\n\nimport { APPS_SECTION_ENUM } from './../constants/AppsConstants.js'\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Apps',\n\tAPPS_SECTION_ENUM,\n\tcomponents: {\n\t\tNcAppContent,\n\t\tAppDetails,\n\t\tAppList,\n\t\tIconStarShooting,\n\t\tNcAppNavigation,\n\t\tNcAppNavigationItem,\n\t\tNcAppNavigationSpacer,\n\t\tNcCounterBubble,\n\t\tAppScore,\n\t\tNcAppSidebar,\n\t\tNcAppSidebarTab,\n\t\tNcContent,\n\t\tMarkdown,\n\t},\n\n\tmixins: [AppManagement],\n\n\tprops: {\n\t\tcategory: {\n\t\t\ttype: String,\n\t\t\tdefault: 'installed',\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t\tscreenshotLoaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tloading() {\n\t\t\treturn this.$store.getters.loading('categories')\n\t\t},\n\t\tloadingList() {\n\t\t\treturn this.$store.getters.loading('list')\n\t\t},\n\t\tapp() {\n\t\t\treturn this.apps.find(app => app.id === this.id)\n\t\t},\n\t\tcategories() {\n\t\t\treturn this.$store.getters.getCategories\n\t\t},\n\t\tapps() {\n\t\t\treturn this.$store.getters.getAllApps\n\t\t},\n\t\tupdateCount() {\n\t\t\treturn this.$store.getters.getUpdateCount\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\thasRating() {\n\t\t\treturn this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5\n\t\t},\n\n\t\t// sidebar app binding\n\t\tappSidebar() {\n\t\t\tconst authorName = (xmlNode) => {\n\t\t\t\tif (xmlNode['@value']) {\n\t\t\t\t\t// Complex node (with email or homepage attribute)\n\t\t\t\t\treturn xmlNode['@value']\n\t\t\t\t}\n\n\t\t\t\t// Simple text node\n\t\t\t\treturn xmlNode\n\t\t\t}\n\n\t\t\tconst author = Array.isArray(this.app.author)\n\t\t\t\t? this.app.author.map(authorName).join(', ')\n\t\t\t\t: authorName(this.app.author)\n\t\t\tconst license = t('settings', '{license}-licensed', { license: ('' + this.app.licence).toUpperCase() })\n\n\t\t\tconst subname = t('settings', 'by {author}\\n{license}', { author, license })\n\n\t\t\treturn {\n\t\t\t\tbackground: this.app.screenshot && this.screenshotLoaded\n\t\t\t\t\t? this.app.screenshot\n\t\t\t\t\t: this.app.preview,\n\t\t\t\tcompact: !(this.app.screenshot && this.screenshotLoaded),\n\t\t\t\tname: this.app.name,\n\t\t\t\tsubname,\n\t\t\t}\n\t\t},\n\t\tchangelog() {\n\t\t\treturn (release) => release.translations.en.changelog\n\t\t},\n\t\t/**\n\t\t * Check if the current instance has a support subscription from the Nextcloud GmbH\n\t\t */\n\t\tisSubscribed() {\n\t\t\t// For customers of the Nextcloud GmbH the app level will be set to `300` for apps that are supported in their subscription\n\t\t\treturn this.apps.some(app => app.level === 300)\n\t\t},\n\t},\n\n\twatch: {\n\t\tcategory() {\n\t\t\tthis.searchQuery = ''\n\t\t},\n\n\t\tapp() {\n\t\t\tthis.screenshotLoaded = false\n\t\t\tif (this.app?.releases && this.app?.screenshot) {\n\t\t\t\tconst image = new Image()\n\t\t\t\timage.onload = (e) => {\n\t\t\t\t\tthis.screenshotLoaded = true\n\t\t\t\t}\n\t\t\t\timage.src = this.app.screenshot\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getCategories', { shouldRefetchCategories: true })\n\t\tthis.$store.dispatch('getAllApps')\n\t\tthis.$store.dispatch('getGroups', { offset: 0, limit: 5 })\n\t\tthis.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount)\n\t},\n\n\tmounted() {\n\t\tsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.setSearch)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tsetSearch({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.searchQuery = ''\n\t\t},\n\n\t\thideAppDetails() {\n\t\t\tthis.$router.push({\n\t\t\t\tname: 'apps-category',\n\t\t\t\tparams: { category: this.category },\n\t\t\t})\n\t\t},\n\t\topenDeveloperDocumentation() {\n\t\t\twindow.open(this.settings.developerDocumentation)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.app-sidebar::v-deep {\n\t&:not(.app-sidebar--without-background) {\n\t\t// with full screenshot, let's fill the figure\n\t\t:not(.app-sidebar-header--compact) .app-sidebar-header__figure {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t// revert sidebar app icon so it is black\n\t\t.app-sidebar-header--compact .app-sidebar-header__figure {\n\t\t\tbackground-size: 32px;\n\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n\n\t.app-sidebar-header__description {\n\t\t.app-version {\n\t\t\tpadding-left: 10px;\n\t\t}\n\t}\n\n\t// default icon slot styling\n\t&.app-sidebar--without-background {\n\t\t.app-sidebar-header__figure {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\t&--default-app-icon {\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tbackground-size: 32px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: migrate to components\n\t.app-sidebar-header__desc {\n\t\t// allow multi line subtitle for the license\n\t\t.app-sidebar-header__subtitle {\n\t\t\toverflow: visible !important;\n\t\t\theight: auto;\n\t\t\twhite-space: normal !important;\n\t\t\tline-height: 16px;\n\t\t}\n\t}\n\n\t.app-sidebar-header__action {\n\t\t// align with tab content\n\t\tmargin: 0 20px;\n\t\tinput {\n\t\t\tmargin: 3px;\n\t\t}\n\t}\n}\n\n// Align the appNavigation toggle with the apps header toolbar\n.app-navigation::v-deep button.app-navigation-toggle {\n\ttop: 8px;\n\tright: -8px;\n}\n\n.app-sidebar-tabs__release {\n\th2 {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t// Overwrite changelog heading styles\n\t::v-deep {\n\t\th3 {\n\t\t\tfont-size: 20px;\n\t\t}\n\t\th4 {\n\t\t\tfont-size: 17px;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=style&index=0&id=2f31fb7f&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=style&index=0&id=2f31fb7f&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=2f31fb7f&scoped=true\"\nimport script from \"./Apps.vue?vue&type=script&lang=js\"\nexport * from \"./Apps.vue?vue&type=script&lang=js\"\nimport style0 from \"./Apps.vue?vue&type=style&index=0&id=2f31fb7f&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2f31fb7f\",\n null\n \n)\n\nexport default component.exports","/**\n * vue-local-storage v0.6.0\n * (c) 2017 Alexander Avakov\n * @license MIT\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.VueLocalStorage = factory());\n}(this, (function () { 'use strict';\n\nvar VueLocalStorage = function VueLocalStorage () {\n this._properties = {};\n this._namespace = '';\n this._isSupported = true;\n};\n\nvar prototypeAccessors = { namespace: {} };\n\n/**\n * Namespace getter.\n *\n * @returns {string}\n */\nprototypeAccessors.namespace.get = function () {\n return this._namespace\n};\n\n/**\n * Namespace setter.\n *\n * @param {string} value\n */\nprototypeAccessors.namespace.set = function (value) {\n this._namespace = value ? (value + \".\") : '';\n};\n\n/**\n * Concatenates localStorage key with namespace prefix.\n *\n * @param {string} lsKey\n * @returns {string}\n * @private\n */\nVueLocalStorage.prototype._getLsKey = function _getLsKey (lsKey) {\n return (\"\" + (this._namespace) + lsKey)\n};\n\n/**\n * Set a value to localStorage giving respect to the namespace.\n *\n * @param {string} lsKey\n * @param {*} rawValue\n * @param {*} type\n * @private\n */\nVueLocalStorage.prototype._lsSet = function _lsSet (lsKey, rawValue, type) {\n var key = this._getLsKey(lsKey);\n var value = type && [Array, Object].includes(type)\n ? JSON.stringify(rawValue)\n : rawValue;\n\n window.localStorage.setItem(key, value);\n};\n\n/**\n * Get value from localStorage giving respect to the namespace.\n *\n * @param {string} lsKey\n * @returns {any}\n * @private\n */\nVueLocalStorage.prototype._lsGet = function _lsGet (lsKey) {\n var key = this._getLsKey(lsKey);\n\n return window.localStorage[key]\n};\n\n/**\n * Get value from localStorage\n *\n * @param {String} lsKey\n * @param {*} defaultValue\n * @param {*} defaultType\n * @returns {*}\n */\nVueLocalStorage.prototype.get = function get (lsKey, defaultValue, defaultType) {\n var this$1 = this;\n if ( defaultValue === void 0 ) defaultValue = null;\n if ( defaultType === void 0 ) defaultType = String;\n\n if (!this._isSupported) {\n return null\n }\n\n if (this._lsGet(lsKey)) {\n var type = defaultType;\n\n for (var key in this$1._properties) {\n if (key === lsKey) {\n type = this$1._properties[key].type;\n break\n }\n }\n\n return this._process(type, this._lsGet(lsKey))\n }\n\n return defaultValue !== null ? defaultValue : null\n};\n\n/**\n * Set localStorage value\n *\n * @param {String} lsKey\n * @param {*} value\n * @returns {*}\n */\nVueLocalStorage.prototype.set = function set (lsKey, value) {\n var this$1 = this;\n\n if (!this._isSupported) {\n return null\n }\n\n for (var key in this$1._properties) {\n var type = this$1._properties[key].type;\n\n if ((key === lsKey)) {\n this$1._lsSet(lsKey, value, type);\n\n return value\n }\n }\n\n this._lsSet(lsKey, value);\n\n return value\n};\n\n/**\n * Remove value from localStorage\n *\n * @param {String} lsKey\n */\nVueLocalStorage.prototype.remove = function remove (lsKey) {\n if (!this._isSupported) {\n return null\n }\n\n return window.localStorage.removeItem(lsKey)\n};\n\n/**\n * Add new property to localStorage\n *\n * @param {String} key\n * @param {function} type\n * @param {*} defaultValue\n */\nVueLocalStorage.prototype.addProperty = function addProperty (key, type, defaultValue) {\n if ( defaultValue === void 0 ) defaultValue = undefined;\n\n type = type || String;\n\n this._properties[key] = { type: type };\n\n if (!this._lsGet(key) && defaultValue !== null) {\n this._lsSet(key, defaultValue, type);\n }\n};\n\n/**\n * Process the value before return it from localStorage\n *\n * @param {String} type\n * @param {*} value\n * @returns {*}\n * @private\n */\nVueLocalStorage.prototype._process = function _process (type, value) {\n switch (type) {\n case Boolean:\n return value === 'true'\n case Number:\n return parseFloat(value)\n case Array:\n try {\n var array = JSON.parse(value);\n\n return Array.isArray(array) ? array : []\n } catch (e) {\n return []\n }\n case Object:\n try {\n return JSON.parse(value)\n } catch (e) {\n return {}\n }\n default:\n return value\n }\n};\n\nObject.defineProperties( VueLocalStorage.prototype, prototypeAccessors );\n\nvar vueLocalStorage = new VueLocalStorage();\n\nvar index = {\n /**\n * Install vue-local-storage plugin\n *\n * @param {Vue} Vue\n * @param {Object} options\n */\n install: function (Vue, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof process !== 'undefined' &&\n (\n process.server ||\n process.SERVER_BUILD ||\n (process.env && process.env.VUE_ENV === 'server')\n )\n ) {\n return\n }\n\n var isSupported = true;\n\n try {\n var test = '__vue-localstorage-test__';\n\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n } catch (e) {\n isSupported = false;\n vueLocalStorage._isSupported = false;\n\n console.error('Local storage is not supported');\n }\n\n var name = options.name || 'localStorage';\n var bind = options.bind;\n\n if (options.namespace) {\n vueLocalStorage.namespace = options.namespace;\n }\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n var this$1 = this;\n\n if (!isSupported) {\n return\n }\n\n if (this.$options[name]) {\n Object.keys(this.$options[name]).forEach(function (key) {\n var config = this$1.$options[name][key];\n var ref = [config.type, config.default];\n var type = ref[0];\n var defaultValue = ref[1];\n\n vueLocalStorage.addProperty(key, type, defaultValue);\n\n var existingProp = Object.getOwnPropertyDescriptor(vueLocalStorage, key);\n\n if (!existingProp) {\n var prop = {\n get: function () { return Vue.localStorage.get(key, defaultValue); },\n set: function (val) { return Vue.localStorage.set(key, val); },\n configurable: true\n };\n\n Object.defineProperty(vueLocalStorage, key, prop);\n Vue.util.defineReactive(vueLocalStorage, key, defaultValue);\n } else if (!Vue.config.silent) {\n console.log((key + \": is already defined and will be reused\"));\n }\n\n if ((bind || config.bind) && config.bind !== false) {\n this$1.$options.computed = this$1.$options.computed || {};\n\n if (!this$1.$options.computed[key]) {\n this$1.$options.computed[key] = {\n get: function () { return Vue.localStorage[key]; },\n set: function (val) { Vue.localStorage[key] = val; }\n };\n }\n }\n });\n }\n }\n });\n\n Vue[name] = vueLocalStorage;\n Vue.prototype[(\"$\" + name)] = vueLocalStorage;\n }\n};\n\nreturn index;\n\n})));\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","computed","appScore","Math","round","score","scoreImage","imageName","imagePath","t","axios","get","generateOcsUrl","then","_ref","data","ocs","meta","statuscode","emit","apps","window","dispatchEvent","Event","appGroups","app","groups","map","group","installing","$store","getters","loading","isLoading","enableButtonText","needsDownload","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","groupCheckedAppsData","mounted","length","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","appId","canLimitToGroups","types","includes","addGroupLimitation","groupArray","pop","concat","removeGroupLimitation","currentGroups","index","indexOf","splice","forceEnable","response","rebuildNavigation","catch","error","showError","enable","disable","remove","install","update","filterId","filterUrl","random","toString","substring","components","AppScore","NcButton","mixins","AppManagement","SvgFilterMixin","category","listView","Boolean","useBundleView","headers","isSelected","scrolled","screenshotLoaded","hasRating","appstoreData","ratingNumOverall","dataItemTag","watch","$route","params","releases","screenshot","image","Image","onload","e","src","watchers","prefix","content","getDataItemHeaders","columnName","join","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","tag","class","selected","preview","appName","summary","version","level","stopPropagation","canUnInstall","active","canInstall","isCompatible","AppItem","PrefixMixin","counter","filter","hasPendingUpdate","showUpdateAll","useListView","getAllApps","toLowerCase","sort","a","b","sortStringA","sortStringB","OC","Util","naturalSortCompare","installed","bundles","appstore","undefined","getServerData","bundle","bundleApps","bundleIds","searchApps","find","_app","useAppStoreView","allBundlesEnabled","bundleToggleText","toggleBundle","disableBundle","enableBundle","console","Notification","show","updateAll","pLimit","store","n","key","_l","_defaults","async","breaks","extensions","gfm","hooks","pedantic","renderer","silent","tokenizer","walkTokens","changeDefaults","newDefaults","escapeTest","escapeReplace","RegExp","source","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","html","encode","test","replace","unescapeTest","caret","edit","regex","opt","obj","val","getRegex","cleanUrl","href","encodeURI","noopTest","exec","splitCells","tableRow","count","cells","match","str","escaped","curr","split","i","trim","shift","rtrim","c","invert","l","suffLen","currChar","charAt","slice","outputLink","cap","link","raw","lexer","text","state","inLink","token","tokens","inlineTokens","_Tokenizer","rules","constructor","space","block","newline","code","codeBlockStyle","fences","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","indentCodeCompensation","lang","inline","_escapes","heading","trimmed","depth","hr","blockquote","top","blockTokens","list","bull","isordered","ordered","start","loose","items","itemRegex","itemContents","endsWithBlankLine","endEarly","line","repeat","nextLine","indent","trimStart","blankLine","nextBulletRegex","min","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","ischecked","istask","task","checked","trimEnd","spacers","hasMultipleLineBreaks","some","pre","def","table","item","header","align","rows","j","k","row","lheading","paragraph","escape","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","lastCharLength","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","_punctuation","blockSkip","anyPunctuation","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","_Lexer","inlineQueue","Object","create","lex","lexInline","next","lastToken","cutSrc","lastParagraphClipped","_","leading","tabs","extTokenizer","call","startBlock","startIndex","Infinity","tempSrc","tempStart","forEach","getStartIndex","errMsg","charCodeAt","Error","keepPrevChar","keys","lastIndexOf","startInline","_Renderer","infostring","quote","body","listitem","checkbox","tablerow","tablecell","flags","cleanHref","out","_TextRenderer","_Parser","textRenderer","parse","parseInline","renderers","genericToken","ret","parser","headingToken","fromCharCode","parseInt","codeToken","tableToken","cell","blockquoteToken","listToken","itemBody","unshift","htmlToken","paragraphToken","textToken","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","static","Set","preprocess","markdown","postprocess","markedInstance","defaults","setOptions","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Hooks","args","use","callback","values","childTokens","pack","opts","ext","prevRenderer","apply","extLevel","prop","rendererFunc","rendererKey","tokenizerFunc","tokenizerKey","prevTokenizer","hooksFunc","hooksKey","prevHook","passThroughHooks","has","arg","Promise","resolve","packWalktokens","origOpt","warn","throwError","prototype","all","message","msg","reject","marked","getDefaults","renderMarkdown","prot","decodeURIComponent","unescape","dompurify","highlight","tables","sanitize","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","domProps","NcSelect","Markdown","required","appstoreUrl","licence","license","toUpperCase","author","getGroups","localeCompare","directives","rawName","value","expression","Array","isArray","_i","$$a","$$el","target","$$c","$$v","$$i","slot","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","internal","website","bugs","documentation","user","admin","developer","description","Vue","VueLocalStorage","APPS_SECTION_ENUM","NcAppContent","AppDetails","AppList","IconStarShooting","NcAppNavigation","NcAppNavigationItem","NcAppNavigationSpacer","NcCounterBubble","NcAppSidebar","NcAppSidebarTab","NcContent","searchQuery","loadingList","categories","getCategories","updateCount","getUpdateCount","settings","appSidebar","authorName","xmlNode","subname","background","compact","changelog","release","translations","en","isSubscribed","beforeMount","shouldRefetchCategories","commit","subscribe","setSearch","resetSearch","beforeDestroy","unsubscribe","hideAppDetails","$router","openDeveloperDocumentation","open","developerDocumentation","scopedSlots","_u","fn","$options","enabled","disabled","updates","proxy","supported","appstoreEnabled","featured","cat","ident","displayName","ratingOverall","exports","_properties","_namespace","_isSupported","prototypeAccessors","namespace","set","_getLsKey","lsKey","_lsSet","rawValue","JSON","stringify","localStorage","setItem","_lsGet","defaultValue","defaultType","_process","this$1","removeItem","addProperty","parseFloat","array","defineProperties","vueLocalStorage","process","server","SERVER_BUILD","env","VUE_ENV","isSupported","bind","mixin","beforeCreate","config","ref","getOwnPropertyDescriptor","log","configurable","defineProperty","util","defineReactive","factory"],"sourceRoot":""}