Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>tags/v26.0.0beta1
@@ -136,7 +136,6 @@ | |||
this._setupEvents(); | |||
// trigger URL change event handlers | |||
console.debug('F2V init', { ...OC.Util.History.parseUrlQuery(), view: this.navigation?.active?.id }) | |||
this._onPopState({ ...OC.Util.History.parseUrlQuery(), view: this.navigation?.active?.id }); | |||
this._debouncedPersistShowHiddenFilesState = _.debounce(this._persistShowHiddenFilesState, 1200); | |||
@@ -310,7 +309,6 @@ | |||
* Event handler for when the URL changed | |||
*/ | |||
_onPopState: function(params) { | |||
console.debug('F2V onPopState', params); | |||
params = _.extend({ | |||
dir: '/', | |||
view: 'files' | |||
@@ -348,7 +346,6 @@ | |||
* Change the URL to point to the given dir and view | |||
*/ | |||
_changeUrl: function(view, dir, fileId) { | |||
console.debug('F2V changeUrl', { arguments }); | |||
var params = { dir: dir }; | |||
if (view !== 'files') { | |||
params.view = view; | |||
@@ -359,16 +356,13 @@ | |||
if (currentParams.dir === params.dir && currentParams.view === params.view) { | |||
if (currentParams.fileid !== params.fileid) { | |||
// if only fileid changed or was added, replace instead of push | |||
console.debug('F2V 1', currentParams.fileid, params.fileid, params); | |||
OC.Util.History.replaceState(this._makeUrlParams(params)); | |||
return | |||
} | |||
} else { | |||
console.debug('F2V 2', params); | |||
OC.Util.History.pushState(this._makeUrlParams(params)); | |||
return | |||
} | |||
console.debug('F2V 3', params, currentParams); | |||
}, | |||
/** |
@@ -756,7 +756,6 @@ | |||
* Event handler when leaving previously hidden state | |||
*/ | |||
_onShow: function(e) { | |||
console.debug('F2V onShow', [e.dir, e.itemId], e); | |||
OCA.Files.App && OCA.Files.App.updateCurrentFileList(this); | |||
if (e.itemId === this.id) { | |||
this._setCurrentDir('/', false); | |||
@@ -771,7 +770,6 @@ | |||
* Event handler for when the URL changed | |||
*/ | |||
_onUrlChanged: function(e) { | |||
console.debug('F2V onUrlChanged', [e.dir], e); | |||
if (e && _.isString(e.dir)) { | |||
var currentDir = this.getCurrentDirectory(); | |||
// this._currentDirectory is NULL when fileList is first initialised |
@@ -285,13 +285,13 @@ class ApiController extends Controller { | |||
* | |||
* @NoAdminRequired | |||
* | |||
* @param bool $key | |||
* @param string $key | |||
* @param string|bool $value | |||
* @return JSONResponse | |||
*/ | |||
public function setConfig(string $key, string|bool $value): JSONResponse { | |||
try { | |||
$this->userConfig->setConfig($key, $value); | |||
$this->userConfig->setConfig($key, (string)$value); | |||
} catch (\InvalidArgumentException $e) { | |||
return new JSONResponse(['message' => $e->getMessage()], Http::STATUS_BAD_REQUEST); | |||
} |
@@ -41,8 +41,9 @@ class UserConfig { | |||
], | |||
]; | |||
private IConfig $config; | |||
private IUser|null $user; | |||
protected IConfig $config; | |||
/** @var \OCP\IUser|null */ | |||
protected mixed $user = null; | |||
public function __construct(IConfig $config, IUserSession $userSession) { | |||
$this->config = $config; | |||
@@ -98,7 +99,7 @@ class UserConfig { | |||
* @throws \InvalidArgumentException | |||
*/ | |||
public function setConfig($key, $value) { | |||
if (!$this->user) { | |||
if ($this->user === null) { | |||
throw new \Exception('No user logged in'); | |||
} | |||
@@ -123,7 +124,7 @@ class UserConfig { | |||
* @return array | |||
*/ | |||
public function getConfigs(): array { | |||
if (!$this->user) { | |||
if ($this->user === null) { | |||
throw new \Exception('No user logged in'); | |||
} | |||
@@ -0,0 +1,118 @@ | |||
/* eslint-disable import/first */ | |||
import FolderSvg from '@mdi/svg/svg/folder.svg' | |||
import ShareSvg from '@mdi/svg/svg/share-variant.svg' | |||
import NavigationService from '../services/Navigation' | |||
import NavigationView from './Navigation.vue' | |||
import router from '../router/router.js' | |||
const Navigation = new NavigationService() | |||
console.log(FolderSvg) | |||
describe('Navigation renders', () => { | |||
it('renders', () => { | |||
cy.mount(NavigationView, { | |||
propsData: { | |||
Navigation, | |||
}, | |||
}) | |||
cy.get('[data-cy-files-navigation]').should('be.visible') | |||
cy.get('[data-cy-files-navigation-settings-button]').should('be.visible') | |||
}) | |||
}) | |||
describe('Navigation API', () => { | |||
it('Check API entries rendering', () => { | |||
Navigation.register({ | |||
id: 'files', | |||
name: 'Files', | |||
getFiles: () => [], | |||
icon: FolderSvg, | |||
order: 1, | |||
}) | |||
cy.mount(NavigationView, { | |||
propsData: { | |||
Navigation, | |||
}, | |||
router, | |||
}) | |||
cy.get('[data-cy-files-navigation]').should('be.visible') | |||
cy.get('[data-cy-files-navigation-item]').should('have.length', 1) | |||
cy.get('[data-cy-files-navigation-item="files"]').should('be.visible') | |||
cy.get('[data-cy-files-navigation-item="files"]').should('contain.text', 'Files') | |||
}) | |||
it('Adds a new entry and render', () => { | |||
Navigation.register({ | |||
id: 'sharing', | |||
name: 'Sharing', | |||
getFiles: () => [], | |||
icon: ShareSvg, | |||
order: 2, | |||
}) | |||
cy.mount(NavigationView, { | |||
propsData: { | |||
Navigation, | |||
}, | |||
router, | |||
}) | |||
cy.get('[data-cy-files-navigation]').should('be.visible') | |||
cy.get('[data-cy-files-navigation-item]').should('have.length', 2) | |||
cy.get('[data-cy-files-navigation-item="sharing"]').should('be.visible') | |||
cy.get('[data-cy-files-navigation-item="sharing"]').should('contain.text', 'Sharing') | |||
}) | |||
it('Adds a new children, render and open menu', () => { | |||
Navigation.register({ | |||
id: 'sharingin', | |||
name: 'Shared with me', | |||
getFiles: () => [], | |||
parent: 'sharing', | |||
icon: ShareSvg, | |||
order: 1, | |||
}) | |||
cy.mount(NavigationView, { | |||
propsData: { | |||
Navigation, | |||
}, | |||
router, | |||
}) | |||
cy.get('[data-cy-files-navigation]').should('be.visible') | |||
cy.get('[data-cy-files-navigation-item]').should('have.length', 3) | |||
// Intercept collapse preference request | |||
cy.intercept('POST', '*/apps/files/api/v1/toggleShowFolder/*', { | |||
statusCode: 200, | |||
}).as('toggleShowFolder') | |||
// Toggle the sharing entry children | |||
cy.get('[data-cy-files-navigation-item="sharing"] button.icon-collapse').should('exist') | |||
cy.get('[data-cy-files-navigation-item="sharing"] button.icon-collapse').click({ force: true }) | |||
cy.wait('@toggleShowFolder') | |||
// Validate children | |||
cy.get('[data-cy-files-navigation-item="sharingin"]').should('be.visible') | |||
cy.get('[data-cy-files-navigation-item="sharingin"]').should('contain.text', 'Shared with me') | |||
}) | |||
it('Throws when adding a duplicate entry', () => { | |||
expect(() => { | |||
Navigation.register({ | |||
id: 'files', | |||
name: 'Files', | |||
getFiles: () => [], | |||
icon: FolderSvg, | |||
order: 1, | |||
}) | |||
}).to.throw('Navigation id files is already registered') | |||
}) | |||
}) |
@@ -20,22 +20,24 @@ | |||
- | |||
--> | |||
<template> | |||
<NcAppNavigation> | |||
<NcAppNavigation data-cy-files-navigation> | |||
<template #list> | |||
<NcAppNavigationItem v-for="view in parentViews" | |||
:key="view.id" | |||
:allow-collapse="true" | |||
:to="{name: 'filelist', params: { view: view.id }}" | |||
:data-cy-files-navigation-item="view.id" | |||
:icon="view.iconClass" | |||
:open="view.expanded" | |||
:pinned="view.sticky" | |||
:title="view.name" | |||
:to="{name: 'filelist', params: { view: view.id }}" | |||
@update:open="onToggleExpand(view)"> | |||
<NcAppNavigationItem v-for="child in childViews[view.id]" | |||
:key="child.id" | |||
:to="{name: 'filelist', params: { view: child.id }}" | |||
:data-cy-files-navigation-item="child.id" | |||
:icon="child.iconClass" | |||
:title="child.name" /> | |||
:title="child.name" | |||
:to="{name: 'filelist', params: { view: child.id }}" /> | |||
</NcAppNavigationItem> | |||
</template> | |||
@@ -44,6 +46,7 @@ | |||
<ul class="app-navigation-entry__settings"> | |||
<NcAppNavigationItem :aria-label="t('files', 'Open the files app settings')" | |||
:title="t('files', 'Files settings')" | |||
data-cy-files-navigation-settings-button | |||
@click.prevent.stop="openSettings"> | |||
<Cog slot="icon" :size="20" /> | |||
</NcAppNavigationItem> | |||
@@ -52,6 +55,7 @@ | |||
<!-- Settings modal--> | |||
<SettingsModal :open="settingsOpened" | |||
data-cy-files-navigation-settings | |||
@close="onSettingsClose" /> | |||
</NcAppNavigation> | |||
</template> | |||
@@ -60,13 +64,15 @@ | |||
import { emit, subscribe } from '@nextcloud/event-bus' | |||
import { generateUrl } from '@nextcloud/router' | |||
import axios from '@nextcloud/axios' | |||
import Cog from 'vue-material-design-icons/Cog.vue' | |||
import NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation.js' | |||
import NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js' | |||
import Cog from 'vue-material-design-icons/Cog.vue' | |||
import SettingsModal from './Settings.vue' | |||
import Navigation from '../services/Navigation.ts' | |||
import logger from '../logger.js' | |||
import Navigation from '../services/Navigation.ts' | |||
import SettingsModal from './Settings.vue' | |||
import { translate } from '@nextcloud/l10n' | |||
export default { | |||
name: 'Navigation', | |||
@@ -152,7 +158,7 @@ export default { | |||
*/ | |||
showView(view, oldView) { | |||
// Closing any opened sidebar | |||
OCA.Files?.Sidebar?.close?.() | |||
window?.OCA?.Files?.Sidebar?.close?.() | |||
if (view.legacy) { | |||
const newAppContent = document.querySelector('#app-content #app-content-' + this.currentView.id + '.viewcontainer') | |||
@@ -161,9 +167,6 @@ export default { | |||
}) | |||
newAppContent.classList.remove('hidden') | |||
// Legacy event | |||
console.debug('F2V', $(newAppContent)) | |||
// Trigger init if not already done | |||
window.jQuery(newAppContent).trigger(new window.jQuery.Event('show')) | |||
@@ -171,7 +174,6 @@ export default { | |||
this.$nextTick(() => { | |||
const { dir = '/' } = OC.Util.History.parseUrlQuery() | |||
const params = { itemId: view.id, dir } | |||
console.debug('F2V showView events', params, newAppContent); | |||
window.jQuery(newAppContent).trigger(new window.jQuery.Event('show', params)) | |||
window.jQuery(newAppContent).trigger(new window.jQuery.Event('urlChanged', params)) | |||
}) | |||
@@ -212,20 +214,20 @@ export default { | |||
}, | |||
/** | |||
* Open the settings modal and update the settings API entries | |||
* Open the settings modal | |||
*/ | |||
openSettings() { | |||
this.settingsOpened = true | |||
OCA.Files.Settings.settings.forEach(setting => setting.open()) | |||
}, | |||
/** | |||
* Close the settings modal and update the settings API entries | |||
* Close the settings modal | |||
*/ | |||
onSettingsClose() { | |||
this.settingsOpened = false | |||
OCA.Files.Settings.settings.forEach(setting => setting.close()) | |||
}, | |||
t: translate, | |||
}, | |||
} | |||
</script> |
@@ -67,8 +67,12 @@ import { getCurrentUser } from '@nextcloud/auth' | |||
import { loadState } from '@nextcloud/initial-state' | |||
import { emit } from '@nextcloud/event-bus' | |||
import axios from '@nextcloud/axios' | |||
import { translate } from '@nextcloud/l10n' | |||
const userConfig = loadState('files', 'config') | |||
const userConfig = loadState('files', 'config', { | |||
show_hidden: false, | |||
crop_image_previews: true, | |||
}) | |||
export default { | |||
name: 'Settings', | |||
@@ -93,7 +97,7 @@ export default { | |||
...userConfig, | |||
// Settings API | |||
settings: OCA.Files.Settings.settings, | |||
settings: window.OCA?.Files?.Settings?.settings || [], | |||
// Webdav infos | |||
webdavUrl: generateRemoteUrl('dav/files/' + encodeURIComponent(getCurrentUser()?.uid)), | |||
@@ -101,6 +105,16 @@ export default { | |||
} | |||
}, | |||
beforeMount() { | |||
// Update the settings API entries state | |||
this.settings.forEach(setting => setting.open()) | |||
}, | |||
beforeDestroy() { | |||
// Update the settings API entries state | |||
this.settings.forEach(setting => setting.close()) | |||
}, | |||
methods: { | |||
onClose() { | |||
this.$emit('close') | |||
@@ -112,6 +126,8 @@ export default { | |||
value, | |||
}) | |||
}, | |||
t: translate, | |||
}, | |||
} | |||
</script> |
@@ -93,10 +93,8 @@ $expectedFiles = [ | |||
'tsconfig.json', | |||
'vendor-bin', | |||
'version.php', | |||
'webpack.common.js', | |||
'webpack.dev.js', | |||
'webpack.config.js', | |||
'webpack.modules.js', | |||
'webpack.prod.js', | |||
]; | |||
$actualFiles = []; | |||
@@ -1,5 +1,12 @@ | |||
/* eslint-disable node/no-unpublished-import */ | |||
import { applyChangesToNextcloud, configureNextcloud, preppingNextcloud, startNextcloud, stopNextcloud, waitOnNextcloud } from './cypress/dockerNode' | |||
import { | |||
applyChangesToNextcloud, | |||
configureNextcloud, | |||
startNextcloud, | |||
stopNextcloud, | |||
waitOnNextcloud, | |||
} from './cypress/dockerNode' | |||
import { defineConfig } from 'cypress' | |||
import browserify from '@cypress/browserify-preprocessor' | |||
@@ -29,6 +36,7 @@ export default defineConfig({ | |||
failSilently: false, | |||
type: 'actual', | |||
}, | |||
screenshotsFolder: 'cypress/snapshots/actual', | |||
trashAssetsBeforeRuns: true, | |||
@@ -82,4 +90,24 @@ export default defineConfig({ | |||
}) | |||
}, | |||
}, | |||
component: { | |||
devServer: { | |||
framework: 'vue', | |||
bundler: 'webpack', | |||
webpackConfig: async () => { | |||
process.env.npm_package_name = 'NcCypress' | |||
process.env.npm_package_version = '1.0.0' | |||
process.env.NODE_ENV = 'development' | |||
const config = require('@nextcloud/webpack-vue-config') | |||
config.module.rules.push({ | |||
test: /\.svg$/, | |||
type: 'asset/source', | |||
}) | |||
return config | |||
}, | |||
}, | |||
}, | |||
}) |
@@ -0,0 +1,12 @@ | |||
<!DOCTYPE html> | |||
<html> | |||
<head> | |||
<meta charset="utf-8"> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | |||
<meta name="viewport" content="width=device-width,initial-scale=1.0"> | |||
<title>Components App</title> | |||
</head> | |||
<body> | |||
<div data-cy-root></div> | |||
</body> | |||
</html> |
@@ -0,0 +1,35 @@ | |||
/** | |||
* @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com> | |||
* | |||
* @author John Molakvoæ <skjnldsv@protonmail.com> | |||
* | |||
* @license AGPL-3.0-or-later | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
import { mount } from 'cypress/vue2' | |||
type MountParams = Parameters<typeof mount>; | |||
type OptionsParam = MountParams[1]; | |||
declare global { | |||
namespace Cypress { | |||
interface Chainable<Subject = any> { | |||
mount: typeof mount; | |||
} | |||
} | |||
} | |||
Cypress.Commands.add('mount', mount); |
@@ -1 +1 @@ | |||
{"version":3,"file":"core-files_fileinfo.js?v=d5c54f8e5b3834c089a0","mappings":";CA0BA,SAAUA,GAUT,IAAMC,EAAW,SAASC,GACzB,IAAMC,EAAOC,KACbC,EAAEC,KAAKJ,GAAM,SAASK,EAAOC,GACvBH,EAAEI,WAAWF,KACjBJ,EAAKK,GAAOD,EAEb,IAEIF,EAAEK,YAAYN,KAAKO,MACvBP,KAAKO,GAAKC,SAASV,EAAKS,GAAI,KAI7BP,KAAKS,KAAOX,EAAKW,MAAQ,GAEP,QAAdT,KAAKU,KACRV,KAAKW,SAAW,uBAEhBX,KAAKW,SAAWX,KAAKW,UAAY,2BAG7BX,KAAKU,OACa,yBAAlBV,KAAKW,SACRX,KAAKU,KAAO,MAEZV,KAAKU,KAAO,OAGd,EAKDb,EAASe,UAAY,CAMpBL,GAAI,KAOJM,KAAM,KAQNJ,KAAM,KAONE,SAAU,KASVG,KAAM,KAQNJ,KAAM,KAQNK,YAAa,KAObC,MAAO,KAOPC,KAAM,KASNC,UAAW,KAKXC,YAAY,EAKZC,iBAAkB,KAKlBC,gBAAiB,GAEjBC,qBAAsB,EAEtBC,YAAa,WACZ,IAAK,IAAMC,KAAKxB,KAAKqB,gBAAiB,CACrC,IAAMI,EAAOzB,KAAKqB,gBAAgBG,GAClC,GAAmB,gBAAfC,EAAKC,OAAwC,aAAbD,EAAKrB,IACxC,OAAOqB,EAAKE,OAEb,CAED,OAAO,CACP,GAGG/B,EAAGgC,QACPhC,EAAGgC,MAAQ,CAAC,GAEbhC,EAAGgC,MAAM/B,SAAWA,CAzJrB,EA0JGD","sources":["webpack:///nextcloud/core/src/files/fileinfo.js"],"sourcesContent":["/**\n * Copyright (c) 2015\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.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\n/* eslint-disable */\n(function(OC) {\n\n\t/**\n\t * @class OC.Files.FileInfo\n\t * @classdesc File information\n\t *\n\t * @param {Object} data file data, see attributes for details\n\t *\n\t * @since 8.2\n\t */\n\tconst FileInfo = function(data) {\n\t\tconst self = this\n\t\t_.each(data, function(value, key) {\n\t\t\tif (!_.isFunction(value)) {\n\t\t\t\tself[key] = value\n\t\t\t}\n\t\t})\n\n\t\tif (!_.isUndefined(this.id)) {\n\t\t\tthis.id = parseInt(data.id, 10)\n\t\t}\n\n\t\t// TODO: normalize path\n\t\tthis.path = data.path || ''\n\n\t\tif (this.type === 'dir') {\n\t\t\tthis.mimetype = 'httpd/unix-directory'\n\t\t} else {\n\t\t\tthis.mimetype = this.mimetype || 'application/octet-stream'\n\t\t}\n\n\t\tif (!this.type) {\n\t\t\tif (this.mimetype === 'httpd/unix-directory') {\n\t\t\t\tthis.type = 'dir'\n\t\t\t} else {\n\t\t\t\tthis.type = 'file'\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @memberof OC.Files\n\t */\n\tFileInfo.prototype = {\n\t\t/**\n\t\t * File id\n\t\t *\n\t\t * @type int\n\t\t */\n\t\tid: null,\n\n\t\t/**\n\t\t * File name\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tname: null,\n\n\t\t/**\n\t\t * Path leading to the file, without the file name,\n\t\t * and with a leading slash.\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tpath: null,\n\n\t\t/**\n\t\t * Mime type\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tmimetype: null,\n\n\t\t/**\n\t\t * Icon URL.\n\t\t *\n\t\t * Can be used to override the mime type icon.\n\t\t *\n\t\t * @type String\n\t\t */\n\t\ticon: null,\n\n\t\t/**\n\t\t * File type. 'file' for files, 'dir' for directories.\n\t\t *\n\t\t * @type String\n\t\t * @deprecated rely on mimetype instead\n\t\t */\n\t\ttype: null,\n\n\t\t/**\n\t\t * Permissions.\n\t\t *\n\t\t * @see OC#PERMISSION_ALL for permissions\n\t\t * @type int\n\t\t */\n\t\tpermissions: null,\n\n\t\t/**\n\t\t * Modification time\n\t\t *\n\t\t * @type int\n\t\t */\n\t\tmtime: null,\n\n\t\t/**\n\t\t * Etag\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tetag: null,\n\n\t\t/**\n\t\t * Mount type.\n\t\t *\n\t\t * One of null, \"external-root\", \"shared\" or \"shared-root\"\n\t\t *\n\t\t * @type string\n\t\t */\n\t\tmountType: null,\n\n\t\t/**\n\t\t * @type boolean\n\t\t */\n\t\thasPreview: true,\n\n\t\t/**\n\t\t * @type int\n\t\t */\n\t\tsharePermissions: null,\n\n\t\t/**\n\t\t * @type Array\n\t\t */\n\t\tshareAttributes: [],\n\n\t\tquotaAvailableBytes: -1,\n\n\t\tcanDownload: function() {\n\t\t\tfor (const i in this.shareAttributes) {\n\t\t\t\tconst attr = this.shareAttributes[i]\n\t\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\t\treturn attr.enabled\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true\n\t\t},\n\t}\n\n\tif (!OC.Files) {\n\t\tOC.Files = {}\n\t}\n\tOC.Files.FileInfo = FileInfo\n})(OC)\n"],"names":["OC","FileInfo","data","self","this","_","each","value","key","isFunction","isUndefined","id","parseInt","path","type","mimetype","prototype","name","icon","permissions","mtime","etag","mountType","hasPreview","sharePermissions","shareAttributes","quotaAvailableBytes","canDownload","i","attr","scope","enabled","Files"],"sourceRoot":""} | |||
{"version":3,"file":"core-files_fileinfo.js?v=d5c54f8e5b3834c089a0","mappings":";CA0BA,SAAUA,GAUT,IAAMC,EAAW,SAASC,GACzB,IAAMC,EAAOC,KACbC,EAAEC,KAAKJ,GAAM,SAASK,EAAOC,GACvBH,EAAEI,WAAWF,KACjBJ,EAAKK,GAAOD,EAEd,IAEKF,EAAEK,YAAYN,KAAKO,MACvBP,KAAKO,GAAKC,SAASV,EAAKS,GAAI,KAI7BP,KAAKS,KAAOX,EAAKW,MAAQ,GAEP,QAAdT,KAAKU,KACRV,KAAKW,SAAW,uBAEhBX,KAAKW,SAAWX,KAAKW,UAAY,2BAG7BX,KAAKU,OACa,yBAAlBV,KAAKW,SACRX,KAAKU,KAAO,MAEZV,KAAKU,KAAO,OAGf,EAKAb,EAASe,UAAY,CAMpBL,GAAI,KAOJM,KAAM,KAQNJ,KAAM,KAONE,SAAU,KASVG,KAAM,KAQNJ,KAAM,KAQNK,YAAa,KAObC,MAAO,KAOPC,KAAM,KASNC,UAAW,KAKXC,YAAY,EAKZC,iBAAkB,KAKlBC,gBAAiB,GAEjBC,qBAAsB,EAEtBC,YAAa,WACZ,IAAK,IAAMC,KAAKxB,KAAKqB,gBAAiB,CACrC,IAAMI,EAAOzB,KAAKqB,gBAAgBG,GAClC,GAAmB,gBAAfC,EAAKC,OAAwC,aAAbD,EAAKrB,IACxC,OAAOqB,EAAKE,OAEd,CAEA,OAAO,CACR,GAGI/B,EAAGgC,QACPhC,EAAGgC,MAAQ,CAAC,GAEbhC,EAAGgC,MAAM/B,SAAWA,CACpB,CA1JD,CA0JGD","sources":["webpack:///nextcloud/core/src/files/fileinfo.js"],"sourcesContent":["/**\n * Copyright (c) 2015\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.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\n/* eslint-disable */\n(function(OC) {\n\n\t/**\n\t * @class OC.Files.FileInfo\n\t * @classdesc File information\n\t *\n\t * @param {Object} data file data, see attributes for details\n\t *\n\t * @since 8.2\n\t */\n\tconst FileInfo = function(data) {\n\t\tconst self = this\n\t\t_.each(data, function(value, key) {\n\t\t\tif (!_.isFunction(value)) {\n\t\t\t\tself[key] = value\n\t\t\t}\n\t\t})\n\n\t\tif (!_.isUndefined(this.id)) {\n\t\t\tthis.id = parseInt(data.id, 10)\n\t\t}\n\n\t\t// TODO: normalize path\n\t\tthis.path = data.path || ''\n\n\t\tif (this.type === 'dir') {\n\t\t\tthis.mimetype = 'httpd/unix-directory'\n\t\t} else {\n\t\t\tthis.mimetype = this.mimetype || 'application/octet-stream'\n\t\t}\n\n\t\tif (!this.type) {\n\t\t\tif (this.mimetype === 'httpd/unix-directory') {\n\t\t\t\tthis.type = 'dir'\n\t\t\t} else {\n\t\t\t\tthis.type = 'file'\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @memberof OC.Files\n\t */\n\tFileInfo.prototype = {\n\t\t/**\n\t\t * File id\n\t\t *\n\t\t * @type int\n\t\t */\n\t\tid: null,\n\n\t\t/**\n\t\t * File name\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tname: null,\n\n\t\t/**\n\t\t * Path leading to the file, without the file name,\n\t\t * and with a leading slash.\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tpath: null,\n\n\t\t/**\n\t\t * Mime type\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tmimetype: null,\n\n\t\t/**\n\t\t * Icon URL.\n\t\t *\n\t\t * Can be used to override the mime type icon.\n\t\t *\n\t\t * @type String\n\t\t */\n\t\ticon: null,\n\n\t\t/**\n\t\t * File type. 'file' for files, 'dir' for directories.\n\t\t *\n\t\t * @type String\n\t\t * @deprecated rely on mimetype instead\n\t\t */\n\t\ttype: null,\n\n\t\t/**\n\t\t * Permissions.\n\t\t *\n\t\t * @see OC#PERMISSION_ALL for permissions\n\t\t * @type int\n\t\t */\n\t\tpermissions: null,\n\n\t\t/**\n\t\t * Modification time\n\t\t *\n\t\t * @type int\n\t\t */\n\t\tmtime: null,\n\n\t\t/**\n\t\t * Etag\n\t\t *\n\t\t * @type String\n\t\t */\n\t\tetag: null,\n\n\t\t/**\n\t\t * Mount type.\n\t\t *\n\t\t * One of null, \"external-root\", \"shared\" or \"shared-root\"\n\t\t *\n\t\t * @type string\n\t\t */\n\t\tmountType: null,\n\n\t\t/**\n\t\t * @type boolean\n\t\t */\n\t\thasPreview: true,\n\n\t\t/**\n\t\t * @type int\n\t\t */\n\t\tsharePermissions: null,\n\n\t\t/**\n\t\t * @type Array\n\t\t */\n\t\tshareAttributes: [],\n\n\t\tquotaAvailableBytes: -1,\n\n\t\tcanDownload: function() {\n\t\t\tfor (const i in this.shareAttributes) {\n\t\t\t\tconst attr = this.shareAttributes[i]\n\t\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\t\treturn attr.enabled\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true\n\t\t},\n\t}\n\n\tif (!OC.Files) {\n\t\tOC.Files = {}\n\t}\n\tOC.Files.FileInfo = FileInfo\n})(OC)\n"],"names":["OC","FileInfo","data","self","this","_","each","value","key","isFunction","isUndefined","id","parseInt","path","type","mimetype","prototype","name","icon","permissions","mtime","etag","mountType","hasPreview","sharePermissions","shareAttributes","quotaAvailableBytes","canDownload","i","attr","scope","enabled","Files"],"sourceRoot":""} |
@@ -1,3 +1,3 @@ | |||
/*! For license information please see core-unsupported-browser-redirect.js.LICENSE.txt */ | |||
!function(){var e,n={25714:function(e,n,r){"use strict";var o,t,i,u=r(79753),l=r(81655),c=r(31e3),a=r.n(c),d=r(77727),f=r.n(d),s=(0,l.ZI)({allowHigherVersions:!0,browsers:f()}),p=(a()(f()),(0,r(62556).getBuilder)("core").clearOnLogout().persist().build()),b=r(22200),h=r(17499),g=null===(o=(0,b.getCurrentUser)())?(0,h.IY)().setApp("core").build():(0,h.IY)().setApp("core").setUid(o.uid).build(),v=r(48764).Buffer,w=(0,u.generateUrl)("/unsupported"),O="true"===p.getItem("unsupported-browser-ignore");window.TESTING||null!==(t=OC)&&void 0!==t&&null!==(i=t.config)&&void 0!==i&&i.no_unsupported_browser_warning||function(){if(s.test(navigator.userAgent))g.debug("this browser is officially supported ! 🚀");else if(O)g.debug("this browser is NOT supported but has been manually overridden ! ⚠️");else if(-1===window.location.pathname.indexOf(w)){var e=window.location.href.replace(window.location.origin,""),n=v.from(e).toString("base64");history.pushState(null,null,"".concat(w,"?redirect_url=").concat(n)),window.location.reload()}}()},72950:function(){}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.m=n,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},e=[],o.O=function(n,r,t,i){if(!r){var u=1/0;for(d=0;d<e.length;d++){r=e[d][0],t=e[d][1],i=e[d][2];for(var l=!0,c=0;c<r.length;c++)(!1&i||u>=i)&&Object.keys(o.O).every((function(e){return o.O[e](r[c])}))?r.splice(c--,1):(l=!1,i<u&&(u=i));if(l){e.splice(d--,1);var a=t();void 0!==a&&(n=a)}}return n}i=i||0;for(var d=e.length;d>0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[r,t,i]},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,{a:n}),n},o.d=function(e,n){for(var r in n)o.o(n,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},o.j=8876,function(){o.b=document.baseURI||self.location.href;var e={8876:0};o.O.j=function(n){return 0===e[n]};var n=function(n,r){var t,i,u=r[0],l=r[1],c=r[2],a=0;if(u.some((function(n){return 0!==e[n]}))){for(t in l)o.o(l,t)&&(o.m[t]=l[t]);if(c)var d=c(o)}for(n&&n(r);a<u.length;a++)i=u[a],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return o.O(d)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(n.bind(null,0)),r.push=n.bind(null,r.push.bind(r))}(),o.nc=void 0;var t=o.O(void 0,[7874],(function(){return o(25714)}));t=o.O(t)}(); | |||
//# sourceMappingURL=core-unsupported-browser-redirect.js.map?v=22e284cc4a754bfd50a8 | |||
!function(){var e,n={25714:function(e,n,r){"use strict";var o,t,i,u=r(79753),l=r(81655),c=r(31e3),a=r.n(c),d=r(77727),f=r.n(d),s=(0,l.ZI)({allowHigherVersions:!0,browsers:f()}),p=(a()(f()),(0,r(62556).getBuilder)("core").clearOnLogout().persist().build()),b=r(45994),h=r(17499),v=null===(o=(0,b.ts)())?(0,h.IY)().setApp("core").build():(0,h.IY)().setApp("core").setUid(o.uid).build(),w=r(48764).Buffer,g=(0,u.generateUrl)("/unsupported"),O="true"===p.getItem("unsupported-browser-ignore");window.TESTING||null!==(t=OC)&&void 0!==t&&null!==(i=t.config)&&void 0!==i&&i.no_unsupported_browser_warning||function(){if(s.test(navigator.userAgent))v.debug("this browser is officially supported ! 🚀");else if(O)v.debug("this browser is NOT supported but has been manually overridden ! ⚠️");else if(-1===window.location.pathname.indexOf(g)){var e=window.location.href.replace(window.location.origin,""),n=w.from(e).toString("base64");history.pushState(null,null,"".concat(g,"?redirect_url=").concat(n)),window.location.reload()}}()},72950:function(){}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.m=n,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},e=[],o.O=function(n,r,t,i){if(!r){var u=1/0;for(d=0;d<e.length;d++){r=e[d][0],t=e[d][1],i=e[d][2];for(var l=!0,c=0;c<r.length;c++)(!1&i||u>=i)&&Object.keys(o.O).every((function(e){return o.O[e](r[c])}))?r.splice(c--,1):(l=!1,i<u&&(u=i));if(l){e.splice(d--,1);var a=t();void 0!==a&&(n=a)}}return n}i=i||0;for(var d=e.length;d>0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[r,t,i]},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,{a:n}),n},o.d=function(e,n){for(var r in n)o.o(n,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},o.j=8876,function(){o.b=document.baseURI||self.location.href;var e={8876:0};o.O.j=function(n){return 0===e[n]};var n=function(n,r){var t,i,u=r[0],l=r[1],c=r[2],a=0;if(u.some((function(n){return 0!==e[n]}))){for(t in l)o.o(l,t)&&(o.m[t]=l[t]);if(c)var d=c(o)}for(n&&n(r);a<u.length;a++)i=u[a],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return o.O(d)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(n.bind(null,0)),r.push=n.bind(null,r.push.bind(r))}(),o.nc=void 0;var t=o.O(void 0,[7874],(function(){return o(25714)}));t=o.O(t)}(); | |||
//# sourceMappingURL=core-unsupported-browser-redirect.js.map?v=0035fd90d8be1902df52 |
@@ -66,11 +66,10 @@ | |||
*/ | |||
/** | |||
* @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev> | |||
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> | |||
* @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> | |||
* | |||
* @author Gary Kim <gary@garykim.dev> | |||
* @author John Molakvoæ <skjnldsv@protonmail.com> | |||
* @author Julius Härtl <jus@bitgrid.net> | |||
* | |||
* @license AGPL-3.0-or-later | |||
* | |||
@@ -90,10 +89,9 @@ | |||
*/ | |||
/** | |||
* @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> | |||
* @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com> | |||
* | |||
* @author John Molakvoæ <skjnldsv@protonmail.com> | |||
* @author Julius Härtl <jus@bitgrid.net> | |||
* | |||
* @license AGPL-3.0-or-later | |||
* | |||
@@ -113,7 +111,7 @@ | |||
*/ | |||
/** | |||
* @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com> | |||
* @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com> | |||
* | |||
* @author John Molakvoæ <skjnldsv@protonmail.com> | |||
* |
@@ -1 +1 @@ | |||
{"version":3,"file":"files_sharing-collaboration.js?v=b736a508139452dd8b55","mappings":"AAwBoBA,KAAKC,GAAGC,cAE5BC,OAAOC,IAAIC,cAAcC,aAAa,OAAQ,CAC7CC,OAAQ,WACP,OAAO,IAAIC,SAAQ,SAACC,EAASC,GAC5BT,GAAGU,QAAQC,WAAWC,EAAE,gBAAiB,mBAAmB,SAASC,GACrDb,GAAGc,MAAMC,YACjBC,YAAYH,GAAGI,MAAK,SAACC,EAAQC,GACnCX,EAAQW,EAASC,GACjB,IAAEC,MAAK,WACPZ,EAAO,IAAIa,MAAM,uBACjB,GACD,IAAE,EAAO,MAAM,EAAOtB,GAAGU,QAAQa,uBAAwB,GAAI,CAAEC,uBAAuB,GACvF,GACD,EACDC,WAAYb,EAAE,gBAAiB,kBAC/Bc,cAAe","sources":["webpack:///nextcloud/apps/files_sharing/src/collaborationresourceshandler.js"],"sourcesContent":["/**\n * @copyright Copyright (c) 2016 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nwindow.OCP.Collaboration.registerType('file', {\n\taction: () => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tOC.dialogs.filepicker(t('files_sharing', 'Link to a file'), function(f) {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(f).then((status, fileInfo) => {\n\t\t\t\t\tresolve(fileInfo.id)\n\t\t\t\t}).fail(() => {\n\t\t\t\t\treject(new Error('Cannot get fileinfo'))\n\t\t\t\t})\n\t\t\t}, false, null, false, OC.dialogs.FILEPICKER_TYPE_CHOOSE, '', { allowDirectoryChooser: true })\n\t\t})\n\t},\n\ttypeString: t('files_sharing', 'Link to a file'),\n\ttypeIconClass: 'icon-files-dark',\n})\n"],"names":["btoa","OC","requestToken","window","OCP","Collaboration","registerType","action","Promise","resolve","reject","dialogs","filepicker","t","f","Files","getClient","getFileInfo","then","status","fileInfo","id","fail","Error","FILEPICKER_TYPE_CHOOSE","allowDirectoryChooser","typeString","typeIconClass"],"sourceRoot":""} | |||
{"version":3,"file":"files_sharing-collaboration.js?v=b736a508139452dd8b55","mappings":"AAwBoBA,KAAKC,GAAGC,cAE5BC,OAAOC,IAAIC,cAAcC,aAAa,OAAQ,CAC7CC,OAAQ,WACP,OAAO,IAAIC,SAAQ,SAACC,EAASC,GAC5BT,GAAGU,QAAQC,WAAWC,EAAE,gBAAiB,mBAAmB,SAASC,GACrDb,GAAGc,MAAMC,YACjBC,YAAYH,GAAGI,MAAK,SAACC,EAAQC,GACnCX,EAAQW,EAASC,GAClB,IAAGC,MAAK,WACPZ,EAAO,IAAIa,MAAM,uBAClB,GACD,IAAG,EAAO,MAAM,EAAOtB,GAAGU,QAAQa,uBAAwB,GAAI,CAAEC,uBAAuB,GACxF,GACD,EACAC,WAAYb,EAAE,gBAAiB,kBAC/Bc,cAAe","sources":["webpack:///nextcloud/apps/files_sharing/src/collaborationresourceshandler.js"],"sourcesContent":["/**\n * @copyright Copyright (c) 2016 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\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\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nwindow.OCP.Collaboration.registerType('file', {\n\taction: () => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tOC.dialogs.filepicker(t('files_sharing', 'Link to a file'), function(f) {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(f).then((status, fileInfo) => {\n\t\t\t\t\tresolve(fileInfo.id)\n\t\t\t\t}).fail(() => {\n\t\t\t\t\treject(new Error('Cannot get fileinfo'))\n\t\t\t\t})\n\t\t\t}, false, null, false, OC.dialogs.FILEPICKER_TYPE_CHOOSE, '', { allowDirectoryChooser: true })\n\t\t})\n\t},\n\ttypeString: t('files_sharing', 'Link to a file'),\n\ttypeIconClass: 'icon-files-dark',\n})\n"],"names":["btoa","OC","requestToken","window","OCP","Collaboration","registerType","action","Promise","resolve","reject","dialogs","filepicker","t","f","Files","getClient","getFileInfo","then","status","fileInfo","id","fail","Error","FILEPICKER_TYPE_CHOOSE","allowDirectoryChooser","typeString","typeIconClass"],"sourceRoot":""} |
@@ -1,3 +1,3 @@ | |||
/*! For license information please see settings-vue-settings-nextcloud-pdf.js.LICENSE.txt */ | |||
!function(){"use strict";var e,n={27853:function(e,n,t){var r=!0===(0,t(16453).loadState)("settings","has-reasons-use-nextcloud-pdf");window.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("open-reasons-use-nextcloud-pdf");e&&r&&e.addEventListener("click",(function(e){e.preventDefault(),OCA.Viewer.open({path:"/Reasons to use Nextcloud.pdf"})}))}))}},t={};function r(e){var o=t[e];if(void 0!==o)return o.exports;var i=t[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=n,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(n,t,o,i){if(!t){var u=1/0;for(a=0;a<e.length;a++){t=e[a][0],o=e[a][1],i=e[a][2];for(var c=!0,d=0;d<t.length;d++)(!1&i||u>=i)&&Object.keys(r.O).every((function(e){return r.O[e](t[d])}))?t.splice(d--,1):(c=!1,i<u&&(u=i));if(c){e.splice(a--,1);var f=o();void 0!==f&&(n=f)}}return n}i=i||0;for(var a=e.length;a>0&&e[a-1][2]>i;a--)e[a]=e[a-1];e[a]=[t,o,i]},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,{a:n}),n},r.d=function(e,n){for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=7636,function(){r.b=document.baseURI||self.location.href;var e={7636:0};r.O.j=function(n){return 0===e[n]};var n=function(n,t){var o,i,u=t[0],c=t[1],d=t[2],f=0;if(u.some((function(n){return 0!==e[n]}))){for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(d)var a=d(r)}for(n&&n(t);f<u.length;f++)i=u[f],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(a)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}(),r.nc=void 0;var o=r.O(void 0,[7874],(function(){return r(27853)}));o=r.O(o)}(); | |||
//# sourceMappingURL=settings-vue-settings-nextcloud-pdf.js.map?v=802927d20b12b970da61 | |||
!function(){"use strict";var e,n={27853:function(e,n,t){var r=!0===(0,t(79954).j)("settings","has-reasons-use-nextcloud-pdf");window.addEventListener("DOMContentLoaded",(function(){var e=document.getElementById("open-reasons-use-nextcloud-pdf");e&&r&&e.addEventListener("click",(function(e){e.preventDefault(),OCA.Viewer.open({path:"/Reasons to use Nextcloud.pdf"})}))}))}},t={};function r(e){var o=t[e];if(void 0!==o)return o.exports;var i=t[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=n,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(n,t,o,i){if(!t){var u=1/0;for(a=0;a<e.length;a++){t=e[a][0],o=e[a][1],i=e[a][2];for(var c=!0,f=0;f<t.length;f++)(!1&i||u>=i)&&Object.keys(r.O).every((function(e){return r.O[e](t[f])}))?t.splice(f--,1):(c=!1,i<u&&(u=i));if(c){e.splice(a--,1);var d=o();void 0!==d&&(n=d)}}return n}i=i||0;for(var a=e.length;a>0&&e[a-1][2]>i;a--)e[a]=e[a-1];e[a]=[t,o,i]},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,{a:n}),n},r.d=function(e,n){for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=7636,function(){r.b=document.baseURI||self.location.href;var e={7636:0};r.O.j=function(n){return 0===e[n]};var n=function(n,t){var o,i,u=t[0],c=t[1],f=t[2],d=0;if(u.some((function(n){return 0!==e[n]}))){for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(f)var a=f(r)}for(n&&n(t);d<u.length;d++)i=u[d],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(a)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}(),r.nc=void 0;var o=r.O(void 0,[7874],(function(){return r(27853)}));o=r.O(o)}(); | |||
//# sourceMappingURL=settings-vue-settings-nextcloud-pdf.js.map?v=aea73c68a5e1b4a665e0 |