diff --git a/apps/user_ldap/css/renewPassword.css b/apps/user_ldap/css/renewPassword.css deleted file mode 100644 index 8acd97254fa23..0000000000000 --- a/apps/user_ldap/css/renewPassword.css +++ /dev/null @@ -1,148 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ -#personal-show + label { - inset-inline-start: 230px !important; - margin-top: 8px !important; - box-sizing: border-box; -} - -#renewpassword .strengthify-wrapper { - inset-inline-start: 10px; - margin-top: 65px; - position: absolute; - width: 219px; -} - -#cancel-container p.info { - margin-top: 10px; - text-align: center; -} - -#renewpassword .title { - background-color: transparent; -} - -.tooltip { - position:absolute; - display:block; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; - font-style:normal; - font-weight:400; - letter-spacing:normal; - line-break:auto; - line-height:1.6; - text-align:start; - text-decoration:none; - text-shadow:none; - text-transform:none; - white-space:normal; - word-break:normal; - word-spacing:normal; - word-wrap:normal; - font-size:12px; - opacity:0; - z-index:100000; - filter:drop-shadow(0 1px 10px rgba(77, 77, 77, 0.75)); -} - -.tooltip.in { - opacity:1 -} - -.tooltip.top { - margin-top:-3px; - padding:10px 0 -} - -.tooltip.bottom { - margin-top:3px; - padding:10px 0 -} - -.tooltip.right { - margin-inline-start:3px; - padding:0 10px -} - -.tooltip.right .tooltip-arrow { - top:50%; - inset-inline-start:0; - margin-top:-10px; - border-width:10px 10px 10px 0; - border-inline-end-color:#fff -} - -.tooltip.left { - margin-inline-start:-3px; - padding:0 5px -} - -.tooltip.left .tooltip-arrow { - top:50%; - inset-inline-end:0; - margin-top:-10px; - border-width:10px 0 10px 10px; - border-inline-start-color:#fff -} - -.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow { - bottom:0; - border-width:10px 10px 0; - border-top-color:#fff -} - -.tooltip.top .tooltip-arrow { - inset-inline-start:50%; - margin-inline-start:-10px -} - -.tooltip.top-left .tooltip-arrow { - inset-inline-end:10px; - margin-bottom:-10px -} - -.tooltip.top-right .tooltip-arrow { - inset-inline-start:10px; - margin-bottom:-10px -} - -.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow { - top:0; - border-width:0 10px 10px; - border-bottom-color:#fff -} - -.tooltip.bottom .tooltip-arrow { - inset-inline-start:50%; - margin-inline-start:-10px -} - -.tooltip.bottom-left .tooltip-arrow { - inset-inline-end:10px; - margin-top:-10px -} - -.tooltip.bottom-right .tooltip-arrow { - inset-inline-start:10px; - margin-top:-10px -} - -.tooltip-inner { - max-width:350px; - padding:5px 8px !important; - background-color:#fff; - color:#000 !important; - text-align:center !important; - font-weight:normal !important; - border-radius:3px -} - -.tooltip-arrow { - position:absolute; - width:0; - height:0; - border-color:transparent; - border-style:solid -} diff --git a/apps/user_ldap/css/vendor/ui-multiselect/jquery.multiselect.css b/apps/user_ldap/css/vendor/ui-multiselect/jquery.multiselect.css deleted file mode 100644 index 533eb63762fb6..0000000000000 --- a/apps/user_ldap/css/vendor/ui-multiselect/jquery.multiselect.css +++ /dev/null @@ -1,27 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2012 Eric Hynds - * SPDX-License-Identifier: MIT - */ -.ui-multiselect { padding:2px 0 2px 4px; text-align:left; } -.ui-multiselect span.ui-icon { float:right; } -.ui-multiselect-single .ui-multiselect-checkboxes input { position:absolute !important; top: auto !important; left:-9999px; } -.ui-multiselect-single .ui-multiselect-checkboxes label { padding:5px !important; } - -.ui-multiselect-header { margin-bottom:3px; padding:3px 0 3px 4px; } -.ui-multiselect-header ul { font-size:14px; } -.ui-multiselect-header ul li { float:left; padding:0 10px 0 0; } -.ui-multiselect-header a { text-decoration:none; } -.ui-multiselect-header a:hover { text-decoration:underline; } -.ui-multiselect-header span.ui-icon { float:left;} -.ui-multiselect-header li.ui-multiselect-close { float:right; text-align:right; padding-right:0; } - -.ui-multiselect-menu { display:none; padding:3px; position:absolute; z-index:10000; text-align: left; } -.ui-multiselect-checkboxes { position:relative /* fixes bug in IE6/7 */; overflow-y:scroll; } -.ui-multiselect-checkboxes label { cursor:default; display:block; border:1px solid transparent; padding:3px 1px; } -.ui-multiselect-checkboxes label input { position:relative; top:1px; } -.ui-multiselect-checkboxes li { clear:both; font-size:14px; padding-right:3px; } -.ui-multiselect-checkboxes li.ui-multiselect-optgroup-label { text-align:center; font-weight:bold; border-bottom:1px solid; } -.ui-multiselect-checkboxes li.ui-multiselect-optgroup-label a { display:block; padding:3px; margin:1px 0; text-decoration:none; } - -/* remove label borders in IE6 because IE6 does not support transparency */ -* html .ui-multiselect-checkboxes label { border:none; } diff --git a/apps/user_ldap/js/renewPassword.js b/apps/user_ldap/js/renewPassword.js deleted file mode 100644 index 2db9b8e7cd211..0000000000000 --- a/apps/user_ldap/js/renewPassword.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -OCA = OCA || {} -OCA.LDAP = _.extend(OC.LDAP || {}, { - onRenewPassword: function() { - $('#submit') - .removeClass('icon-confirm-white') - .addClass('icon-loading-small') - .attr('value', t('core', 'Renewing …')) - return true - }, -}) - -window.addEventListener('DOMContentLoaded', function() { - $('form[name=renewpassword]').submit(OCA.LDAP.onRenewPassword) - - if ($('#newPassword').length) { - $('#newPassword').showPassword().keyup() - } - $('#newPassword').strengthify({ - zxcvbn: OC.linkTo('core', 'vendor/zxcvbn/dist/zxcvbn.js'), - titles: [ - t('core', 'Very weak password'), - t('core', 'Weak password'), - t('core', 'So-so password'), - t('core', 'Good password'), - t('core', 'Strong password'), - ], - drawTitles: true, - $addAfter: $('input[name="newPassword-clone"]'), - }) -}) diff --git a/apps/user_ldap/js/vendor/ui-multiselect/src/jquery.multiselect.js b/apps/user_ldap/js/vendor/ui-multiselect/src/jquery.multiselect.js deleted file mode 100644 index 844e257ca29f3..0000000000000 --- a/apps/user_ldap/js/vendor/ui-multiselect/src/jquery.multiselect.js +++ /dev/null @@ -1,707 +0,0 @@ -/* jshint forin:true, noarg:true, noempty:true, eqeqeq:true, boss:true, undef:true, curly:true, browser:true, jquery:true */ -/* - * jQuery MultiSelect UI Widget 1.13 - * Copyright (c) 2012 Eric Hynds - * - * http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/ - * - * Depends: - * - jQuery 1.4.2+ - * - jQuery UI 1.8 widget factory - * - * Optional: - * - jQuery UI effects - * - jQuery UI position utility - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * SPDX-FileCopyrightText: 2012 Eric Hynds - * SPDX-License-Identifier: MIT - */ -(function($, undefined) { - let multiselectID = 0 - - $.widget('ech.multiselect', { - - // default options - options: { - header: true, - height: 175, - minWidth: 225, - classes: '', - checkAllText: 'Check all', - uncheckAllText: 'Uncheck all', - noneSelectedText: 'Select options', - selectedText: '# selected', - selectedList: 0, - show: null, - hide: null, - autoOpen: false, - multiple: true, - position: {}, - }, - - _create: function() { - const el = this.element.hide(), - o = this.options - - this.speed = $.fx.speeds._default // default speed for effects - this._isOpen = false // assume no - - const - button = (this.button = $('')) - .addClass('ui-multiselect ui-widget ui-state-default ui-corner-all') - .addClass(o.classes) - .attr({ title: el.attr('title'), 'aria-haspopup': true, tabIndex: el.attr('tabIndex') }) - .insertAfter(el), - - buttonlabel = (this.buttonlabel = $('')) - .html(o.noneSelectedText) - .appendTo(button), - - menu = (this.menu = $('
')) - .addClass('ui-multiselect-menu ui-widget ui-widget-content ui-corner-all') - .addClass(o.classes) - .appendTo(document.body), - - header = (this.header = $('
')) - .addClass('ui-widget-header ui-corner-all ui-multiselect-header ui-helper-clearfix') - .appendTo(menu), - - headerLinkContainer = (this.headerLinkContainer = $('
    ')) - .addClass('ui-helper-reset') - .html(function() { - if (o.header === true) { - return '
  • ' + o.checkAllText + '
  • ' + o.uncheckAllText + '
  • ' - } else if (typeof o.header === 'string') { - return '
  • ' + o.header + '
  • ' - } else { - return '' - } - }) - .append('
  • ') - .appendTo(header), - - checkboxContainer = (this.checkboxContainer = $('
      ')) - .addClass('ui-multiselect-checkboxes ui-helper-reset') - .appendTo(menu) - - // perform event bindings - this._bindEvents() - - // build menu - this.refresh(true) - - // some addl. logic for single selects - if (!o.multiple) { - menu.addClass('ui-multiselect-single') - } - }, - - _init: function() { - if (this.options.header === false) { - this.header.hide() - } - if (!this.options.multiple) { - this.headerLinkContainer.find('.ui-multiselect-all, .ui-multiselect-none').hide() - } - if (this.options.autoOpen) { - this.open() - } - if (this.element.is(':disabled')) { - this.disable() - } - }, - - refresh: function(init) { - let el = this.element, - o = this.options, - menu = this.menu, - checkboxContainer = this.checkboxContainer, - optgroups = [], - html = '', - id = el.attr('id') || multiselectID++ // unique ID for the label & option tags - - // build items - el.find('option').each(function(i) { - let $this = $(this), - parent = this.parentNode, - title = this.innerHTML, - description = this.title, - value = this.value, - inputID = 'ui-multiselect-' + (this.id || id + '-option-' + i), - isDisabled = this.disabled, - isSelected = this.selected, - labelClasses = ['ui-corner-all'], - liClasses = (isDisabled ? 'ui-multiselect-disabled ' : ' ') + this.className, - optLabel - - // is this an optgroup? - if (parent.tagName === 'OPTGROUP') { - optLabel = parent.getAttribute('label') - - // has this optgroup been added already? - if ($.inArray(optLabel, optgroups) === -1) { - html += '
    • ' + optLabel + '
    • ' - optgroups.push(optLabel) - } - } - - if (isDisabled) { - labelClasses.push('ui-state-disabled') - } - - // browsers automatically select the first option - // by default with single selects - if (isSelected && !o.multiple) { - labelClasses.push('ui-state-active') - } - - html += '
    • ' - - // create the label - html += '
    • ' - }) - - // insert into the DOM - checkboxContainer.html(html) - - // cache some moar useful elements - this.labels = menu.find('label') - this.inputs = this.labels.children('input') - - // set widths - this._setButtonWidth() - this._setMenuWidth() - - // remember default value - this.button[0].defaultValue = this.update() - - // broadcast refresh event; useful for widgets - if (!init) { - this._trigger('refresh') - } - }, - - // updates the button text. call refresh() to rebuild - update: function() { - let o = this.options, - $inputs = this.inputs, - $checked = $inputs.filter(':checked'), - numChecked = $checked.length, - value - - if (numChecked === 0) { - value = o.noneSelectedText - } else { - if ($.isFunction(o.selectedText)) { - value = o.selectedText.call(this, numChecked, $inputs.length, $checked.get()) - } else if (/\d/.test(o.selectedList) && o.selectedList > 0 && numChecked <= o.selectedList) { - value = $checked.map(function() { return $(this).next().html() }).get().join(', ') - } else { - value = o.selectedText.replace('#', numChecked).replace('#', $inputs.length) - } - } - - this.buttonlabel.html(value) - return value - }, - - // binds events - _bindEvents: function() { - const self = this, button = this.button - - /** - * - */ - function clickHandler() { - self[self._isOpen ? 'close' : 'open']() - return false - } - - // webkit doesn't like it when you click on the span :( - button - .find('span') - .bind('click.multiselect', clickHandler) - - // button events - button.bind({ - click: clickHandler, - keypress: function(e) { - switch (e.which) { - case 27: // esc - case 38: // up - case 37: // left - self.close() - break - case 39: // right - case 40: // down - self.open() - break - } - }, - mouseenter: function() { - if (!button.hasClass('ui-state-disabled')) { - $(this).addClass('ui-state-hover') - } - }, - mouseleave: function() { - $(this).removeClass('ui-state-hover') - }, - focus: function() { - if (!button.hasClass('ui-state-disabled')) { - $(this).addClass('ui-state-focus') - } - }, - blur: function() { - $(this).removeClass('ui-state-focus') - }, - }) - - // header links - this.header - .delegate('a', 'click.multiselect', function(e) { - // close link - if ($(this).hasClass('ui-multiselect-close')) { - self.close() - - // check all / uncheck all - } else { - self[$(this).hasClass('ui-multiselect-all') ? 'checkAll' : 'uncheckAll']() - } - - e.preventDefault() - }) - - // optgroup label toggle support - this.menu - .delegate('li.ui-multiselect-optgroup-label a', 'click.multiselect', function(e) { - e.preventDefault() - - const $this = $(this), - $inputs = $this.parent().nextUntil('li.ui-multiselect-optgroup-label').find('input:visible:not(:disabled)'), - nodes = $inputs.get(), - label = $this.parent().text() - - // trigger event and bail if the return is false - if (self._trigger('beforeoptgrouptoggle', e, { inputs: nodes, label }) === false) { - return - } - - // toggle inputs - self._toggleChecked( - $inputs.filter(':checked').length !== $inputs.length, - $inputs, - ) - - self._trigger('optgrouptoggle', e, { - inputs: nodes, - label, - checked: nodes[0].checked, - }) - }) - .delegate('label', 'mouseenter.multiselect', function() { - if (!$(this).hasClass('ui-state-disabled')) { - self.labels.removeClass('ui-state-hover') - $(this).addClass('ui-state-hover').find('input').focus() - } - }) - .delegate('label', 'keydown.multiselect', function(e) { - e.preventDefault() - - switch (e.which) { - case 9: // tab - case 27: // esc - self.close() - break - case 38: // up - case 40: // down - case 37: // left - case 39: // right - self._traverse(e.which, this) - break - case 13: // enter - $(this).find('input')[0].click() - break - } - }) - .delegate('input[type="checkbox"], input[type="radio"]', 'click.multiselect', function(e) { - const $this = $(this), - val = this.value, - checked = this.checked, - tags = self.element.find('option') - - // bail if this input is disabled or the event is cancelled - if (this.disabled || self._trigger('click', e, { value: val, text: this.title, checked }) === false) { - e.preventDefault() - return - } - - // make sure the input has focus. otherwise, the esc key - // won't close the menu after clicking an item. - $this.focus() - - // toggle aria state - $this.attr('aria-selected', checked) - - // change state on the original option tags - tags.each(function() { - if (this.value === val) { - this.selected = checked - } else if (!self.options.multiple) { - this.selected = false - } - }) - - // some additional single select-specific logic - if (!self.options.multiple) { - self.labels.removeClass('ui-state-active') - $this.closest('label').toggleClass('ui-state-active', checked) - - // close menu - self.close() - } - - // fire change on the select box - self.element.trigger('change') - - // setTimeout is to fix multiselect issue #14 and #47. caused by jQuery issue #3827 - // http://bugs.jquery.com/ticket/3827 - setTimeout($.proxy(self.update, self), 10) - }) - - // close each widget when clicking on any other element/anywhere else on the page - $(document).bind('mousedown.multiselect', function(e) { - if (self._isOpen && !$.contains(self.menu[0], e.target) && !$.contains(self.button[0], e.target) && e.target !== self.button[0]) { - self.close() - } - }) - - // deal with form resets. the problem here is that buttons aren't - // restored to their defaultValue prop on form reset, and the reset - // handler fires before the form is actually reset. delaying it a bit - // gives the form inputs time to clear. - $(this.element[0].form).bind('reset.multiselect', function() { - setTimeout($.proxy(self.refresh, self), 10) - }) - }, - - // set button width - _setButtonWidth: function() { - let width = this.element.outerWidth(), - o = this.options - - if (/\d/.test(o.minWidth) && width < o.minWidth) { - width = o.minWidth - } - - // set widths - this.button.width(width) - }, - - // set menu width - _setMenuWidth: function() { - const m = this.menu, - width = this.button.outerWidth() - - parseInt(m.css('padding-left'), 10) - - parseInt(m.css('padding-right'), 10) - - parseInt(m.css('border-right-width'), 10) - - parseInt(m.css('border-left-width'), 10) - - m.width(width || this.button.outerWidth()) - }, - - // move up or down within the menu - _traverse: function(which, start) { - const $start = $(start), - moveToLast = which === 38 || which === 37, - - // select the first li that isn't an optgroup label / disabled - $next = $start.parent()[moveToLast ? 'prevAll' : 'nextAll']('li:not(.ui-multiselect-disabled, .ui-multiselect-optgroup-label)')[moveToLast ? 'last' : 'first']() - - // if at the first/last element - if (!$next.length) { - const $container = this.menu.find('ul').last() - - // move to the first/last - this.menu.find('label')[moveToLast ? 'last' : 'first']().trigger('mouseover') - - // set scroll position - $container.scrollTop(moveToLast ? $container.height() : 0) - } else { - $next.find('label').trigger('mouseover') - } - }, - - // This is an internal function to toggle the checked property and - // other related attributes of a checkbox. - // - // The context of this function should be a checkbox; do not proxy it. - _toggleState: function(prop, flag) { - return function() { - if (!this.disabled) { - this[prop] = flag - } - - if (flag) { - this.setAttribute('aria-selected', true) - } else { - this.removeAttribute('aria-selected') - } - } - }, - - _toggleChecked: function(flag, group) { - const $inputs = (group && group.length) ? group : this.inputs, - self = this - - // toggle state on inputs - $inputs.each(this._toggleState('checked', flag)) - - // give the first input focus - $inputs.eq(0).focus() - - // update button text - this.update() - - // gather an array of the values that actually changed - const values = $inputs.map(function() { - return this.value - }).get() - - // toggle state on original option tags - this.element - .find('option') - .each(function() { - if (!this.disabled && $.inArray(this.value, values) > -1) { - self._toggleState('selected', flag).call(this) - } - }) - - // trigger the change event on the select - if ($inputs.length) { - this.element.trigger('change') - } - }, - - _toggleDisabled: function(flag) { - this.button - .attr({ disabled: flag, 'aria-disabled': flag })[flag ? 'addClass' : 'removeClass']('ui-state-disabled') - - let inputs = this.menu.find('input') - const key = 'ech-multiselect-disabled' - - if (flag) { - // remember which elements this widget disabled (not pre-disabled) - // elements, so that they can be restored if the widget is re-enabled. - inputs = inputs.filter(':enabled') - .data(key, true) - } else { - inputs = inputs.filter(function() { - return $.data(this, key) === true - }).removeData(key) - } - - inputs - .attr({ disabled: flag, 'arial-disabled': flag }) - .parent()[flag ? 'addClass' : 'removeClass']('ui-state-disabled') - - this.element - .attr({ disabled: flag, 'aria-disabled': flag }) - }, - - // open the menu - open: function(e) { - let self = this, - button = this.button, - menu = this.menu, - speed = this.speed, - o = this.options, - args = [] - - // bail if the multiselectopen event returns false, this widget is disabled, or is already open - if (this._trigger('beforeopen') === false || button.hasClass('ui-state-disabled') || this._isOpen) { - return - } - - let $container = menu.find('ul').last(), - effect = o.show, - pos = button.offset() - - // figure out opening effects/speeds - if ($.isArray(o.show)) { - effect = o.show[0] - speed = o.show[1] || self.speed - } - - // if there's an effect, assume jQuery UI is in use - // build the arguments to pass to show() - if (effect) { - args = [effect, speed] - } - - // set the scroll of the checkbox container - $container.scrollTop(0).height(o.height) - - // position and show menu - if ($.ui.position && !$.isEmptyObject(o.position)) { - o.position.of = o.position.of || button - - menu - .show() - .position(o.position) - .hide() - - // if position utility is not available... - } else { - menu.css({ - top: pos.top + button.outerHeight(), - 'inset-inline-start': pos.left, - }) - } - - // show the menu, maybe with a speed/effect combo - $.fn.show.apply(menu, args) - - // select the first option - // triggering both mouseover and mouseover because 1.4.2+ has a bug where triggering mouseover - // will actually trigger mouseenter. the mouseenter trigger is there for when it's eventually fixed - this.labels.eq(0).trigger('mouseover').trigger('mouseenter').find('input').trigger('focus') - - button.addClass('ui-state-active') - this._isOpen = true - this._trigger('open') - }, - - // close the menu - close: function() { - if (this._trigger('beforeclose') === false) { - return - } - - let o = this.options, - effect = o.hide, - speed = this.speed, - args = [] - - // figure out opening effects/speeds - if ($.isArray(o.hide)) { - effect = o.hide[0] - speed = o.hide[1] || this.speed - } - - if (effect) { - args = [effect, speed] - } - - $.fn.hide.apply(this.menu, args) - this.button.removeClass('ui-state-active').trigger('blur').trigger('mouseleave') - this._isOpen = false - this._trigger('close') - }, - - enable: function() { - this._toggleDisabled(false) - }, - - disable: function() { - this._toggleDisabled(true) - }, - - checkAll: function(e) { - this._toggleChecked(true) - this._trigger('checkAll') - }, - - uncheckAll: function() { - this._toggleChecked(false) - this._trigger('uncheckAll') - }, - - getChecked: function() { - return this.menu.find('input').filter(':checked') - }, - - destroy: function() { - // remove classes + data - $.Widget.prototype.destroy.call(this) - - this.button.remove() - this.menu.remove() - this.element.show() - - return this - }, - - isOpen: function() { - return this._isOpen - }, - - widget: function() { - return this.menu - }, - - getButton: function() { - return this.button - }, - - // react to option changes after initialization - _setOption: function(key, value) { - const menu = this.menu - - switch (key) { - case 'header': - menu.find('div.ui-multiselect-header')[value ? 'show' : 'hide']() - break - case 'checkAllText': - menu.find('a.ui-multiselect-all span').eq(-1).text(value) - break - case 'uncheckAllText': - menu.find('a.ui-multiselect-none span').eq(-1).text(value) - break - case 'height': - menu.find('ul').last().height(parseInt(value, 10)) - break - case 'minWidth': - this.options[key] = parseInt(value, 10) - this._setButtonWidth() - this._setMenuWidth() - break - case 'selectedText': - case 'selectedList': - case 'noneSelectedText': - this.options[key] = value // these all needs to update immediately for the update() call - this.update() - break - case 'classes': - menu.add(this.button).removeClass(this.options.classes).addClass(value) - break - case 'multiple': - menu.toggleClass('ui-multiselect-single', !value) - this.options.multiple = value - this.element[0].multiple = value - this.refresh() - } - - $.Widget.prototype._setOption.apply(this, arguments) - }, - }) -})(jQuery) diff --git a/apps/user_ldap/lib/AppInfo/Application.php b/apps/user_ldap/lib/AppInfo/Application.php index bc55f907732ec..7646269828095 100644 --- a/apps/user_ldap/lib/AppInfo/Application.php +++ b/apps/user_ldap/lib/AppInfo/Application.php @@ -30,6 +30,7 @@ use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\AppFramework\IAppContainer; use OCP\AppFramework\Services\IAppConfig; +use OCP\AppFramework\Services\IInitialState; use OCP\Config\IUserConfig; use OCP\EventDispatcher\IEventDispatcher; use OCP\IAvatarManager; @@ -67,6 +68,7 @@ public function __construct() { $appContainer->get(IL10N::class), $appContainer->get('Session'), $appContainer->get(IURLGenerator::class), + $appContainer->get(IInitialState::class), ); }); diff --git a/apps/user_ldap/lib/Controller/RenewPasswordController.php b/apps/user_ldap/lib/Controller/RenewPasswordController.php index 04b919eeb6765..d3e89a12d5621 100644 --- a/apps/user_ldap/lib/Controller/RenewPasswordController.php +++ b/apps/user_ldap/lib/Controller/RenewPasswordController.php @@ -6,6 +6,7 @@ */ namespace OCA\User_LDAP\Controller; +use OCA\User_LDAP\AppInfo\Application; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\Attribute\OpenAPI; @@ -13,6 +14,7 @@ use OCP\AppFramework\Http\Attribute\UseSession; use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Services\IInitialState; use OCP\Config\IUserConfig; use OCP\HintException; use OCP\IConfig; @@ -20,8 +22,8 @@ use OCP\IRequest; use OCP\ISession; use OCP\IURLGenerator; -use OCP\IUser; use OCP\IUserManager; +use OCP\Util; #[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)] class RenewPasswordController extends Controller { @@ -34,6 +36,7 @@ public function __construct( protected IL10N $l10n, private ISession $session, private IURLGenerator $urlGenerator, + private IInitialState $initialState, ) { parent::__construct($appName, $request); } @@ -51,7 +54,7 @@ public function showRenewPasswordForm(string $user): TemplateResponse|RedirectRe if (!$this->userConfig->getValueBool($user, 'user_ldap', 'needsPasswordReset')) { return new RedirectResponse($this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm')); } - $parameters = []; + $renewPasswordMessages = $this->session->get('renewPasswordMessages'); $errors = []; $messages = []; @@ -59,25 +62,23 @@ public function showRenewPasswordForm(string $user): TemplateResponse|RedirectRe [$errors, $messages] = $renewPasswordMessages; } $this->session->remove('renewPasswordMessages'); - foreach ($errors as $value) { - $parameters[$value] = true; - } - - $parameters['messages'] = $messages; - $parameters['user'] = $user; - $parameters['canResetPassword'] = true; - $parameters['resetPasswordLink'] = $this->config->getSystemValue('lost_password_link', ''); - if (!$parameters['resetPasswordLink']) { - $userObj = $this->userManager->get($user); - if ($userObj instanceof IUser) { - $parameters['canResetPassword'] = $userObj->canChangePassword(); - } - } - $parameters['cancelLink'] = $this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm'); + $this->initialState->provideInitialState('renewPasswordParameters', + [ + 'user' => $user, + 'errors' => $errors, + 'messages' => $messages, + 'cancelRenewUrl' => $this->urlGenerator->linkToRouteAbsolute('core.login.showLoginForm'), + 'tryRenewPasswordUrl' => $this->urlGenerator->linkToRouteAbsolute('user_ldap.renewPassword.tryRenewPassword'), + ], + ); + Util::addStyle(Application::APP_ID, 'renewPassword'); + Util::addScript(Application::APP_ID, 'renewPassword'); return new TemplateResponse( - $this->appName, 'renewpassword', $parameters, 'guest' + Application::APP_ID, + 'renewpassword', + renderAs: 'guest', ); } diff --git a/apps/user_ldap/src/LDAPSettingsApp.vue b/apps/user_ldap/src/LDAPSettingsApp.vue deleted file mode 100644 index d2daeb62de6b6..0000000000000 --- a/apps/user_ldap/src/LDAPSettingsApp.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/apps/user_ldap/src/renewPassword.ts b/apps/user_ldap/src/renewPassword.ts new file mode 100644 index 0000000000000..f9429229a3415 --- /dev/null +++ b/apps/user_ldap/src/renewPassword.ts @@ -0,0 +1,10 @@ +/** + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { createApp } from 'vue' +import RenewPasswordView from './views/RenewPassword.vue' + +const app = createApp(RenewPasswordView) +app.mount('#user_ldap-renewPassword') diff --git a/apps/user_ldap/src/settings-admin.ts b/apps/user_ldap/src/settings-admin.ts index f7c25e2344a1f..50a496a571a08 100644 --- a/apps/user_ldap/src/settings-admin.ts +++ b/apps/user_ldap/src/settings-admin.ts @@ -2,8 +2,9 @@ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ + import { createApp } from 'vue' -import LDAPSettingsApp from './LDAPSettingsApp.vue' +import LDAPSettingsApp from './views/LDAPSettingsApp.vue' import { pinia } from './store/index.ts' const app = createApp(LDAPSettingsApp) diff --git a/apps/user_ldap/src/views/Settings.vue b/apps/user_ldap/src/views/LDAPSettingsApp.vue similarity index 98% rename from apps/user_ldap/src/views/Settings.vue rename to apps/user_ldap/src/views/LDAPSettingsApp.vue index f913a2e9c8529..4d1a0ab18108b 100644 --- a/apps/user_ldap/src/views/Settings.vue +++ b/apps/user_ldap/src/views/LDAPSettingsApp.vue @@ -87,8 +87,6 @@ + + + + diff --git a/apps/user_ldap/templates/renewpassword.php b/apps/user_ldap/templates/renewpassword.php index 3345be29c13dc..91821896add3d 100644 --- a/apps/user_ldap/templates/renewpassword.php +++ b/apps/user_ldap/templates/renewpassword.php @@ -1,66 +1,9 @@ -
      -
      -
      - t('Please renew your password.')); ?>
      -
      - -
      -
      -
      - - -
      - t('An internal error occurred.')); ?>
      - t('Please try again or contact your administrator.')); ?> -
      - - -

      - - -

      - -

      - - - -

      - - - - -

      - t('Wrong password.')); ?> -

      - -

      - - t('Cancel')); ?> - -

      - - -
      -
      +
      diff --git a/build/frontend/vite.config.ts b/build/frontend/vite.config.ts index 1e416b234bc45..086f3c748eab2 100644 --- a/build/frontend/vite.config.ts +++ b/build/frontend/vite.config.ts @@ -46,6 +46,7 @@ const modules = { 'settings-personal': resolve(import.meta.dirname, 'apps/twofactor_backupcodes/src', 'settings-personal.ts'), }, user_ldap: { + renewPassword: resolve(import.meta.dirname, 'apps/user_ldap/src', 'renewPassword.ts'), 'settings-admin': resolve(import.meta.dirname, 'apps/user_ldap/src', 'settings-admin.ts'), }, user_status: { diff --git a/dist/ContentCopy-CFmC6HSf.chunk.mjs b/dist/ContentCopy-r6LH1e3H.chunk.mjs similarity index 87% rename from dist/ContentCopy-CFmC6HSf.chunk.mjs rename to dist/ContentCopy-r6LH1e3H.chunk.mjs index 0bb7db7f1ac58..c02fadc8161fe 100644 --- a/dist/ContentCopy-CFmC6HSf.chunk.mjs +++ b/dist/ContentCopy-r6LH1e3H.chunk.mjs @@ -1,2 +1,2 @@ -import{r as u,a as p,t as h,_ as C}from"./_plugin-vue_export-helper-CDPKodk-.chunk.mjs";import{j as _,E as i,o as e,H as o,F as s,x as y,e as H,f as n,y as d,b,z as f}from"./mdi-B9XVyi7B.chunk.mjs";const k={name:"HelpCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},A=["aria-hidden","aria-label"],v=["fill","width","height"],z={d:"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"},V={key:0};function w(a,l,t,c,g,m){return e(),i("span",f(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon help-circle-icon",role:"img",onClick:l[0]||(l[0]=r=>a.$emit("click",r))}),[(e(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[o("path",z,[t.title?(e(),i("title",V,n(t.title),1)):s("",!0)])],8,v))],16,A)}const x=p(k,[["render",w]]);u();const M={class:"settings-section"},S={class:"settings-section__name"},$=["aria-label","href","title"],I={key:0,class:"settings-section__desc"},N=_({__name:"NcSettingsSection",props:{name:{},description:{default:""},docUrl:{default:""}},setup(a){const l=h("External documentation");return(t,c)=>(e(),i("div",M,[o("h2",S,[H(n(t.name)+" ",1),t.docUrl?(e(),i("a",{key:0,"aria-label":d(l),class:"settings-section__info",href:t.docUrl,rel:"noreferrer nofollow",target:"_blank",title:d(l)},[b(x,{size:20})],8,$)):s("",!0)]),t.description?(e(),i("p",I,n(t.description),1)):s("",!0),y(t.$slots,"default",{},void 0,!0)]))}}),P=p(N,[["__scopeId","data-v-9cedb949"]]),U={name:"ContentCopyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},B=["aria-hidden","aria-label"],E=["fill","width","height"],L={d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"},Z={key:0};function j(a,l,t,c,g,m){return e(),i("span",f(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon content-copy-icon",role:"img",onClick:l[0]||(l[0]=r=>a.$emit("click",r))}),[(e(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[o("path",L,[t.title?(e(),i("title",Z,n(t.title),1)):s("",!0)])],8,E))],16,B)}const T=C(U,[["render",j]]);export{T as I,P as N}; -//# sourceMappingURL=ContentCopy-CFmC6HSf.chunk.mjs.map +import{r as u,a as p,t as h,_ as C}from"./_plugin-vue_export-helper-B5bm_3R2.chunk.mjs";import{j as _,E as i,o as e,J as o,F as s,x as y,e as H,f as n,y as d,b,z as f}from"./mdi-BjfN1ic1.chunk.mjs";const k={name:"HelpCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},A=["aria-hidden","aria-label"],v=["fill","width","height"],z={d:"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"},V={key:0};function w(a,l,t,c,g,m){return e(),i("span",f(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon help-circle-icon",role:"img",onClick:l[0]||(l[0]=r=>a.$emit("click",r))}),[(e(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[o("path",z,[t.title?(e(),i("title",V,n(t.title),1)):s("",!0)])],8,v))],16,A)}const x=p(k,[["render",w]]);u();const M={class:"settings-section"},S={class:"settings-section__name"},$=["aria-label","href","title"],I={key:0,class:"settings-section__desc"},N=_({__name:"NcSettingsSection",props:{name:{},description:{default:""},docUrl:{default:""}},setup(a){const l=h("External documentation");return(t,c)=>(e(),i("div",M,[o("h2",S,[H(n(t.name)+" ",1),t.docUrl?(e(),i("a",{key:0,"aria-label":d(l),class:"settings-section__info",href:t.docUrl,rel:"noreferrer nofollow",target:"_blank",title:d(l)},[b(x,{size:20})],8,$)):s("",!0)]),t.description?(e(),i("p",I,n(t.description),1)):s("",!0),y(t.$slots,"default",{},void 0,!0)]))}}),D=p(N,[["__scopeId","data-v-9cedb949"]]),U={name:"ContentCopyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},B=["aria-hidden","aria-label"],E=["fill","width","height"],L={d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"},Z={key:0};function j(a,l,t,c,g,m){return e(),i("span",f(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon content-copy-icon",role:"img",onClick:l[0]||(l[0]=r=>a.$emit("click",r))}),[(e(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[o("path",L,[t.title?(e(),i("title",Z,n(t.title),1)):s("",!0)])],8,E))],16,B)}const P=C(U,[["render",j]]);export{P as I,D as N}; +//# sourceMappingURL=ContentCopy-r6LH1e3H.chunk.mjs.map diff --git a/dist/ContentCopy-CFmC6HSf.chunk.mjs.license b/dist/ContentCopy-r6LH1e3H.chunk.mjs.license similarity index 100% rename from dist/ContentCopy-CFmC6HSf.chunk.mjs.license rename to dist/ContentCopy-r6LH1e3H.chunk.mjs.license diff --git a/dist/ContentCopy-CFmC6HSf.chunk.mjs.map b/dist/ContentCopy-r6LH1e3H.chunk.mjs.map similarity index 99% rename from dist/ContentCopy-CFmC6HSf.chunk.mjs.map rename to dist/ContentCopy-r6LH1e3H.chunk.mjs.map index 73e081f0a031c..cb008b6598787 100644 --- a/dist/ContentCopy-CFmC6HSf.chunk.mjs.map +++ b/dist/ContentCopy-r6LH1e3H.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"ContentCopy-CFmC6HSf.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSection-DYXU4pOK.mjs","../node_modules/vue-material-design-icons/ContentCopy.vue"],"sourcesContent":["import '../assets/NcSettingsSection-f5rBJsKJ.css';\nimport { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, defineComponent, renderSlot, createTextVNode, unref, createVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { r as register, a as t } from \"./_l10n-DrTiip5c.mjs\";\nconst _sfc_main$1 = {\n name: \"HelpCircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon help-circle-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst HelpCircle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nregister();\nconst _hoisted_1 = { class: \"settings-section\" };\nconst _hoisted_2 = { class: \"settings-section__name\" };\nconst _hoisted_3 = [\"aria-label\", \"href\", \"title\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"settings-section__desc\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcSettingsSection\",\n props: {\n name: {},\n description: { default: \"\" },\n docUrl: { default: \"\" }\n },\n setup(__props) {\n const ariaLabel = t(\"External documentation\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"h2\", _hoisted_2, [\n createTextVNode(toDisplayString(_ctx.name) + \" \", 1),\n _ctx.docUrl ? (openBlock(), createElementBlock(\"a\", {\n key: 0,\n \"aria-label\": unref(ariaLabel),\n class: \"settings-section__info\",\n href: _ctx.docUrl,\n rel: \"noreferrer nofollow\",\n target: \"_blank\",\n title: unref(ariaLabel)\n }, [\n createVNode(HelpCircle, { size: 20 })\n ], 8, _hoisted_3)) : createCommentVNode(\"\", true)\n ]),\n _ctx.description ? (openBlock(), createElementBlock(\"p\", _hoisted_4, toDisplayString(_ctx.description), 1)) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]);\n };\n }\n});\nconst NcSettingsSection = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9cedb949\"]]);\nexport {\n NcSettingsSection as N\n};\n//# sourceMappingURL=NcSettingsSection-DYXU4pOK.mjs.map\n","\n\n"],"names":["_sfc_main$1","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","HelpCircle","_export_sfc","register","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_main","defineComponent","__props","ariaLabel","t","createTextVNode","unref","createVNode","renderSlot","NcSettingsSection","_createElementBlock","_mergeProps","_createElementVNode","_openBlock"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file +{"version":3,"file":"ContentCopy-r6LH1e3H.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSection-DYXU4pOK.mjs","../node_modules/vue-material-design-icons/ContentCopy.vue"],"sourcesContent":["import '../assets/NcSettingsSection-f5rBJsKJ.css';\nimport { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, defineComponent, renderSlot, createTextVNode, unref, createVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { r as register, a as t } from \"./_l10n-DrTiip5c.mjs\";\nconst _sfc_main$1 = {\n name: \"HelpCircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon help-circle-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst HelpCircle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nregister();\nconst _hoisted_1 = { class: \"settings-section\" };\nconst _hoisted_2 = { class: \"settings-section__name\" };\nconst _hoisted_3 = [\"aria-label\", \"href\", \"title\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"settings-section__desc\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcSettingsSection\",\n props: {\n name: {},\n description: { default: \"\" },\n docUrl: { default: \"\" }\n },\n setup(__props) {\n const ariaLabel = t(\"External documentation\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"h2\", _hoisted_2, [\n createTextVNode(toDisplayString(_ctx.name) + \" \", 1),\n _ctx.docUrl ? (openBlock(), createElementBlock(\"a\", {\n key: 0,\n \"aria-label\": unref(ariaLabel),\n class: \"settings-section__info\",\n href: _ctx.docUrl,\n rel: \"noreferrer nofollow\",\n target: \"_blank\",\n title: unref(ariaLabel)\n }, [\n createVNode(HelpCircle, { size: 20 })\n ], 8, _hoisted_3)) : createCommentVNode(\"\", true)\n ]),\n _ctx.description ? (openBlock(), createElementBlock(\"p\", _hoisted_4, toDisplayString(_ctx.description), 1)) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]);\n };\n }\n});\nconst NcSettingsSection = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9cedb949\"]]);\nexport {\n NcSettingsSection as N\n};\n//# sourceMappingURL=NcSettingsSection-DYXU4pOK.mjs.map\n","\n\n"],"names":["_sfc_main$1","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","HelpCircle","_export_sfc","register","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_main","defineComponent","__props","ariaLabel","t","createTextVNode","unref","createVNode","renderSlot","NcSettingsSection","_createElementBlock","_mergeProps","_createElementVNode","_openBlock"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist/ContentCopy-CFmC6HSf.chunk.mjs.map.license b/dist/ContentCopy-r6LH1e3H.chunk.mjs.map.license similarity index 100% rename from dist/ContentCopy-CFmC6HSf.chunk.mjs.map.license rename to dist/ContentCopy-r6LH1e3H.chunk.mjs.map.license diff --git a/dist/FilePicker-W-IYpVkn-FlhTGZkn.chunk.mjs b/dist/FilePicker-W-IYpVkn-BGFtdKH5.chunk.mjs similarity index 65% rename from dist/FilePicker-W-IYpVkn-FlhTGZkn.chunk.mjs rename to dist/FilePicker-W-IYpVkn-BGFtdKH5.chunk.mjs index c150ab563ecd0..6591e95f2886c 100644 --- a/dist/FilePicker-W-IYpVkn-FlhTGZkn.chunk.mjs +++ b/dist/FilePicker-W-IYpVkn-BGFtdKH5.chunk.mjs @@ -1,23 +1,23 @@ -import{r as He,E as b,o as g,c as B,F as G,b as $,v as qt,w as k,x as Xe,H as T,G as fe,e as be,f as M,z as ae,O as Re,M as oe,aL as It,aA as pe,ak as Ea,I as ba,g as _a,i as Ie,A as wa,B as $e,C as ya,a5 as Ta,aM as Ia,aN as Qt,a4 as Ce,av as ye,D as Na,ay as Aa,aI as Ca,n as La,a2 as Da,a3 as Zt,q as P,au as Ra,ao as _e,j as me,s as O,az as st,k as Kt,ag as Jt,ai as Ne,y as w,a6 as Oa,l as ea,p as Sa,N as ke,m as ka,u as Nt,R as Fa,aO as $a,aP as Pa,aQ as Ba,aR as Ma,at as xa,aS as Ua,aT as za,aU as Ga,aV as At,aW as Va,aX as Ha,X as Xa}from"./mdi-B9XVyi7B.chunk.mjs";import{j as lt,M as ja,O as A,N as Wa,P as Te,s as ct}from"./index-JpgrUA2Z-ClfXhQGo.chunk.mjs";import{N as Ct}from"./index-DrsucJpX.chunk.mjs";import{d as Ya,r as qa,B as je}from"./string_decoder-mL5xNZ9K.chunk.mjs";import{a as Pe,e as Qa,b as Za,d as ut}from"./_plugin-vue_export-helper-CDPKodk-.chunk.mjs";import{a as Ka,u as Ja,_ as ei}from"./index-DGc3S-5s.chunk.mjs";import{b as we,N as ta}from"./NcNoteCard-CVhtNL04-BSciYEDO.chunk.mjs";import{N as aa}from"./NcCheckboxRadioSwitch-BCSKF7Tk-bH1fDMyQ.chunk.mjs";import{S as Lt}from"./ShareType-suoNfd7y.chunk.mjs";import{P as ti,a as ai}from"./NcBreadcrumbs-DYfGaSjT-BuhDgaIS.chunk.mjs";import{c as ia}from"./index-BOuI_nzB.chunk.mjs";import{N as Dt,c as Rt,a as Ot}from"./NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs";import{N as ii}from"./NcSelect-Czzsi3P_-DAfF4XPJ.chunk.mjs";import{_ as ri}from"./TrashCanOutline-u_08oBcy.chunk.mjs";import"./PencilOutline-BWbwYeLs.chunk.mjs";import"./NcPasswordField-djttkA5Q-BxuGevvX.chunk.mjs";import"./NcInputField-Bwsh2aHY-kbXSi5f0.chunk.mjs";const ni={name:"ChevronRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},si=["aria-hidden","aria-label"],oi=["fill","width","height"],li={d:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"},ci={key:0};function ui(e,i,a,n,c,m){return g(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon chevron-right-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(g(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",li,[a.title?(g(),b("title",ci,M(a.title),1)):G("",!0)])],8,oi))],16,si)}const di=Pe(ni,[["render",ui]]),pi={name:"NcBreadcrumb",components:{NcActions:lt,ChevronRight:di,NcButton:we},inheritAttrs:!1,props:{name:{type:String,required:!0},title:{type:String,default:null},to:{type:[String,Object],default:void 0},href:{type:String,default:void 0},icon:{type:String,default:""},forceIconText:{type:Boolean,default:!1},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1},class:{type:[String,Array,Object],default:""}},emits:["dragenter","dragleave","dropped","update:open"],setup(){const e=Qa();return{actionsContainer:`.vue-crumb[data-crumb-id="${e}"]`,crumbId:e}},data(){return{hovering:!1}},computed:{linkAttributes(){return this.to?{to:this.to,...this.$attrs}:this.href?{href:this.href,...this.$attrs}:this.$attrs}},methods:{onOpenChange(e){this.$emit("update:open",e)},dropped(e){return this.disableDrop||(this.$emit("dropped",e,this.to||this.href),this.$parent.$emit("dropped",e,this.to||this.href),this.hovering=!1),!1},dragEnter(e){this.$emit("dragenter",e),!this.disableDrop&&(this.hovering=!0)},dragLeave(e){this.$emit("dragleave",e),!this.disableDrop&&(e.target.contains(e.relatedTarget)||this.$refs.crumb.contains(e.relatedTarget)||(this.hovering=!1))}}},mi=["data-crumb-id"];function hi(e,i,a,n,c,m){const u=He("NcButton"),f=He("NcActions"),d=He("ChevronRight");return g(),b("li",{ref:"crumb",class:fe(["vue-crumb",[{"vue-crumb--hovered":c.hovering},e.$props.class]]),"data-crumb-id":n.crumbId,draggable:"false",onDragstart:Re(()=>{},["prevent"]),onDrop:i[0]||(i[0]=Re((...p)=>m.dropped&&m.dropped(...p),["prevent"])),onDragover:Re(()=>{},["prevent"]),onDragenter:i[1]||(i[1]=(...p)=>m.dragEnter&&m.dragEnter(...p)),onDragleave:i[2]||(i[2]=(...p)=>m.dragLeave&&m.dragLeave(...p))},[(a.name||a.icon||e.$slots.icon)&&!e.$slots.default?(g(),B(u,ae({key:0,"aria-label":a.icon?a.name:void 0,variant:"tertiary"},m.linkAttributes),qt({_:2},[e.$slots.icon||a.icon?{name:"icon",fn:k(()=>[Xe(e.$slots,"icon",{},()=>[T("span",{class:fe([a.icon,"icon"])},null,2)],!0)]),key:"0"}:void 0,!(e.$slots.icon||a.icon)||a.forceIconText?{name:"default",fn:k(()=>[be(M(a.name),1)]),key:"1"}:void 0]),1040,["aria-label"])):G("",!0),e.$slots.default?(g(),B(f,{key:1,ref:"actions",container:n.actionsContainer,"force-menu":a.forceMenu,"force-name":"","menu-name":a.name,open:a.open,title:a.title,variant:"tertiary","onUpdate:open":m.onOpenChange},{icon:k(()=>[Xe(e.$slots,"menu-icon",{},void 0,!0)]),default:k(()=>[Xe(e.$slots,"default",{},void 0,!0)]),_:3},8,["container","force-menu","menu-name","open","title","onUpdate:open"])):G("",!0),$(d,{class:"vue-crumb__separator",size:20})],42,mi)}const Fe=Pe(pi,[["render",hi],["__scopeId","data-v-28ef52a4"]]),fi={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},gi=["aria-hidden","aria-label"],vi=["fill","width","height"],Ei={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},bi={key:0};function _i(e,i,a,n,c,m){return g(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(g(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",Ei,[a.title?(g(),b("title",bi,M(a.title),1)):G("",!0)])],8,vi))],16,gi)}const St=Pe(fi,[["render",_i]]),Y="vue-crumb",wi={name:"NcBreadcrumbs",components:{NcActions:lt,NcActionButton:Ot,NcActionRouter:Rt,NcActionLink:Dt,NcBreadcrumb:Fe,IconFolder:St},props:{rootIcon:{type:String,default:"icon-home"},ariaLabel:{type:String,default:null}},emits:["dropped"],data(){return{hiddenIndices:[],menuBreadcrumbProps:{name:"",forceMenu:!0,disableDrop:!0,open:!1},breadcrumbsRefs:[]}},created(){window.addEventListener("resize",Ya(()=>{this.handleWindowResize()},100)),ba("navigation-toggled",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.$nextTick(()=>{this.hideCrumbs()})},beforeUnmount(){window.removeEventListener("resize",this.handleWindowResize),Ea("navigation-toggled",this.delayedResize)},methods:{closeActions(e){this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},async delayedResize(){await this.$nextTick(),this.handleWindowResize()},handleWindowResize(){if(!this.$refs.container)return;const e=this.breadcrumbsRefs.length,i=[],a=this.$refs.container.offsetWidth;let n=this.getTotalWidth();this.$refs.breadcrumb__actions&&(n+=this.$refs.breadcrumb__actions.offsetWidth);let c=n-a;c+=c>0?64:0;let m=0;const u=Math.floor(e/2);for(;c>0&&mf-d))||(this.hiddenIndices=i)},arraysEqual(e,i){if(e.length!==i.length)return!1;if(e===i)return!0;if(e===null||i===null)return!1;for(let a=0;ae+this.getWidth(i.$el,a===this.breadcrumbsRefs.length-1),0)},getWidth(e,i){if(!e?.classList)return 0;const a=e.classList.contains(`${Y}--hidden`);e.style.minWidth="auto",i&&(e.style.maxWidth="210px"),e.classList.remove(`${Y}--hidden`);const n=e.offsetWidth;return a&&e.classList.add(`${Y}--hidden`),e.style.minWidth="",e.style.maxWidth="",n},preventDefault(e){return e.preventDefault&&e.preventDefault(),!1},dragStart(e){return this.preventDefault(e)},dropped(e,i,a){a||this.$emit("dropped",e,i),this.menuBreadcrumbProps.open=!1;const n=document.querySelectorAll(`.${Y}`);for(const c of n)c.classList.remove(`${Y}--hovered`);return this.preventDefault(e)},dragOver(e){return this.preventDefault(e)},dragEnter(e,i){if(!i&&e.target.closest){const a=e.target.closest(`.${Y}`);if(a.classList&&a.classList.contains(Y)){const n=document.querySelectorAll(`.${Y}`);for(const c of n)c.classList.remove(`${Y}--hovered`);a.classList.add(`${Y}--hovered`)}}},dragLeave(e,i){if(!i&&!e.target.contains(e.relatedTarget)&&e.target.closest){const a=e.target.closest(`.${Y}`);if(a.contains(e.relatedTarget))return;a.classList&&a.classList.contains(Y)&&a.classList.remove(`${Y}--hovered`)}},hideCrumbs(){this.breadcrumbsRefs.forEach((e,i)=>{e?.$el?.classList&&(this.hiddenIndices.includes(i)?e.$el.classList.add(`${Y}--hidden`):e.$el.classList.remove(`${Y}--hidden`))})},isBreadcrumb(e){return e?.type?.name==="NcBreadcrumb"}},render(){let e=[];if(this.$slots.default?.().forEach(c=>{if(this.isBreadcrumb(c)){e.push(c);return}c?.type===oe&&c?.children?.forEach?.(m=>{this.isBreadcrumb(m)&&e.push(m)})}),e.length===0)return;e[0]=It(e[0],{icon:this.rootIcon,ref:"breadcrumbs"});const i=[];e=e.map((c,m)=>It(c,{ref:u=>{i[m]=u}}));const a=[...e];this.hiddenIndices.length&&a.splice(Math.round(e.length/2),0,pe(Fe,{class:"dropdown",...this.menuBreadcrumbProps,"aria-hidden":!0,ref:"actionsBreadcrumb",key:"actions-breadcrumb-1",onDragenter:()=>{this.menuBreadcrumbProps.open=!0},onDragleave:this.closeActions,"onUpdate:open":c=>{this.menuBreadcrumbProps.open=c}},{default:()=>this.hiddenIndices.filter(c=>c<=e.length-1).map(c=>{const m=e[c],{to:u,href:f,disableDrop:d,name:p,...l}=m.props;delete l.ref;let v=Ot,E="";f&&(v=Dt,E=f),u&&(v=Rt,E=u);const I=pe(St,{size:20});return pe(v,{...l,class:Y,href:f||null,to:u||null,draggable:!1,onDragstart:this.dragStart,onDrop:V=>this.dropped(V,E,d),onDragover:this.dragOver,onDragenter:V=>this.dragEnter(V,d),onDragleave:V=>this.dragLeave(V,d)},{default:()=>p,icon:()=>I})})}));const n=[pe("nav",{"aria-label":this.ariaLabel},[pe("ul",{class:"breadcrumb__crumbs"},[a])])];return ja(this.$slots.actions?.())&&n.push(pe("div",{class:"breadcrumb__actions",ref:"breadcrumb__actions"},this.$slots.actions?.())),this.breadcrumbsRefs=i,pe("div",{class:["breadcrumb",{"breadcrumb--collapsed":this.hiddenIndices.length===e.length-2}],ref:"container"},n)}},yi=Pe(wi,[["__scopeId","data-v-af2b1226"]]);function ue(e,i,a){return i in e?Object.defineProperty(e,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[i]=a,e}function kt(e,i,a){Ti(e,i),i.set(e,a)}function Ti(e,i){if(i.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function j(e,i){var a=ra(e,i,"get");return Ii(e,a)}function Ii(e,i){return i.get?i.get.call(e):i.value}function Ft(e,i,a){var n=ra(e,i,"set");return Ni(e,n,a),a}function ra(e,i,a){if(!i.has(e))throw new TypeError("attempted to "+a+" private field on non-instance");return i.get(e)}function Ni(e,i,a){if(i.set)i.set.call(e,a);else{if(!i.writable)throw new TypeError("attempted to set read only private field");i.value=a}}var Ai=typeof Symbol<"u"?Symbol.toStringTag:"@@toStringTag",q=new WeakMap,ve=new WeakMap;class Be{constructor(i){var{executor:a=()=>{},internals:n=pt(),promise:c=new Promise((m,u)=>a(m,u,f=>{n.onCancelList.push(f)}))}=i;kt(this,q,{writable:!0,value:void 0}),kt(this,ve,{writable:!0,value:void 0}),ue(this,Ai,"CancelablePromise"),this.cancel=this.cancel.bind(this),Ft(this,q,n),Ft(this,ve,c||new Promise((m,u)=>a(m,u,f=>{n.onCancelList.push(f)})))}then(i,a){return Oe(j(this,ve).then(Le(i,j(this,q)),Le(a,j(this,q))),j(this,q))}catch(i){return Oe(j(this,ve).catch(Le(i,j(this,q))),j(this,q))}finally(i,a){return a&&j(this,q).onCancelList.push(i),Oe(j(this,ve).finally(Le(()=>{if(i)return a&&(j(this,q).onCancelList=j(this,q).onCancelList.filter(n=>n!==i)),i()},j(this,q))),j(this,q))}cancel(){j(this,q).isCanceled=!0;var i=j(this,q).onCancelList;j(this,q).onCancelList=[];for(var a of i)if(typeof a=="function")try{a()}catch(n){console.error(n)}}isCanceled(){return j(this,q).isCanceled===!0}}class ie extends Be{constructor(i){super({executor:i})}}ue(ie,"all",function(e){return De(e,Promise.all(e))}),ue(ie,"allSettled",function(e){return De(e,Promise.allSettled(e))}),ue(ie,"any",function(e){return De(e,Promise.any(e))}),ue(ie,"race",function(e){return De(e,Promise.race(e))}),ue(ie,"resolve",function(e){return $t(Promise.resolve(e))}),ue(ie,"reject",function(e){return $t(Promise.reject(e))}),ue(ie,"isCancelable",dt);function $t(e){return Oe(e,pt())}function dt(e){return e instanceof ie||e instanceof Be}function Le(e,i){if(e)return a=>{if(!i.isCanceled){var n=e(a);return dt(n)&&i.onCancelList.push(n.cancel),n}return a}}function Oe(e,i){return new Be({internals:i,promise:e})}function De(e,i){var a=pt();return a.onCancelList.push(()=>{for(var n of e)dt(n)&&n.cancel()}),new Be({internals:a,promise:i})}function pt(){return{isCanceled:!1,onCancelList:[]}}const Ci=_a().setApp("@nextcloud/files").detectUser().build();var le=(e=>(e.Folder="folder",e.File="file",e))(le||{}),ee=(e=>(e[e.NONE=0]="NONE",e[e.CREATE=4]="CREATE",e[e.READ=1]="READ",e[e.UPDATE=2]="UPDATE",e[e.DELETE=8]="DELETE",e[e.SHARE=16]="SHARE",e[e.ALL=31]="ALL",e))(ee||{});const na=function(e,i){return e.match(i)!==null},ce=(e,i)=>{if(e.id&&typeof e.id!="number")throw new Error("Invalid id type of value");if(!e.source)throw new Error("Missing mandatory source");try{new URL(e.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!e.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(e.displayname&&typeof e.displayname!="string")throw new Error("Invalid displayname type");if(e.mtime&&!(e.mtime instanceof Date))throw new Error("Invalid mtime type");if(e.crtime&&!(e.crtime instanceof Date))throw new Error("Invalid crtime type");if(!e.mime||typeof e.mime!="string"||!e.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in e&&typeof e.size!="number"&&e.size!==void 0)throw new Error("Invalid size type");if("permissions"in e&&e.permissions!==void 0&&!(typeof e.permissions=="number"&&e.permissions>=ee.NONE&&e.permissions<=ee.ALL))throw new Error("Invalid permissions");if(e.owner&&e.owner!==null&&typeof e.owner!="string")throw new Error("Invalid owner type");if(e.attributes&&typeof e.attributes!="object")throw new Error("Invalid attributes type");if(e.root&&typeof e.root!="string")throw new Error("Invalid root type");if(e.root&&!e.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(e.root&&!e.source.includes(e.root))throw new Error("Root must be part of the source");if(e.root&&na(e.source,i)){const a=e.source.match(i)[0];if(!e.source.includes(ye(a,e.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(e.status&&!Object.values(mt).includes(e.status))throw new Error("Status must be a valid NodeStatus")};var mt=(e=>(e.NEW="new",e.FAILED="failed",e.LOADING="loading",e.LOCKED="locked",e))(mt||{});class Me{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;readonlyAttributes=Object.entries(Object.getOwnPropertyDescriptors(Me.prototype)).filter(i=>typeof i[1].get=="function"&&i[0]!=="__proto__").map(i=>i[0]);handler={set:(i,a,n)=>this.readonlyAttributes.includes(a)?!1:Reflect.set(i,a,n),deleteProperty:(i,a)=>this.readonlyAttributes.includes(a)?!1:Reflect.deleteProperty(i,a),get:(i,a,n)=>this.readonlyAttributes.includes(a)?(Ci.warn(`Accessing "Node.attributes.${a}" is deprecated, access it directly on the Node instance.`),Reflect.get(this,a)):Reflect.get(i,a,n)};constructor(i,a){i.mime||(i.mime="application/octet-stream"),ce(i,a||this._knownDavService),this._data={displayname:i.attributes?.displayname,...i,attributes:{}},this._attributes=new Proxy(this._data.attributes,this.handler),this.update(i.attributes??{}),a&&(this._knownDavService=a)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:i}=new URL(this.source);return i+Ta(this.source.slice(i.length))}get basename(){return Ia(this.source)}get displayname(){return this._data.displayname||this.basename}set displayname(i){ce({...this._data,displayname:i},this._knownDavService),this._data.displayname=i}get extension(){return Qt(this.source)}get dirname(){if(this.root){let a=this.source;this.isDavResource&&(a=a.split(this._knownDavService).pop());const n=a.indexOf(this.root),c=this.root.replace(/\/$/,"");return Ce(a.slice(n+c.length)||"/")}const i=new URL(this.source);return Ce(i.pathname)}get mime(){return this._data.mime||"application/octet-stream"}set mime(i){i??="application/octet-stream",ce({...this._data,mime:i},this._knownDavService),this._data.mime=i}get mtime(){return this._data.mtime}set mtime(i){ce({...this._data,mtime:i},this._knownDavService),this._data.mtime=i}get crtime(){return this._data.crtime}get size(){return this._data.size}set size(i){ce({...this._data,size:i},this._knownDavService),this.updateMtime(),this._data.size=i}get attributes(){return this._attributes}get permissions(){return this.owner===null&&!this.isDavResource?ee.READ:this._data.permissions!==void 0?this._data.permissions:ee.NONE}set permissions(i){ce({...this._data,permissions:i},this._knownDavService),this.updateMtime(),this._data.permissions=i}get owner(){return this.isDavResource?this._data.owner:null}get isDavResource(){return na(this.source,this._knownDavService)}get isDavRessource(){return this.isDavResource}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavResource&&Ce(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let i=this.source;this.isDavResource&&(i=i.split(this._knownDavService).pop());const a=i.indexOf(this.root),n=this.root.replace(/\/$/,"");return i.slice(a+n.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id}get status(){return this._data?.status}set status(i){ce({...this._data,status:i},this._knownDavService),this._data.status=i}get data(){return structuredClone(this._data)}move(i){ce({...this._data,source:i},this._knownDavService);const a=this.basename;this._data.source=i,this.displayname===a&&this.basename!==a&&(this.displayname=this.basename)}rename(i){if(i.includes("/"))throw new Error("Invalid basename");this.move(Ce(this.source)+"/"+i)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}update(i){for(const[a,n]of Object.entries(i))try{n===void 0?delete this.attributes[a]:this.attributes[a]=n}catch(c){if(c instanceof TypeError)continue;throw c}}}class ht extends Me{get type(){return le.File}clone(){return new ht(this.data)}}class ft extends Me{constructor(i){super({...i,mime:"httpd/unix-directory"})}get type(){return le.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}clone(){return new ft(this.data)}}const Li=function(e=""){let i=ee.NONE;return e&&((e.includes("C")||e.includes("K"))&&(i|=ee.CREATE),e.includes("G")&&(i|=ee.READ),(e.includes("W")||e.includes("N")||e.includes("V"))&&(i|=ee.UPDATE),e.includes("D")&&(i|=ee.DELETE),e.includes("R")&&(i|=ee.SHARE)),i},Di=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],Ri={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},gt=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...Di]),window._nc_dav_properties.map(e=>`<${e} />`).join(" ")},vt=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...Ri}),Object.keys(window._nc_dav_namespaces).map(e=>`xmlns:${e}="${window._nc_dav_namespaces?.[e]}"`).join(" ")},sa=function(){return` - +import{r as He,E as b,o as v,c as B,F as G,b as $,v as qt,w as k,x as Xe,J as T,G as fe,e as be,f as M,z as ae,Q as Re,K as oe,aM as It,aB as pe,al as Ea,M as ba,g as _a,i as Ie,A as wa,B as $e,C as ya,a7 as Ta,aN as Ia,aO as Qt,a6 as Ce,aw as ye,D as Na,az as Aa,aJ as Ca,n as La,a4 as Da,a5 as Zt,q as P,av as Ra,ap as _e,j as me,s as O,aA as st,k as Kt,ai as Jt,H as Ne,y as w,a8 as Oa,l as ea,p as Sa,L as ke,m as ka,u as Nt,T as Fa,I as $a,aP as Pa,aQ as Ba,aR as Ma,au as xa,aS as Ua,aT as za,aU as Ga,aV as At,aW as Va,aX as Ha,Z as Xa}from"./mdi-BjfN1ic1.chunk.mjs";import{j as lt,M as ja,O as A,N as Wa,P as Te,s as ct}from"./index-JpgrUA2Z-D-NklW1G.chunk.mjs";import{N as Ct}from"./index-CRrrvPnX.chunk.mjs";import{d as Ya,r as qa,B as je}from"./string_decoder-mL5xNZ9K.chunk.mjs";import{a as Pe,e as Qa,b as Za,d as ut}from"./_plugin-vue_export-helper-B5bm_3R2.chunk.mjs";import{a as Ka,u as Ja,_ as ei}from"./index-BIixcnAg.chunk.mjs";import{c as we,N as ta}from"./NcNoteCard-CVhtNL04-CL6uGjhw.chunk.mjs";import{N as aa}from"./NcCheckboxRadioSwitch-BCSKF7Tk-CJ0uttlr.chunk.mjs";import{S as Lt}from"./ShareType-suoNfd7y.chunk.mjs";import{P as ti,a as ai}from"./NcBreadcrumbs-DYfGaSjT-D9wHBh7L.chunk.mjs";import{c as ia}from"./index-E0dOMeMP.chunk.mjs";import{N as Dt,c as Rt,a as Ot}from"./NcActionRouter-oT-YU_jf-3XNLVsNJ.chunk.mjs";import{N as ii}from"./NcSelect-Czzsi3P_-BQlI4icE.chunk.mjs";import{_ as ri}from"./TrashCanOutline-BhnCuc8B.chunk.mjs";import"./PencilOutline-DvuO9fyo.chunk.mjs";import"./NcPasswordField-djttkA5Q-BcZFsl0T.chunk.mjs";import"./NcInputField-Bwsh2aHY-D1wb04Qy.chunk.mjs";const ni={name:"ChevronRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},si=["aria-hidden","aria-label"],oi=["fill","width","height"],li={d:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"},ci={key:0};function ui(e,i,a,n,c,m){return v(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon chevron-right-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",li,[a.title?(v(),b("title",ci,M(a.title),1)):G("",!0)])],8,oi))],16,si)}const di=Pe(ni,[["render",ui]]),pi={name:"NcBreadcrumb",components:{NcActions:lt,ChevronRight:di,NcButton:we},inheritAttrs:!1,props:{name:{type:String,required:!0},title:{type:String,default:null},to:{type:[String,Object],default:void 0},href:{type:String,default:void 0},icon:{type:String,default:""},forceIconText:{type:Boolean,default:!1},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1},class:{type:[String,Array,Object],default:""}},emits:["dragenter","dragleave","dropped","update:open"],setup(){const e=Qa();return{actionsContainer:`.vue-crumb[data-crumb-id="${e}"]`,crumbId:e}},data(){return{hovering:!1}},computed:{linkAttributes(){return this.to?{to:this.to,...this.$attrs}:this.href?{href:this.href,...this.$attrs}:this.$attrs}},methods:{onOpenChange(e){this.$emit("update:open",e)},dropped(e){return this.disableDrop||(this.$emit("dropped",e,this.to||this.href),this.$parent.$emit("dropped",e,this.to||this.href),this.hovering=!1),!1},dragEnter(e){this.$emit("dragenter",e),!this.disableDrop&&(this.hovering=!0)},dragLeave(e){this.$emit("dragleave",e),!this.disableDrop&&(e.target.contains(e.relatedTarget)||this.$refs.crumb.contains(e.relatedTarget)||(this.hovering=!1))}}},mi=["data-crumb-id"];function hi(e,i,a,n,c,m){const u=He("NcButton"),f=He("NcActions"),d=He("ChevronRight");return v(),b("li",{ref:"crumb",class:fe(["vue-crumb",[{"vue-crumb--hovered":c.hovering},e.$props.class]]),"data-crumb-id":n.crumbId,draggable:"false",onDragstart:Re(()=>{},["prevent"]),onDrop:i[0]||(i[0]=Re((...p)=>m.dropped&&m.dropped(...p),["prevent"])),onDragover:Re(()=>{},["prevent"]),onDragenter:i[1]||(i[1]=(...p)=>m.dragEnter&&m.dragEnter(...p)),onDragleave:i[2]||(i[2]=(...p)=>m.dragLeave&&m.dragLeave(...p))},[(a.name||a.icon||e.$slots.icon)&&!e.$slots.default?(v(),B(u,ae({key:0,"aria-label":a.icon?a.name:void 0,variant:"tertiary"},m.linkAttributes),qt({_:2},[e.$slots.icon||a.icon?{name:"icon",fn:k(()=>[Xe(e.$slots,"icon",{},()=>[T("span",{class:fe([a.icon,"icon"])},null,2)],!0)]),key:"0"}:void 0,!(e.$slots.icon||a.icon)||a.forceIconText?{name:"default",fn:k(()=>[be(M(a.name),1)]),key:"1"}:void 0]),1040,["aria-label"])):G("",!0),e.$slots.default?(v(),B(f,{key:1,ref:"actions",container:n.actionsContainer,"force-menu":a.forceMenu,"force-name":"","menu-name":a.name,open:a.open,title:a.title,variant:"tertiary","onUpdate:open":m.onOpenChange},{icon:k(()=>[Xe(e.$slots,"menu-icon",{},void 0,!0)]),default:k(()=>[Xe(e.$slots,"default",{},void 0,!0)]),_:3},8,["container","force-menu","menu-name","open","title","onUpdate:open"])):G("",!0),$(d,{class:"vue-crumb__separator",size:20})],42,mi)}const Fe=Pe(pi,[["render",hi],["__scopeId","data-v-28ef52a4"]]),fi={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},vi=["aria-hidden","aria-label"],gi=["fill","width","height"],Ei={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},bi={key:0};function _i(e,i,a,n,c,m){return v(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",Ei,[a.title?(v(),b("title",bi,M(a.title),1)):G("",!0)])],8,gi))],16,vi)}const St=Pe(fi,[["render",_i]]),Y="vue-crumb",wi={name:"NcBreadcrumbs",components:{NcActions:lt,NcActionButton:Ot,NcActionRouter:Rt,NcActionLink:Dt,NcBreadcrumb:Fe,IconFolder:St},props:{rootIcon:{type:String,default:"icon-home"},ariaLabel:{type:String,default:null}},emits:["dropped"],data(){return{hiddenIndices:[],menuBreadcrumbProps:{name:"",forceMenu:!0,disableDrop:!0,open:!1},breadcrumbsRefs:[]}},created(){window.addEventListener("resize",Ya(()=>{this.handleWindowResize()},100)),ba("navigation-toggled",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.$nextTick(()=>{this.hideCrumbs()})},beforeUnmount(){window.removeEventListener("resize",this.handleWindowResize),Ea("navigation-toggled",this.delayedResize)},methods:{closeActions(e){this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},async delayedResize(){await this.$nextTick(),this.handleWindowResize()},handleWindowResize(){if(!this.$refs.container)return;const e=this.breadcrumbsRefs.length,i=[],a=this.$refs.container.offsetWidth;let n=this.getTotalWidth();this.$refs.breadcrumb__actions&&(n+=this.$refs.breadcrumb__actions.offsetWidth);let c=n-a;c+=c>0?64:0;let m=0;const u=Math.floor(e/2);for(;c>0&&mf-d))||(this.hiddenIndices=i)},arraysEqual(e,i){if(e.length!==i.length)return!1;if(e===i)return!0;if(e===null||i===null)return!1;for(let a=0;ae+this.getWidth(i.$el,a===this.breadcrumbsRefs.length-1),0)},getWidth(e,i){if(!e?.classList)return 0;const a=e.classList.contains(`${Y}--hidden`);e.style.minWidth="auto",i&&(e.style.maxWidth="210px"),e.classList.remove(`${Y}--hidden`);const n=e.offsetWidth;return a&&e.classList.add(`${Y}--hidden`),e.style.minWidth="",e.style.maxWidth="",n},preventDefault(e){return e.preventDefault&&e.preventDefault(),!1},dragStart(e){return this.preventDefault(e)},dropped(e,i,a){a||this.$emit("dropped",e,i),this.menuBreadcrumbProps.open=!1;const n=document.querySelectorAll(`.${Y}`);for(const c of n)c.classList.remove(`${Y}--hovered`);return this.preventDefault(e)},dragOver(e){return this.preventDefault(e)},dragEnter(e,i){if(!i&&e.target.closest){const a=e.target.closest(`.${Y}`);if(a.classList&&a.classList.contains(Y)){const n=document.querySelectorAll(`.${Y}`);for(const c of n)c.classList.remove(`${Y}--hovered`);a.classList.add(`${Y}--hovered`)}}},dragLeave(e,i){if(!i&&!e.target.contains(e.relatedTarget)&&e.target.closest){const a=e.target.closest(`.${Y}`);if(a.contains(e.relatedTarget))return;a.classList&&a.classList.contains(Y)&&a.classList.remove(`${Y}--hovered`)}},hideCrumbs(){this.breadcrumbsRefs.forEach((e,i)=>{e?.$el?.classList&&(this.hiddenIndices.includes(i)?e.$el.classList.add(`${Y}--hidden`):e.$el.classList.remove(`${Y}--hidden`))})},isBreadcrumb(e){return e?.type?.name==="NcBreadcrumb"}},render(){let e=[];if(this.$slots.default?.().forEach(c=>{if(this.isBreadcrumb(c)){e.push(c);return}c?.type===oe&&c?.children?.forEach?.(m=>{this.isBreadcrumb(m)&&e.push(m)})}),e.length===0)return;e[0]=It(e[0],{icon:this.rootIcon,ref:"breadcrumbs"});const i=[];e=e.map((c,m)=>It(c,{ref:u=>{i[m]=u}}));const a=[...e];this.hiddenIndices.length&&a.splice(Math.round(e.length/2),0,pe(Fe,{class:"dropdown",...this.menuBreadcrumbProps,"aria-hidden":!0,ref:"actionsBreadcrumb",key:"actions-breadcrumb-1",onDragenter:()=>{this.menuBreadcrumbProps.open=!0},onDragleave:this.closeActions,"onUpdate:open":c=>{this.menuBreadcrumbProps.open=c}},{default:()=>this.hiddenIndices.filter(c=>c<=e.length-1).map(c=>{const m=e[c],{to:u,href:f,disableDrop:d,name:p,...l}=m.props;delete l.ref;let g=Ot,E="";f&&(g=Dt,E=f),u&&(g=Rt,E=u);const I=pe(St,{size:20});return pe(g,{...l,class:Y,href:f||null,to:u||null,draggable:!1,onDragstart:this.dragStart,onDrop:V=>this.dropped(V,E,d),onDragover:this.dragOver,onDragenter:V=>this.dragEnter(V,d),onDragleave:V=>this.dragLeave(V,d)},{default:()=>p,icon:()=>I})})}));const n=[pe("nav",{"aria-label":this.ariaLabel},[pe("ul",{class:"breadcrumb__crumbs"},[a])])];return ja(this.$slots.actions?.())&&n.push(pe("div",{class:"breadcrumb__actions",ref:"breadcrumb__actions"},this.$slots.actions?.())),this.breadcrumbsRefs=i,pe("div",{class:["breadcrumb",{"breadcrumb--collapsed":this.hiddenIndices.length===e.length-2}],ref:"container"},n)}},yi=Pe(wi,[["__scopeId","data-v-af2b1226"]]);function ue(e,i,a){return i in e?Object.defineProperty(e,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[i]=a,e}function kt(e,i,a){Ti(e,i),i.set(e,a)}function Ti(e,i){if(i.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function j(e,i){var a=ra(e,i,"get");return Ii(e,a)}function Ii(e,i){return i.get?i.get.call(e):i.value}function Ft(e,i,a){var n=ra(e,i,"set");return Ni(e,n,a),a}function ra(e,i,a){if(!i.has(e))throw new TypeError("attempted to "+a+" private field on non-instance");return i.get(e)}function Ni(e,i,a){if(i.set)i.set.call(e,a);else{if(!i.writable)throw new TypeError("attempted to set read only private field");i.value=a}}var Ai=typeof Symbol<"u"?Symbol.toStringTag:"@@toStringTag",q=new WeakMap,ge=new WeakMap;class Be{constructor(i){var{executor:a=()=>{},internals:n=pt(),promise:c=new Promise((m,u)=>a(m,u,f=>{n.onCancelList.push(f)}))}=i;kt(this,q,{writable:!0,value:void 0}),kt(this,ge,{writable:!0,value:void 0}),ue(this,Ai,"CancelablePromise"),this.cancel=this.cancel.bind(this),Ft(this,q,n),Ft(this,ge,c||new Promise((m,u)=>a(m,u,f=>{n.onCancelList.push(f)})))}then(i,a){return Oe(j(this,ge).then(Le(i,j(this,q)),Le(a,j(this,q))),j(this,q))}catch(i){return Oe(j(this,ge).catch(Le(i,j(this,q))),j(this,q))}finally(i,a){return a&&j(this,q).onCancelList.push(i),Oe(j(this,ge).finally(Le(()=>{if(i)return a&&(j(this,q).onCancelList=j(this,q).onCancelList.filter(n=>n!==i)),i()},j(this,q))),j(this,q))}cancel(){j(this,q).isCanceled=!0;var i=j(this,q).onCancelList;j(this,q).onCancelList=[];for(var a of i)if(typeof a=="function")try{a()}catch(n){console.error(n)}}isCanceled(){return j(this,q).isCanceled===!0}}class ie extends Be{constructor(i){super({executor:i})}}ue(ie,"all",function(e){return De(e,Promise.all(e))}),ue(ie,"allSettled",function(e){return De(e,Promise.allSettled(e))}),ue(ie,"any",function(e){return De(e,Promise.any(e))}),ue(ie,"race",function(e){return De(e,Promise.race(e))}),ue(ie,"resolve",function(e){return $t(Promise.resolve(e))}),ue(ie,"reject",function(e){return $t(Promise.reject(e))}),ue(ie,"isCancelable",dt);function $t(e){return Oe(e,pt())}function dt(e){return e instanceof ie||e instanceof Be}function Le(e,i){if(e)return a=>{if(!i.isCanceled){var n=e(a);return dt(n)&&i.onCancelList.push(n.cancel),n}return a}}function Oe(e,i){return new Be({internals:i,promise:e})}function De(e,i){var a=pt();return a.onCancelList.push(()=>{for(var n of e)dt(n)&&n.cancel()}),new Be({internals:a,promise:i})}function pt(){return{isCanceled:!1,onCancelList:[]}}const Ci=_a().setApp("@nextcloud/files").detectUser().build();var le=(e=>(e.Folder="folder",e.File="file",e))(le||{}),ee=(e=>(e[e.NONE=0]="NONE",e[e.CREATE=4]="CREATE",e[e.READ=1]="READ",e[e.UPDATE=2]="UPDATE",e[e.DELETE=8]="DELETE",e[e.SHARE=16]="SHARE",e[e.ALL=31]="ALL",e))(ee||{});const na=function(e,i){return e.match(i)!==null},ce=(e,i)=>{if(e.id&&typeof e.id!="number")throw new Error("Invalid id type of value");if(!e.source)throw new Error("Missing mandatory source");try{new URL(e.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!e.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(e.displayname&&typeof e.displayname!="string")throw new Error("Invalid displayname type");if(e.mtime&&!(e.mtime instanceof Date))throw new Error("Invalid mtime type");if(e.crtime&&!(e.crtime instanceof Date))throw new Error("Invalid crtime type");if(!e.mime||typeof e.mime!="string"||!e.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in e&&typeof e.size!="number"&&e.size!==void 0)throw new Error("Invalid size type");if("permissions"in e&&e.permissions!==void 0&&!(typeof e.permissions=="number"&&e.permissions>=ee.NONE&&e.permissions<=ee.ALL))throw new Error("Invalid permissions");if(e.owner&&e.owner!==null&&typeof e.owner!="string")throw new Error("Invalid owner type");if(e.attributes&&typeof e.attributes!="object")throw new Error("Invalid attributes type");if(e.root&&typeof e.root!="string")throw new Error("Invalid root type");if(e.root&&!e.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(e.root&&!e.source.includes(e.root))throw new Error("Root must be part of the source");if(e.root&&na(e.source,i)){const a=e.source.match(i)[0];if(!e.source.includes(ye(a,e.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(e.status&&!Object.values(mt).includes(e.status))throw new Error("Status must be a valid NodeStatus")};var mt=(e=>(e.NEW="new",e.FAILED="failed",e.LOADING="loading",e.LOCKED="locked",e))(mt||{});class Me{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;readonlyAttributes=Object.entries(Object.getOwnPropertyDescriptors(Me.prototype)).filter(i=>typeof i[1].get=="function"&&i[0]!=="__proto__").map(i=>i[0]);handler={set:(i,a,n)=>this.readonlyAttributes.includes(a)?!1:Reflect.set(i,a,n),deleteProperty:(i,a)=>this.readonlyAttributes.includes(a)?!1:Reflect.deleteProperty(i,a),get:(i,a,n)=>this.readonlyAttributes.includes(a)?(Ci.warn(`Accessing "Node.attributes.${a}" is deprecated, access it directly on the Node instance.`),Reflect.get(this,a)):Reflect.get(i,a,n)};constructor(i,a){i.mime||(i.mime="application/octet-stream"),ce(i,a||this._knownDavService),this._data={displayname:i.attributes?.displayname,...i,attributes:{}},this._attributes=new Proxy(this._data.attributes,this.handler),this.update(i.attributes??{}),a&&(this._knownDavService=a)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:i}=new URL(this.source);return i+Ta(this.source.slice(i.length))}get basename(){return Ia(this.source)}get displayname(){return this._data.displayname||this.basename}set displayname(i){ce({...this._data,displayname:i},this._knownDavService),this._data.displayname=i}get extension(){return Qt(this.source)}get dirname(){if(this.root){let a=this.source;this.isDavResource&&(a=a.split(this._knownDavService).pop());const n=a.indexOf(this.root),c=this.root.replace(/\/$/,"");return Ce(a.slice(n+c.length)||"/")}const i=new URL(this.source);return Ce(i.pathname)}get mime(){return this._data.mime||"application/octet-stream"}set mime(i){i??="application/octet-stream",ce({...this._data,mime:i},this._knownDavService),this._data.mime=i}get mtime(){return this._data.mtime}set mtime(i){ce({...this._data,mtime:i},this._knownDavService),this._data.mtime=i}get crtime(){return this._data.crtime}get size(){return this._data.size}set size(i){ce({...this._data,size:i},this._knownDavService),this.updateMtime(),this._data.size=i}get attributes(){return this._attributes}get permissions(){return this.owner===null&&!this.isDavResource?ee.READ:this._data.permissions!==void 0?this._data.permissions:ee.NONE}set permissions(i){ce({...this._data,permissions:i},this._knownDavService),this.updateMtime(),this._data.permissions=i}get owner(){return this.isDavResource?this._data.owner:null}get isDavResource(){return na(this.source,this._knownDavService)}get isDavRessource(){return this.isDavResource}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavResource&&Ce(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let i=this.source;this.isDavResource&&(i=i.split(this._knownDavService).pop());const a=i.indexOf(this.root),n=this.root.replace(/\/$/,"");return i.slice(a+n.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id}get status(){return this._data?.status}set status(i){ce({...this._data,status:i},this._knownDavService),this._data.status=i}get data(){return structuredClone(this._data)}move(i){ce({...this._data,source:i},this._knownDavService);const a=this.basename;this._data.source=i,this.displayname===a&&this.basename!==a&&(this.displayname=this.basename)}rename(i){if(i.includes("/"))throw new Error("Invalid basename");this.move(Ce(this.source)+"/"+i)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}update(i){for(const[a,n]of Object.entries(i))try{n===void 0?delete this.attributes[a]:this.attributes[a]=n}catch(c){if(c instanceof TypeError)continue;throw c}}}class ht extends Me{get type(){return le.File}clone(){return new ht(this.data)}}class ft extends Me{constructor(i){super({...i,mime:"httpd/unix-directory"})}get type(){return le.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}clone(){return new ft(this.data)}}const Li=function(e=""){let i=ee.NONE;return e&&((e.includes("C")||e.includes("K"))&&(i|=ee.CREATE),e.includes("G")&&(i|=ee.READ),(e.includes("W")||e.includes("N")||e.includes("V"))&&(i|=ee.UPDATE),e.includes("D")&&(i|=ee.DELETE),e.includes("R")&&(i|=ee.SHARE)),i},Di=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],Ri={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},vt=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...Di]),window._nc_dav_properties.map(e=>`<${e} />`).join(" ")},gt=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...Ri}),Object.keys(window._nc_dav_namespaces).map(e=>`xmlns:${e}="${window._nc_dav_namespaces?.[e]}"`).join(" ")},sa=function(){return` + - ${gt()} + ${vt()} `},Oi=function(){return` - + - ${gt()} + ${vt()} 1 `},Si=function(e){return` - - ${gt()} + ${vt()} @@ -65,13 +65,13 @@ import{r as He,E as b,o as g,c as B,F as G,b as $,v as qt,w as k,x as Xe,H as T, 0 -`};function ki(){return Ie()?`/files/${wa()}`:`/files/${$e()?.uid}`}const Ae=ki();function Fi(){const e=Za("dav");return Ie()?e.replace("remote.php","public.php"):e}const oa=Fi(),$i=function(e=oa,i={}){const a=Ka(e,{headers:i});function n(c){a.setHeaders({...i,"X-Requested-With":"XMLHttpRequest",requesttoken:c??""})}return Na(n),n(ya()),Ja().patch("fetch",(c,m)=>{const u=m.headers;return u?.method&&(m.method=u.method,delete u.method),fetch(c,m)}),a},Pi=(e,i="/",a=Ae)=>{const n=new AbortController;return new ie(async(c,m,u)=>{u(()=>n.abort());try{const f=(await e.getDirectoryContents(`${a}${i}`,{signal:n.signal,details:!0,data:Oi(),headers:{method:"REPORT"},includeSelf:!0})).data.filter(d=>d.filename!==i).map(d=>xe(d,a));c(f)}catch(f){m(f)}})},xe=function(e,i=Ae,a=oa){let n=$e()?.uid;if(Ie())n=n??"anonymous";else if(!n)throw new Error("No user id found");const c=e.props,m=Li(c?.permissions),u=String(c?.["owner-id"]||n),f=c.fileid||0,d=new Date(Date.parse(e.lastmod)),p=new Date(Date.parse(c.creationdate)),l={id:f,source:`${a}${e.filename}`,mtime:!isNaN(d.getTime())&&d.getTime()!==0?d:void 0,crtime:!isNaN(p.getTime())&&p.getTime()!==0?p:void 0,mime:e.mime||"application/octet-stream",displayname:c.displayname!==void 0?String(c.displayname):void 0,size:c?.size||Number.parseInt(c.getcontentlength||"0"),status:f<0?mt.FAILED:void 0,permissions:m,owner:u,root:i,attributes:{...e,...c,hasPreview:c?.["has-preview"]}};return delete l.attributes?.props,e.type==="file"?new ht(l):new ft(l)};var Bi=qa();const Mi=Aa(Bi);var We={},Pt,Bt;function la(){return Bt||(Bt=1,Pt=typeof Ca=="object"&&We&&We.NODE_DEBUG&&/\bsemver\b/i.test(We.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{}),Pt}var Ye,Mt;function ca(){if(Mt)return Ye;Mt=1;const e="2.0.0",i=256,a=Number.MAX_SAFE_INTEGER||9007199254740991,n=16,c=i-6;return Ye={MAX_LENGTH:i,MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:c,MAX_SAFE_INTEGER:a,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:e,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},Ye}var qe={exports:{}},xt;function xi(){return xt||(xt=1,(function(e,i){const{MAX_SAFE_COMPONENT_LENGTH:a,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:c}=ca(),m=la();i=e.exports={};const u=i.re=[],f=i.safeRe=[],d=i.src=[],p=i.safeSrc=[],l=i.t={};let v=0;const E="[a-zA-Z0-9-]",I=[["\\s",1],["\\d",c],[E,n]],V=W=>{for(const[H,te]of I)W=W.split(`${H}*`).join(`${H}{0,${te}}`).split(`${H}+`).join(`${H}{1,${te}}`);return W},_=(W,H,te)=>{const J=V(H),C=v++;m(W,C,H),l[W]=C,d[C]=H,p[C]=J,u[C]=new RegExp(H,te?"g":void 0),f[C]=new RegExp(J,te?"g":void 0)};_("NUMERICIDENTIFIER","0|[1-9]\\d*"),_("NUMERICIDENTIFIERLOOSE","\\d+"),_("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${E}*`),_("MAINVERSION",`(${d[l.NUMERICIDENTIFIER]})\\.(${d[l.NUMERICIDENTIFIER]})\\.(${d[l.NUMERICIDENTIFIER]})`),_("MAINVERSIONLOOSE",`(${d[l.NUMERICIDENTIFIERLOOSE]})\\.(${d[l.NUMERICIDENTIFIERLOOSE]})\\.(${d[l.NUMERICIDENTIFIERLOOSE]})`),_("PRERELEASEIDENTIFIER",`(?:${d[l.NONNUMERICIDENTIFIER]}|${d[l.NUMERICIDENTIFIER]})`),_("PRERELEASEIDENTIFIERLOOSE",`(?:${d[l.NONNUMERICIDENTIFIER]}|${d[l.NUMERICIDENTIFIERLOOSE]})`),_("PRERELEASE",`(?:-(${d[l.PRERELEASEIDENTIFIER]}(?:\\.${d[l.PRERELEASEIDENTIFIER]})*))`),_("PRERELEASELOOSE",`(?:-?(${d[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${d[l.PRERELEASEIDENTIFIERLOOSE]})*))`),_("BUILDIDENTIFIER",`${E}+`),_("BUILD",`(?:\\+(${d[l.BUILDIDENTIFIER]}(?:\\.${d[l.BUILDIDENTIFIER]})*))`),_("FULLPLAIN",`v?${d[l.MAINVERSION]}${d[l.PRERELEASE]}?${d[l.BUILD]}?`),_("FULL",`^${d[l.FULLPLAIN]}$`),_("LOOSEPLAIN",`[v=\\s]*${d[l.MAINVERSIONLOOSE]}${d[l.PRERELEASELOOSE]}?${d[l.BUILD]}?`),_("LOOSE",`^${d[l.LOOSEPLAIN]}$`),_("GTLT","((?:<|>)?=?)"),_("XRANGEIDENTIFIERLOOSE",`${d[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),_("XRANGEIDENTIFIER",`${d[l.NUMERICIDENTIFIER]}|x|X|\\*`),_("XRANGEPLAIN",`[v=\\s]*(${d[l.XRANGEIDENTIFIER]})(?:\\.(${d[l.XRANGEIDENTIFIER]})(?:\\.(${d[l.XRANGEIDENTIFIER]})(?:${d[l.PRERELEASE]})?${d[l.BUILD]}?)?)?`),_("XRANGEPLAINLOOSE",`[v=\\s]*(${d[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[l.XRANGEIDENTIFIERLOOSE]})(?:${d[l.PRERELEASELOOSE]})?${d[l.BUILD]}?)?)?`),_("XRANGE",`^${d[l.GTLT]}\\s*${d[l.XRANGEPLAIN]}$`),_("XRANGELOOSE",`^${d[l.GTLT]}\\s*${d[l.XRANGEPLAINLOOSE]}$`),_("COERCEPLAIN",`(^|[^\\d])(\\d{1,${a}})(?:\\.(\\d{1,${a}}))?(?:\\.(\\d{1,${a}}))?`),_("COERCE",`${d[l.COERCEPLAIN]}(?:$|[^\\d])`),_("COERCEFULL",d[l.COERCEPLAIN]+`(?:${d[l.PRERELEASE]})?(?:${d[l.BUILD]})?(?:$|[^\\d])`),_("COERCERTL",d[l.COERCE],!0),_("COERCERTLFULL",d[l.COERCEFULL],!0),_("LONETILDE","(?:~>?)"),_("TILDETRIM",`(\\s*)${d[l.LONETILDE]}\\s+`,!0),i.tildeTrimReplace="$1~",_("TILDE",`^${d[l.LONETILDE]}${d[l.XRANGEPLAIN]}$`),_("TILDELOOSE",`^${d[l.LONETILDE]}${d[l.XRANGEPLAINLOOSE]}$`),_("LONECARET","(?:\\^)"),_("CARETTRIM",`(\\s*)${d[l.LONECARET]}\\s+`,!0),i.caretTrimReplace="$1^",_("CARET",`^${d[l.LONECARET]}${d[l.XRANGEPLAIN]}$`),_("CARETLOOSE",`^${d[l.LONECARET]}${d[l.XRANGEPLAINLOOSE]}$`),_("COMPARATORLOOSE",`^${d[l.GTLT]}\\s*(${d[l.LOOSEPLAIN]})$|^$`),_("COMPARATOR",`^${d[l.GTLT]}\\s*(${d[l.FULLPLAIN]})$|^$`),_("COMPARATORTRIM",`(\\s*)${d[l.GTLT]}\\s*(${d[l.LOOSEPLAIN]}|${d[l.XRANGEPLAIN]})`,!0),i.comparatorTrimReplace="$1$2$3",_("HYPHENRANGE",`^\\s*(${d[l.XRANGEPLAIN]})\\s+-\\s+(${d[l.XRANGEPLAIN]})\\s*$`),_("HYPHENRANGELOOSE",`^\\s*(${d[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${d[l.XRANGEPLAINLOOSE]})\\s*$`),_("STAR","(<|>)?=?\\s*\\*"),_("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),_("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(qe,qe.exports)),qe.exports}var Qe,Ut;function Ui(){if(Ut)return Qe;Ut=1;const e=Object.freeze({loose:!0}),i=Object.freeze({});return Qe=a=>a?typeof a!="object"?e:a:i,Qe}var Ze,zt;function zi(){if(zt)return Ze;zt=1;const e=/^[0-9]+$/,i=(a,n)=>{if(typeof a=="number"&&typeof n=="number")return a===n?0:ai(n,a)},Ze}var Ke,Gt;function ua(){if(Gt)return Ke;Gt=1;const e=la(),{MAX_LENGTH:i,MAX_SAFE_INTEGER:a}=ca(),{safeRe:n,t:c}=xi(),m=Ui(),{compareIdentifiers:u}=zi();class f{constructor(p,l){if(l=m(l),p instanceof f){if(p.loose===!!l.loose&&p.includePrerelease===!!l.includePrerelease)return p;p=p.version}else if(typeof p!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof p}".`);if(p.length>i)throw new TypeError(`version is longer than ${i} characters`);e("SemVer",p,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const v=p.trim().match(l.loose?n[c.LOOSE]:n[c.FULL]);if(!v)throw new TypeError(`Invalid Version: ${p}`);if(this.raw=p,this.major=+v[1],this.minor=+v[2],this.patch=+v[3],this.major>a||this.major<0)throw new TypeError("Invalid major version");if(this.minor>a||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>a||this.patch<0)throw new TypeError("Invalid patch version");v[4]?this.prerelease=v[4].split(".").map(E=>{if(/^[0-9]+$/.test(E)){const I=+E;if(I>=0&&Ip.major?1:this.minorp.minor?1:this.patchp.patch?1:0}comparePre(p){if(p instanceof f||(p=new f(p,this.options)),this.prerelease.length&&!p.prerelease.length)return-1;if(!this.prerelease.length&&p.prerelease.length)return 1;if(!this.prerelease.length&&!p.prerelease.length)return 0;let l=0;do{const v=this.prerelease[l],E=p.prerelease[l];if(e("prerelease compare",l,v,E),v===void 0&&E===void 0)return 0;if(E===void 0)return 1;if(v===void 0)return-1;if(v!==E)return u(v,E)}while(++l)}compareBuild(p){p instanceof f||(p=new f(p,this.options));let l=0;do{const v=this.build[l],E=p.build[l];if(e("build compare",l,v,E),v===void 0&&E===void 0)return 0;if(E===void 0)return 1;if(v===void 0)return-1;if(v!==E)return u(v,E)}while(++l)}inc(p,l,v){if(p.startsWith("pre")){if(!l&&v===!1)throw new Error("invalid increment argument: identifier is empty");if(l){const E=`-${l}`.match(this.options.loose?n[c.PRERELEASELOOSE]:n[c.PRERELEASE]);if(!E||E[1]!==l)throw new Error(`invalid identifier: ${l}`)}}switch(p){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",l,v);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",l,v);break;case"prepatch":this.prerelease.length=0,this.inc("patch",l,v),this.inc("pre",l,v);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",l,v),this.inc("pre",l,v);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const E=Number(v)?1:0;if(this.prerelease.length===0)this.prerelease=[E];else{let I=this.prerelease.length;for(;--I>=0;)typeof this.prerelease[I]=="number"&&(this.prerelease[I]++,I=-2);if(I===-1){if(l===this.prerelease.join(".")&&v===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(E)}}if(l){let I=[l,E];v===!1&&(I=[l]),u(this.prerelease[0],l)===0?isNaN(this.prerelease[1])&&(this.prerelease=I):this.prerelease=I}break}default:throw new Error(`invalid increment argument: ${p}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return Ke=f,Ke}var Je,Vt;function Gi(){if(Vt)return Je;Vt=1;const e=ua();return Je=(i,a)=>new e(i,a).major,Je}Gi();var et,Ht;function Vi(){if(Ht)return et;Ht=1;const e=ua();return et=(i,a,n=!1)=>{if(i instanceof e)return i;try{return new e(i,a)}catch(c){if(!n)return null;throw c}},et}var tt,Xt;function Hi(){if(Xt)return tt;Xt=1;const e=Vi();return tt=(i,a)=>{const n=e(i,a);return n?n.version:null},tt}Hi();var jt={},Wt;function Xi(){return Wt||(Wt=1,(function(e){(function(i){i.parser=function(r,t){return new n(r,t)},i.SAXParser=n,i.SAXStream=l,i.createStream=p,i.MAX_BUFFER_LENGTH=64*1024;var a=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];i.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"];function n(r,t){if(!(this instanceof n))return new n(r,t);var h=this;m(h),h.q=h.c="",h.bufferCheckPosition=i.MAX_BUFFER_LENGTH,h.opt=t||{},h.opt.lowercase=h.opt.lowercase||h.opt.lowercasetags,h.looseCase=h.opt.lowercase?"toLowerCase":"toUpperCase",h.tags=[],h.closed=h.closedRoot=h.sawRoot=!1,h.tag=h.error=null,h.strict=!!r,h.noscript=!!(r||h.opt.noscript),h.state=o.BEGIN,h.strictEntities=h.opt.strictEntities,h.ENTITIES=h.strictEntities?Object.create(i.XML_ENTITIES):Object.create(i.ENTITIES),h.attribList=[],h.opt.xmlns&&(h.ns=Object.create(_)),h.opt.unquotedAttributeValues===void 0&&(h.opt.unquotedAttributeValues=!r),h.trackPosition=h.opt.position!==!1,h.trackPosition&&(h.position=h.line=h.column=0),y(h,"onready")}Object.create||(Object.create=function(r){function t(){}t.prototype=r;var h=new t;return h}),Object.keys||(Object.keys=function(r){var t=[];for(var h in r)r.hasOwnProperty(h)&&t.push(h);return t});function c(r){for(var t=Math.max(i.MAX_BUFFER_LENGTH,10),h=0,s=0,L=a.length;st)switch(a[s]){case"textNode":ne(r);break;case"cdata":N(r,"oncdata",r.cdata),r.cdata="";break;case"script":N(r,"onscript",r.script),r.script="";break;default:ge(r,"Max buffer length exceeded: "+a[s])}h=Math.max(h,U)}var z=i.MAX_BUFFER_LENGTH-h;r.bufferCheckPosition=z+r.position}function m(r){for(var t=0,h=a.length;t"||C(r)}function D(r,t){return r.test(t)}function re(r,t){return!D(r,t)}var o=0;i.STATE={BEGIN:o++,BEGIN_WHITESPACE:o++,TEXT:o++,TEXT_ENTITY:o++,OPEN_WAKA:o++,SGML_DECL:o++,SGML_DECL_QUOTED:o++,DOCTYPE:o++,DOCTYPE_QUOTED:o++,DOCTYPE_DTD:o++,DOCTYPE_DTD_QUOTED:o++,COMMENT_STARTING:o++,COMMENT:o++,COMMENT_ENDING:o++,COMMENT_ENDED:o++,CDATA:o++,CDATA_ENDING:o++,CDATA_ENDING_2:o++,PROC_INST:o++,PROC_INST_BODY:o++,PROC_INST_ENDING:o++,OPEN_TAG:o++,OPEN_TAG_SLASH:o++,ATTRIB:o++,ATTRIB_NAME:o++,ATTRIB_NAME_SAW_WHITE:o++,ATTRIB_VALUE:o++,ATTRIB_VALUE_QUOTED:o++,ATTRIB_VALUE_CLOSED:o++,ATTRIB_VALUE_UNQUOTED:o++,ATTRIB_VALUE_ENTITY_Q:o++,ATTRIB_VALUE_ENTITY_U:o++,CLOSE_TAG:o++,CLOSE_TAG_SAW_WHITE:o++,SCRIPT:o++,SCRIPT_ENDING:o++},i.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},i.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(i.ENTITIES).forEach(function(r){var t=i.ENTITIES[r],h=typeof t=="number"?String.fromCharCode(t):t;i.ENTITIES[r]=h});for(var S in i.STATE)i.STATE[i.STATE[S]]=S;o=i.STATE;function y(r,t,h){r[t]&&r[t](h)}function N(r,t,h){r.textNode&&ne(r),y(r,t,h)}function ne(r){r.textNode=Et(r.opt,r.textNode),r.textNode&&y(r,"ontext",r.textNode),r.textNode=""}function Et(r,t){return r.trim&&(t=t.trim()),r.normalize&&(t=t.replace(/\s+/g," ")),t}function ge(r,t){return ne(r),r.trackPosition&&(t+=` +`};function ki(){return Ie()?`/files/${wa()}`:`/files/${$e()?.uid}`}const Ae=ki();function Fi(){const e=Za("dav");return Ie()?e.replace("remote.php","public.php"):e}const oa=Fi(),$i=function(e=oa,i={}){const a=Ka(e,{headers:i});function n(c){a.setHeaders({...i,"X-Requested-With":"XMLHttpRequest",requesttoken:c??""})}return Na(n),n(ya()),Ja().patch("fetch",(c,m)=>{const u=m.headers;return u?.method&&(m.method=u.method,delete u.method),fetch(c,m)}),a},Pi=(e,i="/",a=Ae)=>{const n=new AbortController;return new ie(async(c,m,u)=>{u(()=>n.abort());try{const f=(await e.getDirectoryContents(`${a}${i}`,{signal:n.signal,details:!0,data:Oi(),headers:{method:"REPORT"},includeSelf:!0})).data.filter(d=>d.filename!==i).map(d=>xe(d,a));c(f)}catch(f){m(f)}})},xe=function(e,i=Ae,a=oa){let n=$e()?.uid;if(Ie())n=n??"anonymous";else if(!n)throw new Error("No user id found");const c=e.props,m=Li(c?.permissions),u=String(c?.["owner-id"]||n),f=c.fileid||0,d=new Date(Date.parse(e.lastmod)),p=new Date(Date.parse(c.creationdate)),l={id:f,source:`${a}${e.filename}`,mtime:!isNaN(d.getTime())&&d.getTime()!==0?d:void 0,crtime:!isNaN(p.getTime())&&p.getTime()!==0?p:void 0,mime:e.mime||"application/octet-stream",displayname:c.displayname!==void 0?String(c.displayname):void 0,size:c?.size||Number.parseInt(c.getcontentlength||"0"),status:f<0?mt.FAILED:void 0,permissions:m,owner:u,root:i,attributes:{...e,...c,hasPreview:c?.["has-preview"]}};return delete l.attributes?.props,e.type==="file"?new ht(l):new ft(l)};var Bi=qa();const Mi=Aa(Bi);var We={},Pt,Bt;function la(){return Bt||(Bt=1,Pt=typeof Ca=="object"&&We&&We.NODE_DEBUG&&/\bsemver\b/i.test(We.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{}),Pt}var Ye,Mt;function ca(){if(Mt)return Ye;Mt=1;const e="2.0.0",i=256,a=Number.MAX_SAFE_INTEGER||9007199254740991,n=16,c=i-6;return Ye={MAX_LENGTH:i,MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:c,MAX_SAFE_INTEGER:a,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:e,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},Ye}var qe={exports:{}},xt;function xi(){return xt||(xt=1,(function(e,i){const{MAX_SAFE_COMPONENT_LENGTH:a,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:c}=ca(),m=la();i=e.exports={};const u=i.re=[],f=i.safeRe=[],d=i.src=[],p=i.safeSrc=[],l=i.t={};let g=0;const E="[a-zA-Z0-9-]",I=[["\\s",1],["\\d",c],[E,n]],V=W=>{for(const[H,te]of I)W=W.split(`${H}*`).join(`${H}{0,${te}}`).split(`${H}+`).join(`${H}{1,${te}}`);return W},_=(W,H,te)=>{const J=V(H),C=g++;m(W,C,H),l[W]=C,d[C]=H,p[C]=J,u[C]=new RegExp(H,te?"g":void 0),f[C]=new RegExp(J,te?"g":void 0)};_("NUMERICIDENTIFIER","0|[1-9]\\d*"),_("NUMERICIDENTIFIERLOOSE","\\d+"),_("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${E}*`),_("MAINVERSION",`(${d[l.NUMERICIDENTIFIER]})\\.(${d[l.NUMERICIDENTIFIER]})\\.(${d[l.NUMERICIDENTIFIER]})`),_("MAINVERSIONLOOSE",`(${d[l.NUMERICIDENTIFIERLOOSE]})\\.(${d[l.NUMERICIDENTIFIERLOOSE]})\\.(${d[l.NUMERICIDENTIFIERLOOSE]})`),_("PRERELEASEIDENTIFIER",`(?:${d[l.NONNUMERICIDENTIFIER]}|${d[l.NUMERICIDENTIFIER]})`),_("PRERELEASEIDENTIFIERLOOSE",`(?:${d[l.NONNUMERICIDENTIFIER]}|${d[l.NUMERICIDENTIFIERLOOSE]})`),_("PRERELEASE",`(?:-(${d[l.PRERELEASEIDENTIFIER]}(?:\\.${d[l.PRERELEASEIDENTIFIER]})*))`),_("PRERELEASELOOSE",`(?:-?(${d[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${d[l.PRERELEASEIDENTIFIERLOOSE]})*))`),_("BUILDIDENTIFIER",`${E}+`),_("BUILD",`(?:\\+(${d[l.BUILDIDENTIFIER]}(?:\\.${d[l.BUILDIDENTIFIER]})*))`),_("FULLPLAIN",`v?${d[l.MAINVERSION]}${d[l.PRERELEASE]}?${d[l.BUILD]}?`),_("FULL",`^${d[l.FULLPLAIN]}$`),_("LOOSEPLAIN",`[v=\\s]*${d[l.MAINVERSIONLOOSE]}${d[l.PRERELEASELOOSE]}?${d[l.BUILD]}?`),_("LOOSE",`^${d[l.LOOSEPLAIN]}$`),_("GTLT","((?:<|>)?=?)"),_("XRANGEIDENTIFIERLOOSE",`${d[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),_("XRANGEIDENTIFIER",`${d[l.NUMERICIDENTIFIER]}|x|X|\\*`),_("XRANGEPLAIN",`[v=\\s]*(${d[l.XRANGEIDENTIFIER]})(?:\\.(${d[l.XRANGEIDENTIFIER]})(?:\\.(${d[l.XRANGEIDENTIFIER]})(?:${d[l.PRERELEASE]})?${d[l.BUILD]}?)?)?`),_("XRANGEPLAINLOOSE",`[v=\\s]*(${d[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[l.XRANGEIDENTIFIERLOOSE]})(?:${d[l.PRERELEASELOOSE]})?${d[l.BUILD]}?)?)?`),_("XRANGE",`^${d[l.GTLT]}\\s*${d[l.XRANGEPLAIN]}$`),_("XRANGELOOSE",`^${d[l.GTLT]}\\s*${d[l.XRANGEPLAINLOOSE]}$`),_("COERCEPLAIN",`(^|[^\\d])(\\d{1,${a}})(?:\\.(\\d{1,${a}}))?(?:\\.(\\d{1,${a}}))?`),_("COERCE",`${d[l.COERCEPLAIN]}(?:$|[^\\d])`),_("COERCEFULL",d[l.COERCEPLAIN]+`(?:${d[l.PRERELEASE]})?(?:${d[l.BUILD]})?(?:$|[^\\d])`),_("COERCERTL",d[l.COERCE],!0),_("COERCERTLFULL",d[l.COERCEFULL],!0),_("LONETILDE","(?:~>?)"),_("TILDETRIM",`(\\s*)${d[l.LONETILDE]}\\s+`,!0),i.tildeTrimReplace="$1~",_("TILDE",`^${d[l.LONETILDE]}${d[l.XRANGEPLAIN]}$`),_("TILDELOOSE",`^${d[l.LONETILDE]}${d[l.XRANGEPLAINLOOSE]}$`),_("LONECARET","(?:\\^)"),_("CARETTRIM",`(\\s*)${d[l.LONECARET]}\\s+`,!0),i.caretTrimReplace="$1^",_("CARET",`^${d[l.LONECARET]}${d[l.XRANGEPLAIN]}$`),_("CARETLOOSE",`^${d[l.LONECARET]}${d[l.XRANGEPLAINLOOSE]}$`),_("COMPARATORLOOSE",`^${d[l.GTLT]}\\s*(${d[l.LOOSEPLAIN]})$|^$`),_("COMPARATOR",`^${d[l.GTLT]}\\s*(${d[l.FULLPLAIN]})$|^$`),_("COMPARATORTRIM",`(\\s*)${d[l.GTLT]}\\s*(${d[l.LOOSEPLAIN]}|${d[l.XRANGEPLAIN]})`,!0),i.comparatorTrimReplace="$1$2$3",_("HYPHENRANGE",`^\\s*(${d[l.XRANGEPLAIN]})\\s+-\\s+(${d[l.XRANGEPLAIN]})\\s*$`),_("HYPHENRANGELOOSE",`^\\s*(${d[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${d[l.XRANGEPLAINLOOSE]})\\s*$`),_("STAR","(<|>)?=?\\s*\\*"),_("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),_("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(qe,qe.exports)),qe.exports}var Qe,Ut;function Ui(){if(Ut)return Qe;Ut=1;const e=Object.freeze({loose:!0}),i=Object.freeze({});return Qe=a=>a?typeof a!="object"?e:a:i,Qe}var Ze,zt;function zi(){if(zt)return Ze;zt=1;const e=/^[0-9]+$/,i=(a,n)=>{if(typeof a=="number"&&typeof n=="number")return a===n?0:ai(n,a)},Ze}var Ke,Gt;function ua(){if(Gt)return Ke;Gt=1;const e=la(),{MAX_LENGTH:i,MAX_SAFE_INTEGER:a}=ca(),{safeRe:n,t:c}=xi(),m=Ui(),{compareIdentifiers:u}=zi();class f{constructor(p,l){if(l=m(l),p instanceof f){if(p.loose===!!l.loose&&p.includePrerelease===!!l.includePrerelease)return p;p=p.version}else if(typeof p!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof p}".`);if(p.length>i)throw new TypeError(`version is longer than ${i} characters`);e("SemVer",p,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const g=p.trim().match(l.loose?n[c.LOOSE]:n[c.FULL]);if(!g)throw new TypeError(`Invalid Version: ${p}`);if(this.raw=p,this.major=+g[1],this.minor=+g[2],this.patch=+g[3],this.major>a||this.major<0)throw new TypeError("Invalid major version");if(this.minor>a||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>a||this.patch<0)throw new TypeError("Invalid patch version");g[4]?this.prerelease=g[4].split(".").map(E=>{if(/^[0-9]+$/.test(E)){const I=+E;if(I>=0&&Ip.major?1:this.minorp.minor?1:this.patchp.patch?1:0}comparePre(p){if(p instanceof f||(p=new f(p,this.options)),this.prerelease.length&&!p.prerelease.length)return-1;if(!this.prerelease.length&&p.prerelease.length)return 1;if(!this.prerelease.length&&!p.prerelease.length)return 0;let l=0;do{const g=this.prerelease[l],E=p.prerelease[l];if(e("prerelease compare",l,g,E),g===void 0&&E===void 0)return 0;if(E===void 0)return 1;if(g===void 0)return-1;if(g!==E)return u(g,E)}while(++l)}compareBuild(p){p instanceof f||(p=new f(p,this.options));let l=0;do{const g=this.build[l],E=p.build[l];if(e("build compare",l,g,E),g===void 0&&E===void 0)return 0;if(E===void 0)return 1;if(g===void 0)return-1;if(g!==E)return u(g,E)}while(++l)}inc(p,l,g){if(p.startsWith("pre")){if(!l&&g===!1)throw new Error("invalid increment argument: identifier is empty");if(l){const E=`-${l}`.match(this.options.loose?n[c.PRERELEASELOOSE]:n[c.PRERELEASE]);if(!E||E[1]!==l)throw new Error(`invalid identifier: ${l}`)}}switch(p){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",l,g);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",l,g);break;case"prepatch":this.prerelease.length=0,this.inc("patch",l,g),this.inc("pre",l,g);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",l,g),this.inc("pre",l,g);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const E=Number(g)?1:0;if(this.prerelease.length===0)this.prerelease=[E];else{let I=this.prerelease.length;for(;--I>=0;)typeof this.prerelease[I]=="number"&&(this.prerelease[I]++,I=-2);if(I===-1){if(l===this.prerelease.join(".")&&g===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(E)}}if(l){let I=[l,E];g===!1&&(I=[l]),u(this.prerelease[0],l)===0?isNaN(this.prerelease[1])&&(this.prerelease=I):this.prerelease=I}break}default:throw new Error(`invalid increment argument: ${p}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return Ke=f,Ke}var Je,Vt;function Gi(){if(Vt)return Je;Vt=1;const e=ua();return Je=(i,a)=>new e(i,a).major,Je}Gi();var et,Ht;function Vi(){if(Ht)return et;Ht=1;const e=ua();return et=(i,a,n=!1)=>{if(i instanceof e)return i;try{return new e(i,a)}catch(c){if(!n)return null;throw c}},et}var tt,Xt;function Hi(){if(Xt)return tt;Xt=1;const e=Vi();return tt=(i,a)=>{const n=e(i,a);return n?n.version:null},tt}Hi();var jt={},Wt;function Xi(){return Wt||(Wt=1,(function(e){(function(i){i.parser=function(r,t){return new n(r,t)},i.SAXParser=n,i.SAXStream=l,i.createStream=p,i.MAX_BUFFER_LENGTH=64*1024;var a=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];i.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"];function n(r,t){if(!(this instanceof n))return new n(r,t);var h=this;m(h),h.q=h.c="",h.bufferCheckPosition=i.MAX_BUFFER_LENGTH,h.opt=t||{},h.opt.lowercase=h.opt.lowercase||h.opt.lowercasetags,h.looseCase=h.opt.lowercase?"toLowerCase":"toUpperCase",h.tags=[],h.closed=h.closedRoot=h.sawRoot=!1,h.tag=h.error=null,h.strict=!!r,h.noscript=!!(r||h.opt.noscript),h.state=o.BEGIN,h.strictEntities=h.opt.strictEntities,h.ENTITIES=h.strictEntities?Object.create(i.XML_ENTITIES):Object.create(i.ENTITIES),h.attribList=[],h.opt.xmlns&&(h.ns=Object.create(_)),h.opt.unquotedAttributeValues===void 0&&(h.opt.unquotedAttributeValues=!r),h.trackPosition=h.opt.position!==!1,h.trackPosition&&(h.position=h.line=h.column=0),y(h,"onready")}Object.create||(Object.create=function(r){function t(){}t.prototype=r;var h=new t;return h}),Object.keys||(Object.keys=function(r){var t=[];for(var h in r)r.hasOwnProperty(h)&&t.push(h);return t});function c(r){for(var t=Math.max(i.MAX_BUFFER_LENGTH,10),h=0,s=0,L=a.length;st)switch(a[s]){case"textNode":ne(r);break;case"cdata":N(r,"oncdata",r.cdata),r.cdata="";break;case"script":N(r,"onscript",r.script),r.script="";break;default:ve(r,"Max buffer length exceeded: "+a[s])}h=Math.max(h,U)}var z=i.MAX_BUFFER_LENGTH-h;r.bufferCheckPosition=z+r.position}function m(r){for(var t=0,h=a.length;t"||C(r)}function D(r,t){return r.test(t)}function re(r,t){return!D(r,t)}var o=0;i.STATE={BEGIN:o++,BEGIN_WHITESPACE:o++,TEXT:o++,TEXT_ENTITY:o++,OPEN_WAKA:o++,SGML_DECL:o++,SGML_DECL_QUOTED:o++,DOCTYPE:o++,DOCTYPE_QUOTED:o++,DOCTYPE_DTD:o++,DOCTYPE_DTD_QUOTED:o++,COMMENT_STARTING:o++,COMMENT:o++,COMMENT_ENDING:o++,COMMENT_ENDED:o++,CDATA:o++,CDATA_ENDING:o++,CDATA_ENDING_2:o++,PROC_INST:o++,PROC_INST_BODY:o++,PROC_INST_ENDING:o++,OPEN_TAG:o++,OPEN_TAG_SLASH:o++,ATTRIB:o++,ATTRIB_NAME:o++,ATTRIB_NAME_SAW_WHITE:o++,ATTRIB_VALUE:o++,ATTRIB_VALUE_QUOTED:o++,ATTRIB_VALUE_CLOSED:o++,ATTRIB_VALUE_UNQUOTED:o++,ATTRIB_VALUE_ENTITY_Q:o++,ATTRIB_VALUE_ENTITY_U:o++,CLOSE_TAG:o++,CLOSE_TAG_SAW_WHITE:o++,SCRIPT:o++,SCRIPT_ENDING:o++},i.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},i.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(i.ENTITIES).forEach(function(r){var t=i.ENTITIES[r],h=typeof t=="number"?String.fromCharCode(t):t;i.ENTITIES[r]=h});for(var S in i.STATE)i.STATE[i.STATE[S]]=S;o=i.STATE;function y(r,t,h){r[t]&&r[t](h)}function N(r,t,h){r.textNode&&ne(r),y(r,t,h)}function ne(r){r.textNode=Et(r.opt,r.textNode),r.textNode&&y(r,"ontext",r.textNode),r.textNode=""}function Et(r,t){return r.trim&&(t=t.trim()),r.normalize&&(t=t.replace(/\s+/g," ")),t}function ve(r,t){return ne(r),r.trackPosition&&(t+=` Line: `+r.line+` Column: `+r.column+` -Char: `+r.c),t=new Error(t),r.error=t,y(r,"onerror",t),r}function bt(r){return r.sawRoot&&!r.closedRoot&&R(r,"Unclosed root tag"),r.state!==o.BEGIN&&r.state!==o.BEGIN_WHITESPACE&&r.state!==o.TEXT&&ge(r,"Unexpected end"),ne(r),r.c="",r.closed=!0,y(r,"onend"),n.call(r,r.strict,r.opt),r}function R(r,t){if(typeof r!="object"||!(r instanceof n))throw new Error("bad call to strictFail");r.strict&&ge(r,t)}function ha(r){r.strict||(r.tagName=r.tagName[r.looseCase]());var t=r.tags[r.tags.length-1]||r,h=r.tag={name:r.tagName,attributes:{}};r.opt.xmlns&&(h.ns=t.ns),r.attribList.length=0,N(r,"onopentagstart",h)}function Ue(r,t){var h=r.indexOf(":"),s=h<0?["",r]:r.split(":"),L=s[0],U=s[1];return t&&r==="xmlns"&&(L="xmlns",U=""),{prefix:L,local:U}}function ze(r){if(r.strict||(r.attribName=r.attribName[r.looseCase]()),r.attribList.indexOf(r.attribName)!==-1||r.tag.attributes.hasOwnProperty(r.attribName)){r.attribName=r.attribValue="";return}if(r.opt.xmlns){var t=Ue(r.attribName,!0),h=t.prefix,s=t.local;if(h==="xmlns")if(s==="xml"&&r.attribValue!==I)R(r,"xml: prefix must be bound to "+I+` +Char: `+r.c),t=new Error(t),r.error=t,y(r,"onerror",t),r}function bt(r){return r.sawRoot&&!r.closedRoot&&R(r,"Unclosed root tag"),r.state!==o.BEGIN&&r.state!==o.BEGIN_WHITESPACE&&r.state!==o.TEXT&&ve(r,"Unexpected end"),ne(r),r.c="",r.closed=!0,y(r,"onend"),n.call(r,r.strict,r.opt),r}function R(r,t){if(typeof r!="object"||!(r instanceof n))throw new Error("bad call to strictFail");r.strict&&ve(r,t)}function ha(r){r.strict||(r.tagName=r.tagName[r.looseCase]());var t=r.tags[r.tags.length-1]||r,h=r.tag={name:r.tagName,attributes:{}};r.opt.xmlns&&(h.ns=t.ns),r.attribList.length=0,N(r,"onopentagstart",h)}function Ue(r,t){var h=r.indexOf(":"),s=h<0?["",r]:r.split(":"),L=s[0],U=s[1];return t&&r==="xmlns"&&(L="xmlns",U=""),{prefix:L,local:U}}function ze(r){if(r.strict||(r.attribName=r.attribName[r.looseCase]()),r.attribList.indexOf(r.attribName)!==-1||r.tag.attributes.hasOwnProperty(r.attribName)){r.attribName=r.attribValue="";return}if(r.opt.xmlns){var t=Ue(r.attribName,!0),h=t.prefix,s=t.local;if(h==="xmlns")if(s==="xml"&&r.attribValue!==I)R(r,"xml: prefix must be bound to "+I+` Actual: `+r.attribValue);else if(s==="xmlns"&&r.attribValue!==V)R(r,"xmlns: prefix must be bound to "+V+` -Actual: `+r.attribValue);else{var L=r.tag,U=r.tags[r.tags.length-1]||r;L.ns===U.ns&&(L.ns=Object.create(U.ns)),L.ns[s]=r.attribValue}r.attribList.push([r.attribName,r.attribValue])}else r.tag.attributes[r.attribName]=r.attribValue,N(r,"onattribute",{name:r.attribName,value:r.attribValue});r.attribName=r.attribValue=""}function de(r,t){if(r.opt.xmlns){var h=r.tag,s=Ue(r.tagName);h.prefix=s.prefix,h.local=s.local,h.uri=h.ns[s.prefix]||"",h.prefix&&!h.uri&&(R(r,"Unbound namespace prefix: "+JSON.stringify(r.tagName)),h.uri=s.prefix);var L=r.tags[r.tags.length-1]||r;h.ns&&L.ns!==h.ns&&Object.keys(h.ns).forEach(function(Tt){N(r,"onopennamespace",{prefix:Tt,uri:h.ns[Tt]})});for(var U=0,z=r.attribList.length;U",r.tagName="",r.state=o.SCRIPT;return}N(r,"onscript",r.script),r.script=""}var t=r.tags.length,h=r.tagName;r.strict||(h=h[r.looseCase]());for(var s=h;t--;){var L=r.tags[t];if(L.name!==s)R(r,"Unexpected close tag");else break}if(t<0){R(r,"Unmatched closing tag: "+r.tagName),r.textNode+="",r.state=o.TEXT;return}r.tagName=h;for(var U=r.tags.length;U-- >t;){var z=r.tag=r.tags.pop();r.tagName=r.tag.name,N(r,"onclosetag",r.tagName);var Q={};for(var Z in z.ns)Q[Z]=z.ns[Z];var he=r.tags[r.tags.length-1]||r;r.opt.xmlns&&z.ns!==he.ns&&Object.keys(z.ns).forEach(function(X){var se=z.ns[X];N(r,"onclosenamespace",{prefix:X,uri:se})})}t===0&&(r.closedRoot=!0),r.tagName=r.attribValue=r.attribName="",r.attribList.length=0,r.state=o.TEXT}function fa(r){var t=r.entity,h=t.toLowerCase(),s,L="";return r.ENTITIES[t]?r.ENTITIES[t]:r.ENTITIES[h]?r.ENTITIES[h]:(t=h,t.charAt(0)==="#"&&(t.charAt(1)==="x"?(t=t.slice(2),s=parseInt(t,16),L=s.toString(16)):(t=t.slice(1),s=parseInt(t,10),L=s.toString(10))),t=t.replace(/^0+/,""),isNaN(s)||L.toLowerCase()!==t?(R(r,"Invalid character entity"),"&"+r.entity+";"):String.fromCodePoint(s))}function _t(r,t){t==="<"?(r.state=o.OPEN_WAKA,r.startTagPosition=r.position):C(t)||(R(r,"Non-whitespace before first tag."),r.textNode=t,r.state=o.TEXT)}function wt(r,t){var h="";return t",r.tagName="",r.state=o.SCRIPT;return}N(r,"onscript",r.script),r.script=""}var t=r.tags.length,h=r.tagName;r.strict||(h=h[r.looseCase]());for(var s=h;t--;){var L=r.tags[t];if(L.name!==s)R(r,"Unexpected close tag");else break}if(t<0){R(r,"Unmatched closing tag: "+r.tagName),r.textNode+="",r.state=o.TEXT;return}r.tagName=h;for(var U=r.tags.length;U-- >t;){var z=r.tag=r.tags.pop();r.tagName=r.tag.name,N(r,"onclosetag",r.tagName);var Q={};for(var Z in z.ns)Q[Z]=z.ns[Z];var he=r.tags[r.tags.length-1]||r;r.opt.xmlns&&z.ns!==he.ns&&Object.keys(z.ns).forEach(function(X){var se=z.ns[X];N(r,"onclosenamespace",{prefix:X,uri:se})})}t===0&&(r.closedRoot=!0),r.tagName=r.attribValue=r.attribName="",r.attribList.length=0,r.state=o.TEXT}function fa(r){var t=r.entity,h=t.toLowerCase(),s,L="";return r.ENTITIES[t]?r.ENTITIES[t]:r.ENTITIES[h]?r.ENTITIES[h]:(t=h,t.charAt(0)==="#"&&(t.charAt(1)==="x"?(t=t.slice(2),s=parseInt(t,16),L=s.toString(16)):(t=t.slice(1),s=parseInt(t,10),L=s.toString(10))),t=t.replace(/^0+/,""),isNaN(s)||L.toLowerCase()!==t?(R(r,"Invalid character entity"),"&"+r.entity+";"):String.fromCodePoint(s))}function _t(r,t){t==="<"?(r.state=o.OPEN_WAKA,r.startTagPosition=r.position):C(t)||(R(r,"Non-whitespace before first tag."),r.textNode=t,r.state=o.TEXT)}function wt(r,t){var h="";return t"?(N(t,"onsgmldeclaration",t.sgmlDecl),t.sgmlDecl="",t.state=o.TEXT):(F(s)&&(t.state=o.SGML_DECL_QUOTED),t.sgmlDecl+=s);continue;case o.SGML_DECL_QUOTED:s===t.q&&(t.state=o.SGML_DECL,t.q=""),t.sgmlDecl+=s;continue;case o.DOCTYPE:s===">"?(t.state=o.TEXT,N(t,"ondoctype",t.doctype),t.doctype=!0):(t.doctype+=s,s==="["?t.state=o.DOCTYPE_DTD:F(s)&&(t.state=o.DOCTYPE_QUOTED,t.q=s));continue;case o.DOCTYPE_QUOTED:t.doctype+=s,s===t.q&&(t.q="",t.state=o.DOCTYPE);continue;case o.DOCTYPE_DTD:s==="]"?(t.doctype+=s,t.state=o.DOCTYPE):s==="<"?(t.state=o.OPEN_WAKA,t.startTagPosition=t.position):F(s)?(t.doctype+=s,t.state=o.DOCTYPE_DTD_QUOTED,t.q=s):t.doctype+=s;continue;case o.DOCTYPE_DTD_QUOTED:t.doctype+=s,s===t.q&&(t.state=o.DOCTYPE_DTD,t.q="");continue;case o.COMMENT:s==="-"?t.state=o.COMMENT_ENDING:t.comment+=s;continue;case o.COMMENT_ENDING:s==="-"?(t.state=o.COMMENT_ENDED,t.comment=Et(t.opt,t.comment),t.comment&&N(t,"oncomment",t.comment),t.comment=""):(t.comment+="-"+s,t.state=o.COMMENT);continue;case o.COMMENT_ENDED:s!==">"?(R(t,"Malformed comment"),t.comment+="--"+s,t.state=o.COMMENT):t.doctype&&t.doctype!==!0?t.state=o.DOCTYPE_DTD:t.state=o.TEXT;continue;case o.CDATA:s==="]"?t.state=o.CDATA_ENDING:t.cdata+=s;continue;case o.CDATA_ENDING:s==="]"?t.state=o.CDATA_ENDING_2:(t.cdata+="]"+s,t.state=o.CDATA);continue;case o.CDATA_ENDING_2:s===">"?(t.cdata&&N(t,"oncdata",t.cdata),N(t,"onclosecdata"),t.cdata="",t.state=o.TEXT):s==="]"?t.cdata+="]":(t.cdata+="]]"+s,t.state=o.CDATA);continue;case o.PROC_INST:s==="?"?t.state=o.PROC_INST_ENDING:C(s)?t.state=o.PROC_INST_BODY:t.procInstName+=s;continue;case o.PROC_INST_BODY:if(!t.procInstBody&&C(s))continue;s==="?"?t.state=o.PROC_INST_ENDING:t.procInstBody+=s;continue;case o.PROC_INST_ENDING:s===">"?(N(t,"onprocessinginstruction",{name:t.procInstName,body:t.procInstBody}),t.procInstName=t.procInstBody="",t.state=o.TEXT):(t.procInstBody+="?"+s,t.state=o.PROC_INST_BODY);continue;case o.OPEN_TAG:D(H,s)?t.tagName+=s:(ha(t),s===">"?de(t):s==="/"?t.state=o.OPEN_TAG_SLASH:(C(s)||R(t,"Invalid character in tag name"),t.state=o.ATTRIB));continue;case o.OPEN_TAG_SLASH:s===">"?(de(t,!0),Ge(t)):(R(t,"Forward-slash in opening tag not followed by >"),t.state=o.ATTRIB);continue;case o.ATTRIB:if(C(s))continue;s===">"?de(t):s==="/"?t.state=o.OPEN_TAG_SLASH:D(W,s)?(t.attribName=s,t.attribValue="",t.state=o.ATTRIB_NAME):R(t,"Invalid attribute name");continue;case o.ATTRIB_NAME:s==="="?t.state=o.ATTRIB_VALUE:s===">"?(R(t,"Attribute without value"),t.attribValue=t.attribName,ze(t),de(t)):C(s)?t.state=o.ATTRIB_NAME_SAW_WHITE:D(H,s)?t.attribName+=s:R(t,"Invalid attribute name");continue;case o.ATTRIB_NAME_SAW_WHITE:if(s==="=")t.state=o.ATTRIB_VALUE;else{if(C(s))continue;R(t,"Attribute without value"),t.tag.attributes[t.attribName]="",t.attribValue="",N(t,"onattribute",{name:t.attribName,value:""}),t.attribName="",s===">"?de(t):D(W,s)?(t.attribName=s,t.state=o.ATTRIB_NAME):(R(t,"Invalid attribute name"),t.state=o.ATTRIB)}continue;case o.ATTRIB_VALUE:if(C(s))continue;F(s)?(t.q=s,t.state=o.ATTRIB_VALUE_QUOTED):(t.opt.unquotedAttributeValues||ge(t,"Unquoted attribute value"),t.state=o.ATTRIB_VALUE_UNQUOTED,t.attribValue=s);continue;case o.ATTRIB_VALUE_QUOTED:if(s!==t.q){s==="&"?t.state=o.ATTRIB_VALUE_ENTITY_Q:t.attribValue+=s;continue}ze(t),t.q="",t.state=o.ATTRIB_VALUE_CLOSED;continue;case o.ATTRIB_VALUE_CLOSED:C(s)?t.state=o.ATTRIB:s===">"?de(t):s==="/"?t.state=o.OPEN_TAG_SLASH:D(W,s)?(R(t,"No whitespace between attributes"),t.attribName=s,t.attribValue="",t.state=o.ATTRIB_NAME):R(t,"Invalid attribute name");continue;case o.ATTRIB_VALUE_UNQUOTED:if(!x(s)){s==="&"?t.state=o.ATTRIB_VALUE_ENTITY_U:t.attribValue+=s;continue}ze(t),s===">"?de(t):t.state=o.ATTRIB;continue;case o.CLOSE_TAG:if(t.tagName)s===">"?Ge(t):D(H,s)?t.tagName+=s:t.script?(t.script+=""?Ge(t):R(t,"Invalid characters in closing tag");continue;case o.TEXT_ENTITY:case o.ATTRIB_VALUE_ENTITY_Q:case o.ATTRIB_VALUE_ENTITY_U:var z,Q;switch(t.state){case o.TEXT_ENTITY:z=o.TEXT,Q="textNode";break;case o.ATTRIB_VALUE_ENTITY_Q:z=o.ATTRIB_VALUE_QUOTED,Q="attribValue";break;case o.ATTRIB_VALUE_ENTITY_U:z=o.ATTRIB_VALUE_UNQUOTED,Q="attribValue";break}if(s===";"){var Z=fa(t);t.opt.unparsedEntities&&!Object.values(i.XML_ENTITIES).includes(Z)?(t.entity="",t.state=z,t.write(Z)):(t[Q]+=Z,t.entity="",t.state=z)}else D(t.entity.length?J:te,s)?t.entity+=s:(R(t,"Invalid character in entity name"),t[Q]+="&"+t.entity+s,t.entity="",t.state=z);continue;default:throw new Error(t,"Unknown state: "+t.state)}return t.position>=t.bufferCheckPosition&&c(t),t}String.fromCodePoint||(function(){var r=String.fromCharCode,t=Math.floor,h=function(){var s=16384,L=[],U,z,Q=-1,Z=arguments.length;if(!Z)return"";for(var he="";++Q1114111||t(X)!==X)throw RangeError("Invalid code point: "+X);X<=65535?L.push(X):(X-=65536,U=(X>>10)+55296,z=X%1024+56320,L.push(U,z)),(Q+1===Z||L.length>s)&&(he+=r.apply(null,L),L.length=0)}return he};Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:h,configurable:!0,writable:!0}):String.fromCodePoint=h})()})(e)})(jt)),jt}Xi();var Se=(e=>(e.ReservedName="reserved name",e.Character="character",e.Extension="extension",e))(Se||{});class Ee extends Error{constructor(i){super(`Invalid ${i.reason} '${i.segment}' in filename '${i.filename}'`,{cause:i})}get filename(){return this.cause.filename}get reason(){return this.cause.reason}get segment(){return this.cause.segment}}function ji(e){const i=La().files,a=i.forbidden_filename_characters??window._oc_config?.forbidden_filenames_characters??["/","\\"];for(const u of a)if(e.includes(u))throw new Ee({segment:u,reason:"character",filename:e});if(e=e.toLocaleLowerCase(),(i.forbidden_filenames??[".htaccess"]).includes(e))throw new Ee({filename:e,segment:e,reason:"reserved name"});const n=e.indexOf(".",1),c=e.substring(0,n===-1?void 0:n);if((i.forbidden_filename_basenames??[]).includes(c))throw new Ee({filename:e,segment:c,reason:"reserved name"});const m=i.forbidden_filename_extensions??[".part",".filepart"];for(const u of m)if(e.length>u.length&&e.endsWith(u))throw new Ee({segment:u,reason:"extension",filename:e})}const at=["B","KB","MB","GB","TB","PB"],it=["B","KiB","MiB","GiB","TiB","PiB"];function Wi(e,i=!1,a=!1,n=!1){a=a&&!n,typeof e=="string"&&(e=Number(e));let c=e>0?Math.floor(Math.log(e)/Math.log(n?1e3:1024)):0;c=Math.min((a?it.length:at.length)-1,c);const m=a?it[c]:at[c];let u=(e/Math.pow(n?1e3:1024,c)).toFixed(1);return i===!0&&c===0?(u!=="0.0"?"< 1 ":"0 ")+(a?it[1]:at[1]):(c<2?u=parseFloat(u).toFixed(0):u=parseFloat(u).toLocaleString(Zt()),u+" "+m)}function Yt(e){return e instanceof Date?e.toISOString():String(e)}function Yi(e,i,a){i=i??[m=>m],a=a??[];const n=i.map((m,u)=>(a[u]??"asc")==="asc"?1:-1),c=Intl.Collator([Da(),Zt()],{numeric:!0,usage:"sort"});return[...e].sort((m,u)=>{for(const[f,d]of i.entries()){const p=c.compare(Yt(d(m)),Yt(d(u)));if(p!==0)return p*n[f]}return 0})}function qi(e,i={}){const a={sortingMode:"basename",sortingOrder:"asc",...i};function n(u){const f=u.displayname||u.attributes?.displayname||u.basename||"";return u.type===le.Folder?f:f.lastIndexOf(".")>0?f.slice(0,f.lastIndexOf(".")):f}const c=[...a.sortFavoritesFirst?[u=>u.attributes?.favorite!==1]:[],...a.sortFoldersFirst?[u=>u.type!=="folder"]:[],...a.sortingMode!=="basename"?[u=>u[a.sortingMode]??u.attributes[a.sortingMode]]:[],u=>n(u),u=>u.basename],m=[...a.sortFavoritesFirst?["asc"]:[],...a.sortFoldersFirst?["asc"]:[],...a.sortingMode==="mtime"?[a.sortingOrder==="asc"?"desc":"asc"]:[],...a.sortingMode!=="mtime"&&a.sortingMode!=="basename"?[a.sortingOrder]:[],a.sortingOrder,a.sortingOrder];return Yi(e,c,m)}const Qi=new ti({concurrency:5});function Zi(e){const{resolve:i,promise:a}=Promise.withResolvers();return Qi.add(()=>{const n=new Image;return n.onerror=()=>i(!1),n.onload=()=>i(!0),n.src=e,a}),a}function Ki(e,i={}){i={size:32,cropPreview:!1,mimeFallback:!0,...i};try{const a=e.attributes?.previewUrl||ut("/core/preview?fileId={fileid}",{fileid:e.fileid});let n;try{n=new URL(a)}catch{n=new URL(a,window.location.origin)}return n.searchParams.set("x",`${i.size}`),n.searchParams.set("y",`${i.size}`),n.searchParams.set("mimeFallback",`${i.mimeFallback}`),n.searchParams.set("a",i.cropPreview===!0?"0":"1"),n.searchParams.set("c",`${e.attributes.etag}`),n}catch{return null}}function Ji(e,i){const a=P(null),n=P(!1);return Ra(()=>{n.value=!1,a.value=Ki(_e(e),_e(i||{})),a.value&&_e(e).type===le.File&&Zi(a.value.href).then(c=>{n.value=c})}),{previewURL:a,previewLoaded:n}}const K=(e,i)=>{const a=e.__vccOpts||e;for(const[n,c]of i)a[n]=c;return a},er={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},tr=["aria-hidden","aria-label"],ar=["fill","width","height"],ir={d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"},rr={key:0};function nr(e,i,a,n,c,m){return g(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon file-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(g(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",ir,[a.title?(g(),b("title",rr,M(a.title),1)):G("",!0)])],8,ar))],16,tr)}const ot=K(er,[["render",nr]]),sr={name:"MenuDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},or=["aria-hidden","aria-label"],lr=["fill","width","height"],cr={d:"M7,10L12,15L17,10H7Z"},ur={key:0};function dr(e,i,a,n,c,m){return g(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon menu-down-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(g(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",cr,[a.title?(g(),b("title",ur,M(a.title),1)):G("",!0)])],8,lr))],16,or)}const rt=K(sr,[["render",dr]]),pr={name:"MenuUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mr=["aria-hidden","aria-label"],hr=["fill","width","height"],fr={d:"M7,15L12,10L17,15H7Z"},gr={key:0};function vr(e,i,a,n,c,m){return g(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon menu-up-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(g(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",fr,[a.title?(g(),b("title",gr,M(a.title),1)):G("",!0)])],8,hr))],16,mr)}const nt=K(pr,[["render",vr]]),Er={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},br=["aria-hidden","aria-label"],_r=["fill","width","height"],wr={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},yr={key:0};function Tr(e,i,a,n,c,m){return g(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(g(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",wr,[a.title?(g(),b("title",yr,M(a.title),1)):G("",!0)])],8,_r))],16,br)}const da=K(Er,[["render",Tr]]),pa={"file-picker__file-icon":"_file-picker__file-icon_3v9zx_9","file-picker__file-icon--primary":"_file-picker__file-icon--primary_3v9zx_21","file-picker__file-icon-overlay":"_file-picker__file-icon-overlay_3v9zx_25"},Ir=me({__name:"FilePreview",props:{node:{},cropImagePreviews:{type:Boolean}},setup(e){const i=e,a=P(pa),{previewURL:n,previewLoaded:c}=Ji(Jt(i,"node"),O(()=>({cropPreview:i.cropImagePreviews}))),m=O(()=>i.node.type===le.File),u=O(()=>{if(i.node.type!==le.Folder)return null;if(i.node.attributes?.["is-encrypted"]===1)return Ua;if(i.node.attributes?.["is-tag"])return za;const f=Object.values(i.node.attributes?.["share-types"]||{}).flat();if(f.some(d=>d===Lt.Link||d===Lt.Email))return Ga;if(f.length>0)return At;switch(i.node.attributes?.["mount-type"]){case"external":case"external-session":return Ha;case"group":return Va;case"shared":return At}return null});return(f,d)=>(g(),b("div",{style:Xa(w(c)?{backgroundImage:`url(${w(n)})`}:void 0),class:fe(a.value["file-picker__file-icon"])},[w(c)?G("",!0):(g(),b(oe,{key:0},[m.value?(g(),B(ot,{key:0,size:32})):(g(),b(oe,{key:1},[u.value?(g(),B(w(ta),{key:0,class:fe(a.value["file-picker__file-icon-overlay"]),inline:"",path:u.value,size:16},null,8,["class","path"])):G("",!0),$(da,{class:fe(a.value["file-picker__file-icon--primary"]),size:32},null,8,["class"])],64))],64))],6))}}),Nr=["tabindex","aria-selected","data-filename"],Ar={class:"row-name"},Cr={class:"file-picker__name-container","data-testid":"row-name"},Lr=["title","textContent"],Dr=["textContent"],Rr={class:"row-size"},Or={class:"row-modified"},Sr=me({__name:"FileListRow",props:{allowPickDirectory:{type:Boolean},selected:{type:Boolean},showCheckbox:{type:Boolean},canPick:{type:Boolean},node:{},cropImagePreviews:{type:Boolean}},emits:["update:selected","enterDirectory"],setup(e,{emit:i}){const a=e,n=i,c=O(()=>a.node.mtime??0),m=O(()=>Qt(a.node.displayname)),u=O(()=>a.node.displayname.slice(0,m.value?-m.value.length:void 0)),f=O(()=>a.node.type===le.Folder),d=O(()=>a.canPick&&(a.allowPickDirectory||!f.value)),p=O(()=>(a.node.permissions&ee.READ)===ee.READ);function l(){d.value&&n("update:selected",!a.selected)}function v(){f.value?p.value&&n("enterDirectory",a.node):l()}function E(I){I.key==="Enter"&&v()}return(I,V)=>(g(),b("tr",ae({tabindex:e.showCheckbox&&!f.value?void 0:0,"aria-selected":d.value?e.selected:void 0,class:["file-picker__row",[{"file-picker__row--selected":e.selected&&!e.showCheckbox,"file-picker__row--not-navigatable":f.value&&!p.value,"file-picker__row--not-pickable":!d.value}]],"data-filename":e.node.basename,"data-testid":"file-list-row"},xa({click:v,...!e.showCheckbox||f.value?{keydown:E}:{}},!0)),[e.showCheckbox?(g(),b("td",{key:0,class:"row-checkbox",onClick:Re(()=>{},["stop"])},[$(w(aa),{"aria-label":w(A)("Select the row for {nodename}",{nodename:u.value}),disabled:!d.value,"data-testid":"row-checkbox","model-value":e.selected,"onUpdate:modelValue":l},null,8,["aria-label","disabled","model-value"])])):G("",!0),T("td",Ar,[T("div",Cr,[$(Ir,{node:e.node,"crop-image-previews":e.cropImagePreviews},null,8,["node","crop-image-previews"]),T("div",{class:"file-picker__file-name",title:u.value,textContent:M(u.value)},null,8,Lr),T("div",{class:"file-picker__file-extension",textContent:M(m.value)},null,8,Dr)])]),T("td",Rr,M(w(Wi)(e.node.size||0)),1),T("td",Or,[$(w(ei),{timestamp:c.value,"ignore-seconds":""},null,8,["timestamp"])])],16,Nr))}}),kr=K(Sr,[["__scopeId","data-v-2af740c4"]]),Fr={"aria-hidden":"true",class:"file-picker__row loading-row"},$r={key:0,class:"row-checkbox"},Pr={class:"row-name"},Br={class:"row-wrapper"},Mr=me({__name:"LoadingTableRow",props:{showCheckbox:{type:Boolean}},setup(e){return(i,a)=>(g(),b("tr",Fr,[e.showCheckbox?(g(),b("td",$r,[...a[0]||(a[0]=[T("span",null,null,-1)])])):G("",!0),T("td",Pr,[T("div",Br,[T("span",{class:fe(w(pa)["file-picker__file-icon"])},null,2),a[1]||(a[1]=T("span",null,null,-1))])]),a[2]||(a[2]=T("td",{class:"row-size"},[T("span")],-1)),a[3]||(a[3]=T("td",{class:"row-modified"},[T("span")],-1))]))}}),xr=K(Mr,[["__scopeId","data-v-1f96131b"]]);function ma(){const e=ea("files","config",null),i=P(e?.show_hidden??!0),a=P(e?.sort_favorites_first??!0),n=P(e?.crop_image_previews??!0);return Ne(async()=>{if(Ie())Te.debug("Skip loading files settings - currently on public share");else try{const{data:c}=await ia.get(ut("/apps/files/api/v1/configs"));i.value=c?.data?.show_hidden??!1,a.value=c?.data?.sort_favorites_first??!0,n.value=c?.data?.crop_image_previews??!0}catch(c){Te.error("Could not load files settings",{error:c}),ct(A("Could not load files settings"))}}),{showHiddenFiles:i,sortFavoritesFirst:a,cropImagePreviews:n}}function Ur(e){const i=p=>p==="asc"?"ascending":p==="desc"?"descending":"none",a=ea("files","viewConfigs",null),n=P({sortBy:a?.files?.sorting_mode??"basename",order:i(a?.files?.sorting_direction??"asc")}),c=P({sortBy:a?.recent?.sorting_mode??"basename",order:i(a?.recent?.sorting_direction??"asc")}),m=P({sortBy:a?.favorites?.sorting_mode??"basename",order:i(a?.favorites?.sorting_direction??"asc")});Ne(async()=>{if(Ie())Te.debug("Skip loading files views - currently on public share");else try{const{data:p}=await ia.get(ut("/apps/files/api/v1/views"));n.value={sortBy:p?.data?.files?.sorting_mode??"basename",order:i(p?.data?.files?.sorting_direction)},m.value={sortBy:p?.data?.favorites?.sorting_mode??"basename",order:i(p?.data?.favorites?.sorting_direction)},c.value={sortBy:p?.data?.recent?.sorting_mode??"basename",order:i(p?.data?.recent?.sorting_direction)}}catch(p){Te.error("Could not load files views",{error:p}),ct(A("Could not load files views"))}});const u=O(()=>_e(e||"files")==="files"?n.value:_e(e)==="recent"?c.value:m.value),f=O(()=>u.value.sortBy),d=O(()=>u.value.order);return{filesViewConfig:n,favoritesViewConfig:m,recentViewConfig:c,currentConfig:u,sortBy:f,order:d}}const zr={key:0,class:"row-checkbox"},Gr={class:"hidden-visually"},Vr=["aria-sort"],Hr={class:"header-wrapper"},Xr={key:2,style:{width:"44px"}},jr=["aria-sort"],Wr={key:2,style:{width:"44px"}},Yr=["aria-sort"],qr={key:2,style:{width:"44px"}},Qr=me({__name:"FileList",props:ka({currentView:{},multiselect:{type:Boolean},allowPickDirectory:{type:Boolean},loading:{type:Boolean},files:{},canPick:{type:Function}},{path:{required:!0},pathModifiers:{},selectedFiles:{required:!0},selectedFilesModifiers:{}}),emits:["update:path","update:selectedFiles"],setup(e){const i=Nt(e,"path"),a=Nt(e,"selectedFiles"),n=e,c=P(),{currentConfig:m}=Ur(n.currentView),u=O(()=>c.value??m.value),f=O(()=>u.value.sortBy==="basename"?u.value.order==="none"?void 0:u.value.order:void 0),d=O(()=>u.value.sortBy==="size"?u.value.order==="none"?void 0:u.value.order:void 0),p=O(()=>u.value.sortBy==="mtime"?u.value.order==="none"?void 0:u.value.order:void 0);function l(F){u.value.sortBy===F?u.value.order==="ascending"?c.value={sortBy:u.value.sortBy,order:"descending"}:c.value={sortBy:u.value.sortBy,order:"ascending"}:c.value={sortBy:F,order:"ascending"}}const{sortFavoritesFirst:v,cropImagePreviews:E}=ma(),I=O(()=>qi(n.files,{sortFoldersFirst:!0,sortFavoritesFirst:v.value,sortingOrder:u.value.order==="descending"?"desc":"asc",sortingMode:u.value.sortBy})),V=O(()=>n.files.filter(F=>n.allowPickDirectory||F.type!==le.Folder)),_=O(()=>!n.loading&&a.value.length>0&&a.value.length>=V.value.length);function W(){a.value.lengthx.path!==F.path):n.multiselect?a.value=[...a.value,F]:a.value=[F]}function te(F){i.value=F.path}const J=P(4),C=P();{const F=()=>Fa(()=>{const x=C.value?.parentElement?.children||[];let D=C.value?.parentElement?.clientHeight||450;for(let re=0;re{window.addEventListener("resize",F),F()}),$a(()=>{window.removeEventListener("resize",F)})}return(F,x)=>(g(),b("div",{ref_key:"fileContainer",ref:C,class:"file-picker__files"},[T("table",null,[T("thead",null,[T("tr",null,[e.multiselect?(g(),b("th",zr,[T("span",Gr,M(w(A)("Select entry")),1),e.multiselect?(g(),B(w(aa),{key:0,"aria-label":w(A)("Select all entries"),"data-testid":"select-all-checkbox","model-value":_.value,"onUpdate:modelValue":W},null,8,["aria-label","model-value"])):G("",!0)])):G("",!0),T("th",{"aria-sort":f.value,class:"row-name"},[T("div",Hr,[x[3]||(x[3]=T("span",{class:"file-picker__header-preview"},null,-1)),$(w(we),{"data-test":"file-picker_sort-name",variant:"tertiary",wide:"",onClick:x[0]||(x[0]=D=>l("basename"))},{icon:k(()=>[f.value==="ascending"?(g(),B(nt,{key:0,size:20})):f.value==="descending"?(g(),B(rt,{key:1,size:20})):(g(),b("span",Xr))]),default:k(()=>[be(" "+M(w(A)("Name")),1)]),_:1})])],8,Vr),T("th",{"aria-sort":d.value,class:"row-size"},[$(w(we),{variant:"tertiary",wide:"",onClick:x[1]||(x[1]=D=>l("size"))},{icon:k(()=>[d.value==="ascending"?(g(),B(nt,{key:0,size:20})):d.value==="descending"?(g(),B(rt,{key:1,size:20})):(g(),b("span",Wr))]),default:k(()=>[be(" "+M(w(A)("Size")),1)]),_:1})],8,jr),T("th",{"aria-sort":p.value,class:"row-modified"},[$(w(we),{variant:"tertiary",wide:"",onClick:x[2]||(x[2]=D=>l("mtime"))},{icon:k(()=>[p.value==="ascending"?(g(),B(nt,{key:0,size:20})):p.value==="descending"?(g(),B(rt,{key:1,size:20})):(g(),b("span",qr))]),default:k(()=>[be(" "+M(w(A)("Modified")),1)]),_:1})],8,Yr)])]),T("tbody",null,[e.loading?(g(!0),b(oe,{key:0},ke(J.value,D=>(g(),B(xr,{key:D,"show-checkbox":e.multiselect},null,8,["show-checkbox"]))),128)):(g(!0),b(oe,{key:1},ke(I.value,D=>(g(),B(kr,{key:D.fileid||D.path,"allow-pick-directory":e.allowPickDirectory,"show-checkbox":e.multiselect,"can-pick":(e.multiselect||a.value.length===0||a.value.includes(D))&&(e.canPick===void 0||e.canPick(D)),selected:a.value.includes(D),node:D,"crop-image-previews":w(E),"onUpdate:selected":re=>H(D),onEnterDirectory:te},null,8,["allow-pick-directory","show-checkbox","can-pick","selected","node","crop-image-previews","onUpdate:selected"]))),128))])])],512))}}),Zr=K(Qr,[["__scopeId","data-v-68ec5c33"]]),Kr={name:"HomeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Jr=["aria-hidden","aria-label"],en=["fill","width","height"],tn={d:"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"},an={key:0};function rn(e,i,a,n,c,m){return g(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon home-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(g(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",tn,[a.title?(g(),b("title",an,M(a.title),1)):G("",!0)])],8,en))],16,Jr)}const nn=K(Kr,[["render",rn]]),sn={name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},on=["aria-hidden","aria-label"],ln=["fill","width","height"],cn={d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"},un={key:0};function dn(e,i,a,n,c,m){return g(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon plus-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(g(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",cn,[a.title?(g(),b("title",un,M(a.title),1)):G("",!0)])],8,ln))],16,on)}const pn=K(sn,[["render",dn]]),mn=me({__name:"FilePickerBreadcrumbs",props:{path:{},showMenu:{type:Boolean}},emits:["update:path","create-node"],setup(e,{emit:i}){const a=e,n=i,c=P(!1),m=P(""),u=Sa("nameInput");function f(){const l=m.value.trim(),v=u.value?.$el?.querySelector("input");let E="";try{ji(l)}catch(I){if(!(I instanceof Ee))throw I;switch(I.reason){case Se.Character:E=A('"{char}" is not allowed inside a folder name.',{char:I.segment});break;case Se.ReservedName:E=A('"{segment}" is a reserved name and not allowed for folder names.',{segment:I.segment});break;case Se.Extension:E=A('Folder names must not end with "{extension}".',{extension:I.segment});break;default:E=A("Invalid folder name.")}}return v&&v.setCustomValidity(E),E===""}function d(){const l=m.value.trim();f()&&(c.value=!1,n("create-node",l),m.value="")}const p=O(()=>a.path.split("/").filter(l=>l!=="").map((l,v,E)=>({name:l,path:"/"+E.slice(0,v+1).join("/")})));return(l,v)=>(g(),B(w(yi),{class:"file-picker__breadcrumbs"},qt({default:k(()=>[$(w(Fe),{name:w(A)("All files"),title:w(A)("Home"),onClick:v[0]||(v[0]=E=>n("update:path","/"))},{icon:k(()=>[$(nn,{size:20})]),_:1},8,["name","title"]),(g(!0),b(oe,null,ke(p.value,E=>(g(),B(w(Fe),{key:E.path,name:E.name,title:E.path,onClick:I=>n("update:path",E.path)},null,8,["name","title","onClick"]))),128))]),_:2},[e.showMenu?{name:"actions",fn:k(()=>[$(w(lt),{open:c.value,"onUpdate:open":v[2]||(v[2]=E=>c.value=E),"aria-label":w(A)("Create directory"),"force-menu":!0,"force-name":!0,"menu-name":w(A)("New"),variant:"secondary",onClose:v[3]||(v[3]=E=>m.value="")},{icon:k(()=>[$(pn,{size:20})]),default:k(()=>[$(w(ai),{ref_key:"nameInput",ref:u,modelValue:m.value,"onUpdate:modelValue":[v[1]||(v[1]=E=>m.value=E),f],label:w(A)("New folder"),placeholder:w(A)("New folder name"),onSubmit:d},{icon:k(()=>[$(da,{size:20})]),_:1},8,["modelValue","label","placeholder"])]),_:1},8,["open","aria-label","menu-name"])]),key:"0"}:void 0]),1024))}}),hn=K(mn,[["__scopeId","data-v-4ce40fd0"]]),fn={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},gn=["aria-hidden","aria-label"],vn=["fill","width","height"],En={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},bn={key:0};function _n(e,i,a,n,c,m){return g(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon close-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(g(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",En,[a.title?(g(),b("title",bn,M(a.title),1)):G("",!0)])],8,vn))],16,gn)}const wn=K(fn,[["render",_n]]),yn={name:"MagnifyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Tn=["aria-hidden","aria-label"],In=["fill","width","height"],Nn={d:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},An={key:0};function Cn(e,i,a,n,c,m){return g(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon magnify-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(g(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",Nn,[a.title?(g(),b("title",An,M(a.title),1)):G("",!0)])],8,In))],16,Tn)}const Ln=K(yn,[["render",Cn]]);function Dn(e){const i=[{id:"files",label:A("All files"),icon:Pa},{id:"recent",label:A("Recent"),icon:Ba},{id:"favorites",label:A("Favorites"),icon:Ma}],a=e.value?i.filter(({id:n})=>n==="files"):i;return{allViews:i,availableViews:a}}const Rn={key:0,class:"file-picker__side"},On=me({__name:"FilePickerNavigation",props:{currentView:{},filterString:{},isCollapsed:{type:Boolean},disabledNavigation:{type:Boolean}},emits:["update:currentView","update:filterString"],setup(e,{emit:i}){const a=e,n=i,{availableViews:c}=Dn(P($e()===null)),m=O(()=>c.filter(f=>f.id===a.currentView)[0]??c[0]),u=f=>n("update:filterString",f.toString());return(f,d)=>(g(),b(oe,null,[$(w(ri),{class:"file-picker__filter-input",label:w(A)("Filter file list"),"show-trailing-button":!!e.filterString,"model-value":e.filterString,"onUpdate:modelValue":u,onTrailingButtonClick:d[0]||(d[0]=p=>u(""))},{"trailing-button-icon":k(()=>[$(wn,{size:16})]),default:k(()=>[$(Ln,{size:16})]),_:1},8,["label","show-trailing-button","model-value"]),w(c).length>1&&!e.disabledNavigation?(g(),b(oe,{key:0},[e.isCollapsed?(g(),B(w(ii),{key:1,"aria-label":w(A)("Current view selector"),clearable:!1,searchable:!1,options:w(c),"model-value":m.value,"onUpdate:modelValue":d[1]||(d[1]=p=>n("update:currentView",p.id))},null,8,["aria-label","options","model-value"])):(g(),b("ul",Rn,[(g(!0),b(oe,null,ke(w(c),p=>(g(),b("li",{key:p.id},[$(w(we),{variant:e.currentView===p.id?"primary":"tertiary",wide:!0,onClick:l=>f.$emit("update:currentView",p.id)},{icon:k(()=>[$(w(ta),{path:p.icon,size:20},null,8,["path"])]),default:k(()=>[be(" "+M(p.label),1)]),_:2},1032,["variant","onClick"])]))),128))]))],64)):G("",!0)],64))}}),Sn=K(On,[["__scopeId","data-v-b91fd905"]]);function kn(e){const i=new AbortController,a=Math.round(Date.now()/1e3)-3600*24*14;return new ie(async(n,c,m)=>{m(()=>i.abort());try{const{data:u}=await e.search("/",{signal:i.signal,details:!0,data:Si(a)}),f=u.results.map(d=>xe(d));n(f)}catch(u){c(u)}})}function Fn(e,i){const a=new AbortController;return new ie(async(n,c,m)=>{m(()=>a.abort());try{const u=(await e.getDirectoryContents(ye(Ae,i),{signal:a.signal,details:!0,includeSelf:!0,data:sa()})).data.map(f=>xe(f));n({contents:u.filter(({path:f})=>f!==i),folder:u.find(({path:f})=>f===i)})}catch(u){c(u)}})}async function $n(e,i){const{data:a}=await e.stat(ye(Ae,i),{details:!0,data:sa()});return xe(a)}function Pn(e,i){const a=$i(),n=st([]),c=st(null),m=P(!0),u=P(null);async function f(p){const l=ye(i.value,p);await a.createDirectory(ye(Ae,l));const v=await $n(a,l);return n.value=[...n.value,v],v}async function d(){u.value&&u.value.cancel(),m.value=!0,e.value==="favorites"?u.value=Pi(a,i.value):e.value==="recent"?u.value=kn(a):u.value=Fn(a,i.value);const p=await u.value;if(p)"folder"in p?(c.value=p.folder,n.value=p.contents):(c.value=null,n.value=p);else return;u.value=null,m.value=!1}return Kt([e,i],()=>d()),Ne(()=>d()),{isLoading:m,files:n,folder:c,loadFiles:d,createDirectory:f}}function Bn(e){const i=O(()=>e.value.map(a=>a.split("/")));return{isSupportedMimeType:a=>{const n=a.split("/");return i.value.some(([c,m])=>(n[0]===c||c==="*")&&(n[1]===m||m==="*"))}}}const Mn={class:"file-picker__main"},xn={key:1,class:"file-picker__view"},Un=me({__name:"FilePicker",props:{buttons:{},name:{},allowPickDirectory:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},disabledNavigation:{type:Boolean,default:!1},filterFn:{type:Function,default:void 0},canPickFn:{type:Function,default:void 0},mimetypeFilter:{default:()=>[]},multiselect:{type:Boolean,default:!1},path:{default:void 0}},emits:["close"],setup(e,{emit:i}){const a=e,n=i,c=P(!0),m=P("files"),u=P(window?.sessionStorage.getItem("NC.FilePicker.LastPath")||"/"),f=P(""),d=O({get:()=>m.value==="files"?f.value||a.path||u.value:"/",set:S=>{f.value=S}}),p=st([]),{files:l,folder:v,isLoading:E,loadFiles:I,createDirectory:V}=Pn(m,d);Kt([f],()=>{a.path===void 0&&f.value&&window.sessionStorage.setItem("NC.FilePicker.LastPath",f.value),p.value=[]});let _=!1;const W=O(()=>{const S=p.value.length===0&&a.allowPickDirectory&&v.value?[v.value]:p.value;return(typeof a.buttons=="function"?a.buttons(S,d.value,m.value):a.buttons).map(y=>({...y,disabled:y.disabled||E.value,callback:()=>{_=!0,H(y.callback,S)}}))});async function H(S,y){await S(y),n("close",y),_=!1}const te=O(()=>m.value==="favorites"?A("Favorites"):m.value==="recent"?A("Recent"):""),J=P(""),{isSupportedMimeType:C}=Bn(Jt(a,"mimetypeFilter"));Ne(()=>I());const{showHiddenFiles:F}=ma(),x=O(()=>{let S=l.value;return F.value||(S=S.filter(y=>!y.basename.startsWith("."))),a.mimetypeFilter.length>0&&(S=S.filter(y=>y.type==="folder"||y.mime&&C(y.mime))),J.value&&(S=S.filter(y=>y.basename.toLowerCase().includes(J.value.toLowerCase()))),a.filterFn&&(S=S.filter(y=>a.filterFn(y))),S}),D=O(()=>m.value==="files"?A("Upload some content or sync with your devices!"):m.value==="recent"?A("Files and folders you recently modified will show up here."):A("Files and folders you mark as favorite will show up here."));async function re(S){try{const y=await V(S);f.value=y.path,Oa("files:node:created",l.value.filter(N=>N.basename===S)[0])}catch(y){Te.warn("Could not create new folder",{name:S,error:y}),ct(A("Could not create the new folder"))}}function o(S){!S&&!_&&n("close")}return(S,y)=>(g(),B(w(Wa),{open:c.value,"onUpdate:open":[y[6]||(y[6]=N=>c.value=N),o],buttons:W.value,name:e.name,size:"large","content-classes":"file-picker__content","dialog-classes":"file-picker","navigation-classes":"file-picker__navigation"},{navigation:k(({isCollapsed:N})=>[$(Sn,{"current-view":m.value,"onUpdate:currentView":y[0]||(y[0]=ne=>m.value=ne),"filter-string":J.value,"onUpdate:filterString":y[1]||(y[1]=ne=>J.value=ne),"is-collapsed":N,"disabled-navigation":e.disabledNavigation},null,8,["current-view","filter-string","is-collapsed","disabled-navigation"])]),default:k(()=>[T("div",Mn,[m.value==="files"?(g(),B(hn,{key:0,path:d.value,"onUpdate:path":y[2]||(y[2]=N=>d.value=N),"show-menu":!e.noMenu,onCreateNode:re},null,8,["path","show-menu"])):(g(),b("div",xn,[T("h3",null,M(te.value),1)])),w(E)||x.value.length>0?(g(),B(Zr,{key:2,path:d.value,"onUpdate:path":[y[3]||(y[3]=N=>d.value=N),y[5]||(y[5]=N=>m.value="files")],"selected-files":p.value,"onUpdate:selectedFiles":y[4]||(y[4]=N=>p.value=N),"allow-pick-directory":e.allowPickDirectory,"current-view":m.value,files:x.value,multiselect:e.multiselect,loading:w(E),name:te.value,"can-pick":e.canPickFn},null,8,["path","selected-files","allow-pick-directory","current-view","files","multiselect","loading","name","can-pick"])):J.value?(g(),B(w(Ct),{key:3,name:w(A)("No matching files"),description:w(A)("No files matching your filter were found.")},{icon:k(()=>[$(ot)]),_:1},8,["name","description"])):(g(),B(w(Ct),{key:4,name:w(A)("No files in here"),description:D.value},{icon:k(()=>[$(ot)]),_:1},8,["name","description"]))])]),_:1},8,["open","buttons","name"]))}}),rs=K(Un,[["__scopeId","data-v-303416d3"]]);export{rs as default}; -//# sourceMappingURL=FilePicker-W-IYpVkn-FlhTGZkn.chunk.mjs.map +`?(t.line++,t.column=0):t.column++);t.textNode+=r.substring(L,h-1)}s==="<"&&!(t.sawRoot&&t.closedRoot&&!t.strict)?(t.state=o.OPEN_WAKA,t.startTagPosition=t.position):(!C(s)&&(!t.sawRoot||t.closedRoot)&&R(t,"Text data outside of root node."),s==="&"?t.state=o.TEXT_ENTITY:t.textNode+=s);continue;case o.SCRIPT:s==="<"?t.state=o.SCRIPT_ENDING:t.script+=s;continue;case o.SCRIPT_ENDING:s==="/"?t.state=o.CLOSE_TAG:(t.script+="<"+s,t.state=o.SCRIPT);continue;case o.OPEN_WAKA:if(s==="!")t.state=o.SGML_DECL,t.sgmlDecl="";else if(!C(s))if(D(W,s))t.state=o.OPEN_TAG,t.tagName=s;else if(s==="/")t.state=o.CLOSE_TAG,t.tagName="";else if(s==="?")t.state=o.PROC_INST,t.procInstName=t.procInstBody="";else{if(R(t,"Unencoded <"),t.startTagPosition+1"?(N(t,"onsgmldeclaration",t.sgmlDecl),t.sgmlDecl="",t.state=o.TEXT):(F(s)&&(t.state=o.SGML_DECL_QUOTED),t.sgmlDecl+=s);continue;case o.SGML_DECL_QUOTED:s===t.q&&(t.state=o.SGML_DECL,t.q=""),t.sgmlDecl+=s;continue;case o.DOCTYPE:s===">"?(t.state=o.TEXT,N(t,"ondoctype",t.doctype),t.doctype=!0):(t.doctype+=s,s==="["?t.state=o.DOCTYPE_DTD:F(s)&&(t.state=o.DOCTYPE_QUOTED,t.q=s));continue;case o.DOCTYPE_QUOTED:t.doctype+=s,s===t.q&&(t.q="",t.state=o.DOCTYPE);continue;case o.DOCTYPE_DTD:s==="]"?(t.doctype+=s,t.state=o.DOCTYPE):s==="<"?(t.state=o.OPEN_WAKA,t.startTagPosition=t.position):F(s)?(t.doctype+=s,t.state=o.DOCTYPE_DTD_QUOTED,t.q=s):t.doctype+=s;continue;case o.DOCTYPE_DTD_QUOTED:t.doctype+=s,s===t.q&&(t.state=o.DOCTYPE_DTD,t.q="");continue;case o.COMMENT:s==="-"?t.state=o.COMMENT_ENDING:t.comment+=s;continue;case o.COMMENT_ENDING:s==="-"?(t.state=o.COMMENT_ENDED,t.comment=Et(t.opt,t.comment),t.comment&&N(t,"oncomment",t.comment),t.comment=""):(t.comment+="-"+s,t.state=o.COMMENT);continue;case o.COMMENT_ENDED:s!==">"?(R(t,"Malformed comment"),t.comment+="--"+s,t.state=o.COMMENT):t.doctype&&t.doctype!==!0?t.state=o.DOCTYPE_DTD:t.state=o.TEXT;continue;case o.CDATA:s==="]"?t.state=o.CDATA_ENDING:t.cdata+=s;continue;case o.CDATA_ENDING:s==="]"?t.state=o.CDATA_ENDING_2:(t.cdata+="]"+s,t.state=o.CDATA);continue;case o.CDATA_ENDING_2:s===">"?(t.cdata&&N(t,"oncdata",t.cdata),N(t,"onclosecdata"),t.cdata="",t.state=o.TEXT):s==="]"?t.cdata+="]":(t.cdata+="]]"+s,t.state=o.CDATA);continue;case o.PROC_INST:s==="?"?t.state=o.PROC_INST_ENDING:C(s)?t.state=o.PROC_INST_BODY:t.procInstName+=s;continue;case o.PROC_INST_BODY:if(!t.procInstBody&&C(s))continue;s==="?"?t.state=o.PROC_INST_ENDING:t.procInstBody+=s;continue;case o.PROC_INST_ENDING:s===">"?(N(t,"onprocessinginstruction",{name:t.procInstName,body:t.procInstBody}),t.procInstName=t.procInstBody="",t.state=o.TEXT):(t.procInstBody+="?"+s,t.state=o.PROC_INST_BODY);continue;case o.OPEN_TAG:D(H,s)?t.tagName+=s:(ha(t),s===">"?de(t):s==="/"?t.state=o.OPEN_TAG_SLASH:(C(s)||R(t,"Invalid character in tag name"),t.state=o.ATTRIB));continue;case o.OPEN_TAG_SLASH:s===">"?(de(t,!0),Ge(t)):(R(t,"Forward-slash in opening tag not followed by >"),t.state=o.ATTRIB);continue;case o.ATTRIB:if(C(s))continue;s===">"?de(t):s==="/"?t.state=o.OPEN_TAG_SLASH:D(W,s)?(t.attribName=s,t.attribValue="",t.state=o.ATTRIB_NAME):R(t,"Invalid attribute name");continue;case o.ATTRIB_NAME:s==="="?t.state=o.ATTRIB_VALUE:s===">"?(R(t,"Attribute without value"),t.attribValue=t.attribName,ze(t),de(t)):C(s)?t.state=o.ATTRIB_NAME_SAW_WHITE:D(H,s)?t.attribName+=s:R(t,"Invalid attribute name");continue;case o.ATTRIB_NAME_SAW_WHITE:if(s==="=")t.state=o.ATTRIB_VALUE;else{if(C(s))continue;R(t,"Attribute without value"),t.tag.attributes[t.attribName]="",t.attribValue="",N(t,"onattribute",{name:t.attribName,value:""}),t.attribName="",s===">"?de(t):D(W,s)?(t.attribName=s,t.state=o.ATTRIB_NAME):(R(t,"Invalid attribute name"),t.state=o.ATTRIB)}continue;case o.ATTRIB_VALUE:if(C(s))continue;F(s)?(t.q=s,t.state=o.ATTRIB_VALUE_QUOTED):(t.opt.unquotedAttributeValues||ve(t,"Unquoted attribute value"),t.state=o.ATTRIB_VALUE_UNQUOTED,t.attribValue=s);continue;case o.ATTRIB_VALUE_QUOTED:if(s!==t.q){s==="&"?t.state=o.ATTRIB_VALUE_ENTITY_Q:t.attribValue+=s;continue}ze(t),t.q="",t.state=o.ATTRIB_VALUE_CLOSED;continue;case o.ATTRIB_VALUE_CLOSED:C(s)?t.state=o.ATTRIB:s===">"?de(t):s==="/"?t.state=o.OPEN_TAG_SLASH:D(W,s)?(R(t,"No whitespace between attributes"),t.attribName=s,t.attribValue="",t.state=o.ATTRIB_NAME):R(t,"Invalid attribute name");continue;case o.ATTRIB_VALUE_UNQUOTED:if(!x(s)){s==="&"?t.state=o.ATTRIB_VALUE_ENTITY_U:t.attribValue+=s;continue}ze(t),s===">"?de(t):t.state=o.ATTRIB;continue;case o.CLOSE_TAG:if(t.tagName)s===">"?Ge(t):D(H,s)?t.tagName+=s:t.script?(t.script+=""?Ge(t):R(t,"Invalid characters in closing tag");continue;case o.TEXT_ENTITY:case o.ATTRIB_VALUE_ENTITY_Q:case o.ATTRIB_VALUE_ENTITY_U:var z,Q;switch(t.state){case o.TEXT_ENTITY:z=o.TEXT,Q="textNode";break;case o.ATTRIB_VALUE_ENTITY_Q:z=o.ATTRIB_VALUE_QUOTED,Q="attribValue";break;case o.ATTRIB_VALUE_ENTITY_U:z=o.ATTRIB_VALUE_UNQUOTED,Q="attribValue";break}if(s===";"){var Z=fa(t);t.opt.unparsedEntities&&!Object.values(i.XML_ENTITIES).includes(Z)?(t.entity="",t.state=z,t.write(Z)):(t[Q]+=Z,t.entity="",t.state=z)}else D(t.entity.length?J:te,s)?t.entity+=s:(R(t,"Invalid character in entity name"),t[Q]+="&"+t.entity+s,t.entity="",t.state=z);continue;default:throw new Error(t,"Unknown state: "+t.state)}return t.position>=t.bufferCheckPosition&&c(t),t}String.fromCodePoint||(function(){var r=String.fromCharCode,t=Math.floor,h=function(){var s=16384,L=[],U,z,Q=-1,Z=arguments.length;if(!Z)return"";for(var he="";++Q1114111||t(X)!==X)throw RangeError("Invalid code point: "+X);X<=65535?L.push(X):(X-=65536,U=(X>>10)+55296,z=X%1024+56320,L.push(U,z)),(Q+1===Z||L.length>s)&&(he+=r.apply(null,L),L.length=0)}return he};Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:h,configurable:!0,writable:!0}):String.fromCodePoint=h})()})(e)})(jt)),jt}Xi();var Se=(e=>(e.ReservedName="reserved name",e.Character="character",e.Extension="extension",e))(Se||{});class Ee extends Error{constructor(i){super(`Invalid ${i.reason} '${i.segment}' in filename '${i.filename}'`,{cause:i})}get filename(){return this.cause.filename}get reason(){return this.cause.reason}get segment(){return this.cause.segment}}function ji(e){const i=La().files,a=i.forbidden_filename_characters??window._oc_config?.forbidden_filenames_characters??["/","\\"];for(const u of a)if(e.includes(u))throw new Ee({segment:u,reason:"character",filename:e});if(e=e.toLocaleLowerCase(),(i.forbidden_filenames??[".htaccess"]).includes(e))throw new Ee({filename:e,segment:e,reason:"reserved name"});const n=e.indexOf(".",1),c=e.substring(0,n===-1?void 0:n);if((i.forbidden_filename_basenames??[]).includes(c))throw new Ee({filename:e,segment:c,reason:"reserved name"});const m=i.forbidden_filename_extensions??[".part",".filepart"];for(const u of m)if(e.length>u.length&&e.endsWith(u))throw new Ee({segment:u,reason:"extension",filename:e})}const at=["B","KB","MB","GB","TB","PB"],it=["B","KiB","MiB","GiB","TiB","PiB"];function Wi(e,i=!1,a=!1,n=!1){a=a&&!n,typeof e=="string"&&(e=Number(e));let c=e>0?Math.floor(Math.log(e)/Math.log(n?1e3:1024)):0;c=Math.min((a?it.length:at.length)-1,c);const m=a?it[c]:at[c];let u=(e/Math.pow(n?1e3:1024,c)).toFixed(1);return i===!0&&c===0?(u!=="0.0"?"< 1 ":"0 ")+(a?it[1]:at[1]):(c<2?u=parseFloat(u).toFixed(0):u=parseFloat(u).toLocaleString(Zt()),u+" "+m)}function Yt(e){return e instanceof Date?e.toISOString():String(e)}function Yi(e,i,a){i=i??[m=>m],a=a??[];const n=i.map((m,u)=>(a[u]??"asc")==="asc"?1:-1),c=Intl.Collator([Da(),Zt()],{numeric:!0,usage:"sort"});return[...e].sort((m,u)=>{for(const[f,d]of i.entries()){const p=c.compare(Yt(d(m)),Yt(d(u)));if(p!==0)return p*n[f]}return 0})}function qi(e,i={}){const a={sortingMode:"basename",sortingOrder:"asc",...i};function n(u){const f=u.displayname||u.attributes?.displayname||u.basename||"";return u.type===le.Folder?f:f.lastIndexOf(".")>0?f.slice(0,f.lastIndexOf(".")):f}const c=[...a.sortFavoritesFirst?[u=>u.attributes?.favorite!==1]:[],...a.sortFoldersFirst?[u=>u.type!=="folder"]:[],...a.sortingMode!=="basename"?[u=>u[a.sortingMode]??u.attributes[a.sortingMode]]:[],u=>n(u),u=>u.basename],m=[...a.sortFavoritesFirst?["asc"]:[],...a.sortFoldersFirst?["asc"]:[],...a.sortingMode==="mtime"?[a.sortingOrder==="asc"?"desc":"asc"]:[],...a.sortingMode!=="mtime"&&a.sortingMode!=="basename"?[a.sortingOrder]:[],a.sortingOrder,a.sortingOrder];return Yi(e,c,m)}const Qi=new ti({concurrency:5});function Zi(e){const{resolve:i,promise:a}=Promise.withResolvers();return Qi.add(()=>{const n=new Image;return n.onerror=()=>i(!1),n.onload=()=>i(!0),n.src=e,a}),a}function Ki(e,i={}){i={size:32,cropPreview:!1,mimeFallback:!0,...i};try{const a=e.attributes?.previewUrl||ut("/core/preview?fileId={fileid}",{fileid:e.fileid});let n;try{n=new URL(a)}catch{n=new URL(a,window.location.origin)}return n.searchParams.set("x",`${i.size}`),n.searchParams.set("y",`${i.size}`),n.searchParams.set("mimeFallback",`${i.mimeFallback}`),n.searchParams.set("a",i.cropPreview===!0?"0":"1"),n.searchParams.set("c",`${e.attributes.etag}`),n}catch{return null}}function Ji(e,i){const a=P(null),n=P(!1);return Ra(()=>{n.value=!1,a.value=Ki(_e(e),_e(i||{})),a.value&&_e(e).type===le.File&&Zi(a.value.href).then(c=>{n.value=c})}),{previewURL:a,previewLoaded:n}}const K=(e,i)=>{const a=e.__vccOpts||e;for(const[n,c]of i)a[n]=c;return a},er={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},tr=["aria-hidden","aria-label"],ar=["fill","width","height"],ir={d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"},rr={key:0};function nr(e,i,a,n,c,m){return v(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon file-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",ir,[a.title?(v(),b("title",rr,M(a.title),1)):G("",!0)])],8,ar))],16,tr)}const ot=K(er,[["render",nr]]),sr={name:"MenuDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},or=["aria-hidden","aria-label"],lr=["fill","width","height"],cr={d:"M7,10L12,15L17,10H7Z"},ur={key:0};function dr(e,i,a,n,c,m){return v(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon menu-down-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",cr,[a.title?(v(),b("title",ur,M(a.title),1)):G("",!0)])],8,lr))],16,or)}const rt=K(sr,[["render",dr]]),pr={name:"MenuUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mr=["aria-hidden","aria-label"],hr=["fill","width","height"],fr={d:"M7,15L12,10L17,15H7Z"},vr={key:0};function gr(e,i,a,n,c,m){return v(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon menu-up-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",fr,[a.title?(v(),b("title",vr,M(a.title),1)):G("",!0)])],8,hr))],16,mr)}const nt=K(pr,[["render",gr]]),Er={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},br=["aria-hidden","aria-label"],_r=["fill","width","height"],wr={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},yr={key:0};function Tr(e,i,a,n,c,m){return v(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",wr,[a.title?(v(),b("title",yr,M(a.title),1)):G("",!0)])],8,_r))],16,br)}const da=K(Er,[["render",Tr]]),pa={"file-picker__file-icon":"_file-picker__file-icon_3v9zx_9","file-picker__file-icon--primary":"_file-picker__file-icon--primary_3v9zx_21","file-picker__file-icon-overlay":"_file-picker__file-icon-overlay_3v9zx_25"},Ir=me({__name:"FilePreview",props:{node:{},cropImagePreviews:{type:Boolean}},setup(e){const i=e,a=P(pa),{previewURL:n,previewLoaded:c}=Ji(Jt(i,"node"),O(()=>({cropPreview:i.cropImagePreviews}))),m=O(()=>i.node.type===le.File),u=O(()=>{if(i.node.type!==le.Folder)return null;if(i.node.attributes?.["is-encrypted"]===1)return Ua;if(i.node.attributes?.["is-tag"])return za;const f=Object.values(i.node.attributes?.["share-types"]||{}).flat();if(f.some(d=>d===Lt.Link||d===Lt.Email))return Ga;if(f.length>0)return At;switch(i.node.attributes?.["mount-type"]){case"external":case"external-session":return Ha;case"group":return Va;case"shared":return At}return null});return(f,d)=>(v(),b("div",{style:Xa(w(c)?{backgroundImage:`url(${w(n)})`}:void 0),class:fe(a.value["file-picker__file-icon"])},[w(c)?G("",!0):(v(),b(oe,{key:0},[m.value?(v(),B(ot,{key:0,size:32})):(v(),b(oe,{key:1},[u.value?(v(),B(w(ta),{key:0,class:fe(a.value["file-picker__file-icon-overlay"]),inline:"",path:u.value,size:16},null,8,["class","path"])):G("",!0),$(da,{class:fe(a.value["file-picker__file-icon--primary"]),size:32},null,8,["class"])],64))],64))],6))}}),Nr=["tabindex","aria-selected","data-filename"],Ar={class:"row-name"},Cr={class:"file-picker__name-container","data-testid":"row-name"},Lr=["title","textContent"],Dr=["textContent"],Rr={class:"row-size"},Or={class:"row-modified"},Sr=me({__name:"FileListRow",props:{allowPickDirectory:{type:Boolean},selected:{type:Boolean},showCheckbox:{type:Boolean},canPick:{type:Boolean},node:{},cropImagePreviews:{type:Boolean}},emits:["update:selected","enterDirectory"],setup(e,{emit:i}){const a=e,n=i,c=O(()=>a.node.mtime??0),m=O(()=>Qt(a.node.displayname)),u=O(()=>a.node.displayname.slice(0,m.value?-m.value.length:void 0)),f=O(()=>a.node.type===le.Folder),d=O(()=>a.canPick&&(a.allowPickDirectory||!f.value)),p=O(()=>(a.node.permissions&ee.READ)===ee.READ);function l(){d.value&&n("update:selected",!a.selected)}function g(){f.value?p.value&&n("enterDirectory",a.node):l()}function E(I){I.key==="Enter"&&g()}return(I,V)=>(v(),b("tr",ae({tabindex:e.showCheckbox&&!f.value?void 0:0,"aria-selected":d.value?e.selected:void 0,class:["file-picker__row",[{"file-picker__row--selected":e.selected&&!e.showCheckbox,"file-picker__row--not-navigatable":f.value&&!p.value,"file-picker__row--not-pickable":!d.value}]],"data-filename":e.node.basename,"data-testid":"file-list-row"},xa({click:g,...!e.showCheckbox||f.value?{keydown:E}:{}},!0)),[e.showCheckbox?(v(),b("td",{key:0,class:"row-checkbox",onClick:Re(()=>{},["stop"])},[$(w(aa),{"aria-label":w(A)("Select the row for {nodename}",{nodename:u.value}),disabled:!d.value,"data-testid":"row-checkbox","model-value":e.selected,"onUpdate:modelValue":l},null,8,["aria-label","disabled","model-value"])])):G("",!0),T("td",Ar,[T("div",Cr,[$(Ir,{node:e.node,"crop-image-previews":e.cropImagePreviews},null,8,["node","crop-image-previews"]),T("div",{class:"file-picker__file-name",title:u.value,textContent:M(u.value)},null,8,Lr),T("div",{class:"file-picker__file-extension",textContent:M(m.value)},null,8,Dr)])]),T("td",Rr,M(w(Wi)(e.node.size||0)),1),T("td",Or,[$(w(ei),{timestamp:c.value,"ignore-seconds":""},null,8,["timestamp"])])],16,Nr))}}),kr=K(Sr,[["__scopeId","data-v-2af740c4"]]),Fr={"aria-hidden":"true",class:"file-picker__row loading-row"},$r={key:0,class:"row-checkbox"},Pr={class:"row-name"},Br={class:"row-wrapper"},Mr=me({__name:"LoadingTableRow",props:{showCheckbox:{type:Boolean}},setup(e){return(i,a)=>(v(),b("tr",Fr,[e.showCheckbox?(v(),b("td",$r,[...a[0]||(a[0]=[T("span",null,null,-1)])])):G("",!0),T("td",Pr,[T("div",Br,[T("span",{class:fe(w(pa)["file-picker__file-icon"])},null,2),a[1]||(a[1]=T("span",null,null,-1))])]),a[2]||(a[2]=T("td",{class:"row-size"},[T("span")],-1)),a[3]||(a[3]=T("td",{class:"row-modified"},[T("span")],-1))]))}}),xr=K(Mr,[["__scopeId","data-v-1f96131b"]]);function ma(){const e=ea("files","config",null),i=P(e?.show_hidden??!0),a=P(e?.sort_favorites_first??!0),n=P(e?.crop_image_previews??!0);return Ne(async()=>{if(Ie())Te.debug("Skip loading files settings - currently on public share");else try{const{data:c}=await ia.get(ut("/apps/files/api/v1/configs"));i.value=c?.data?.show_hidden??!1,a.value=c?.data?.sort_favorites_first??!0,n.value=c?.data?.crop_image_previews??!0}catch(c){Te.error("Could not load files settings",{error:c}),ct(A("Could not load files settings"))}}),{showHiddenFiles:i,sortFavoritesFirst:a,cropImagePreviews:n}}function Ur(e){const i=p=>p==="asc"?"ascending":p==="desc"?"descending":"none",a=ea("files","viewConfigs",null),n=P({sortBy:a?.files?.sorting_mode??"basename",order:i(a?.files?.sorting_direction??"asc")}),c=P({sortBy:a?.recent?.sorting_mode??"basename",order:i(a?.recent?.sorting_direction??"asc")}),m=P({sortBy:a?.favorites?.sorting_mode??"basename",order:i(a?.favorites?.sorting_direction??"asc")});Ne(async()=>{if(Ie())Te.debug("Skip loading files views - currently on public share");else try{const{data:p}=await ia.get(ut("/apps/files/api/v1/views"));n.value={sortBy:p?.data?.files?.sorting_mode??"basename",order:i(p?.data?.files?.sorting_direction)},m.value={sortBy:p?.data?.favorites?.sorting_mode??"basename",order:i(p?.data?.favorites?.sorting_direction)},c.value={sortBy:p?.data?.recent?.sorting_mode??"basename",order:i(p?.data?.recent?.sorting_direction)}}catch(p){Te.error("Could not load files views",{error:p}),ct(A("Could not load files views"))}});const u=O(()=>_e(e||"files")==="files"?n.value:_e(e)==="recent"?c.value:m.value),f=O(()=>u.value.sortBy),d=O(()=>u.value.order);return{filesViewConfig:n,favoritesViewConfig:m,recentViewConfig:c,currentConfig:u,sortBy:f,order:d}}const zr={key:0,class:"row-checkbox"},Gr={class:"hidden-visually"},Vr=["aria-sort"],Hr={class:"header-wrapper"},Xr={key:2,style:{width:"44px"}},jr=["aria-sort"],Wr={key:2,style:{width:"44px"}},Yr=["aria-sort"],qr={key:2,style:{width:"44px"}},Qr=me({__name:"FileList",props:ka({currentView:{},multiselect:{type:Boolean},allowPickDirectory:{type:Boolean},loading:{type:Boolean},files:{},canPick:{type:Function}},{path:{required:!0},pathModifiers:{},selectedFiles:{required:!0},selectedFilesModifiers:{}}),emits:["update:path","update:selectedFiles"],setup(e){const i=Nt(e,"path"),a=Nt(e,"selectedFiles"),n=e,c=P(),{currentConfig:m}=Ur(n.currentView),u=O(()=>c.value??m.value),f=O(()=>u.value.sortBy==="basename"?u.value.order==="none"?void 0:u.value.order:void 0),d=O(()=>u.value.sortBy==="size"?u.value.order==="none"?void 0:u.value.order:void 0),p=O(()=>u.value.sortBy==="mtime"?u.value.order==="none"?void 0:u.value.order:void 0);function l(F){u.value.sortBy===F?u.value.order==="ascending"?c.value={sortBy:u.value.sortBy,order:"descending"}:c.value={sortBy:u.value.sortBy,order:"ascending"}:c.value={sortBy:F,order:"ascending"}}const{sortFavoritesFirst:g,cropImagePreviews:E}=ma(),I=O(()=>qi(n.files,{sortFoldersFirst:!0,sortFavoritesFirst:g.value,sortingOrder:u.value.order==="descending"?"desc":"asc",sortingMode:u.value.sortBy})),V=O(()=>n.files.filter(F=>n.allowPickDirectory||F.type!==le.Folder)),_=O(()=>!n.loading&&a.value.length>0&&a.value.length>=V.value.length);function W(){a.value.lengthx.path!==F.path):n.multiselect?a.value=[...a.value,F]:a.value=[F]}function te(F){i.value=F.path}const J=P(4),C=P();{const F=()=>Fa(()=>{const x=C.value?.parentElement?.children||[];let D=C.value?.parentElement?.clientHeight||450;for(let re=0;re{window.addEventListener("resize",F),F()}),$a(()=>{window.removeEventListener("resize",F)})}return(F,x)=>(v(),b("div",{ref_key:"fileContainer",ref:C,class:"file-picker__files"},[T("table",null,[T("thead",null,[T("tr",null,[e.multiselect?(v(),b("th",zr,[T("span",Gr,M(w(A)("Select entry")),1),e.multiselect?(v(),B(w(aa),{key:0,"aria-label":w(A)("Select all entries"),"data-testid":"select-all-checkbox","model-value":_.value,"onUpdate:modelValue":W},null,8,["aria-label","model-value"])):G("",!0)])):G("",!0),T("th",{"aria-sort":f.value,class:"row-name"},[T("div",Hr,[x[3]||(x[3]=T("span",{class:"file-picker__header-preview"},null,-1)),$(w(we),{"data-test":"file-picker_sort-name",variant:"tertiary",wide:"",onClick:x[0]||(x[0]=D=>l("basename"))},{icon:k(()=>[f.value==="ascending"?(v(),B(nt,{key:0,size:20})):f.value==="descending"?(v(),B(rt,{key:1,size:20})):(v(),b("span",Xr))]),default:k(()=>[be(" "+M(w(A)("Name")),1)]),_:1})])],8,Vr),T("th",{"aria-sort":d.value,class:"row-size"},[$(w(we),{variant:"tertiary",wide:"",onClick:x[1]||(x[1]=D=>l("size"))},{icon:k(()=>[d.value==="ascending"?(v(),B(nt,{key:0,size:20})):d.value==="descending"?(v(),B(rt,{key:1,size:20})):(v(),b("span",Wr))]),default:k(()=>[be(" "+M(w(A)("Size")),1)]),_:1})],8,jr),T("th",{"aria-sort":p.value,class:"row-modified"},[$(w(we),{variant:"tertiary",wide:"",onClick:x[2]||(x[2]=D=>l("mtime"))},{icon:k(()=>[p.value==="ascending"?(v(),B(nt,{key:0,size:20})):p.value==="descending"?(v(),B(rt,{key:1,size:20})):(v(),b("span",qr))]),default:k(()=>[be(" "+M(w(A)("Modified")),1)]),_:1})],8,Yr)])]),T("tbody",null,[e.loading?(v(!0),b(oe,{key:0},ke(J.value,D=>(v(),B(xr,{key:D,"show-checkbox":e.multiselect},null,8,["show-checkbox"]))),128)):(v(!0),b(oe,{key:1},ke(I.value,D=>(v(),B(kr,{key:D.fileid||D.path,"allow-pick-directory":e.allowPickDirectory,"show-checkbox":e.multiselect,"can-pick":(e.multiselect||a.value.length===0||a.value.includes(D))&&(e.canPick===void 0||e.canPick(D)),selected:a.value.includes(D),node:D,"crop-image-previews":w(E),"onUpdate:selected":re=>H(D),onEnterDirectory:te},null,8,["allow-pick-directory","show-checkbox","can-pick","selected","node","crop-image-previews","onUpdate:selected"]))),128))])])],512))}}),Zr=K(Qr,[["__scopeId","data-v-68ec5c33"]]),Kr={name:"HomeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Jr=["aria-hidden","aria-label"],en=["fill","width","height"],tn={d:"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"},an={key:0};function rn(e,i,a,n,c,m){return v(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon home-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",tn,[a.title?(v(),b("title",an,M(a.title),1)):G("",!0)])],8,en))],16,Jr)}const nn=K(Kr,[["render",rn]]),sn={name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},on=["aria-hidden","aria-label"],ln=["fill","width","height"],cn={d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"},un={key:0};function dn(e,i,a,n,c,m){return v(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon plus-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",cn,[a.title?(v(),b("title",un,M(a.title),1)):G("",!0)])],8,ln))],16,on)}const pn=K(sn,[["render",dn]]),mn=me({__name:"FilePickerBreadcrumbs",props:{path:{},showMenu:{type:Boolean}},emits:["update:path","create-node"],setup(e,{emit:i}){const a=e,n=i,c=P(!1),m=P(""),u=Sa("nameInput");function f(){const l=m.value.trim(),g=u.value?.$el?.querySelector("input");let E="";try{ji(l)}catch(I){if(!(I instanceof Ee))throw I;switch(I.reason){case Se.Character:E=A('"{char}" is not allowed inside a folder name.',{char:I.segment});break;case Se.ReservedName:E=A('"{segment}" is a reserved name and not allowed for folder names.',{segment:I.segment});break;case Se.Extension:E=A('Folder names must not end with "{extension}".',{extension:I.segment});break;default:E=A("Invalid folder name.")}}return g&&g.setCustomValidity(E),E===""}function d(){const l=m.value.trim();f()&&(c.value=!1,n("create-node",l),m.value="")}const p=O(()=>a.path.split("/").filter(l=>l!=="").map((l,g,E)=>({name:l,path:"/"+E.slice(0,g+1).join("/")})));return(l,g)=>(v(),B(w(yi),{class:"file-picker__breadcrumbs"},qt({default:k(()=>[$(w(Fe),{name:w(A)("All files"),title:w(A)("Home"),onClick:g[0]||(g[0]=E=>n("update:path","/"))},{icon:k(()=>[$(nn,{size:20})]),_:1},8,["name","title"]),(v(!0),b(oe,null,ke(p.value,E=>(v(),B(w(Fe),{key:E.path,name:E.name,title:E.path,onClick:I=>n("update:path",E.path)},null,8,["name","title","onClick"]))),128))]),_:2},[e.showMenu?{name:"actions",fn:k(()=>[$(w(lt),{open:c.value,"onUpdate:open":g[2]||(g[2]=E=>c.value=E),"aria-label":w(A)("Create directory"),"force-menu":!0,"force-name":!0,"menu-name":w(A)("New"),variant:"secondary",onClose:g[3]||(g[3]=E=>m.value="")},{icon:k(()=>[$(pn,{size:20})]),default:k(()=>[$(w(ai),{ref_key:"nameInput",ref:u,modelValue:m.value,"onUpdate:modelValue":[g[1]||(g[1]=E=>m.value=E),f],label:w(A)("New folder"),placeholder:w(A)("New folder name"),onSubmit:d},{icon:k(()=>[$(da,{size:20})]),_:1},8,["modelValue","label","placeholder"])]),_:1},8,["open","aria-label","menu-name"])]),key:"0"}:void 0]),1024))}}),hn=K(mn,[["__scopeId","data-v-4ce40fd0"]]),fn={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},vn=["aria-hidden","aria-label"],gn=["fill","width","height"],En={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},bn={key:0};function _n(e,i,a,n,c,m){return v(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon close-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",En,[a.title?(v(),b("title",bn,M(a.title),1)):G("",!0)])],8,gn))],16,vn)}const wn=K(fn,[["render",_n]]),yn={name:"MagnifyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Tn=["aria-hidden","aria-label"],In=["fill","width","height"],Nn={d:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},An={key:0};function Cn(e,i,a,n,c,m){return v(),b("span",ae(e.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon magnify-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),b("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[T("path",Nn,[a.title?(v(),b("title",An,M(a.title),1)):G("",!0)])],8,In))],16,Tn)}const Ln=K(yn,[["render",Cn]]);function Dn(e){const i=[{id:"files",label:A("All files"),icon:Pa},{id:"recent",label:A("Recent"),icon:Ba},{id:"favorites",label:A("Favorites"),icon:Ma}],a=e.value?i.filter(({id:n})=>n==="files"):i;return{allViews:i,availableViews:a}}const Rn={key:0,class:"file-picker__side"},On=me({__name:"FilePickerNavigation",props:{currentView:{},filterString:{},isCollapsed:{type:Boolean},disabledNavigation:{type:Boolean}},emits:["update:currentView","update:filterString"],setup(e,{emit:i}){const a=e,n=i,{availableViews:c}=Dn(P($e()===null)),m=O(()=>c.filter(f=>f.id===a.currentView)[0]??c[0]),u=f=>n("update:filterString",f.toString());return(f,d)=>(v(),b(oe,null,[$(w(ri),{class:"file-picker__filter-input",label:w(A)("Filter file list"),"show-trailing-button":!!e.filterString,"model-value":e.filterString,"onUpdate:modelValue":u,onTrailingButtonClick:d[0]||(d[0]=p=>u(""))},{"trailing-button-icon":k(()=>[$(wn,{size:16})]),default:k(()=>[$(Ln,{size:16})]),_:1},8,["label","show-trailing-button","model-value"]),w(c).length>1&&!e.disabledNavigation?(v(),b(oe,{key:0},[e.isCollapsed?(v(),B(w(ii),{key:1,"aria-label":w(A)("Current view selector"),clearable:!1,searchable:!1,options:w(c),"model-value":m.value,"onUpdate:modelValue":d[1]||(d[1]=p=>n("update:currentView",p.id))},null,8,["aria-label","options","model-value"])):(v(),b("ul",Rn,[(v(!0),b(oe,null,ke(w(c),p=>(v(),b("li",{key:p.id},[$(w(we),{variant:e.currentView===p.id?"primary":"tertiary",wide:!0,onClick:l=>f.$emit("update:currentView",p.id)},{icon:k(()=>[$(w(ta),{path:p.icon,size:20},null,8,["path"])]),default:k(()=>[be(" "+M(p.label),1)]),_:2},1032,["variant","onClick"])]))),128))]))],64)):G("",!0)],64))}}),Sn=K(On,[["__scopeId","data-v-b91fd905"]]);function kn(e){const i=new AbortController,a=Math.round(Date.now()/1e3)-3600*24*14;return new ie(async(n,c,m)=>{m(()=>i.abort());try{const{data:u}=await e.search("/",{signal:i.signal,details:!0,data:Si(a)}),f=u.results.map(d=>xe(d));n(f)}catch(u){c(u)}})}function Fn(e,i){const a=new AbortController;return new ie(async(n,c,m)=>{m(()=>a.abort());try{const u=(await e.getDirectoryContents(ye(Ae,i),{signal:a.signal,details:!0,includeSelf:!0,data:sa()})).data.map(f=>xe(f));n({contents:u.filter(({path:f})=>f!==i),folder:u.find(({path:f})=>f===i)})}catch(u){c(u)}})}async function $n(e,i){const{data:a}=await e.stat(ye(Ae,i),{details:!0,data:sa()});return xe(a)}function Pn(e,i){const a=$i(),n=st([]),c=st(null),m=P(!0),u=P(null);async function f(p){const l=ye(i.value,p);await a.createDirectory(ye(Ae,l));const g=await $n(a,l);return n.value=[...n.value,g],g}async function d(){u.value&&u.value.cancel(),m.value=!0,e.value==="favorites"?u.value=Pi(a,i.value):e.value==="recent"?u.value=kn(a):u.value=Fn(a,i.value);const p=await u.value;if(p)"folder"in p?(c.value=p.folder,n.value=p.contents):(c.value=null,n.value=p);else return;u.value=null,m.value=!1}return Kt([e,i],()=>d()),Ne(()=>d()),{isLoading:m,files:n,folder:c,loadFiles:d,createDirectory:f}}function Bn(e){const i=O(()=>e.value.map(a=>a.split("/")));return{isSupportedMimeType:a=>{const n=a.split("/");return i.value.some(([c,m])=>(n[0]===c||c==="*")&&(n[1]===m||m==="*"))}}}const Mn={class:"file-picker__main"},xn={key:1,class:"file-picker__view"},Un=me({__name:"FilePicker",props:{buttons:{},name:{},allowPickDirectory:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},disabledNavigation:{type:Boolean,default:!1},filterFn:{type:Function,default:void 0},canPickFn:{type:Function,default:void 0},mimetypeFilter:{default:()=>[]},multiselect:{type:Boolean,default:!1},path:{default:void 0}},emits:["close"],setup(e,{emit:i}){const a=e,n=i,c=P(!0),m=P("files"),u=P(window?.sessionStorage.getItem("NC.FilePicker.LastPath")||"/"),f=P(""),d=O({get:()=>m.value==="files"?f.value||a.path||u.value:"/",set:S=>{f.value=S}}),p=st([]),{files:l,folder:g,isLoading:E,loadFiles:I,createDirectory:V}=Pn(m,d);Kt([f],()=>{a.path===void 0&&f.value&&window.sessionStorage.setItem("NC.FilePicker.LastPath",f.value),p.value=[]});let _=!1;const W=O(()=>{const S=p.value.length===0&&a.allowPickDirectory&&g.value?[g.value]:p.value;return(typeof a.buttons=="function"?a.buttons(S,d.value,m.value):a.buttons).map(y=>({...y,disabled:y.disabled||E.value,callback:()=>{_=!0,H(y.callback,S)}}))});async function H(S,y){await S(y),n("close",y),_=!1}const te=O(()=>m.value==="favorites"?A("Favorites"):m.value==="recent"?A("Recent"):""),J=P(""),{isSupportedMimeType:C}=Bn(Jt(a,"mimetypeFilter"));Ne(()=>I());const{showHiddenFiles:F}=ma(),x=O(()=>{let S=l.value;return F.value||(S=S.filter(y=>!y.basename.startsWith("."))),a.mimetypeFilter.length>0&&(S=S.filter(y=>y.type==="folder"||y.mime&&C(y.mime))),J.value&&(S=S.filter(y=>y.basename.toLowerCase().includes(J.value.toLowerCase()))),a.filterFn&&(S=S.filter(y=>a.filterFn(y))),S}),D=O(()=>m.value==="files"?A("Upload some content or sync with your devices!"):m.value==="recent"?A("Files and folders you recently modified will show up here."):A("Files and folders you mark as favorite will show up here."));async function re(S){try{const y=await V(S);f.value=y.path,Oa("files:node:created",l.value.filter(N=>N.basename===S)[0])}catch(y){Te.warn("Could not create new folder",{name:S,error:y}),ct(A("Could not create the new folder"))}}function o(S){!S&&!_&&n("close")}return(S,y)=>(v(),B(w(Wa),{open:c.value,"onUpdate:open":[y[6]||(y[6]=N=>c.value=N),o],buttons:W.value,name:e.name,size:"large","content-classes":"file-picker__content","dialog-classes":"file-picker","navigation-classes":"file-picker__navigation"},{navigation:k(({isCollapsed:N})=>[$(Sn,{"current-view":m.value,"onUpdate:currentView":y[0]||(y[0]=ne=>m.value=ne),"filter-string":J.value,"onUpdate:filterString":y[1]||(y[1]=ne=>J.value=ne),"is-collapsed":N,"disabled-navigation":e.disabledNavigation},null,8,["current-view","filter-string","is-collapsed","disabled-navigation"])]),default:k(()=>[T("div",Mn,[m.value==="files"?(v(),B(hn,{key:0,path:d.value,"onUpdate:path":y[2]||(y[2]=N=>d.value=N),"show-menu":!e.noMenu,onCreateNode:re},null,8,["path","show-menu"])):(v(),b("div",xn,[T("h3",null,M(te.value),1)])),w(E)||x.value.length>0?(v(),B(Zr,{key:2,path:d.value,"onUpdate:path":[y[3]||(y[3]=N=>d.value=N),y[5]||(y[5]=N=>m.value="files")],"selected-files":p.value,"onUpdate:selectedFiles":y[4]||(y[4]=N=>p.value=N),"allow-pick-directory":e.allowPickDirectory,"current-view":m.value,files:x.value,multiselect:e.multiselect,loading:w(E),name:te.value,"can-pick":e.canPickFn},null,8,["path","selected-files","allow-pick-directory","current-view","files","multiselect","loading","name","can-pick"])):J.value?(v(),B(w(Ct),{key:3,name:w(A)("No matching files"),description:w(A)("No files matching your filter were found.")},{icon:k(()=>[$(ot)]),_:1},8,["name","description"])):(v(),B(w(Ct),{key:4,name:w(A)("No files in here"),description:D.value},{icon:k(()=>[$(ot)]),_:1},8,["name","description"]))])]),_:1},8,["open","buttons","name"]))}}),rs=K(Un,[["__scopeId","data-v-303416d3"]]);export{rs as default}; +//# sourceMappingURL=FilePicker-W-IYpVkn-BGFtdKH5.chunk.mjs.map diff --git a/dist/FilePicker-W-IYpVkn-FlhTGZkn.chunk.mjs.license b/dist/FilePicker-W-IYpVkn-BGFtdKH5.chunk.mjs.license similarity index 100% rename from dist/FilePicker-W-IYpVkn-FlhTGZkn.chunk.mjs.license rename to dist/FilePicker-W-IYpVkn-BGFtdKH5.chunk.mjs.license diff --git a/dist/FilePicker-W-IYpVkn-FlhTGZkn.chunk.mjs.map b/dist/FilePicker-W-IYpVkn-BGFtdKH5.chunk.mjs.map similarity index 99% rename from dist/FilePicker-W-IYpVkn-FlhTGZkn.chunk.mjs.map rename to dist/FilePicker-W-IYpVkn-BGFtdKH5.chunk.mjs.map index 5bb63ed120514..60b9d40de081c 100644 --- a/dist/FilePicker-W-IYpVkn-FlhTGZkn.chunk.mjs.map +++ b/dist/FilePicker-W-IYpVkn-BGFtdKH5.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"FilePicker-W-IYpVkn-FlhTGZkn.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumb-Bwkn3eve.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumbs-PN5_hHQn.mjs","../node_modules/cancelable-promise/esm/CancelablePromise.mjs","../node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files/dist/chunks/dav-Rt1kTtvI.mjs","../node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files/dist/index.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/preview-BIbJGxXF.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/_plugin-vue_export-helper-1tPrXgE0.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/FilePicker-W-IYpVkn.mjs"],"sourcesContent":["import '../assets/NcBreadcrumb-CHjeSh0y.css';\nimport { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, resolveComponent, withModifiers, normalizeClass, createBlock, createVNode, createSlots, withCtx, renderSlot, createTextVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcButton } from \"./NcButton-Dc8V4Urj.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActions } from \"./NcActions-DWmvh7-Y.mjs\";\nconst _sfc_main$1 = {\n name: \"ChevronRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst ChevronRight = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst _sfc_main = {\n name: \"NcBreadcrumb\",\n components: {\n NcActions,\n ChevronRight,\n NcButton\n },\n inheritAttrs: false,\n props: {\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * Route Location the link should navigate to when clicked on.\n *\n * @see https://v3.router.vuejs.org/api/#to\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Set this prop if your app doesn't use vue-router, breadcrumbs will show as normal links.\n */\n href: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class to show an icon along name text (if forceIconText is provided, otherwise just icon).\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Enables text to accompany the icon, if the icon was provided. The text that will be displayed is the name prop.\n */\n forceIconText: {\n type: Boolean,\n default: false\n },\n /**\n * Disable dropping on this breadcrumb.\n */\n disableDrop: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Open state of the Actions menu\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"dragenter\",\n \"dragleave\",\n \"dropped\",\n \"update:open\"\n ],\n setup() {\n const crumbId = createElementId();\n return {\n actionsContainer: `.vue-crumb[data-crumb-id=\"${crumbId}\"]`,\n crumbId\n };\n },\n data() {\n return {\n /**\n * Variable to track if we hover over the breadcrumb\n */\n hovering: false\n };\n },\n computed: {\n /**\n * The attributes to pass to `router-link` or `a`\n */\n linkAttributes() {\n if (this.to) {\n return { to: this.to, ...this.$attrs };\n } else if (this.href) {\n return { href: this.href, ...this.$attrs };\n }\n return this.$attrs;\n }\n },\n methods: {\n /**\n * Function to handle changing the open state of the Actions menu\n * $emit the open state.\n *\n * @param {boolean} open The open state of the Actions menu\n */\n onOpenChange(open) {\n this.$emit(\"update:open\", open);\n },\n /**\n * Function to handle a drop on the breadcrumb.\n * $emit the event and the path, remove the hovering state.\n *\n * @param {object} e The drop event\n * @return {boolean}\n */\n dropped(e) {\n if (this.disableDrop) {\n return false;\n }\n this.$emit(\"dropped\", e, this.to || this.href);\n this.$parent.$emit(\"dropped\", e, this.to || this.href);\n this.hovering = false;\n return false;\n },\n /**\n * Add the hovering state on drag enter\n *\n * @param {DragEvent} e The drag-enter event\n */\n dragEnter(e) {\n this.$emit(\"dragenter\", e);\n if (this.disableDrop) {\n return;\n }\n this.hovering = true;\n },\n /**\n * Remove the hovering state on drag leave\n *\n * @param {DragEvent} e The drag leave event\n */\n dragLeave(e) {\n this.$emit(\"dragleave\", e);\n if (this.disableDrop) {\n return;\n }\n if (e.target.contains(e.relatedTarget) || this.$refs.crumb.contains(e.relatedTarget)) {\n return;\n }\n this.hovering = false;\n }\n }\n};\nconst _hoisted_1 = [\"data-crumb-id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_ChevronRight = resolveComponent(\"ChevronRight\");\n return openBlock(), createElementBlock(\"li\", {\n ref: \"crumb\",\n class: normalizeClass([\"vue-crumb\", [{ \"vue-crumb--hovered\": $data.hovering }, _ctx.$props.class]]),\n \"data-crumb-id\": $setup.crumbId,\n draggable: \"false\",\n onDragstart: withModifiers(() => {\n }, [\"prevent\"]),\n onDrop: _cache[0] || (_cache[0] = withModifiers((...args) => $options.dropped && $options.dropped(...args), [\"prevent\"])),\n onDragover: withModifiers(() => {\n }, [\"prevent\"]),\n onDragenter: _cache[1] || (_cache[1] = (...args) => $options.dragEnter && $options.dragEnter(...args)),\n onDragleave: _cache[2] || (_cache[2] = (...args) => $options.dragLeave && $options.dragLeave(...args))\n }, [\n ($props.name || $props.icon || _ctx.$slots.icon) && !_ctx.$slots.default ? (openBlock(), createBlock(_component_NcButton, mergeProps({\n key: 0,\n \"aria-label\": $props.icon ? $props.name : void 0,\n variant: \"tertiary\"\n }, $options.linkAttributes), createSlots({ _: 2 }, [\n _ctx.$slots.icon || $props.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass([$props.icon, \"icon\"])\n }, null, 2)\n ], true)\n ]),\n key: \"0\"\n } : void 0,\n !(_ctx.$slots.icon || $props.icon) || $props.forceIconText ? {\n name: \"default\",\n fn: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n key: \"1\"\n } : void 0\n ]), 1040, [\"aria-label\"])) : createCommentVNode(\"\", true),\n _ctx.$slots.default ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n container: $setup.actionsContainer,\n \"force-menu\": $props.forceMenu,\n \"force-name\": \"\",\n \"menu-name\": $props.name,\n open: $props.open,\n title: $props.title,\n variant: \"tertiary\",\n \"onUpdate:open\": $options.onOpenChange\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"container\", \"force-menu\", \"menu-name\", \"open\", \"title\", \"onUpdate:open\"])) : createCommentVNode(\"\", true),\n createVNode(_component_ChevronRight, {\n class: \"vue-crumb__separator\",\n size: 20\n })\n ], 42, _hoisted_1);\n}\nconst NcBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-28ef52a4\"]]);\nexport {\n NcBreadcrumb as N\n};\n//# sourceMappingURL=NcBreadcrumb-Bwkn3eve.mjs.map\n","import '../assets/NcBreadcrumbs-DYfGaSjT.css';\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport debounce from \"debounce\";\nimport { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, Fragment, cloneVNode, h } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActions, i as isSlotPopulated } from \"./NcActions-DWmvh7-Y.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-pKOSrlGE.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink-vEvKSV4N.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter-oT-YU_jf.mjs\";\nimport { N as NcBreadcrumb } from \"./NcBreadcrumb-Bwkn3eve.mjs\";\nconst _sfc_main$1 = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst crumbClass = \"vue-crumb\";\nconst _sfc_main = {\n name: \"NcBreadcrumbs\",\n components: {\n NcActions,\n NcActionButton,\n NcActionRouter,\n NcActionLink,\n NcBreadcrumb,\n IconFolder\n },\n props: {\n /**\n * Set a css icon-class for the icon of the root breadcrumb to be used.\n */\n rootIcon: {\n type: String,\n default: \"icon-home\"\n },\n /**\n * Set the aria-label of the nav element.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n emits: [\"dropped\"],\n data() {\n return {\n /**\n * Array to track the hidden breadcrumbs by their index.\n * Comparing two crumbs somehow does not work, so we use the indices.\n */\n hiddenIndices: [],\n /**\n * This is the props of the middle Action menu\n * that show the ellipsised breadcrumbs\n */\n menuBreadcrumbProps: {\n // Don't show a name for this breadcrumb, only the Actions menu\n name: \"\",\n forceMenu: true,\n // Don't allow dropping directly on the actions breadcrumb\n disableDrop: true,\n // Is the menu open or not\n open: false\n },\n breadcrumbsRefs: []\n };\n },\n created() {\n window.addEventListener(\"resize\", debounce(() => {\n this.handleWindowResize();\n }, 100));\n subscribe(\"navigation-toggled\", this.delayedResize);\n },\n mounted() {\n this.handleWindowResize();\n },\n updated() {\n this.delayedResize();\n this.$nextTick(() => {\n this.hideCrumbs();\n });\n },\n beforeUnmount() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n unsubscribe(\"navigation-toggled\", this.delayedResize);\n },\n methods: {\n /**\n * Close the actions menu\n *\n * @param {object} e The event\n */\n closeActions(e) {\n if (this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)) {\n return;\n }\n this.menuBreadcrumbProps.open = false;\n },\n /**\n * Call the resize function after a delay\n */\n async delayedResize() {\n await this.$nextTick();\n this.handleWindowResize();\n },\n /**\n * Check the width of the breadcrumb and hide breadcrumbs\n * if we overflow otherwise.\n */\n handleWindowResize() {\n if (!this.$refs.container) {\n return;\n }\n const nrCrumbs = this.breadcrumbsRefs.length;\n const hiddenIndices = [];\n const availableWidth = this.$refs.container.offsetWidth;\n let totalWidth = this.getTotalWidth();\n if (this.$refs.breadcrumb__actions) {\n totalWidth += this.$refs.breadcrumb__actions.offsetWidth;\n }\n let overflow = totalWidth - availableWidth;\n overflow += overflow > 0 ? 64 : 0;\n let i = 0;\n const startIndex = Math.floor(nrCrumbs / 2);\n while (overflow > 0 && i < nrCrumbs - 2) {\n const currentIndex = startIndex + (i % 2 ? i + 1 : i) / 2 * Math.pow(-1, i + nrCrumbs % 2);\n overflow -= this.getWidth(this.breadcrumbsRefs[currentIndex]?.$el, currentIndex === this.breadcrumbsRefs.length - 1);\n hiddenIndices.push(currentIndex);\n i++;\n }\n if (!this.arraysEqual(this.hiddenIndices, hiddenIndices.sort((a, b) => a - b))) {\n this.hiddenIndices = hiddenIndices;\n }\n },\n /**\n * Checks if two arrays are equal.\n * Only works for primitive arrays, but that's enough here.\n *\n * @param {Array} a The first array\n * @param {Array} b The second array\n * @return {boolean} Wether the arrays are equal\n */\n arraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n } else if (a === b) {\n return true;\n } else if (a === null || b === null) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n },\n /**\n * Calculates the total width of all breadcrumbs\n *\n * @return {number} The total width\n */\n getTotalWidth() {\n return this.breadcrumbsRefs.reduce((width, crumb, index) => width + this.getWidth(crumb.$el, index === this.breadcrumbsRefs.length - 1), 0);\n },\n /**\n * Calculates the width of the provided element\n *\n * @param {object} el The element\n * @param {boolean} isLast Is this the last crumb\n * @return {number} The width\n */\n getWidth(el, isLast) {\n if (!el?.classList) {\n return 0;\n }\n const hide = el.classList.contains(`${crumbClass}--hidden`);\n el.style.minWidth = \"auto\";\n if (isLast) {\n el.style.maxWidth = \"210px\";\n }\n el.classList.remove(`${crumbClass}--hidden`);\n const w = el.offsetWidth;\n if (hide) {\n el.classList.add(`${crumbClass}--hidden`);\n }\n el.style.minWidth = \"\";\n el.style.maxWidth = \"\";\n return w;\n },\n /**\n * Prevents the default of a provided event\n *\n * @param {object} e The event\n * @return {boolean}\n */\n preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n return false;\n },\n /**\n * Handles the drag start.\n * Prevents a breadcrumb from being draggable.\n *\n * @param {object} e The event\n * @return {boolean}\n */\n dragStart(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles when something is dropped on the breadcrumb.\n *\n * @param {object} e The drop event\n * @param {string} path The path of the breadcrumb\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n * @return {boolean}\n */\n dropped(e, path, disabled) {\n if (!disabled) {\n this.$emit(\"dropped\", e, path);\n }\n this.menuBreadcrumbProps.open = false;\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n return this.preventDefault(e);\n },\n /**\n * Handles the drag over event\n *\n * @param {object} e The drag over event\n * @return {boolean}\n */\n dragOver(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles the drag enter event\n *\n * @param {object} e The drag over event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragEnter(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.classList && target.classList.contains(crumbClass)) {\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n target.classList.add(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Handles the drag leave event\n *\n * @param {object} e The drag leave event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragLeave(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.contains(e.relatedTarget)) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.contains(e.relatedTarget)) {\n return;\n }\n if (target.classList && target.classList.contains(crumbClass)) {\n target.classList.remove(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Check for each crumb if we have to hide it and\n * add it to the array of all crumbs.\n */\n hideCrumbs() {\n this.breadcrumbsRefs.forEach((crumb, i) => {\n if (crumb?.$el?.classList) {\n if (this.hiddenIndices.includes(i)) {\n crumb.$el.classList.add(`${crumbClass}--hidden`);\n } else {\n crumb.$el.classList.remove(`${crumbClass}--hidden`);\n }\n }\n });\n },\n isBreadcrumb(vnode) {\n return vnode?.type?.name === \"NcBreadcrumb\";\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object|undefined} The created VNode\n */\n render() {\n let breadcrumbs = [];\n this.$slots.default?.().forEach((vnode) => {\n if (this.isBreadcrumb(vnode)) {\n breadcrumbs.push(vnode);\n return;\n }\n if (vnode?.type === Fragment) {\n vnode?.children?.forEach?.((child) => {\n if (this.isBreadcrumb(child)) {\n breadcrumbs.push(child);\n }\n });\n }\n });\n if (breadcrumbs.length === 0) {\n return;\n }\n breadcrumbs[0] = cloneVNode(breadcrumbs[0], {\n icon: this.rootIcon,\n ref: \"breadcrumbs\"\n });\n const breadcrumbsRefs = [];\n breadcrumbs = breadcrumbs.map((crumb, index) => cloneVNode(crumb, {\n ref: (crumb2) => {\n breadcrumbsRefs[index] = crumb2;\n }\n }));\n const crumbs = [...breadcrumbs];\n if (this.hiddenIndices.length) {\n crumbs.splice(\n Math.round(breadcrumbs.length / 2),\n 0,\n // The Actions menu\n // Use a breadcrumb component for the hidden breadcrumbs\n // eslint-disable-line @stylistic/function-call-argument-newline\n h(NcBreadcrumb, {\n class: \"dropdown\",\n ...this.menuBreadcrumbProps,\n // Hide the dropdown menu from screen-readers,\n // since the crumbs in the menu are still in the list.\n \"aria-hidden\": true,\n // Add a ref to the Actions menu\n ref: \"actionsBreadcrumb\",\n key: \"actions-breadcrumb-1\",\n // Add handlers so the Actions menu opens on hover\n onDragenter: () => {\n this.menuBreadcrumbProps.open = true;\n },\n onDragleave: this.closeActions,\n // Make sure we keep the same open state\n // as the Actions component\n \"onUpdate:open\": (open) => {\n this.menuBreadcrumbProps.open = open;\n }\n // Add all hidden breadcrumbs as ActionRouter or ActionLink\n }, {\n default: () => this.hiddenIndices.filter((index) => index <= breadcrumbs.length - 1).map((index) => {\n const crumb = breadcrumbs[index];\n const {\n // Get the parameters from the breadcrumb component props\n to,\n href,\n disableDrop,\n name,\n // Props to forward\n ...propsToForward\n } = crumb.props;\n delete propsToForward.ref;\n let element = NcActionButton;\n let path = \"\";\n if (href) {\n element = NcActionLink;\n path = href;\n }\n if (to) {\n element = NcActionRouter;\n path = to;\n }\n const folderIcon = h(IconFolder, {\n size: 20\n });\n return h(element, {\n ...propsToForward,\n class: crumbClass,\n href: href || null,\n to: to || null,\n // Prevent the breadcrumbs from being draggable\n draggable: false,\n // Add the drag and drop handlers\n onDragstart: this.dragStart,\n onDrop: ($event) => this.dropped($event, path, disableDrop),\n onDragover: this.dragOver,\n onDragenter: ($event) => this.dragEnter($event, disableDrop),\n onDragleave: ($event) => this.dragLeave($event, disableDrop)\n }, {\n default: () => name,\n icon: () => folderIcon\n });\n })\n })\n );\n }\n const wrapper = [h(\"nav\", { \"aria-label\": this.ariaLabel }, [h(\"ul\", { class: \"breadcrumb__crumbs\" }, [crumbs])])];\n if (isSlotPopulated(this.$slots.actions?.())) {\n wrapper.push(h(\"div\", { class: \"breadcrumb__actions\", ref: \"breadcrumb__actions\" }, this.$slots.actions?.()));\n }\n this.breadcrumbsRefs = breadcrumbsRefs;\n return h(\"div\", { class: [\"breadcrumb\", { \"breadcrumb--collapsed\": this.hiddenIndices.length === breadcrumbs.length - 2 }], ref: \"container\" }, wrapper);\n }\n};\nconst NcBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-af2b1226\"]]);\nexport {\n NcBreadcrumbs as N\n};\n//# sourceMappingURL=NcBreadcrumbs-PN5_hHQn.mjs.map\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\nvar toStringTag = typeof Symbol !== 'undefined' ? Symbol.toStringTag : '@@toStringTag';\n\nvar _internals = /*#__PURE__*/new WeakMap();\n\nvar _promise = /*#__PURE__*/new WeakMap();\n\nclass CancelablePromiseInternal {\n constructor(_ref) {\n var {\n executor = () => {},\n internals = defaultInternals(),\n promise = new Promise((resolve, reject) => executor(resolve, reject, onCancel => {\n internals.onCancelList.push(onCancel);\n }))\n } = _ref;\n\n _classPrivateFieldInitSpec(this, _internals, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _promise, {\n writable: true,\n value: void 0\n });\n\n _defineProperty(this, toStringTag, 'CancelablePromise');\n\n this.cancel = this.cancel.bind(this);\n\n _classPrivateFieldSet(this, _internals, internals);\n\n _classPrivateFieldSet(this, _promise, promise || new Promise((resolve, reject) => executor(resolve, reject, onCancel => {\n internals.onCancelList.push(onCancel);\n })));\n }\n\n then(onfulfilled, onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).then(createCallback(onfulfilled, _classPrivateFieldGet(this, _internals)), createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n catch(onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).catch(createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n finally(onfinally, runWhenCanceled) {\n if (runWhenCanceled) {\n _classPrivateFieldGet(this, _internals).onCancelList.push(onfinally);\n }\n\n return makeCancelable(_classPrivateFieldGet(this, _promise).finally(createCallback(() => {\n if (onfinally) {\n if (runWhenCanceled) {\n _classPrivateFieldGet(this, _internals).onCancelList = _classPrivateFieldGet(this, _internals).onCancelList.filter(callback => callback !== onfinally);\n }\n\n return onfinally();\n }\n }, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n cancel() {\n _classPrivateFieldGet(this, _internals).isCanceled = true;\n\n var callbacks = _classPrivateFieldGet(this, _internals).onCancelList;\n\n _classPrivateFieldGet(this, _internals).onCancelList = [];\n\n for (var callback of callbacks) {\n if (typeof callback === 'function') {\n try {\n callback();\n } catch (err) {\n console.error(err);\n }\n }\n }\n }\n\n isCanceled() {\n return _classPrivateFieldGet(this, _internals).isCanceled === true;\n }\n\n}\n\nexport class CancelablePromise extends CancelablePromiseInternal {\n constructor(executor) {\n super({\n executor\n });\n }\n\n}\n\n_defineProperty(CancelablePromise, \"all\", function all(iterable) {\n return makeAllCancelable(iterable, Promise.all(iterable));\n});\n\n_defineProperty(CancelablePromise, \"allSettled\", function allSettled(iterable) {\n return makeAllCancelable(iterable, Promise.allSettled(iterable));\n});\n\n_defineProperty(CancelablePromise, \"any\", function any(iterable) {\n return makeAllCancelable(iterable, Promise.any(iterable));\n});\n\n_defineProperty(CancelablePromise, \"race\", function race(iterable) {\n return makeAllCancelable(iterable, Promise.race(iterable));\n});\n\n_defineProperty(CancelablePromise, \"resolve\", function resolve(value) {\n return cancelable(Promise.resolve(value));\n});\n\n_defineProperty(CancelablePromise, \"reject\", function reject(reason) {\n return cancelable(Promise.reject(reason));\n});\n\n_defineProperty(CancelablePromise, \"isCancelable\", isCancelablePromise);\n\nexport default CancelablePromise;\nexport function cancelable(promise) {\n return makeCancelable(promise, defaultInternals());\n}\nexport function isCancelablePromise(promise) {\n return promise instanceof CancelablePromise || promise instanceof CancelablePromiseInternal;\n}\n\nfunction createCallback(onResult, internals) {\n if (onResult) {\n return arg => {\n if (!internals.isCanceled) {\n var result = onResult(arg);\n\n if (isCancelablePromise(result)) {\n internals.onCancelList.push(result.cancel);\n }\n\n return result;\n }\n\n return arg;\n };\n }\n}\n\nfunction makeCancelable(promise, internals) {\n return new CancelablePromiseInternal({\n internals,\n promise\n });\n}\n\nfunction makeAllCancelable(iterable, promise) {\n var internals = defaultInternals();\n internals.onCancelList.push(() => {\n for (var resolvable of iterable) {\n if (isCancelablePromise(resolvable)) {\n resolvable.cancel();\n }\n }\n });\n return new CancelablePromiseInternal({\n internals,\n promise\n });\n}\n\nfunction defaultInternals() {\n return {\n isCanceled: false,\n onCancelList: []\n };\n}\n//# sourceMappingURL=CancelablePromise.mjs.map","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { CancelablePromise } from \"cancelable-promise\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { join, encodePath, basename, extname, dirname } from \"@nextcloud/paths\";\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/files\").detectUser().build();\nvar FileType = /* @__PURE__ */ ((FileType2) => {\n FileType2[\"Folder\"] = \"folder\";\n FileType2[\"File\"] = \"file\";\n return FileType2;\n})(FileType || {});\nvar Permission = /* @__PURE__ */ ((Permission2) => {\n Permission2[Permission2[\"NONE\"] = 0] = \"NONE\";\n Permission2[Permission2[\"CREATE\"] = 4] = \"CREATE\";\n Permission2[Permission2[\"READ\"] = 1] = \"READ\";\n Permission2[Permission2[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission2[Permission2[\"DELETE\"] = 8] = \"DELETE\";\n Permission2[Permission2[\"SHARE\"] = 16] = \"SHARE\";\n Permission2[Permission2[\"ALL\"] = 31] = \"ALL\";\n return Permission2;\n})(Permission || {});\nconst isDavResource = function(source, davService) {\n return source.match(davService) !== null;\n};\nconst validateData = (data, davService) => {\n if (data.id && typeof data.id !== \"number\") {\n throw new Error(\"Invalid id type of value\");\n }\n if (!data.source) {\n throw new Error(\"Missing mandatory source\");\n }\n try {\n new URL(data.source);\n } catch (e) {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!data.source.startsWith(\"http\")) {\n throw new Error(\"Invalid source format, only http(s) is supported\");\n }\n if (data.displayname && typeof data.displayname !== \"string\") {\n throw new Error(\"Invalid displayname type\");\n }\n if (data.mtime && !(data.mtime instanceof Date)) {\n throw new Error(\"Invalid mtime type\");\n }\n if (data.crtime && !(data.crtime instanceof Date)) {\n throw new Error(\"Invalid crtime type\");\n }\n if (!data.mime || typeof data.mime !== \"string\" || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error(\"Missing or invalid mandatory mime\");\n }\n if (\"size\" in data && typeof data.size !== \"number\" && data.size !== void 0) {\n throw new Error(\"Invalid size type\");\n }\n if (\"permissions\" in data && data.permissions !== void 0 && !(typeof data.permissions === \"number\" && data.permissions >= Permission.NONE && data.permissions <= Permission.ALL)) {\n throw new Error(\"Invalid permissions\");\n }\n if (data.owner && data.owner !== null && typeof data.owner !== \"string\") {\n throw new Error(\"Invalid owner type\");\n }\n if (data.attributes && typeof data.attributes !== \"object\") {\n throw new Error(\"Invalid attributes type\");\n }\n if (data.root && typeof data.root !== \"string\") {\n throw new Error(\"Invalid root type\");\n }\n if (data.root && !data.root.startsWith(\"/\")) {\n throw new Error(\"Root must start with a leading slash\");\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error(\"Root must be part of the source\");\n }\n if (data.root && isDavResource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n }\n if (data.status && !Object.values(NodeStatus).includes(data.status)) {\n throw new Error(\"Status must be a valid NodeStatus\");\n }\n};\nvar NodeStatus = /* @__PURE__ */ ((NodeStatus2) => {\n NodeStatus2[\"NEW\"] = \"new\";\n NodeStatus2[\"FAILED\"] = \"failed\";\n NodeStatus2[\"LOADING\"] = \"loading\";\n NodeStatus2[\"LOCKED\"] = \"locked\";\n return NodeStatus2;\n})(NodeStatus || {});\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n readonlyAttributes = Object.entries(Object.getOwnPropertyDescriptors(Node.prototype)).filter((e) => typeof e[1].get === \"function\" && e[0] !== \"__proto__\").map((e) => e[0]);\n handler = {\n set: (target, prop, value) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.deleteProperty(target, prop);\n },\n // TODO: This is deprecated and only needed for files v3\n get: (target, prop, receiver) => {\n if (this.readonlyAttributes.includes(prop)) {\n logger.warn(`Accessing \"Node.attributes.${prop}\" is deprecated, access it directly on the Node instance.`);\n return Reflect.get(this, prop);\n }\n return Reflect.get(target, prop, receiver);\n }\n };\n constructor(data, davService) {\n if (!data.mime) {\n data.mime = \"application/octet-stream\";\n }\n validateData(data, davService || this._knownDavService);\n this._data = {\n // TODO: Remove with next major release, this is just for compatibility\n displayname: data.attributes?.displayname,\n ...data,\n attributes: {}\n };\n this._attributes = new Proxy(this._data.attributes, this.handler);\n this.update(data.attributes ?? {});\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin } = new URL(this.source);\n return origin + encodePath(this.source.slice(origin.length));\n }\n /**\n * Get this object name\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * The nodes displayname\n * By default the display name and the `basename` are identical,\n * but it is possible to have a different name. This happens\n * on the files app for example for shared folders.\n */\n get displayname() {\n return this._data.displayname || this.basename;\n }\n /**\n * Set the displayname\n */\n set displayname(displayname) {\n validateData({ ...this._data, displayname }, this._knownDavService);\n this._data.displayname = displayname;\n }\n /**\n * Get this object's extension\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n *\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get dirname() {\n if (this.root) {\n let source = this.source;\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return dirname(source.slice(firstMatch + root.length) || \"/\");\n }\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime || \"application/octet-stream\";\n }\n /**\n * Set the file mime\n * Removing the mime type will set it to `application/octet-stream`\n */\n set mime(mime) {\n mime ??= \"application/octet-stream\";\n validateData({ ...this._data, mime }, this._knownDavService);\n this._data.mime = mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Set the file modification time\n */\n set mtime(mtime) {\n validateData({ ...this._data, mtime }, this._knownDavService);\n this._data.mtime = mtime;\n }\n /**\n * Get the file creation time\n * There is no setter as the creation time is not meant to be changed\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Set the file size\n */\n set size(size) {\n validateData({ ...this._data, size }, this._knownDavService);\n this.updateMtime();\n this._data.size = size;\n }\n /**\n * Get the file attribute\n * This contains all additional attributes not provided by the Node class\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n if (this.owner === null && !this.isDavResource) {\n return Permission.READ;\n }\n return this._data.permissions !== void 0 ? this._data.permissions : Permission.NONE;\n }\n /**\n * Set the file permissions\n */\n set permissions(permissions) {\n validateData({ ...this._data, permissions }, this._knownDavService);\n this.updateMtime();\n this._data.permissions = permissions;\n }\n /**\n * Get the file owner\n * There is no setter as the owner is not meant to be changed\n */\n get owner() {\n if (!this.isDavResource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related resource ?\n */\n get isDavResource() {\n return isDavResource(this.source, this._knownDavService);\n }\n /**\n * @deprecated use `isDavResource` instead - will be removed in next major version.\n */\n get isDavRessource() {\n return this.isDavResource;\n }\n /**\n * Get the dav root of this object\n * There is no setter as the root is not meant to be changed\n */\n get root() {\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, \"$1\");\n }\n if (this.isDavResource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let source = this.source;\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return source.slice(firstMatch + root.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * There is no setter as the fileid is not meant to be changed\n */\n get fileid() {\n return this._data?.id;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(status) {\n validateData({ ...this._data, status }, this._knownDavService);\n this._data.status = status;\n }\n /**\n * Get the node data\n */\n get data() {\n return structuredClone(this._data);\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n const oldBasename = this.basename;\n this._data.source = destination;\n if (this.displayname === oldBasename && this.basename !== oldBasename) {\n this.displayname = this.basename;\n }\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(basename2) {\n if (basename2.includes(\"/\")) {\n throw new Error(\"Invalid basename\");\n }\n this.move(dirname(this.source) + \"/\" + basename2);\n }\n /**\n * Update the mtime if exists\n */\n updateMtime() {\n if (this._data.mtime) {\n this._data.mtime = /* @__PURE__ */ new Date();\n }\n }\n /**\n * Update the attributes of the node\n * Warning, updating attributes will NOT automatically update the mtime.\n *\n * @param attributes The new attributes to update on the Node attributes\n */\n update(attributes) {\n for (const [name, value] of Object.entries(attributes)) {\n try {\n if (value === void 0) {\n delete this.attributes[name];\n } else {\n this.attributes[name] = value;\n }\n } catch (e) {\n if (e instanceof TypeError) {\n continue;\n }\n throw e;\n }\n }\n }\n}\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n /**\n * Returns a clone of the file\n */\n clone() {\n return new File(this.data);\n }\n}\nclass Folder extends Node {\n constructor(data) {\n super({\n ...data,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n /**\n * Returns a clone of the folder\n */\n clone() {\n return new Folder(this.data);\n }\n}\nconst parsePermissions = function(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"C\") || permString.includes(\"K\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\") || permString.includes(\"N\") || permString.includes(\"V\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n};\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nconst registerDavProperty = function(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n const namespaces = { ...window._nc_dav_namespaces, ...namespace };\n if (window._nc_dav_properties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n window._nc_dav_properties.push(prop);\n window._nc_dav_namespaces = namespaces;\n return true;\n};\nconst getDavProperties = function() {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n }\n return window._nc_dav_properties.map((prop) => `<${prop} />`).join(\" \");\n};\nconst getDavNameSpaces = function() {\n if (typeof window._nc_dav_namespaces === \"undefined\") {\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n return Object.keys(window._nc_dav_namespaces).map((ns) => `xmlns:${ns}=\"${window._nc_dav_namespaces?.[ns]}\"`).join(\" \");\n};\nconst getDefaultPropfind = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n};\nconst getFavoritesReport = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n};\nconst getRecentSearch = function(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n};\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nconst getClient = function(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n};\nconst getFavoriteNodes = (davClient, path = \"/\", davRoot = defaultRootPath) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await davClient.getDirectoryContents(`${davRoot}${path}`, {\n signal: controller.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n const nodes = contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n resolve(nodes);\n } catch (error) {\n reject(error);\n }\n });\n};\nconst resultToNode = function(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n};\nexport {\n FileType as F,\n Node as N,\n Permission as P,\n getRemoteURL as a,\n defaultRemoteURL as b,\n getClient as c,\n defaultRootPath as d,\n getFavoriteNodes as e,\n defaultDavProperties as f,\n getRootPath as g,\n defaultDavNamespaces as h,\n registerDavProperty as i,\n getDavProperties as j,\n getDavNameSpaces as k,\n getDefaultPropfind as l,\n getFavoritesReport as m,\n getRecentSearch as n,\n logger as o,\n parsePermissions as p,\n File as q,\n resultToNode as r,\n Folder as s,\n NodeStatus as t\n};\n//# sourceMappingURL=dav-Rt1kTtvI.mjs.map\n","import { o as logger, F as FileType } from \"./chunks/dav-Rt1kTtvI.mjs\";\nimport { q, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Rt1kTtvI.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport require$$1 from \"string_decoder\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"@nextcloud/paths\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get hotkey() {\n return this._action.hotkey;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n if (\"hotkey\" in action && action.hotkey !== void 0) {\n if (typeof action.hotkey !== \"object\") {\n throw new Error(\"Invalid hotkey configuration\");\n }\n if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n throw new Error(\"Missing or invalid hotkey key\");\n }\n if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n throw new Error(\"Missing or invalid hotkey description\");\n }\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const safeSrc = exports.safeSrc = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n safeSrc[index] = safe;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NONNUMERICIDENTIFIER]}|${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NONNUMERICIDENTIFIER]}|${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n if (typeof a2 === \"number\" && typeof b2 === \"number\") {\n return a2 === b2 ? 0 : a2 < b2 ? -1 : 1;\n }\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.major < other.major) {\n return -1;\n }\n if (this.major > other.major) {\n return 1;\n }\n if (this.minor < other.minor) {\n return -1;\n }\n if (this.minor > other.minor) {\n return 1;\n }\n if (this.patch < other.patch) {\n return -1;\n }\n if (this.patch > other.patch) {\n return 1;\n }\n return 0;\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n if (release.startsWith(\"pre\")) {\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re2[t2.PRERELEASELOOSE] : re2[t2.PRERELEASE]);\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`);\n }\n }\n }\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"release\":\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`);\n }\n this.prerelease.length = 0;\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h2) => {\n try {\n ;\n h2(event[0]);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nvar sax$1 = {};\nvar hasRequiredSax;\nfunction requireSax() {\n if (hasRequiredSax) return sax$1;\n hasRequiredSax = 1;\n (function(exports) {\n (function(sax2) {\n sax2.parser = function(strict, opt) {\n return new SAXParser(strict, opt);\n };\n sax2.SAXParser = SAXParser;\n sax2.SAXStream = SAXStream;\n sax2.createStream = createStream;\n sax2.MAX_BUFFER_LENGTH = 64 * 1024;\n var buffers = [\n \"comment\",\n \"sgmlDecl\",\n \"textNode\",\n \"tagName\",\n \"doctype\",\n \"procInstName\",\n \"procInstBody\",\n \"entity\",\n \"attribName\",\n \"attribValue\",\n \"cdata\",\n \"script\"\n ];\n sax2.EVENTS = [\n \"text\",\n \"processinginstruction\",\n \"sgmldeclaration\",\n \"doctype\",\n \"comment\",\n \"opentagstart\",\n \"attribute\",\n \"opentag\",\n \"closetag\",\n \"opencdata\",\n \"cdata\",\n \"closecdata\",\n \"error\",\n \"end\",\n \"ready\",\n \"script\",\n \"opennamespace\",\n \"closenamespace\"\n ];\n function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt);\n }\n var parser = this;\n clearBuffers(parser);\n parser.q = parser.c = \"\";\n parser.bufferCheckPosition = sax2.MAX_BUFFER_LENGTH;\n parser.opt = opt || {};\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;\n parser.looseCase = parser.opt.lowercase ? \"toLowerCase\" : \"toUpperCase\";\n parser.tags = [];\n parser.closed = parser.closedRoot = parser.sawRoot = false;\n parser.tag = parser.error = null;\n parser.strict = !!strict;\n parser.noscript = !!(strict || parser.opt.noscript);\n parser.state = S.BEGIN;\n parser.strictEntities = parser.opt.strictEntities;\n parser.ENTITIES = parser.strictEntities ? Object.create(sax2.XML_ENTITIES) : Object.create(sax2.ENTITIES);\n parser.attribList = [];\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS);\n }\n if (parser.opt.unquotedAttributeValues === void 0) {\n parser.opt.unquotedAttributeValues = !strict;\n }\n parser.trackPosition = parser.opt.position !== false;\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0;\n }\n emit2(parser, \"onready\");\n }\n if (!Object.create) {\n Object.create = function(o) {\n function F() {\n }\n F.prototype = o;\n var newf = new F();\n return newf;\n };\n }\n if (!Object.keys) {\n Object.keys = function(o) {\n var a2 = [];\n for (var i2 in o) if (o.hasOwnProperty(i2)) a2.push(i2);\n return a2;\n };\n }\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax2.MAX_BUFFER_LENGTH, 10);\n var maxActual = 0;\n for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n var len = parser[buffers[i2]].length;\n if (len > maxAllowed) {\n switch (buffers[i2]) {\n case \"textNode\":\n closeText(parser);\n break;\n case \"cdata\":\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n break;\n case \"script\":\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n break;\n default:\n error(parser, \"Max buffer length exceeded: \" + buffers[i2]);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n var m2 = sax2.MAX_BUFFER_LENGTH - maxActual;\n parser.bufferCheckPosition = m2 + parser.position;\n }\n function clearBuffers(parser) {\n for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n parser[buffers[i2]] = \"\";\n }\n }\n function flushBuffers(parser) {\n closeText(parser);\n if (parser.cdata !== \"\") {\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n }\n if (parser.script !== \"\") {\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n }\n }\n SAXParser.prototype = {\n end: function() {\n end(this);\n },\n write,\n resume: function() {\n this.error = null;\n return this;\n },\n close: function() {\n return this.write(null);\n },\n flush: function() {\n flushBuffers(this);\n }\n };\n var Stream;\n try {\n Stream = require(\"stream\").Stream;\n } catch (ex) {\n Stream = function() {\n };\n }\n if (!Stream) Stream = function() {\n };\n var streamWraps = sax2.EVENTS.filter(function(ev) {\n return ev !== \"error\" && ev !== \"end\";\n });\n function createStream(strict, opt) {\n return new SAXStream(strict, opt);\n }\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt);\n }\n Stream.apply(this);\n this._parser = new SAXParser(strict, opt);\n this.writable = true;\n this.readable = true;\n var me = this;\n this._parser.onend = function() {\n me.emit(\"end\");\n };\n this._parser.onerror = function(er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n this._decoder = null;\n streamWraps.forEach(function(ev) {\n Object.defineProperty(me, \"on\" + ev, {\n get: function() {\n return me._parser[\"on\" + ev];\n },\n set: function(h2) {\n if (!h2) {\n me.removeAllListeners(ev);\n me._parser[\"on\" + ev] = h2;\n return h2;\n }\n me.on(ev, h2);\n },\n enumerable: true,\n configurable: false\n });\n });\n }\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n });\n SAXStream.prototype.write = function(data) {\n if (typeof Buffer === \"function\" && typeof Buffer.isBuffer === \"function\" && Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require$$1.StringDecoder;\n this._decoder = new SD(\"utf8\");\n }\n data = this._decoder.write(data);\n }\n this._parser.write(data.toString());\n this.emit(\"data\", data);\n return true;\n };\n SAXStream.prototype.end = function(chunk) {\n if (chunk && chunk.length) {\n this.write(chunk);\n }\n this._parser.end();\n return true;\n };\n SAXStream.prototype.on = function(ev, handler) {\n var me = this;\n if (!me._parser[\"on\" + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\" + ev] = function() {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);\n args.splice(0, 0, ev);\n me.emit.apply(me, args);\n };\n }\n return Stream.prototype.on.call(me, ev, handler);\n };\n var CDATA = \"[CDATA[\";\n var DOCTYPE = \"DOCTYPE\";\n var XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\n var XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE };\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n function isWhitespace(c2) {\n return c2 === \" \" || c2 === \"\\n\" || c2 === \"\\r\" || c2 === \"\t\";\n }\n function isQuote(c2) {\n return c2 === '\"' || c2 === \"'\";\n }\n function isAttribEnd(c2) {\n return c2 === \">\" || isWhitespace(c2);\n }\n function isMatch(regex, c2) {\n return regex.test(c2);\n }\n function notMatch(regex, c2) {\n return !isMatch(regex, c2);\n }\n var S = 0;\n sax2.STATE = {\n BEGIN: S++,\n // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++,\n // leading whitespace\n TEXT: S++,\n // general stuff\n TEXT_ENTITY: S++,\n // & and such.\n OPEN_WAKA: S++,\n // <\n SGML_DECL: S++,\n // \n SCRIPT: S++,\n // \n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getClient } from '@nextcloud/files/dav'\nimport moment from '@nextcloud/moment'\nimport { encodePath, join } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport davRequest from '../utils/davRequest.ts'\nimport logger from '../utils/logger.ts'\n\nexport interface Version {\n\tfileId: string // The id of the file associated to the version.\n\tlabel: string // 'Current version' or ''\n\tauthor: string | null // UID for the author of the version\n\tauthorName: string | null // Display name of the author\n\tfilename: string // File name relative to the version DAV endpoint\n\tbasename: string // A base name generated from the mtime\n\tmime: string // Empty for the current version, else the actual mime type of the version\n\tetag: string // Empty for the current version, else the actual mime type of the version\n\tsize: number // File size in bytes\n\ttype: string // 'file'\n\tmtime: number // Version creation date as a timestamp\n\tpermissions: string // Only readable: 'R'\n\tpreviewUrl: string // Preview URL of the version\n\turl: string // Download URL of the version\n\tsource: string // The WebDAV endpoint of the resource\n\tfileVersion: string | null // The version id, null for the current version\n}\n\nconst client = getClient()\n\n/**\n * Get file versions for a given node\n *\n * @param node - The node to fetch versions for\n */\nexport async function fetchVersions(node: INode): Promise {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${node.fileid}`\n\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t}) as ResponseDataDetailed\n\n\t\tconst versions = response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map((version) => formatVersion(version as Required, node))\n\n\t\tconst authorIds = new Set(versions.map((version) => String(version.author)))\n\t\tconst authors = await axios.post(generateUrl('/displaynames'), { users: [...authorIds] })\n\n\t\tfor (const version of versions) {\n\t\t\tconst author = authors.data.users[version.author ?? '']\n\t\t\tif (author) {\n\t\t\t\tversion.authorName = author\n\t\t\t}\n\t\t}\n\n\t\treturn versions\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param version - The version to restore\n */\nexport async function restoreVersion(version: Version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param version - The version data from WebDAV\n * @param node - The original node\n */\nfunction formatVersion(version: Required, node: INode): Version {\n\tconst mtime = moment(version.lastmod).unix() * 1000\n\tlet previewUrl = ''\n\n\tif (mtime === node.mtime?.getTime()) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', {\n\t\t\tfileId: node.fileid,\n\t\t\tfileEtag: node.attributes.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', {\n\t\t\tfile: node.path,\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: node.fileid!.toString(),\n\t\t// If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n\t\tlabel: version.props['version-label'] ? String(version.props['version-label']) : '',\n\t\tauthor: version.props['version-author'] ? String(version.props['version-author']) : null,\n\t\tauthorName: null,\n\t\tfilename: version.filename,\n\t\tbasename: moment(mtime).format('LLL'),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\tpreviewUrl,\n\t\turl: join('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * Set version label\n *\n * @param version - The version to set the label for\n * @param newLabel - The new label\n */\nexport async function setVersionLabel(version: Version, newLabel: string) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${newLabel}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t},\n\t)\n}\n\n/**\n * Delete version\n *\n * @param version - The version to delete\n */\nexport async function deleteVersion(version: Version) {\n\tawait client.deleteFile(version.filename)\n}\n","\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","props","__props","emit","__emit","previewLoaded","ref","previewErrored","capabilities","loadState","humanReadableSize","computed","formatFileSize","versionLabel","label","t","versionAuthor","getCurrentUser","versionHumanExplicitDate","moment","downloadURL","getRootUrl","enableLabeling","enableDeletion","hasDeletePermissions","hasPermission","Permission","hasUpdatePermissions","isDownloadable","attribute","labelUpdate","restoreVersion","deleteVersion","nextTick","click","event","compareVersion","node","permission","_createBlock","_unref","NcListItem","_createVNode","ImageOffOutline","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","NcAvatar","_hoisted_8","_hoisted_9","NcDateTime","NcActionButton","Pencil","_createTextVNode","FileCompare","BackupRestore","NcActionLink","Download","Delete","labelInput","useTemplateRef","internalLabel","dialogButtons","buttons","setVersionLabel","svgCheck","watchEffect","NcDialog","$emit","NcTextField","_toDisplayString","logger","getLoggerBuilder","_sfc_main$1","defineComponent","containerHeight","containerTop","containerBottom","currentRowTop","currentRowBottom","visibleSections","section","visibleRows","row","distance","visibleItems","rows","items","rowIdToKeyMap","item","usedTokens","key","unusedTokens","finalMapping","id","totalHeight","sectionHeight","paddingTop","buffer","value","currentRowTopDistanceFromTop","entries","entry","cr","_normalizeStyle","_renderSlot","davRequest","client","getClient","fetchVersions","path","versions","mime","version","formatVersion","authorIds","authors","axios","generateUrl","author","exception","mtime","previewUrl","join","generateRemoteUrl","encodePath","newLabel","__expose","setActive","isMobile","useIsMobile","isActive","loading","showVersionLabelForm","editedVersion","watch","toRef","currentVersionMtime","orderedVersions","a","b","sections","initialVersionMtime","canView","canCompare","active","handleRestore","restoredNode","restoreStartedEventState","showSuccess","showError","handleLabelUpdateRequest","handleLabelUpdate","oldLabel","handleDelete","index","openVersion","_versions","v","VirtualScrolling","_withCtx","_Fragment","_renderList","VersionEntry","NcLoadingIcon","VersionLabelDialog"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file +{"version":3,"file":"FilesVersionsSidebarTab-CRtw8oyz.chunk.mjs","sources":["../node_modules/vue-material-design-icons/BackupRestore.vue","../node_modules/vue-material-design-icons/FileCompare.vue","../node_modules/vue-material-design-icons/ImageOffOutline.vue","../build/frontend/apps/files_versions/src/components/VersionEntry.vue","../build/frontend/apps/files_versions/src/components/VersionLabelDialog.vue","../build/frontend/apps/files_versions/src/utils/logger.ts","../build/frontend/apps/files_versions/src/components/VirtualScrolling.vue","../build/frontend/apps/files_versions/src/utils/davRequest.ts","../build/frontend/apps/files_versions/src/utils/versions.ts","../build/frontend/apps/files_versions/src/views/FilesVersionsSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getClient } from '@nextcloud/files/dav'\nimport moment from '@nextcloud/moment'\nimport { encodePath, join } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport davRequest from '../utils/davRequest.ts'\nimport logger from '../utils/logger.ts'\n\nexport interface Version {\n\tfileId: string // The id of the file associated to the version.\n\tlabel: string // 'Current version' or ''\n\tauthor: string | null // UID for the author of the version\n\tauthorName: string | null // Display name of the author\n\tfilename: string // File name relative to the version DAV endpoint\n\tbasename: string // A base name generated from the mtime\n\tmime: string // Empty for the current version, else the actual mime type of the version\n\tetag: string // Empty for the current version, else the actual mime type of the version\n\tsize: number // File size in bytes\n\ttype: string // 'file'\n\tmtime: number // Version creation date as a timestamp\n\tpermissions: string // Only readable: 'R'\n\tpreviewUrl: string // Preview URL of the version\n\turl: string // Download URL of the version\n\tsource: string // The WebDAV endpoint of the resource\n\tfileVersion: string | null // The version id, null for the current version\n}\n\nconst client = getClient()\n\n/**\n * Get file versions for a given node\n *\n * @param node - The node to fetch versions for\n */\nexport async function fetchVersions(node: INode): Promise {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${node.fileid}`\n\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t}) as ResponseDataDetailed\n\n\t\tconst versions = response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map((version) => formatVersion(version as Required, node))\n\n\t\tconst authorIds = new Set(versions.map((version) => String(version.author)))\n\t\tconst authors = await axios.post(generateUrl('/displaynames'), { users: [...authorIds] })\n\n\t\tfor (const version of versions) {\n\t\t\tconst author = authors.data.users[version.author ?? '']\n\t\t\tif (author) {\n\t\t\t\tversion.authorName = author\n\t\t\t}\n\t\t}\n\n\t\treturn versions\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param version - The version to restore\n */\nexport async function restoreVersion(version: Version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param version - The version data from WebDAV\n * @param node - The original node\n */\nfunction formatVersion(version: Required, node: INode): Version {\n\tconst mtime = moment(version.lastmod).unix() * 1000\n\tlet previewUrl = ''\n\n\tif (mtime === node.mtime?.getTime()) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', {\n\t\t\tfileId: node.fileid,\n\t\t\tfileEtag: node.attributes.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', {\n\t\t\tfile: node.path,\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: node.fileid!.toString(),\n\t\t// If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n\t\tlabel: version.props['version-label'] ? String(version.props['version-label']) : '',\n\t\tauthor: version.props['version-author'] ? String(version.props['version-author']) : null,\n\t\tauthorName: null,\n\t\tfilename: version.filename,\n\t\tbasename: moment(mtime).format('LLL'),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\tpreviewUrl,\n\t\turl: join('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * Set version label\n *\n * @param version - The version to set the label for\n * @param newLabel - The new label\n */\nexport async function setVersionLabel(version: Version, newLabel: string) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${newLabel}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t},\n\t)\n}\n\n/**\n * Delete version\n *\n * @param version - The version to delete\n */\nexport async function deleteVersion(version: Version) {\n\tawait client.deleteFile(version.filename)\n}\n","\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","props","__props","emit","__emit","previewLoaded","ref","previewErrored","capabilities","loadState","humanReadableSize","computed","formatFileSize","versionLabel","label","t","versionAuthor","getCurrentUser","versionHumanExplicitDate","moment","downloadURL","getRootUrl","enableLabeling","enableDeletion","hasDeletePermissions","hasPermission","Permission","hasUpdatePermissions","isDownloadable","attribute","labelUpdate","restoreVersion","deleteVersion","nextTick","click","event","compareVersion","node","permission","_createBlock","_unref","NcListItem","_createVNode","ImageOffOutline","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","NcAvatar","_hoisted_8","_hoisted_9","NcDateTime","NcActionButton","Pencil","_createTextVNode","FileCompare","BackupRestore","NcActionLink","Download","Delete","labelInput","useTemplateRef","internalLabel","dialogButtons","buttons","setVersionLabel","svgCheck","watchEffect","NcDialog","$emit","NcTextField","_toDisplayString","logger","getLoggerBuilder","_sfc_main$1","defineComponent","containerHeight","containerTop","containerBottom","currentRowTop","currentRowBottom","visibleSections","section","visibleRows","row","distance","visibleItems","rows","items","rowIdToKeyMap","item","usedTokens","key","unusedTokens","finalMapping","id","totalHeight","sectionHeight","paddingTop","buffer","value","currentRowTopDistanceFromTop","entries","entry","cr","_normalizeStyle","_renderSlot","davRequest","client","getClient","fetchVersions","path","versions","mime","version","formatVersion","authorIds","authors","axios","generateUrl","author","exception","mtime","previewUrl","join","generateRemoteUrl","encodePath","newLabel","__expose","setActive","isMobile","useIsMobile","isActive","loading","showVersionLabelForm","editedVersion","watch","toRef","currentVersionMtime","orderedVersions","a","b","sections","initialVersionMtime","canView","canCompare","active","handleRestore","restoredNode","restoreStartedEventState","showSuccess","showError","handleLabelUpdateRequest","handleLabelUpdate","oldLabel","handleDelete","index","openVersion","_versions","v","VirtualScrolling","_withCtx","_Fragment","_renderList","VersionEntry","NcLoadingIcon","VersionLabelDialog"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/FilesVersionsSidebarTab-BcAURjSJ.chunk.mjs.map.license b/dist/FilesVersionsSidebarTab-CRtw8oyz.chunk.mjs.map.license similarity index 100% rename from dist/FilesVersionsSidebarTab-BcAURjSJ.chunk.mjs.map.license rename to dist/FilesVersionsSidebarTab-CRtw8oyz.chunk.mjs.map.license diff --git a/dist/NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs b/dist/NcActionRouter-oT-YU_jf-3XNLVsNJ.chunk.mjs similarity index 82% rename from dist/NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs rename to dist/NcActionRouter-oT-YU_jf-3XNLVsNJ.chunk.mjs index d7c1a586a439e..bd1d8ea9f3400 100644 --- a/dist/NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs +++ b/dist/NcActionRouter-oT-YU_jf-3XNLVsNJ.chunk.mjs @@ -1,2 +1,2 @@ -import{N as g,f as C,c as I}from"./NcNoteCard-CVhtNL04-BSciYEDO.chunk.mjs";import{h as S,i as p}from"./index-JpgrUA2Z-ClfXhQGo.chunk.mjs";import{a as m}from"./_plugin-vue_export-helper-CDPKodk-.chunk.mjs";import{r as x,E as i,o as e,H as o,x as h,c as f,F as c,X as b,G as d,f as l,z as v,b as V,w}from"./mdi-B9XVyi7B.chunk.mjs";const M={beforeUpdate(){this.text=this.getText()},data(){return{text:this.getText()}},computed:{isLongText(){return this.text&&this.text.trim().length>20}},methods:{getText(){return this.$slots.default?.()[0].children?.trim?.()||""}}},_={mixins:[M],props:{icon:{type:String,default:""},name:{type:String,default:""},title:{type:String,default:""},closeAfterClick:{type:Boolean,default:!1},ariaLabel:{type:String,default:null}},inject:{closeMenu:{from:S}},emits:["click"],created(){"ariaHidden"in this.$attrs},computed:{isIconUrl(){try{return!!new URL(this.icon,this.icon.startsWith("/")?window.location.origin:void 0)}catch{return!1}}},methods:{onClick(t){this.$emit("click",t),this.closeAfterClick&&this.closeMenu(!1)}}},L={name:"NcActionButton",components:{NcIconSvgWrapper:g},mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{disabled:{type:Boolean,default:!1},isMenu:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>["button","checkbox","radio","reset","submit"].includes(t)},modelValue:{type:[Boolean,String],default:null},value:{type:String,default:null},description:{type:String,default:""}},emits:["update:modelValue"],setup(){return{mdiCheck:I,mdiChevronRight:C}},computed:{isFocusable(){return!this.disabled},isChecked(){return this.type==="radio"&&typeof this.modelValue!="boolean"?this.modelValue===this.value:this.modelValue},nativeType(){return this.type==="submit"||this.type==="reset"?this.type:"button"},buttonAttributes(){const t={};return this.isInSemanticMenu?(t.role="menuitem",this.type==="radio"?(t.role="menuitemradio",t["aria-checked"]=this.isChecked?"true":"false"):(this.type==="checkbox"||this.nativeType==="button"&&this.modelValue!==null)&&(t.role="menuitemcheckbox",t["aria-checked"]=this.modelValue===null?"mixed":this.modelValue?"true":"false")):this.modelValue!==null&&this.nativeType==="button"&&(t["aria-pressed"]=this.modelValue?"true":"false"),t}},methods:{handleClick(t){this.onClick(t),(this.modelValue!==null||this.type!=="button")&&(this.type==="radio"?typeof this.modelValue!="boolean"?this.isChecked||this.$emit("update:modelValue",this.value):this.$emit("update:modelValue",!this.isChecked):this.$emit("update:modelValue",!this.isChecked))}}},$=["role"],T=["aria-label","disabled","title","type"],U={class:"action-button__longtext-wrapper"},A={key:0,class:"action-button__name"},N=["textContent"],R={key:2,class:"action-button__text"},W=["textContent"],j={key:2,class:"action-button__pressed-icon material-design-icon"};function B(t,s,a,u,k,n){const r=x("NcIconSvgWrapper");return e(),i("li",{class:d(["action",{"action--disabled":a.disabled}]),role:n.isInSemanticMenu&&"presentation"},[o("button",v({"aria-label":t.ariaLabel,class:["action-button button-vue",{"action-button--active":n.isChecked,focusable:n.isFocusable}],disabled:a.disabled,title:t.title,type:n.nativeType},n.buttonAttributes,{onClick:s[0]||(s[0]=(...y)=>n.handleClick&&n.handleClick(...y))}),[h(t.$slots,"icon",{},()=>[o("span",{class:d([[t.isIconUrl?"action-button__icon--url":t.icon],"action-button__icon"]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null}),"aria-hidden":"true"},null,6)],!0),o("span",U,[t.name?(e(),i("strong",A,l(t.name),1)):c("",!0),t.isLongText?(e(),i("span",{key:1,class:"action-button__longtext",textContent:l(t.text)},null,8,N)):(e(),i("span",R,l(t.text),1)),a.description?(e(),i("span",{key:3,class:"action-button__description",textContent:l(a.description)},null,8,W)):c("",!0)]),a.isMenu?(e(),f(r,{key:0,class:"action-button__menu-icon",directional:"",path:u.mdiChevronRight},null,8,["path"])):n.isChecked?(e(),f(r,{key:1,path:u.mdiCheck,class:"action-button__pressed-icon"},null,8,["path"])):n.isChecked===!1?(e(),i("span",j)):c("",!0),c("",!0)],16,T)],10,$)}const lt=m(L,[["render",B],["__scopeId","data-v-6c2daf4e"]]),F={name:"NcActionLink",mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{href:{type:String,required:!0,validator:t=>{try{return new URL(t)}catch{return t.startsWith("#")||t.startsWith("/")}}},download:{type:String,default:null},target:{type:String,default:"_self",validator:t=>t&&(!t.startsWith("_")||["_blank","_self","_parent","_top"].indexOf(t)>-1)},title:{type:String,default:null}}},q=["role"],H=["download","href","aria-label","target","title","role"],O={key:0,class:"action-link__longtext-wrapper"},z={class:"action-link__name"},E=["textContent"],G=["textContent"],X={key:2,class:"action-link__text"};function D(t,s,a,u,k,n){return e(),i("li",{class:"action",role:n.isInSemanticMenu&&"presentation"},[o("a",{download:a.download,href:a.href,"aria-label":t.ariaLabel,target:a.target,title:a.title,class:"action-link focusable",rel:"nofollow noreferrer noopener",role:n.isInSemanticMenu&&"menuitem",onClick:s[0]||(s[0]=(...r)=>t.onClick&&t.onClick(...r))},[h(t.$slots,"icon",{},()=>[o("span",{"aria-hidden":"true",class:d(["action-link__icon",[t.isIconUrl?"action-link__icon--url":t.icon]]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null})},null,6)],!0),t.name?(e(),i("span",O,[o("strong",z,l(t.name),1),s[1]||(s[1]=o("br",null,null,-1)),o("span",{class:"action-link__longtext",textContent:l(t.text)},null,8,E)])):t.isLongText?(e(),i("span",{key:1,class:"action-link__longtext",textContent:l(t.text)},null,8,G)):(e(),i("span",X,l(t.text),1)),c("",!0)],8,H)],8,q)}const st=m(F,[["render",D],["__scopeId","data-v-32f01b7a"]]),J={name:"NcActionRouter",mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{to:{type:[String,Object],required:!0}}},K=["role"],P={key:0,class:"action-router__longtext-wrapper"},Q={class:"action-router__name"},Y=["textContent"],Z=["textContent"],tt={key:2,class:"action-router__text"};function et(t,s,a,u,k,n){const r=x("RouterLink");return e(),i("li",{class:"action",role:n.isInSemanticMenu&&"presentation"},[V(r,{"aria-label":t.ariaLabel,class:"action-router focusable",rel:"nofollow noreferrer noopener",role:n.isInSemanticMenu&&"menuitem",title:t.title,to:a.to,onClick:t.onClick},{default:w(()=>[h(t.$slots,"icon",{},()=>[o("span",{"aria-hidden":"true",class:d(["action-router__icon",[t.isIconUrl?"action-router__icon--url":t.icon]]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null})},null,6)],!0),t.name?(e(),i("span",P,[o("strong",Q,l(t.name),1),s[0]||(s[0]=o("br",null,null,-1)),o("span",{class:"action-router__longtext",textContent:l(t.text)},null,8,Y)])):t.isLongText?(e(),i("span",{key:1,class:"action-router__longtext",textContent:l(t.text)},null,8,Z)):(e(),i("span",tt,l(t.text),1)),c("",!0)]),_:3},8,["aria-label","role","title","to","onClick"])],8,K)}const rt=m(J,[["render",et],["__scopeId","data-v-87267750"]]);export{M as A,st as N,lt as a,_ as b,rt as c}; -//# sourceMappingURL=NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs.map +import{N as g,f as C,d as I}from"./NcNoteCard-CVhtNL04-CL6uGjhw.chunk.mjs";import{h as S,i as p}from"./index-JpgrUA2Z-D-NklW1G.chunk.mjs";import{a as m}from"./_plugin-vue_export-helper-B5bm_3R2.chunk.mjs";import{r as x,E as i,o as e,J as o,x as h,c as f,F as c,Z as b,G as d,f as l,z as v,b as V,w}from"./mdi-BjfN1ic1.chunk.mjs";const M={beforeUpdate(){this.text=this.getText()},data(){return{text:this.getText()}},computed:{isLongText(){return this.text&&this.text.trim().length>20}},methods:{getText(){return this.$slots.default?.()[0].children?.trim?.()||""}}},_={mixins:[M],props:{icon:{type:String,default:""},name:{type:String,default:""},title:{type:String,default:""},closeAfterClick:{type:Boolean,default:!1},ariaLabel:{type:String,default:null}},inject:{closeMenu:{from:S}},emits:["click"],created(){"ariaHidden"in this.$attrs},computed:{isIconUrl(){try{return!!new URL(this.icon,this.icon.startsWith("/")?window.location.origin:void 0)}catch{return!1}}},methods:{onClick(t){this.$emit("click",t),this.closeAfterClick&&this.closeMenu(!1)}}},L={name:"NcActionButton",components:{NcIconSvgWrapper:g},mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{disabled:{type:Boolean,default:!1},isMenu:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>["button","checkbox","radio","reset","submit"].includes(t)},modelValue:{type:[Boolean,String],default:null},value:{type:String,default:null},description:{type:String,default:""}},emits:["update:modelValue"],setup(){return{mdiCheck:I,mdiChevronRight:C}},computed:{isFocusable(){return!this.disabled},isChecked(){return this.type==="radio"&&typeof this.modelValue!="boolean"?this.modelValue===this.value:this.modelValue},nativeType(){return this.type==="submit"||this.type==="reset"?this.type:"button"},buttonAttributes(){const t={};return this.isInSemanticMenu?(t.role="menuitem",this.type==="radio"?(t.role="menuitemradio",t["aria-checked"]=this.isChecked?"true":"false"):(this.type==="checkbox"||this.nativeType==="button"&&this.modelValue!==null)&&(t.role="menuitemcheckbox",t["aria-checked"]=this.modelValue===null?"mixed":this.modelValue?"true":"false")):this.modelValue!==null&&this.nativeType==="button"&&(t["aria-pressed"]=this.modelValue?"true":"false"),t}},methods:{handleClick(t){this.onClick(t),(this.modelValue!==null||this.type!=="button")&&(this.type==="radio"?typeof this.modelValue!="boolean"?this.isChecked||this.$emit("update:modelValue",this.value):this.$emit("update:modelValue",!this.isChecked):this.$emit("update:modelValue",!this.isChecked))}}},$=["role"],T=["aria-label","disabled","title","type"],U={class:"action-button__longtext-wrapper"},A={key:0,class:"action-button__name"},N=["textContent"],R={key:2,class:"action-button__text"},W=["textContent"],j={key:2,class:"action-button__pressed-icon material-design-icon"};function B(t,s,a,u,k,n){const r=x("NcIconSvgWrapper");return e(),i("li",{class:d(["action",{"action--disabled":a.disabled}]),role:n.isInSemanticMenu&&"presentation"},[o("button",v({"aria-label":t.ariaLabel,class:["action-button button-vue",{"action-button--active":n.isChecked,focusable:n.isFocusable}],disabled:a.disabled,title:t.title,type:n.nativeType},n.buttonAttributes,{onClick:s[0]||(s[0]=(...y)=>n.handleClick&&n.handleClick(...y))}),[h(t.$slots,"icon",{},()=>[o("span",{class:d([[t.isIconUrl?"action-button__icon--url":t.icon],"action-button__icon"]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null}),"aria-hidden":"true"},null,6)],!0),o("span",U,[t.name?(e(),i("strong",A,l(t.name),1)):c("",!0),t.isLongText?(e(),i("span",{key:1,class:"action-button__longtext",textContent:l(t.text)},null,8,N)):(e(),i("span",R,l(t.text),1)),a.description?(e(),i("span",{key:3,class:"action-button__description",textContent:l(a.description)},null,8,W)):c("",!0)]),a.isMenu?(e(),f(r,{key:0,class:"action-button__menu-icon",directional:"",path:u.mdiChevronRight},null,8,["path"])):n.isChecked?(e(),f(r,{key:1,path:u.mdiCheck,class:"action-button__pressed-icon"},null,8,["path"])):n.isChecked===!1?(e(),i("span",j)):c("",!0),c("",!0)],16,T)],10,$)}const lt=m(L,[["render",B],["__scopeId","data-v-6c2daf4e"]]),F={name:"NcActionLink",mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{href:{type:String,required:!0,validator:t=>{try{return new URL(t)}catch{return t.startsWith("#")||t.startsWith("/")}}},download:{type:String,default:null},target:{type:String,default:"_self",validator:t=>t&&(!t.startsWith("_")||["_blank","_self","_parent","_top"].indexOf(t)>-1)},title:{type:String,default:null}}},q=["role"],O=["download","href","aria-label","target","title","role"],z={key:0,class:"action-link__longtext-wrapper"},E={class:"action-link__name"},G=["textContent"],H=["textContent"],J={key:2,class:"action-link__text"};function Z(t,s,a,u,k,n){return e(),i("li",{class:"action",role:n.isInSemanticMenu&&"presentation"},[o("a",{download:a.download,href:a.href,"aria-label":t.ariaLabel,target:a.target,title:a.title,class:"action-link focusable",rel:"nofollow noreferrer noopener",role:n.isInSemanticMenu&&"menuitem",onClick:s[0]||(s[0]=(...r)=>t.onClick&&t.onClick(...r))},[h(t.$slots,"icon",{},()=>[o("span",{"aria-hidden":"true",class:d(["action-link__icon",[t.isIconUrl?"action-link__icon--url":t.icon]]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null})},null,6)],!0),t.name?(e(),i("span",z,[o("strong",E,l(t.name),1),s[1]||(s[1]=o("br",null,null,-1)),o("span",{class:"action-link__longtext",textContent:l(t.text)},null,8,G)])):t.isLongText?(e(),i("span",{key:1,class:"action-link__longtext",textContent:l(t.text)},null,8,H)):(e(),i("span",J,l(t.text),1)),c("",!0)],8,O)],8,q)}const st=m(F,[["render",Z],["__scopeId","data-v-32f01b7a"]]),D={name:"NcActionRouter",mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{to:{type:[String,Object],required:!0}}},K=["role"],P={key:0,class:"action-router__longtext-wrapper"},Q={class:"action-router__name"},X=["textContent"],Y=["textContent"],tt={key:2,class:"action-router__text"};function et(t,s,a,u,k,n){const r=x("RouterLink");return e(),i("li",{class:"action",role:n.isInSemanticMenu&&"presentation"},[V(r,{"aria-label":t.ariaLabel,class:"action-router focusable",rel:"nofollow noreferrer noopener",role:n.isInSemanticMenu&&"menuitem",title:t.title,to:a.to,onClick:t.onClick},{default:w(()=>[h(t.$slots,"icon",{},()=>[o("span",{"aria-hidden":"true",class:d(["action-router__icon",[t.isIconUrl?"action-router__icon--url":t.icon]]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null})},null,6)],!0),t.name?(e(),i("span",P,[o("strong",Q,l(t.name),1),s[0]||(s[0]=o("br",null,null,-1)),o("span",{class:"action-router__longtext",textContent:l(t.text)},null,8,X)])):t.isLongText?(e(),i("span",{key:1,class:"action-router__longtext",textContent:l(t.text)},null,8,Y)):(e(),i("span",tt,l(t.text),1)),c("",!0)]),_:3},8,["aria-label","role","title","to","onClick"])],8,K)}const rt=m(D,[["render",et],["__scopeId","data-v-87267750"]]);export{M as A,st as N,lt as a,_ as b,rt as c}; +//# sourceMappingURL=NcActionRouter-oT-YU_jf-3XNLVsNJ.chunk.mjs.map diff --git a/dist/NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs.license b/dist/NcActionRouter-oT-YU_jf-3XNLVsNJ.chunk.mjs.license similarity index 100% rename from dist/NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs.license rename to dist/NcActionRouter-oT-YU_jf-3XNLVsNJ.chunk.mjs.license diff --git a/dist/NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs.map b/dist/NcActionRouter-oT-YU_jf-3XNLVsNJ.chunk.mjs.map similarity index 99% rename from dist/NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs.map rename to dist/NcActionRouter-oT-YU_jf-3XNLVsNJ.chunk.mjs.map index 6b08e170d6c04..cc6151985ad1f 100644 --- a/dist/NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs.map +++ b/dist/NcActionRouter-oT-YU_jf-3XNLVsNJ.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcActionRouter-oT-YU_jf-MmX7C-nb.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/actionGlobal-BZFdtdJL.mjs","../node_modules/@nextcloud/vue/dist/chunks/actionText-DYzDdbVe.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionButton-pKOSrlGE.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionLink-vEvKSV4N.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionRouter-oT-YU_jf.mjs"],"sourcesContent":["const ActionGlobalMixin = {\n beforeUpdate() {\n this.text = this.getText();\n },\n data() {\n return {\n // $slots are not reactive.\n // We need to update the content manually\n text: this.getText()\n };\n },\n computed: {\n isLongText() {\n return this.text && this.text.trim().length > 20;\n }\n },\n methods: {\n getText() {\n return this.$slots.default?.()[0].children?.trim?.() || \"\";\n }\n }\n};\nexport {\n ActionGlobalMixin as A\n};\n//# sourceMappingURL=actionGlobal-BZFdtdJL.mjs.map\n","import { warn } from \"vue\";\nimport { N as NC_ACTIONS_CLOSE_MENU } from \"./useNcActions-CiGWxAJE.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nconst ActionTextMixin = {\n mixins: [ActionGlobalMixin],\n props: {\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Whether we close the Actions menu after the click\n */\n closeAfterClick: {\n type: Boolean,\n default: false\n },\n /**\n * Aria label for the button. Not needed if the button has text.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n inject: {\n closeMenu: {\n from: NC_ACTIONS_CLOSE_MENU\n }\n },\n emits: [\n \"click\"\n ],\n created() {\n if (\"ariaHidden\" in this.$attrs) {\n warn(\"[NcAction*]: Do not set the ariaHidden attribute as the root element will inherit the incorrect aria-hidden.\");\n }\n },\n computed: {\n /**\n * Check if icon prop is an URL\n *\n * @return {boolean} Whether the icon prop is an URL\n */\n isIconUrl() {\n try {\n return !!new URL(this.icon, this.icon.startsWith(\"/\") ? window.location.origin : void 0);\n } catch {\n return false;\n }\n }\n },\n methods: {\n onClick(event) {\n this.$emit(\"click\", event);\n if (this.closeAfterClick) {\n this.closeMenu(false);\n }\n }\n }\n};\nexport {\n ActionTextMixin as A\n};\n//# sourceMappingURL=actionText-DYzDdbVe.mjs.map\n","import '../assets/NcActionButton-Bb0ihLdt.css';\nimport { c as mdiChevronRight, d as mdiCheck } from \"./mdi-XFJRiRqJ.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BvLanNaW.mjs\";\nimport { A as ActionTextMixin } from \"./actionText-DYzDdbVe.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-CiGWxAJE.mjs\";\nimport { resolveComponent, createElementBlock, openBlock, normalizeClass, createElementVNode, mergeProps, renderSlot, createBlock, createCommentVNode, normalizeStyle, toDisplayString } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionButton\",\n components: {\n NcIconSvgWrapper\n },\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * disabled state of the action button\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * If this is a menu, a chevron icon will\n * be added at the end of the line\n */\n isMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The button's behavior, by default the button acts like a normal button with optional toggle button behavior if `modelValue` is `true` or `false`.\n * But you can also set to checkbox button behavior with tri-state or radio button like behavior.\n * This extends the native HTML button type attribute.\n */\n type: {\n type: String,\n default: \"button\",\n validator: (behavior) => [\"button\", \"checkbox\", \"radio\", \"reset\", \"submit\"].includes(behavior)\n },\n /**\n * The buttons state if `type` is 'checkbox' or 'radio' (meaning if it is pressed / selected).\n * For checkbox and toggle button behavior - boolean value.\n * For radio button behavior - could be a boolean checked or a string with the value of the button.\n * Note: Unlike native radio buttons, NcActionButton are not grouped by name, so you need to connect them by bind correct modelValue.\n *\n * **This is not availabe for `type='submit'` or `type='reset'`**\n *\n * If using `type='checkbox'` a `model-value` of `true` means checked, `false` means unchecked and `null` means indeterminate (tri-state)\n * For `type='radio'` `null` is equal to `false`\n */\n modelValue: {\n type: [Boolean, String],\n default: null\n },\n /**\n * The value used for the `modelValue` when this component is used with radio behavior\n * Similar to the `value` attribute of ``\n */\n value: {\n type: String,\n default: null\n },\n /**\n * Small underlying text content of the entry\n */\n description: {\n type: String,\n default: \"\"\n }\n },\n emits: [\"update:modelValue\"],\n setup() {\n return {\n mdiCheck,\n mdiChevronRight\n };\n },\n computed: {\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n },\n /**\n * The current \"checked\" or \"pressed\" state for the model behavior\n */\n isChecked() {\n if (this.type === \"radio\" && typeof this.modelValue !== \"boolean\") {\n return this.modelValue === this.value;\n }\n return this.modelValue;\n },\n /**\n * The native HTML type to set on the button\n */\n nativeType() {\n if (this.type === \"submit\" || this.type === \"reset\") {\n return this.type;\n }\n return \"button\";\n },\n /**\n * HTML attributes to bind to the