Browse Source

Add component testing

Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
tags/v26.0.0beta1
John Molakvoæ 1 year ago
parent
commit
5b9a8f0407
No account linked to committer's email address
100 changed files with 367 additions and 167 deletions
  1. 0
    6
      apps/files/js/app.js
  2. 0
    2
      apps/files/js/filelist.js
  3. 2
    2
      apps/files/lib/Controller/ApiController.php
  4. 5
    4
      apps/files/lib/Service/UserConfig.php
  5. 118
    0
      apps/files/src/views/Navigation.cy.ts
  6. 18
    16
      apps/files/src/views/Navigation.vue
  7. 18
    2
      apps/files/src/views/Settings.vue
  8. 1
    3
      build/files-checker.php
  9. 29
    1
      cypress.config.ts
  10. 12
    0
      cypress/support/component-index.html
  11. 35
    0
      cypress/support/component.ts
  12. 2
    2
      dist/comments-comments-app.js
  13. 1
    1
      dist/comments-comments-app.js.map
  14. 1
    1
      dist/comments-comments-tab.js.map
  15. 1
    1
      dist/comments-comments.js.map
  16. 1
    1
      dist/core-files_client.js.map
  17. 1
    1
      dist/core-files_fileinfo.js.map
  18. 1
    1
      dist/core-install.js.map
  19. 2
    2
      dist/core-login.js
  20. 1
    1
      dist/core-login.js.map
  21. 2
    2
      dist/core-main.js
  22. 1
    1
      dist/core-main.js.map
  23. 1
    1
      dist/core-maintenance.js.map
  24. 2
    2
      dist/core-profile.js
  25. 1
    1
      dist/core-profile.js.map
  26. 2
    2
      dist/core-recommendedapps.js
  27. 1
    1
      dist/core-recommendedapps.js.map
  28. 1
    1
      dist/core-systemtags.js.map
  29. 2
    2
      dist/core-unified-search.js
  30. 1
    1
      dist/core-unified-search.js.map
  31. 2
    2
      dist/core-unsupported-browser-redirect.js
  32. 1
    1
      dist/core-unsupported-browser-redirect.js.map
  33. 2
    2
      dist/core-unsupported-browser.js
  34. 1
    1
      dist/core-unsupported-browser.js.map
  35. 2
    2
      dist/dashboard-main.js
  36. 1
    1
      dist/dashboard-main.js.map
  37. 2
    2
      dist/dav-settings-admin-caldav.js
  38. 1
    1
      dist/dav-settings-admin-caldav.js.map
  39. 2
    2
      dist/dav-settings-personal-availability.js
  40. 1
    1
      dist/dav-settings-personal-availability.js.map
  41. 2
    2
      dist/federatedfilesharing-vue-settings-admin.js
  42. 1
    1
      dist/federatedfilesharing-vue-settings-admin.js.map
  43. 2
    2
      dist/federatedfilesharing-vue-settings-personal.js
  44. 1
    1
      dist/federatedfilesharing-vue-settings-personal.js.map
  45. 2
    2
      dist/files-main.js
  46. 4
    6
      dist/files-main.js.LICENSE.txt
  47. 1
    1
      dist/files-main.js.map
  48. 2
    2
      dist/files-personal-settings.js
  49. 1
    1
      dist/files-personal-settings.js.map
  50. 1
    1
      dist/files_sharing-additionalScripts.js.map
  51. 1
    1
      dist/files_sharing-collaboration.js.map
  52. 2
    2
      dist/files_sharing-files_sharing.js
  53. 1
    1
      dist/files_sharing-files_sharing.js.map
  54. 2
    2
      dist/files_sharing-files_sharing_tab.js
  55. 1
    1
      dist/files_sharing-files_sharing_tab.js.map
  56. 2
    2
      dist/files_sharing-personal-settings.js
  57. 1
    1
      dist/files_sharing-personal-settings.js.map
  58. 2
    2
      dist/files_trashbin-files_trashbin.js
  59. 1
    1
      dist/files_trashbin-files_trashbin.js.map
  60. 2
    2
      dist/files_versions-files_versions.js
  61. 1
    1
      dist/files_versions-files_versions.js.map
  62. 2
    2
      dist/oauth2-oauth2.js
  63. 1
    1
      dist/oauth2-oauth2.js.map
  64. 2
    2
      dist/settings-apps-view-7418.js
  65. 1
    1
      dist/settings-apps-view-7418.js.map
  66. 1
    1
      dist/settings-apps.js.map
  67. 1
    1
      dist/settings-legacy-admin.js.map
  68. 2
    2
      dist/settings-users-8351.js
  69. 1
    1
      dist/settings-users-8351.js.map
  70. 2
    2
      dist/settings-vue-settings-admin-basic-settings.js
  71. 1
    1
      dist/settings-vue-settings-admin-basic-settings.js.map
  72. 2
    2
      dist/settings-vue-settings-admin-delegation.js
  73. 1
    1
      dist/settings-vue-settings-admin-delegation.js.map
  74. 2
    2
      dist/settings-vue-settings-admin-security.js
  75. 1
    1
      dist/settings-vue-settings-admin-security.js.map
  76. 2
    2
      dist/settings-vue-settings-apps-users-management.js
  77. 1
    1
      dist/settings-vue-settings-apps-users-management.js.map
  78. 2
    2
      dist/settings-vue-settings-nextcloud-pdf.js
  79. 1
    1
      dist/settings-vue-settings-nextcloud-pdf.js.map
  80. 2
    2
      dist/settings-vue-settings-personal-info.js
  81. 1
    1
      dist/settings-vue-settings-personal-info.js.map
  82. 2
    2
      dist/settings-vue-settings-personal-password.js
  83. 1
    1
      dist/settings-vue-settings-personal-password.js.map
  84. 2
    2
      dist/settings-vue-settings-personal-security.js
  85. 1
    1
      dist/settings-vue-settings-personal-security.js.map
  86. 2
    2
      dist/settings-vue-settings-personal-webauthn.js
  87. 1
    1
      dist/settings-vue-settings-personal-webauthn.js.map
  88. 2
    2
      dist/sharebymail-vue-settings-admin-sharebymail.js
  89. 1
    1
      dist/sharebymail-vue-settings-admin-sharebymail.js.map
  90. 1
    1
      dist/systemtags-systemtags.js.map
  91. 2
    2
      dist/theming-admin-theming.js
  92. 1
    1
      dist/theming-admin-theming.js.map
  93. 2
    2
      dist/theming-personal-theming.js
  94. 1
    1
      dist/theming-personal-theming.js.map
  95. 2
    2
      dist/twofactor_backupcodes-settings.js
  96. 1
    1
      dist/twofactor_backupcodes-settings.js.map
  97. 2
    2
      dist/updatenotification-updatenotification.js
  98. 1
    1
      dist/updatenotification-updatenotification.js.map
  99. 2
    2
      dist/user-status-modal-8299.js
  100. 0
    0
      dist/user-status-modal-8299.js.map

+ 0
- 6
apps/files/js/app.js View File

@@ -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);
},

/**

+ 0
- 2
apps/files/js/filelist.js View File

@@ -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

+ 2
- 2
apps/files/lib/Controller/ApiController.php View File

@@ -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);
}

+ 5
- 4
apps/files/lib/Service/UserConfig.php View File

@@ -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');
}


+ 118
- 0
apps/files/src/views/Navigation.cy.ts View File

@@ -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')
})
})

+ 18
- 16
apps/files/src/views/Navigation.vue View File

@@ -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>

+ 18
- 2
apps/files/src/views/Settings.vue View File

@@ -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>

+ 1
- 3
build/files-checker.php View File

@@ -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 = [];


+ 29
- 1
cypress.config.ts View File

@@ -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
},
},
},
})

+ 12
- 0
cypress/support/component-index.html View File

@@ -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>

+ 35
- 0
cypress/support/component.ts View File

@@ -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);

+ 2
- 2
dist/comments-comments-app.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/comments-comments-app.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/comments-comments-tab.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/comments-comments.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-files_client.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-files_fileinfo.js.map View File

@@ -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
- 1
dist/core-install.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-login.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-login.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-main.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-main.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-maintenance.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-profile.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-profile.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-recommendedapps.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-recommendedapps.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-systemtags.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-unified-search.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-unified-search.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-unsupported-browser-redirect.js View File

@@ -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

+ 1
- 1
dist/core-unsupported-browser-redirect.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-unsupported-browser.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-unsupported-browser.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/dashboard-main.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/dashboard-main.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/dav-settings-admin-caldav.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/dav-settings-admin-caldav.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/dav-settings-personal-availability.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/dav-settings-personal-availability.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/federatedfilesharing-vue-settings-admin.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/federatedfilesharing-vue-settings-admin.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/federatedfilesharing-vue-settings-personal.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/federatedfilesharing-vue-settings-personal.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files-main.js
File diff suppressed because it is too large
View File


+ 4
- 6
dist/files-main.js.LICENSE.txt View File

@@ -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
dist/files-main.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files-personal-settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files-personal-settings.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_sharing-additionalScripts.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_sharing-collaboration.js.map View File

@@ -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":""}

+ 2
- 2
dist/files_sharing-files_sharing.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_sharing-files_sharing.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_sharing-files_sharing_tab.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_sharing-files_sharing_tab.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_sharing-personal-settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_sharing-personal-settings.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_trashbin-files_trashbin.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_trashbin-files_trashbin.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_versions-files_versions.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_versions-files_versions.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/oauth2-oauth2.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/oauth2-oauth2.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-apps-view-7418.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-apps-view-7418.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-apps.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-legacy-admin.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-users-8351.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-users-8351.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-admin-basic-settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-admin-basic-settings.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-admin-delegation.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-admin-delegation.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-admin-security.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-admin-security.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-apps-users-management.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-apps-users-management.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-nextcloud-pdf.js View File

@@ -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

+ 1
- 1
dist/settings-vue-settings-nextcloud-pdf.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-personal-info.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-personal-info.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-personal-password.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-personal-password.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-personal-security.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-personal-security.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-personal-webauthn.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-personal-webauthn.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/sharebymail-vue-settings-admin-sharebymail.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/sharebymail-vue-settings-admin-sharebymail.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
dist/systemtags-systemtags.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/theming-admin-theming.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/theming-admin-theming.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/theming-personal-theming.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/theming-personal-theming.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/twofactor_backupcodes-settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/twofactor_backupcodes-settings.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/updatenotification-updatenotification.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/updatenotification-updatenotification.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/user-status-modal-8299.js
File diff suppressed because it is too large
View File


+ 0
- 0
dist/user-status-modal-8299.js.map View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save